{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/motion.js?b=20260731a"],
  "sourcesContent": ["/* Purlbrook motion: unhurried scroll reveals + quiet header shadow.\n   Transform/opacity only (no layout jank); fully disabled under\n   prefers-reduced-motion (CSS also guards, so this is belt & braces). */\n(function () {\n  document.documentElement.classList.remove('no-js');\n\n  var reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  // Header shadow once the page starts moving.\n  var header = document.querySelector('[data-header]');\n  if (header) {\n    var onScroll = function () {\n      header.classList.toggle('is-scrolled', window.scrollY > 8);\n    };\n    window.addEventListener('scroll', onScroll, { passive: true });\n    onScroll();\n  }\n\n  var revealed = function (el) { el.classList.add('is-revealed'); };\n  var targets = document.querySelectorAll('[data-reveal]');\n\n  if (reduced || !('IntersectionObserver' in window)) {\n    targets.forEach(revealed);\n    return;\n  }\n\n  // Stagger siblings inside a reveal group (capped so deep groups don't lag).\n  document.querySelectorAll('[data-reveal-group]').forEach(function (group) {\n    group.querySelectorAll('[data-reveal]').forEach(function (el, i) {\n      el.style.setProperty('--reveal-delay', Math.min(i * 70, 280) + 'ms');\n    });\n  });\n\n  // Reviews stay invisible until Judge.me reports a real review count.\n  // Their JS sets data-number-of-reviews after hydration; we poll briefly\n  // and reveal only when count > 0. Zero reviews = nothing on the page.\n  var revealReviews = function () {\n    var any = false;\n    document.querySelectorAll('.jdgm-widget').forEach(function (w) {\n      var el = w.querySelector('[data-number-of-reviews]') ||\n               (w.matches('[data-number-of-reviews]') ? w : null);\n      var n = el ? parseInt(el.getAttribute('data-number-of-reviews'), 10) : 0;\n      if (n > 0) { w.classList.add('has-reviews'); any = true; }\n    });\n    return any;\n  };\n  var tries = 0;\n  var reviewTimer = setInterval(function () {\n    tries += 1;\n    var any = revealReviews();\n    if (any || tries > 20) {\n      clearInterval(reviewTimer);\n      if (!any) {\n        // zero-review products: hide the reviews furniture entirely\n        document.querySelectorAll('.reviews-jump, .product-reviews').forEach(function (el) {\n          el.style.display = 'none';\n        });\n      }\n    }\n  }, 500);\n\n  var observer = new IntersectionObserver(function (entries) {\n    entries.forEach(function (entry) {\n      if (entry.isIntersecting) {\n        revealed(entry.target);\n        observer.unobserve(entry.target);\n      }\n    });\n  }, { rootMargin: '0px 0px -8% 0px', threshold: 0.08 });\n\n  targets.forEach(function (el) { observer.observe(el); });\n\n  // Fast scrolls, deep links and bfcache restores can put elements behind the\n  // viewport before the observer ever sees them intersect \u2014 those would stay\n  // faded forever. Anything the viewport has already passed reveals plainly.\n  if (window.scrollY > 40) {\n    targets.forEach(function (el) {\n      if (el.getBoundingClientRect().top < window.innerHeight * 0.92) { revealed(el); }\n    });\n  }\n  var catchingUp = false;\n  window.addEventListener('scroll', function () {\n    if (catchingUp) { return; }\n    catchingUp = true;\n    requestAnimationFrame(function () {\n      catchingUp = false;\n      targets.forEach(function (el) {\n        if (!el.classList.contains('is-revealed') &&\n            el.getBoundingClientRect().bottom < 0) { revealed(el); }\n      });\n    });\n  }, { passive: true });\n})();\n\n/* review photos must never load from the supplier's CDN. The widget metafield\n   is rewritten server-side to our copies, but judge.me re-caches it on any\n   review/settings change and its pagination XHR serves original URLs \u2014 this\n   sweep swaps known images to our CDN copies and hides anything unmapped. */\n(function () {\n  if (!document.querySelector('.jdgm-widget')) { return; }\n  var MAP = {\n    'Acdb238d846b34ffea8f173aa06574ef8M.jpg': 'https://cdn.shopify.com/s/files/1/0989/5087/3404/files/rev-herschel-0.webp?v=1784806147',\n    'A4a0a17fe701f47d39e3bc1be40e811492.jpg': 'https://cdn.shopify.com/s/files/1/0989/5087/3404/files/rev-norbert-0.webp?v=1784806152',\n    'Ab2864e464c7840cf8bf4ba5dea4a7ca28.jpg': 'https://cdn.shopify.com/s/files/1/0989/5087/3404/files/rev-norbert-0.webp?v=1784806152'\n  };\n  var ATTRS = ['src', 'data-src', 'href', 'data-mfp-src', 'srcset'];\n  var sweep = function () {\n    document.querySelectorAll('.jdgm-widget img, .jdgm-widget a, .jdgm-widget [data-src], .jdgm-widget [data-mfp-src]').forEach(function (el) {\n      ATTRS.forEach(function (attr) {\n        var v = el.getAttribute(attr);\n        if (!v || v.indexOf('aliexpress') === -1) { return; }\n        var swapped = false;\n        Object.keys(MAP).forEach(function (k) {\n          if (v.indexOf(k) !== -1) { el.setAttribute(attr, MAP[k]); swapped = true; }\n        });\n        if (!swapped) { el.style.display = 'none'; el.removeAttribute(attr); }\n      });\n    });\n  };\n  sweep();\n  new MutationObserver(sweep).observe(document.body, { childList: true, subtree: true });\n})();\n\n/* gallery videos ship with preload=\"none\" (each clip ~3MB); start playback\n   only when the card is actually in view, pause when it leaves. */\n(function () {\n  var vids = document.querySelectorAll('.product-gallery video');\n  if (!vids.length) { return; }\n  var start = function (v) { if (v.play) { var p = v.play(); p && p.catch && p.catch(function () {}); } };\n  if (!('IntersectionObserver' in window)) {\n    vids.forEach(start);\n    return;\n  }\n  var io = new IntersectionObserver(function (entries) {\n    entries.forEach(function (en) {\n      if (en.isIntersecting) { start(en.target); }\n      else if (!en.target.paused) { en.target.pause(); }\n    });\n  }, { threshold: 0.25 });\n  vids.forEach(function (v) { io.observe(v); });\n})();\n\n/* mobile sticky buy bar: show while the real buy form is off-screen */\n(function () {\n  var bar = document.querySelector('.sticky-buy');\n  var form = document.getElementById('buy-form');\n  if (!bar || !form || !('IntersectionObserver' in window)) { return; }\n\n  var io = new IntersectionObserver(function (entries) {\n    var formVisible = entries[0].isIntersecting;\n    bar.classList.toggle('is-visible', !formVisible);\n    bar.setAttribute('aria-hidden', formVisible ? 'true' : 'false');\n  }, { threshold: 0 });\n  io.observe(form);\n\n  /* keep both price displays in sync with the chosen variant */\n  var select = form.querySelector('.variant-select');\n  if (select) {\n    select.addEventListener('change', function () {\n      var text = select.options[select.selectedIndex].textContent;\n      var match = text.match(/[$\u20AC\u00A3][\\d,.]+/);\n      if (!match) { return; }\n      var stickyPrice = bar.querySelector('.sticky-buy-price');\n      var pagePrice = document.querySelector('.product-price');\n      if (stickyPrice) { stickyPrice.textContent = match[0]; }\n      if (pagePrice) { pagePrice.childNodes[0].textContent = match[0] + ' '; }\n    });\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
