{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/bloop-page.js?nc=1793731127019"],
  "sourcesContent": ["// BLOOP One product hero \u2014 wires the page: swatches, cart, 3D viewer, Play & Win game, discount codes.\nconst I = {\n  back: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M20 12H5m6-7l-7 7 7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>',\n  star: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 2.5l2.9 6 6.6.8-4.9 4.6 1.3 6.6L12 17.2 6.1 20.5l1.3-6.6L2.5 9.3l6.6-.8z\"/></svg>',\n  cart: '<svg viewBox=\"0 0 32 32\" aria-hidden=\"true\"><path d=\"M3 5h4l3.2 15h14.6L28 10H9\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"12\" cy=\"26\" r=\"2.2\" fill=\"currentColor\"/><circle cx=\"23\" cy=\"26\" r=\"2.2\" fill=\"currentColor\"/></svg>',\n  controller: '<svg viewBox=\"0 0 40 30\" aria-hidden=\"true\"><path d=\"M10 6h20c5 0 8 4 9 10s0 11-4 11c-3 0-5-4-7-6H12c-2 2-4 6-7 6-4 0-5-5-4-11s4-10 9-10z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linejoin=\"round\"/><path d=\"M10 12v7M6.5 15.5h7\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"/><circle cx=\"27\" cy=\"13\" r=\"1.8\" fill=\"currentColor\"/><circle cx=\"31\" cy=\"17\" r=\"1.8\" fill=\"currentColor\"/></svg>',\n  battery: '<svg viewBox=\"0 0 40 30\" aria-hidden=\"true\"><rect x=\"2\" y=\"7\" width=\"32\" height=\"16\" rx=\"3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\"/><rect x=\"35\" y=\"12\" width=\"3\" height=\"6\" rx=\"1\" fill=\"currentColor\"/><path d=\"M7 11v8M12 11v8M17 11v8M22 11v8M27 11v8\" stroke=\"currentColor\" stroke-width=\"3\"/></svg>',\n  screen: '<svg viewBox=\"0 0 40 30\" aria-hidden=\"true\"><rect x=\"3\" y=\"5\" width=\"34\" height=\"20\" rx=\"3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\"/><path d=\"M8 10v-1h3M32 20v1h-3\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>',\n  feather: '<svg viewBox=\"0 0 40 30\" aria-hidden=\"true\"><path d=\"M6 27L30 3M30 3c5 6 2 15-8 17-4 1-8 0-11-1M30 3c-9-1-17 6-19 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"/><path d=\"M16 14h8M14 19h6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>',\n  shield: '<svg viewBox=\"0 0 40 30\" aria-hidden=\"true\"><path d=\"M20 2l11 4v8c0 7-5 11-11 14C14 25 9 21 9 14V6z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linejoin=\"round\"/><path d=\"M15 15l4 4 7-8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>',\n  pad: '<svg viewBox=\"0 0 92 60\" aria-hidden=\"true\"><defs><linearGradient id=\"bpg\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0\" stop-color=\"#ff7ae0\"/><stop offset=\"1\" stop-color=\"#ff2fb9\"/></linearGradient></defs><path d=\"M22 8h48c11 0 18 8 20 22s-2 26-11 26c-7 0-11-8-15-12H28c-4 4-8 12-15 12-9 0-13-12-11-26S11 8 22 8z\" fill=\"url(#bpg)\" stroke=\"#fff\" stroke-opacity=\".5\" stroke-width=\"2\"/><path d=\"M24 22v16M16 30h16\" stroke=\"#2a0b55\" stroke-width=\"5\" stroke-linecap=\"round\"/><circle cx=\"64\" cy=\"26\" r=\"4\" fill=\"#2a0b55\"/><circle cx=\"72\" cy=\"34\" r=\"4\" fill=\"#2a0b55\"/></svg>',\n  trophy: '<svg viewBox=\"0 0 36 36\" aria-hidden=\"true\"><path d=\"M10 5h16v8a8 8 0 01-16 0z\" fill=\"#ffc51a\"/><path d=\"M10 8H5c0 5 2 8 6 8M26 8h5c0 5-2 8-6 8\" fill=\"none\" stroke=\"#ffc51a\" stroke-width=\"2.5\"/><path d=\"M16 21h4v5h-4z\" fill=\"#e0a400\"/><rect x=\"11\" y=\"26\" width=\"14\" height=\"5\" rx=\"1.5\" fill=\"#ffc51a\"/></svg>',\n  coin: '<svg viewBox=\"0 0 36 36\" aria-hidden=\"true\"><ellipse cx=\"18\" cy=\"18\" rx=\"11\" ry=\"14\" fill=\"#ffc51a\"/><ellipse cx=\"18\" cy=\"18\" rx=\"7\" ry=\"10\" fill=\"none\" stroke=\"#e09a00\" stroke-width=\"2.5\"/><path d=\"M16 12h3v12h-3z\" fill=\"#fff3a8\" opacity=\".8\"/></svg>',\n  timer: '<svg viewBox=\"0 0 36 36\" aria-hidden=\"true\"><circle cx=\"18\" cy=\"20\" r=\"11\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\"/><path d=\"M18 20v-6M15 4h6M18 4v5M27 10l2-2\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"/></svg>',\n  close: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"/></svg>',\n  sound: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 9h4l5-4v14l-5-4H4z\" fill=\"currentColor\"/><path d=\"M16 9a4 4 0 010 6M18.5 6.5a7.5 7.5 0 010 11\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\"/></svg>',\n  mute: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 9h4l5-4v14l-5-4H4z\" fill=\"currentColor\"/><path d=\"M16 9l5 6M21 9l-5 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>',\n  note: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 18V5l11-2v13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linejoin=\"round\"/><circle cx=\"6.5\" cy=\"18\" r=\"2.8\" fill=\"currentColor\"/><circle cx=\"17.5\" cy=\"16\" r=\"2.8\" fill=\"currentColor\"/></svg>',\n  play: '<svg viewBox=\"0 0 26 30\" aria-hidden=\"true\"><path d=\"M2 2l22 13L2 28z\" fill=\"currentColor\"/></svg>',\n  cube: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 2l9 5v10l-9 5-9-5V7zM3 7l9 5 9-5M12 12v10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"/></svg>',\n  image: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><circle cx=\"9\" cy=\"10\" r=\"2\" fill=\"currentColor\"/><path d=\"M4 18l5-5 4 4 3-3 4 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"/></svg>',\n  list: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M7 8h2M11 8h6M7 12h2M11 12h6M7 16h2M11 16h6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>',\n  arrowL: '<svg viewBox=\"0 0 60 40\" aria-hidden=\"true\"><path d=\"M54 8C40 32 18 34 6 26\" fill=\"none\" stroke=\"#fff\" stroke-width=\"4\" stroke-linecap=\"round\"/><path d=\"M4 16l2 12 12-3\" fill=\"none\" stroke=\"#fff\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>',\n  arrowR: '<svg viewBox=\"0 0 60 40\" aria-hidden=\"true\"><path d=\"M6 8c14 24 36 26 48 18\" fill=\"none\" stroke=\"#fff\" stroke-width=\"4\" stroke-linecap=\"round\"/><path d=\"M56 16l-2 12-12-3\" fill=\"none\" stroke=\"#fff\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>',\n};\nconst esc = (s) => String(s ?? '').replace(/[&<>\"']/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]));\nconst store = { get(k) { try { return localStorage.getItem(k); } catch (e) { return null; } }, set(k, v) { try { localStorage.setItem(k, v); } catch (e) { /* storage blocked */ } } };\n\n/* ---------- pixel background (drawn small, scaled up crisp) ---------- */\nfunction drawBackground(canvas) {\n  const draw = () => {\n    const r = canvas.getBoundingClientRect(); const S = 4;\n    const w = Math.ceil(r.width / S), h = Math.ceil(r.height / S); if (!w || !h) return;\n    canvas.width = w; canvas.height = h; const c = canvas.getContext('2d');\n    let seed = 11; const rnd = () => (seed = (seed * 9301 + 49297) % 233280) / 233280;\n    // stars + sparkles\n    for (let i = 0; i < w * h / 600; i++) { c.fillStyle = rnd() > 0.7 ? '#ffd6ff' : 'rgba(255,255,255,.55)'; c.fillRect(rnd() * w | 0, rnd() * h * 0.7 | 0, 1, 1); }\n    // pixel clouds\n    const cloud = (x, y, s) => { c.fillStyle = '#d65cf0'; [[1, 0, 3], [0, 1, 6], [2, -1, 1]].forEach(([dx, dy, l]) => c.fillRect(x + dx * s, y + dy * s, l * s, s)); c.fillStyle = '#ff8af0'; c.fillRect(x + s, y, 2 * s, 1); };\n    cloud(w * 0.27, h * 0.14, 4); cloud(w * 0.29, h * 0.36, 3); cloud(w * 0.66, h * 0.52, 3); cloud(w * 0.06, h * 0.55, 2);\n    // two layers of city\n    const ground = h - 30;\n    [[0.55, '#3a1080', '#5b2bb5', 0.25], [0.32, '#2a0a66', '#ff4fd8', 0.12]].forEach(([maxH, col, win, p]) => {\n      let x = -4;\n      while (x < w) {\n        const bw = 8 + rnd() * 14 | 0, bh = (ground * 0.12 + rnd() * ground * maxH) | 0;\n        c.fillStyle = col; c.fillRect(x, ground - bh, bw, bh);\n        if (rnd() > 0.6) c.fillRect(x + bw / 2 | 0, ground - bh - 4, 1, 4);\n        c.fillStyle = win;\n        for (let yy = ground - bh + 3; yy < ground - 2; yy += 4) for (let xx = x + 2; xx < x + bw - 1; xx += 3) if (rnd() < p) c.fillRect(xx, yy, 1, 2);\n        x += bw + (rnd() * 3 | 0);\n      }\n    });\n    // ground: grass + bricks\n    c.fillStyle = '#7a3a1a'; c.fillRect(0, ground + 6, w, h - ground);\n    c.fillStyle = '#4e2010';\n    for (let y = ground + 8; y < h; y += 4) { const off = ((y - ground) / 4) % 2 ? 0 : 3; for (let x = off; x < w; x += 6) c.fillRect(x, y, 1, 4); c.fillRect(0, y, w, 1); }\n    c.fillStyle = '#5bd12e'; c.fillRect(0, ground, w, 6);\n    c.fillStyle = '#9af25a'; for (let x = 0; x < w; x += 3) c.fillRect(x, ground - (x % 6 ? 1 : 2), 2, 2);\n    c.fillStyle = '#2f8a15'; c.fillRect(0, ground + 5, w, 1);\n    // original pixel props: a treasure chest and a stack of coins\n    const chest = (x, y) => { c.fillStyle = '#6b3a12'; c.fillRect(x, y, 14, 10); c.fillStyle = '#c47a2c'; c.fillRect(x + 1, y + 1, 12, 3); c.fillRect(x + 1, y + 5, 12, 4); c.fillStyle = '#ffc51a'; c.fillRect(x + 6, y + 3, 2, 3); c.fillRect(x, y + 4, 14, 1); };\n    const coins = (x, y) => { for (let i = 0; i < 4; i++) { c.fillStyle = '#b8860b'; c.fillRect(x, y - i * 3, 8, 3); c.fillStyle = '#ffc51a'; c.fillRect(x + 1, y - i * 3, 6, 2); } };\n    chest(w * 0.76 | 0, ground - 10); coins(w * 0.88 | 0, ground - 3); coins(w * 0.9 | 0, ground - 3);\n  };\n  new ResizeObserver(draw).observe(canvas); draw();\n}\n\n/* ---------- markup ---------- */\nfunction render(cfg) {\n  const p = cfg.product;\n  const stars = Array.from({ length: 5 }, () => I.star).join('');\n  return `\n  <canvas class=\"bloop-bg\" aria-hidden=\"true\"></canvas>\n  <div class=\"bloop-inner\">\n    <div class=\"bloop-left\">\n      <div class=\"bloop-left-head\">\n        <nav class=\"bloop-crumbs\" aria-label=\"Breadcrumb\">\n          <a href=\"${esc(cfg.links.back)}\" aria-label=\"Back\">${I.back}</a>\n          ${cfg.crumbs.map((c) => `<a href=\"${esc(c.url)}\">${esc(c.title)}</a><span aria-hidden=\"true\">\u203A</span>`).join('')}\n          <span aria-current=\"page\">${esc(p.title)}</span>\n        </nav>\n        <h1 class=\"bloop-title\">${esc(p.title)}</h1>\n        ${p.reviews ? `<div class=\"bloop-rating\"><span class=\"bloop-stars\" aria-label=\"Rated ${esc(p.rating)} out of 5\">${stars}</span><span>(${esc(p.reviews)})</span></div>` : ''}\n        <p class=\"bloop-tag\">${esc(p.tagline)}</p>\n      </div>\n      <div class=\"bloop-buy\">\n      <p class=\"bloop-price\"><span data-price>${p.priceHtml}</span><s class=\"bloop-compare\" data-compare>${p.compareHtml || ''}</s></p>\n      <fieldset class=\"bloop-swatches\" role=\"radiogroup\" aria-label=\"Color\">\n        <legend>Color</legend>\n        ${cfg.swatches.map((s, i) => `<button type=\"button\" class=\"bloop-swatch\" role=\"radio\" aria-checked=\"false\" aria-label=\"${esc(s.name)}\" data-i=\"${i}\" style=\"--c:${esc(s.hex)}\"></button>`).join('')}\n      </fieldset>\n      <p class=\"bloop-color-name\" data-color-name></p>\n      <div class=\"bloop-qty\"><button type=\"button\" data-qty=\"-1\" aria-label=\"Decrease quantity\">\u2212</button><input id=\"bloop-qty\" type=\"number\" min=\"1\" max=\"10\" value=\"1\" aria-label=\"Quantity\"><button type=\"button\" data-qty=\"1\" aria-label=\"Increase quantity\">+</button></div>\n      <button type=\"button\" class=\"bloop-cart-btn\" data-add>${I.cart}<span>Add to Cart</span></button>\n      </div>\n      <ul class=\"bloop-features\">${cfg.features.map((f) => `<li>${I[f.icon] || I.controller}<span>${esc(f.text)}</span></li>`).join('')}</ul>\n    </div>\n\n    <div class=\"bloop-stage\">\n      <div class=\"bloop-3d\" data-viewer><div class=\"bloop-3d-fallback\" data-fallback>Loading the 3D console\u2026</div></div>\n      ${cfg.music !== false ? `<button type=\"button\" class=\"bloop-music\" data-music aria-pressed=\"false\">${I.note}<span>Music off</span></button>` : ''}\n      <div class=\"bloop-rotate\" aria-hidden=\"true\">${I.arrowL}<span>360\u00B0 Rotate</span>${I.arrowR}</div>\n      <div class=\"bloop-playbar\" hidden>\n        <button type=\"button\" class=\"bloop-pb-btn\" data-exit aria-label=\"Exit the game\">${I.close}</button>\n        <p class=\"bloop-pb-hint\" data-hint>Press the console's buttons to play</p>\n        <button type=\"button\" class=\"bloop-pb-btn\" data-sound aria-label=\"Mute sound\">${I.sound}</button>\n      </div>\n      <button type=\"button\" class=\"bloop-claim\" data-claim hidden></button>\n    </div>\n\n    <div class=\"bloop-right\">\n      ${cfg.game.enabled ? `\n      <section class=\"bloop-try\" aria-labelledby=\"bloop-try-h\">\n        <div class=\"bloop-try-head\">${I.pad}<h2 id=\"bloop-try-h\">TRY IT NOW!</h2></div>\n        <p class=\"bloop-try-sub\">Play a real game on the ${esc(p.title)}!</p>\n        <ul class=\"bloop-tiers\">\n          <li data-tier=\"finish\">${I.trophy}<span>Finish the level</span><b>${cfg.game.finish}% OFF</b></li>\n          <li data-tier=\"coins\">${I.coin}<span>Collect all coins</span><b>${cfg.game.coins}% OFF</b></li>\n          <li data-tier=\"speed\">${I.timer}<span>Beat it in &lt; ${cfg.game.timeLimit}s</span><b>${cfg.game.speed}% OFF</b></li>\n        </ul>\n        <button type=\"button\" class=\"bloop-play\" data-play>${I.play}<span>Play on ${esc(p.title)}</span></button>\n        <p class=\"bloop-won\" data-won aria-live=\"polite\"></p>\n      </section>` : ''}\n      <div>\n        <div class=\"bloop-tabs\" role=\"tablist\" aria-label=\"Product views\">\n          <button type=\"button\" role=\"tab\" aria-selected=\"true\" data-tab=\"3d\">${I.cube}<span>3D View</span></button>\n          <button type=\"button\" role=\"tab\" aria-selected=\"false\" data-tab=\"gallery\">${I.image}<span>Gallery</span></button>\n          <button type=\"button\" role=\"tab\" aria-selected=\"false\" data-tab=\"specs\">${I.list}<span>Specs</span></button>\n        </div>\n        <div class=\"bloop-panel\" role=\"tabpanel\" data-panel></div>\n      </div>\n    </div>\n  </div>\n  ${cfg.cases && cfg.cases.length ? `\n  <section class=\"bloop-cases\" aria-labelledby=\"bloop-cases-h\">\n    <div class=\"bloop-cases-in\">\n      <div class=\"bloop-cases-copy\">\n        <p class=\"bloop-eyebrow\">Carry cases</p>\n        <h2 id=\"bloop-cases-h\">Pick your free carry case</h2>\n        <p>Every ${esc(p.title)} comes with a carry case. Choose yours to see the console inside it, in the color you picked above.</p>\n      </div>\n      <div class=\"bloop-case-3d\" data-case-viewer>\n        <div class=\"bloop-3d-fallback\" data-case-fallback>Loading the 3D case\u2026</div>\n        <button type=\"button\" class=\"bloop-case-toggle\" data-case-open hidden>Close case</button>\n      </div>\n      <div class=\"bloop-case-side\">\n        <div class=\"bloop-case-list\" role=\"radiogroup\" aria-label=\"Carry case\">\n          ${cfg.cases.map((c, i) => `<button type=\"button\" class=\"bloop-case-card\" role=\"radio\" aria-checked=\"${i === 0}\" data-case=\"${i}\">\n            ${c.image ? `<img src=\"${esc(c.image)}\" alt=\"\" width=\"120\" height=\"120\" loading=\"lazy\">` : `<span class=\"bloop-case-dot\" style=\"--c:${c.style === 'black' ? '#1c1c22' : '#ec6aae'}\"></span>`}\n            <span class=\"bloop-case-txt\"><b>${esc(c.name)}</b>${c.desc ? `<span>${esc(c.desc)}</span>` : ''}<em>Included</em></span>\n          </button>`).join('')}\n        </div>\n        <button type=\"button\" class=\"bloop-case-add\" data-case-add>${I.cart}<span>Add to Cart with this case</span></button>\n      </div>\n    </div>\n  </section>` : ''}\n  <div class=\"bloop-sticky\" data-sticky hidden>\n    <span class=\"bloop-sticky-dot\" data-sticky-dot></span>\n    <span class=\"bloop-sticky-txt\"><b>${esc(p.title)}</b><span data-sticky-price>${p.priceHtml}</span></span>\n    <button type=\"button\" class=\"bloop-sticky-btn\" data-add2>${I.cart}<span>Add to Cart</span></button>\n  </div>`;\n}\n\n/* ---------- main ---------- */\nexport function mount(root) {\n  const cfg = JSON.parse(root.querySelector('script[data-bloop-config]').textContent);\n  const cfgNode = root.querySelector('script[data-bloop-config]');\n  // Liquid loops end with an \"__end\" marker so the JSON never has a trailing comma\n  cfg.swatches = (cfg.swatches || []).filter((s) => s.name !== '__end');\n  cfg.features = (cfg.features || []).filter((f) => f.icon !== '__end');\n  cfg.specs = (cfg.specs || []).filter((s) => s.k !== '__end');\n  cfg.cases = (cfg.cases || []).filter((c) => c.name !== '__end');\n  if (!cfg.swatches.length) cfg.swatches = [{ name: 'Purple', hex: '#9b5cff' }];\n  root.innerHTML = render(cfg); root.appendChild(cfgNode);\n  const $ = (s) => root.querySelector(s), $$ = (s) => [...root.querySelectorAll(s)];\n  drawBackground($('.bloop-bg'));\n\n  const toastEl = document.createElement('div'); toastEl.className = 'bloop-toast'; toastEl.setAttribute('role', 'status'); document.body.appendChild(toastEl);\n  let toastT; const toast = (html) => { toastEl.innerHTML = html; toastEl.classList.add('on'); clearTimeout(toastT); toastT = setTimeout(() => toastEl.classList.remove('on'), 4200); };\n\n  /* retro music: shop loop on request, game loop while playing */\n  let music = null, musicOn = cfg.music !== false && store.get('bloop-music') !== 'off'; // on unless the shopper turned it off\n  const musicBtn = $('[data-music]');\n  let musicP = null; function getMusic() { if (!musicP && cfg.assets.music) musicP = import(cfg.assets.music).then((mod) => (music = mod.createMusic(cfg.musicFile || ''))).catch(() => null); return musicP || Promise.resolve(null); }\n  function paintMusic() { if (!musicBtn) return; musicBtn.setAttribute('aria-pressed', String(musicOn)); musicBtn.querySelector('span').textContent = musicOn ? 'Music on' : 'Music off'; }\n  musicBtn?.addEventListener('click', async () => {\n    musicOn = !musicOn; store.set('bloop-music', musicOn ? 'on' : 'off'); paintMusic();\n    const m = music || await getMusic(); if (!m) return;\n    m.setMuted(!musicOn); if (musicOn) m.play(game ? 'game' : 'shop'); else m.stop();\n  });\n  paintMusic();\n  // browsers only allow sound after the visitor's first tap, click or key press, so start the loop then\n  if (musicOn) {\n    const kick = async (e) => {\n      if (e.target.closest && e.target.closest('[data-music]')) return; // the toggle handles itself\n      if (!music) { getMusic(); return; } ['click', 'touchend', 'keydown'].forEach((t) => removeEventListener(t, kick, true));\n      if (musicOn && !music.playing) { music.setMuted(false); music.play(game ? 'game' : 'shop'); }\n    };\n    getMusic(); ['click', 'touchend', 'keydown'].forEach((t) => addEventListener(t, kick, true));\n  }\n\n  /* swatches \u2194 variants */\n  const norm = (s) => String(s).trim().toLowerCase();\n  const variantFor = (name) => cfg.variants.find((v) => v.options.some((o) => norm(o) === norm(name))) || null;\n  let viewer = null, caseViewer = null, selected = Math.max(0, cfg.swatches.findIndex((s) => norm(s.name) === norm(cfg.selectedColor)));\n  cfg.swatches.forEach((s, i) => { const v = variantFor(s.name); if (cfg.variants.length && v && !v.available) $$('.bloop-swatch')[i].dataset.soldout = ''; });\n  function select(i, fromUser) {\n    selected = i; const s = cfg.swatches[i];\n    $$('.bloop-swatch').forEach((b, j) => { b.setAttribute('aria-checked', String(j === i)); b.tabIndex = j === i ? 0 : -1; });\n    const v = variantFor(s.name);\n    $('[data-color-name]').textContent = s.name + (v && !v.available ? ' \u00B7 sold out' : '');\n    if (v) { $('[data-price]').innerHTML = v.priceHtml; $('[data-compare]').innerHTML = v.compareHtml || ''; $('[data-sticky-price]').innerHTML = v.priceHtml; }\n    $('[data-sticky-dot]').style.background = s.hex;\n    $('[data-add]').disabled = !!(cfg.variants.length && v && !v.available);\n    if (viewer) viewer.setColor(s.hex);\n    caseViewer?.setConsoleColor(s.hex);\n    if (fromUser && cfg.isShopify && v && history.replaceState) { const u = new URL(location.href); u.searchParams.set('variant', v.id); history.replaceState(null, '', u); }\n  }\n  $$('.bloop-swatch').forEach((b, i) => {\n    b.addEventListener('click', () => select(i, true));\n    b.addEventListener('keydown', (e) => { const d = { ArrowRight: 1, ArrowDown: 1, ArrowLeft: -1, ArrowUp: -1 }[e.key]; if (d) { e.preventDefault(); const n = (selected + d + cfg.swatches.length) % cfg.swatches.length; select(n, true); $$('.bloop-swatch')[n].focus(); } });\n  });\n  select(selected, false);\n\n  /* quantity + cart */\n  const qty = $('#bloop-qty');\n  $$('[data-qty]').forEach((b) => b.addEventListener('click', () => { qty.value = Math.min(10, Math.max(1, (+qty.value || 1) + +b.dataset.qty)); }));\n  let caseChosen = () => null; // set by the carry case picker\n  $('[data-add2]').addEventListener('click', () => $('[data-add]').click());\n  // sticky Add to Cart on phones once the main button scrolls away\n  if ('IntersectionObserver' in window) new IntersectionObserver(([en]) => { $('[data-sticky]').hidden = en.isIntersecting || root.classList.contains('is-playing') || innerWidth > 820; }).observe($('[data-add]'));\n  $('[data-add]').addEventListener('click', async (e) => {\n    const btn = e.currentTarget, s = cfg.swatches[selected], v = variantFor(s.name) || cfg.variants[0], n = Math.max(1, +qty.value || 1);\n    const cs = caseChosen();\n    if (!cfg.isShopify) { cartCount(n); toast(`Added ${n} \u00D7 ${esc(cfg.product.title)} in ${esc(s.name)}${cs ? ` with the ${esc(cs.name.toLowerCase())}` : ''} to your cart.`); return; }\n    if (!v) { toast('This color isn\u2019t set up as a variant yet. Add it in Shopify under Products \u2192 Variants.'); return; }\n    btn.disabled = true;\n    try {\n      const r = await fetch((window.Shopify?.routes?.root || '/') + 'cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ items: [{ id: v.id, quantity: n, ...(cs ? { properties: { 'Included case': cs.name } } : {}) }] }) });\n      const data = await r.json(); if (!r.ok) throw new Error(data.description || 'Could not add to cart');\n      const cart = await (await fetch((window.Shopify?.routes?.root || '/') + 'cart.js')).json();\n      document.querySelectorAll('[data-cart-count], .cart-count-bubble span, #cart-icon-bubble .cart-count-bubble').forEach((el) => { el.textContent = cart.item_count; });\n      document.dispatchEvent(new CustomEvent('cart:refresh', { detail: cart })); document.documentElement.dispatchEvent(new CustomEvent('cart:refresh', { bubbles: true }));\n      toast(`Added to cart \u00B7 <a href=\"${(window.Shopify?.routes?.root || '/')}cart\" style=\"color:#ffc51a\">View cart</a>`);\n    } catch (err) { toast(esc(err.message)); }\n    btn.disabled = false;\n  });\n  function cartCount(add) { document.querySelectorAll('[data-cart-count]').forEach((el) => { el.textContent = (+el.textContent || 0) + add; }); }\n\n  /* 3D viewer */\n  const host = $('[data-viewer]');\n  import(cfg.assets.console).then(({ createConsoleViewer }) => {\n    viewer = createConsoleViewer(host, { color: cfg.swatches[selected].hex });\n    $('[data-fallback]').remove();\n    renderPanel('3d');\n    new IntersectionObserver(([en]) => { if (root.classList.contains('is-playing')) return; en.isIntersecting ? viewer.resume() : viewer.pause(); }).observe(host);\n  }).catch(() => { $('[data-fallback]').textContent = '3D view needs WebGL. Try another browser to rotate the console.'; });\n\n  /* carry cases */\n  let caseSel = 0; // caseChosen is declared with the cart code\n  if (cfg.cases && cfg.cases.length && cfg.assets.case) {\n    const caseHost = $('[data-case-viewer]'), toggle = $('[data-case-open]');\n    const startCases = () => Promise.all([import(cfg.assets.console), import(cfg.assets.case)]).then(([cm, km]) => {\n      caseViewer = km.createCaseViewer(caseHost, { buildConsole: cm.buildConsole, consoleColor: cfg.swatches[selected].hex, style: cfg.cases[0].style });\n      caseViewer.setOpen(true); $('[data-case-fallback]').remove(); toggle.hidden = false;\n      new IntersectionObserver(([en]) => (en.isIntersecting ? caseViewer.resume() : caseViewer.pause())).observe(caseHost);\n    }).catch(() => { $('[data-case-fallback]').textContent = 'The 3D case needs WebGL. The photos still show each case.'; });\n    if ('IntersectionObserver' in window) { const io = new IntersectionObserver(([en]) => { if (en.isIntersecting) { io.disconnect(); startCases(); } }, { rootMargin: '300px' }); io.observe(caseHost); } else startCases();\n    const cards = $$('[data-case]');\n    const pickCase = (i) => {\n      caseSel = i; cards.forEach((c, j) => { c.setAttribute('aria-checked', String(j === i)); c.tabIndex = j === i ? 0 : -1; });\n      caseViewer?.setCase(cfg.cases[i].style, true); toggle.textContent = 'Close case';\n    };\n    cards.forEach((b, i) => {\n      b.addEventListener('click', () => pickCase(i));\n      b.addEventListener('keydown', (e) => { const d = { ArrowRight: 1, ArrowDown: 1, ArrowLeft: -1, ArrowUp: -1 }[e.key]; if (d) { e.preventDefault(); const n = (caseSel + d + cards.length) % cards.length; pickCase(n); cards[n].focus(); } });\n    });\n    pickCase(0);\n    toggle.addEventListener('click', () => { if (!caseViewer) return; const open = !caseViewer.open; caseViewer.setOpen(open); toggle.textContent = open ? 'Close case' : 'Open case'; });\n    $('[data-case-add]').addEventListener('click', () => $('[data-add]').click());\n    caseChosen = () => cfg.cases[caseSel];\n  }\n\n  /* tabs */\n  let shots = null;\n  function getShots() {\n    if (!shots && viewer) {\n      const views = viewer.snapshots([{ view: 'front' }, { view: 'back' }, { view: 'tilt' }, { view: 'top' }], 280);\n      const colors = viewer.snapshots(cfg.swatches.map((s) => ({ view: 'tilt', color: s.hex })), 280);\n      shots = { views, colors };\n    }\n    return shots;\n  }\n  function renderPanel(tab) {\n    const panel = $('[data-panel]');\n    if (tab === 'specs') { panel.innerHTML = `<dl class=\"bloop-specs\">${cfg.specs.map((s) => `<dt>${esc(s.k)}</dt><dd>${esc(s.v)}</dd>`).join('')}</dl>`; return; }\n    const sh = getShots();\n    if (!sh) { panel.innerHTML = ''; return; }\n    if (tab === '3d') {\n      const names = [['front', 'Front'], ['back', 'Back'], ['side', 'Side'], ['top', 'Top']];\n      panel.innerHTML = `<div class=\"bloop-thumbs\">${names.map(([v, l], i) => `<button type=\"button\" class=\"bloop-thumb\" data-view=\"${v}\" aria-pressed=\"false\" aria-label=\"Rotate to ${l.toLowerCase()} view\"><img src=\"${sh.views[i]}\" alt=\"\" width=\"140\" height=\"140\"></button>`).join('')}</div>`;\n      panel.querySelectorAll('[data-view]').forEach((b) => b.addEventListener('click', () => { viewer.rotateTo(b.dataset.view); panel.querySelectorAll('[data-view]').forEach((x) => x.setAttribute('aria-pressed', String(x === b))); }));\n    } else {\n      panel.innerHTML = `<div class=\"bloop-thumbs six\">${cfg.swatches.map((s, i) => `<button type=\"button\" class=\"bloop-thumb\" data-sw=\"${i}\" aria-label=\"Show ${esc(s.name)}\"><img src=\"${sh.colors[i]}\" alt=\"${esc(cfg.product.title)} in ${esc(s.name)}\" width=\"140\" height=\"140\"></button>`).join('')}</div>`;\n      panel.querySelectorAll('[data-sw]').forEach((b) => b.addEventListener('click', () => select(+b.dataset.sw, true)));\n    }\n  }\n  $$('[data-tab]').forEach((b) => b.addEventListener('click', () => { $$('[data-tab]').forEach((x) => x.setAttribute('aria-selected', String(x === b))); renderPanel(b.dataset.tab); }));\n  renderPanel('specs'); // shows instantly; replaced by thumbnails once the 3D view is ready\n  $$('[data-tab]').forEach((x) => x.setAttribute('aria-selected', String(x.dataset.tab === '3d')));\n\n  /* Play & Win */\n  if (!cfg.game.enabled) return;\n  const showWon = (best) => {\n    $$('[data-tier]').forEach((li) => li.classList.toggle('won', !!best && li.dataset.tier === best.key));\n    $('[data-won]').innerHTML = best ? `You unlocked <b>${best.pct}% off</b>${best.code ? ` \u00B7 code <b>${esc(best.code)}</b>` : ''}` : '';\n  };\n  try { showWon(JSON.parse(store.get('bloop-reward') || 'null')); } catch (e) { /* ignore */ }\n  async function applyReward(res) {\n    if (!res.best) return;\n    const code = cfg.game.codes[res.best.key] || '';\n    const best = { ...res.best, code };\n    store.set('bloop-reward', JSON.stringify(best)); showWon(best);\n    if (!code) { toast(`You won ${best.pct}% off! Add a discount code for this reward in the section settings.`); return; }\n    if (cfg.isShopify) {\n      try { await fetch((window.Shopify?.routes?.root || '/') + 'discount/' + encodeURIComponent(code) + '?redirect=' + encodeURIComponent((window.Shopify?.routes?.root || '/') + 'cart.js'), { credentials: 'same-origin', redirect: 'follow' }); } catch (e) { /* cookie still set on next visit to /discount */ }\n      toast(`${best.pct}% off is applied to your checkout \u00B7 code <code>${esc(code)}</code>`);\n    } else {\n      toast(`You won ${best.pct}% off \u00B7 code <code>${esc(code)}</code> (applied automatically on the Shopify store)`);\n    }\n  }\n  let game = null, gameMod = null, prevOverflow = '', modeTimer = 0;\n  const stage = $('.bloop-stage');\n  const KEYMAP = { ArrowUp: 'up', KeyW: 'up', ArrowDown: 'down', KeyS: 'down', ArrowLeft: 'left', KeyA: 'left', ArrowRight: 'right', KeyD: 'right', Space: 'a', KeyJ: 'a', ShiftLeft: 'b', ShiftRight: 'b', KeyK: 'b', Enter: 'start' };\n  const onKey = (down) => (e) => {\n    if (!game) return;\n    if (e.code === 'Escape' && down) { stopGame(); return; }\n    const k = KEYMAP[e.code]; if (!k) return;\n    e.preventDefault(); if (e.repeat) return;\n    game.press(k, down); viewer?.showPress(k, down);\n  };\n  const kd = onKey(true), ku = onKey(false);\n  const HINTS = { intro: 'Press A on the console to start', play: 'D-pad or stick to move \u00B7 A jump \u00B7 B tail spin', paused: 'Paused \u00B7 press START', done: '' };\n  function syncMode() {\n    if (!game) return;\n    const m = game.mode; $('[data-hint]').textContent = HINTS[m] ?? '';\n    const claim = $('[data-claim]');\n    if (m === 'done') { const r = game._debug.S.result; claim.hidden = false; claim.textContent = r && r.best ? `Claim ${r.best.pct}% off` : 'Back to the shop'; } else claim.hidden = true;\n  }\n  /* ---- plug-in slot: a licensed web game runs in a frame laid over the console screen ----\n     Messages the game receives:  { type: 'bloop:input', key: 'up'|'down'|'left'|'right'|'a'|'b'|'x'|'y'|'start', down: true|false }\n     Messages the game sends:     { type: 'bloop:ready' }\n                                  { type: 'bloop:result', finished: true, time: 38.2, coins: 40, totalCoins: 40 }\n                                  { type: 'bloop:exit' } */\n  const plugin = cfg.game.plugin && cfg.game.plugin.url ? cfg.game.plugin : null;\n  let frame = null, frameRaf = 0, pluginOrigin = '';\n  function pluginGame() {\n    pluginOrigin = new URL(plugin.url, location.href).origin;\n    frame = document.createElement('iframe');\n    frame.className = 'bloop-plugin'; frame.title = plugin.title || 'Game';\n    frame.src = plugin.url; frame.allow = 'autoplay; gamepad; fullscreen';\n    frame.setAttribute('sandbox', 'allow-scripts allow-same-origin allow-pointer-lock');\n    stage.querySelector('.bloop-3d').appendChild(frame);\n    const place = () => { if (!frame) return; const r = viewer.screenRect(); Object.assign(frame.style, { left: r.left + 'px', top: r.top + 'px', width: r.width + 'px', height: r.height + 'px' }); frameRaf = requestAnimationFrame(place); };\n    place();\n    let mode = 'play';\n    return {\n      get mode() { return mode; }, set mode(m) { mode = m; },\n      press(key, down) { frame?.contentWindow?.postMessage({ type: 'bloop:input', key, down }, pluginOrigin); },\n      dispose() { cancelAnimationFrame(frameRaf); frame?.remove(); frame = null; },\n      toggleSound() { frame?.contentWindow?.postMessage({ type: 'bloop:mute' }, pluginOrigin); return false; },\n      _debug: { S: { result: null } },\n    };\n  }\n  addEventListener('message', (e) => {\n    if (!plugin || !game || !frame || e.origin !== pluginOrigin || e.source !== frame.contentWindow) return;\n    const d = e.data || {};\n    if (d.type === 'bloop:exit') stopGame();\n    if (d.type === 'bloop:result' && d.finished) {\n      const time = +d.time || 0, coins = +d.coins || 0, total = +d.totalCoins || 0;\n      const r = { time, coins, totalCoins: total, finish: true, allCoins: total > 0 && coins >= total, fast: time > 0 && time <= cfg.game.timeLimit };\n      const won = [['finish', cfg.game.finish, true], ['coins', cfg.game.coins, r.allCoins], ['speed', cfg.game.speed, r.fast]].filter((t) => t[2]).sort((a, b) => b[1] - a[1])[0];\n      r.best = won ? { key: won[0], pct: won[1] } : null;\n      game.mode = 'done'; game._debug.S.result = r; syncMode();\n    }\n  });\n  async function startGame() {\n    if (game || !viewer) return;\n    $('[data-play]').disabled = true;\n    if (plugin) {\n      game = pluginGame();\n      game.press = ((send) => (k, down) => { if (game.mode === 'done' && down && k === 'a') { applyReward(game._debug.S.result); stopGame(); return; } send(k, down); })(game.press);\n    } else {\n      try { gameMod = gameMod || await import(cfg.assets.game); }\n      catch (e) { $('[data-play]').disabled = false; toast('The game could not load. Check your connection and try again.'); return; }\n      game = gameMod.createGame({ renderer: viewer.renderer, width: 640, height: 464, goals: cfg.game, onFinish: (res) => { applyReward(res); stopGame(); }, onExit: () => stopGame() });\n    }\n    root.classList.add('is-playing'); $('[data-sticky]').hidden = true;\n    stage.querySelector('.bloop-playbar').hidden = false;\n    prevOverflow = document.documentElement.style.overflow; document.documentElement.style.overflow = 'hidden';\n    viewer.enterPlay(game);\n    getMusic().then((m) => { if (m && store.get('bloop-music') !== 'off') { m.setMuted(false); m.play('game'); } });\n    addEventListener('keydown', kd); addEventListener('keyup', ku);\n    modeTimer = setInterval(syncMode, 250); syncMode();\n    $('[data-exit]').focus({ preventScroll: true });\n    $('[data-play]').disabled = false;\n  }\n  function stopGame() {\n    if (!game) return;\n    clearInterval(modeTimer); removeEventListener('keydown', kd); removeEventListener('keyup', ku);\n    viewer.exitPlay(); game.dispose(); game = null;\n    if (music) { if (musicOn) music.play('shop'); else music.stop(); }\n    root.classList.remove('is-playing'); stage.querySelector('.bloop-playbar').hidden = true; $('[data-claim]').hidden = true;\n    document.documentElement.style.overflow = prevOverflow;\n    $('[data-play]').focus({ preventScroll: true }); $('[data-play]').scrollIntoView({ block: 'center' });\n  }\n  $('[data-play]').addEventListener('click', startGame);\n  $('[data-exit]').addEventListener('click', stopGame);\n  $('[data-claim]').addEventListener('click', () => { if (!game) return; if (plugin) { applyReward(game._debug.S.result); stopGame(); } else { game.press('a', true); game.press('a', false); } });\n  $('[data-sound]').addEventListener('click', (e) => {\n    if (!game) return; const m = game.toggleSound(); music?.setMuted(m);\n    e.currentTarget.innerHTML = m ? I.mute : I.sound; e.currentTarget.setAttribute('aria-label', m ? 'Turn sound on' : 'Mute sound');\n  });\n}\n\ndocument.querySelectorAll('[data-bloop-root]').forEach(mount);\n"],
  "mappings": "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",
  "names": []
}
