{
  "version": 3,
  "sources": ["/cdn/shop/t/7/assets/dmb-tour.js?mncb=20260905a"],
  "sourcesContent": ["/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   BUILDER TOUR \u2014 interactive first-time walkthrough\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 */\n(function () {\n  var TOUR_KEY = \"dmb_tour_v1_done\";\n  var _step = 0, _active = false;\n  var _dropHandler = null;\n  var _globalClick = null; // document-level click gatekeeper\n\n  function tab(n) {\n    var b = document.querySelector(\".dmb-icon-tab[data-tab='\" + n + \"']\");\n    if (b) b.click();\n  }\n  function undo() {\n    var btn = document.getElementById(\"undoBtn\");\n    if (btn) btn.click();\n  }\n\n  var STEPS = [\n    /* 1 */  { sel:\"#addMorePhotosBtn\",\n               title:\"\uD83D\uDCF8 Add More Photos\",\n               desc:\"Click this button to open the photo picker and add more photos from your device.\",\n               action:\"click\",  before:function(){ tab(\"images\"); } },\n\n    /* \u2605 */   { sel:\".dmb-stage-header\",\n               title:\"\uD83E\uDDF0 Your Toolbar\",\n               desc:\"This bar is always at the top. Select any item \u2014 text, photo, shape or map \u2014 and its full editing menu appears here. With nothing selected, use it to quickly add items or run page actions like undo, layout and duplicate.\",\n               action:\"info\" },\n\n    /* 2 */  { sel:\"#dmbPicturesScrollArea\",\n               title:\"\uD83D\uDDBC\uFE0F Your Photo Library\",\n               desc:\"Your uploaded photos live here. Scroll through them \u2014 drag any photo onto a page or the cover to place it.\",\n               action:\"info\",  graphic:\"scroll\",  before:function(){ tab(\"images\"); } },\n\n    /* 3 */  { sel:\".dmb-icon-tab[data-tab='cover']\",\n               title:\"\uD83C\uDFA8 Open the Cover Designer\",\n               desc:\"Click this tab to open the cover panel and start designing your book cover.\",\n               action:\"click\",  before:function(){ tab(\"images\"); } },\n\n    /* 4 */  { sel:\".dmb-cover-zone-switcher\",\n               title:\"Front \u00B7 Back \u00B7 Spine\",\n               desc:\"Click Back or Spine to switch zones \u2014 each side can be designed independently.\",\n               action:\"click\",  before:function(){ tab(\"cover\"); } },\n\n    /* 5 */  { sel:\"#coverColorSwatch\",\n               title:\"\uD83C\uDFA8 Change the Cover Color\",\n               desc:\"Click the color swatch and pick a background color for your cover.\",\n               action:\"click\" },\n\n    /* 6 */  { sel:\"#chooseCoverTemplateBtn\",\n               title:\"\uD83D\uDCCB Choose a Cover Template\",\n               desc:\"Click here to browse our pre-designed templates and apply one instantly.\",\n               action:\"click\" },\n\n    /* 7 */  { sel:\"#chooseCoverLayoutBtn\",\n               title:\"\uD83D\uDDBC\uFE0F Cover Photo Layout\",\n               desc:\"Click here to add a photo frame grid to your cover front or back.\",\n               action:\"click\" },\n\n    /* 8 */  { sel:\".dmb-icon-tab[data-tab='stickers']\",\n               title:\"\u2728 Stickers, Icons & Maps\",\n               desc:\"Click this tab to explore icons, magazine logos, stickers and world maps.\",\n               action:\"click\" },\n\n    /* 9 */  { sel:\"#dmbBrowseStickersBtn\",\n               title:\"\uD83C\uDFC5 Cover Icons\",\n               desc:\"Click here to open the cover icons panel.\",\n               action:\"click\",  before:function(){ tab(\"stickers\"); } },\n\n    /* 10 */ { sel:\"#dmbMagIconsBtn\",\n               title:\"\uD83D\uDCF0 Magazine Icons\",\n               desc:\"Click here to explore brand-style magazine logos.\",\n               action:\"click\" },\n\n    /* 11 */ { sel:\"#dmbStickersBtn\",\n               title:\"\uD83C\uDF1F Stickers\",\n               desc:\"Click here to open the stickers library.\",\n               action:\"click\" },\n\n    /* 12 */ { sel:\"#addMyMapBtn\",\n               title:\"\uD83D\uDDFA\uFE0F Add a Map\",\n               desc:\"Click here to add a world map \u2014 then pin the places that matter to you.\",\n               action:\"click\",  before:function(){ tab(\"stickers\"); } },\n\n    /* 13 */ { sel:\"#canvasTextBtn\",\n               title:\"\u270F\uFE0F Add Text\",\n               desc:\"Click the Text button to add a text label \u2014 then drag it wherever you like on the cover.\",\n               action:\"click\",  before:function(){ tab(\"cover\"); } },\n\n    /* 14 */ { sel:\"#dmbPicturesScrollArea\",\n               title:\"\uD83D\uDCF7 Drop a Photo on the Cover\",\n               desc:\"Drag any photo from the tray and drop it onto the cover. We'll remove it after.\",\n               action:\"drop\",   before:function(){ tab(\"images\"); } },\n\n    /* 15 */ { sel:\"#thumbsRail\",\n               title:\"\uD83D\uDCC4 Click a Page\",\n               desc:\"Click any page thumbnail to jump to that page and start designing it.\",\n               action:\"click\" },\n\n    /* 16 */ { sel:\"#dmbPicturesScrollArea\",\n               title:\"\uD83D\uDDBC\uFE0F Drop a Photo on a Page\",\n               desc:\"Drag a photo from the tray and drop it onto the page spread. We'll remove it after.\",\n               action:\"drop\",   before:function(){ tab(\"images\"); } },\n\n    /* 17 */ { sel:\"#canvasTextBtn\",\n               title:\"\u270F\uFE0F Text on a Page\",\n               desc:\"Click the Text button to add a text label on the page \u2014 then drag it to position it.\",\n               action:\"click\" },\n\n    /* 18 */ { sel:\"#previewBtn\",\n               title:\"\uD83D\uDC41\uFE0F Preview Your Book\",\n               desc:\"Click Preview to review every page before confirming your order.\",\n               action:\"click\" }\n  ];\n\n  var _ov, _ring, _card, _cursor, _graphic, _curTarget, _curGraphic, _rafId = null;\n\n  /* \u2500\u2500 Build DOM \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function _build() {\n    [\"_dmbTourOverlay\",\"_dmbTourRing\",\"_dmbTourCard\",\n     \"_dmbTourCursor\",\"_dmbTourGraphic\",\"_dmbTourStyle\"].forEach(function(id){\n      var e = document.getElementById(id); if (e) e.remove();\n    });\n\n    // Visual-only overlay \u2014 pointer-events:none so clicks pass through to elements below.\n    // Blocking is done at document level via _globalClick.\n    _ov = document.createElement(\"div\");\n    _ov.id = \"_dmbTourOverlay\";\n    _ov.style.cssText = \"position:fixed;inset:0;z-index:99990;background:rgba(0,0,0,0.12);pointer-events:none;\";\n\n    _ring = document.createElement(\"div\");\n    _ring.id = \"_dmbTourRing\";\n    _ring.style.cssText = \"position:fixed;z-index:99992;border:3px solid #f59e0b;border-radius:10px;pointer-events:none;box-shadow:0 0 0 5px rgba(245,158,11,0.2);display:none;\";\n\n    _cursor = document.createElement(\"div\");\n    _cursor.id = \"_dmbTourCursor\";\n    _cursor.innerHTML = \"\uD83D\uDC46\";\n    _cursor.style.cssText = \"position:fixed;z-index:99994;font-size:26px;pointer-events:none;display:none;\";\n\n    _graphic = document.createElement(\"div\");\n    _graphic.id = \"_dmbTourGraphic\";\n    _graphic.style.cssText = \"position:fixed;z-index:99994;pointer-events:none;display:none;font-size:28px;\";\n\n    _card = document.createElement(\"div\");\n    _card.id = \"_dmbTourCard\";\n    _card.style.cssText = \"position:fixed;z-index:99995;width:420px;max-width:92vw;background:#fff;border-radius:16px;box-shadow:0 12px 48px rgba(0,0,0,0.22);padding:22px 24px 18px;pointer-events:all;display:none;\";\n    _card.innerHTML =\n      \"<div style='display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;'>\" +\n        \"<div id='_dT_title' style='font-size:15px;font-weight:900;color:#111;line-height:1.3;'></div>\" +\n        \"<button id='_dT_skip' style='background:none;border:none;font-size:12px;color:#bbb;cursor:pointer;white-space:nowrap;flex-shrink:0;padding:0;'>Skip tour \u2715</button>\" +\n      \"</div>\" +\n      \"<div id='_dT_desc' style='font-size:13px;color:#555;line-height:1.6;margin-bottom:16px;'></div>\" +\n      \"<div style='display:flex;align-items:center;justify-content:space-between;'>\" +\n        \"<div id='_dT_counter' style='font-size:12px;color:#ccc;font-weight:700;'></div>\" +\n        \"<div style='display:flex;gap:10px;'>\" +\n          \"<button id='_dT_prev' style='padding:8px 16px;border-radius:9px;border:1px solid #e5e5e5;background:#f9f9f9;color:#555;font-size:12px;font-weight:800;cursor:pointer;'>\u2190 Back</button>\" +\n          \"<button id='_dT_next' style='padding:8px 18px;border-radius:9px;border:none;background:#111;color:#fff;font-size:12px;font-weight:800;cursor:pointer;display:none;'>Next \u2192</button>\" +\n        \"</div>\" +\n      \"</div>\";\n\n    var style = document.createElement(\"style\");\n    style.id = \"_dmbTourStyle\";\n    style.textContent =\n      \"@keyframes _dmbRingPulse{0%,100%{box-shadow:0 0 0 5px rgba(245,158,11,0.2)}50%{box-shadow:0 0 0 12px rgba(245,158,11,0.05)}}\" +\n      \"#_dmbTourRing{animation:_dmbRingPulse 1.6s ease-in-out infinite;}\" +\n      \"@keyframes _dmbCursorTap{0%,100%{transform:scale(1)}50%{transform:scale(0.8) translate(-2px,-4px)}}\" +\n      \"#_dmbTourCursor{animation:_dmbCursorTap 0.9s ease-in-out infinite;}\" +\n      \"@keyframes _dmbHandScroll{0%{transform:translateX(0)}50%{transform:translateX(35px)}100%{transform:translateX(0)}}\" +\n      \"#_dmbTourGraphic{animation:_dmbHandScroll 1.8s ease-in-out infinite;}\";\n\n    document.head.appendChild(style);\n    document.body.appendChild(_ov);\n    document.body.appendChild(_ring);\n    document.body.appendChild(_cursor);\n    document.body.appendChild(_graphic);\n    document.body.appendChild(_card);\n\n    document.getElementById(\"_dT_skip\").onclick = function(){ _end(); };\n    document.getElementById(\"_dT_next\").onclick = function(){ _goto(_step + 1); };\n    document.getElementById(\"_dT_prev\").onclick = function(){ if(_step > 0) _goto(_step - 1); };\n\n    // \u2500\u2500 Document-level click gatekeeper \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    // Runs in capture phase (before anything else) on every click.\n    // Blocks all clicks except: tour card buttons, and the current highlighted element.\n    _globalClick = function(e) {\n      if (!_active) return;\n\n      var card = document.getElementById(\"_dmbTourCard\");\n      // Always allow clicks inside the tour card\n      if (card && card.contains(e.target)) return;\n\n      // Allow clicks inside any open modal/dialog so the user is never stuck\n      var modals = [\n        \"dmbCoverTemplateModal\",\n        \"dmb-cover-layout-modal\",\n        \"dmbCustomStickerModal\",\n        \"dmbMagIconModal\",\n        \"dmbMapModal\",\n        \"dmbPreviewOverlay\",\n        \"dmb-frame-shape-picker\",\n        \"dmbPhoneUploadModal\",\n        \"_dmbTourCard\"\n      ];\n      for (var mi = 0; mi < modals.length; mi++) {\n        var m = document.getElementById(modals[mi]);\n        if (m && m.style.display !== \"none\" && m.contains(e.target)) return;\n      }\n      // Also catch any dynamically created modal/overlay by checking if any\n      // ancestor is position:fixed with a meaningful z-index\n      if (e.target && e.target.closest) {\n        var p = e.target;\n        while (p && p !== document.body) {\n          var style = window.getComputedStyle(p);\n          var zi = parseInt(style.zIndex, 10);\n          if (!isNaN(zi) && zi > 1000 && style.position === \"fixed\") return;\n          p = p.parentElement;\n        }\n      }\n\n      var s = STEPS[_step];\n\n      // For \"info\" steps \u2014 block everything except the Next button (handled above)\n      if (s.action === \"info\") {\n        e.stopImmediatePropagation();\n        e.preventDefault();\n        return;\n      }\n\n      // For \"drop\" steps \u2014 allow drags but block regular clicks elsewhere\n      if (s.action === \"drop\") {\n        // Allow clicks inside the photo tray (to start a drag)\n        if (_curTarget && _curTarget.contains(e.target)) return;\n        e.stopImmediatePropagation();\n        e.preventDefault();\n        return;\n      }\n\n      // For \"click\" steps \u2014 allow the highlighted element to be clicked so its action runs\n      // (e.g. opens a panel), but DON'T auto-advance: the customer moves on with Next \u2192.\n      if (_curTarget) {\n        if (_curTarget.contains(e.target) || e.target === _curTarget) {\n          return; // let the click proceed normally; the Next button advances the tour\n        }\n      }\n\n      // Block everything else\n      e.stopImmediatePropagation();\n      e.preventDefault();\n    };\n    document.addEventListener(\"click\", _globalClick, true);\n\n    // Keep the highlight glued to the target on scroll/resize without a perpetual\n    // reflow loop (capture:true catches inner scrollers too).\n    window.addEventListener(\"scroll\", _scheduleLayout, true);\n    window.addEventListener(\"resize\", _scheduleLayout);\n  }\n\n  /* \u2500\u2500 Continuous positioning \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Re-reads the target's LIVE rect every frame so the ring, cursor,\n     hint graphic and card stay glued to the element even while the\n     customer scrolls, rotates the phone, or the layout shifts. This\n     is what makes the highlight \"sit in place\" instead of drifting. */\n  function _layout() {\n    if (!_active || !_curTarget) return;\n\n    if (!document.contains(_curTarget)) {\n      _ring.style.display = \"none\"; _cursor.style.display = \"none\"; _graphic.style.display = \"none\";\n      return;\n    }\n\n    var r = _curTarget.getBoundingClientRect();\n    var vw = window.innerWidth, vh = window.innerHeight;\n\n    if (r.width === 0 && r.height === 0) {\n      _ring.style.display = \"none\"; _cursor.style.display = \"none\"; _graphic.style.display = \"none\";\n      return;\n    }\n\n    var rx = Math.max(0, r.left - 4);\n    var ry = Math.max(0, r.top  - 4);\n    var rw = Math.min(r.width  + 8, vw - rx);\n    var rh = Math.min(r.height + 8, vh - ry);\n    _ring.style.left = rx + \"px\";\n    _ring.style.top  = ry + \"px\";\n    _ring.style.width  = rw + \"px\";\n    _ring.style.height = rh + \"px\";\n    _ring.style.display = \"block\";\n\n    if (_curGraphic === \"scroll\") {\n      _graphic.style.left = (rx + rw/2 - 14) + \"px\";\n      _graphic.style.top  = (ry + rh/2 - 14) + \"px\";\n      _graphic.style.display = \"block\";\n      _cursor.style.display  = \"none\";\n    } else {\n      var cs = 28;\n      var cx = rx + rw/2 - cs/2;\n      var cy;\n      if (ry + rh + cs + 8 < vh) { _cursor.innerHTML = \"\uD83D\uDC46\"; cy = ry + rh + 6; }\n      else { _cursor.innerHTML = \"\uD83D\uDC47\"; cy = Math.max(0, ry - cs - 6); }\n      _cursor.style.left    = Math.max(0, Math.min(cx, vw - cs)) + \"px\";\n      _cursor.style.top     = cy + \"px\";\n      _cursor.style.display = \"block\";\n      _graphic.style.display = \"none\";\n    }\n\n    // Card: use REAL measured height and keep it fully on-screen \u2014 below the ring\n    // if it fits, else above, else pinned inside the viewport. Stops the banner\n    // from sliding off-screen on small / landscape phones.\n    _card.style.display = \"block\";\n    var cardW = _card.offsetWidth  || Math.min(420, vw * 0.92);\n    var cardH = _card.offsetHeight || 155;\n    var cardLeft = Math.max(12, Math.min(vw/2 - cardW/2, vw - cardW - 12));\n    var cardTop;\n    if (ry + rh + 14 + cardH + 12 <= vh)  cardTop = ry + rh + 14;    // below the ring\n    else if (ry - cardH - 14 >= 12)       cardTop = ry - cardH - 14; // above the ring\n    else                                  cardTop = vh - cardH - 12; // pin to bottom\n    cardTop = Math.max(12, Math.min(cardTop, vh - cardH - 12));\n    _card.style.left = cardLeft + \"px\";\n    _card.style.top  = cardTop  + \"px\";\n  }\n\n  // Reposition is now EVENT-DRIVEN instead of an always-on rAF loop (that loop\n  // forced a full layout/reflow every frame for the whole tour \u2014 the source of\n  // the lag). We reposition on scroll/resize (rAF-throttled) plus a short burst\n  // right after each step so panel-open animations stay glued, then go idle.\n  var _reflowRaf = null, _burstUntil = 0;\n  function _scheduleLayout() {\n    if (_reflowRaf != null) return;\n    _reflowRaf = requestAnimationFrame(function () { _reflowRaf = null; _layout(); });\n  }\n  function _tick() {\n    _rafId = null;\n    if (!_active) return;\n    _layout();\n    if (performance.now() < _burstUntil) _rafId = requestAnimationFrame(_tick);\n  }\n  function _startTick() {\n    _burstUntil = performance.now() + 700;           // ~0.7s smooth burst per step\n    if (_rafId == null) _rafId = requestAnimationFrame(_tick);\n  }\n  function _stopTick() {\n    if (_rafId != null) { cancelAnimationFrame(_rafId); _rafId = null; }\n    if (_reflowRaf != null) { cancelAnimationFrame(_reflowRaf); _reflowRaf = null; }\n  }\n\n  /* \u2500\u2500 Show step \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function _goto(idx) {\n    if (!_active) return;\n    if (idx >= STEPS.length) { _end(true); return; }\n    _step = idx;\n    var s = STEPS[idx];\n\n    _curTarget = null;\n    _graphic.style.display = \"none\";\n    _cursor.style.display  = \"none\";\n\n    if (_dropHandler) {\n      document.removeEventListener(\"dragend\", _dropHandler, true);\n      _dropHandler = null;\n    }\n\n    if (s.before) { try { s.before(); } catch(e){} }\n\n    // Wait for UI to update after tab switch\n    setTimeout(function() {\n      var el; try { el = document.querySelector(s.sel); } catch(e){}\n      if (!el) { _goto(idx + 1); return; }\n\n      _curTarget = el;\n\n      var r = el.getBoundingClientRect();\n      if (r.top < 0 || r.bottom > window.innerHeight) {\n        el.scrollIntoView({ behavior:\"smooth\", block:\"center\" });\n      }\n\n      setTimeout(function() {\n        r = el.getBoundingClientRect();\n\n        // If element has zero size it's hidden inside a collapsed panel \u2014 skip\n        if (r.width === 0 && r.height === 0) { _goto(idx + 1); return; }\n\n        _curGraphic = s.graphic || null;\n        if (s.graphic === \"scroll\") _graphic.innerHTML = \"\uD83E\uDD1A\";\n\n        document.getElementById(\"_dT_title\").textContent   = s.title;\n        document.getElementById(\"_dT_desc\").textContent    = s.desc;\n        document.getElementById(\"_dT_counter\").textContent = (idx+1) + \" / \" + STEPS.length;\n\n        var nb = document.getElementById(\"_dT_next\");\n        var pb = document.getElementById(\"_dT_prev\");\n        nb.textContent = idx === STEPS.length-1 ? \"Finish \u2713\" : \"Next \u2192\";\n        // ALWAYS show Next \u2192 so the customer can advance the tour without having to click\n        // the highlighted element (they can still click it if they want to try it).\n        nb.style.display = \"inline-block\";\n        pb.style.visibility = idx === 0 ? \"hidden\" : \"visible\";\n\n        // Position everything now, then keep it LOCKED to the element every frame\n        // (so scrolling / rotating / layout shifts can't desync the ring or card).\n        _layout();\n        _startTick();\n\n        // Drop steps: listen for dragend anywhere on the document\n        if (s.action === \"drop\") {\n          _dropHandler = function() {\n            if (!_active || _step !== idx) return;\n            document.removeEventListener(\"dragend\", _dropHandler, true);\n            _dropHandler = null;\n            setTimeout(function() {\n              undo();\n              setTimeout(function(){ _goto(idx + 1); }, 300);\n            }, 500);\n          };\n          document.addEventListener(\"dragend\", _dropHandler, true);\n        }\n      }, 250);\n    }, 500);\n  }\n\n  /* \u2500\u2500 End tour \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function _end(completed) {\n    _active = false;\n    _stopTick();\n    window.removeEventListener(\"scroll\", _scheduleLayout, true);\n    window.removeEventListener(\"resize\", _scheduleLayout);\n    document.documentElement.style.overflow = \"\";\n    document.body.style.overflow = \"\";\n    if (_globalClick) {\n      document.removeEventListener(\"click\", _globalClick, true);\n      _globalClick = null;\n    }\n    if (_dropHandler) {\n      document.removeEventListener(\"dragend\", _dropHandler, true);\n      _dropHandler = null;\n    }\n    [\"_dmbTourOverlay\",\"_dmbTourRing\",\"_dmbTourCard\",\n     \"_dmbTourCursor\",\"_dmbTourGraphic\",\"_dmbTourStyle\"].forEach(function(id){\n      var e = document.getElementById(id); if (e) e.remove();\n    });\n    try { localStorage.setItem(TOUR_KEY, \"1\"); } catch(e) {}\n    try { document.dispatchEvent(new CustomEvent(\"dmb:tourEnded\")); } catch(e) {}\n  }\n\n  /* \u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  window.dmbStartTour = function() {\n    try { if (localStorage.getItem(TOUR_KEY)) return; } catch(e) {}\n    var builderEl = document.getElementById(\"step2\");\n    if (!builderEl || builderEl.style.display === \"none\") return;\n    _active = true; _step = 0;\n    _build();\n    _goto(0);\n  };\n\n  window.dmbRestartTour = function() {\n    try { localStorage.removeItem(TOUR_KEY); } catch(e) {}\n    _end();\n    setTimeout(function() {\n      _active = true; _step = 0;\n      _build();\n      _goto(0);\n    }, 150);\n  };\n})();\n"],
  "mappings": "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",
  "names": ["style"]
}
