{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/crg-b2b-tools.js?crg=20260618-order-user-fixes"],
  "sourcesContent": ["(() => {\n  if (window.CRG_B2B_TOOLS_READY) return;\n  window.CRG_B2B_TOOLS_READY = true;\n\n  const keys = {\n    compare: \"crg_compare_products\",\n    favorite: \"crg_favorite_products\",\n    quote: \"crg_quote_products\",\n  };\n  const compareListUrl = \"/pages/\u6BD4\u8F03\u30EA\u30B9\u30C8?view=compare\";\n  const quoteRequestUrl = \"/pages/\u898B\u7A4D\u308A\u4F9D\u983C\";\n\n  const patterns = [\n    { test: /^(QCA|QC|QCY|QJ|QX|MTC)/i, group: \"\u30C4\u30FC\u30EB\u30C1\u30A7\u30F3\u30B8\u30E3\u30FC\", note: \"Q\u7CFB / \u4EA4\u63DB\u30E2\u30B8\u30E5\u30FC\u30EB\" },\n    { test: /^(GFS|GR|GRO|RG|CHK|CYL|HC)/i, group: \"\u30C1\u30E3\u30C3\u30AF\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\", note: \"G\u7CFB / \u628A\u6301\u90E8\u54C1\" },\n    { test: /^(VG|VM|VF|VFR|VFS|VFT|VC|VP)/i, group: \"\u771F\u7A7A\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\", note: \"V\u7CFB / \u771F\u7A7A\u5438\u7740\" },\n    { test: /^(AN|NY|NP|NPR|NPT)/i, group: \"\u30A8\u30A2\u30CB\u30C3\u30D1\u30FC\", note: \"N\u7CFB / \u5207\u65AD\u90E8\u54C1\" },\n    { test: /^(P|PIPE|SUS|CRG-\\d|3636|4040)/i, group: \"\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u30FB\u30B9\u30C6\u30F3\u30EC\u30B9\u30D1\u30A4\u30D7\", note: \"P\u7CFB / \u30D5\u30EC\u30FC\u30E0\" },\n    { test: /^(BR|SB|ST|EFC|ECP|7\\.|T)/i, group: \"EOAT \u69CB\u6210\u90E8\u54C1\", note: \"S/P/A\u7CFB / \u53D6\u4ED8\u90E8\u54C1\" },\n  ];\n  const genericCategoryThreeDUrls = new Set([\n    \"https://crg.co.jp/data/3D/accessory_components.zip\",\n    \"https://crg.co.jp/data/3D/air_nipper.zip\",\n    \"https://crg.co.jp/data/3D/grip_module.zip\",\n    \"https://crg.co.jp/data/3D/profile_sus_tube.zip\",\n    \"https://crg.co.jp/data/3D/quick_changer.zip\",\n    \"https://crg.co.jp/data/3D/stents_module.zip\",\n    \"https://crg.co.jp/data/3D/vacuum_module.zip\",\n  ]);\n\n  let productCatalogPromise = null;\n\n  function readList(type) {\n    try {\n      const raw = window.localStorage.getItem(keys[type]);\n      const parsed = raw ? JSON.parse(raw) : [];\n      return Array.isArray(parsed) ? parsed : [];\n    } catch (_error) {\n      return [];\n    }\n  }\n\n  function writeList(type, items) {\n    window.localStorage.setItem(keys[type], JSON.stringify(items.slice(0, 80)));\n  }\n\n  function normalizeModel(value) {\n    return String(value || \"\")\n      .trim()\n      .replace(/[\u2010\u2011\u2012\u2013\u2014\u2015\uFF0D\u30FC]/g, \"-\")\n      .replace(/\\s+/g, \"\")\n      .toUpperCase();\n  }\n\n  function escapeHtml(value) {\n    return String(value || \"\").replace(/[&<>\"']/g, (char) => ({\n      \"&\": \"&amp;\",\n      \"<\": \"&lt;\",\n      \">\": \"&gt;\",\n      '\"': \"&quot;\",\n      \"'\": \"&#39;\",\n    })[char]);\n  }\n\n  function textValue(value, fallback = \"\u78BA\u8A8D\u4E2D\") {\n    const text = String(value || \"\").trim();\n    return text || fallback;\n  }\n\n  function compactText(value) {\n    return String(value || \"\")\n      .replace(/\\s+/g, \" \")\n      .trim();\n  }\n\n  function firstMeaningfulText(...values) {\n    for (const value of values) {\n      const text = compactText(value);\n      if (text) return text;\n    }\n    return \"\";\n  }\n\n  function safeUrl(value, fallback = \"/collections/all\") {\n    try {\n      const url = new URL(value || fallback, window.location.origin);\n      if (url.protocol !== \"http:\" && url.protocol !== \"https:\") return fallback;\n      if (url.origin === window.location.origin) return `${url.pathname}${url.search}${url.hash}`;\n      return url.toString();\n    } catch (_error) {\n      return fallback;\n    }\n  }\n\n  function productSpecificThreeDUrl(...values) {\n    for (const value of values) {\n      const text = String(value || \"\").trim();\n      if (!text || genericCategoryThreeDUrls.has(text)) continue;\n      return text;\n    }\n    return \"\";\n  }\n\n  function normalizeCompareLinks() {\n    document.querySelectorAll('a[href=\"/pages/\u6BD4\u8F03\u30EA\u30B9\u30C8\"]').forEach((link) => {\n      link.setAttribute(\"href\", compareListUrl);\n    });\n  }\n\n  function normalizeQuoteLinks() {\n    document.querySelectorAll('a[href^=\"/pages/\u898B\u7A4D\u308A\u4F9D\u983C\"], a[href^=\"https://\"][href*=\"/pages/\u898B\u7A4D\u308A\u4F9D\u983C\"]').forEach((link) => {\n      try {\n        const url = new URL(link.getAttribute(\"href\"), window.location.origin);\n        if (url.pathname !== quoteRequestUrl) return;\n\n        url.searchParams.set(\"view\", \"quote\");\n        link.setAttribute(\"href\", `${url.pathname}${url.search}${url.hash}`);\n      } catch (_error) {\n        // Keep the original link if URL parsing is not supported.\n      }\n    });\n  }\n\n  function normalizeStoredProduct(product, existing = {}) {\n    const model = normalizeModel(product.model || product.sku || existing.model || product.title);\n    const extracted = extractDescriptionDetails(product, {\n      ...existing,\n      model,\n      sku: product.sku || existing.sku || model,\n    });\n    const threeDUrl = productSpecificThreeDUrl(product.threeDUrl, existing.threeDUrl);\n    const threeDLabel = threeDUrl ? firstMeaningfulText(product.threeDLabel, existing.threeDLabel) : \"\";\n\n    return {\n      ...existing,\n      id: product.id || existing.id || model,\n      title: product.title || existing.title || model,\n      model,\n      sku: product.sku || existing.sku || model,\n      modelAxis: firstMeaningfulText(product.modelAxis, extracted.modelAxis, existing.modelAxis),\n      modelType: firstMeaningfulText(product.modelType, extracted.modelType, existing.modelType),\n      orderCode: firstMeaningfulText(product.orderCode, extracted.orderCode, existing.orderCode),\n      category: product.category || existing.category || \"\",\n      series: product.series || existing.series || \"\",\n      price: product.price || extracted.price || existing.price || \"\",\n      priceNote: product.priceNote || existing.priceNote || \"\",\n      stock: product.stock || existing.stock || \"\",\n      leadTime: product.leadTime || existing.leadTime || \"\",\n      shipping: product.shipping || existing.shipping || \"\",\n      weight: product.weight || existing.weight || \"\",\n      spec: product.spec || existing.spec || \"\",\n      feature: firstMeaningfulText(product.feature, extracted.feature, existing.feature),\n      usage: firstMeaningfulText(product.usage, extracted.usage, existing.usage),\n      caution: firstMeaningfulText(product.caution, extracted.caution, existing.caution),\n      pdfUrl: product.pdfUrl || existing.pdfUrl || \"\",\n      cadStepUrl: product.cadStepUrl || existing.cadStepUrl || \"\",\n      cadDxfUrl: product.cadDxfUrl || existing.cadDxfUrl || \"\",\n      cadIgesUrl: product.cadIgesUrl || existing.cadIgesUrl || \"\",\n      threeDUrl,\n      threeDLabel,\n      url: product.url || existing.url || \"\",\n      image: product.image || existing.image || \"\",\n      addedAt: existing.addedAt || product.addedAt || new Date().toISOString(),\n    };\n  }\n\n  function quoteItemsText() {\n    return readList(\"quote\")\n      .map((item) => ({\n        model: item.model || item.sku || item.title,\n        qty: item.qty || \"1\",\n        note: item.title || item.category || \"\",\n      }))\n      .filter((item) => item.model)\n      .map((item) => `${item.model},${item.qty},${item.note}`)\n      .join(\"\\n\");\n  }\n\n  function upsert(type, product) {\n    const model = normalizeModel(product.model || product.sku || product.title);\n    if (!model) return { added: false, count: readList(type).length };\n\n    const items = readList(type);\n    const existingIndex = items.findIndex((item) => normalizeModel(item.model) === model);\n    const exists = existingIndex >= 0;\n\n    if (exists) {\n      items[existingIndex] = normalizeStoredProduct(product, items[existingIndex]);\n    } else {\n      items.unshift(normalizeStoredProduct(product));\n    }\n    writeList(type, items);\n\n    return { added: !exists, count: readList(type).length };\n  }\n\n  function remove(type, model) {\n    const normalized = normalizeModel(model);\n    writeList(\n      type,\n      readList(type).filter((item) => normalizeModel(item.model) !== normalized),\n    );\n  }\n\n  function notifyCompareChange() {\n    if (typeof window.dispatchEvent !== \"function\") return;\n    if (typeof window.CustomEvent === \"function\") {\n      window.dispatchEvent(new window.CustomEvent(\"crg:compare-list-changed\"));\n      return;\n    }\n    if (typeof window.Event === \"function\") {\n      window.dispatchEvent(new window.Event(\"crg:compare-list-changed\"));\n    }\n  }\n\n  function currentProduct() {\n    const script = document.querySelector(\"[data-crg-product-json]\");\n    if (!script) return null;\n\n    try {\n      const product = JSON.parse(script.textContent || \"{}\");\n      if (!product.descriptionHtml) product.descriptionHtml = descriptionHtmlFromDocument(document);\n      return product;\n    } catch (_error) {\n      return null;\n    }\n  }\n\n  function descriptionHtmlFromDocument(documentCopy) {\n    const description = documentCopy.querySelector(\".product__description\");\n    return description?.innerHTML || \"\";\n  }\n\n  function cardProduct(button) {\n    const card = button.closest(\"[data-crg-card-product]\");\n    const script = card?.querySelector(\"[data-crg-card-product-json]\");\n    if (!script) return null;\n\n    try {\n      return JSON.parse(script.textContent || \"{}\");\n    } catch (_error) {\n      return null;\n    }\n  }\n\n  function isGenericSpec(value) {\n    const text = compactText(value);\n    return !text ||\n      text === \"\u4ED5\u69D8\u78BA\u8A8D\u4E2D\" ||\n      text === \"\u516C\u958B\u4ED5\u69D8\u306F\u78BA\u8A8D\u4E2D\" ||\n      /\u516C\u958B\u60C5\u5831\u306F\u88FD\u54C1\u78BA\u8A8D\u7528\u3067\u3059/.test(text) ||\n      /\u6B63\u5F0F\u898B\u7A4D\u308A\u6642\u306B\u78BA\u8A8D/.test(text);\n  }\n\n  function textAfterHeading(documentCopy, labelPattern) {\n    const headings = Array.from(documentCopy.querySelectorAll(\"h1,h2,h3,h4,h5,h6\"));\n    const heading = headings.find((node) => labelPattern.test(compactText(node.textContent)));\n    if (!heading) return \"\";\n\n    const parts = [];\n    let cursor = heading.nextElementSibling;\n    while (cursor && !/^H[1-6]$/i.test(cursor.tagName)) {\n      const text = compactText(cursor.textContent);\n      if (text) parts.push(text);\n      cursor = cursor.nextElementSibling;\n    }\n    return parts.join(\" / \");\n  }\n\n  function bestSpecTableRow(documentCopy, item) {\n    const targetTokens = [item.model, item.sku, item.title]\n      .map(normalizeModel)\n      .filter(Boolean);\n    let best = null;\n\n    documentCopy.querySelectorAll(\"table\").forEach((table) => {\n      const rows = Array.from(table.querySelectorAll(\"tr\"));\n      if (rows.length < 2) return;\n\n      const headers = Array.from(rows[0].querySelectorAll(\"th,td\")).map((cell) => compactText(cell.textContent));\n      const hasModelTable =\n        headers.some((header) => /\u578B\u5F0F|\u578B\u756A|\u30E2\u30C7\u30EB/.test(header)) &&\n        headers.some((header) => /\u6CE8\u6587\u30B3\u30FC\u30C9|\u30B3\u30FC\u30C9|SKU/.test(header));\n      if (!hasModelTable) return;\n\n      rows.slice(1).forEach((row) => {\n        const cells = Array.from(row.querySelectorAll(\"td,th\")).map((cell) => compactText(cell.textContent));\n        if (!cells.some(Boolean)) return;\n\n        const values = {};\n        headers.forEach((header, index) => {\n          const value = cells[index] || \"\";\n          if (/\u578B\u5F0F|\u578B\u756A|\u30E2\u30C7\u30EB/.test(header)) values.modelType = value;\n          if (/\u6CE8\u6587\u30B3\u30FC\u30C9|\u30B3\u30FC\u30C9|SKU/.test(header)) values.orderCode = value;\n          if (/\u4FA1\u683C|\u7A0E\u629C/.test(header)) values.price = value;\n        });\n\n        const rowTokens = [values.modelType, values.orderCode, ...cells].map(normalizeModel).filter(Boolean);\n        const score = targetTokens.reduce((total, target) => {\n          const matched = rowTokens.some((token) => target === token || target.includes(token) || token.includes(target));\n          return matched ? total + 1 : total;\n        }, 0);\n\n        if (!best || score > best.score) {\n          best = { ...values, score };\n        }\n      });\n    });\n\n    return best || {};\n  }\n\n  function extractDescriptionDetails(product, existing = {}) {\n    const html = product.descriptionHtml || product.description || \"\";\n    if (!html || typeof DOMParser !== \"function\") return {};\n\n    try {\n      const documentCopy = new DOMParser().parseFromString(String(html), \"text/html\");\n      const firstParagraph = compactText(documentCopy.querySelector(\"p\")?.textContent || \"\");\n      const tableRow = bestSpecTableRow(documentCopy, { ...existing, ...product });\n\n      return {\n        feature: firstParagraph,\n        usage: textAfterHeading(documentCopy, /\u7528\u9014/),\n        caution: textAfterHeading(documentCopy, /\u3054\u6CE8\u610F|\u6CE8\u610F/),\n        modelType: tableRow.modelType || \"\",\n        orderCode: tableRow.orderCode || \"\",\n        price: tableRow.price || \"\",\n      };\n    } catch (_error) {\n      return {};\n    }\n  }\n\n  function hasRealComparisonParameters(item) {\n    return Boolean(\n      compactText(item.modelType) ||\n      compactText(item.orderCode) ||\n      compactText(item.feature) ||\n      compactText(item.usage) ||\n      compactText(item.caution) ||\n      !isGenericSpec(item.spec),\n    );\n  }\n\n  function comparisonSpec(item) {\n    if (!isGenericSpec(item.spec)) return compactText(item.spec);\n    if (compactText(item.caution)) return compactText(item.caution);\n    if (compactText(item.feature)) return compactText(item.feature);\n    return \"\u8A73\u7D30\u4ED5\u69D8\u306F\u5546\u54C1\u753B\u50CF\u5185\u306E\u4ED5\u69D8\u56F3\u307E\u305F\u306F\u898B\u7A4D\u308A\u6642\u306B\u78BA\u8A8D\";\n  }\n\n  function comparisonDocs(item) {\n    const docs = [];\n    const threeDUrl = productSpecificThreeDUrl(item.threeDUrl);\n    if (item.pdfUrl) docs.push(\"PDF\");\n    if (item.cadStepUrl) docs.push(\"STEP\");\n    if (item.cadDxfUrl) docs.push(\"DXF\");\n    if (item.cadIgesUrl) docs.push(\"IGES\");\n    if (threeDUrl) docs.push(item.threeDLabel ? `3D ZIP: ${item.threeDLabel}` : \"3D ZIP\");\n    return docs.length ? docs.join(\" / \") : \"\u8CC7\u6599\u5BFE\u5FDC\u306F\u78BA\u8A8D\u4E2D\";\n  }\n\n  function message(type, result) {\n    if (type === \"compare\") {\n      return result.added ? \"\u6BD4\u8F03\u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\u3057\u307E\u3057\u305F\u3002\" : \"\u3053\u306E\u88FD\u54C1\u306F\u6BD4\u8F03\u30EA\u30B9\u30C8\u306B\u5165\u3063\u3066\u3044\u307E\u3059\u3002\";\n    }\n    if (type === \"favorite\") {\n      return result.added ? \"\u30DE\u30A4\u30EA\u30B9\u30C8\u306B\u4FDD\u5B58\u3057\u307E\u3057\u305F\u3002\" : \"\u3053\u306E\u88FD\u54C1\u306F\u30DE\u30A4\u30EA\u30B9\u30C8\u306B\u5165\u3063\u3066\u3044\u307E\u3059\u3002\";\n    }\n    return result.added ? \"\u4E00\u62EC\u5165\u529B\u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\u3057\u307E\u3057\u305F\u3002\" : \"\u3053\u306E\u88FD\u54C1\u306F\u4E00\u62EC\u5165\u529B\u30EA\u30B9\u30C8\u306B\u5165\u3063\u3066\u3044\u307E\u3059\u3002\";\n  }\n\n  function actionFeedback(type, result) {\n    const countText = `${result.count} \u4EF6`;\n    if (type === \"compare\") {\n      return `\n        <span>${escapeHtml(message(type, result))} ${escapeHtml(countText)}\u3092\u6A2A\u4E26\u3073\u3067\u6BD4\u8F03\u3067\u304D\u307E\u3059\u3002</span>\n        <a href=\"${compareListUrl}\">\u6BD4\u8F03\u3092\u898B\u308B</a>\n      `;\n    }\n    if (type === \"favorite\") {\n      return `\n        <span>${escapeHtml(message(type, result))} \u5F8C\u3067\u898B\u76F4\u305B\u307E\u3059\u3002</span>\n        <a href=\"/pages/\u30DE\u30A4\u30EA\u30B9\u30C8\">\u30DE\u30A4\u30EA\u30B9\u30C8\u3092\u898B\u308B</a>\n      `;\n    }\n\n    return `\n      <span>${escapeHtml(message(type, result))} \u307E\u3068\u3081\u3066\u9001\u4FE1\u3067\u304D\u307E\u3059\u3002</span>\n      <a href=\"/pages/\u304B\u3093\u305F\u3093\u4E00\u62EC\u5165\u529B\">\u4E00\u62EC\u5165\u529B\u3078\u9032\u3080</a>\n    `;\n  }\n\n  function updateCardCompareButtons() {\n    const activeModels = new Set(readList(\"compare\").map((item) => normalizeModel(item.model || item.sku || item.title)));\n\n    document.querySelectorAll(\"[data-crg-card-compare]\").forEach((button) => {\n      const product = cardProduct(button);\n      const model = product ? normalizeModel(product.model || product.sku || product.title) : \"\";\n      const active = model ? activeModels.has(model) : false;\n      button.classList.toggle(\"is-active\", active);\n      button.setAttribute(\"aria-pressed\", active ? \"true\" : \"false\");\n      button.textContent = active ? \"\u8FFD\u52A0\u6E08\u307F\" : \"\u6BD4\u8F03\u306B\u8FFD\u52A0\";\n    });\n  }\n\n  function renderCompareTray() {\n    const items = readList(\"compare\");\n    let tray = document.querySelector(\"[data-crg-compare-tray]\");\n\n    if (!items.length) {\n      if (tray) {\n        tray.hidden = true;\n        tray.classList.remove(\"is-visible\");\n        tray.innerHTML = \"\";\n      }\n      updateCardCompareButtons();\n      return;\n    }\n\n    if (!document.body) return;\n    if (!tray) {\n      tray = document.createElement(\"aside\");\n      tray.className = \"crg-compare-tray\";\n      tray.setAttribute(\"data-crg-compare-tray\", \"\");\n      tray.setAttribute(\"aria-label\", \"\u6BD4\u8F03\u5019\u88DC\");\n      document.body.append(tray);\n    }\n\n    const visibleItems = items.slice(0, 12);\n    const extraCount = Math.max(items.length - visibleItems.length, 0);\n    tray.hidden = false;\n    tray.classList.add(\"is-visible\");\n    tray.innerHTML = `\n      <div class=\"crg-compare-tray__summary\">\n        <strong>\u6BD4\u8F03\u4E2D <span>${items.length}</span>\u4EF6</strong>\n        <small>\u5019\u88DC\u3092\u3053\u3053\u306B\u4E26\u3079\u305F\u307E\u307E\u8FFD\u52A0\u3067\u304D\u307E\u3059\u3002</small>\n      </div>\n      <div class=\"crg-compare-tray__items\" aria-label=\"\u6BD4\u8F03\u5019\u88DC\u306E\u5546\u54C1\">\n        ${visibleItems\n          .map(\n            (item) => `\n              <article class=\"crg-compare-tray__item\">\n                <a href=\"${escapeHtml(safeUrl(item.url))}\">\n                  <span class=\"crg-compare-tray__thumb\">\n                    ${item.image ? `<img src=\"${escapeHtml(safeUrl(item.image, \"\"))}\" alt=\"${escapeHtml(item.title || item.model)}\" loading=\"lazy\">` : \"\"}\n                  </span>\n                  <span class=\"crg-compare-tray__text\">\n                    <strong>${escapeHtml(item.model || \"\u578B\u756A\u78BA\u8A8D\")}</strong>\n                    <small>${escapeHtml(item.title || item.category || \"CRG RoboPalm \u88FD\u54C1\")}</small>\n                  </span>\n                </a>\n                <button type=\"button\" data-crg-compare-tray-remove=\"${escapeHtml(item.model || item.sku || item.title)}\" aria-label=\"${escapeHtml(item.model || item.title || \"\u5019\u88DC\")}\u3092\u6BD4\u8F03\u304B\u3089\u524A\u9664\">\u00D7</button>\n              </article>\n            `,\n          )\n          .join(\"\")}\n        ${extraCount ? `<span class=\"crg-compare-tray__more\">+${extraCount}</span>` : \"\"}\n      </div>\n      <a class=\"crg-compare-tray__link\" href=\"${compareListUrl}\">\u6BD4\u8F03\u3092\u898B\u308B</a>\n    `;\n\n    tray.querySelectorAll(\"[data-crg-compare-tray-remove]\").forEach((button) => {\n      button.addEventListener(\"click\", () => {\n        remove(\"compare\", button.getAttribute(\"data-crg-compare-tray-remove\"));\n        renderCompareTray();\n        notifyCompareChange();\n      });\n    });\n\n    updateCardCompareButtons();\n  }\n\n  function bindProductActions() {\n    const product = currentProduct();\n    if (!product) return;\n\n    const notice = document.querySelector(\"[data-crg-product-tools-notice]\");\n    document.querySelectorAll(\"[data-crg-list-action]\").forEach((button) => {\n      const type = button.getAttribute(\"data-crg-list-action\");\n      if (!keys[type]) return;\n\n      button.addEventListener(\"click\", () => {\n        const result = upsert(type, product);\n        button.classList.add(\"is-active\");\n        if (type === \"compare\") {\n          renderCompareTray();\n          notifyCompareChange();\n        }\n        if (notice) {\n          notice.innerHTML = actionFeedback(type, result);\n          notice.classList.add(\"is-visible\");\n        }\n      });\n    });\n  }\n\n  function bindCardCompareActions() {\n    document.querySelectorAll(\"[data-crg-card-compare]\").forEach((button) => {\n      if (button.getAttribute(\"data-crg-card-compare-bound\") === \"true\") return;\n      button.setAttribute(\"data-crg-card-compare-bound\", \"true\");\n\n      button.addEventListener(\"click\", (event) => {\n        event.preventDefault();\n        event.stopPropagation();\n\n        const product = cardProduct(button);\n        if (!product) return;\n\n        upsert(\"compare\", product);\n        button.classList.add(\"is-active\");\n        button.setAttribute(\"aria-pressed\", \"true\");\n        button.textContent = \"\u8FFD\u52A0\u6E08\u307F\";\n        renderCompareTray();\n        notifyCompareChange();\n      });\n    });\n\n    updateCardCompareButtons();\n  }\n\n  function guessProduct(rawModel) {\n    const model = normalizeModel(rawModel);\n    const match = patterns.find((pattern) => pattern.test.test(model));\n    return {\n      model,\n      group: match ? match.group : \"\u8981\u78BA\u8A8D\",\n      note: match ? match.note : \"\u5546\u54C1\u5EAB\u3067\u578B\u756A\u78BA\u8A8D\",\n      confidence: match ? \"recognized\" : \"review\",\n    };\n  }\n\n  function parseLine(line) {\n    const cells = line\n      .split(/\\t|,|\u3001|;/)\n      .map((cell) => cell.trim())\n      .filter(Boolean);\n    const first = cells[0] || line.trim();\n    const quantityCell = cells.find((cell, index) => index > 0 && /\\d+/.test(cell));\n    const qty = quantityCell ? quantityCell.match(/\\d+/)?.[0] || \"\" : \"\";\n\n    return {\n      model: first,\n      qty,\n      note: cells.slice(1).filter((cell) => cell !== quantityCell).join(\" / \"),\n    };\n  }\n\n  function parseBulkText(text) {\n    return String(text || \"\")\n      .split(/\\r?\\n/)\n      .map((line) => line.trim())\n      .filter(Boolean)\n      .map(parseLine)\n      .filter((item) => item.model);\n  }\n\n  function fillBulkRows(items) {\n    const rows = Array.from(document.querySelectorAll(\"[data-crg-bulk-rows] .crg-b2b-request__row\"));\n    rows.forEach((row, index) => {\n      const item = items[index];\n      if (!item) return;\n\n      row.hidden = false;\n      const inputs = row.querySelectorAll(\"input\");\n      if (inputs[0]) inputs[0].value = item.model;\n      if (inputs[1]) inputs[1].value = item.qty || \"1\";\n      if (inputs[2]) {\n        const guessed = guessProduct(item.model);\n        inputs[2].value = [guessed.group, item.note].filter(Boolean).join(\" / \");\n      }\n    });\n\n    const addRowButton = document.querySelector(\"[data-crg-add-row]\");\n    if (addRowButton) {\n      addRowButton.hidden = rows.every((row) => !row.hidden);\n    }\n  }\n\n  function updateBulkStatus(items) {\n    const status = document.querySelector(\"[data-crg-bulk-status]\");\n    const hidden = document.querySelector(\"[data-crg-bulk-recognition]\");\n    if (!status) return;\n\n    const guessed = items.map((item) => ({ ...item, ...guessProduct(item.model) }));\n    const recognized = guessed.filter((item) => item.confidence === \"recognized\");\n    const review = guessed.length - recognized.length;\n\n    status.innerHTML = \"\";\n    const summary = document.createElement(\"div\");\n    summary.textContent = `${guessed.length} \u884C\u3092\u8AAD\u307F\u8FBC\u307F\u307E\u3057\u305F\u3002\u5546\u54C1\u5EAB\u63A8\u5B9A ${recognized.length} \u884C\u3001\u8981\u78BA\u8A8D ${review} \u884C\u3002`;\n    status.append(summary);\n\n    const chips = document.createElement(\"div\");\n    chips.className = \"crg-bulk-tools__chips\";\n    guessed.slice(0, 12).forEach((item) => {\n      const chip = document.createElement(\"span\");\n      chip.textContent = `${item.model}: ${item.group}`;\n      chips.append(chip);\n    });\n    status.append(chips);\n\n    if (hidden) {\n      hidden.value = guessed\n        .map((item) => `${item.model}\\t${item.qty || \"1\"}\\t${item.group}\\t${item.note}`)\n        .join(\"\\n\");\n    }\n  }\n\n  function bindBulkTools() {\n    const tools = document.querySelector(\"[data-crg-bulk-tools]\");\n    if (!tools) return;\n\n    const paste = tools.querySelector(\"[data-crg-bulk-paste]\");\n    const parseButton = tools.querySelector(\"[data-crg-bulk-parse]\");\n    const quoteButton = tools.querySelector(\"[data-crg-bulk-load-quote]\");\n    const fileInput = tools.querySelector(\"[data-crg-bulk-file]\");\n    const mainPaste = document.querySelector(\"#CrgBulk-paste\");\n\n    const parseAndFill = (text) => {\n      const items = parseBulkText(text);\n      fillBulkRows(items);\n      updateBulkStatus(items);\n      if (mainPaste && text.trim()) mainPaste.value = text.trim();\n      return items.length;\n    };\n\n    if (parseButton && paste) {\n      parseButton.addEventListener(\"click\", () => parseAndFill(paste.value));\n    }\n\n    if (quoteButton) {\n      quoteButton.addEventListener(\"click\", () => {\n        parseAndFill(quoteItemsText());\n      });\n    }\n\n    if (readList(\"quote\").length) {\n      const loaded = parseAndFill(quoteItemsText());\n      if (loaded && quoteButton) {\n        quoteButton.textContent = \"\u4FDD\u5B58\u30EA\u30B9\u30C8\u3092\u53CD\u6620\u6E08\u307F\";\n      }\n    }\n\n    if (fileInput) {\n      fileInput.addEventListener(\"change\", async () => {\n        const file = fileInput.files && fileInput.files[0];\n        if (!file) return;\n        parseAndFill(await file.text());\n      });\n    }\n  }\n\n  function productDetailUrls(item) {\n    if (!item.url) return [];\n\n    try {\n      const url = new URL(item.url, window.location.origin);\n      if (url.origin !== window.location.origin) return [];\n\n      const detailUrl = new URL(url.toString());\n      detailUrl.searchParams.set(\"view\", \"crg3\");\n      const fallbackUrl = new URL(url.toString());\n      fallbackUrl.searchParams.set(\"view\", \"crg3\");\n      return [url.toString(), detailUrl.toString(), fallbackUrl.toString()];\n    } catch (_error) {\n      return [];\n    }\n  }\n\n  function storefrontProductModel(product) {\n    const variant = product.variants?.find((item) => item.sku);\n    return variant?.sku || \"\";\n  }\n\n  function storefrontProductImage(product) {\n    return product.images?.[0]?.src || product.image?.src || \"\";\n  }\n\n  function storefrontProductToStoredProduct(product) {\n    const model = storefrontProductModel(product);\n    return {\n      id: product.id,\n      title: product.title,\n      model,\n      sku: product.variants?.find((item) => item.sku)?.sku || model,\n      category: product.product_type || \"\",\n      url: product.handle ? `/products/${product.handle}` : \"\",\n      image: storefrontProductImage(product),\n    };\n  }\n\n  function productMatchesStoredItem(product, item) {\n    const needles = [item.model, item.sku, item.title]\n      .map(normalizeModel)\n      .filter(Boolean);\n    const haystack = [\n      storefrontProductModel(product),\n      product.title,\n      product.handle,\n      product.product_type,\n      ...(product.tags || []),\n      ...(product.variants || []).map((variant) => variant.sku),\n    ]\n      .map(normalizeModel)\n      .filter(Boolean);\n\n    return needles.some((needle) =>\n      haystack.some((value) => value === needle || value.includes(needle) || needle.includes(value)),\n    );\n  }\n\n  async function fetchProductCatalog() {\n    if (!productCatalogPromise) {\n      productCatalogPromise = fetch(\"/products.json?limit=250\", { credentials: \"same-origin\" })\n        .then((response) => (response.ok ? response.json() : { products: [] }))\n        .then((data) => (Array.isArray(data.products) ? data.products : []))\n        .catch(() => []);\n    }\n\n    return productCatalogPromise;\n  }\n\n  async function fetchCatalogProduct(item) {\n    const products = await fetchProductCatalog();\n    const match = products.find((product) => productMatchesStoredItem(product, item));\n    return match ? storefrontProductToStoredProduct(match) : null;\n  }\n\n  async function fetchStoredProduct(item) {\n    const urls = productDetailUrls(item);\n    for (const url of urls) {\n      try {\n        const response = await fetch(url, { credentials: \"same-origin\" });\n        if (!response.ok) continue;\n\n        const html = await response.text();\n        const documentCopy = new DOMParser().parseFromString(html, \"text/html\");\n        const script = documentCopy.querySelector(\"[data-crg-product-json]\");\n        if (!script) continue;\n\n        const product = JSON.parse(script.textContent || \"{}\");\n        if (!product.descriptionHtml) product.descriptionHtml = descriptionHtmlFromDocument(documentCopy);\n        return product;\n      } catch (_error) {\n        // Keep the saved list usable even if a product page cannot be loaded.\n      }\n    }\n\n    return fetchCatalogProduct(item);\n  }\n\n  function hasComparisonDetails(item) {\n    return Boolean(\n      item.price ||\n      item.priceNote ||\n      item.stock ||\n      item.leadTime ||\n      item.shipping ||\n      item.weight ||\n      hasRealComparisonParameters(item),\n    );\n  }\n\n  function needsStoredProductEnrichment(item) {\n    return !item.image || !item.url || !hasComparisonDetails(item) || !hasRealComparisonParameters(item);\n  }\n\n  async function enrichCompareItems(items) {\n    const updated = [...items];\n    let changed = false;\n\n    await Promise.all(\n      updated.map(async (item, index) => {\n        if (!needsStoredProductEnrichment(item)) return;\n\n        const product = await fetchStoredProduct(item);\n        if (!product) return;\n\n        updated[index] = normalizeStoredProduct(product, item);\n        changed = true;\n      }),\n    );\n\n    if (changed) writeList(\"compare\", updated);\n    return changed;\n  }\n\n  function renderCompareTable(items, tableRoot) {\n    if (!tableRoot) return;\n\n    if (items.length === 0) {\n      tableRoot.hidden = true;\n      tableRoot.innerHTML = \"\";\n      return;\n    }\n\n    tableRoot.hidden = false;\n    const rows = [\n      [\"\u54C1\u540D\", (item) => textValue(item.title)],\n      [\"\u578B\u5F0F\", (item) => textValue(item.modelType || item.model)],\n      [\"\u6CE8\u6587\u30B3\u30FC\u30C9\", (item) => textValue(item.orderCode || item.sku)],\n      [\"\u30AB\u30C6\u30B4\u30EA / \u30B7\u30EA\u30FC\u30BA\", (item) => textValue([item.category, item.series].filter(Boolean).join(\" / \"))],\n      [\"\u4FA1\u683C\", (item) => textValue(item.price || item.priceNote, \"\u898B\u7A4D\u308A\u78BA\u8A8D\")],\n      [\"\u5728\u5EAB\u30FB\u7D0D\u671F\", (item) => [item.stock, item.leadTime].filter(Boolean).join(\" / \") || \"\u78BA\u8A8D\u4E2D\"],\n      [\"\u578B\u756A\u5DEE\u5206\", (item) => textValue(item.modelAxis, \"\u5546\u54C1\u8A73\u7D30\u3067\u78BA\u8A8D\")],\n      [\"\u7528\u9014\", (item) => textValue(item.usage, \"\u5546\u54C1\u8A73\u7D30\u3067\u78BA\u8A8D\")],\n      [\"\u91CD\u91CF\", (item) => textValue(item.weight)],\n      [\"\u78BA\u8A8D\u30DD\u30A4\u30F3\u30C8\", (item) => comparisonSpec(item)],\n      [\"\u8CC7\u6599\u30FB3D\", (item) => comparisonDocs(item)],\n    ];\n\n    tableRoot.innerHTML = `\n      <div class=\"crg-compare-table__head\">\n        <div>\n          <p>COMPARISON TABLE</p>\n          <h2>\u5546\u54C1\u6BD4\u8F03</h2>\n          <span>\u4FDD\u5B58\u3057\u305F\u5019\u88DC\u3092\u6A2A\u4E26\u3073\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002</span>\n        </div>\n      </div>\n      <div class=\"crg-compare-table__scroll\">\n        <table>\n          <thead>\n            <tr>\n              <th scope=\"col\">\u6BD4\u8F03\u9805\u76EE</th>\n              ${items\n                .map(\n                  (item) => `\n                    <th scope=\"col\">\n                      <a href=\"${escapeHtml(safeUrl(item.url))}\">\n                        <span class=\"crg-list-pill\">${escapeHtml(item.model || \"\u578B\u756A\u78BA\u8A8D\")}</span>\n                        <strong>${escapeHtml(item.title || item.model)}</strong>\n                      </a>\n                    </th>\n                  `,\n                )\n                .join(\"\")}\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <th scope=\"row\">\u30A4\u30E1\u30FC\u30B8</th>\n              ${items\n                .map(\n                  (item) => `\n                    <td>\n                      <a class=\"crg-compare-table__image\" href=\"${escapeHtml(safeUrl(item.url))}\">\n                        ${item.image ? `<img src=\"${escapeHtml(safeUrl(item.image, \"\"))}\" alt=\"${escapeHtml(item.title || item.model)}\" loading=\"lazy\">` : \"\"}\n                      </a>\n                    </td>\n                  `,\n                )\n                .join(\"\")}\n            </tr>\n            ${rows\n              .map(\n                ([label, getValue]) => `\n                  <tr>\n                    <th scope=\"row\">${escapeHtml(label)}</th>\n                    ${items.map((item) => `<td>${escapeHtml(getValue(item))}</td>`).join(\"\")}\n                  </tr>\n                `,\n              )\n              .join(\"\")}\n          </tbody>\n        </table>\n      </div>\n    `;\n  }\n\n  function renderListPage() {\n    const root = document.querySelector(\"[data-crg-client-list]\");\n    if (!root) return;\n\n    const type = root.getAttribute(\"data-crg-client-list\");\n    const body = root.querySelector(\"[data-crg-client-list-body]\");\n    const count = root.querySelector(\"[data-crg-client-list-count]\");\n    const compareTable = root.querySelector(\"[data-crg-compare-table]\");\n    if (!keys[type] || !body) return;\n\n    const render = (options = { enrich: true }) => {\n      const items = readList(type);\n      if (count) count.textContent = String(items.length);\n      body.innerHTML = \"\";\n      if (type === \"compare\") renderCompareTable(items, compareTable);\n\n      if (items.length === 0) {\n        const empty = document.createElement(\"div\");\n        empty.className = \"crg-client-list__empty\";\n        empty.innerHTML = type === \"compare\"\n          ? \"\u5546\u54C1\u8A73\u7D30\u30DA\u30FC\u30B8\u3067\u300C\u6BD4\u8F03\u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\u300D\u3092\u62BC\u3059\u3068\u3001\u3053\u306E\u753B\u9762\u3067\u5019\u88DC\u3092\u6A2A\u4E26\u3073\u3067\u6BD4\u8F03\u3067\u304D\u307E\u3059\u3002\"\n          : \"\u5546\u54C1\u8A73\u7D30\u30DA\u30FC\u30B8\u304B\u3089\u88FD\u54C1\u3092\u8FFD\u52A0\u3059\u308B\u3068\u3001\u3053\u3053\u306B\u4E00\u89A7\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u6BD4\u8F03\u3001\u518D\u78BA\u8A8D\u3001\u4E00\u62EC\u5165\u529B\u3078\u306E\u9001\u4FE1\u306B\u4F7F\u3048\u307E\u3059\u3002\";\n        body.append(empty);\n        return;\n      }\n\n      items.forEach((item) => {\n        const article = document.createElement(\"article\");\n        article.className = \"crg-client-list__item\";\n        article.innerHTML = `\n          <a class=\"crg-client-list__image\" href=\"${escapeHtml(safeUrl(item.url))}\">\n            ${item.image ? `<img src=\"${escapeHtml(safeUrl(item.image, \"\"))}\" alt=\"${escapeHtml(item.title || item.model)}\" loading=\"lazy\">` : \"\"}\n          </a>\n          <div>\n            <span class=\"crg-list-pill\">${escapeHtml(item.model || \"\u578B\u756A\u78BA\u8A8D\")}</span>\n            <h2>${escapeHtml(item.title || item.model)}</h2>\n            <p>${escapeHtml(item.category || \"CRG RoboPalm \u88FD\u54C1\")}</p>\n          </div>\n          <div class=\"crg-client-list__actions\">\n            <a class=\"crg-client-list__link\" href=\"${escapeHtml(safeUrl(item.url))}\">\u8A73\u7D30\u3092\u898B\u308B</a>\n            <button type=\"button\" data-remove=\"${escapeHtml(item.model)}\">\u524A\u9664</button>\n          </div>\n        `;\n        body.append(article);\n      });\n\n      body.querySelectorAll(\"[data-remove]\").forEach((button) => {\n        button.addEventListener(\"click\", () => {\n          remove(type, button.getAttribute(\"data-remove\"));\n          render({ enrich: false });\n          if (type === \"compare\") renderCompareTray();\n        });\n      });\n\n      if (type === \"compare\" && options.enrich) {\n        enrichCompareItems(items).then((changed) => {\n          if (changed) {\n            render({ enrich: false });\n            renderCompareTray();\n          }\n        });\n      }\n    };\n\n    const moveToQuote = root.querySelector(\"[data-crg-list-to-quote]\");\n    if (moveToQuote) {\n      moveToQuote.addEventListener(\"click\", () => {\n        readList(type).forEach((item) => upsert(\"quote\", item));\n        window.location.href = \"/pages/\u304B\u3093\u305F\u3093\u4E00\u62EC\u5165\u529B\";\n      });\n    }\n\n    if (type === \"compare\") {\n      window.addEventListener(\"crg:compare-list-changed\", () => render({ enrich: false }));\n    }\n\n    render();\n  }\n\n  function bindSelector() {\n    const root = document.querySelector(\"[data-crg-vacuum-selector]\");\n    if (!root) return;\n\n    const standardDiameters = [4, 6, 8, 10, 15, 20, 25, 30, 35, 40, 50, 60, 75, 90, 100, 125, 150];\n    const surfaceProfiles = {\n      smooth: { label: \"\u5E73\u6ED1\u30FB\u6F0F\u308C\u5C11\u306A\u3044\", factor: 1 },\n      standard: { label: \"\u4E00\u822C\u6210\u5F62\u54C1\u30FB\u6A19\u6E96\", factor: 1.15 },\n      rough: { label: \"\u51F9\u51F8\u30FB\u3056\u3089\u3064\u304D\u3042\u308A\", factor: 1.35 },\n      porous: { label: \"\u591A\u5B54\u8CEA\u30FB\u6F0F\u308C\u3084\u3059\u3044\", factor: 1.8 },\n      oily: { label: \"\u6CB9\u5206\u30FB\u6C34\u5206\u3042\u308A\", factor: 1.45 },\n    };\n    const motionProfiles = {\n      standard: { label: \"\u6A19\u6E96\u642C\u9001\", factor: 1 },\n      fast: { label: \"\u9AD8\u901F\u30FB\u52A0\u6E1B\u901F\u3042\u308A\", factor: 1.25 },\n      shock: { label: \"\u53CD\u8EE2\u30FB\u885D\u6483\u3042\u308A\", factor: 1.5 },\n    };\n\n    const fields = {\n      weight: root.querySelector(\"[name='workWeight']\"),\n      pads: root.querySelector(\"[name='padCount']\"),\n      vacuum: root.querySelector(\"[name='vacuumKpa']\"),\n      safety: root.querySelector(\"[name='safetyFactor']\"),\n      direction: root.querySelector(\"[name='direction']\"),\n      surface: root.querySelector(\"[name='surfaceState']\"),\n      motion: root.querySelector(\"[name='motionLevel']\"),\n      usageNote: root.querySelector(\"[name='usageNote']\"),\n    };\n    const value = root.querySelector(\"[data-crg-selector-value]\");\n    const note = root.querySelector(\"[data-crg-selector-note]\");\n    const quoteLink = root.querySelector(\"[data-crg-selector-quote-link]\");\n    const force = root.querySelector(\"[data-crg-selector-force]\");\n    const areaNode = root.querySelector(\"[data-crg-selector-area]\");\n    const check = root.querySelector(\"[data-crg-selector-check]\");\n    const risk = root.querySelector(\"[data-crg-selector-risk]\");\n    const productsRoot = document.querySelector(\"[data-crg-selector-products]\");\n    const productsStatus = document.querySelector(\"[data-crg-selector-products-status]\");\n    let publishedCandidates = [];\n    let currentState = null;\n\n    const nearestStandard = (diameter) => {\n      const found = standardDiameters.find((item) => item >= diameter);\n      return found || Math.ceil(diameter / 25) * 25;\n    };\n\n    const buildParams = (state, candidate) => {\n      const params = new URLSearchParams({\n        view: \"quote\",\n        source: \"selector\",\n        tool: \"vacuum-pad\",\n        workWeight: String(state.weight),\n        padCount: String(state.pads),\n        vacuumKpa: String(state.vacuumKpa),\n        safetyFactor: String(state.safety),\n        direction: state.direction,\n        directionLabel: state.directionLabel,\n        surfaceState: state.surface,\n        surfaceLabel: state.surfaceLabel,\n        motionLevel: state.motion,\n        motionLabel: state.motionLabel,\n        resultDiameter: `${state.rounded} mm`,\n        requiredForce: `${state.forcePerPad.toFixed(1)} N`,\n        requiredArea: `${state.areaCm2.toFixed(2)} cm2`,\n        usageNote: state.usageNote,\n      });\n\n      if (candidate) {\n        params.set(\"candidateModel\", candidate.model || \"\");\n        params.set(\"candidateTitle\", candidate.title || \"\");\n        params.set(\"candidateUrl\", candidate.url || \"\");\n      } else if (publishedCandidates.length) {\n        params.set(\n          \"candidateTitle\",\n          publishedCandidates\n            .slice(0, 3)\n            .map((item) => item.title)\n            .join(\" / \"),\n        );\n      }\n\n      return `/pages/\u898B\u7A4D\u308A\u4F9D\u983C?${params.toString()}`;\n    };\n\n    const tagText = (product) =>\n      [product.title, product.body_html, ...(product.tags || [])].join(\" \").toLowerCase();\n\n    const candidateType = (product) => {\n      const text = tagText(product);\n      if (/cup|cups|\u30D1\u30C3\u30C9|\u5438\u7740/.test(text)) return \"\u5438\u7740\u30D1\u30C3\u30C9\u5019\u88DC\";\n      if (/module|\u30E2\u30B8\u30E5\u30FC\u30EB/.test(text)) return \"\u771F\u7A7A\u30E2\u30B8\u30E5\u30FC\u30EB\u5019\u88DC\";\n      return \"\u771F\u7A7A\u95A2\u9023\u5019\u88DC\";\n    };\n\n    const productModel = (product) => {\n      const sku = product.variants?.find((variant) => variant.sku)?.sku;\n      return sku || product.title.replace(/^CRG\\s*/i, \"\").trim();\n    };\n\n    const renderCandidates = () => {\n      if (!productsRoot) return;\n      productsRoot.innerHTML = \"\";\n\n      if (!publishedCandidates.length) {\n        const empty = document.createElement(\"p\");\n        empty.className = \"crg-selector-products__status\";\n        empty.textContent =\n          \"\u73FE\u5728\u516C\u958B\u4E2D\u306E\u771F\u7A7A\u95A2\u9023\u5546\u54C1\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u6761\u4EF6\u3092\u9001\u4FE1\u3059\u308B\u3068\u3001\u672A\u516C\u958B\u306E\u5546\u54C1\u5EAB\u3082\u542B\u3081\u3066\u62C5\u5F53\u8005\u304C\u78BA\u8A8D\u3057\u307E\u3059\u3002\";\n        productsRoot.append(empty);\n        return;\n      }\n\n      publishedCandidates.slice(0, 4).forEach((product) => {\n        const model = productModel(product);\n        const candidate = {\n          title: product.title,\n          model,\n          url: `/products/${product.handle}`,\n        };\n        const card = document.createElement(\"article\");\n        card.className = \"crg-selector-product-card\";\n\n        const image = document.createElement(\"img\");\n        image.className = \"crg-selector-product-card__image\";\n        image.src = product.images?.[0]?.src || \"\";\n        image.alt = product.title;\n        image.loading = \"lazy\";\n        card.append(image);\n\n        const body = document.createElement(\"div\");\n        body.className = \"crg-selector-product-card__body\";\n\n        const type = document.createElement(\"span\");\n        type.className = \"crg-selector-product-card__type\";\n        type.textContent = candidateType(product);\n        body.append(type);\n\n        const heading = document.createElement(\"h3\");\n        heading.textContent = product.title;\n        body.append(heading);\n\n        const summary = document.createElement(\"p\");\n        summary.textContent = `${model} / \u73FE\u5728\u516C\u958B\u4E2D\u306E\u5546\u54C1\u30DA\u30FC\u30B8\u304B\u3089\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`;\n        body.append(summary);\n\n        const actions = document.createElement(\"div\");\n        actions.className = \"crg-selector-product-card__actions\";\n        const productLink = document.createElement(\"a\");\n        productLink.href = candidate.url;\n        productLink.textContent = \"\u5546\u54C1\u3092\u898B\u308B\";\n        actions.append(productLink);\n\n        const quote = document.createElement(\"a\");\n        quote.href = currentState ? buildParams(currentState, candidate) : \"/pages/\u898B\u7A4D\u308A\u4F9D\u983C?view=quote\";\n        quote.textContent = \"\u3053\u306E\u5019\u88DC\u3067\u76F8\u8AC7\";\n        quote.setAttribute(\"data-crg-selector-candidate-link\", model);\n        actions.append(quote);\n\n        body.append(actions);\n        card.append(body);\n        productsRoot.append(card);\n      });\n    };\n\n    const updateCandidateLinks = () => {\n      if (!currentState) return;\n      document.querySelectorAll(\"[data-crg-selector-candidate-link]\").forEach((link) => {\n        const model = link.getAttribute(\"data-crg-selector-candidate-link\");\n        const product = publishedCandidates.find((item) => productModel(item) === model);\n        if (!product) return;\n        link.href = buildParams(currentState, {\n          title: product.title,\n          model: productModel(product),\n          url: `/products/${product.handle}`,\n        });\n      });\n    };\n\n    const loadCandidates = async () => {\n      if (!productsRoot) return;\n      try {\n        const response = await fetch(\"/products.json?limit=250\", { credentials: \"same-origin\" });\n        if (!response.ok) throw new Error(`products ${response.status}`);\n        const data = await response.json();\n        publishedCandidates = (data.products || [])\n          .filter((product) => /\u771F\u7A7A|\u5438\u7740|vacuum|cup|cups|\u30D1\u30C3\u30C9|module|\u30E2\u30B8\u30E5\u30FC\u30EB/i.test(tagText(product)))\n          .sort((a, b) => {\n            const aCup = /cup|cups|\u30D1\u30C3\u30C9|\u5438\u7740/i.test(tagText(a)) ? 0 : 1;\n            const bCup = /cup|cups|\u30D1\u30C3\u30C9|\u5438\u7740/i.test(tagText(b)) ? 0 : 1;\n            return aCup - bCup || a.title.localeCompare(b.title);\n          });\n        if (productsStatus) productsStatus.remove();\n        renderCandidates();\n      } catch (_error) {\n        if (productsStatus) {\n          productsStatus.textContent =\n            \"\u516C\u958B\u5546\u54C1\u306E\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u6761\u4EF6\u9001\u4FE1\u306F\u53EF\u80FD\u3067\u3059\u3002\u62C5\u5F53\u8005\u304C\u5546\u54C1\u5EAB\u304B\u3089\u5019\u88DC\u3092\u78BA\u8A8D\u3057\u307E\u3059\u3002\";\n        }\n      }\n    };\n\n    const calculate = () => {\n      const weight = Math.max(Number(fields.weight?.value || 0), 0);\n      const pads = Math.max(Number(fields.pads?.value || 1), 1);\n      const vacuumKpa = Math.max(Number(fields.vacuum?.value || 60), 1);\n      const vacuum = vacuumKpa * 1000;\n      const safety = Math.max(Number(fields.safety?.value || 2), 1);\n      const direction = fields.direction?.value || \"horizontal\";\n      const directionFactor = direction === \"vertical\" ? 1.45 : 1;\n      const surface = fields.surface?.value || \"standard\";\n      const surfaceProfile = surfaceProfiles[surface] || surfaceProfiles.standard;\n      const motion = fields.motion?.value || \"standard\";\n      const motionProfile = motionProfiles[motion] || motionProfiles.standard;\n      const forcePerPad = (weight * 9.80665 * safety * directionFactor * surfaceProfile.factor * motionProfile.factor) / pads;\n      const area = forcePerPad / vacuum;\n      const diameterMm = Math.ceil(Math.sqrt((4 * area) / Math.PI) * 1000);\n      const rounded = nearestStandard(Math.max(4, diameterMm));\n      const areaCm2 = area * 10000;\n      const riskItems = [];\n\n      if (direction === \"vertical\") riskItems.push({ text: \"\u5782\u76F4\u4FDD\u6301\u306F\u843D\u4E0B\u30EA\u30B9\u30AF\u78BA\u8A8D\", caution: true });\n      if (surface !== \"smooth\" && surface !== \"standard\") riskItems.push({ text: surfaceProfile.label, caution: true });\n      if (motion !== \"standard\") riskItems.push({ text: motionProfile.label, caution: true });\n      if (rounded >= 100) riskItems.push({ text: \"\u5927\u5F84\u30D1\u30C3\u30C9\u5019\u88DC\", caution: true });\n      if (!riskItems.length) riskItems.push({ text: \"\u6A19\u6E96\u6761\u4EF6\", caution: false });\n\n      currentState = {\n        weight,\n        pads,\n        vacuumKpa,\n        safety,\n        direction,\n        directionLabel: fields.direction?.selectedOptions?.[0]?.textContent?.trim() || \"\u6C34\u5E73\u4FDD\u6301\",\n        surface,\n        surfaceLabel: surfaceProfile.label,\n        motion,\n        motionLabel: motionProfile.label,\n        forcePerPad,\n        areaCm2,\n        rounded,\n        usageNote: fields.usageNote?.value?.trim() || \"\",\n      };\n\n      if (value) value.textContent = `${rounded} mm`;\n      if (note) {\n        note.textContent = `\u6A19\u6E96\u5F84\u306B\u4E38\u3081\u305F\u76EE\u5B89\u3067\u3059\u3002\u5B9F\u969B\u306E\u53EF\u5426\u306F\u30EF\u30FC\u30AF\u8868\u9762\u3001\u6F0F\u308C\u3001\u52A0\u901F\u5EA6\u3001\u771F\u7A7A\u56DE\u8DEF\u3001\u30D1\u30C3\u30C9\u6750\u8CEA\u3001\u53D6\u4ED8\u30B9\u30DA\u30FC\u30B9\u3067\u5909\u308F\u308A\u307E\u3059\u3002`;\n      }\n      if (force) force.textContent = `${forcePerPad.toFixed(1)} N`;\n      if (areaNode) areaNode.textContent = `${areaCm2.toFixed(2)} cm\u00B2`;\n      if (check) {\n        check.textContent = riskItems.some((item) => item.caution) ? \"\u62C5\u5F53\u8005\u78BA\u8A8D\u63A8\u5968\" : \"\u6A19\u6E96\u78BA\u8A8D\";\n      }\n      if (risk) {\n        risk.innerHTML = \"\";\n        riskItems.forEach((item) => {\n          const pill = document.createElement(\"span\");\n          if (item.caution) pill.classList.add(\"is-caution\");\n          pill.textContent = item.text;\n          risk.append(pill);\n        });\n      }\n      if (quoteLink) {\n        quoteLink.href = buildParams(currentState);\n      }\n      updateCandidateLinks();\n    };\n\n    Object.values(fields).forEach((field) => {\n      field?.addEventListener(\"input\", calculate);\n      field?.addEventListener(\"change\", calculate);\n    });\n    calculate();\n    loadCandidates();\n  }\n\n  function bindQuotePrefill() {\n    const form = document.querySelector(\"#CrgQuoteRequestForm\");\n    if (!form) return;\n\n    const params = new URLSearchParams(window.location.search);\n    const setValue = (selector, nextValue, overwrite = false) => {\n      const field = form.querySelector(selector);\n      if (!field || (!overwrite && field.value)) return;\n      field.value = nextValue;\n      field.dispatchEvent(new Event(\"input\", { bubbles: true }));\n      field.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    };\n\n    const sku = params.get(\"sku\") || \"\";\n    const productName = params.get(\"product\") || \"\";\n    if (sku || productName) {\n      const productText = [sku, productName].filter(Boolean).join(\" / \");\n      setValue(\"#CrgQuote-request-type\", \"\u6B63\u5F0F\u898B\u7A4D\u308A\");\n      setValue(\"#CrgQuote-product\", productText);\n      setValue(\"#CrgQuote-quantity\", \"1\");\n      setValue(\n        \"#CrgQuote-body\",\n        [\n          \"\u5546\u54C1\u30DA\u30FC\u30B8\u304B\u3089\u306E\u898B\u7A4D\u308A\u4F9D\u983C\",\n          sku ? `\u578B\u756A\u30FB\u6CE8\u6587\u30B3\u30FC\u30C9: ${sku}` : \"\",\n          productName ? `\u5546\u54C1\u540D: ${productName}` : \"\",\n          \"\",\n          \"\u6B63\u5F0F\u306A\u4FA1\u683C\u3001\u5728\u5EAB\u3001\u7D0D\u671F\u3001\u914D\u9001\u6761\u4EF6\u306E\u78BA\u8A8D\u3092\u5E0C\u671B\u3057\u307E\u3059\u3002\",\n        ]\n          .filter(Boolean)\n          .join(\"\\n\"),\n      );\n    }\n\n    if (params.get(\"source\") !== \"selector\" || params.get(\"tool\") !== \"vacuum-pad\") return;\n\n    const workWeight = params.get(\"workWeight\") || \"\";\n    const padCount = params.get(\"padCount\") || \"\";\n    const vacuumKpa = params.get(\"vacuumKpa\") || \"\";\n    const safetyFactor = params.get(\"safetyFactor\") || \"\";\n    const directionLabel = params.get(\"directionLabel\") || \"\";\n    const surfaceLabel = params.get(\"surfaceLabel\") || \"\";\n    const motionLabel = params.get(\"motionLabel\") || \"\";\n    const resultDiameter = params.get(\"resultDiameter\") || \"\";\n    const requiredForce = params.get(\"requiredForce\") || \"\";\n    const requiredArea = params.get(\"requiredArea\") || \"\";\n    const usageNote = params.get(\"usageNote\") || \"\";\n    const candidateTitle = params.get(\"candidateTitle\") || \"\";\n    const candidateModel = params.get(\"candidateModel\") || \"\";\n    const candidateUrl = params.get(\"candidateUrl\") || \"\";\n\n    setValue(\"#CrgQuote-request-type\", \"\u88FD\u54C1\u9078\u5B9A\u3092\u542B\u3080\u76F8\u8AC7\", true);\n    const candidateText =\n      candidateModel || candidateTitle\n        ? [candidateModel, candidateTitle].filter(Boolean).join(\" / \")\n        : \"\u771F\u7A7A\u5438\u7740\u30D1\u30C3\u30C9\u9078\u5B9A\u76F8\u8AC7\";\n\n    setValue(\"#CrgQuote-product\", candidateText, true);\n    setValue(\"#CrgQuote-quantity\", \"\u672A\u5B9A\", true);\n    setValue(\n      \"#CrgQuote-workpiece\",\n      usageNote ? `\u771F\u7A7A\u5438\u7740 / ${usageNote}` : \"\u771F\u7A7A\u5438\u7740\u30D1\u30C3\u30C9\u9078\u5B9A\u76F8\u8AC7\",\n      true,\n    );\n\n    const selectorSummary = [\n      \"\u9078\u5B9A\u30C4\u30FC\u30EB\u304B\u3089\u306E\u76F8\u8AC7\",\n      workWeight ? `\u30EF\u30FC\u30AF\u91CD\u91CF: ${workWeight} kg` : \"\",\n      padCount ? `\u5438\u7740\u30D1\u30C3\u30C9\u6570: ${padCount}` : \"\",\n      vacuumKpa ? `\u771F\u7A7A\u5727: ${vacuumKpa} kPa` : \"\",\n      safetyFactor ? `\u5B89\u5168\u7387: ${safetyFactor}` : \"\",\n      directionLabel ? `\u642C\u9001\u65B9\u5411: ${directionLabel}` : \"\",\n      surfaceLabel ? `\u30EF\u30FC\u30AF\u8868\u9762: ${surfaceLabel}` : \"\",\n      motionLabel ? `\u52D5\u4F5C\u6761\u4EF6: ${motionLabel}` : \"\",\n      resultDiameter ? `\u63A8\u5968\u30D1\u30C3\u30C9\u5F84\u76EE\u5B89: ${resultDiameter}` : \"\",\n      requiredForce ? `\u5FC5\u8981\u5438\u7740\u529B / \u30D1\u30C3\u30C9: ${requiredForce}` : \"\",\n      requiredArea ? `\u5FC5\u8981\u5438\u7740\u9762\u7A4D / \u30D1\u30C3\u30C9: ${requiredArea}` : \"\",\n      candidateTitle ? `\u78BA\u8A8D\u5019\u88DC: ${[candidateModel, candidateTitle].filter(Boolean).join(\" / \")}` : \"\",\n      candidateUrl ? `\u5019\u88DCURL: ${candidateUrl}` : \"\",\n      usageNote ? `\u7528\u9014\u30E1\u30E2: ${usageNote}` : \"\",\n      \"\",\n      \"\u6B63\u5F0F\u306A\u578B\u756A\u3001\u6570\u91CF\u3001\u5B89\u5168\u7387\u306F\u62C5\u5F53\u8005\u78BA\u8A8D\u3092\u5E0C\u671B\u3057\u307E\u3059\u3002\",\n    ]\n      .filter((line, index, lines) => line || (index > 0 && lines[index - 1]))\n      .join(\"\\n\");\n\n    setValue(\"#CrgQuote-body\", selectorSummary, true);\n  }\n\n  function bindFaq() {\n    const root = document.querySelector(\"[data-crg-faq]\");\n    if (!root) return;\n\n    const buttons = Array.from(root.querySelectorAll(\"[data-crg-faq-filter]\"));\n    const items = Array.from(root.querySelectorAll(\"[data-crg-faq-item]\"));\n\n    buttons.forEach((button) => {\n      button.addEventListener(\"click\", () => {\n        const filter = button.getAttribute(\"data-crg-faq-filter\");\n        buttons.forEach((item) => item.classList.toggle(\"is-active\", item === button));\n        items.forEach((item) => {\n          item.hidden = filter !== \"all\" && item.getAttribute(\"data-crg-faq-item\") !== filter;\n        });\n      });\n    });\n  }\n\n  document.addEventListener(\"DOMContentLoaded\", () => {\n    normalizeCompareLinks();\n    normalizeQuoteLinks();\n    bindProductActions();\n    bindCardCompareActions();\n    renderCompareTray();\n    bindBulkTools();\n    renderListPage();\n    bindSelector();\n    bindQuotePrefill();\n    bindFaq();\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
