{"product_id":"pls-plus-3","title":"PLS Plus","description":"\u003cstyle\u003e\n  .q353-pdp-js-anchor-c8v6 {\n    width: 100%;\n    background: #fff;\n  }\n\n  .q353-pdp-js-anchor-c8v6__nav {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    background: #fff;\n    border-bottom: 0.1rem solid rgba(0, 0, 0, 0.05);\n    overflow-x: auto;\n    scrollbar-width: none;\n    Height: 6.8rem;\n  }\n\n  .q353-pdp-js-anchor-c8v6__nav.is-fixed {\n    position: fixed;\n    top: var(--q353-sticky-header-height-c8v6, 0rem);\n    left: var(--q353-anchor-fixed-left-c8v6, 0px);\n    width: var(--q353-anchor-fixed-width-c8v6, 100%);\n    z-index: 1;\n  }\n\n  .q353-pdp-js-anchor-c8v6__nav::-webkit-scrollbar {\n    display: none;\n  }\n\n  .q353-pdp-js-anchor-c8v6__nav-spacer {\n    display: none;\n    height: var(--q353-anchor-nav-height-c8v6, 5.6rem);\n  }\n\n  .q353-pdp-js-anchor-c8v6__nav-spacer.is-show {\n    display: block;\n  }\n\n  .q353-pdp-js-anchor-c8v6__btn {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    position: relative;\n    flex: 1 0 auto;\n    min-width: 33.333%;\n    height: 100%;\n    text-align: center;\n    color: #999;\n    font-size: 1.8rem;\n    font-weight: 400;\n    white-space: nowrap;\n    cursor: pointer;\n    user-select: none;\n  }\n\n  .q353-pdp-js-anchor-c8v6__btn.is-active {\n    color: black;\n  }\n\n  .q353-pdp-js-anchor-c8v6__btn.is-active::after {\n    content: \"\";\n    position: absolute;\n    left: 50%;\n    bottom: 0;\n    width: 28%;\n    height: 0.2rem;\n    background: black;\n    transform: translateX(-50%);\n  }\n\n  .q353-pdp-js-anchor-c8v6__panel {\n    padding-top: 4rem;\n  }\n\n  .q353-pdp-js-anchor-c8v6__title {\n    font-size: 2.4rem;\n    line-height: 1.4;\n    margin: 0 0 1.8rem;\n    font-weight: 700;\n    color: #111;\n  }\n\n  .q353-pdp-js-anchor-c8v6__body {\n    font-size: 1.6rem;\n    line-height: 1.8;\n    color: #333;\n  }\n\n  .q353-pdp-js-anchor-c8v6__body p {\n    margin: 0 0 1.6rem;\n  }\n\n  .q353-pdp-js-anchor-c8v6__body img,\n  .q353-pdp-js-anchor-c8v6__body video {\n    display: block;\n    max-width: 100%;\n    height: auto;\n  }\n\n  .q353-pdp-js-anchor-c8v6__body table {\n    width: 100%;\n    border-collapse: collapse;\n    border: 0.1rem solid rgba(0, 0, 0, 0.08);\n  }\n\n  .q353-pdp-js-anchor-c8v6__body th,\n  .q353-pdp-js-anchor-c8v6__body td {\n    border: 0.1rem solid rgba(0, 0, 0, 0.08);\n    padding: 1.2rem 1.4rem;\n    vertical-align: top;\n  }\n\n  .q353-pdp-js-anchor-c8v6__body th {\n    width: 30%;\n    background: #f6f7f8;\n    font-weight: 500;\n    text-align: right;\n    color: #333;\n  }\n\n  .q353-pdp-js-anchor-c8v6__body td {\n    background: #fff;\n    color: #333;\n  }\n\n  @media screen and (max-width: 989px) {\n    .q353-pdp-js-anchor-c8v6__nav.is-fixed {\n\twidth: 100%;\n    }\n\n    .q353-pdp-js-anchor-c8v6__nav {\n        height: 4.8rem;\n\tmargin-left: -2rem;\n        margin-right: -2rem;\n    }\n\n    .q353-pdp-js-anchor-c8v6__btn {\n      font-weight: 400;\n      font-size: 1.6rem;\n    }\n\n    .q353-pdp-js-anchor-c8v6__btn.is-active::after {\n      width: 19.5vw;\n    }\n\n    .q353-pdp-js-anchor-c8v6__nav-spacer {\n      height: var(--q353-anchor-nav-height-c8v6, 5.2rem);\n    }\n\n    .q353-pdp-js-anchor-c8v6__content {\n      margin-left: -1rem;\n      margin-right: -1rem;\n    }\n\n    .q353-pdp-js-anchor-c8v6__panel {\n      padding-top: 3.6rem;\n    }\n\n    .q353-pdp-js-anchor-c8v6__title {\n      font-size: 2.4rem;\n    }\n\n    .q353-pdp-js-anchor-c8v6__body {\n      font-size: 1.6rem;\n    }\n  }\n\u003c\/style\u003e\n\u003cdiv data-q353-anchor-root-c8v6=\"\" class=\"q353-pdp-js-anchor-c8v6\"\u003e\n\u003cdiv data-q353-anchor-nav-c8v6=\"\" class=\"q353-pdp-js-anchor-c8v6__nav page-width\"\u003e\n\u003cdiv data-q353-anchor-btn=\"desc\" class=\"q353-pdp-js-anchor-c8v6__btn is-active\"\u003e詳細說明\u003c\/div\u003e\n\u003cdiv data-q353-anchor-btn=\"spec\" class=\"q353-pdp-js-anchor-c8v6__btn\"\u003e商品規格\u003c\/div\u003e\n\u003cdiv data-q353-anchor-next-section=\"true\" class=\"q353-pdp-js-anchor-c8v6__btn\"\u003e商品推薦\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"q353-pdp-js-anchor-c8v6__content\"\u003e\n\u003csection data-q353-anchor-panel=\"desc\" class=\"q353-pdp-js-anchor-c8v6__panel\"\u003e\n\u003ch2 class=\"q353-pdp-js-anchor-c8v6__title\"\u003e詳細說明\u003c\/h2\u003e\n\u003cdiv class=\"q353-pdp-js-anchor-c8v6__body\"\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/1_33ad44e4-e9ba-492a-907f-39dc272768de.png?v=1780020816\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/2_12a7e726-79d5-4471-a8a8-0090bf38a313.png?v=1780020829\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/3.png?v=1780020838\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/4.png?v=1780020858\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/5.png?v=1780020848\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/6.png?v=1780020858\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/7.png?v=1780020881\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/8.png?v=1780020873\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/9.png?v=1780020874\"\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/10_eb542576-a895-4271-9730-7cf74d396733.png?v=1780020886\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection data-q353-anchor-panel=\"spec\" class=\"q353-pdp-js-anchor-c8v6__panel\"\u003e\n\u003ch2 class=\"q353-pdp-js-anchor-c8v6__title\"\u003e商品規格\u003c\/h2\u003e\n\u003cdiv class=\"q353-pdp-js-anchor-c8v6__body\"\u003e\n\u003cdiv class=\"salepage-specification-caption\"\u003e\n\u003cspan\u003e\u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"salepage-specification-caption\"\u003e\n\u003ctable style=\"width: 99.9392%; height: 137.205px;\" width=\"100%\"\u003e\n\u003ctbody\u003e\n\u003ctr style=\"height: 58.8021px;\"\u003e\n\u003ctd style=\"width: 25.0195%; height: 58.8021px;\"\u003e 成份\u003c\/td\u003e\n\u003ctd style=\"width: 74.7013%; height: 58.8021px;\"\u003e\u003cspan\u003e蟲草菌絲體 Cs4、明膠、冬蟲夏草菌絲體 中華被毛孢、膳食纖維 （生產此產品的厰房亦處理含有麩質的的殼類、甲殼類動物、蛋類、魚類、花生、大豆、奶類、木本堅果及堅果製品）\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 19.6007px;\"\u003e\n\u003ctd style=\"width: 25.0195%; height: 19.6007px;\"\u003e\u003cspan\u003e注意事項\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 74.7013%; height: 19.6007px;\"\u003e\u003cspan\u003e兒童及孕婦食用前請諮詢醫師意見。感冒或發燒期間請暫停服用\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 19.6007px;\"\u003e\n\u003ctd style=\"width: 25.0195%; height: 19.6007px;\"\u003e\u003cspan\u003e包裝\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 74.7013%; height: 19.6007px;\"\u003e\u003cspan\u003e每瓶50粒 每粒0.375克\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 19.6007px;\"\u003e\n\u003ctd style=\"width: 25.0195%; height: 19.6007px;\"\u003e\u003cspan\u003e儲存\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 74.7013%; height: 19.6007px;\"\u003e\u003cspan\u003e請置於陰涼乾爽處\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 19.6007px;\"\u003e\n\u003ctd style=\"width: 25.0195%; height: 19.6007px;\"\u003e\u003cspan\u003e產地\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 74.7013%; height: 19.6007px;\"\u003e\u003cspan\u003e香港\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n  (function () {\n    var q353FixedTicking = false;\n\n    function q353PxToRem(px) {\n      return px \/ 10;\n    }\n\n    function q353GetStickyHeaderHeight() {\n      var header =\n        document.querySelector('sticky-header') ||\n        document.querySelector('.shopify-section-header-sticky') ||\n        document.querySelector('.header-wrapper') ||\n        document.querySelector('.site-header') ||\n        document.querySelector('header');\n\n      if (!header) return 0;\n\n      var rect = header.getBoundingClientRect();\n      var style = window.getComputedStyle(header);\n\n      if (\n        rect.height \u003c= 0 ||\n        style.display === 'none' ||\n        style.visibility === 'hidden'\n      ) {\n        return 0;\n      }\n\n      return Math.ceil(rect.height);\n    }\n\n    function q353UpdateStickyHeaderTop() {\n      var height = q353GetStickyHeaderHeight();\n\n      document.documentElement.style.setProperty(\n        '--q353-sticky-header-height-c8v6',\n        q353PxToRem(height) + 'rem'\n      );\n    }\n\n    function q353IsSectionLike(el) {\n      if (!el || !el.tagName) return false;\n\n      var tag = el.tagName.toLowerCase();\n\n      return (\n        tag === 'section' ||\n        el.classList.contains('shopify-section') ||\n        (el.id \u0026\u0026 el.id.indexOf('shopify-section-') === 0)\n      );\n    }\n\n    function q353GetParentSection(root) {\n      var current = root.parentElement;\n\n      while (\n        current \u0026\u0026\n        current !== document.body \u0026\u0026\n        current !== document.documentElement\n      ) {\n        if (q353IsSectionLike(current)) {\n          return current;\n        }\n\n        current = current.parentElement;\n      }\n\n      return null;\n    }\n\n    function q353GetNextParentSection(root) {\n      var parentSection = q353GetParentSection(root);\n      if (!parentSection) return null;\n\n      var next = parentSection.nextElementSibling;\n\n      while (next) {\n        if (q353IsSectionLike(next)) {\n          return next;\n        }\n\n        next = next.nextElementSibling;\n      }\n\n      return null;\n    }\n\n    function q353EnsureNavSpacer(root, nav) {\n      var spacer = root.querySelector('[data-q353-anchor-nav-spacer-c8v6]');\n\n      if (!spacer) {\n        spacer = document.createElement('div');\n        spacer.className = 'q353-pdp-js-anchor-c8v6__nav-spacer';\n        spacer.setAttribute('data-q353-anchor-nav-spacer-c8v6', 'true');\n        nav.insertAdjacentElement('afterend', spacer);\n      }\n\n      return spacer;\n    }\n\n    function q353UpdateFixedNav(root, nav) {\n      if (!root || !nav) return;\n\n      q353UpdateStickyHeaderTop();\n\n      var headerHeight = q353GetStickyHeaderHeight();\n      var rootRect = root.getBoundingClientRect();\n      var navHeight = nav.getBoundingClientRect().height || nav.offsetHeight || 0;\n      var spacer = q353EnsureNavSpacer(root, nav);\n\n      root.style.setProperty(\n        '--q353-anchor-nav-height-c8v6',\n        q353PxToRem(navHeight) + 'rem'\n      );\n\n      root.style.setProperty(\n        '--q353-anchor-fixed-left-c8v6',\n        Math.round(rootRect.left) + 'px'\n      );\n\n      root.style.setProperty(\n        '--q353-anchor-fixed-width-c8v6',\n        Math.round(rootRect.width) + 'px'\n      );\n\n      var shouldFixed = rootRect.top \u003c= headerHeight;\n\n      nav.classList.toggle('is-fixed', shouldFixed);\n      spacer.classList.toggle('is-show', shouldFixed);\n    }\n\n    function q353UpdateAllFixedNav() {\n      document\n        .querySelectorAll('[data-q353-anchor-root-c8v6]')\n        .forEach(function (root) {\n          var nav = root.querySelector('[data-q353-anchor-nav-c8v6]');\n          if (!nav) return;\n\n          q353UpdateFixedNav(root, nav);\n        });\n    }\n\n    function q353RequestFixedUpdate() {\n      if (q353FixedTicking) return;\n\n      q353FixedTicking = true;\n\n      window.requestAnimationFrame(function () {\n        q353FixedTicking = false;\n        q353UpdateAllFixedNav();\n      });\n    }\n\n    function q353GetScrollOffset(nav) {\n      var headerHeight = q353GetStickyHeaderHeight();\n      var navHeight = nav ? nav.getBoundingClientRect().height || 0 : 0;\n\n      return headerHeight + navHeight;\n    }\n\n    function q353ScrollTo(target, nav) {\n      if (!target) return;\n\n      q353UpdateStickyHeaderTop();\n\n      var top =\n        target.getBoundingClientRect().top +\n        window.pageYOffset -\n        q353GetScrollOffset(nav);\n\n      window.scrollTo({\n        top: Math.max(top, 0),\n        behavior: 'smooth'\n      });\n    }\n\n    function q353InitAnchor() {\n      q353UpdateStickyHeaderTop();\n\n      var roots = document.querySelectorAll('[data-q353-anchor-root-c8v6]');\n\n      roots.forEach(function (root) {\n        if (root.dataset.q353AnchorInited === '1') {\n          var oldNav = root.querySelector('[data-q353-anchor-nav-c8v6]');\n          if (oldNav) {\n            q353EnsureNavSpacer(root, oldNav);\n            q353UpdateFixedNav(root, oldNav);\n          }\n          return;\n        }\n\n        root.dataset.q353AnchorInited = '1';\n\n        var nav = root.querySelector('[data-q353-anchor-nav-c8v6]');\n        if (!nav) return;\n\n        q353EnsureNavSpacer(root, nav);\n        q353UpdateFixedNav(root, nav);\n\n        var activeClass = 'is-active';\n\n        nav.addEventListener('click', function (event) {\n          var button = event.target.closest(\n            '[data-q353-anchor-btn], [data-q353-anchor-next-section]'\n          );\n\n          if (!button || !root.contains(button)) return;\n\n          var target = null;\n\n          if (button.getAttribute('data-q353-anchor-next-section') === 'true') {\n            target = q353GetNextParentSection(root);\n          } else {\n            var key = button.getAttribute('data-q353-anchor-btn');\n            target = root.querySelector('[data-q353-anchor-panel=\"' + key + '\"]');\n          }\n\n          if (!target) {\n            console.warn('[q353 anchor] 找不到目标');\n            return;\n          }\n\n          root\n            .querySelectorAll('[data-q353-anchor-btn], [data-q353-anchor-next-section]')\n            .forEach(function (item) {\n              item.classList.remove(activeClass);\n            });\n\n          button.classList.add(activeClass);\n\n          q353ScrollTo(target, nav);\n\n          window.setTimeout(q353RequestFixedUpdate, 300);\n          window.setTimeout(q353RequestFixedUpdate, 700);\n        });\n      });\n\n      q353RequestFixedUpdate();\n    }\n\n    q353InitAnchor();\n\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', q353InitAnchor);\n    }\n\n    window.addEventListener('load', q353InitAnchor);\n    window.addEventListener('resize', q353RequestFixedUpdate);\n    window.addEventListener('scroll', q353RequestFixedUpdate, { passive: true });\n    document.addEventListener('shopify:section:load', q353InitAnchor);\n  })();\n\u003c\/script\u003e \u003cscript\u003e\n  (function () {\n    var html = document.documentElement;\n    var body = document.body;\n\n    html.style.scrollBehavior = 'auto';\n    body.style.scrollBehavior = 'auto';\n\n    html.style.overscrollBehavior = 'none';\n    body.style.overscrollBehavior = 'none';\n\n    html.style.overflowAnchor = 'none';\n    body.style.overflowAnchor = 'none';\n\n    var startY = 0;\n    var startX = 0;\n\n    function getScrollableParent(el) {\n      while (el \u0026\u0026 el !== document.body \u0026\u0026 el !== document.documentElement) {\n        var style = window.getComputedStyle(el);\n        var overflowY = style.overflowY;\n\n        if (\n          (overflowY === 'auto' || overflowY === 'scroll') \u0026\u0026\n          el.scrollHeight \u003e el.clientHeight\n        ) {\n          return el;\n        }\n\n        el = el.parentElement;\n      }\n\n      return document.scrollingElement || document.documentElement;\n    }\n\n    document.addEventListener(\n      'touchstart',\n      function (e) {\n        if (!e.touches || !e.touches.length) return;\n\n        startY = e.touches[0].clientY;\n        startX = e.touches[0].clientX;\n      },\n      { passive: true }\n    );\n\n    document.addEventListener(\n      'touchmove',\n      function (e) {\n        if (!e.touches || !e.touches.length) return;\n\n        var currentY = e.touches[0].clientY;\n        var currentX = e.touches[0].clientX;\n\n        var diffY = currentY - startY;\n        var diffX = currentX - startX;\n\n        if (Math.abs(diffX) \u003e Math.abs(diffY)) return;\n\n        var scrollEl = getScrollableParent(e.target);\n\n        var scrollTop = scrollEl.scrollTop;\n        var scrollHeight = scrollEl.scrollHeight;\n        var clientHeight = scrollEl.clientHeight;\n\n        var isAtTop = scrollTop \u003c= 0;\n        var isAtBottom = scrollTop + clientHeight \u003e= scrollHeight - 1;\n\n        var isPullingDown = diffY \u003e 0;\n        var isPullingUp = diffY \u003c 0;\n\n        if ((isAtTop \u0026\u0026 isPullingDown) || (isAtBottom \u0026\u0026 isPullingUp)) {\n          e.preventDefault();\n        }\n      },\n      { passive: false }\n    );\n  })();\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Mekajiki 512772","offers":[{"title":"Default Title","offer_id":52575251956012,"sku":null,"price":1299.0,"currency_code":"HKD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0953\/6130\/2828\/files\/PLSSSS.png?v=1769058637","url":"https:\/\/mekajikitokyo.com\/products\/pls-plus-3","provider":"Mekajiki 512772","version":"1.0","type":"link"}