{
  "version": 3,
  "sources": ["/cdn/shop/t/54/assets/mo-mx-finder.js?mxb=20261014g"],
  "sourcesContent": ["/*! mo-mx-finder.js: the all-mattresses finder for /collections/mattresses (Mattress Overstock, 2026-10-14).\n *  Forked from the homepage test build's \"Find your feel\" finder (2026-10-05) and extended:\n *  a feel scale drawn as a mattress surface the two handles press into, a price histogram with two\n *  handles, and Compare (up to three beds side by side). Plain IIFE, no dependencies.\n *    window.MOMXFinder.mount(rootEl, { beds, storeKey, storeLabel, initial: { size: 'Queen' } })\n *  Optional: url (false keeps the address bar alone), bare (true drops the module's own padding and\n *  gutters), linkBase (prefix for product urls), quizUrl (fallback link for the quiz button).\n *  House rules followed here (see DESIGN.md): scroll math instead of an intersection observer, no\n *  dynamic imports, no per-frame DOM writes (every write is guarded), motion is transform and opacity\n *  only and is skipped under prefers-reduced-motion. The pure filter logic is exposed as\n *  MOMXFinder.core for qa/logic.mjs. */\n(function () {\n  'use strict';\n\n  var win = typeof window !== 'undefined' ? window : globalThis;\n  var doc = win.document;\n\n  /* ------------------------------------------------------------------ constants */\n\n  var SIZES = ['Twin', 'Twin XL', 'Full', 'Queen', 'King', 'Cal King'];\n  var STORE_LABELS = {\n    'nicholasville-road': 'Lexington',\n    richmond: 'Richmond',\n    georgetown: 'Georgetown',\n    london: 'London',\n    somerset: 'Somerset'\n  };\n  // House brand order for the chips and for taking turns in the default sort.\n  var BRAND_ORDER = ['tempur-pedic', 'stearns-foster', 'purple', 'beautyrest', 'sealy', 'serta', 'casper',\n    'jamison', 'molecule', 'nectar', 'dreamcloud'];\n  var BUILDS = [\n    { key: 'all', label: 'All' },\n    { key: 'foam', label: 'All foam' },\n    { key: 'hybrid', label: 'Hybrid' },\n    { key: 'innerspring', label: 'Innerspring' }\n  ];\n  var PRESETS = [\n    { label: 'Plush', lo: 1, hi: 3 },\n    { label: 'Medium', lo: 4, hi: 6 },\n    { label: 'Firm', lo: 7, hi: 10 }\n  ];\n  var SORTS = [\n    { key: 'floor', label: 'Floor models first' },\n    { key: 'price', label: 'Price: low to high' },\n    { key: 'firm', label: 'Firmest first' },\n    { key: 'rated', label: 'Top rated' }\n  ];\n  var QKEYS = ['size', 'feel', 'build', 'brand', 'min', 'max', 'floor', 'sort', 'bf'];\n  // Black Friday 2026: offered only while some bed on the page carries event prices (opts.bf).\n  var SORT_SAVINGS = { key: 'savings', label: 'Most savings' };\n  var FEEL_MIN = 1, FEEL_MAX = 10, PAGE = 24, COMPARE_MAX = 3, BINS = 26;\n  var ETA_BRANDS = { casper: 1, purple: 1, sealy: 1, serta: 1 };\n  var RATING_PRIOR = 50;      // reviews of \"average\" mixed into each rating before ranking\n  var BUDGET_GAMMA = 2.2;     // budget track is curved so the crowded low end gets most of the travel\n  var DOT_RATIO = 0.78;       // dot diameter as a share of the swarm pitch\n  var ROW_RATIO = 0.866;      // hex packing: row height as a share of the pitch\n  var QUIZ_FALLBACK = '/pages/mattress-overstock-store-locations-in-kentucky-lexington-somerset-georgetown';\n  var EASE = 'cubic-bezier(.22,1,.36,1)';\n\n  /* ------------------------------------------------------------------ pure helpers */\n\n  function slug(s) {\n    return String(s == null ? '' : s).toLowerCase().replace(/&/g, ' ').replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');\n  }\n\n  function money(n) {\n    var cents = Math.round(n * 100) % 100 !== 0;\n    return '$' + Number(n).toLocaleString('en-US', {\n      minimumFractionDigits: cents ? 2 : 0,\n      maximumFractionDigits: cents ? 2 : 0\n    });\n  }\n\n  function num(n) { return Number(n).toLocaleString('en-US'); }\n\n  function plural(n, one, many) { return n === 1 ? one : many; }\n\n  // \"Stearns & Foster Estate\u00AE 14\" Medium Mattress\" -> \"Estate Medium\". Height lives in the specs line.\n  function shortName(title, brand) {\n    var full = String(title == null ? '' : title).replace(/[\u00AE\u2122\u00A9]/g, ' ').replace(/\\s+/g, ' ').trim();\n    var s = full;\n    var b = String(brand || '').trim();\n    if (b) {\n      var alts = [b, b.replace(/&/g, 'and'), b.replace(/\\band\\b/gi, '&')];\n      for (var i = 0; i < alts.length; i++) {\n        if (s.toLowerCase().indexOf(alts[i].toLowerCase()) === 0) { s = s.slice(alts[i].length); break; }\n      }\n    }\n    s = s.replace(/(^|[\\s(])\\d+(?:\\.\\d+)?\\s*(?:[\"\u201C\u201D\u2033]|''|-?inch(?:es)?\\b|in\\.)/gi, '$1')\n      .replace(/\\bmattress(?:es)?\\b/gi, ' ')\n      .replace(/\\s+/g, ' ')\n      .replace(/^[\\s,\\-:|]+|[\\s,\\-:|]+$/g, '');\n    return s || full;\n  }\n\n  function normalize(beds) {\n    var out = [], sum = 0, n = 0;\n    (beds || []).forEach(function (b, i) {\n      b = b || {};\n      var firm = typeof b.firm === 'number' && isFinite(b.firm) ? Math.min(FEEL_MAX, Math.max(FEEL_MIN, b.firm)) : null;\n      var rated = typeof b.rating === 'number' && b.rating > 0 && typeof b.reviews === 'number' && b.reviews > 0;\n      if (rated) { sum += b.rating; n++; }\n      var brand = String(b.brand || '');\n      var s = slug(brand);\n      var rank = BRAND_ORDER.indexOf(s);\n      out.push({\n        i: i,\n        id: String(b.id != null ? b.id : (b.handle || i)),\n        title: String(b.title || ''),\n        brand: brand,\n        slug: s,\n        brandRank: rank === -1 ? BRAND_ORDER.length : rank,\n        name: shortName(b.title, brand),\n        url: String(b.url || ''),\n        img: b.img ? String(b.img) : '',\n        firm: firm,\n        // Half points count toward the nearest whole step, halves up: a 6.5 files under Firm (7-10).\n        slot: firm == null ? null : Math.round(firm),\n        est: !!b.firmEst,\n        height: typeof b.height === 'number' && isFinite(b.height) ? b.height : null,\n        build: String(b.build || ''),\n        online: !!b.online,\n        floor: Array.isArray(b.floor) ? b.floor.slice() : [],\n        rating: rated ? b.rating : null,\n        reviews: rated ? b.reviews : null,\n        prices: b.prices || {},\n        eta: Array.isArray(b.eta) ? b.eta.slice() : [],\n        cut: b.cut ? String(b.cut) : '',\n        bf: !!b.bf,\n        score: null\n      });\n    });\n    var mean = n ? sum / n : 0;\n    out.forEach(function (it) {\n      if (it.rating != null) it.score = (it.reviews * it.rating + RATING_PRIOR * mean) / (it.reviews + RATING_PRIOR);\n    });\n    return out;\n  }\n\n  function brandList(items) {\n    var seen = {}, list = [];\n    items.forEach(function (it) {\n      var b = seen[it.slug];\n      if (!b) { b = seen[it.slug] = { slug: it.slug, label: it.brand, rank: it.brandRank, count: 0, online: 0 }; list.push(b); }\n      b.count++;\n      if (it.online) b.online++;\n    });\n    list.forEach(function (b) { b.onlineOnly = b.online === b.count; });\n    list.sort(function (a, b) { return a.rank - b.rank || (a.label < b.label ? -1 : 1); });\n    return list;\n  }\n\n  function priceOf(it, size) {\n    var p = it.prices[size];\n    return p && typeof p.p === 'number' ? p : null;\n  }\n\n  // Online-only beds never read as floor models, whatever the floor array says.\n  function onFloor(it, storeKey) {\n    if (it.online) return false;\n    return storeKey ? it.floor.indexOf(storeKey) !== -1 : it.floor.length > 0;\n  }\n\n  function fullFeel(f) { return f[0] <= FEEL_MIN && f[1] >= FEEL_MAX; }\n\n  function baseState() {\n    return { size: 'Queen', feel: [FEEL_MIN, FEEL_MAX], build: 'all', brands: [], min: null, max: null, floor: false, sort: 'floor', bf: false };\n  }\n\n  // Copies only well-formed values from `patch` onto `into`. `brandSlugs` limits brand to what the data has.\n  function applyPatch(into, patch, brandSlugs) {\n    if (!patch) return into;\n    if (typeof patch.size === 'string') {\n      var want = patch.size.toLowerCase().replace(/[^a-z]/g, '');\n      SIZES.forEach(function (sz) { if (sz.toLowerCase().replace(/[^a-z]/g, '') === want) into.size = sz; });\n    }\n    if (Array.isArray(patch.feel) && patch.feel.length === 2) {\n      var lo = Math.round(+patch.feel[0]), hi = Math.round(+patch.feel[1]);\n      if (isFinite(lo) && isFinite(hi)) {\n        if (lo > hi) { var t = lo; lo = hi; hi = t; }\n        into.feel = [Math.min(FEEL_MAX, Math.max(FEEL_MIN, lo)), Math.min(FEEL_MAX, Math.max(FEEL_MIN, hi))];\n      }\n    }\n    if (typeof patch.build === 'string') {\n      var bk = patch.build.toLowerCase().trim();\n      BUILDS.forEach(function (b) { if (b.key === bk) into.build = bk; });\n    }\n    var bl = patch.brands != null ? patch.brands : patch.brand;\n    if (typeof bl === 'string') bl = bl.split(',');\n    if (Array.isArray(bl)) {\n      var picked = [];\n      bl.map(slug).forEach(function (s) {\n        if (s && picked.indexOf(s) === -1 && (!brandSlugs || brandSlugs.indexOf(s) !== -1)) picked.push(s);\n      });\n      if (brandSlugs) picked.sort(function (a, b) { return brandSlugs.indexOf(a) - brandSlugs.indexOf(b); });\n      into.brands = picked;\n    }\n    if (patch.max === null) into.max = null;\n    else if (patch.max != null) {\n      var mx = parseFloat(patch.max);\n      if (isFinite(mx) && mx > 0) into.max = Math.ceil(mx / 100) * 100;\n    }\n    if (patch.min === null) into.min = null;\n    else if (patch.min != null) {\n      var mn = parseFloat(patch.min);\n      if (isFinite(mn) && mn > 0) into.min = Math.floor(mn / 100) * 100;\n    }\n    if (into.min != null && into.max != null && into.min > into.max) { var sw = into.min; into.min = into.max; into.max = sw; }\n    if (patch.floor != null) into.floor = patch.floor === true || /^(1|true|yes|on)$/i.test(String(patch.floor));\n    if (patch.bf != null) into.bf = patch.bf === true || /^(1|true|yes|on)$/i.test(String(patch.bf));\n    if (typeof patch.sort === 'string') {\n      SORTS.forEach(function (s) { if (s.key === patch.sort.toLowerCase()) into.sort = s.key; });\n    }\n    return into;\n  }\n\n  function passes(it, s, ctx, skip) {\n    if (skip !== 'feel' && !fullFeel(s.feel)) {\n      if (it.slot == null || it.slot < s.feel[0] || it.slot > s.feel[1]) return false;\n    }\n    if (skip !== 'build' && s.build !== 'all' && it.build !== s.build) return false;\n    if (skip !== 'brand' && s.brands.length && s.brands.indexOf(it.slug) === -1) return false;\n    if (skip !== 'max' && (s.max != null || s.min != null)) {\n      var p = priceOf(it, s.size);\n      if (!p || (s.max != null && p.p > s.max) || (s.min != null && p.p < s.min)) return false;\n    }\n    if (skip !== 'floor' && s.floor && !onFloor(it, ctx.storeKey)) return false;\n    if (skip !== 'bf' && s.bf && !it.bf) return false;\n    return true;\n  }\n\n  function select(items, s, ctx, skip) {\n    return items.filter(function (it) { return passes(it, s, ctx, skip); });\n  }\n\n  function byName(a, b) {\n    return a.brandRank - b.brandRank || (a.name < b.name ? -1 : a.name > b.name ? 1 : 0) || a.i - b.i;\n  }\n\n  // Default order: floor models first, and inside each group the brands take turns so one screen\n  // is never a wall of one brand. Within a brand: for sale in this size, then most reviewed.\n  function takeTurns(list, s, ctx) {\n    var groups = [[], []];\n    list.forEach(function (it) { groups[onFloor(it, ctx.storeKey) ? 0 : 1].push(it); });\n    var out = [];\n    groups.forEach(function (g) {\n      var lanes = {}, order = [];\n      g.forEach(function (it) {\n        if (!lanes[it.slug]) { lanes[it.slug] = []; order.push(it); }\n        lanes[it.slug].push(it);\n      });\n      order.sort(function (a, b) { return a.brandRank - b.brandRank || a.i - b.i; });\n      var deepest = 0;\n      order.forEach(function (lead) {\n        var lane = lanes[lead.slug];\n        lane.sort(function (a, b) {\n          var pa = priceOf(a, s.size), pb = priceOf(b, s.size);\n          var sa = pa && pa.a !== false ? 0 : 1, sb = pb && pb.a !== false ? 0 : 1;\n          return sa - sb || (b.reviews || 0) - (a.reviews || 0) || (b.score || 0) - (a.score || 0) ||\n            (pa ? pa.p : Infinity) - (pb ? pb.p : Infinity) || a.i - b.i;\n        });\n        if (lane.length > deepest) deepest = lane.length;\n      });\n      for (var r = 0; r < deepest; r++) {\n        for (var k = 0; k < order.length; k++) {\n          var bed = lanes[order[k].slug][r];\n          if (bed) out.push(bed);\n        }\n      }\n    });\n    return out;\n  }\n\n  // A mattress not made in the chosen size always sorts last, whatever the sort.\n  function order(list, s, ctx) {\n    var made = [], rest = [];\n    list.forEach(function (it) { (priceOf(it, s.size) ? made : rest).push(it); });\n    function sorted(arr) {\n      if (s.sort === 'savings') {\n        // the shown size's own compare-at minus its price; beds with nothing struck follow, by price\n        return arr.slice().sort(function (a, b) {\n          var pa = priceOf(a, s.size), pb = priceOf(b, s.size);\n          var va = pa && typeof pa.c === 'number' && pa.c > pa.p ? pa.c - pa.p : 0;\n          var vb = pb && typeof pb.c === 'number' && pb.c > pb.p ? pb.c - pb.p : 0;\n          return vb - va || (pa ? pa.p : Infinity) - (pb ? pb.p : Infinity) || byName(a, b);\n        });\n      }\n      if (s.sort === 'price') {\n        return arr.slice().sort(function (a, b) {\n          var pa = priceOf(a, s.size), pb = priceOf(b, s.size);\n          return (pa ? pa.p : Infinity) - (pb ? pb.p : Infinity) || byName(a, b);\n        });\n      }\n      if (s.sort === 'firm') {\n        return arr.slice().sort(function (a, b) {\n          var pa = priceOf(a, s.size), pb = priceOf(b, s.size);\n          return (b.firm == null ? -1 : b.firm) - (a.firm == null ? -1 : a.firm) ||\n            (pa ? pa.p : Infinity) - (pb ? pb.p : Infinity) || byName(a, b);\n        });\n      }\n      if (s.sort === 'rated') {\n        return arr.slice().sort(function (a, b) {\n          return (b.score == null ? -1 : b.score) - (a.score == null ? -1 : a.score) ||\n            (b.reviews || 0) - (a.reviews || 0) || byName(a, b);\n        });\n      }\n      return takeTurns(arr, s, ctx);\n    }\n    return sorted(made).concat(sorted(rest));\n  }\n\n  var RELAX = [\n    { key: 'max', label: 'the price range', on: function (s) { return s.max != null || s.min != null; }, clear: function (s) { s.max = null; s.min = null; } },\n    { key: 'floor', label: 'the floor filter', on: function (s) { return s.floor; }, clear: function (s) { s.floor = false; } },\n    { key: 'feel', label: 'the feel range', on: function (s) { return !fullFeel(s.feel); }, clear: function (s) { s.feel = [FEEL_MIN, FEEL_MAX]; } },\n    { key: 'build', label: 'the build filter', on: function (s) { return s.build !== 'all'; }, clear: function (s) { s.build = 'all'; } },\n    { key: 'brand', label: 'the brand filter', on: function (s) { return s.brands.length > 0; }, clear: function (s) { s.brands = []; } },\n    { key: 'bf', label: 'the Black Friday filter', on: function (s) { return !!s.bf; }, clear: function (s) { s.bf = false; } }\n  ];\n\n  // The single active filter that, removed, brings back the most mattresses.\n  function relax(items, s, ctx) {\n    var best = null;\n    RELAX.forEach(function (r) {\n      if (!r.on(s)) return;\n      var count = select(items, s, ctx, r.key).length;\n      if (count > 0 && (!best || count > best.count)) best = { key: r.key, label: r.label, count: count };\n    });\n    return best;\n  }\n\n  function anyFilter(s) {\n    for (var i = 0; i < RELAX.length; i++) if (RELAX[i].on(s)) return true;\n    return false;\n  }\n\n  function readQuery(search) {\n    var params = {};\n    String(search || '').replace(/^\\?/, '').split('&').forEach(function (pair) {\n      if (!pair) return;\n      var ix = pair.indexOf('=');\n      var k = ix < 0 ? pair : pair.slice(0, ix), v = ix < 0 ? '' : pair.slice(ix + 1);\n      try {\n        k = decodeURIComponent(k.replace(/\\+/g, ' '));\n        v = decodeURIComponent(v.replace(/\\+/g, ' '));\n      } catch (e) { return; }\n      if (QKEYS.indexOf(k) !== -1 && !(k in params)) params[k] = v;\n    });\n    var out = {};\n    if (params.size != null) out.size = params.size;\n    if (params.feel != null) {\n      var m = /^\\s*(\\d{1,2})(?:\\s*-\\s*(\\d{1,2}))?\\s*$/.exec(params.feel);\n      if (m) out.feel = [+m[1], m[2] == null ? +m[1] : +m[2]];\n    }\n    if (params.build != null) out.build = params.build;\n    if (params.brand != null) out.brands = params.brand.split(',');\n    if (params.max != null) out.max = params.max;\n    if (params.min != null) out.min = params.min;\n    if (params.floor != null) out.floor = params.floor;\n    if (params.sort != null) out.sort = params.sort;\n    if (params.bf != null) out.bf = params.bf;\n    return out;\n  }\n\n  // Rewrites only this module's keys and leaves every other parameter exactly as it was.\n  function writeQuery(search, s, d) {\n    var keep = String(search || '').replace(/^\\?/, '').split('&').filter(function (pair) {\n      if (!pair) return false;\n      var k = pair.split('=')[0];\n      try { k = decodeURIComponent(k.replace(/\\+/g, ' ')); } catch (e) { /* keep the raw key */ }\n      return QKEYS.indexOf(k) === -1;\n    });\n    var mine = [];\n    if (s.size !== d.size) mine.push('size=' + encodeURIComponent(s.size).replace(/%20/g, '+'));\n    if (!fullFeel(s.feel)) mine.push('feel=' + s.feel[0] + '-' + s.feel[1]);\n    if (s.build !== 'all') mine.push('build=' + s.build);\n    if (s.brands.length) mine.push('brand=' + s.brands.map(encodeURIComponent).join(','));\n    if (s.min != null) mine.push('min=' + s.min);\n    if (s.max != null) mine.push('max=' + s.max);\n    if (s.floor) mine.push('floor=1');\n    if (s.sort !== 'floor') mine.push('sort=' + s.sort);\n    if (s.bf) mine.push('bf=1');\n    var q = keep.concat(mine).join('&');\n    return q ? '?' + q : '';\n  }\n\n  function budgetDomain(items, size) {\n    var lo = Infinity, hi = 0;\n    items.forEach(function (it) {\n      var p = priceOf(it, size);\n      if (p) { if (p.p < lo) lo = p.p; if (p.p > hi) hi = p.p; }\n    });\n    if (!hi) return null;\n    lo = Math.floor(lo);\n    hi = Math.ceil(hi / 100) * 100;\n    if (hi <= lo) hi = lo + 100;\n    return { lo: lo, hi: hi };\n  }\n\n  function budgetToT(v, dom) {\n    return Math.pow(Math.min(1, Math.max(0, (v - dom.lo) / (dom.hi - dom.lo))), 1 / BUDGET_GAMMA);\n  }\n\n  function budgetFromT(t, dom) {\n    var v = dom.lo + (dom.hi - dom.lo) * Math.pow(Math.min(1, Math.max(0, t)), BUDGET_GAMMA);\n    return Math.min(dom.hi, Math.max(dom.lo, Math.round(v / 100) * 100));\n  }\n\n  // The top stop of the price track means \"no top\" and is stored as null.\n  function fitBudget(max, dom) {\n    if (max == null || !dom) return null;\n    var v = Math.ceil(max / 100) * 100;\n    if (v >= dom.hi) return null;\n    return v < dom.lo ? dom.lo : v;\n  }\n\n  // The bottom stop means \"no bottom\" and is stored as null.\n  function fitMin(min, dom) {\n    if (min == null || !dom) return null;\n    var v = Math.floor(min / 100) * 100;\n    if (v <= dom.lo) return null;\n    return v > dom.hi ? dom.hi : v;\n  }\n\n  // Bars for the price histogram: how many beds (passing every other filter) cost what, in this size.\n  // Bins are equal steps of the curved track, so each bar sits right above the prices it counts.\n  function histogram(list, size, dom, bins) {\n    var out = [];\n    for (var i = 0; i < bins; i++) out.push(0);\n    if (!dom) return out;\n    list.forEach(function (it) {\n      var p = priceOf(it, size);\n      if (!p) return;\n      var t = budgetToT(p.p, dom), k = Math.min(bins - 1, Math.floor(t * bins));\n      out[k]++;\n    });\n    return out;\n  }\n\n  /* --- swarm: every mattress is a dot at its firmness, packed into a small honeycomb mound --- */\n\n  // half: how far a mound may reach either side of its tick, in firmness steps\n  function swarmCols(unit, pitch, half) {\n    var reach = (half * unit - pitch * DOT_RATIO / 2) / pitch;\n    if (reach < 0) reach = 0;\n    return { reach: reach, even: 2 * Math.floor(reach) + 1, odd: 2 * Math.floor(reach + 0.5) };\n  }\n\n  function swarmRows(n, cols) {\n    var r = 0;\n    while (n > 0 && r < 2000) { n -= r % 2 ? cols.odd : cols.even; r++; }\n    return r;\n  }\n\n  // Largest pitch whose tallest mound still fits the stage.\n  function swarmPitch(unit, tallest, maxH, pMin, pMax, half) {\n    for (var p = pMax; p >= pMin; p -= 0.25) {\n      var rows = swarmRows(tallest, swarmCols(unit, p, half));\n      if ((rows - 1) * p * ROW_RATIO + p * DOT_RATIO <= maxH) return p;\n    }\n    return pMin;\n  }\n\n  // entries: [{ id, firm }] already in stacking order (first = bottom centre). Returns id -> { t, dx, row }.\n  function swarmPack(entries, unit, pitch, half) {\n    var groups = {}, keys = [], pos = {}, placed = [], rows = 0, tops = {};\n    entries.forEach(function (e) {\n      if (e.firm == null) return;\n      var k = String(e.firm);\n      if (!groups[k]) { groups[k] = []; keys.push(k); }\n      groups[k].push(e);\n    });\n    // Big mounds claim their cells first, the few half-step beds then settle between them.\n    keys.sort(function (a, b) { return groups[b].length - groups[a].length || a - b; });\n    var cols = swarmCols(unit, pitch, half), rowH = pitch * ROW_RATIO, near = pitch * pitch * 0.94;\n    function free(x, y) {\n      for (var i = placed.length - 1; i >= 0; i--) {\n        var dx = placed[i].x - x, dy = placed[i].y - y;\n        if (dx * dx + dy * dy < near) return false;\n      }\n      return true;\n    }\n    keys.forEach(function (k) {\n      var firm = +k, cx = (firm - FEEL_MIN) * unit, start = 0;\n      groups[k].forEach(function (e) {\n        for (var r = start; r < 4000; r++) {\n          var odd = r % 2 === 1, y = r * rowH, hit = null;\n          for (var c = 0; hit == null; c++) {\n            var off = odd ? c + 0.5 : c;\n            if (off > cols.reach + 1e-6) break;\n            // alternate the side that fills first so a part row stays close to centred\n            var sides = off === 0 ? [0] : ((r >> 1) % 2 ? [off, -off] : [-off, off]);\n            for (var q = 0; q < sides.length; q++) {\n              if (free(cx + sides[q] * pitch, y)) { hit = sides[q]; break; }\n            }\n          }\n          if (hit != null) {\n            placed.push({ x: cx + hit * pitch, y: y });\n            pos[e.id] = { t: (firm - FEEL_MIN) / (FEEL_MAX - FEEL_MIN), dx: hit * pitch, row: r, firm: k };\n            if (r + 1 > rows) rows = r + 1;\n            if (!(tops[k] >= r)) tops[k] = r;\n            break;\n          }\n          if (r === start) start = r + 1;\n        }\n      });\n    });\n    return { pos: pos, rows: rows, tops: tops, rowH: rowH, dot: pitch * DOT_RATIO, pitch: pitch };\n  }\n\n  /* ------------------------------------------------------------------ DOM helpers */\n\n  function el(tag, attrs, kids) {\n    var node = doc.createElement(tag), k;\n    if (attrs) {\n      for (k in attrs) {\n        var v = attrs[k];\n        if (v == null || v === false) continue;\n        if (k === 'class') node.className = v;\n        else if (k === 'text') node.textContent = v;\n        else node.setAttribute(k, v === true ? '' : v);\n      }\n    }\n    if (kids) {\n      for (var i = 0; i < kids.length; i++) {\n        var c = kids[i];\n        if (c == null || c === false) continue;\n        node.appendChild(typeof c === 'string' ? doc.createTextNode(c) : c);\n      }\n    }\n    return node;\n  }\n\n  function icon(d) {\n    var ns = 'http://www.w3.org/2000/svg';\n    var s = doc.createElementNS(ns, 'svg');\n    s.setAttribute('viewBox', '0 0 24 24');\n    s.setAttribute('aria-hidden', 'true');\n    s.setAttribute('focusable', 'false');\n    s.setAttribute('class', 'mxf-icon');\n    var p = doc.createElementNS(ns, 'path');\n    p.setAttribute('d', d);\n    s.appendChild(p);\n    return s;\n  }\n\n  var ICON_ARROW = 'M5 12h14M13 6l6 6-6 6';\n  var ICON_CLOSE = 'M6 6l12 12M18 6L6 18';\n  var ICON_FILTERS = 'M4 7h9M17 7h3M4 17h3M11 17h9M15 5v4M9 15v4';\n\n  function setText(node, t) { if (node && node.textContent !== t) node.textContent = t; }\n  function setAttr(node, k, v) { if (node && node.getAttribute(k) !== v) node.setAttribute(k, v); }\n  function setClass(node, cls, on) { on = !!on; if (node && node.classList.contains(cls) !== on) node.classList.toggle(cls, on); }\n  function setVar(node, k, v) { if (node && node.style.getPropertyValue(k) !== v) node.style.setProperty(k, v); }\n  function setHidden(node, hide) { hide = !!hide; if (node && node.hidden !== hide) node.hidden = hide; }\n\n  function reducedMotion() {\n    return !!(win.matchMedia && win.matchMedia('(prefers-reduced-motion: reduce)').matches);\n  }\n\n  function cdnWidth(src, w) {\n    if (!src) return '';\n    return src + (src.indexOf('?') === -1 ? '?' : '&') + 'width=' + w;\n  }\n\n  function isShopifyCdn(src) { return /(^|\\/\\/)cdn\\.shopify\\.com\\/|\\/cdn\\/shop\\//.test(src); }\n\n  // Looks at the edge of a loaded image, drawn down to 48 x 48. Four white corners with white above and\n  // below is a cut-out product shot (set on the paper well and multiplied). White down both sides only is\n  // a room photo with bars baked in (zoomed past them). Everything else is a photo and covers the well.\n  // Checked against all 189 images in the 2026-10-05 snapshot: 6 cut-outs, 2 barred, no near misses.\n  var probe = null, PROBE = 48;\n  function classify(img) {\n    try {\n      if (!probe) { probe = doc.createElement('canvas'); probe.width = probe.height = PROBE; }\n      var g = probe.getContext('2d', { willReadFrequently: true });\n      g.clearRect(0, 0, PROBE, PROBE);\n      g.drawImage(img, 0, 0, PROBE, PROBE);\n      var d = g.getImageData(0, 0, PROBE, PROBE).data, last = PROBE - 1, k = 4;\n      var white = function (x, y) {\n        var o = (y * PROBE + x) * 4;\n        return d[o + 3] < 24 || (d[o] > 236 && d[o + 1] > 236 && d[o + 2] > 236);\n      };\n      var left = 0, right = 0, top = 0, bottom = 0, i, x, y;\n      for (i = 0; i < PROBE; i++) {\n        if (white(0, i)) left++;\n        if (white(last, i)) right++;\n        if (white(i, 0)) top++;\n        if (white(i, last)) bottom++;\n      }\n      var corner = function (x0, y0) {\n        var n = 0;\n        for (x = x0; x < x0 + k; x++) for (y = y0; y < y0 + k; y++) if (white(x, y)) n++;\n        return n / (k * k);\n      };\n      var corners = Math.min(corner(0, 0), corner(PROBE - k, 0), corner(0, PROBE - k), corner(PROBE - k, PROBE - k));\n      var caps = (top + bottom) / (2 * PROBE);\n      if (corners >= 0.9 && caps >= 0.6) return 'cut';\n      if (left / PROBE >= 0.9 && right / PROBE >= 0.9 && caps < 0.6) return 'bars';\n    } catch (e) { /* a canvas we cannot read is treated as a photo */ }\n    return 'photo';\n  }\n\n  function readStoredStore() {\n    var key = '';\n    try { key = win.localStorage.getItem('moPreferredShowroom') || ''; } catch (e) { key = ''; }\n    key = String(key).trim().toLowerCase();\n    if (STORE_LABELS[key]) return key;\n    try {\n      var raw = win.sessionStorage.getItem('moAutoShowroom');\n      if (raw) {\n        var v;\n        try { v = JSON.parse(raw); } catch (e2) { v = raw; }\n        key = String((v && typeof v === 'object' ? v.key : v) || '').trim().toLowerCase();\n        if (STORE_LABELS[key]) return key;\n      }\n    } catch (e3) { /* storage blocked */ }\n    return '';\n  }\n\n  var uidSeq = 0;\n\n  /* ------------------------------------------------------------------ mount */\n\n  function mount(rootEl, opts) {\n    opts = opts || {};\n    if (!doc || !rootEl) return null;\n    if (rootEl.__mxf && rootEl.__mxf.destroy) rootEl.__mxf.destroy();\n    var raw = Array.isArray(opts.beds) ? opts.beds : [];\n    if (!raw.length) return null; // nothing to show: leave the server-rendered fallback alone\n\n    var items = normalize(raw);\n    var bfOn = !!opts.bf && items.some(function (it) { return it.bf; });\n    if (bfOn && SORTS.indexOf(SORT_SAVINGS) === -1) SORTS.push(SORT_SAVINGS);\n    var byId = {};\n    items.forEach(function (it) { byId[it.id] = it; });\n    var brands = brandList(items);\n    var brandSlugs = brands.map(function (b) { return b.slug; });\n    var uid = 'mxf' + (++uidSeq);\n    var urlOn = opts.url !== false && !!(win.history && win.history.replaceState);\n    var linkBase = String(opts.linkBase || '');\n    var alive = true;\n    var listeners = [];\n    var timers = {};\n\n    var defaults = applyPatch(baseState(), opts.initial, brandSlugs);\n    var state = applyPatch(applyPatch(baseState(), opts.initial, brandSlugs), urlOn ? readQuery(win.location.search) : null, brandSlugs);\n    state.shown = PAGE;\n\n    var ctx = { storeKey: '', storeLabel: '' };\n    (function () {\n      var key = String(opts.storeKey || '').trim().toLowerCase();\n      if (!STORE_LABELS[key]) key = readStoredStore();\n      ctx.storeKey = key;\n      ctx.storeLabel = key ? (opts.storeLabel && key === String(opts.storeKey || '').trim().toLowerCase() ? String(opts.storeLabel) : STORE_LABELS[key]) : '';\n    })();\n\n    var dom = budgetDomain(items, state.size);\n    state.max = fitBudget(state.max, dom);\n    state.min = fitMin(state.min, dom);\n\n    var view = { results: [], made: 0, lit: {} };\n    var cards = {}, dots = {}, dotList = [];\n    var picked = [];\n    var swarmSig = '', swarmGeo = null, roving = null, hotId = null, tipId = null, lastThumb = 1;\n    var flow = null, flowVal = null, revealed = false, compact = false;\n\n    function on(target, type, fn, o) {\n      target.addEventListener(type, fn, o);\n      listeners.push(function () { target.removeEventListener(type, fn, o); });\n    }\n\n    function floorPhrase() { return ctx.storeLabel ? 'On the floor at ' + ctx.storeLabel : 'On a showroom floor'; }\n\n    /* ---------- skeleton ---------- */\n\n    var wrap = el('div', { class: 'mo-mxf mxf-prereveal' + (opts.bare ? ' mo-mxf--bare' : ''), 'data-mode': 'wide' });\n\n    // The accent word, one span per letter. Under the pointer the letters sink like foam and come back slowly\n    // (after 21st.dev Mouse Wave Text 19323, pressing down instead of a wave). The word reads as one word.\n    var sinkEls = [];\n    function sinkWord(word) {\n      var em = el('em', { class: 'mxf-sink' });\n      Array.prototype.forEach.call(word, function (ch) {\n        var sp = el('span', { class: 'mxf-sink__c', text: ch });\n        sinkEls.push(sp);\n        em.appendChild(sp);\n      });\n      return em;\n    }\n\n    var eyebrowText = el('span');\n    var sizeThumb = el('span', { class: 'mxf-seg__thumb', 'aria-hidden': 'true' });\n    var seg = el('div', { class: 'mxf-seg' }, [sizeThumb]);\n    var sizeBtns = SIZES.map(function (sz) {\n      var b = el('button', { type: 'button', class: 'mxf-seg__btn', 'data-act': 'size', 'data-v': sz, 'aria-pressed': 'false', text: sz });\n      seg.appendChild(b);\n      return b;\n    });\n    var head = el('div', { class: 'mxf-head' }, [\n      el('div', { class: 'mxf-head__copy' }, [\n        el('p', { class: 'mxf-eyebrow' }, [el('span', { class: 'mxf-reddot', 'aria-hidden': 'true' }), eyebrowText]),\n        el('h2', { class: 'mxf-h2', 'aria-label': String(opts.headBefore || 'How far do you want to') + ' ' + String(opts.headAccent || 'sink') + '?' },\n          [String(opts.headBefore || 'How far do you want to') + ' ', sinkWord(String(opts.headAccent || 'sink')), '?']),\n        el('p', { class: 'mxf-help', text: String(opts.help || 'Drag the two red dots along the bed. A plush bed gives a lot under you, a firm one barely moves. Every price is for the size you pick.') })\n      ]),\n      el('div', { class: 'mxf-size', role: 'group', 'aria-labelledby': uid + '-size' }, [\n        el('span', { class: 'mxf-label', id: uid + '-size', text: 'Size' }),\n        seg\n      ])\n    ]);\n\n    // Feel stage\n    var feelReadout = el('span', { class: 'mxf-readout' });\n    // The three presets double as the labels under the track: each chip sits under its own zone.\n    var presetBtns = PRESETS.map(function (p, i) {\n      var b = el('button', { type: 'button', class: 'mxf-chip mxf-zone', 'data-act': 'preset', 'data-v': String(i), 'aria-pressed': 'false' }, [\n        el('span', { text: p.label }),\n        el('span', { class: 'mxf-chip__meta', text: p.lo + '-' + p.hi })\n      ]);\n      b.style.setProperty('--t', String(((p.lo + p.hi) / 2 - FEEL_MIN) / (FEEL_MAX - FEEL_MIN)));\n      return b;\n    });\n    // The legend's first entry is also the floor switch: flip it and only the red dots stay lit.\n    var floorLabel = el('span', { class: 'mxf-switch__label' });\n    var floorBtn = el('button', { type: 'button', class: 'mxf-switch', role: 'switch', 'aria-checked': 'false', 'data-act': 'floor' }, [\n      el('span', { class: 'mxf-legend__dot is-floor', 'aria-hidden': 'true' }),\n      floorLabel,\n      el('span', { class: 'mxf-switch__track', 'aria-hidden': 'true' }, [el('span', { class: 'mxf-switch__knob' })])\n    ]);\n    var legend = el('div', { class: 'mxf-legend' }, [\n      floorBtn,\n      el('span', { class: 'mxf-legend__item' }, [el('span', { class: 'mxf-legend__dot', 'aria-hidden': 'true' }), 'Everything else'])\n    ]);\n    var tipBrand = el('span', { class: 'mxf-tip__brand' });\n    var tipName = el('span', { class: 'mxf-tip__name' });\n    var tipPrice = el('span', { class: 'mxf-tip__price' });\n    var tipFloor = el('span', { class: 'mxf-tip__floor' });\n    var tipDetail = el('span', { class: 'mxf-tip__detail', id: uid + '-tip' }, [tipPrice, tipFloor]);\n    var tip = el('div', { class: 'mxf-tip', 'aria-hidden': 'true' }, [tipBrand, tipName, tipDetail]);\n    var swarmLane = el('div', { class: 'mxf-swarm__lane' }, [tip]);\n    var swarm = el('div', { class: 'mxf-swarm', role: 'group' }, [swarmLane]);\n\n    // Each handle is a real range input (keyboard, screen readers, VoiceOver's swipe to adjust) lying\n    // invisibly under a knob that is only its picture. Pointer and touch work goes through the rail.\n    function makeThumb(label, plain, step) {\n      var input = el('input', { type: 'range', class: 'mxf-thumb__input', step: String(step), 'aria-label': label || null });\n      var knob = el('span', { class: 'mxf-thumb' + (plain ? ' mxf-thumb--plain' : ''), 'aria-hidden': 'true' });\n      return { input: input, knob: knob };\n    }\n    var thumbLo = makeThumb('Softest feel', false, 1);\n    var thumbHi = makeThumb('Firmest feel', false, 1);\n    var laneLo = el('div', { class: 'mxf-rail__lane mxf-rail__lane--thumb' }, [thumbLo.input, thumbLo.knob]);\n    var laneHi = el('div', { class: 'mxf-rail__lane mxf-rail__lane--thumb is-top' }, [thumbHi.input, thumbHi.knob]);\n    var feelFill = el('span', { class: 'mxf-rail__fill' });\n    var feelLane = el('div', { class: 'mxf-rail__lane' }, [el('span', { class: 'mxf-rail__line' }), feelFill]);\n    for (var tk = FEEL_MIN; tk <= FEEL_MAX; tk++) {\n      var tick = el('i', { class: 'mxf-rail__tick' });\n      tick.style.setProperty('--t', String((tk - FEEL_MIN) / (FEEL_MAX - FEEL_MIN)));\n      feelLane.appendChild(tick);\n    }\n    // The surface: a cut through a mattress drawn on canvas. Each handle presses into it as deep as a\n    // bed of that feel gives (plush deep, firm barely), and the build picked below sets how it moves back.\n    var surf = el('canvas', { class: 'mxf-surface', 'aria-hidden': 'true' });\n    var surfWrap = el('div', { class: 'mxf-surface__wrap', 'aria-hidden': 'true' }, [surf]);\n    var feelRail = el('div', { class: 'mxf-rail mxf-rail--feel mxf-rail--bed' }, [surfWrap, feelLane, laneLo, laneHi]);\n    var zones = el('div', { class: 'mxf-zones', role: 'group', 'aria-label': 'Feel presets' }, presetBtns);\n    var feelNote = el('p', { class: 'mxf-note', text: String(opts.feelNote || \"Feel numbers come from each bed's product page, 1 plush to 10 firm. The drawing shows the idea, not a measurement.\") });\n    var stage = el('div', { class: 'mxf-stage', role: 'group', 'aria-labelledby': uid + '-feel' }, [\n      el('div', { class: 'mxf-stage__head' }, [\n        el('div', { class: 'mxf-stage__title' }, [el('span', { class: 'mxf-label', id: uid + '-feel', text: 'Feel' }), feelReadout]),\n        legend\n      ]),\n      swarm, feelRail, zones, feelNote\n    ]);\n\n    // Build, budget, brand\n    var buildBtns = BUILDS.map(function (b) {\n      return el('button', { type: 'button', class: 'mxf-chip', 'data-act': 'build', 'data-v': b.key, 'aria-pressed': 'false', text: b.label });\n    });\n    var buildGroup = el('div', { class: 'mxf-group mxf-group--build', role: 'group', 'aria-labelledby': uid + '-build' }, [\n      el('span', { class: 'mxf-label', id: uid + '-build', text: 'Build' }),\n      el('div', { class: 'mxf-chips' }, buildBtns)\n    ]);\n\n    var budgetReadout = el('span', { class: 'mxf-readout mxf-readout--budget' });\n    var budgetLabel = el('span', { class: 'mxf-label', id: uid + '-budget', text: 'Price' });\n    var thumbP0 = makeThumb('Lowest price', true, 100);\n    var thumbB = makeThumb('Highest price', true, 100);\n    var laneP0 = el('div', { class: 'mxf-rail__lane mxf-rail__lane--thumb' }, [thumbP0.input, thumbP0.knob]);\n    var laneB = el('div', { class: 'mxf-rail__lane mxf-rail__lane--thumb is-top' }, [thumbB.input, thumbB.knob]);\n    var budgetFill = el('span', { class: 'mxf-rail__fill' });\n    var budgetLane = el('div', { class: 'mxf-rail__lane' }, [el('span', { class: 'mxf-rail__line' }), budgetFill]);\n    var bars = el('div', { class: 'mxf-hist', 'aria-hidden': 'true' });\n    var hintNum = el('span', { class: 'mxf-hint__n' });\n    var hintSub = el('span', { class: 'mxf-hint__sub' });\n    var hint = el('span', { class: 'mxf-hint', 'aria-hidden': 'true' }, [hintNum, hintSub]);\n    var barEls = [];\n    for (var bi = 0; bi < BINS; bi++) { var bar = el('i', { class: 'mxf-hist__bar' }); barEls.push(bar); bars.appendChild(bar); }\n    var budgetRail = el('div', { class: 'mxf-rail mxf-rail--budget' }, [bars, budgetLane, laneP0, laneB]);\n    var pillLo = el('span', { class: 'mxf-pricepill' });\n    var pillHi = el('span', { class: 'mxf-pricepill' });\n    var budgetGroup = el('div', { class: 'mxf-group mxf-group--budget', role: 'group', 'aria-labelledby': uid + '-budget' }, [\n      el('div', { class: 'mxf-budget__head' }, [budgetLabel, budgetReadout]),\n      budgetRail,\n      el('div', { class: 'mxf-budget__pills' }, [pillLo, el('span', { class: 'mxf-budget__dash', 'aria-hidden': 'true' }), pillHi]),\n      hint\n    ]);\n\n    var brandBtns = brands.map(function (b) {\n      return el('button', { type: 'button', class: 'mxf-chip', 'data-act': 'brand', 'data-v': b.slug, 'aria-pressed': 'false' }, [\n        el('span', { text: b.label }),\n        b.onlineOnly ? el('span', { class: 'mxf-chip__tag', text: 'Online' }) : null\n      ]);\n    });\n    // Black Friday: one chip that keeps only the beds carrying event prices (mo-bf-offer, through the feed)\n    var bfCount = el('span', { class: 'mxf-chip__meta' });\n    var bfBtn = el('button', { type: 'button', class: 'mxf-chip mxf-chip--bf', 'data-act': 'bf', 'aria-pressed': 'false' }, [\n      el('span', { class: 'mxf-chip__bfdot', 'aria-hidden': 'true' }), el('span', { text: 'Black Friday' }), bfCount\n    ]);\n    var bfGroup = el('div', { class: 'mxf-group mxf-group--bf', role: 'group', 'aria-labelledby': uid + '-bf' }, [\n      el('span', { class: 'mxf-label', id: uid + '-bf', text: 'Event' }),\n      el('div', { class: 'mxf-chips' }, [bfBtn])\n    ]);\n    var brandGroup = el('div', { class: 'mxf-group mxf-group--brand', role: 'group', 'aria-labelledby': uid + '-brand' }, [\n      el('span', { class: 'mxf-label', id: uid + '-brand', text: 'Brand' }),\n      el('div', { class: 'mxf-chips' }, brandBtns)\n    ]);\n\n    var barA = el('div', { class: 'mxf-bar__row mxf-bar__row--a' });\n    var barB = el('div', { class: 'mxf-bar__row mxf-bar__row--b' });\n    var bar = el('div', { class: 'mxf-bar' }, [barA, barB]);\n\n    // Phone: one pinned Filters button plus a chip row that scrolls inside itself\n    var filtersBadge = el('span', { class: 'mxf-chip__count', hidden: true });\n    var filtersBtn = el('button', { type: 'button', class: 'mxf-chip mxf-chip--filters', 'data-act': 'sheet-open', 'aria-haspopup': 'dialog' }, [\n      icon(ICON_FILTERS), el('span', { text: 'Filters' }), filtersBadge\n    ]);\n    var quickScroll = el('div', { class: 'mxf-quick__scroll' });\n    var quickMask = el('div', { class: 'mxf-quick__mask' }, [quickScroll]);\n    var quick = el('div', { class: 'mxf-quick' }, [filtersBtn, quickMask]);\n\n    // Result line\n    var countNum = el('span', { class: 'mxf-count__n' });\n    var countUnit = el('span', { class: 'mxf-count__unit' });\n    var countMade = el('span', { class: 'mxf-count__made' });\n    var resetBtn = el('button', { type: 'button', class: 'mxf-link', 'data-act': 'reset', hidden: true, text: 'Reset filters' });\n    var sortBtns = SORTS.map(function (s) {\n      return el('button', { type: 'button', class: 'mxf-sort__btn', 'data-act': 'sort', 'data-v': s.key, 'aria-pressed': 'false', text: s.label });\n    });\n    var sortSelect = el('select', { class: 'mxf-sortsel__select', id: uid + '-sort' }, SORTS.map(function (s) {\n      return el('option', { value: s.key, text: s.label });\n    }));\n    var live = el('p', { class: 'mxf-vh', role: 'status', 'aria-live': 'polite', 'aria-atomic': 'true' });\n    var noneNote = el('span', { class: 'mxf-vh', id: uid + '-none', text: 'No mattresses match this with your other filters.' });\n    var result = el('div', { class: 'mxf-result' }, [\n      el('div', { class: 'mxf-result__left' }, [\n        el('p', { class: 'mxf-count', 'aria-hidden': 'true' }, [countNum, countUnit, countMade]),\n        resetBtn\n      ]),\n      el('div', { class: 'mxf-sort', role: 'group', 'aria-labelledby': uid + '-sortl' }, [\n        el('span', { class: 'mxf-label', id: uid + '-sortl', text: 'Sort' })\n      ].concat(sortBtns)),\n      el('div', { class: 'mxf-sortsel' }, [\n        el('label', { class: 'mxf-sortsel__label', for: uid + '-sort', text: 'Sort' }),\n        sortSelect\n      ]),\n      live, noneNote\n    ]);\n\n    var grid = el('ul', { class: 'mxf-grid', role: 'list' });\n    var emptyBtn = el('button', { type: 'button', class: 'mxf-btn', 'data-act': 'relax' }, [\n      el('span', { class: 'mxf-btn__text' }), el('span', { class: 'mxf-btn__arrow' }, [icon(ICON_ARROW)])\n    ]);\n    var emptyReset = el('button', { type: 'button', class: 'mxf-link', 'data-act': 'reset', text: 'Reset filters' });\n    var empty = el('div', { class: 'mxf-empty', hidden: true }, [\n      el('p', { class: 'mxf-empty__title', text: 'Nothing matches all of that.' }),\n      el('div', { class: 'mxf-empty__acts' }, [emptyBtn, emptyReset])\n    ]);\n    var moreText = el('span', { class: 'mxf-more__text' });\n    var moreLeft = el('span', { class: 'mxf-more__left' });\n    var moreBtn = el('button', { type: 'button', class: 'mxf-more', 'data-act': 'more', hidden: true }, [moreText, moreLeft]);\n    var quizLink = el('a', { class: 'mxf-btn', href: String(opts.quizUrl || QUIZ_FALLBACK), 'data-act': 'quiz' }, [\n      el('span', { class: 'mxf-btn__text', text: 'Take the 60-second quiz' }),\n      el('span', { class: 'mxf-btn__arrow' }, [icon(ICON_ARROW)])\n    ]);\n    var talk = el('div', { class: 'mxf-talk' }, [\n      el('p', { class: 'mxf-talk__q', text: 'Rather talk it through?' }),\n      quizLink\n    ]);\n\n    // Compare: a dock that collects up to three beds, and a sheet that lays them side by side.\n    var cmpSlots = [];\n    for (var cs = 0; cs < COMPARE_MAX; cs++) cmpSlots.push(el('span', { class: 'mxf-dock__slot', 'data-id': '' }));\n    var dockCount = el('span', { class: 'mxf-dock__count' });\n    var dockOpen = el('button', { type: 'button', class: 'mxf-btn mxf-btn--sm', 'data-act': 'cmp-open' }, [\n      el('span', { class: 'mxf-btn__text', text: 'Compare' }), el('span', { class: 'mxf-btn__arrow' }, [icon(ICON_ARROW)])\n    ]);\n    var dockIn = el('div', { class: 'mxf-dock__in' }, [\n      el('div', { class: 'mxf-dock__slots' }, cmpSlots),\n      el('div', { class: 'mxf-dock__text' }, [dockCount, el('button', { type: 'button', class: 'mxf-link mxf-link--sm', 'data-act': 'cmp-clear', text: 'Clear' })]),\n      dockOpen\n    ]);\n    var dock = el('div', { class: 'mxf-dock', role: 'region', 'aria-label': 'Compare mattresses', hidden: true }, [dockIn]);\n    var cmpSizeThumb = el('span', { class: 'mxf-seg__thumb', 'aria-hidden': 'true' });\n    var cmpSeg = el('div', { class: 'mxf-seg mxf-seg--cmp' }, [cmpSizeThumb]);\n    var cmpSizeBtns = SIZES.map(function (sz) {\n      var b = el('button', { type: 'button', class: 'mxf-seg__btn', 'data-act': 'size', 'data-v': sz, 'aria-pressed': 'false', text: sz });\n      cmpSeg.appendChild(b);\n      return b;\n    });\n    var cmpSummary = el('p', { class: 'mxf-cmp__summary' });\n    var cmpBody = el('div', { class: 'mxf-cmp__grid' });\n    var cmp = el('dialog', { class: 'mxf-cmp', 'aria-labelledby': uid + '-cmp' }, [\n      el('div', { class: 'mxf-cmp__panel' }, [\n        el('div', { class: 'mxf-cmp__head' }, [\n          el('h3', { class: 'mxf-cmp__title', id: uid + '-cmp' }, ['Side by ', el('em', { text: 'side' })]),\n          el('button', { type: 'button', class: 'mxf-iconbtn', 'data-act': 'cmp-close', 'aria-label': 'Close compare' }, [icon(ICON_CLOSE)])\n        ]),\n        el('div', { class: 'mxf-cmp__size', role: 'group', 'aria-label': 'Size' }, [el('span', { class: 'mxf-label', text: 'Size' }), cmpSeg]),\n        cmpSummary,\n        el('div', { class: 'mxf-cmp__scroll' }, [cmpBody])\n      ])\n    ]);\n\n    // Filters sheet (phone). A modal <dialog> sits in the top layer, above the theme header and pills.\n    var sheetBody = el('div', { class: 'mxf-sheet__body' });\n    var sheetDoneText = el('span', { class: 'mxf-btn__text' });\n    var sheet = el('dialog', { class: 'mxf-sheet', 'aria-labelledby': uid + '-sheet' }, [\n      el('div', { class: 'mxf-sheet__panel' }, [\n        el('div', { class: 'mxf-sheet__head' }, [\n          el('h3', { class: 'mxf-sheet__title', id: uid + '-sheet', text: 'Filters' }),\n          el('button', { type: 'button', class: 'mxf-iconbtn', 'data-act': 'sheet-close', 'aria-label': 'Close filters' }, [icon(ICON_CLOSE)])\n        ]),\n        sheetBody,\n        el('div', { class: 'mxf-sheet__foot' }, [\n          el('button', { type: 'button', class: 'mxf-link', 'data-act': 'reset', text: 'Reset' }),\n          el('button', { type: 'button', class: 'mxf-btn', 'data-act': 'sheet-close' }, [\n            sheetDoneText, el('span', { class: 'mxf-btn__arrow' }, [icon(ICON_ARROW)])\n          ])\n        ])\n      ])\n    ]);\n    var canSheet = typeof sheet.showModal === 'function';\n\n    wrap.appendChild(head);\n    wrap.appendChild(stage);\n    wrap.appendChild(quick);\n    wrap.appendChild(bar);\n    wrap.appendChild(result);\n    wrap.appendChild(grid);\n    wrap.appendChild(empty);\n    wrap.appendChild(moreBtn);\n    wrap.appendChild(talk);\n    wrap.appendChild(sheet);\n    wrap.appendChild(dock);\n    wrap.appendChild(cmp);\n\n    // Dots: one button per mattress, a single tab stop for the whole swarm (roving tabindex).\n    items.forEach(function (it) {\n      if (it.firm == null) return;\n      var d = el('button', {\n        type: 'button', class: 'mxf-dot', tabindex: '-1', 'data-act': 'dot', 'data-id': it.id,\n        'aria-label': it.brand + ' ' + it.name + ', feel ' + (it.est ? 'about ' : '') + it.firm + ' of 10'\n      });\n      dots[it.id] = d;\n      dotList.push(d);\n      swarmLane.insertBefore(d, tip);\n    });\n    swarm.setAttribute('aria-label', 'All ' + items.length + ' mattresses by feel, 1 is plush and 10 is firm. ' +\n      'Arrow keys move between mattresses. Enter jumps to its card.');\n    // Under a finger the dots are a picture, not buttons: a 5 px target would only ever be hit by accident\n    // and throw the page down to some card. The same mattresses are all in the list below.\n    var touchOnly = !!(win.matchMedia && win.matchMedia('(hover: none), (pointer: coarse)').matches);\n    if (touchOnly) swarm.setAttribute('aria-hidden', 'true');\n\n    /* ---------- derive ---------- */\n\n    function compute() {\n      var matched = select(items, state, ctx);\n      view.results = order(matched, state, ctx);\n      view.lit = {};\n      view.made = 0;\n      matched.forEach(function (it) {\n        if (priceOf(it, state.size)) { view.lit[it.id] = true; view.made++; }\n      });\n    }\n\n    /* ---------- paint: static labels that follow the store ---------- */\n\n    function paintStore() {\n      var floorCount = items.filter(function (it) { return onFloor(it, ctx.storeKey); }).length;\n      setText(eyebrowText, num(items.length) + ' ' + plural(items.length, 'mattress', 'mattresses') + ', ' + num(floorCount) + ' on the floor');\n      setText(floorLabel, floorPhrase());\n      setAttr(floorBtn, 'aria-label', 'Only show mattresses ' + floorPhrase().charAt(0).toLowerCase() + floorPhrase().slice(1));\n    }\n\n    /* ---------- paint: controls ---------- */\n\n    function zoneWord(v) { return v <= 3 ? 'plush' : v <= 6 ? 'medium' : 'firm'; }\n\n    // min and max go in before value: a range input clamps whatever it is given\n    function setRange(t, min, max, value, text, shown) {\n      var i = t.input;\n      if (i.min !== String(min)) i.min = String(min);\n      if (i.max !== String(max)) i.max = String(max);\n      if (i.value !== String(value)) i.value = String(value);\n      setAttr(i, 'aria-valuetext', text);\n      if (shown != null) setText(t.knob, shown);\n    }\n\n    // A chip that would return nothing is dimmed and inactive, with the reason attached for screen readers.\n    function setEmpty(b, off) {\n      setClass(b, 'is-empty', off);\n      if (off) { setAttr(b, 'aria-disabled', 'true'); setAttr(b, 'aria-describedby', uid + '-none'); }\n      else if (b.hasAttribute('aria-disabled')) { b.removeAttribute('aria-disabled'); b.removeAttribute('aria-describedby'); }\n    }\n\n    function paintControls() {\n      var s = state;\n      // size\n      var si = SIZES.indexOf(s.size);\n      sizeBtns.forEach(function (b, ix) { setAttr(b, 'aria-pressed', ix === si ? 'true' : 'false'); });\n      cmpSizeBtns.forEach(function (b, ix) { setAttr(b, 'aria-pressed', ix === si ? 'true' : 'false'); });\n      setVar(cmpSeg, '--i', String(si));\n      setVar(seg, '--i', String(si));\n      setVar(seg, '--c3', String(si % 3));\n      setVar(seg, '--r3', String(Math.floor(si / 3)));\n\n      // feel\n      var tLo = (s.feel[0] - FEEL_MIN) / (FEEL_MAX - FEEL_MIN), tHi = (s.feel[1] - FEEL_MIN) / (FEEL_MAX - FEEL_MIN);\n      setVar(laneLo, '--t', String(tLo));\n      setVar(laneHi, '--t', String(tHi));\n      setVar(feelFill, '--a', String(tLo));\n      setVar(feelFill, '--b', String(tHi));\n      // each handle stops at the other: the low one runs 1 to high, the high one low to 10\n      setRange(thumbLo, FEEL_MIN, s.feel[1], s.feel[0], s.feel[0] + ' of 10, ' + zoneWord(s.feel[0]), String(s.feel[0]));\n      setRange(thumbHi, s.feel[0], FEEL_MAX, s.feel[1], s.feel[1] + ' of 10, ' + zoneWord(s.feel[1]), String(s.feel[1]));\n      setClass(laneLo, 'is-top', lastThumb === 0);\n      setClass(laneHi, 'is-top', lastThumb !== 0);\n      setText(feelReadout, fullFeel(s.feel) ? 'Any feel' : s.feel[0] === s.feel[1] ? String(s.feel[0]) + ' only' : s.feel[0] + ' to ' + s.feel[1]);\n      presetBtns.forEach(function (b, ix) {\n        var p = PRESETS[ix];\n        setAttr(b, 'aria-pressed', s.feel[0] === p.lo && s.feel[1] === p.hi ? 'true' : 'false');\n      });\n\n      // build (dim a build nothing else leaves room for)\n      var open = select(items, s, ctx, 'build'), counts = {};\n      open.forEach(function (it) { counts[it.build] = (counts[it.build] || 0) + 1; });\n      buildBtns.forEach(function (b, ix) {\n        var key = BUILDS[ix].key, pressed = s.build === key;\n        setAttr(b, 'aria-pressed', pressed ? 'true' : 'false');\n        setEmpty(b, !pressed && key !== 'all' && !counts[key]);\n      });\n\n      // brand\n      open = select(items, s, ctx, 'brand');\n      counts = {};\n      open.forEach(function (it) { counts[it.slug] = (counts[it.slug] || 0) + 1; });\n      brandBtns.forEach(function (b, ix) {\n        var key = brands[ix].slug, pressed = s.brands.indexOf(key) !== -1;\n        setAttr(b, 'aria-pressed', pressed ? 'true' : 'false');\n        setEmpty(b, !pressed && !counts[key]);\n      });\n\n      // Black Friday chip: count of event beds left with every other filter on\n      if (bfOn) {\n        var bfLeft = select(items, s, ctx, 'bf').filter(function (it) { return it.bf; }).length;\n        setAttr(bfBtn, 'aria-pressed', s.bf ? 'true' : 'false');\n        setText(bfCount, num(bfLeft));\n        setEmpty(bfBtn, !s.bf && !bfLeft);\n      }\n\n      // budget\n      if (dom) {\n        var hv = s.max == null ? dom.hi : s.max, lv = s.min == null ? dom.lo : s.min;\n        var ht = budgetToT(hv, dom), lt = budgetToT(lv, dom);\n        var btxt = s.min == null && s.max == null ? 'Any price' : s.min == null ? 'Up to ' + money(s.max) :\n          s.max == null ? money(s.min) + ' and up' : money(s.min) + ' to ' + money(s.max);\n        setVar(laneP0, '--t', String(lt));\n        setVar(laneB, '--t', String(ht));\n        setVar(budgetFill, '--a', String(lt));\n        setVar(budgetFill, '--b', String(ht));\n        setText(budgetReadout, btxt);\n        setText(budgetLabel, 'Price, ' + s.size);\n        setText(pillLo, money(lv));\n        setText(pillHi, money(hv) + (s.max == null ? '+' : ''));\n        setRange(thumbP0, dom.lo, hv, lv, (s.min == null ? 'No lowest price' : 'From ' + money(lv)) + ' for a ' + s.size);\n        setRange(thumbB, lv, dom.hi, hv, (s.max == null ? 'No highest price' : 'Up to ' + money(hv)) + ' for a ' + s.size);\n        var hist = histogram(select(items, s, ctx, 'max'), s.size, dom, BINS), top = 1;\n        hist.forEach(function (n) { if (n > top) top = n; });\n        barEls.forEach(function (b, k) {\n          var c = (k + 0.5) / BINS;\n          setVar(b, '--h', hist[k] ? (0.12 + 0.88 * hist[k] / top).toFixed(3) : '0.04');\n          setVar(b, '--k', String(k));\n          setClass(b, 'is-in', c >= lt - 0.5 / BINS && c <= ht + 0.5 / BINS);\n          setClass(b, 'is-zero', !hist[k]);\n        });\n      }\n      setHidden(budgetGroup, !dom);\n\n      // floor, reset, sort, phone badge\n      setAttr(floorBtn, 'aria-checked', s.floor ? 'true' : 'false');\n      setHidden(resetBtn, !anyFilter(s) || !view.results.length); // the empty state carries its own reset\n      sortBtns.forEach(function (b, ix) { setAttr(b, 'aria-pressed', SORTS[ix].key === s.sort ? 'true' : 'false'); });\n      if (sortSelect.value !== s.sort) sortSelect.value = s.sort;\n      var inSheet = s.brands.length + (s.max != null || s.min != null ? 1 : 0);\n      setText(filtersBadge, String(inSheet));\n      setHidden(filtersBadge, !inSheet);\n      setAttr(filtersBtn, 'aria-label', inSheet ? 'Filters, ' + inSheet + ' on' : 'Filters');\n      var n = view.results.length;\n      setText(sheetDoneText, n ? 'Show ' + num(n) + ' ' + plural(n, 'mattress', 'mattresses') : 'See what matches');\n    }\n\n    /* ---------- paint: count ---------- */\n\n    function upgradeFlow() {\n      if (!alive || flow || !win.customElements || !win.customElements.get('number-flow')) return;\n      try {\n        flow = doc.createElement('number-flow');\n        countNum.textContent = '';\n        countNum.appendChild(flow);\n        flow.transformTiming = { duration: 520, easing: EASE };\n        flow.spinTiming = { duration: 520, easing: EASE };\n        flow.opacityTiming = { duration: 260, easing: 'ease-out' };\n        flowVal = view.results.length;\n        flow.update(flowVal);\n      } catch (e) {\n        flow = null;\n        setText(countNum, num(view.results.length));\n      }\n    }\n\n    function paintCount() {\n      var n = view.results.length;\n      if (flow) {\n        if (flowVal !== n) { flowVal = n; flow.update(n); }\n      } else setText(countNum, num(n));\n      setText(countUnit, plural(n, 'mattress', 'mattresses'));\n      var made = view.made < n ? num(view.made) + ' made in ' + state.size : '';\n      setText(countMade, made);\n      setHidden(countMade, !made);\n      clearTimeout(timers.live);\n      timers.live = setTimeout(function () {\n        setText(live, num(n) + ' ' + plural(n, 'mattress', 'mattresses') + (made ? ', ' + made : ''));\n      }, 450);\n    }\n\n    /* ---------- paint: swarm ---------- */\n\n    function layoutSwarm() {\n      var w = swarmLane.clientWidth;\n      if (!w) return false;\n      var unit = w / (FEEL_MAX - FEEL_MIN), tallest = 0, tally = {};\n      items.forEach(function (it) {\n        if (it.firm == null) return;\n        tally[it.firm] = (tally[it.firm] || 0) + 1;\n        if (tally[it.firm] > tallest) tallest = tally[it.firm];\n      });\n      var half = compact ? 0.45 : 0.4;\n      var pitch = swarmPitch(unit, tallest, compact ? 86 : 112, 4.5, 14, half);\n      var cols = swarmCols(unit, pitch, half);\n      var sig = pitch + '|' + cols.even + '|' + cols.odd + '|' + ctx.storeKey;\n      if (sig === swarmSig) return true;\n      swarmSig = sig;\n      // stacking order: beds on the floor sit on the floor line, the rest pile above\n      var entries = items.slice().sort(function (a, b) {\n        return (onFloor(a, ctx.storeKey) ? 0 : 1) - (onFloor(b, ctx.storeKey) ? 0 : 1) || a.brandRank - b.brandRank || a.i - b.i;\n      });\n      swarmGeo = swarmPack(entries, unit, pitch, half);\n      setVar(swarm, '--mxf-dot', swarmGeo.dot.toFixed(2) + 'px');\n      items.forEach(function (it) {\n        var d = dots[it.id], p = swarmGeo.pos[it.id];\n        if (!d || !p) return;\n        var left = 'calc(' + (p.t * 100).toFixed(3) + '% + ' + p.dx.toFixed(2) + 'px)';\n        var bottom = (p.row * swarmGeo.rowH).toFixed(2) + 'px';\n        if (d.style.left !== left) d.style.left = left;\n        if (d.style.bottom !== bottom) d.style.bottom = bottom;\n      });\n      return true;\n    }\n\n    function paintSwarm() {\n      var firstLit = null;\n      items.forEach(function (it) {\n        var d = dots[it.id];\n        if (!d) return;\n        var lit = !!view.lit[it.id];\n        if (d.disabled === lit) d.disabled = !lit;\n        setClass(d, 'is-floor', onFloor(it, ctx.storeKey));\n        if (lit && !firstLit) firstLit = d;\n      });\n      if (!roving || roving.disabled) setRoving(firstLit);\n      if (tipId && !view.lit[tipId]) hideTip();\n    }\n\n    function setRoving(d) {\n      if (roving === d || touchOnly) return;\n      if (roving) setAttr(roving, 'tabindex', '-1');\n      roving = d || null;\n      if (roving) setAttr(roving, 'tabindex', '0');\n    }\n\n    function showTip(id) {\n      var it = byId[id], p = swarmGeo && swarmGeo.pos[id];\n      if (!it || !p) return;\n      var price = priceOf(it, state.size);\n      setText(tipBrand, it.brand);\n      setText(tipName, it.name);\n      setText(tipPrice, price ? money(price.p) + ' in ' + state.size : 'Not made in ' + state.size);\n      var fl = onFloor(it, ctx.storeKey);\n      setText(tipFloor, fl ? floorPhrase() : it.online ? 'Online only' : '');\n      setClass(tipFloor, 'is-floor', fl);\n      setHidden(tipFloor, !fl && !it.online);\n      // the bubble sits above the whole mound, so the dots around the one in hand stay in view\n      tip.style.left = 'calc(' + (p.t * 100).toFixed(3) + '% + ' + p.dx.toFixed(2) + 'px)';\n      tip.style.bottom = (Math.max(p.row, swarmGeo.tops[p.firm] || 0) * swarmGeo.rowH + swarmGeo.dot + 12).toFixed(1) + 'px';\n      // keep the bubble inside the stage: slide it sideways, the caret stays on the dot\n      var half = tip.offsetWidth / 2, laneW = swarmLane.clientWidth, cx = p.t * laneW + p.dx, pad = 12;\n      var shift = cx - half + pad < 0 ? -(cx - half + pad) : (cx + half - pad > laneW ? laneW - (cx + half - pad) : 0);\n      setVar(tip, '--shift', shift.toFixed(1) + 'px');\n      if (tipId && dots[tipId]) dots[tipId].removeAttribute('aria-describedby');\n      tipId = id;\n      dots[id].setAttribute('aria-describedby', uid + '-tip');\n      setAttr(tip, 'role', 'tooltip');\n      tip.removeAttribute('aria-hidden');\n      setClass(tip, 'is-on', true);\n    }\n\n    function hideTip() {\n      if (tipId && dots[tipId]) dots[tipId].removeAttribute('aria-describedby');\n      tipId = null;\n      tip.removeAttribute('role'); // faded out, it still holds the last bed: keep that from assistive tech\n      setAttr(tip, 'aria-hidden', 'true');\n      setClass(tip, 'is-on', false);\n    }\n\n    function setHot(id) {\n      if (hotId === id) return;\n      if (hotId && dots[hotId]) dots[hotId].classList.remove('is-hot');\n      hotId = id && dots[id] && !dots[id].disabled ? id : null;\n      if (hotId) dots[hotId].classList.add('is-hot');\n    }\n\n    /* ---------- paint: cards ---------- */\n\n    function heightText(h) { return h == null ? '' : (Math.round(h * 100) / 100) + ' in.'; }\n\n    function makeCard(it) {\n      var img = null;\n      if (it.img) {\n        var cdn = isShopifyCdn(it.img);\n        img = el('img', {\n          class: 'mxf-card__img', alt: it.title, loading: 'lazy', decoding: 'async', width: '600', height: '450',\n          crossorigin: cdn ? 'anonymous' : null,\n          sizes: cdn ? '(min-width: 1200px) 330px, (min-width: 900px) 31vw, (min-width: 600px) 46vw, 92vw' : null,\n          srcset: cdn ? [400, 600, 800].map(function (w) { return cdnWidth(it.img, w) + ' ' + w + 'w'; }).join(', ') : null,\n          src: cdn ? cdnWidth(it.img, 600) : it.img\n        });\n      }\n      var well = el('div', { class: 'mxf-card__well' }, [img, it.bf ? el('span', { class: 'mo-bft mxf-card__bf', text: 'Black Friday' }) : null]);\n      if (img) {\n        var settle = function () {\n          if (!img.naturalWidth) return;\n          var kind = classify(img);\n          if (kind === 'cut') { img.classList.add('is-cut'); well.classList.add('is-paper'); }\n          else if (kind === 'bars') img.classList.add('is-barred');\n          img.classList.add('is-in');\n        };\n        img.addEventListener('load', settle);\n        img.addEventListener('error', function () {\n          // a failed cross-origin read should not cost the picture: try once more as a plain image\n          if (img.hasAttribute('crossorigin')) { img.removeAttribute('crossorigin'); img.src = img.src; }\n        });\n        if (img.complete && img.naturalWidth) settle();\n      }\n\n      var meter = el('span', { class: 'mxf-meter', 'aria-hidden': 'true' });\n      for (var t = 1; t <= 10; t++) {\n        meter.appendChild(el('i', { class: it.firm == null ? null : it.firm >= t ? 'is-on' : it.firm > t - 1 ? 'is-half' : null }));\n      }\n      var rating = null;\n      if (it.rating != null) {\n        var stars = el('span', { class: 'mxf-stars', 'aria-hidden': 'true' });\n        stars.style.setProperty('--pct', (Math.max(0, Math.min(5, it.rating)) / 5 * 100).toFixed(1) + '%');\n        rating = el('span', { class: 'mxf-card__rating' }, [\n          stars,\n          el('span', { class: 'mxf-vh', text: 'Rated ' }),\n          el('span', { text: it.rating.toFixed(1) }),\n          el('span', { class: 'mxf-vh', text: ' out of 5 from' }),\n          el('span', { class: 'mxf-card__reviews', text: ' (' + num(it.reviews) + ')' }),\n          el('span', { class: 'mxf-vh', text: ' reviews' })\n        ]);\n      }\n      var specs = [heightText(it.height), it.build].filter(Boolean).join(' ');\n      if (specs) specs = specs.charAt(0).toUpperCase() + specs.slice(1);\n      var price = el('span', { class: 'mxf-card__price' });\n      var wasNum = el('span');\n      var was = el('s', { class: 'mxf-card__was', hidden: true }, [el('span', { class: 'mxf-vh', text: 'Compare at ' }), wasNum]);\n      var status = el('span', { class: 'mxf-card__status' }, [\n        el('span', { class: 'mxf-card__statusdot', 'aria-hidden': 'true' }), el('span', { class: 'mxf-card__statustext' })\n      ]);\n      var link = el('a', { class: 'mxf-card__link', href: linkBase && it.url.charAt(0) === '/' ? linkBase + it.url : it.url }, [\n        well,\n        el('div', { class: 'mxf-card__body' }, [\n          el('div', { class: 'mxf-card__top' }, [el('span', { class: 'mxf-card__brand', text: it.brand }), rating]),\n          el('h3', { class: 'mxf-card__name', text: it.name }),\n          el('div', { class: 'mxf-card__feel' }, [\n            it.firm == null ? null : meter,\n            it.firm == null ? null : el('span', { class: 'mxf-card__feeltext', text: 'Feel ' + (it.est ? 'about ' : '') + it.firm + '/10' }),\n            specs ? el('span', { class: 'mxf-card__specs', text: specs }) : null\n          ]),\n          el('div', { class: 'mxf-card__foot' }, [el('span', { class: 'mxf-card__prices' }, [price, was]), status]),\n          etaSlot(it)\n        ])\n      ]);\n      var cmpText = el('span', { class: 'mxf-card__cmptext', text: 'Compare' });\n      var cmpBtn = el('button', { type: 'button', class: 'mxf-card__cmp', 'data-act': 'cmp', 'data-v': it.id, 'aria-pressed': 'false',\n        'aria-label': 'Compare ' + it.brand + ' ' + it.name }, [el('span', { class: 'mxf-card__cmpbox', 'aria-hidden': 'true' }), cmpText]);\n      var node = el('li', { class: 'mxf-card', 'data-id': it.id }, [link, cmpBtn, el('span', { class: 'mxf-card__ring', 'aria-hidden': 'true' })]);\n      return { node: node, link: link, price: price, was: was, wasNum: wasNum, status: status, statusText: status.lastChild, cmp: cmpBtn, cmpText: cmpText, anim: null };\n    }\n\n    // Delivery estimate slot for the brands the ETA service covers. assets/mo-eta.js fills it in.\n    function etaSlot(it) {\n      if (!ETA_BRANDS[it.slug] || !it.eta.length) return null;\n      var ns = 'http://www.w3.org/2000/svg', svg = doc.createElementNS(ns, 'svg');\n      svg.setAttribute('class', 'mo-eta__icon'); svg.setAttribute('viewBox', '0 0 24 24'); svg.setAttribute('width', '15'); svg.setAttribute('height', '15');\n      svg.setAttribute('fill', 'none'); svg.setAttribute('stroke', 'currentColor'); svg.setAttribute('stroke-width', '1.6');\n      svg.setAttribute('stroke-linecap', 'round'); svg.setAttribute('stroke-linejoin', 'round'); svg.setAttribute('aria-hidden', 'true');\n      [['rect', { x: 1, y: 3, width: 15, height: 13, rx: 1.5 }], ['polygon', { points: '16 8 20 8 23 11 23 16 16 16 16 8' }],\n        ['circle', { cx: 5.5, cy: 18.5, r: 2.5 }], ['circle', { cx: 18.5, cy: 18.5, r: 2.5 }]].forEach(function (d) {\n        var n = doc.createElementNS(ns, d[0]);\n        for (var k in d[1]) n.setAttribute(k, String(d[1][k]));\n        svg.appendChild(n);\n      });\n      return el('span', { class: 'mo-eta mo-eta--card mxf-card__eta', 'data-mo-eta': '', 'data-mo-eta-context': 'card', 'data-mo-eta-variants': it.eta.join(','), hidden: true },\n        [svg, el('span', { class: 'mo-eta__text' })]);\n    }\n\n    function syncCmp(c, id) {\n      var onIt = picked.indexOf(id) !== -1, full = !onIt && picked.length >= COMPARE_MAX;\n      setAttr(c.cmp, 'aria-pressed', onIt ? 'true' : 'false');\n      setClass(c.cmp, 'is-full', full);\n      setText(c.cmpText, onIt ? 'Comparing' : 'Compare');\n    }\n\n    function syncCard(c, it) {\n      syncCmp(c, it.id);\n      var p = priceOf(it, state.size);\n      var label = p ? money(p.p) : 'Not made in ' + state.size;\n      // a size change swaps every price: let the new one settle in rather than blink\n      if (c.price.textContent && c.price.textContent !== label && c.node.parentNode === grid && !reducedMotion() && c.price.animate) {\n        c.price.animate([{ opacity: 0, transform: 'translateY(4px)' }, { opacity: 1, transform: 'translateY(0)' }], { duration: 300, easing: EASE });\n      }\n      setClass(c.node, 'is-unmade', !p);\n      setText(c.price, label);\n      var cmp = p && typeof p.c === 'number' && p.c > p.p ? p.c : null;\n      setText(c.wasNum, cmp ? money(cmp) : '');\n      setHidden(c.was, !cmp);\n      var fl = onFloor(it, ctx.storeKey);\n      // an empty status keeps its line on narrow cards, so prices line up across a row\n      setText(c.statusText, fl ? floorPhrase() : it.online ? 'Online only' : '');\n      setClass(c.status, 'is-floor', fl);\n    }\n\n    function cardRects() {\n      var map = {}, kids = grid.children;\n      for (var i = 0; i < kids.length; i++) map[kids[i].getAttribute('data-id')] = kids[i].getBoundingClientRect();\n      return map;\n    }\n\n    function paintGrid(animate) {\n      var res = view.results, show = res.slice(0, state.shown);\n      var move = animate && !reducedMotion() && typeof grid.animate === 'function';\n      var before = move ? cardRects() : null, y0 = move ? win.pageYOffset : 0;\n      var want = show.map(function (it) {\n        var c = cards[it.id] || (cards[it.id] = makeCard(it));\n        syncCard(c, it);\n        return c;\n      });\n      for (var i = 0; i < want.length; i++) {\n        if (grid.children[i] !== want[i].node) grid.insertBefore(want[i].node, grid.children[i] || null);\n      }\n      while (grid.children.length > want.length) grid.removeChild(grid.lastChild);\n\n      var left = res.length - show.length;\n      setHidden(moreBtn, left <= 0);\n      if (left > 0) {\n        var step = Math.min(PAGE, left);\n        setText(moreText, 'Show ' + step + ' more');\n        setText(moreLeft, num(left) + ' left');\n      }\n      setHidden(grid, !res.length);\n      setHidden(empty, res.length > 0);\n      if (!res.length) {\n        var r = relax(items, state, ctx);\n        setHidden(emptyBtn, !r);\n        if (r) {\n          setText(emptyBtn.firstChild, 'Show ' + num(r.count) + ' without ' + r.label);\n          emptyBtn.setAttribute('data-v', r.key);\n        }\n      }\n      if (!move) return;\n\n      // FLIP: cards that stay glide from where they were, new ones rise in\n      var dy0 = win.pageYOffset - y0, vh = win.innerHeight, fresh = 0;\n      want.forEach(function (c) {\n        var now = c.node.getBoundingClientRect(), was = before[c.node.getAttribute('data-id')];\n        if (c.anim) { try { c.anim.cancel(); } catch (e) { /* already done */ } c.anim = null; }\n        if (now.bottom < -200 || now.top > vh + 200) { if (!was || was.bottom < -200 || was.top > vh + 200) return; }\n        if (was) {\n          var dx = was.left - now.left, dy = was.top - now.top - dy0;\n          if (Math.abs(dx) < 0.5 && Math.abs(dy) < 0.5) return;\n          c.anim = c.node.animate([{ transform: 'translate(' + dx + 'px,' + dy + 'px)' }, { transform: 'translate(0,0)' }],\n            { duration: 280, easing: EASE });\n        } else {\n          c.anim = c.node.animate([{ opacity: 0, transform: 'translateY(12px)' }, { opacity: 1, transform: 'translateY(0)' }],\n            { duration: 320, easing: EASE, delay: Math.min(fresh++, 8) * 24, fill: 'backwards' });\n        }\n      });\n    }\n\n    function lightCard(id) {\n      var c = cards[id];\n      if (!c) return;\n      c.node.classList.add('is-lit');\n      clearTimeout(timers['lit' + id]);\n      timers['lit' + id] = setTimeout(function () { c.node.classList.remove('is-lit'); }, 2200);\n    }\n\n    function goToCard(id) {\n      var idx = -1;\n      for (var i = 0; i < view.results.length; i++) if (view.results[i].id === id) { idx = i; break; }\n      if (idx < 0) return;\n      if (idx >= state.shown) { state.shown = Math.ceil((idx + 1) / PAGE) * PAGE; paintGrid(false); }\n      var c = cards[id];\n      if (!c) return;\n      try { c.node.scrollIntoView({ block: 'center', behavior: reducedMotion() ? 'instant' : 'smooth' }); }\n      catch (e) { c.node.scrollIntoView(); }\n      try { c.link.focus({ preventScroll: true }); } catch (e2) { /* focus is a nicety */ }\n      lightCard(id);\n    }\n\n    /* ---------- compare ---------- */\n\n    function thumbOf(it, w) {\n      var src = it.cut || it.img;\n      if (!src) return '';\n      return isShopifyCdn(src) ? cdnWidth(src, w) : src;\n    }\n\n    // A bed dropped into the dock lands the way its build moves: memory foam sinks and comes back slowly,\n    // coils bounce. After 21st.dev Toast Gravity Stack (33302) and Spring Element (2923), as keyframes.\n    var LANDINGS = {\n      foam: { d: 1150, k: [[-30, 1, 1, 0, 0], [0, 1.06, .84, 1, .36], [0, 1.03, .93, 1, .66], [0, 1, 1, 1, 1]] },\n      hybrid: { d: 820, k: [[-30, 1, 1, 0, 0], [0, 1.05, .9, 1, .3], [-9, .98, 1.02, 1, .48], [0, 1.02, .96, 1, .66], [-2, 1, 1, 1, .82], [0, 1, 1, 1, 1]] },\n      innerspring: { d: 760, k: [[-30, 1, 1, 0, 0], [0, 1.04, .92, 1, .26], [-12, .98, 1.03, 1, .42], [0, 1.02, .97, 1, .58], [-5, 1, 1, 1, .72], [0, 1, 1, 1, .84], [-1.5, 1, 1, 1, .92], [0, 1, 1, 1, 1]] }\n    };\n    function land(node, build) {\n      if (reducedMotion() || typeof node.animate !== 'function') return;\n      var L = LANDINGS[build] || LANDINGS.hybrid;\n      node.style.transformOrigin = '50% 100%';\n      node.animate(L.k.map(function (f) {\n        return { transform: 'translateY(' + f[0] + 'px) scale(' + f[1] + ',' + f[2] + ')', opacity: f[3], offset: f[4] };\n      }), { duration: L.d, easing: 'ease-out' });\n    }\n\n    function paintDock(added) {\n      var n = picked.length;\n      setHidden(dock, !n);\n      setClass(doc.documentElement, 'mxf-has-dock', n > 0);\n      cmpSlots.forEach(function (slot, k) {\n        var id = picked[k] || '', it = id ? byId[id] : null;\n        if (slot.getAttribute('data-id') === id) return;\n        slot.textContent = '';\n        slot.setAttribute('data-id', id);\n        setClass(slot, 'is-on', !!it);\n        if (!it) return;\n        var im = el('img', { src: thumbOf(it, 200), alt: '', width: '84', height: '56', decoding: 'async' });\n        slot.appendChild(el('span', { class: 'mxf-dock__bed' }, [im]));\n        if (id === added) land(slot.firstChild, it.build);\n      });\n      setText(dockCount, n < 2 ? 'Pick one more to compare' : n + ' of ' + COMPARE_MAX + ' picked');\n      if (n < 2) setAttr(dockOpen, 'aria-disabled', 'true'); else if (dockOpen.hasAttribute('aria-disabled')) dockOpen.removeAttribute('aria-disabled');\n    }\n\n    function nudgeDock() {\n      if (reducedMotion() || typeof dockIn.animate !== 'function') return;\n      dockIn.animate([{ transform: 'translateX(0)' }, { transform: 'translateX(-6px)' }, { transform: 'translateX(5px)' },\n        { transform: 'translateX(-3px)' }, { transform: 'translateX(0)' }], { duration: 360, easing: 'ease-out' });\n    }\n\n    function toggleCompare(id) {\n      if (!byId[id]) return;\n      var ix = picked.indexOf(id), added = null;\n      if (ix !== -1) picked.splice(ix, 1);\n      else if (picked.length >= COMPARE_MAX) { nudgeDock(); setText(dockCount, 'Compare holds ' + COMPARE_MAX + '. Remove one first.'); return; }\n      else { picked.push(id); added = id; }\n      Object.keys(cards).forEach(function (cid) { syncCmp(cards[cid], cid); });\n      paintDock(added);\n      if (cmp.open) { if (picked.length < 2) closeCompare(); else paintCompare(); }\n    }\n\n    function cell(cls, kids) { return el('div', { class: 'mxf-cmp__cell ' + cls }, kids); }\n    function lab(text) { return el('div', { class: 'mxf-cmp__lab', text: text }); }\n\n    // One height scale for every column, so a 15 in. bed stands taller than a 10 in. one.\n    function heightDrawing(it, maxH) {\n      var ns = 'http://www.w3.org/2000/svg', svg = doc.createElementNS(ns, 'svg');\n      var W = 120, H = 70, base = 66, sc = 58 / maxH;\n      svg.setAttribute('viewBox', '0 0 ' + W + ' ' + H);\n      svg.setAttribute('class', 'mxf-cmp__bedsvg');\n      svg.setAttribute('aria-hidden', 'true');\n      function add(tag, at) { var n = doc.createElementNS(ns, tag); for (var k in at) n.setAttribute(k, String(at[k])); svg.appendChild(n); return n; }\n      add('line', { x1: 2, y1: base + .5, x2: W - 2, y2: base + .5, class: 'mxf-cmp__floor' });\n      if (it.height == null) return svg;\n      var h = it.height * sc, top = base - h;\n      add('rect', { x: 12, y: top, width: W - 24, height: h, rx: 5, class: 'mxf-cmp__bedbox is-' + (it.build || 'foam') });\n      var comfort = Math.min(h * 0.42, 5.5 * sc);\n      add('line', { x1: 13, y1: top + comfort, x2: W - 13, y2: top + comfort, class: 'mxf-cmp__layer' });\n      if (it.build === 'hybrid' || it.build === 'innerspring') {\n        for (var x = 20; x < W - 18; x += 7) add('line', { x1: x, y1: top + comfort + 3, x2: x, y2: base - 3, class: 'mxf-cmp__coil' });\n      }\n      return svg;\n    }\n\n    function stars(it) {\n      if (it.rating == null) return el('span', { class: 'mxf-cmp__muted', text: 'No reviews yet' });\n      var st = el('span', { class: 'mxf-stars', 'aria-hidden': 'true' });\n      st.style.setProperty('--pct', (Math.max(0, Math.min(5, it.rating)) / 5 * 100).toFixed(1) + '%');\n      return el('span', { class: 'mxf-card__rating' }, [st, el('span', { text: it.rating.toFixed(1) }), el('span', { class: 'mxf-card__reviews', text: ' (' + num(it.reviews) + ')' })]);\n    }\n\n    function summary(list) {\n      var size = state.size, out = [];\n      var priced = list.filter(function (it) { return priceOf(it, size); });\n      if (priced.length > 1) {\n        var low = priced.slice().sort(function (a, b) { return priceOf(a, size).p - priceOf(b, size).p; });\n        var gap = priceOf(low[low.length - 1], size).p - priceOf(low[0], size).p;\n        if (gap > 0) out.push('In ' + size + ', the ' + low[0].name + ' costs ' + money(gap) + ' less than the ' + low[low.length - 1].name + '.');\n      }\n      var felt = list.filter(function (it) { return it.firm != null; }).sort(function (a, b) { return a.firm - b.firm; });\n      if (felt.length > 1 && felt[0].firm !== felt[felt.length - 1].firm) {\n        var fz = function (it) { return (it.est ? 'about ' : '') + it.firm + '/10'; };\n        out.push('The ' + felt[felt.length - 1].name + ' is the firmest (' + fz(felt[felt.length - 1]) + '), the ' + felt[0].name + ' the plushest (' + fz(felt[0]) + ').');\n      }\n      var tall = list.filter(function (it) { return it.height != null; }).sort(function (a, b) { return b.height - a.height; });\n      if (tall.length > 1 && tall[0].height !== tall[tall.length - 1].height) out.push('The ' + tall[0].name + ' is the tallest at ' + heightText(tall[0].height));\n      var fl = list.filter(function (it) { return onFloor(it, ctx.storeKey); });\n      if (fl.length) out.push((fl.length === list.length ? (list.length === 2 ? 'Both are' : 'All three are') : fl.map(function (it) { return 'the ' + it.name; }).join(' and ') + (fl.length > 1 ? ' are' : ' is')) + ' ' + floorPhrase().charAt(0).toLowerCase() + floorPhrase().slice(1) + '.');\n      return out.join(' ').replace(/^the /, 'The ');\n    }\n\n    function paintCompare() {\n      var list = picked.map(function (id) { return byId[id]; }).filter(Boolean);\n      cmpBody.textContent = '';\n      setVar(cmpBody, '--cols', String(list.length));\n      setText(cmpSummary, summary(list));\n      var maxH = 16;\n      list.forEach(function (it) { if (it.height != null && it.height > maxH) maxH = Math.ceil(it.height); });\n      var rows = [\n        ['', 'mxf-cmp__cell--bed', function (it) {\n          var im = it.img ? el('img', { src: thumbOf(it, 600), alt: it.title, loading: 'lazy', width: '600', height: '450' }) : null;\n          return [el('a', { class: 'mxf-cmp__photo', href: it.url, tabindex: '-1' }, [im]),\n            el('span', { class: 'mxf-card__brand', text: it.brand }),\n            el('a', { class: 'mxf-cmp__name', href: it.url, text: it.name }),\n            el('button', { type: 'button', class: 'mxf-link mxf-link--sm', 'data-act': 'cmp-remove', 'data-v': it.id, text: 'Remove' })];\n        }],\n        ['Price, ' + state.size, 'mxf-cmp__cell--price', function (it) {\n          var pr = priceOf(it, state.size);\n          if (!pr) return [el('span', { class: 'mxf-cmp__muted', text: 'Not made in ' + state.size })];\n          var c = typeof pr.c === 'number' && pr.c > pr.p ? pr.c : null;\n          return [el('span', { class: 'mxf-cmp__big', text: money(pr.p) }), c ? el('s', { class: 'mxf-card__was' }, [el('span', { class: 'mxf-vh', text: 'Compare at ' }), money(c)]) : null];\n        }],\n        ['Feel', 'mxf-cmp__cell--feel', function (it) {\n          if (it.firm == null) return [el('span', { class: 'mxf-cmp__muted', text: 'Not listed' })];\n          var m = el('span', { class: 'mxf-meter', 'aria-hidden': 'true' });\n          for (var t = 1; t <= 10; t++) m.appendChild(el('i', { class: it.firm >= t ? 'is-on' : it.firm > t - 1 ? 'is-half' : null }));\n          return [m, el('span', { text: (it.est ? 'About ' : '') + it.firm + '/10' + (it.feel ? ', ' + it.feel.toLowerCase() : '') })];\n        }],\n        ['Height', 'mxf-cmp__cell--height', function (it) {\n          return [heightDrawing(it, maxH), el('span', { text: it.height == null ? 'Not listed' : heightText(it.height) })];\n        }],\n        ['Build', 'mxf-cmp__cell--build', function (it) {\n          var b = { foam: 'All foam', hybrid: 'Hybrid, coils under foam', innerspring: 'Innerspring' }[it.build] || 'Not listed';\n          return [el('span', { text: b })];\n        }],\n        ['Showroom', 'mxf-cmp__cell--floor', function (it) {\n          var fl = onFloor(it, ctx.storeKey);\n          return [el('span', { class: 'mxf-card__status' + (fl ? ' is-floor' : '') }, [el('span', { class: 'mxf-card__statusdot', 'aria-hidden': 'true' }),\n            el('span', { text: fl ? floorPhrase() : it.online ? 'Online only' : 'Not on the floor' + (ctx.storeLabel ? ' at ' + ctx.storeLabel : '') })])];\n        }],\n        ['Reviews', 'mxf-cmp__cell--rating', function (it) { return [stars(it)]; }],\n        ['', 'mxf-cmp__cell--go', function (it) {\n          return [el('a', { class: 'mxf-btn mxf-btn--sm', href: it.url }, [el('span', { class: 'mxf-btn__text', text: 'See this bed' }), el('span', { class: 'mxf-btn__arrow' }, [icon(ICON_ARROW)])])];\n        }]\n      ];\n      rows.forEach(function (r) {\n        cmpBody.appendChild(lab(r[0]));\n        list.forEach(function (it) { cmpBody.appendChild(cell(r[1], r[2](it))); });\n      });\n    }\n\n    function openCompare() {\n      if (picked.length < 2 || typeof cmp.showModal !== 'function') return;\n      paintCompare();\n      if (!cmp.open) cmp.showModal();\n      doc.documentElement.classList.add('mxf-lock');\n      win.requestAnimationFrame(function () { if (alive) cmp.classList.add('is-open'); });\n    }\n\n    function closeCompare(now) {\n      if (!cmp.open) return;\n      cmp.classList.remove('is-open');\n      doc.documentElement.classList.remove('mxf-lock');\n      clearTimeout(timers.cmp);\n      if (now || reducedMotion()) cmp.close();\n      else timers.cmp = setTimeout(function () { if (cmp.open) cmp.close(); }, 260);\n      try { dockOpen.focus({ preventScroll: true }); } catch (e) { /* nicety */ }\n    }\n\n    /* ---------- the bed surface under the feel scale ---------- */\n\n    var bed = { n: 0, y: null, v: null, w: 0, h: 0, lx: 0, lw: 0, dpr: 1, g: null, raf: 0, poke: null, still: 0, gate: 0 };\n    var PAL = {\n      light: { top: '#f6f2ec', comfort: '#ece5dc', core: '#e0d7cb', line: 'rgba(27,28,29,0.18)', stitch: 'rgba(27,28,29,0.26)', red: '#bc000c', shade: 'rgba(27,28,29,0.16)', coil: 'rgba(27,28,29,0.14)' },\n      dark: { top: '#3a3631', comfort: '#302c28', core: '#272421', line: 'rgba(236,231,223,0.18)', stitch: 'rgba(236,231,223,0.30)', red: '#ff5a51', shade: 'rgba(0,0,0,0.42)', coil: 'rgba(236,231,223,0.12)' }\n    };\n    var BED_TOP = 6, BED_Q1 = 11, BED_Q2 = 16, BED_DEPTH = 27;\n    function palette() { return doc.documentElement.getAttribute('data-mo-scheme') === 'dark' ? PAL.dark : PAL.light; }\n    // Share of the drawn comfort depth a bed of this feel gives under a person: plush 1 all of it, firm 10 a little.\n    function giveOf(f) { var u = (FEEL_MAX - f) / (FEEL_MAX - FEEL_MIN); return 0.1 + 0.9 * Math.pow(u, 1.15); }\n    // The build picked in the filters sets how the surface moves back: memory foam slowly, coils with a bounce.\n    function springOf() {\n      if (state.build === 'foam') return { k: 0.028, c: 0.72, nb: 0.2 };\n      if (state.build === 'innerspring') return { k: 0.2, c: 0.18, nb: 0.28 };\n      if (state.build === 'hybrid') return { k: 0.15, c: 0.26, nb: 0.26 };\n      return { k: 0.09, c: 0.38, nb: 0.24 };\n    }\n    function xOfFeel(f) { return bed.lx + (f - FEEL_MIN) / (FEEL_MAX - FEEL_MIN) * bed.lw; }\n    function feelAtX(x) { return FEEL_MIN + Math.min(1, Math.max(0, (x - bed.lx) / (bed.lw || 1))) * (FEEL_MAX - FEEL_MIN); }\n    function presses() {\n      if (bed.gate && Date.now() < bed.gate) return [];\n      var list = [state.feel[0], state.feel[1]].map(function (f) {\n        var g = giveOf(f);\n        return { x: xOfFeel(f), d: BED_DEPTH * g, s: bed.lw * (0.03 + 0.045 * g) };\n      });\n      if (bed.poke) { var gp = giveOf(feelAtX(bed.poke)); list.push({ x: bed.poke, d: BED_DEPTH * 0.55 * gp, s: bed.lw * (0.02 + 0.03 * gp) }); }\n      return list;\n    }\n    function targetAt(x, list) {\n      var best = 0;\n      for (var i = 0; i < list.length; i++) { var dx = x - list[i].x, v = list[i].d * Math.exp(-(dx * dx) / (2 * list[i].s * list[i].s)); if (v > best) best = v; }\n      return best;\n    }\n    function depthAt(x) {\n      if (!bed.y || !bed.n) return 0;\n      var f = Math.min(bed.n - 1, Math.max(0, x / bed.w * (bed.n - 1))), i = Math.floor(f), t = f - i;\n      return bed.y[i] * (1 - t) + bed.y[Math.min(bed.n - 1, i + 1)] * t;\n    }\n    function layoutBed() {\n      var w = feelRail.clientWidth, h = surfWrap.clientHeight;\n      if (!w || !h) return false;\n      var dpr = Math.min(2, win.devicePixelRatio || 1);\n      bed.lx = feelLane.offsetLeft; bed.lw = feelLane.clientWidth;\n      if (w === bed.w && h === bed.h && dpr === bed.dpr && bed.g) { drawBed(); return true; }\n      bed.w = w; bed.h = h; bed.dpr = dpr;\n      surf.width = Math.round(w * dpr); surf.height = Math.round(h * dpr);\n      surf.style.width = w + 'px'; surf.style.height = h + 'px';\n      bed.g = surf.getContext('2d');\n      bed.n = Math.max(24, Math.ceil(w / 4) + 1);\n      bed.y = new Float32Array(bed.n); bed.v = new Float32Array(bed.n);\n      settleBed();\n      return true;\n    }\n    function settleBed() {\n      if (!bed.n) return;\n      var list = presses();\n      for (var i = 0; i < bed.n; i++) { bed.y[i] = targetAt(i / (bed.n - 1) * bed.w, list); bed.v[i] = 0; }\n      drawBed();\n    }\n    function kickBed() {\n      if (!bed.g) return;\n      if (reducedMotion()) { settleBed(); return; }\n      bed.still = 0;\n      if (!bed.raf) bed.raf = win.requestAnimationFrame(stepBed);\n    }\n    function stepBed() {\n      bed.raf = 0;\n      if (!alive || !bed.g) return;\n      var r = feelRail.getBoundingClientRect();\n      if (r.bottom < -40 || r.top > (win.innerHeight || 800) + 40) { settleBed(); return; }\n      var sp = springOf(), list = presses(), moving = 0, n = bed.n, y = bed.y, v = bed.v;\n      for (var i = 0; i < n; i++) {\n        var T = targetAt(i / (n - 1) * bed.w, list);\n        var nb = ((i > 0 ? y[i - 1] : y[i]) + (i < n - 1 ? y[i + 1] : y[i])) * 0.5;\n        v[i] = v[i] * (1 - sp.c) + sp.k * (T - y[i]) + sp.nb * (nb - y[i]);\n        y[i] += v[i];\n        if (y[i] < -6) y[i] = -6;\n        var m = Math.abs(v[i]) + Math.abs(T - y[i]);\n        if (m > moving) moving = m;\n      }\n      drawBed();\n      if (moving < 0.03) { if (++bed.still > 6) { settleBed(); return; } } else bed.still = 0;\n      bed.raf = win.requestAnimationFrame(stepBed);\n    }\n    function drawBed() {\n      var g = bed.g;\n      if (!g) return;\n      var P = palette(), W = bed.w, H = bed.h, n = bed.n, dpr = bed.dpr, bot = H - 3, R = 11;\n      g.setTransform(dpr, 0, 0, dpr, 0, 0);\n      g.clearRect(0, 0, W, H);\n      function endDrop(x) { var e = Math.min(x - 1, W - 1 - x); if (e >= R) return 0; e = Math.max(0, e); return R - Math.sqrt(R * R - (R - e) * (R - e)); }\n      function xs(i) { return 1 + i / (n - 1) * (W - 2); }\n      function curve(fn) { var pts = []; for (var i = 0; i < n; i++) { var x = xs(i); pts.push([x, fn(i, x)]); } return pts; }\n      var topC = curve(function (i, x) { return BED_TOP + bed.y[i] + endDrop(x); });\n      var q1C = curve(function (i, x) { return BED_TOP + BED_Q1 + bed.y[i] * 0.86 + endDrop(x) * 0.8; });\n      var q2C = curve(function (i, x) { return BED_TOP + BED_Q1 + BED_Q2 + bed.y[i] * 0.28 + endDrop(x) * 0.5; });\n      function band(upper, lower, fill) {\n        g.beginPath();\n        g.moveTo(upper[0][0], upper[0][1]);\n        for (var i = 1; i < upper.length; i++) g.lineTo(upper[i][0], upper[i][1]);\n        if (lower) { for (var j = lower.length - 1; j >= 0; j--) g.lineTo(lower[j][0], lower[j][1]); }\n        else { g.lineTo(W - 1, bot - R); g.quadraticCurveTo(W - 1, bot, W - 1 - R, bot); g.lineTo(1 + R, bot); g.quadraticCurveTo(1, bot, 1, bot - R); }\n        g.closePath();\n        g.fillStyle = fill;\n        g.fill();\n      }\n      band(topC, null, P.core);\n      band(topC, q2C, P.comfort);\n      band(topC, q1C, P.top);\n      if (state.build === 'hybrid' || state.build === 'innerspring') {\n        g.strokeStyle = P.coil; g.lineWidth = 1;\n        g.beginPath();\n        for (var cx = 14; cx < W - 12; cx += 8) {\n          var k = Math.round((cx - 1) / (W - 2) * (n - 1)), top = q2C[k][1] + 3;\n          if (bot - 3 - top < 4) continue;\n          g.moveTo(cx + .5, top); g.lineTo(cx + .5, bot - 3);\n        }\n        g.stroke();\n      }\n      // quilted top: a stitch line riding the surface and tufts that sink with it\n      g.strokeStyle = P.stitch; g.lineWidth = 1; g.setLineDash([2.5, 3.5]);\n      g.beginPath();\n      for (var s2 = 0; s2 < n; s2++) { var pt = topC[s2]; if (pt[0] < R || pt[0] > W - R) continue; g.lineTo(pt[0], pt[1] + 3.5); }\n      g.stroke();\n      g.setLineDash([]);\n      g.fillStyle = P.stitch;\n      for (var tx = R + 14; tx < W - R - 6; tx += 26) {\n        var ti = Math.round((tx - 1) / (W - 2) * (n - 1)), ty = (topC[ti][1] + q1C[ti][1]) / 2 + 1;\n        g.beginPath(); g.arc(tx, ty, 1.3, 0, Math.PI * 2); g.fill();\n      }\n      // the outline\n      g.strokeStyle = P.line; g.lineWidth = 1;\n      g.beginPath();\n      g.moveTo(topC[0][0], topC[0][1]);\n      for (var o = 1; o < n; o++) g.lineTo(topC[o][0], topC[o][1]);\n      g.lineTo(W - 1, bot - R); g.quadraticCurveTo(W - 1, bot, W - 1 - R, bot); g.lineTo(1 + R, bot); g.quadraticCurveTo(1, bot, 1, bot - R); g.closePath();\n      g.stroke();\n      // the chosen range: the surface between the two handles in red\n      var xa = xOfFeel(state.feel[0]), xb = xOfFeel(state.feel[1]);\n      g.strokeStyle = P.red; g.lineWidth = 2; g.lineCap = 'round';\n      g.beginPath();\n      var started = false;\n      for (var q = 0; q < n; q++) { var p2 = topC[q]; if (p2[0] < xa - 1 || p2[0] > xb + 1) continue; if (!started) { g.moveTo(p2[0], p2[1]); started = true; } else g.lineTo(p2[0], p2[1]); }\n      if (started && xb - xa < 2) g.lineTo(xa + 0.5, depthAt(xa) + BED_TOP);\n      g.stroke();\n      // soft shade where each handle presses\n      [xa, xb].forEach(function (x) {\n        var d = depthAt(x);\n        if (d < 1.5) return;\n        var yy = BED_TOP + d + 2, rx = 18 + d * 1.6;\n        var gr = g.createRadialGradient(x, yy, 0, x, yy, rx);\n        gr.addColorStop(0, P.shade); gr.addColorStop(1, 'rgba(0,0,0,0)');\n        g.save(); g.translate(x, yy); g.scale(1, 0.28); g.translate(-x, -yy);\n        g.fillStyle = gr; g.beginPath(); g.arc(x, yy, rx, 0, Math.PI * 2); g.fill();\n        g.restore();\n      });\n      // the handles ride the surface\n      setVar(laneLo, '--dy', depthAt(xa).toFixed(1) + 'px');\n      setVar(laneHi, '--dy', depthAt(xb).toFixed(1) + 'px');\n    }\n    on(feelRail, 'pointermove', function (e) {\n      if (e.pointerType === 'touch' || feelRail.classList.contains('is-drag')) { if (bed.poke != null) { bed.poke = null; kickBed(); } return; }\n      var r = feelRail.getBoundingClientRect();\n      bed.poke = e.clientX - r.left;\n      kickBed();\n    });\n    on(feelRail, 'pointerleave', function () { if (bed.poke != null) { bed.poke = null; kickBed(); } });\n    if (win.MutationObserver) {\n      try {\n        var mo = new win.MutationObserver(function () { if (alive) drawBed(); });\n        mo.observe(doc.documentElement, { attributes: true, attributeFilter: ['data-mo-scheme'] });\n        listeners.push(function () { mo.disconnect(); });\n      } catch (e) { /* the drawing keeps its first palette */ }\n    }\n\n    /* ---------- state changes ---------- */\n\n    function writeUrl() {\n      if (!urlOn || !alive) return;\n      try {\n        var next = writeQuery(win.location.search, state, defaults);\n        if (next !== win.location.search) win.history.replaceState(win.history.state, '', win.location.pathname + next + win.location.hash);\n      } catch (e) { /* history can be rate limited or blocked: the view still works */ }\n    }\n\n    // One event for the host (analytics, a sticky summary): fired with the URL write, 220 ms after the last change.\n    function announce() {\n      writeUrl();\n      if (!alive) return;\n      try { wrap.dispatchEvent(new win.CustomEvent('momx:finder-change', { bubbles: true, detail: api.getState() })); }\n      catch (e) { /* no CustomEvent constructor: nothing to tell */ }\n    }\n\n    function update(o) {\n      o = o || {};\n      compute();\n      paintControls();\n      paintSwarm();\n      paintCount();\n      paintGrid(o.animate !== false);\n      kickBed();\n      if (cmp.open) paintCompare();\n      clearTimeout(timers.url);\n      timers.url = setTimeout(announce, 220);\n    }\n\n    function setFilter(fn) { fn(state); state.shown = PAGE; update(); }\n\n    // Reset and the empty-state button remove themselves. Keyboard focus then moves to the first result.\n    function keepFocus(wasFocused) {\n      if (!wasFocused || wrap.contains(doc.activeElement) && doc.activeElement.offsetParent !== null) return;\n      var first = view.results[0] && cards[view.results[0].id];\n      try { (first ? first.link : sizeBtns[SIZES.indexOf(state.size)]).focus({ preventScroll: true }); } catch (e) { /* nicety */ }\n    }\n\n    function setFeel(i, v) {\n      v = Math.min(FEEL_MAX, Math.max(FEEL_MIN, Math.round(v)));\n      var lo = state.feel[0], hi = state.feel[1];\n      if (i === 0) lo = Math.min(v, hi); else hi = Math.max(v, lo);\n      if (lastThumb !== i) { lastThumb = i; setClass(laneLo, 'is-top', i === 0); setClass(laneHi, 'is-top', i !== 0); }\n      if (lo === state.feel[0] && hi === state.feel[1]) { paintControls(); return; }\n      setFilter(function (s) { s.feel = [lo, hi]; });\n    }\n\n    var lastPThumb = 1;\n    function setPrice(i, v) {\n      if (!dom) return;\n      v = Math.min(dom.hi, Math.max(dom.lo, Math.round(v / 100) * 100));\n      var lo = state.min, hi = state.max;\n      if (i === 0) { v = Math.min(v, hi == null ? dom.hi : hi); lo = v <= dom.lo ? null : v; }\n      else { v = Math.max(v, lo == null ? dom.lo : lo); hi = v >= dom.hi ? null : v; }\n      if (lastPThumb !== i) { lastPThumb = i; setClass(laneP0, 'is-top', i === 0); setClass(laneB, 'is-top', i !== 0); }\n      if (lo === state.min && hi === state.max) { paintControls(); return; }\n      setFilter(function (s) { s.min = lo; s.max = hi; });\n    }\n\n    function setStore(key, label) {\n      key = String(key || '').trim().toLowerCase();\n      if (!STORE_LABELS[key]) key = '';\n      var nextLabel = key ? String(label || STORE_LABELS[key]) : '';\n      if (key === ctx.storeKey && nextLabel === ctx.storeLabel) return;\n      ctx.storeKey = key;\n      ctx.storeLabel = nextLabel;\n      paintStore();\n      layoutSwarm();\n      Object.keys(cards).forEach(function (id) { syncCard(cards[id], byId[id]); });\n      update();\n    }\n\n    /* ---------- sliders ---------- */\n\n    function slider(rail, lane, thumbs, o) {\n      var drag = null;\n      var knobs = thumbs.map(function (t) { return t.knob; });\n      function tAt(e) {\n        var r = lane.getBoundingClientRect();\n        return r.width ? Math.min(1, Math.max(0, (e.clientX - r.left) / r.width)) : 0;\n      }\n      function hold(i) { try { thumbs[i].input.focus({ preventScroll: true }); } catch (err) { /* nicety */ } }\n      function end(e) {\n        if (!drag || (e && e.pointerId !== drag.id)) return;\n        drag = null;\n        rail.classList.remove('is-drag');\n      }\n      on(rail, 'pointerdown', function (e) {\n        if (e.pointerType === 'mouse' && e.button !== 0) return;\n        var t = tAt(e), hit = e.target.closest ? e.target.closest('.mxf-thumb') : null, idx = knobs.indexOf(hit);\n        if (thumbs.length === 2) {\n          var t0 = o.toT(o.get(0)), t1 = o.toT(o.get(1));\n          if (t0 === t1) idx = -1; // stacked handles: the first move decides which one travels\n          else if (idx === -1) idx = Math.abs(t - t0) <= Math.abs(t - t1) ? 0 : 1;\n        } else if (idx === -1) idx = 0;\n        drag = { id: e.pointerId, idx: idx, t: t };\n        try { rail.setPointerCapture(e.pointerId); } catch (err) { /* older engines */ }\n        rail.classList.add('is-drag');\n        if (idx >= 0) {\n          if (!hit) o.set(idx, o.fromT(t));\n          hold(idx);\n        }\n        e.preventDefault();\n      });\n      on(rail, 'pointermove', function (e) {\n        if (!drag || e.pointerId !== drag.id) return;\n        var t = tAt(e);\n        if (drag.idx < 0) {\n          if (Math.abs(t - drag.t) < 0.012) return;\n          drag.idx = t < drag.t ? 0 : 1;\n          hold(drag.idx);\n        }\n        o.set(drag.idx, o.fromT(t));\n      });\n      on(rail, 'pointerup', end);\n      on(rail, 'pointercancel', end);\n      on(rail, 'lostpointercapture', end);\n      thumbs.forEach(function (t, i) {\n        // arrows, Home and End are the input's own; Page keys are given the brief's bigger step\n        var take = function () { if (+t.input.value !== o.get(i)) o.set(i, +t.input.value); };\n        on(t.input, 'input', take);\n        on(t.input, 'change', take);\n        on(t.input, 'keydown', function (e) {\n          if (e.key !== 'PageUp' && e.key !== 'PageDown') return;\n          e.preventDefault();\n          o.set(i, o.get(i) + (e.key === 'PageUp' ? o.page : -o.page));\n        });\n      });\n    }\n\n    slider(feelRail, feelLane, [thumbLo, thumbHi], {\n      page: 3,\n      get: function (i) { return state.feel[i]; },\n      set: setFeel,\n      toT: function (v) { return (v - FEEL_MIN) / (FEEL_MAX - FEEL_MIN); },\n      fromT: function (t) { return FEEL_MIN + t * (FEEL_MAX - FEEL_MIN); }\n    });\n\n    slider(budgetRail, budgetLane, [thumbP0, thumbB], {\n      page: 500,\n      get: function (i) { return dom ? (i === 0 ? (state.min == null ? dom.lo : state.min) : (state.max == null ? dom.hi : state.max)) : 0; },\n      set: function (i, v) { setPrice(i, v); },\n      toT: function (v) { return dom ? budgetToT(v, dom) : 0; },\n      fromT: function (t) { return dom ? budgetFromT(t, dom) : 0; }\n    });\n\n    // The bars dip under the pointer with a cosine falloff, each on its own spring, and a bubble reads the\n    // price at that spot. Ported from 21st.dev Equalizer Bar Slider (24916): 140 px reach, damping 35, stiffness 300.\n    var dip = { px: null, d: [], v: [], raf: 0, last: [] };\n    for (var di = 0; di < BINS; di++) { dip.d.push(0); dip.v.push(0); dip.last.push(''); }\n    var hintVal = null, hintFlow = null;\n    function dipStep() {\n      dip.raf = 0;\n      if (!alive) return;\n      var r = budgetLane.getBoundingClientRect(), moving = 0, reach = Math.min(140, r.width * 0.32);\n      for (var k = 0; k < BINS; k++) {\n        var bx = (k + 0.5) / BINS * r.width, goal = 0;\n        if (dip.px != null) { var dist = Math.abs(dip.px - bx); if (dist < reach) goal = (Math.cos(dist / reach * Math.PI) + 1) / 2; }\n        // spring with stiffness 300 and damping 35 (unit mass, a 1/60 s step): close to critical, no wobble\n        var a = 300 * (goal - dip.d[k]) - 35 * dip.v[k], dt = 1 / 60;\n        dip.v[k] += a * dt;\n        dip.d[k] += dip.v[k] * dt;\n        var m = Math.abs(goal - dip.d[k]) + Math.abs(dip.v[k]) * dt;\n        if (m > moving) moving = m;\n        var out = dip.d[k].toFixed(3);\n        if (dip.last[k] !== out) { dip.last[k] = out; barEls[k].style.setProperty('--dip', out); }\n      }\n      if (moving > 0.002) dip.raf = win.requestAnimationFrame(dipStep);\n    }\n    function dipKick() { if (!dip.raf && !reducedMotion()) dip.raf = win.requestAnimationFrame(dipStep); }\n    function showHint(t) {\n      if (!dom) return;\n      var v = budgetFromT(t, dom), count = 0, k = Math.min(BINS - 1, Math.floor(t * BINS));\n      var hist = histogram(select(items, state, ctx, 'max'), state.size, dom, BINS);\n      count = hist[k] || 0;\n      setVar(hint, '--t', t.toFixed(4));\n      setText(hintSub, count ? count + (count === 1 ? ' bed' : ' beds') + ' here' : 'none here');\n      if (hintVal !== v) {\n        hintVal = v;\n        if (!hintFlow && win.customElements && win.customElements.get('number-flow') && !reducedMotion()) {\n          try {\n            hintFlow = doc.createElement('number-flow');\n            hintFlow.format = { style: 'currency', currency: 'USD', maximumFractionDigits: 0 };\n            hintFlow.transformTiming = { duration: 380, easing: EASE };\n            hintFlow.spinTiming = { duration: 380, easing: EASE };\n            hintNum.textContent = '';\n            hintNum.appendChild(hintFlow);\n          } catch (e) { hintFlow = null; }\n        }\n        if (hintFlow) hintFlow.update(v); else setText(hintNum, money(v));\n      }\n      setClass(hint, 'is-on', true);\n    }\n    on(budgetRail, 'pointermove', function (e) {\n      if (e.pointerType === 'touch' && !budgetRail.classList.contains('is-drag')) return;\n      var r = budgetLane.getBoundingClientRect();\n      if (!r.width) return;\n      var t = Math.min(1, Math.max(0, (e.clientX - r.left) / r.width));\n      dip.px = t * r.width;\n      dipKick();\n      showHint(t);\n    });\n    on(budgetRail, 'pointerleave', function () { dip.px = null; dipKick(); setClass(hint, 'is-on', false); });\n    on(budgetRail, 'pointerup', function (e) { if (e.pointerType === 'touch') { dip.px = null; dipKick(); setClass(hint, 'is-on', false); } });\n\n    var sink = { px: null, y: [], v: [], raf: 0, last: [], em: sinkEls.length ? sinkEls[0].parentNode : null };\n    sinkEls.forEach(function () { sink.y.push(0); sink.v.push(0); sink.last.push(''); });\n    function sinkStep() {\n      sink.raf = 0;\n      if (!alive || !sink.em) return;\n      var moving = 0, size = parseFloat(win.getComputedStyle(sink.em).fontSize) || 60;\n      sinkEls.forEach(function (sp, k) {\n        var goal = 0;\n        if (sink.px != null) {\n          var r = sp.getBoundingClientRect(), dx = Math.abs(sink.px - (r.left + r.width / 2)), reach = size * 0.9;\n          if (dx < reach) goal = 0.13 * (Math.cos(dx / reach * Math.PI) + 1) / 2;\n        }\n        // memory foam: quick to give, slow to come back\n        var k2 = goal > sink.y[k] ? 0.22 : 0.035;\n        sink.v[k] = sink.v[k] * 0.6 + k2 * (goal - sink.y[k]);\n        sink.y[k] += sink.v[k];\n        var m = Math.abs(goal - sink.y[k]);\n        if (m > moving) moving = m;\n        var out = (sink.y[k] * size).toFixed(1);\n        if (sink.last[k] !== out) { sink.last[k] = out; sp.style.transform = out === '0.0' ? '' : 'translateY(' + out + 'px) scaleY(' + (1 - sink.y[k] * 0.6).toFixed(3) + ')'; }\n      });\n      if (moving > 0.0008) sink.raf = win.requestAnimationFrame(sinkStep);\n    }\n    if (sink.em) {\n      on(sink.em, 'pointermove', function (e) { if (e.pointerType === 'touch' || reducedMotion()) return; sink.px = e.clientX; if (!sink.raf) sink.raf = win.requestAnimationFrame(sinkStep); });\n      on(sink.em, 'pointerleave', function () { sink.px = null; if (!sink.raf) sink.raf = win.requestAnimationFrame(sinkStep); });\n    }\n\n    /* ---------- phone sheet and layout mode ---------- */\n\n    function openSheet() {\n      if (!canSheet || sheet.open) return;\n      sheet.showModal();\n      doc.documentElement.classList.add('mxf-lock');\n      win.requestAnimationFrame(function () { if (alive) sheet.classList.add('is-open'); });\n    }\n\n    function closeSheet(now) {\n      if (!sheet.open) return;\n      sheet.classList.remove('is-open');\n      doc.documentElement.classList.remove('mxf-lock');\n      clearTimeout(timers.sheet);\n      if (now || reducedMotion()) sheet.close();\n      else timers.sheet = setTimeout(function () { if (sheet.open) sheet.close(); }, 260);\n    }\n\n    function applyMode() {\n      var mq = win.matchMedia ? win.matchMedia('(max-width: 719.98px)').matches : false;\n      var next = mq && canSheet;\n      if (next === compact && barA.children.length + quickScroll.children.length) return;\n      compact = next;\n      if (compact) {\n        if (bfOn) quickScroll.appendChild(bfGroup);\n        quickScroll.appendChild(buildGroup);\n        sheetBody.appendChild(brandGroup);\n        sheetBody.appendChild(budgetGroup);\n      } else {\n        closeSheet(true);\n        barA.appendChild(buildGroup);\n        barA.appendChild(budgetGroup);\n        barB.appendChild(brandGroup);\n        // Black Friday chip sits beside the result count on wide screens: no extra filter row above the grid\n        if (bfOn) { var bfLeft = result.querySelector('.mxf-result__left'); if (bfLeft) bfLeft.appendChild(bfGroup); }\n      }\n      setAttr(wrap, 'data-mode', compact ? 'compact' : 'wide');\n      paintFades();\n    }\n\n    function paintFades() {\n      var sl = quickScroll.scrollLeft, maxS = quickScroll.scrollWidth - quickScroll.clientWidth;\n      setClass(quickMask, 'can-left', sl > 2);\n      setClass(quickMask, 'can-right', sl < maxS - 2);\n    }\n\n    /* ---------- reveal (scroll math: intersection observers never fire on this theme) ---------- */\n\n    // First view: the two handles drop onto the bed and it gives under them the way the build moves.\n    function landHandles() {\n      if (reducedMotion() || !bed.g) return;\n      bed.gate = Date.now() + 420;\n      for (var i = 0; i < bed.n; i++) { bed.y[i] = 0; bed.v[i] = 0; }\n      drawBed();\n      setClass(feelRail, 'is-lifted', true);\n      void feelRail.offsetWidth;\n      win.requestAnimationFrame(function () { setClass(feelRail, 'is-lifted', false); });\n      timers.land = setTimeout(function () { bed.gate = 0; kickBed(); }, 430);\n    }\n\n    function reveal() {\n      if (revealed) return;\n      revealed = true;\n      wrap.classList.remove('mxf-prereveal');\n      landHandles();\n      if (reducedMotion() || typeof wrap.animate !== 'function') return;\n      dotList.forEach(function (d) {\n        var p = swarmGeo && swarmGeo.pos[d.getAttribute('data-id')];\n        if (!p) return;\n        var rest = d.disabled ? 0.15 : 1;\n        d.animate([{ opacity: 0, transform: 'translateY(-10px) scale(.4)' }, { opacity: rest, transform: 'translateY(0) scale(1)' }],\n          { duration: 520, easing: EASE, delay: 60 + p.t * 420 + p.row * 22, fill: 'backwards' });\n      });\n    }\n\n    function checkReveal() {\n      if (revealed || !alive) return;\n      var r = wrap.getBoundingClientRect();\n      if (r.width && r.top < win.innerHeight * 0.88 && r.bottom > 0) {\n        if (!swarmGeo) layoutSwarm();\n        reveal();\n      }\n    }\n\n    /* ---------- events ---------- */\n\n    on(wrap, 'click', function (e) {\n      var t = e.target.closest ? e.target.closest('[data-act]') : null;\n      if (!t || !wrap.contains(t)) {\n        if (e.target === sheet) closeSheet(); // tap on the backdrop\n        if (e.target === cmp) closeCompare();\n        return;\n      }\n      var act = t.getAttribute('data-act'), v = t.getAttribute('data-v');\n      if (t.getAttribute('aria-disabled') === 'true') return;\n      switch (act) {\n        case 'size':\n          if (v === state.size) return;\n          state.size = v;\n          dom = budgetDomain(items, state.size);\n          state.max = fitBudget(state.max, dom);\n          state.min = fitMin(state.min, dom);\n          update();\n          break;\n        case 'preset':\n          var p = PRESETS[+v], same = state.feel[0] === p.lo && state.feel[1] === p.hi;\n          setFilter(function (s) { s.feel = same ? [FEEL_MIN, FEEL_MAX] : [p.lo, p.hi]; });\n          break;\n        case 'build':\n          setFilter(function (s) { s.build = s.build === v ? 'all' : v; });\n          break;\n        case 'brand':\n          setFilter(function (s) {\n            var ix = s.brands.indexOf(v);\n            if (ix === -1) s.brands = s.brands.concat(v).sort(function (a, b) { return brandSlugs.indexOf(a) - brandSlugs.indexOf(b); });\n            else s.brands = s.brands.filter(function (b) { return b !== v; });\n          });\n          break;\n        case 'floor':\n          setFilter(function (s) { s.floor = !s.floor; });\n          break;\n        case 'bf':\n          setFilter(function (s) { s.bf = !s.bf; });\n          break;\n        case 'reset':\n          var hadFocus = doc.activeElement === t;\n          setFilter(function (s) { RELAX.forEach(function (r) { r.clear(s); }); });\n          keepFocus(hadFocus);\n          break;\n        case 'relax':\n          var held = doc.activeElement === t;\n          setFilter(function (s) { RELAX.forEach(function (r) { if (r.key === v) r.clear(s); }); });\n          keepFocus(held);\n          break;\n        case 'sort':\n          if (v === state.sort) return;\n          state.sort = v;\n          update();\n          break;\n        case 'more':\n          var first = state.shown;\n          state.shown += PAGE;\n          update();\n          var nextCard = view.results[first] && cards[view.results[first].id];\n          if (nextCard) { try { nextCard.link.focus({ preventScroll: true }); } catch (err) { /* nicety */ } }\n          break;\n        case 'dot':\n          if (!t.disabled) { setRoving(t); goToCard(t.getAttribute('data-id')); }\n          break;\n        case 'sheet-open':\n          openSheet();\n          break;\n        case 'cmp':\n        case 'cmp-remove':\n          toggleCompare(v);\n          break;\n        case 'cmp-open':\n          if (picked.length < 2) { nudgeDock(); return; }\n          openCompare();\n          break;\n        case 'cmp-close':\n          closeCompare();\n          break;\n        case 'cmp-clear':\n          picked = [];\n          Object.keys(cards).forEach(function (cid) { syncCmp(cards[cid], cid); });\n          paintDock(null);\n          closeCompare(true);\n          break;\n        case 'sheet-close':\n          closeSheet();\n          break;\n        case 'quiz':\n          var bubble = doc.querySelector('.shop-ai-chat-bubble');\n          if (bubble) {\n            e.preventDefault();\n            bubble.click();\n            setTimeout(function () {\n              var chip = doc.querySelector('.shop-ai-chip-hero');\n              if (chip) chip.click();\n            }, 80);\n          }\n          break;\n      }\n    });\n\n    on(sortSelect, 'change', function () {\n      if (sortSelect.value === state.sort) return;\n      state.sort = sortSelect.value;\n      update();\n    });\n\n    on(sheet, 'cancel', function (e) { e.preventDefault(); closeSheet(); });\n    on(cmp, 'cancel', function (e) { e.preventDefault(); closeCompare(); });\n    on(cmp, 'close', function () { cmp.classList.remove('is-open'); doc.documentElement.classList.remove('mxf-lock'); });\n    on(sheet, 'close', function () { sheet.classList.remove('is-open'); doc.documentElement.classList.remove('mxf-lock'); });\n\n    // Swarm: hover and focus show the tooltip, arrow keys walk the lit dots by geometry\n    on(swarm, 'pointerover', function (e) {\n      if (e.pointerType === 'touch') return;\n      var d = e.target.closest ? e.target.closest('.mxf-dot') : null;\n      clearTimeout(timers.tip);\n      if (d && !d.disabled) showTip(d.getAttribute('data-id'));\n      else if (!d) timers.tip = setTimeout(hideTip, 80);\n    });\n    on(swarm, 'pointerleave', function () { clearTimeout(timers.tip); hideTip(); });\n    on(swarm, 'focusin', function (e) {\n      var d = e.target.closest ? e.target.closest('.mxf-dot') : null;\n      if (d && !d.disabled) { setRoving(d); showTip(d.getAttribute('data-id')); }\n    });\n    on(swarm, 'focusout', function () { hideTip(); });\n    on(swarm, 'keydown', function (e) {\n      var d = e.target.closest ? e.target.closest('.mxf-dot') : null;\n      if (!d || !swarmGeo) return;\n      var dirs = { ArrowLeft: [-1, 0], ArrowRight: [1, 0], ArrowUp: [0, 1], ArrowDown: [0, -1] };\n      var lit = dotList.filter(function (x) { return !x.disabled; }), next = null;\n      if (e.key === 'Home') next = lit[0];\n      else if (e.key === 'End') next = lit[lit.length - 1];\n      else if (dirs[e.key]) {\n        var laneW = swarmLane.clientWidth, dir = dirs[e.key];\n        var at = function (x) {\n          var p = swarmGeo.pos[x.getAttribute('data-id')];\n          return [p.t * laneW + p.dx, p.row * swarmGeo.rowH];\n        };\n        var me = at(d), best = Infinity;\n        lit.forEach(function (x) {\n          if (x === d) return;\n          var q = at(x), along = (q[0] - me[0]) * dir[0] + (q[1] - me[1]) * dir[1];\n          var across = Math.abs((q[0] - me[0]) * dir[1]) + Math.abs((q[1] - me[1]) * dir[0]);\n          if (along < 0.5) return;\n          var cost = along + across * 2.5;\n          if (cost < best) { best = cost; next = x; }\n        });\n      } else return;\n      e.preventDefault();\n      if (next) { setRoving(next); next.focus(); }\n    });\n\n    // Card to dot: the mattress under the pointer (or focus) lights its dot on the feel scale\n    on(grid, 'pointerover', function (e) {\n      if (e.pointerType === 'touch') return;\n      var c = e.target.closest ? e.target.closest('.mxf-card') : null;\n      setHot(c ? c.getAttribute('data-id') : null);\n    });\n    on(grid, 'pointerleave', function () { setHot(null); });\n    on(grid, 'focusin', function (e) {\n      var c = e.target.closest ? e.target.closest('.mxf-card') : null;\n      setHot(c ? c.getAttribute('data-id') : null);\n    });\n    on(grid, 'focusout', function () { setHot(null); });\n\n    on(quickScroll, 'scroll', function () {\n      if (timers.fade) return;\n      timers.fade = win.requestAnimationFrame(function () { timers.fade = 0; if (alive) paintFades(); });\n    }, { passive: true });\n\n    on(doc, 'mo:showroom-change', function (e) { setStore(e && e.detail ? e.detail.key : ''); });\n\n    on(win, 'resize', function () {\n      if (timers.resize) return;\n      timers.resize = win.requestAnimationFrame(function () {\n        timers.resize = 0;\n        if (!alive) return;\n        applyMode();\n        layoutSwarm();\n        layoutBed();\n        paintFades();\n        if (tipId) hideTip();\n        checkReveal();\n      });\n    });\n    on(win, 'scroll', function () {\n      if (revealed || timers.scroll) return;\n      timers.scroll = win.requestAnimationFrame(function () { timers.scroll = 0; checkReveal(); });\n    }, { passive: true });\n    on(wrap, 'focusin', function () { if (!revealed) { if (!swarmGeo) layoutSwarm(); reveal(); } });\n    // Mounted inside something hidden, or resized without the window changing (theme editor panes).\n    if (typeof win.ResizeObserver === 'function') {\n      try {\n        var ro = new win.ResizeObserver(function () {\n          if (timers.resize || !alive) return;\n          timers.resize = win.requestAnimationFrame(function () {\n            timers.resize = 0;\n            if (!alive) return;\n            applyMode();\n            layoutSwarm();\n            layoutBed();\n            paintFades();\n            checkReveal();\n          });\n        });\n        ro.observe(wrap);\n        listeners.push(function () { ro.disconnect(); });\n      } catch (e) { /* the window resize listener still covers the common case */ }\n    }\n\n    /* ---------- first paint ---------- */\n\n    compute();\n    // filled before it enters the page, so a screen reader is told about changes, not about the first paint\n    live.textContent = num(view.results.length) + ' ' + plural(view.results.length, 'mattress', 'mattresses') +\n      (view.made < view.results.length ? ', ' + num(view.made) + ' made in ' + state.size : '');\n    rootEl.textContent = '';\n    rootEl.appendChild(wrap);\n    rootEl.setAttribute('data-mxf-mounted', '');\n    applyMode();\n    paintStore();\n    paintControls();\n    layoutSwarm();\n    paintSwarm();\n    paintCount();\n    paintGrid(false);\n    layoutBed();\n    paintDock(null);\n    upgradeFlow();\n    if (!flow && win.customElements && win.customElements.whenDefined) {\n      win.customElements.whenDefined('number-flow').then(upgradeFlow, function () { /* stays plain text */ });\n    }\n    checkReveal();\n    timers.reveal = setTimeout(checkReveal, 600);\n\n    var api = {\n      el: wrap,\n      getState: function () {\n        return { size: state.size, feel: state.feel.slice(), build: state.build, brands: state.brands.slice(),\n          min: state.min, max: state.max, floor: state.floor, sort: state.sort, shown: state.shown, compare: picked.slice(),\n          storeKey: ctx.storeKey, storeLabel: ctx.storeLabel, count: view.results.length, made: view.made };\n      },\n      setState: function (patch) {\n        var size = state.size;\n        applyPatch(state, patch, brandSlugs);\n        if (state.size !== size) dom = budgetDomain(items, state.size);\n        state.max = fitBudget(state.max, dom);\n        state.min = fitMin(state.min, dom);\n        state.shown = PAGE;\n        update();\n      },\n      setStore: setStore,\n      destroy: function () {\n        if (!alive) return;\n        alive = false;\n        Object.keys(timers).forEach(function (k) {\n          clearTimeout(timers[k]);\n          if (k === 'fade' || k === 'resize' || k === 'scroll') { try { win.cancelAnimationFrame(timers[k]); } catch (e) { /* done */ } }\n        });\n        listeners.forEach(function (off) { off(); });\n        listeners = [];\n        try { if (sheet.open) sheet.close(); } catch (e) { /* done */ }\n        try { if (cmp.open) cmp.close(); } catch (e) { /* done */ }\n        if (bed.raf) { try { win.cancelAnimationFrame(bed.raf); } catch (e) { /* done */ } }\n        doc.documentElement.classList.remove('mxf-has-dock');\n        doc.documentElement.classList.remove('mxf-lock');\n        if (wrap.parentNode === rootEl) rootEl.removeChild(wrap);\n        rootEl.removeAttribute('data-mxf-mounted');\n        if (rootEl.__mxf === api) rootEl.__mxf = null;\n      }\n    };\n    rootEl.__mxf = api;\n    return api;\n  }\n\n  win.MOMXFinder = {\n    version: '1.0.0',\n    mount: mount,\n    core: {\n      SIZES: SIZES, PRESETS: PRESETS, SORTS: SORTS, BUILDS: BUILDS, STORE_LABELS: STORE_LABELS, PAGE: PAGE,\n      slug: slug, money: money, shortName: shortName, normalize: normalize, brandList: brandList,\n      priceOf: priceOf, onFloor: onFloor, baseState: baseState, applyPatch: applyPatch,\n      passes: passes, select: select, order: order, relax: relax, anyFilter: anyFilter,\n      readQuery: readQuery, writeQuery: writeQuery,\n      budgetDomain: budgetDomain, budgetToT: budgetToT, budgetFromT: budgetFromT, fitBudget: fitBudget, fitMin: fitMin, histogram: histogram,\n      swarmCols: swarmCols, swarmRows: swarmRows, swarmPitch: swarmPitch, swarmPack: swarmPack\n    }\n  };\n})();\n"],
  "mappings": "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",
  "names": ["order", "x", "y", "n", "stars", "cmp"]
}
