{
  "version": 3,
  "sources": ["/cdn/shop/t/19/assets/minestone-diy-exact-visual-r4-20260722.js?tce=diy-exact-visual-r4-20260722"],
  "sourcesContent": ["(() => {\n  const roots = document.querySelectorAll(\"[data-minestone-diy]\");\n\n  if (!document.getElementById(\"minestone-diy-mobile-emma-spacing\")) {\n    const style = document.createElement(\"style\");\n    style.id = \"minestone-diy-mobile-emma-spacing\";\n    style.textContent = `\n      @media (max-width: 900px) {\n        [data-minestone-diy] .minestone-diy__stage {\n          min-height: 326px;\n          height: clamp(326px, 46svh, 440px);\n          padding: 60px 8px 8px;\n        }\n        [data-minestone-diy] .minestone-diy__ring-wrap {\n          width: min(100%, 336px, calc(100svw - 34px), 39svh);\n          max-height: 100%;\n          transform: none;\n        }\n      }\n      @media (max-width: 430px) {\n        [data-minestone-diy] .minestone-diy__stage {\n          min-height: 326px;\n          height: min(43svh, 360px);\n        }\n        [data-minestone-diy] .minestone-diy__ring-wrap {\n          width: min(100%, 326px, calc(100svw - 34px), 37svh);\n        }\n      }\n    `;\n    document.head.appendChild(style);\n  }\n\n  document.querySelectorAll(\".tce-diy-seo__inner\").forEach((inner) => {\n    if (inner.dataset.disclosureReady === \"true\") return;\n\n    const disclosure = document.createElement(\"details\");\n    const summary = document.createElement(\"summary\");\n    disclosure.className = \"tce-diy-seo__disclosure\";\n    summary.textContent = \"Bracelet planning guides\";\n    disclosure.append(summary);\n\n    while (inner.firstChild) disclosure.append(inner.firstChild);\n    inner.append(disclosure);\n    inner.dataset.disclosureReady = \"true\";\n  });\n\n  if (!roots.length) return;\n\n  const beadMasters = [\n    { category: \"Accessories\", name: \"\u5929\u7136\u51B0\u79CD\u5929\u6CB3\u77F37\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u51B0\u79CD\u5929\u6CB3\u77F37\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-001.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u6A59\u6708\u5149\u77F3\", internalName: \"5A\u5929\u7136\u6A59\u6708\u5149\u77F3\", image: \"running-ring-002.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u7C89\u6676\", internalName: \"\u5929\u7136\u7C89\u6676\", image: \"running-ring-003.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u767D\u8272\u73CD\u73E0\u8D1D\", internalName: \"\u5929\u7136\u767D\u8272\u73CD\u73E0\u8D1D\", image: \"running-ring-004.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u7D2B\u6C34\u6676\", internalName: \"5A\u5929\u7136\u7D2B\u6C34\u6676\", image: \"running-ring-005.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u84DD\u6708\u5149\u77F3\", internalName: \"5A\u5929\u7136\u84DD\u6708\u5149\u77F3\", image: \"running-ring-006.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u9EC4\u6C34\u6676\", internalName: \"5A\u5929\u7136\u9EC4\u6C34\u6676\", image: \"running-ring-007.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"7A\u5929\u7136\u7070\u6708\u5149\u77F3\", internalName: \"7A\u5929\u7136\u7070\u6708\u5149\u77F3\", image: \"running-ring-008.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u8461\u8404\u77F3\", internalName: \"5A\u5929\u7136\u8461\u8404\u77F3\", image: \"running-ring-009.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"7A\u5929\u7136\u767D\u6C34\u6676\", internalName: \"7A\u5929\u7136\u767D\u6C34\u6676\", image: \"running-ring-010.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"7A\u5929\u7136\u8336\u6C34\u6676\", internalName: \"7A\u5929\u7136\u8336\u6C34\u6676\", image: \"running-ring-011.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"7A\u5929\u7136\u767D\u739B\u7459\", internalName: \"7A\u5929\u7136\u767D\u739B\u7459\", image: \"running-ring-012.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u7D2B\u5E7D\u7075\", internalName: \"\u5929\u7136\u7D2B\u5E7D\u7075\", image: \"running-ring-013.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u7EA2\u80F6\u82B1\u6C34\u6676\", internalName: \"3A\u5929\u7136\u7EA2\u80F6\u82B1\u6C34\u6676\", image: \"running-ring-014.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"7A\u5929\u7136\u51B0\u79CD\u6C34\u8349\u739B\u7459\", internalName: \"7A\u5929\u7136\u51B0\u79CD\u6C34\u8349\u739B\u7459\", image: \"running-ring-015.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u6C34\u8349\u739B\u7459\", internalName: \"5A\u5929\u7136\u6C34\u8349\u739B\u7459\", image: \"running-ring-016.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u9ED1\u53D1\u6676\", internalName: \"3A\u5929\u7136\u9ED1\u53D1\u6676\", image: \"running-ring-017.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u767D\u8272\u732B\u773C\u77F3\", internalName: \"\u767D\u8272\u732B\u773C\u77F3\", image: \"running-ring-018.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u7EFF\u5E7D\u7075\u6C34\u6676\", internalName: \"\u5929\u7136\u7EFF\u5E7D\u7075\u6C34\u6676\", image: \"running-ring-019.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"7A\u5929\u7136\u6D77\u84DD\u5B9D\", internalName: \"7A\u5929\u7136\u6D77\u84DD\u5B9D\", image: \"running-ring-020.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u8424\u77F3\", internalName: \"3A\u5929\u7136\u8424\u77F3\", image: \"running-ring-021.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u68C9\u7D6E\u91D1\u53D1\u6676\", internalName: \"\u5929\u7136\u68C9\u7D6E\u91D1\u53D1\u6676\", image: \"running-ring-022.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u4F18\u5316\u84DD\u677E\u77F3\", internalName: \"\u4F18\u5316\u84DD\u677E\u77F3\", image: \"running-ring-023.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"7A\u7EA2\u739B\u7459\", internalName: \"7A\u7EA2\u739B\u7459\", image: \"running-ring-024.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u9752\u91D1\u77F3\", internalName: \"5A\u5929\u7136\u9752\u91D1\u77F3\", image: \"running-ring-025.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u77F3\u69B4\u77F3\", internalName: \"5A\u5929\u7136\u77F3\u69B4\u77F3\", image: \"running-ring-026.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u9ED1\u8272\u6761\u7EB9\u739B\u7459\", internalName: \"\u5929\u7136\u9ED1\u8272\u6761\u7EB9\u739B\u7459\", image: \"running-ring-027.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u7C89\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", internalName: \"\u5929\u7136\u7C89\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", image: \"running-ring-028.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u8349\u8393\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u8349\u8393\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", image: \"running-ring-029.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"2A\u5929\u7136\u9EC4\u5854\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", internalName: \"2A\u5929\u7136\u9EC4\u5854\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", image: \"running-ring-030.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u9EC4\u80F6\u82B1\u6C34\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", internalName: \"\u5929\u7136\u9EC4\u80F6\u82B1\u6C34\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", image: \"running-ring-031.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u7D2B\u6C34\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u7D2B\u6C34\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", image: \"running-ring-032.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u767D\u6C34\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", internalName: \"5A\u5929\u7136\u767D\u6C34\u6676\u5706\u73E0\u6D41\u82CF\u8DD1\u73AF\", image: \"running-ring-033.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u767D\u6C34\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", internalName: \"5A\u5929\u7136\u767D\u6C34\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-034.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u7C89\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u7C89\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-035.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u7D2B\u6C34\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u7D2B\u6C34\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-036.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u8349\u8393\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", internalName: \"5A\u5929\u7136\u8349\u8393\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-037.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"1A\u5929\u7136\u9EC4\u5854\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", internalName: \"1A\u5929\u7136\u9EC4\u5854\u6676\u94DC\u9694\u5708\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-038.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u7EA2\u7EFF\u5B9D8\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u7EA2\u7EFF\u5B9D8\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-039.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u6DF1\u7C89\u6FB3\u5B9D8\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u6DF1\u7C89\u6FB3\u5B9D8\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-040.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u5929\u6CB3\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u5929\u6CB3\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-041.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u68A6\u5E7B\u6D77\u84DD\u5B9D8\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u68A6\u5E7B\u6D77\u84DD\u5B9D8\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-042.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u9ED1\u91D1\u8D85\u4E03\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u9ED1\u91D1\u8D85\u4E03\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-043.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u767D\u6708\u51498\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u767D\u6708\u51498\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-044.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u5F69\u8424\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u5F69\u8424\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-045.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"7A\u5929\u7136\u8336\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"7A\u5929\u7136\u8336\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-046.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u9ED1\u53D1\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u9ED1\u53D1\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-047.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u51B0\u900F\u91D1\u53D1\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u51B0\u900F\u91D1\u53D1\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-048.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u6469\u6839\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"5A\u5929\u7136\u6469\u6839\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-049.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u8349\u8393\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"5A\u5929\u7136\u8349\u8393\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-050.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u7EA2\u53D1\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u7EA2\u53D1\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-051.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u7EFF\u8424\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u7EFF\u8424\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-052.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u7EA2\u80F6\u82B1\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u7EA2\u80F6\u82B1\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-053.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u68A6\u5E7B\u7D2B\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"5A\u5929\u7136\u68A6\u5E7B\u7D2B\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-054.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u9752\u91D1\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u9752\u91D1\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-055.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u51B0\u79CD\u7C89\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u51B0\u79CD\u7C89\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-056.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u8461\u8404\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"5A\u5929\u7136\u8461\u8404\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-057.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u7EFF\u8349\u8393\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u7EFF\u8349\u8393\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-058.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"3A\u5929\u7136\u767D\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"3A\u5929\u7136\u767D\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-059.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"7A\u5929\u7136\u767D\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"7A\u5929\u7136\u767D\u6C34\u66768\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-060.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"5A\u5929\u7136\u91D1\u592A\u9633\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"5A\u5929\u7136\u91D1\u592A\u9633\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-061.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 },\n    { category: \"Accessories\", name: \"\u5929\u7136\u51B0\u79CD\u5929\u6CB3\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", internalName: \"\u5929\u7136\u51B0\u79CD\u5929\u6CB3\u77F38\u9897\u5706\u73E0\u8DD1\u73AF\", image: \"running-ring-062.png\", sizes: [8], price: 0, kind: \"accessory\", spacingMm: 3.2, visualWidthMm: 4.4, visualHeightMm: 18, hangOffsetMm: 0 }\n  ];\n\n  const jiuyaCatalog = window.MinestoneJiuyaCatalog || {};\n  const accessoryCatalog = window.MinestoneAccessoryCatalog || {};\n  const componentMap = window.MinestoneDIYComponentMap || {};\n  const accessoryMapping = accessoryCatalog.mappingByImage || {};\n  beadMasters.forEach((master) => {\n    if (master.category === \"Accessories\" && accessoryMapping[master.image]) {\n      Object.assign(master, accessoryMapping[master.image]);\n    }\n  });\n  beadMasters.push(...(jiuyaCatalog.beads || []));\n  beadMasters.push(...(accessoryCatalog.items || []));\n\n  function componentBinding(master, size) {\n    if (master.itemId?.startsWith(\"ACC-\")) {\n      return componentMap.components?.[master.itemId] || null;\n    }\n    if (master.itemId?.startsWith(\"RUNNING-RING-\")) {\n      const componentId = master.itemId.replace(\"RUNNING-RING-\", \"RING-\");\n      return componentMap.components?.[componentId] || null;\n    }\n    return componentMap.beads?.[`${master.image}|${size}`]\n      || componentMap.beads?.[`${master.name}|${size}`]\n      || null;\n  }\n\n  const catalog = beadMasters.flatMap((master) => (\n    master.sizes.map((size) => ({\n      ...master,\n      size,\n      masterName: master.name,\n      component: componentBinding(master, size)\n    }))\n  ));\n  const imageFillRatios = {\n    \"7a-clear-quartz.png\": 0.659,\n    \"7a-sunstone.png\": 0.673,\n    \"7a-tea-quartz.png\": 0.736,\n    \"aquamarine.png\": 0.748,\n    \"amazonite.png\": 0.787,\n    \"amethyst.png\": 0.785,\n    \"ametrine.png\": 0.786,\n    \"black-tourmaline.png\": 0.789,\n    \"blue-cherry-blossom-agate.png\": 0.785,\n    \"blue-tiger-eye.png\": 0.698,\n    \"color-rabbit-hair-quartz.png\": 0.739,\n    \"fantasy-amethyst.png\": 0.782,\n    \"fantasy-tiger-eye.png\": 0.793,\n    \"golden-citrine.png\": 0.752,\n    \"golden-obsidian.png\": 0.79,\n    \"golden-silk-jade.png\": 0.783,\n    \"green-aventurine.png\": 0.789,\n    \"green-cherry-blossom-agate.png\": 0.795,\n    \"green-phantom-quartz.png\": 0.782,\n    \"hetian-jade.png\": 0.686,\n    \"honey-yellow-jade.png\": 0.742,\n    \"indian-blue-moonstone.png\": 0.748,\n    \"indian-moss-agate.png\": 0.793,\n    \"jiuzi-lihuo.png\": 0.659,\n    \"kyanite.png\": 0.757,\n    \"morganite.png\": 0.78,\n    \"mutton-fat-jade.png\": 0.714,\n    \"natural-violet-stone.png\": 0.784,\n    \"old-mine-strawberry-quartz.png\": 0.793,\n    \"opaque-rose-quartz.png\": 0.753,\n    \"prehnite.png\": 0.813,\n    \"purple-lepidolite.png\": 0.79,\n    \"purple-phantom-quartz.png\": 0.779,\n    \"rainbow-eye-obsidian.png\": 0.792,\n    \"rainbow-multistone.png\": 0.691,\n    \"red-agate.png\": 0.788,\n    \"red-crystal-sand.png\": 0.717,\n    \"red-garden-quartz.png\": 0.744,\n    \"rhodonite-rose-stone.png\": 0.795,\n    \"selenite-gypsum.png\": 0.784,\n    \"silver-obsidian.png\": 0.749,\n    \"snowflake-phantom.png\": 0.722,\n    \"snowflake-stone.png\": 0.76,\n    \"super-seven.png\": 0.726,\n    \"white-turquoise.png\": 0.779,\n    \"xiuyan-jade.png\": 0.642,\n    \"yellow-garden-quartz.png\": 0.79,\n    \"yellow-tiger-eye.png\": 0.785\n  };\n  Object.assign(imageFillRatios, jiuyaCatalog.imageFillRatios || {});\n  const imageRoundnessFix = {\n    \"7a-clear-quartz.png\": 1.036,\n    \"7a-sunstone.png\": 1.058,\n    \"7a-tea-quartz.png\": 1.048,\n    \"aquamarine.png\": 1.033,\n    \"amazonite.png\": 1.03,\n    \"amethyst.png\": 1.021,\n    \"ametrine.png\": 1.028,\n    \"black-tourmaline.png\": 1.023,\n    \"blue-cherry-blossom-agate.png\": 1.025,\n    \"blue-tiger-eye.png\": 1.021,\n    \"color-rabbit-hair-quartz.png\": 1.008,\n    \"fantasy-amethyst.png\": 1.026,\n    \"fantasy-tiger-eye.png\": 1.03,\n    \"golden-citrine.png\": 1.043,\n    \"golden-obsidian.png\": 1.02,\n    \"golden-silk-jade.png\": 1.038,\n    \"green-aventurine.png\": 1.027,\n    \"green-cherry-blossom-agate.png\": 1.035,\n    \"green-phantom-quartz.png\": 1.022,\n    \"hetian-jade.png\": 1.045,\n    \"honey-yellow-jade.png\": 1.046,\n    \"indian-blue-moonstone.png\": 1.039,\n    \"indian-moss-agate.png\": 1.043,\n    \"jiuzi-lihuo.png\": 1.018,\n    \"kyanite.png\": 1.024,\n    \"morganite.png\": 1.022,\n    \"mutton-fat-jade.png\": 1.024,\n    \"natural-violet-stone.png\": 1.024,\n    \"old-mine-strawberry-quartz.png\": 1.023,\n    \"opaque-rose-quartz.png\": 1.036,\n    \"prehnite.png\": 1.011,\n    \"purple-lepidolite.png\": 1.011,\n    \"purple-phantom-quartz.png\": 1.03,\n    \"rainbow-eye-obsidian.png\": 1.021,\n    \"rainbow-multistone.png\": 1.04,\n    \"red-agate.png\": 1.032,\n    \"red-crystal-sand.png\": 1.05,\n    \"red-garden-quartz.png\": 1.026,\n    \"rhodonite-rose-stone.png\": 1.036,\n    \"selenite-gypsum.png\": 1.026,\n    \"silver-obsidian.png\": 1.03,\n    \"snowflake-phantom.png\": 1.068,\n    \"snowflake-stone.png\": 1.027,\n    \"super-seven.png\": 1.032,\n    \"white-turquoise.png\": 1.023,\n    \"xiuyan-jade.png\": 1.044,\n    \"yellow-garden-quartz.png\": 1.03,\n    \"yellow-tiger-eye.png\": 1.019\n  };\n  Object.assign(imageRoundnessFix, jiuyaCatalog.imageRoundnessFix || {});\n  const beadVisualScaleCorrections = {\n    \"black-agate.png\": 0.7712,\n    \"charoite.png\": 0.9859,\n    \"golden-rutilated-quartz.png\": 0.8989,\n    \"golden-sunstone.png\": 0.9993,\n    \"green-rutilated-quartz.png\": 0.8091,\n    \"iolite.png\": 0.8216,\n    \"jiuya-025.png\": 1.0344,\n    \"jiuya-026.png\": 0.8998,\n    \"jiuya-027.png\": 0.9784,\n    \"jiuya-029.png\": 1.0662,\n    \"jiuya-030.png\": 1.0567,\n    \"jiuya-031.png\": 0.9018,\n    \"jiuya-033.png\": 0.919,\n    \"jiuya-034.png\": 1.0583,\n    \"jiuya-035.png\": 0.907,\n    \"jiuya-036.png\": 0.9114,\n    \"jiuya-037.png\": 0.8278,\n    \"jiuya-038.png\": 0.9872,\n    \"jiuya-039.png\": 0.9221,\n    \"jiuya-040.png\": 0.857,\n    \"jiuya-041.png\": 0.8409,\n    \"jiuya-042.png\": 0.9362,\n    \"jiuya-044.png\": 0.7828,\n    \"jiuya-045.png\": 0.8314,\n    \"jiuya-046.png\": 0.8269,\n    \"jiuya-047.png\": 0.8306,\n    \"jiuya-048.png\": 0.9468,\n    \"jiuya-049.png\": 0.9053,\n    \"jiuya-050.png\": 0.9855,\n    \"jiuya-051.png\": 1.107,\n    \"jiuya-052.png\": 0.9621,\n    \"jiuya-053.png\": 0.9772,\n    \"jiuya-054.png\": 0.9172,\n    \"jiuya-056.png\": 0.9684,\n    \"jiuya-057.png\": 0.8387,\n    \"jiuya-058.png\": 1.0051,\n    \"jiuya-059.png\": 0.8417,\n    \"jiuya-060.png\": 0.9555,\n    \"jiuya-061.png\": 0.8569,\n    \"jiuya-062.png\": 0.7138,\n    \"jiuya-064.png\": 0.7661,\n    \"jiuya-065.png\": 0.9224,\n    \"jiuya-068.png\": 0.7721,\n    \"jiuya-069.png\": 0.8847,\n    \"jiuya-073.png\": 0.87,\n    \"jiuya-074.png\": 0.9339,\n    \"jiuya-075.png\": 0.908,\n    \"jiuya-077.png\": 1.0019,\n    \"jiuya-078.png\": 0.9747,\n    \"jiuya-080.png\": 0.9607,\n    \"jiuya-091.png\": 0.8377,\n    \"jiuya-093.png\": 1.0546,\n    \"jiuya-094.png\": 0.9201,\n    \"jiuya-095.png\": 0.9942,\n    \"jiuya-096.png\": 0.9717,\n    \"jiuya-097.png\": 0.8657,\n    \"jiuya-098.png\": 0.9312,\n    \"jiuya-099.png\": 0.9806,\n    \"jiuya-100.png\": 0.8799,\n    \"jiuya-101.png\": 0.9585,\n    \"jiuya-103.png\": 1.0635,\n    \"jiuya-104.png\": 1.0786,\n    \"jiuya-105.png\": 0.989,\n    \"lapis-lazuli.png\": 0.7703,\n    \"larimar.png\": 0.9779,\n    \"pietersite.png\": 0.9819,\n    \"rainbow-moonstone.png\": 1.0017,\n    \"tanzanite.png\": 0.87,\n    \"white-moonstone.png\": 1.003,\n    \"wine-red-garnet.png\": 0.7999,\n    \"black-rutilated-quartz.png\": 0.8537,\n    \"blue-fluorite.png\": 0.8308,\n    \"hubei-turquoise.png\": 0.7709,\n    \"jiuya-021.png\": 0.8964,\n    \"jiuya-022.png\": 0.9884,\n    \"jiuya-023.png\": 0.9504,\n    \"jiuya-024.png\": 0.9174,\n    \"jiuya-028.png\": 0.9565,\n    \"jiuya-032.png\": 0.9164,\n    \"jiuya-043.png\": 0.9185,\n    \"jiuya-055.png\": 1.0877,\n    \"jiuya-063.png\": 0.7707,\n    \"jiuya-066.png\": 0.9999,\n    \"jiuya-067.png\": 0.9448,\n    \"jiuya-070.png\": 0.9837,\n    \"jiuya-071.png\": 0.9114,\n    \"jiuya-072.png\": 0.9559,\n    \"jiuya-076.png\": 0.9493,\n    \"jiuya-079.png\": 1.0577,\n    \"jiuya-081.png\": 0.8406,\n    \"jiuya-082.png\": 0.9686,\n    \"jiuya-083.png\": 0.966,\n    \"jiuya-084.png\": 0.8605,\n    \"jiuya-085.png\": 0.9376,\n    \"jiuya-086.png\": 0.9111,\n    \"jiuya-087.png\": 0.9834,\n    \"jiuya-088.png\": 0.8549,\n    \"jiuya-089.png\": 0.9418,\n    \"jiuya-090.png\": 0.7219,\n    \"jiuya-092.png\": 0.8622,\n    \"jiuya-102.png\": 0.775,\n    \"jiuya-106.png\": 0.9167,\n    \"jiuya-107.png\": 0.9586,\n    \"red-rutilated-quartz.png\": 0.7605,\n    \"rhodochrosite.png\": 1.0679,\n    \"silver-moonstone.png\": 0.9338,\n    \"sugilite.png\": 1.0116\n  };\n  const sizes = [...new Set(catalog.map((item) => item.size))].sort((a, b) => a - b);\n  const accessoryStyles = accessoryCatalog.styles || [];\n  const defaultCm = 13;\n  const targetPxPerMm = 8.2;\n\n  function uuid() {\n    if (crypto.randomUUID) return crypto.randomUUID();\n    return `ms-${Date.now()}-${Math.random().toString(16).slice(2)}`;\n  }\n\n  function money() {\n    return priceNote();\n  }\n\n  function priceNote() {\n    return \"Price shown at checkout\";\n  }\n\n  function cm(value) {\n    return Number(value).toFixed(1).replace(/\\.0$/, \"\");\n  }\n\n  function priceFor(item) {\n    return (item.component?.unitPriceCents || 0) / 100;\n  }\n\n  function formatMoney(value, currencyCode, currencyCodeEnabled, fallbackSymbol) {\n    const amount = Number(value || 0);\n    if (currencyCode && window.Intl?.NumberFormat) {\n      try {\n        return new Intl.NumberFormat(undefined, {\n          style: \"currency\",\n          currency: currencyCode,\n          currencyDisplay: currencyCodeEnabled ? \"code\" : \"symbol\"\n        }).format(amount);\n      } catch (error) {\n        // Fall through to the simple formatter below.\n      }\n    }\n    return `${fallbackSymbol || \"$\"}${amount.toFixed(2)}${currencyCodeEnabled && currencyCode ? ` ${currencyCode}` : \"\"}`;\n  }\n\n  roots.forEach((root) => {\n    window.MinestoneDIYBindingAudit = {\n      total: catalog.length,\n      missing: catalog.filter((item) => !item.component).map((item) => `${item.image}|${item.size}`)\n    };\n    root.dataset.componentBindingTotal = String(catalog.length);\n    root.dataset.componentBindingMissing = String(catalog.filter((item) => !item.component).length);\n    root.dataset.componentMapSha = componentMap.sourceSha256 || \"\";\n    const assetBase = root.dataset.assetBase;\n    const variantId = root.dataset.variantId;\n    const currencyCode = root.dataset.currencyCode || \"\";\n    const currencySymbol = root.dataset.currencySymbol || \"$\";\n    const currencyCodeEnabled = root.dataset.currencyCodeEnabled === \"true\";\n\n    function track(eventName, parameters = {}) {\n      return window.TCEDIYAnalytics?.emit?.(eventName, parameters) || false;\n    }\n\n    function trackStart(startAction) {\n      return window.TCEDIYAnalytics?.emitBuilderStart?.(startAction) || false;\n    }\n\n    function designCounts(items = selected) {\n      const accessoryCount = items.filter((item) => isAccessory(item)).length;\n      return {\n        design_item_count: items.length,\n        bead_count: items.length - accessoryCount,\n        accessory_count: accessoryCount\n      };\n    }\n    const selected = [];\n    let targetLengthCm = defaultCm;\n    let targetLengthIsExplicit = false;\n    let targetLengthValid = true;\n    let activeCategory = \"Accessories\";\n    let activeSize = 8;\n    let lastBeadSize = activeSize;\n    let activeAccessoryStyle = null;\n    let activeUid = null;\n    let toastTimer = null;\n    let dragState = null;\n    let addInFlight = false;\n    let suppressClickUid = null;\n    let lastBeadClick = { uid: null, time: 0 };\n\n    const els = {\n      categoryList: root.querySelector(\"[data-category-list]\"),\n      sizeList: root.querySelector(\"[data-size-list]\"),\n      secondaryTitle: root.querySelector(\"[data-secondary-title]\"),\n      secondaryHint: root.querySelector(\"[data-secondary-hint]\"),\n      catalog: root.querySelector(\"[data-catalog]\"),\n      ringWrap: root.querySelector(\"[data-ring-wrap]\"),\n      ring: root.querySelector(\"[data-ring]\"),\n      empty: root.querySelector(\"[data-empty]\"),\n      beadCount: root.querySelector(\"[data-bead-count]\"),\n      beadLength: root.querySelector(\"[data-bead-length]\"),\n      wristLengthInput: root.querySelector(\"[data-wrist-length-input]\"),\n      applyLength: root.querySelector(\"[data-apply-length]\"),\n      beadValue: root.querySelector(\"[data-bead-value]\"),\n      feedback: root.querySelector(\"[data-builder-feedback]\"),\n      guideOpen: root.querySelector(\"[data-guide-open]\"),\n      guide: root.querySelector(\"[data-diy-guide]\"),\n      guideClose: root.querySelector(\"[data-guide-close]\"),\n      add: root.querySelector(\"[data-add-design]\"),\n      clear: root.querySelector(\"[data-clear-design]\"),\n      toast: root.querySelector(\"[data-toast]\")\n    };\n\n    function imageFor(item) {\n      const accessoryVersion = item.image.startsWith(\"diy-accessory-\") ? \"?v=final-151-transparent-20260720\" : \"\";\n      return `${assetBase}${item.image}${accessoryVersion}`;\n    }\n\n    function isAccessory(item) {\n      return item.kind === \"accessory\";\n    }\n\n    function isRunningRing(item) {\n      return item.itemId?.startsWith(\"RUNNING-RING-\");\n    }\n\n    function isNonRunningAccessory(item) {\n      return usesAccessoryPlacement(item) && !isRunningRing(item);\n    }\n\n    function usesAccessoryPlacement(item) {\n      return isAccessory(item) || item.itemId?.startsWith(\"ACC-\");\n    }\n\n    function lineSizeMm(item) {\n      return item.spacingMm || item.size;\n    }\n\n    function accessoryVisualScale(item) {\n      if (isRunningRing(item)) return 0.68;\n      return isNonRunningAccessory(item) ? 0.5508 : 1;\n    }\n\n    function nonRunningAccessoryVisualScale() {\n      return window.matchMedia(\"(max-width: 749px)\").matches ? 0.648 : 0.5508;\n    }\n\n    function nonRunningAccessoryVisibleWidthMm(item) {\n      // spacingMm was generated from the audited alpha width at a fixed 1.28205 normalization.\n      return lineSizeMm(item) * nonRunningAccessoryVisualScale() / 1.28205;\n    }\n\n    function nonRunningAccessorySafetyGapMm() {\n      return window.matchMedia(\"(max-width: 749px)\").matches ? 0.35 : 0.2;\n    }\n\n    function accessoryArcSidesMm(item, lineMm) {\n      const widthMm = item.visualWidthMm || item.size;\n      const heightMm = item.visualHeightMm || item.size;\n      const radiusMm = lineMm / (Math.PI * 2);\n      // The accepted 62-image alpha template has slightly asymmetric inner edges.\n      const beforeMm = radiusMm * Math.atan(\n        (widthMm * 0.3425) / Math.max(0.1, radiusMm - heightMm * 0.3906432749)\n      );\n      const afterMm = radiusMm * Math.atan(\n        (widthMm * 0.3923444976) / Math.max(0.1, radiusMm - heightMm * 0.3964912281)\n      );\n      return { beforeMm, afterMm };\n    }\n\n    function layoutGeometryAtLine(items, lineMm) {\n      const accessorySides = items.map((item) => (\n        isAccessory(item) ? accessoryArcSidesMm(item, lineMm) : null\n      ));\n      const pairDistancesMm = items.map((item, index) => {\n        const nextIndex = (index + 1) % items.length;\n        const next = items[nextIndex];\n        if (isNonRunningAccessory(item) || isNonRunningAccessory(next)) {\n          const afterMm = isNonRunningAccessory(item)\n            ? nonRunningAccessoryVisibleWidthMm(item) / 2\n            : accessorySides[index]?.afterMm || lineSizeMm(item) / 2;\n          const beforeMm = isNonRunningAccessory(next)\n            ? nonRunningAccessoryVisibleWidthMm(next) / 2\n            : accessorySides[nextIndex]?.beforeMm || lineSizeMm(next) / 2;\n          return Math.max(0.1, afterMm + beforeMm + nonRunningAccessorySafetyGapMm());\n        }\n        if (!isAccessory(item) && !isAccessory(next)) {\n          return (lineSizeMm(item) + lineSizeMm(next)) / 2;\n        }\n        const afterMm = accessorySides[index]?.afterMm || lineSizeMm(item) * 0.475;\n        const beforeMm = accessorySides[nextIndex]?.beforeMm || lineSizeMm(next) * 0.475;\n        const guardMm = isAccessory(item) && isAccessory(next) ? 0.005 : 0.05;\n        const contactInsetMm = isAccessory(item) && isAccessory(next) ? 0.46 : 0.28;\n        return Math.max(0.1, afterMm + beforeMm + guardMm - contactInsetMm);\n      });\n      const centersMm = [];\n      let centerMm = items.length ? lineSizeMm(items[0]) / 2 : 0;\n      items.forEach((item, index) => {\n        centersMm.push(centerMm);\n        centerMm += pairDistancesMm[index];\n      });\n      const footprintsMm = items.map((item, index) => (\n        accessorySides[index]\n          ? accessorySides[index].beforeMm + accessorySides[index].afterMm + 0.05\n          : lineSizeMm(item)\n      ));\n      return { centersMm, footprintsMm, pairDistancesMm };\n    }\n\n    function layoutFootprintMetrics(items = selected) {\n      let lineMm = Math.max(defaultCm * 10, items.reduce((sum, item) => sum + lineSizeMm(item), 0));\n      let footprintsMm = items.map((item) => lineSizeMm(item));\n      let centersMm = items.map((item, index) => (\n        items.slice(0, index).reduce((sum, other) => sum + lineSizeMm(other), 0) + lineSizeMm(item) / 2\n      ));\n\n      for (let pass = 0; pass < 6; pass += 1) {\n        const geometry = layoutGeometryAtLine(items, lineMm);\n        footprintsMm = geometry.footprintsMm;\n        centersMm = geometry.centersMm;\n        const nextLineMm = Math.max(defaultCm * 10, geometry.pairDistancesMm.reduce((sum, distance) => sum + distance, 0));\n        if (Math.abs(nextLineMm - lineMm) < 0.001) {\n          lineMm = nextLineMm;\n          const stableGeometry = layoutGeometryAtLine(items, lineMm);\n          footprintsMm = stableGeometry.footprintsMm;\n          centersMm = stableGeometry.centersMm;\n          break;\n        }\n        lineMm = nextLineMm;\n      }\n\n      return { lineMm, footprintsMm, centersMm };\n    }\n\n    function categories() {\n      return [...new Set(beadMasters.map((item) => item.category))];\n    }\n\n    function categoryHasSize(category, size) {\n      return catalog.some((item) => item.category === category && item.size === size);\n    }\n\n    function categoryHasBeads(category) {\n      return catalog.some((item) => item.category === category);\n    }\n\n    function firstSizeForCategory(category) {\n      return sizes.find((size) => categoryHasSize(category, size)) || null;\n    }\n\n    function ensureAvailableSize() {\n      if (activeCategory === \"Accessories\") return;\n      if (categoryHasSize(activeCategory, activeSize)) return;\n      const fallback = firstSizeForCategory(activeCategory);\n      if (fallback) activeSize = fallback;\n    }\n\n    function filteredCatalog() {\n      return catalog\n        .filter((item) => {\n          if (activeCategory === \"Accessories\") {\n            return item.category === activeCategory\n              && (!activeAccessoryStyle || item.styleCategory === activeAccessoryStyle);\n          }\n          return item.category === activeCategory && item.size === activeSize;\n        })\n        .sort((a, b) => (a.displayOrder || 0) - (b.displayOrder || 0));\n    }\n\n    function beadLength(items = selected) {\n      return items.reduce((sum, item) => sum + (isAccessory(item) ? 0 : item.size), 0) / 10;\n    }\n\n    function braceletLength(items = selected) {\n      if (items === selected && targetLengthIsExplicit && targetLengthValid) {\n        return targetLengthCm;\n      }\n      return Math.max(defaultCm, beadLength(items));\n    }\n\n    function visualLineLengthMm(items = selected) {\n      return layoutFootprintMetrics(items).lineMm;\n    }\n\n    function setImplicitLengthFromDesign() {\n      targetLengthIsExplicit = false;\n      targetLengthValid = true;\n      targetLengthCm = Math.max(defaultCm, beadLength());\n      els.wristLengthInput?.setAttribute(\"aria-invalid\", \"false\");\n    }\n\n    function repeatDesignToLength(pattern, lengthCm) {\n      const sourcePattern = pattern.map(({ uid, ...item }) => item);\n      const cycleBeadMm = sourcePattern.reduce(\n        (sum, item) => sum + (isAccessory(item) ? 0 : Number(item.size) || 0),\n        0\n      );\n      if (!sourcePattern.length || cycleBeadMm <= 0) return null;\n\n      const targetMm = lengthCm * 10;\n      const repeated = [];\n      let currentMm = 0;\n      let index = 0;\n      while (currentMm < targetMm) {\n        const item = sourcePattern[index % sourcePattern.length];\n        const itemMm = isAccessory(item) ? 0 : Number(item.size) || 0;\n        if (itemMm > 0 && currentMm + itemMm >= targetMm) {\n          const currentDifference = Math.abs(targetMm - currentMm);\n          const nextDifference = Math.abs(targetMm - currentMm - itemMm);\n          if (!repeated.some((candidate) => !isAccessory(candidate)) || nextDifference <= currentDifference) {\n            repeated.push({ ...item, uid: uuid() });\n          }\n          break;\n        }\n        repeated.push({ ...item, uid: uuid() });\n        currentMm += itemMm;\n        index += 1;\n      }\n      return repeated;\n    }\n\n    function applyTargetLength() {\n      if (!els.wristLengthInput) return;\n      const rawValue = els.wristLengthInput.value.trim();\n      const parsed = Number(rawValue);\n      targetLengthValid = rawValue !== \"\" && Number.isFinite(parsed) && parsed > 0;\n      els.wristLengthInput.setAttribute(\"aria-invalid\", String(!targetLengthValid));\n      if (!targetLengthValid) {\n        els.add.disabled = true;\n        if (els.feedback) els.feedback.textContent = \"Enter a positive bracelet length.\";\n        toast(\"Enter a positive bracelet length.\");\n        return;\n      }\n      targetLengthCm = parsed;\n      targetLengthIsExplicit = true;\n      if (!selected.length) {\n        if (els.feedback) els.feedback.textContent = \"Choose at least one crystal, then apply the length.\";\n        toast(\"Choose at least one crystal first.\");\n        return;\n      }\n      const repeated = repeatDesignToLength(selected, parsed);\n      if (!repeated) {\n        if (els.feedback) els.feedback.textContent = \"Add at least one crystal bead to calculate this length.\";\n        toast(\"Add at least one crystal bead first.\");\n        return;\n      }\n      selected.splice(0, selected.length, ...repeated);\n      activeUid = null;\n      renderRing();\n      renderSummary();\n      toast(`Bracelet length set to ${cm(parsed)} cm.`);\n    }\n\n    function selectedBeadValue() {\n      return selected.reduce((sum, item) => sum + priceFor(item), 0);\n    }\n\n    function isDesktopPreview() {\n      return window.matchMedia?.(\"(min-width: 901px)\").matches;\n    }\n\n    function shouldShowAddToast() {\n      return window.matchMedia?.(\"(min-width: 901px)\").matches;\n    }\n\n    function toast(message) {\n      clearTimeout(toastTimer);\n      els.toast.textContent = message;\n      els.toast.classList.add(\"is-visible\");\n      toastTimer = setTimeout(() => els.toast.classList.remove(\"is-visible\"), 1600);\n    }\n\n    function setMobileViewportHeight() {\n      if (!window.matchMedia?.(\"(max-width: 900px)\").matches) {\n        root.style.removeProperty(\"--ms-mobile-viewport-height\");\n        return;\n      }\n      const height = window.visualViewport?.height || window.innerHeight;\n      root.style.setProperty(\"--ms-mobile-viewport-height\", `${Math.round(height)}px`);\n    }\n\n    function setupGuide() {\n      if (!els.guide || !els.guideOpen || !els.guideClose) return;\n      const tabs = [...els.guide.querySelectorAll('[role=\"tab\"]')];\n      const panels = [...els.guide.querySelectorAll('[role=\"tabpanel\"]')];\n      let returnFocus = null;\n\n      const activateTab = (tab, moveFocus = true) => {\n        tabs.forEach((candidate) => {\n          const isActive = candidate === tab;\n          candidate.setAttribute(\"aria-selected\", String(isActive));\n          candidate.tabIndex = isActive ? 0 : -1;\n        });\n        panels.forEach((panel) => {\n          panel.hidden = panel.id !== tab.getAttribute(\"aria-controls\");\n        });\n        if (moveFocus) tab.focus();\n      };\n\n      const closeGuide = () => {\n        if (els.guide.open) els.guide.close();\n      };\n\n      els.guideOpen.addEventListener(\"click\", () => {\n        returnFocus = document.activeElement;\n        if (typeof els.guide.showModal === \"function\") {\n          els.guide.showModal();\n        } else {\n          els.guide.setAttribute(\"open\", \"\");\n        }\n        activateTab(tabs.find((tab) => tab.getAttribute(\"aria-selected\") === \"true\") || tabs[0], false);\n        els.guideClose.focus();\n      });\n\n      els.guideClose.addEventListener(\"click\", closeGuide);\n      els.guide.addEventListener(\"cancel\", (event) => {\n        event.preventDefault();\n        closeGuide();\n      });\n      els.guide.addEventListener(\"close\", () => {\n        returnFocus?.focus?.();\n        returnFocus = null;\n      });\n      els.guide.addEventListener(\"click\", (event) => {\n        if (event.target === els.guide) closeGuide();\n      });\n      tabs.forEach((tab, index) => {\n        tab.addEventListener(\"click\", () => activateTab(tab));\n        tab.addEventListener(\"keydown\", (event) => {\n          if (![\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(event.key)) return;\n          event.preventDefault();\n          let nextIndex = index;\n          if (event.key === \"ArrowLeft\") nextIndex = (index - 1 + tabs.length) % tabs.length;\n          if (event.key === \"ArrowRight\") nextIndex = (index + 1) % tabs.length;\n          if (event.key === \"Home\") nextIndex = 0;\n          if (event.key === \"End\") nextIndex = tabs.length - 1;\n          activateTab(tabs[nextIndex]);\n        });\n      });\n      els.guide.addEventListener(\"keydown\", (event) => {\n        if (event.key !== \"Tab\") return;\n        const focusable = [...els.guide.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), [tabindex]:not([tabindex=\"-1\"])')]\n          .filter((element) => !element.closest('[hidden]'));\n        if (!focusable.length) return;\n        const first = focusable[0];\n        const last = focusable[focusable.length - 1];\n        if (event.shiftKey && document.activeElement === first) {\n          event.preventDefault();\n          last.focus();\n        } else if (!event.shiftKey && document.activeElement === last) {\n          event.preventDefault();\n          first.focus();\n        }\n      });\n    }\n\n    function previewMetrics(items = selected) {\n      const layout = layoutFootprintMetrics(items);\n      const requestedLineMm = items === selected && targetLengthIsExplicit && targetLengthValid\n        ? targetLengthCm * 10\n        : layout.lineMm;\n      const lineMm = Math.max(0.1, requestedLineMm);\n      const centerScale = layout.lineMm > 0 ? lineMm / layout.lineMm : 1;\n      const maxVisualBeadMm = Math.max(8, ...items.map((item) => (\n        isAccessory(item)\n          ? (item.visualHeightMm || item.size) * accessoryVisualScale(item)\n          : (item.size / (imageFillRatios[item.image] || 0.78)) * (imageRoundnessFix[item.image] || 1)\n      )));\n      const lineDiameterMm = lineMm / Math.PI;\n      const outerDiameterMm = lineDiameterMm + maxVisualBeadMm;\n      const wrapWidth = els.ringWrap?.clientWidth || 520;\n      const fitPxPerMm = Math.max(2.2, (wrapWidth - 36) / outerDiameterMm);\n      const pxPerMm = Math.min(targetPxPerMm, fitPxPerMm);\n\n      return {\n        lineMm,\n        lineDiameterPx: lineDiameterMm * pxPerMm,\n        outerDiameterPx: outerDiameterMm * pxPerMm,\n        radiusPx: (lineDiameterMm * pxPerMm) / 2,\n        pxPerMm,\n        layoutFootprintsMm: layout.footprintsMm,\n        layoutCentersMm: layout.centersMm.map((center) => center * centerScale)\n      };\n    }\n\n    function renderCategories() {\n      els.categoryList.innerHTML = \"\";\n      categories().forEach((category) => {\n        const isAvailable = categoryHasBeads(category);\n        const button = document.createElement(\"button\");\n        button.type = \"button\";\n        button.className = [\n          \"minestone-diy__category\",\n          category === activeCategory ? \"is-active\" : \"\",\n          isAvailable ? \"\" : \"is-disabled\"\n        ].filter(Boolean).join(\" \");\n        button.textContent = category;\n        if (category === \"Accessories\") {\n          button.textContent = \"\";\n          button.append(\"Access\", document.createElement(\"wbr\"), \"ories\");\n          button.setAttribute(\"aria-label\", category);\n          button.title = category;\n        }\n        button.disabled = !isAvailable;\n        button.setAttribute(\"aria-disabled\", String(!isAvailable));\n        if (!isAvailable) {\n          button.title = \"No beads available\";\n          button.setAttribute(\"aria-label\", `${category}. No beads available`);\n        }\n        button.addEventListener(\"click\", () => {\n          if (!isAvailable) {\n            toast(\"No beads available.\");\n            return;\n          }\n          if (category === \"Accessories\" && activeCategory !== \"Accessories\") {\n            lastBeadSize = activeSize;\n          }\n          if (category !== \"Accessories\" && activeCategory === \"Accessories\") {\n            activeAccessoryStyle = null;\n            activeSize = lastBeadSize;\n          }\n          activeCategory = category;\n          ensureAvailableSize();\n          render();\n        });\n        els.categoryList.appendChild(button);\n      });\n    }\n\n    function renderSizes() {\n      els.sizeList.innerHTML = \"\";\n      const showingAccessories = activeCategory === \"Accessories\";\n      root.classList.toggle(\"is-accessories-active\", showingAccessories);\n      els.secondaryTitle.textContent = showingAccessories ? \"Accessory style\" : \"Bead size\";\n      els.secondaryHint.textContent = showingAccessories ? \"Choose by accessory type\" : \"2-18 mm\";\n      els.sizeList.setAttribute(\"aria-label\", showingAccessories ? \"Accessory style\" : \"Bead size\");\n      if (showingAccessories) {\n        accessoryStyles.forEach((style) => {\n          const count = catalog.filter((item) => (\n            item.category === \"Accessories\" && item.styleCategory === style\n          )).length;\n          if (!count) return;\n          const button = document.createElement(\"button\");\n          button.type = \"button\";\n          button.className = [\n            \"minestone-diy__pill\",\n            style === activeAccessoryStyle ? \"is-active\" : \"\"\n          ].filter(Boolean).join(\" \");\n          const label = document.createElement(\"span\");\n          label.className = \"minestone-diy__pill-text\";\n          style.split(\" \").forEach((word, index) => {\n            if (index > 0 && word !== \"&\") label.appendChild(document.createElement(\"br\"));\n            label.append(document.createTextNode(index > 0 && word === \"&\" ? ` ${word}` : word));\n          });\n          button.appendChild(label);\n          button.setAttribute(\"aria-pressed\", String(style === activeAccessoryStyle));\n          button.addEventListener(\"click\", () => {\n            activeAccessoryStyle = style;\n            render();\n          });\n          els.sizeList.appendChild(button);\n        });\n        return;\n      }\n      sizes.forEach((size) => {\n        const isAvailable = categoryHasSize(activeCategory, size);\n        const button = document.createElement(\"button\");\n        button.type = \"button\";\n        button.className = [\n          \"minestone-diy__pill\",\n          size === activeSize ? \"is-active\" : \"\",\n          isAvailable ? \"\" : \"is-disabled\"\n        ].filter(Boolean).join(\" \");\n        button.textContent = `${size} mm`;\n        button.disabled = !isAvailable;\n        button.setAttribute(\"aria-disabled\", String(!isAvailable));\n        if (!isAvailable) {\n          button.title = \"No beads in this size\";\n          button.setAttribute(\"aria-label\", `${size} mm. No beads in this size`);\n        }\n        button.addEventListener(\"click\", () => {\n          if (!isAvailable) {\n            toast(\"No beads in this size.\");\n            return;\n          }\n          activeSize = size;\n          lastBeadSize = size;\n          render();\n          trackStart(\"size_select\");\n          track(\"diy_size_select\", {\n            bead_family: activeCategory || \"unknown\",\n            bead_size_mm: activeSize\n          });\n        });\n        els.sizeList.appendChild(button);\n      });\n    }\n\n    function renderCatalog() {\n      const items = filteredCatalog();\n      els.catalog.innerHTML = \"\";\n      if (!items.length) {\n        els.catalog.innerHTML = '<p class=\"minestone-diy__empty\">No items available yet.</p>';\n        return;\n      }\n      items.forEach((item) => {\n        const button = document.createElement(\"button\");\n        button.type = \"button\";\n        button.className = \"minestone-diy__card\";\n        button.dataset.componentId = item.component?.componentId || \"\";\n        button.dataset.variantId = item.component?.variantId || \"\";\n        button.style.setProperty(\"--bead-scale-x\", imageRoundnessFix[item.image] || 1);\n        if (isAccessory(item)) button.classList.add(\"minestone-diy__card--accessory\");\n        const meta = formatMoney(priceFor(item), currencyCode, currencyCodeEnabled, currencySymbol);\n        button.title = item.name;\n        button.setAttribute(\"aria-label\", `${item.name}, ${meta}`);\n        button.innerHTML = `<img alt=\"${item.name}\" src=\"${imageFor(item)}\"><span class=\"minestone-diy__card-name\">${item.name}</span><span class=\"minestone-diy__card-meta\">${meta}</span>`;\n        button.addEventListener(\"click\", () => addBead(item));\n        els.catalog.appendChild(button);\n      });\n    }\n\n    function addBead(item) {\n      selected.push({ ...item, uid: uuid() });\n      setImplicitLengthFromDesign();\n      activeUid = null;\n      renderRing();\n      renderSummary();\n      const counts = designCounts();\n      if (isAccessory(item)) {\n        trackStart(\"accessory_select\");\n        track(\"diy_accessory_select\", {\n          accessory_type: item.styleCategory || item.kind || \"unknown\",\n          accessory_id: item.itemId || item.component?.componentId || \"unknown\",\n          design_item_count: counts.design_item_count,\n          accessory_count: counts.accessory_count\n        });\n      } else {\n        trackStart(\"bead_select\");\n        track(\"diy_bead_select\", {\n          bead_family: item.category || \"unknown\",\n          bead_size_mm: item.size || \"unknown\",\n          design_item_count: counts.design_item_count,\n          bead_count: counts.bead_count\n        });\n      }\n      if (shouldShowAddToast()) {\n        toast(`Added ${item.name}`);\n      }\n    }\n\n    function removeBead(uid) {\n      const index = selected.findIndex((item) => item.uid === uid);\n      if (index >= 0) {\n        const [removed] = selected.splice(index, 1);\n        setImplicitLengthFromDesign();\n        activeUid = null;\n        renderRing();\n        renderSummary();\n        toast(`Removed ${removed.name}`);\n      }\n    }\n\n    function committedRenderCentersMm(items, layout) {\n      const centersMm = layout.centersMm.slice();\n      if (!window.matchMedia(\"(max-width: 749px)\").matches || items.length <= 2) {\n        return centersMm;\n      }\n\n      const pairDistancesMm = items.map((item, index) => {\n        const nextIndex = (index + 1) % items.length;\n        return nextIndex\n          ? layout.centersMm[nextIndex] - layout.centersMm[index]\n          : layout.lineMm - layout.centersMm[index] + layout.centersMm[0];\n      });\n      const accessoryPairs = items.map((item, index) => (\n        usesAccessoryPlacement(item) || usesAccessoryPlacement(items[(index + 1) % items.length])\n      ));\n      const ordinaryPairs = accessoryPairs\n        .map((isAccessoryPair, index) => isAccessoryPair ? -1 : index)\n        .filter((index) => index >= 0);\n      if (!ordinaryPairs.length) return centersMm;\n\n      let releasedMm = 0;\n      const adjustedPairsMm = pairDistancesMm.map((distanceMm, index) => {\n        if (!accessoryPairs[index]) return distanceMm;\n        const tightenMm = Math.min(0.15, Math.max(0, distanceMm - 0.1));\n        releasedMm += tightenMm;\n        return distanceMm - tightenMm;\n      });\n      const returnMm = releasedMm / ordinaryPairs.length;\n      ordinaryPairs.forEach((index) => { adjustedPairsMm[index] += returnMm; });\n      for (let index = 1; index < items.length; index += 1) {\n        centersMm[index] = centersMm[index - 1] + adjustedPairsMm[index - 1];\n      }\n      return centersMm;\n    }\n\n    function nonRunningInsertionIndexForAngle(items, item, targetRatio) {\n      let bestIndex = 0;\n      let bestError = Infinity;\n      for (let insertIndex = 0; insertIndex <= items.length; insertIndex += 1) {\n        const candidate = [...items];\n        candidate.splice(insertIndex, 0, item);\n        const layout = layoutFootprintMetrics(candidate);\n        const centersMm = committedRenderCentersMm(candidate, layout);\n        const centerRatio = ((centersMm[insertIndex] / layout.lineMm) % 1 + 1) % 1;\n        const directError = Math.abs(centerRatio - targetRatio);\n        const circularError = Math.min(directError, 1 - directError);\n        if (circularError < bestError - 1e-9) {\n          bestIndex = insertIndex;\n          bestError = circularError;\n        }\n      }\n      return bestIndex;\n    }\n\n    function reorderBead(uid, angle) {\n      const index = selected.findIndex((item) => item.uid === uid);\n      if (index < 0) return;\n\n      const [item] = selected.splice(index, 1);\n      const accessoryLayout = isAccessory(item) ? layoutFootprintMetrics([...selected, item]) : null;\n      const lineMm = accessoryLayout\n        ? accessoryLayout.lineMm\n        : braceletLength([...selected, item]) * 10;\n      const normalized = ((angle + Math.PI / 2) % (Math.PI * 2) + Math.PI * 2) % (Math.PI * 2);\n      const targetRatio = normalized / (Math.PI * 2);\n      const targetMm = (normalized / (Math.PI * 2)) * lineMm;\n\n      let insertIndex = 0;\n      if (isNonRunningAccessory(item) && selected.length) {\n        insertIndex = nonRunningInsertionIndexForAngle(selected, item, targetRatio);\n      } else if (accessoryLayout && selected.length) {\n        const selectedGeometry = layoutGeometryAtLine(selected, lineMm);\n        selectedGeometry.centersMm.forEach((centerMm, otherIndex) => {\n          if (targetMm > centerMm) insertIndex = otherIndex + 1;\n        });\n      } else {\n        let cursorMm = 0;\n        selected.forEach((other, otherIndex) => {\n          const midpointMm = cursorMm + lineSizeMm(other) / 2;\n          if (targetMm > midpointMm) insertIndex = otherIndex + 1;\n          cursorMm += lineSizeMm(other);\n        });\n      }\n      selected.splice(insertIndex, 0, item);\n      activeUid = uid;\n    }\n\n    function eventPoint(event) {\n      const touch = event.changedTouches?.[0] || event.touches?.[0];\n      if (touch) return { x: touch.clientX, y: touch.clientY };\n      if (typeof event.clientX === \"number\" && typeof event.clientY === \"number\") {\n        return { x: event.clientX, y: event.clientY };\n      }\n      return null;\n    }\n\n    function closestAccessoryTarget(point, fallbackItem, fallbackBead) {\n      if (!usesAccessoryPlacement(fallbackItem)) return { item: fallbackItem, bead: fallbackBead };\n\n      let closest = { item: fallbackItem, bead: fallbackBead, distance: Infinity };\n      els.ring.querySelectorAll(\".minestone-diy__bead--accessory\").forEach((candidate) => {\n        const rect = candidate.getBoundingClientRect();\n        const distance = Math.hypot(\n          point.x - (rect.left + rect.width / 2),\n          point.y - (rect.top + rect.height / 2)\n        );\n        const candidateItem = selected.find((entry) => entry.uid === candidate.dataset.uid);\n        if (candidateItem && distance < closest.distance) {\n          closest = { item: candidateItem, bead: candidate, distance };\n        }\n      });\n      return { item: closest.item, bead: closest.bead };\n    }\n\n    function activateBead(uid) {\n      const item = selected.find((entry) => entry.uid === uid);\n      if (!item) return;\n\n      const now = Date.now();\n      const isDoubleClick = lastBeadClick.uid === uid && now - lastBeadClick.time <= 360;\n      lastBeadClick = { uid, time: now };\n\n      if (isDoubleClick) {\n        lastBeadClick = { uid: null, time: 0 };\n        removeBead(uid);\n      } else {\n        activeUid = uid;\n        renderRing();\n      }\n    }\n\n    function suppressNativeClick(uid) {\n      suppressClickUid = uid;\n      setTimeout(() => {\n        if (suppressClickUid === uid) suppressClickUid = null;\n      }, 500);\n    }\n\n    function beginBeadDrag(event, sourceItem, sourceBead) {\n      if (dragState) return;\n      if (event.button !== undefined && event.button !== 0) return;\n      const point = eventPoint(event);\n      if (!point) return;\n      const target = closestAccessoryTarget(point, sourceItem, sourceBead);\n      const item = target.item;\n      const bead = target.bead;\n\n      const metrics = previewMetrics();\n      const ringRect = els.ring.getBoundingClientRect();\n      const beadRect = bead.getBoundingClientRect();\n      const beadSize = parseFloat(bead.style.getPropertyValue(\"--size\")) || 0;\n      const inputMode = event.type.startsWith(\"pointer\")\n        ? \"pointer\"\n        : event.type.startsWith(\"touch\") ? \"touch\" : \"mouse\";\n      const isMobilePointer = window.matchMedia(\"(max-width: 900px) and (pointer: coarse)\").matches;\n      dragState = {\n        uid: item.uid,\n        bead,\n        captureBead: sourceBead,\n        sourceUid: sourceItem.uid,\n        isAccessory: usesAccessoryPlacement(item),\n        inputMode,\n        pointerId: inputMode === \"pointer\" ? event.pointerId : null,\n        startX: point.x,\n        startY: point.y,\n        centerX: ringRect.left + ringRect.width / 2,\n        centerY: ringRect.top + ringRect.height / 2,\n        grabOffsetX: isNonRunningAccessory(item) ? point.x - (beadRect.left + beadRect.width / 2) : 0,\n        grabOffsetY: isNonRunningAccessory(item) ? point.y - (beadRect.top + beadRect.height / 2) : 0,\n        deleteDistancePx: metrics.radiusPx + beadSize * 0.9 + 24,\n        activationDistancePx: isNonRunningAccessory(item)\n          ? 1\n          : usesAccessoryPlacement(item) && isMobilePointer ? 2 : usesAccessoryPlacement(item) ? 3 : 6,\n        moved: false,\n        removing: false,\n        angle: 0\n      };\n      activeUid = item.uid;\n      bead.classList.add(\"is-dragging\");\n      if (inputMode === \"pointer\") {\n        sourceBead.setPointerCapture?.(event.pointerId);\n        document.addEventListener(\"pointermove\", updateBeadDrag);\n        document.addEventListener(\"pointerup\", endBeadDrag);\n        document.addEventListener(\"pointercancel\", endBeadDrag);\n      } else if (inputMode === \"touch\") {\n        document.addEventListener(\"touchmove\", updateBeadDrag, { passive: false });\n        document.addEventListener(\"touchend\", endBeadDrag);\n        document.addEventListener(\"touchcancel\", endBeadDrag);\n      } else {\n        document.addEventListener(\"mousemove\", updateBeadDrag);\n        document.addEventListener(\"mouseup\", endBeadDrag);\n      }\n    }\n\n    function updateBeadDrag(event) {\n      if (!dragState) return;\n      if (\n        dragState.inputMode === \"pointer\"\n        && event.pointerId !== dragState.pointerId\n      ) return;\n      const coalescedEvents = event.getCoalescedEvents?.();\n      const point = eventPoint(coalescedEvents?.[coalescedEvents.length - 1] || event);\n      if (!point) return;\n\n      const moveX = point.x - dragState.startX;\n      const moveY = point.y - dragState.startY;\n      if (!dragState.moved && Math.hypot(moveX, moveY) < dragState.activationDistancePx) return;\n\n      dragState.moved = true;\n      if (event.cancelable) event.preventDefault();\n\n      const x = point.x - dragState.centerX - dragState.grabOffsetX;\n      const y = point.y - dragState.centerY - dragState.grabOffsetY;\n      const distance = Math.hypot(x, y);\n      dragState.angle = Math.atan2(y, x);\n      dragState.removing = distance > dragState.deleteDistancePx;\n      dragState.bead.style.setProperty(\"--x\", `${x}px`);\n      dragState.bead.style.setProperty(\"--y\", `${y}px`);\n      if (dragState.isAccessory) {\n        dragState.bead.style.setProperty(\"--rotate\", `${dragState.angle * 180 / Math.PI + 90}deg`);\n      }\n      dragState.bead.classList.toggle(\"is-removing\", dragState.removing);\n    }\n\n    function endBeadDrag(event) {\n      if (!dragState) return;\n      if (\n        dragState.inputMode === \"pointer\"\n        && event.pointerId !== dragState.pointerId\n      ) return;\n\n      updateBeadDrag(event);\n      const state = dragState;\n      dragState = null;\n      if (state.pointerId !== null && state.captureBead.hasPointerCapture?.(state.pointerId)) {\n        state.captureBead.releasePointerCapture(state.pointerId);\n      }\n      state.bead.classList.remove(\"is-dragging\", \"is-removing\");\n      if (state.inputMode === \"pointer\") {\n        document.removeEventListener(\"pointermove\", updateBeadDrag);\n        document.removeEventListener(\"pointerup\", endBeadDrag);\n        document.removeEventListener(\"pointercancel\", endBeadDrag);\n      } else if (state.inputMode === \"touch\") {\n        document.removeEventListener(\"touchmove\", updateBeadDrag);\n        document.removeEventListener(\"touchend\", endBeadDrag);\n        document.removeEventListener(\"touchcancel\", endBeadDrag);\n      } else {\n        document.removeEventListener(\"mousemove\", updateBeadDrag);\n        document.removeEventListener(\"mouseup\", endBeadDrag);\n      }\n\n      suppressNativeClick(state.sourceUid);\n      if (!state.moved) {\n        activateBead(state.uid);\n        return;\n      }\n\n      event.preventDefault();\n      if (state.removing) {\n        removeBead(state.uid);\n      } else {\n        reorderBead(state.uid, state.angle);\n        renderRing();\n        renderSummary();\n        trackStart(\"design_reorder\");\n        track(\"diy_design_reorder\", designCounts());\n      }\n    }\n\n    function renderRing() {\n      els.ring.querySelectorAll(\".minestone-diy__bead\").forEach((node) => node.remove());\n      els.empty.hidden = selected.length > 0;\n\n      const metrics = previewMetrics();\n      els.ring.style.setProperty(\"--ring-diameter\", `${metrics.lineDiameterPx}px`);\n      els.ring.style.setProperty(\"--preview-size\", `${metrics.outerDiameterPx + 36}px`);\n      if (!selected.length) return;\n\n      const useConfirmedMobileStageSizing = window.matchMedia(\"(max-width: 749px)\").matches;\n      const renderCentersMm = metrics.layoutCentersMm.slice();\n      if (useConfirmedMobileStageSizing && selected.length > 2) {\n        const pairDistancesMm = selected.map((item, index) => {\n          const nextIndex = (index + 1) % selected.length;\n          return nextIndex\n            ? metrics.layoutCentersMm[nextIndex] - metrics.layoutCentersMm[index]\n            : metrics.lineMm - metrics.layoutCentersMm[index] + metrics.layoutCentersMm[0];\n        });\n        const accessoryPairs = selected.map((item, index) => (\n          usesAccessoryPlacement(item) || usesAccessoryPlacement(selected[(index + 1) % selected.length])\n        ));\n        const ordinaryPairs = accessoryPairs\n          .map((isAccessoryPair, index) => isAccessoryPair ? -1 : index)\n          .filter((index) => index >= 0);\n\n        if (ordinaryPairs.length) {\n          let releasedMm = 0;\n          const adjustedPairsMm = pairDistancesMm.map((distanceMm, index) => {\n            if (!accessoryPairs[index]) return distanceMm;\n            const tightenMm = Math.min(0.15, Math.max(0, distanceMm - 0.1));\n            releasedMm += tightenMm;\n            return distanceMm - tightenMm;\n          });\n          const returnMm = releasedMm / ordinaryPairs.length;\n          ordinaryPairs.forEach((index) => { adjustedPairsMm[index] += returnMm; });\n          for (let index = 1; index < selected.length; index += 1) {\n            renderCentersMm[index] = renderCentersMm[index - 1] + adjustedPairsMm[index - 1];\n          }\n        }\n      }\n\n      selected.forEach((item, itemIndex) => {\n        const centerMm = renderCentersMm[itemIndex];\n        const angle = -Math.PI / 2 + (Math.PI * 2 * centerMm) / metrics.lineMm;\n        const sizePx = item.size * metrics.pxPerMm;\n        const usesAccessoryPlacementItem = usesAccessoryPlacement(item);\n        const isAccessoryItem = usesAccessoryPlacementItem;\n        const beadVisualCorrection = !isAccessoryItem && (!useConfirmedMobileStageSizing || item.size === 8)\n          ? (beadVisualScaleCorrections[item.image] || 1)\n          : 1;\n        const assetBoxPx = isAccessoryItem\n          ? sizePx\n          : (sizePx / (imageFillRatios[item.image] || 0.78)) * beadVisualCorrection;\n        const visualScale = useConfirmedMobileStageSizing\n          ? (isRunningRing(item) ? 0.8 : (isNonRunningAccessory(item) ? 0.648 : 1))\n          : accessoryVisualScale(item);\n        const assetWidthPx = isAccessoryItem\n          ? (item.visualWidthMm || item.size) * metrics.pxPerMm * visualScale\n          : assetBoxPx;\n        const assetHeightPx = isAccessoryItem\n          ? (item.visualHeightMm || item.size) * metrics.pxPerMm * visualScale\n          : assetBoxPx;\n        const hangOffsetPx = isAccessoryItem ? (item.hangOffsetMm || 0) * metrics.pxPerMm : 0;\n        const bead = document.createElement(\"button\");\n        bead.type = \"button\";\n        bead.className = [\n          \"minestone-diy__bead\",\n          usesAccessoryPlacementItem ? \"minestone-diy__bead--accessory\" : \"\",\n          activeUid === item.uid ? \"is-active\" : \"\"\n        ].filter(Boolean).join(\" \");\n        bead.style.setProperty(\"--size\", `${Math.max(assetWidthPx, assetHeightPx)}px`);\n        bead.style.setProperty(\"--width\", `${assetWidthPx}px`);\n        bead.style.setProperty(\"--height\", `${assetHeightPx}px`);\n        bead.style.setProperty(\"--bead-z\", String(Math.max(1, Math.round(10000 - Math.max(assetWidthPx, assetHeightPx)))));\n        bead.style.setProperty(\"--x\", `${Math.cos(angle) * (metrics.radiusPx + hangOffsetPx)}px`);\n        bead.style.setProperty(\"--y\", `${Math.sin(angle) * (metrics.radiusPx + hangOffsetPx)}px`);\n        bead.style.setProperty(\"--rotate\", `${angle * 180 / Math.PI + 90}deg`);\n        bead.style.setProperty(\"--bead-scale-x\", imageRoundnessFix[item.image] || 1);\n        bead.dataset.uid = item.uid;\n        bead.title = `${item.name} ${item.size} mm`;\n        bead.innerHTML = `<img alt=\"\" src=\"${imageFor(item)}\">`;\n        if (window.PointerEvent) {\n          bead.addEventListener(\"pointerdown\", (event) => beginBeadDrag(event, item, bead));\n        } else {\n          bead.addEventListener(\"mousedown\", (event) => beginBeadDrag(event, item, bead));\n          bead.addEventListener(\"touchstart\", (event) => beginBeadDrag(event, item, bead), { passive: true });\n        }\n        bead.addEventListener(\"click\", () => {\n          if (suppressClickUid === item.uid) {\n            suppressClickUid = null;\n            return;\n          }\n\n          activateBead(item.uid);\n        });\n        els.ring.appendChild(bead);\n      });\n\n      els.add.disabled = !selected.length || !targetLengthValid || selected.some((item) => !item.component);\n    }\n\n    function renderSummary() {\n      const length = beadLength();\n      els.beadCount.textContent = selected.length;\n      els.beadLength.textContent = `${cm(length)} cm`;\n      if (!targetLengthIsExplicit) {\n        targetLengthCm = braceletLength();\n      }\n      if (els.wristLengthInput && document.activeElement !== els.wristLengthInput) {\n        els.wristLengthInput.value = cm(targetLengthCm);\n      }\n      els.beadValue.textContent = formatMoney(selectedBeadValue(), currencyCode, currencyCodeEnabled, currencySymbol);\n      els.add.disabled = !selected.length || !targetLengthValid || selected.some((item) => !item.component);\n      if (els.feedback) {\n        if (!selected.length) {\n          els.feedback.textContent = \"Add crystals to begin your design.\";\n        } else if (!targetLengthValid) {\n          els.feedback.textContent = \"Enter a positive bracelet length.\";\n        } else if (selected.some((item) => !item.component)) {\n          els.feedback.textContent = \"One selected item is currently unavailable.\";\n        } else {\n          els.feedback.textContent = \"Your bracelet is ready to review.\";\n        }\n      }\n    }\n\n    function designSummary() {\n      return selected.map((item, index) => `${index + 1}. ${item.name} ${item.size} mm`).join(\" | \");\n    }\n\n    function snapshotValue(value) {\n      return String(value ?? \"\").replace(/[~|]/g, \" \").trim();\n    }\n\n    function designPreviewSnapshot() {\n      const metrics = previewMetrics();\n      const previewSizePx = metrics.outerDiameterPx + 36;\n      const ringRatio = metrics.lineDiameterPx / previewSizePx;\n      const beads = [...els.ring.querySelectorAll(\".minestone-diy__bead\")];\n      const beadRows = selected.map((item, index) => {\n        const bead = beads[index];\n        const x = parseFloat(bead?.style.getPropertyValue(\"--x\")) || 0;\n        const y = parseFloat(bead?.style.getPropertyValue(\"--y\")) || 0;\n        const size = parseFloat(bead?.style.getPropertyValue(\"--size\")) || 0;\n        const rotate = bead?.style.getPropertyValue(\"--rotate\").trim() || \"0deg\";\n        const scaleX = bead?.style.getPropertyValue(\"--bead-scale-x\").trim() || \"1\";\n\n        return [\n          index + 1,\n          snapshotValue(item.name),\n          item.size,\n          snapshotValue(item.image),\n          (x / previewSizePx).toFixed(5),\n          (y / previewSizePx).toFixed(5),\n          (size / previewSizePx).toFixed(5),\n          snapshotValue(rotate.replace(\"deg\", \"\")),\n          snapshotValue(scaleX)\n        ].join(\"~\");\n      });\n\n      return [\n        [\"v1\", previewSizePx.toFixed(2), ringRatio.toFixed(5)].join(\"~\"),\n        ...beadRows\n      ].join(\" || \");\n    }\n\n    async function addToCart() {\n      if (addInFlight) return;\n      const length = beadLength();\n      if (!selected.length || selected.some((item) => !item.component)) {\n        toast(\"This design is not ready to add to cart yet.\");\n        return;\n      }\n      if (!targetLengthValid || !Number.isFinite(braceletLength()) || braceletLength() <= 0) {\n        toast(\"Enter a positive bracelet length.\");\n        return;\n      }\n      const submitCounts = designCounts();\n      track(\"diy_cart_submit_click\", {\n        ...submitCounts,\n        estimated_design_value: Number(selectedBeadValue().toFixed(2)),\n        currency: currencyCode || \"unknown\"\n      });\n      addInFlight = true;\n      els.add.disabled = true;\n      const designGroupId = uuid();\n      const grouped = new Map();\n      selected.forEach((item, index) => {\n        const key = String(item.component.variantId);\n        const group = grouped.get(key) || { item, positions: [] };\n        group.positions.push(index + 1);\n        grouped.set(key, group);\n      });\n      const designTotal = formatMoney(selectedBeadValue(), currencyCode, currencyCodeEnabled, currencySymbol);\n      const groupedChunks = [];\n      grouped.forEach((group) => {\n        let chunk = [];\n        group.positions.forEach((position) => {\n          const candidate = [...chunk, position].join(\",\");\n          if (candidate.length > 180 && chunk.length) {\n            groupedChunks.push({ item: group.item, positions: chunk });\n            chunk = [position];\n          } else {\n            chunk.push(position);\n          }\n        });\n        if (chunk.length) groupedChunks.push({ item: group.item, positions: chunk });\n      });\n      const items = groupedChunks.map((group, index) => ({\n        id: Number(group.item.component.variantId),\n        quantity: group.positions.length,\n        properties: {\n          \"Design type\": \"DIY crystal bracelet\",\n          \"_DIY_design_group_id\": designGroupId,\n          \"_DIY_component_id\": group.item.component.componentId,\n          \"_DIY_sequence_positions\": group.positions.join(\",\"),\n          \"_DIY_group_component_count\": String(selected.length),\n          ...(index === 0 ? {\n            \"Design type\": \"DIY crystal bracelet\",\n            \"Bead count\": String(selected.length),\n            \"Component count\": String(selected.length),\n            \"Bead length\": `${cm(length)} cm`,\n            \"Wrist length\": `${cm(braceletLength())} cm`,\n            \"Estimated design total\": designTotal,\n            \"Bead sequence\": designSummary(),\n            \"_DIY preview snapshot\": designPreviewSnapshot()\n          } : {})\n        }\n      }));\n      const payload = { items };\n      try {\n        const response = await fetch(\"/cart/add.js\", {\n          method: \"POST\",\n          headers: { \"Content-Type\": \"application/json\", \"Accept\": \"application/json\" },\n          body: JSON.stringify(payload)\n        });\n        if (!response.ok) {\n          const error = new Error(\"Cart request failed\");\n          error.status = response.status;\n          throw error;\n        }\n        const result = await response.json();\n        let redirectStarted = false;\n        const redirectToCart = () => {\n          if (redirectStarted) return;\n          redirectStarted = true;\n          window.location.href = \"/cart\";\n        };\n        const tracked = track(\"diy_cart_submit_result\", {\n          ...submitCounts,\n          result: \"success\",\n          error_type: \"\",\n          cart_line_count_delta: Array.isArray(result.items) ? result.items.length : items.length,\n          event_callback: redirectToCart,\n          event_timeout: 500\n        });\n        if (!tracked) redirectToCart();\n        else window.setTimeout(redirectToCart, 650);\n      } catch (error) {\n        track(\"diy_cart_submit_result\", {\n          ...submitCounts,\n          result: \"error\",\n          error_type: error.status ? `http_${error.status}` : \"network_or_parse\",\n          cart_line_count_delta: 0\n        });\n        addInFlight = false;\n        els.add.disabled = false;\n        toast(\"Could not add to cart yet. Please try again.\");\n      }\n    }\n\n    function clearDesign() {\n      const countsBeforeClear = designCounts();\n      track(\"diy_design_clear\", {\n        design_item_count_before_clear: countsBeforeClear.design_item_count,\n        bead_count_before_clear: countsBeforeClear.bead_count,\n        accessory_count_before_clear: countsBeforeClear.accessory_count\n      });\n      selected.splice(0, selected.length);\n      targetLengthCm = defaultCm;\n      targetLengthIsExplicit = false;\n      targetLengthValid = true;\n      if (els.wristLengthInput) {\n        els.wristLengthInput.value = cm(defaultCm);\n        els.wristLengthInput.setAttribute(\"aria-invalid\", \"false\");\n      }\n      activeUid = null;\n      renderRing();\n      renderSummary();\n      toast(\"Design cleared.\");\n    }\n\n    function render() {\n      ensureAvailableSize();\n      renderCategories();\n      renderSizes();\n      renderCatalog();\n      renderRing();\n      renderSummary();\n    }\n\n    els.add.addEventListener(\"click\", addToCart);\n    els.clear.addEventListener(\"click\", clearDesign);\n    els.applyLength?.addEventListener(\"click\", applyTargetLength);\n    els.wristLengthInput?.addEventListener(\"keydown\", (event) => {\n      if (event.key !== \"Enter\") return;\n      event.preventDefault();\n      applyTargetLength();\n    });\n    els.wristLengthInput?.addEventListener(\"input\", () => {\n      const rawValue = els.wristLengthInput.value.trim();\n      const parsed = Number(rawValue);\n      targetLengthValid = rawValue !== \"\" && Number.isFinite(parsed) && parsed > 0;\n      els.wristLengthInput.setAttribute(\"aria-invalid\", String(!targetLengthValid));\n      els.add.disabled = !selected.length || !targetLengthValid || selected.some((item) => !item.component);\n      if (!targetLengthValid && els.feedback) {\n        els.feedback.textContent = \"Enter a positive bracelet length.\";\n      }\n    });\n    setupGuide();\n    setMobileViewportHeight();\n    window.visualViewport?.addEventListener(\"resize\", setMobileViewportHeight);\n    window.addEventListener(\"resize\", () => renderRing());\n    window.addEventListener(\"resize\", setMobileViewportHeight);\n    render();\n  });\n})();\n"],
  "mappings": "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",
  "names": ["afterMm", "beforeMm", "item"]
}
