{"title":"Sale","description":"","products":[{"product_id":"fresh-bundle-of-garlic-scapes","title":"Bundle of Garlic Scapes","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px 0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#0f172a;line-height:1.6\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:24px;margin-top:12px;\"\u003e\n  \u003ch2 style=\"margin:0 0 6px;font-size:24px;font-weight:800;\"\u003eBundle of Garlic Scapes\u003c\/h2\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eTender, curly flower stalks from hardneck garlic—mildly garlicky with a sweet, green snap that shines in stir‑fries, eggs, noodles, and quick salads.\u003c\/p\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003eCrisp‑tender texture with a gentle garlic aroma—less pungent than cloves.\u003c\/li\u003e\n    \u003cli\u003eVersatile: great sautéed, grilled, blitzed into sauces, or tossed into soups.\u003c\/li\u003e\n    \u003cli\u003eCooks fast; keeps a vibrant green bite in minutes.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n  \u003col style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli style=\"margin-bottom:10px;\"\u003e\n\u003cstrong\u003eWok‑tossed Beef \u0026amp; Scapes with Oyster Glaze\u003c\/strong\u003e — Stir‑fry sliced scapes with \u003ca href=\"\/products\/angus-prime-shredded-beef-500g\" style=\"color:#DB3A35;\"\u003eAngus Prime Beef Strip\u003c\/a\u003e, a splash of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:#DB3A35;\"\u003eoyster sauce\u003c\/a\u003e and a drizzle of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:#DB3A35;\"\u003esesame oil\u003c\/a\u003e until glossy (2–4 minutes).\u003c\/li\u003e\n    \u003cli style=\"margin-bottom:10px;\"\u003e\n\u003cstrong\u003eGarlic Scapes \u0026amp; Soft Scrambled Eggs\u003c\/strong\u003e — Sauté chopped scapes briefly, then fold into softly set eggs; season with a touch of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:#DB3A35;\"\u003elight soy\u003c\/a\u003e. Try with \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\" style=\"color:#DB3A35;\"\u003efree‑range eggs\u003c\/a\u003e.\u003c\/li\u003e\n    \u003cli style=\"margin-bottom:10px;\"\u003e\n\u003cstrong\u003eShiitake, Tofu \u0026amp; Scapes Rice Vermicelli Soup\u003c\/strong\u003e\u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eBroth‑based\u003c\/span\u003e — Simmer \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:#DB3A35;\"\u003eclear chicken broth\u003c\/a\u003e, add \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\" style=\"color:#DB3A35;\"\u003erice vermicelli\u003c\/a\u003e, sliced \u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\" style=\"color:#DB3A35;\"\u003eshiitake\u003c\/a\u003e, scapes, and cubes of \u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\" style=\"color:#DB3A35;\"\u003esilken tofu\u003c\/a\u003e; finish with light soy.\u003c\/li\u003e\n    \u003cli style=\"margin-bottom:0;\"\u003e\n\u003cstrong\u003eLight Smashed Scape Salad\u003c\/strong\u003e — Blanch scapes briefly, smash into bite‑size lengths, then toss with \u003ca href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\" style=\"color:#DB3A35;\"\u003eblack vinegar\u003c\/a\u003e, a dab of \u003ca href=\"\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\" style=\"color:#DB3A35;\"\u003echili crisp\u003c\/a\u003e, and a touch of sesame oil.\u003c\/li\u003e\n  \u003c\/ol\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003eTrim the very tip if tough; cut into 3–5 cm batons or thin slices on the bias.\u003c\/li\u003e\n    \u003cli\u003eStir‑fry on high heat just until crisp‑tender (2–3 minutes) to keep them vibrant.\u003c\/li\u003e\n    \u003cli\u003eFor salads, blanch 30–45 seconds in salted water, then chill to set the green.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:#DB3A35;\"\u003eHaitian Premium Oyster Sauce 700g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" style=\"color:#DB3A35;\"\u003eKikkoman All‑Purpose Soy Sauce 1.6L\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:#DB3A35;\"\u003eLee Kum Kee Pure Sesame Oil 207ml\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\" style=\"color:#DB3A35;\"\u003eChuanwazi Crispy Chili Oil with Peanuts 200g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/chunsi-jiangxi-rice-vermicelli-300g\" style=\"color:#DB3A35;\"\u003eChunsi Jiangxi Rice Vermicelli 300g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" style=\"color:#DB3A35;\"\u003eAustralian Raw King Prawns – Peeled \u0026amp; Tail‑On\u003c\/a\u003e\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;\"\u003e\n  \u003cdiv\u003e\n    \u003ch3 style=\"margin:0 0 6px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n    \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eDiscover more aromatic alliums and kitchen essentials.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003ca href=\"\/collections\/scallion-ginger-garlic\" style=\"color:#DB3A35;white-space:nowrap;font-weight:700;\"\u003eBrowse Scallion • Ginger • Garlic\u003c\/a\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$4.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$7.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151489347871,"sku":"9202402011407","price":1.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/902ff191c310aebba95b67689109ac51PZZL0LoKrNieUsG5JsChWPorqiSAoUMD.jpg?v=1712384267"},{"product_id":"fresh-carrots-approximately-1kg","title":"Carrots 1kg","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif;color:#0f172a;line-height:1.6;padding:8px 0;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;\"\u003e\n    \u003ch1 style=\"margin:0 0 6px;font-size:26px;font-weight:800;\"\u003eCarrots 1kg\u003c\/h1\u003e\n    \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eCrisp, naturally sweet, and endlessly versatile — perfect for quick weeknight cooking or hearty weekend roasts.\u003c\/p\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n    \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eSweet crunch that holds up in stir‑fries, roasts, soups, and slaws.\u003c\/li\u003e\n      \u003cli\u003eCooks fast when julienned; caramelises beautifully when roasted.\u003c\/li\u003e\n      \u003cli\u003ePlays well with soy, sesame, garlic, ginger, and warm spices.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n    \u003cdiv style=\"display:grid;grid-template-columns:1fr;gap:14px;\"\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eGinger–garlic carrot stir‑fry with light soy\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eFlash‑fry carrot matchsticks with ginger and garlic, then finish with a splash of \u003ca href=\"\/products\/haday-golden-label-light-soy-sauce-1-28l\" title=\"Haday Golden Label Light Soy Sauce\"\u003elight soy\u003c\/a\u003e and a drizzle of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" title=\"Haitian Premium Oyster Sauce\"\u003eoyster sauce\u003c\/a\u003e. Stir‑fry 2‑4 minutes until crisp‑tender.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eBrothy carrot, shiitake \u0026amp; rice vermicelli soup\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eSimmer sliced carrots and \u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\" title=\"Chois Shiitake Mushrooms\"\u003eshiitake\u003c\/a\u003e in \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" title=\"Bull Head Clear Chicken Broth\"\u003eclear chicken broth\u003c\/a\u003e, then add \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\" title=\"Chunsi Jiangxi Rice Vermicelli 300g\"\u003erice vermicelli\u003c\/a\u003e. Season to taste for a comforting, broth‑based bowl.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eSesame \u0026amp; rice‑vinegar shredded carrot salad \u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eLow‑calorie\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eToss finely shredded carrots with \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" title=\"Hengshun White Rice Vinegar\"\u003erice vinegar\u003c\/a\u003e, a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" title=\"Lee Kum Kee Pure Sesame Oil\"\u003esesame oil\u003c\/a\u003e, and sliced \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\" title=\"Shallot Bunch\"\u003eshallots\u003c\/a\u003e. Chill briefly for peak crunch.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eCumin‑roasted carrots (sheet‑pan)\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eCoat wedges with a little \u003ca href=\"\/products\/88-canola-oil-1l\" title=\"88 Canola Oil\"\u003ecanola oil\u003c\/a\u003e, toss with \u003ca href=\"\/products\/bakerdream-cumin-barbecue-seasoning-130g\" title=\"Bakerdream Cumin Seasoning\"\u003ecumin seasoning\u003c\/a\u003e, and roast 18‑25 minutes until caramelised.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n    \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003ePeel if you like an ultra‑smooth finish; otherwise scrub well to keep more color and texture.\u003c\/li\u003e\n      \u003cli\u003eFor fast cooking, cut into thin matchsticks or bias slices; for roasting, go chunkier so edges caramelise while centers stay tender.\u003c\/li\u003e\n      \u003cli\u003eBlanch coins or sticks 1‑2 minutes before quick stir‑fries to lock in color and cut cook time.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n    \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" title=\"Australian Raw King Prawns\"\u003eKing prawns\u003c\/a\u003e for quick stir‑fries.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/chois-oyster-mushrooms-400g\" title=\"Chois Oyster Mushrooms\"\u003eOyster mushrooms\u003c\/a\u003e for earthy depth.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/fresh-bunch-of-coriander\" title=\"Bunch of Coriander\"\u003eCoriander\u003c\/a\u003e to finish salads and noodle bowls.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" title=\"Kikkoman Soy Sauce\"\u003eSoy sauce\u003c\/a\u003e for umami seasoning.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" title=\"Ever Green Classic Tofu 500g\"\u003eFirm tofu\u003c\/a\u003e for veg‑forward protein.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n    \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eLove cooking with roots? Explore more picks in our curated range.\u003c\/p\u003e\n    \u003cp style=\"margin:10px 0 0;\"\u003e\u003ca href=\"\/collections\/potatoes-root-vegetables\" style=\"color:var(--brand);font-weight:700;\"\u003eBrowse root vegetables →\u003c\/a\u003e\u003c\/p\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$4.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$7.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151489741087,"sku":"A0735745752159","price":1.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/4049e40aea454854f53aca1094bb64931QnDqeyFQxBHXNeqc3h4WIdsI68uJvxz.jpg?v=1735370758"},{"product_id":"fresh-red-chili-peppers-approximately-250g","title":"Red Chili Peppers 250g","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px 12px;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;\"\u003e\n  \u003ch2 style=\"margin:0 0 6px;font-size:22px;font-weight:800;color:#0f172a;\"\u003eRed Chili Peppers 250g\u003c\/h2\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eBright, thin‑skinned red chilies that bring clean, vibrant heat to everything from quick stir‑fries and noodle soups to marinades, relishes, and pickles.\u003c\/p\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003eBalanced heat with a fruity aroma—easy to dial up or down by using more or less seeds and pith.\u003c\/li\u003e\n    \u003cli\u003eVersatile across cuisines: perfect with garlic, soy, vinegar, seafood, tofu, and leafy greens.\u003c\/li\u003e\n    \u003cli\u003eCuts cleanly and cooks fast—ideal for weeknight meals and last‑minute flavor boosts.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n  \u003cdiv style=\"display:grid;grid-template-columns:1fr;gap:12px;\"\u003e\n    \u003cdiv\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;margin-bottom:4px;\"\u003eGarlic‑chili stir‑fried gai lan\u003c\/div\u003e\n      \u003cp style=\"margin:0;color:#334155;\"\u003eSizzle chopped garlic and sliced chilies, toss in \u003ca href=\"\/products\/fresh-bunch-of-chinese-broccoli-kai-lan-hearts\"\u003eChinese Broccoli (Gai Lan)\u003c\/a\u003e, then finish with a spoon of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e. Tender‑crisp in 2–4 minutes.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;margin-bottom:4px;\"\u003ePrawn vermicelli soup \u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eBroth-based\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cp style=\"margin:0;color:#334155;\"\u003eBloom sliced chilies in a splash of oil, pour in \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003eclear chicken broth\u003c\/a\u003e, add \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\"\u003erice vermicelli\u003c\/a\u003e and prawns; simmer until just cooked for a light, spicy bowl.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;margin-bottom:4px;\"\u003eChili and egg fried rice\u003c\/div\u003e\n      \u003cp style=\"margin:0;color:#334155;\"\u003eStir‑fry day‑old \u003ca href=\"\/products\/beidahuang-wuchang-rice-vacuum-pack-5kg\"\u003efragrant rice\u003c\/a\u003e with diced chilies, spring onions, and scrambled \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\"\u003efree‑range eggs\u003c\/a\u003e. Season with a touch of light soy.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;margin-bottom:4px;\"\u003eFresh chili, onion \u0026amp; coriander relish\u003c\/div\u003e\n      \u003cp style=\"margin:0;color:#334155;\"\u003eFinely chop chilies with \u003ca href=\"\/products\/fresh-purple-onions-approximately-1kg\"\u003epurple onion\u003c\/a\u003e and \u003ca href=\"\/products\/fresh-bunch-of-coriander\"\u003ecoriander\u003c\/a\u003e. Splash with \u003ca href=\"\/products\/hengshun-9-degree-rice-vinegar-500ml\"\u003erice vinegar\u003c\/a\u003e and a pinch of salt; spoon over grilled meats, tofu, or greens.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003eControl heat: remove seeds and white ribs for milder spice; leave them in for more kick.\u003c\/li\u003e\n    \u003cli\u003eSafety first: wear gloves if sensitive; avoid touching eyes. Clean boards\/knives with hot soapy water.\u003c\/li\u003e\n    \u003cli\u003eFlavor boost: briefly blister slices in a hot pan or wok to release aroma before adding other ingredients.\u003c\/li\u003e\n    \u003cli\u003eCut shapes matter: thin rings for quick stir‑fries, matchsticks for noodles, fine mince for sauces and marinades.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003eLight soy sauce\u003c\/a\u003e and \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003esesame oil\u003c\/a\u003e for classic seasoning.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/fresh-ever-green-dried-tofu-4-pieces-approximately-400g\"\u003eDried tofu (firm)\u003c\/a\u003e or \u003ca href=\"\/products\/chois-oyster-mushrooms-400g\"\u003eoyster mushrooms\u003c\/a\u003e for veg stir‑fries.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/fresh-baby-bok-choy-pack-of-2\"\u003eBaby bok choy\u003c\/a\u003e for garlicky, spicy greens.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eRaw king prawns\u003c\/a\u003e for spicy seafood noodles.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/fresh-dried-garlic-heads-approximately-500g\"\u003eGarlic bulbs\u003c\/a\u003e and \u003ca href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003efresh ginger\u003c\/a\u003e to build wok‑hei flavor.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;\"\u003e\n  \u003cdiv\u003e\n    \u003ch3 style=\"margin:0 0 6px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n    \u003cp style=\"margin:0;color:#334155;\"\u003eLove cooking with heat? Explore our full range of peppers and chilies.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv\u003e\n    \u003ca href=\"\/collections\/shop-peppers-chilli-online-next-day-delivery-in-sydney\" style=\"color:var(--brand);font-weight:700;\"\u003eBrowse all chilies →\u003c\/a\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e2e8f0;border-top:1px solid #e5e7eb;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$4.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$7.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151493837087,"sku":"A0735745752340","price":1.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/4049e40aea454854f53aca1094bb6493licJZskstW11z5Btm3b5SNjdGs3bcL7f.jpg?v=1712384540"},{"product_id":"fresh-bean-sprouts-approximately-400g","title":"Bean Sprouts 400g","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#0f172a;line-height:1.6;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;margin-top:16px;\"\u003e\n  \u003ch1 style=\"margin:0 0 6px;font-size:26px;font-weight:800;color:#0f172a;\"\u003eBean Sprouts 400g\u003c\/h1\u003e\n  \u003cp style=\"margin:0;color:#475569;font-size:14px;\"\u003eAlso known as mung bean sprouts\u003c\/p\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n  \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n    \u003cli\u003eFresh, ultra‑crisp texture that stays snappy with quick cooking.\u003c\/li\u003e\n    \u003cli\u003eNeutral, clean flavor that soaks up sauces and aromatics.\u003c\/li\u003e\n    \u003cli\u003eReady for stir‑fries, noodle\/rice dishes, soups, and crunchy salads.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 14px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n  \u003cdiv style=\"display:grid;grid-template-columns:1fr;gap:14px;\"\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eWok‑tossed garlic bean sprouts\u003c\/h4\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eHeat a wok until smoking, add a touch of oil, then sliced \u003ca href=\"\/products\/peeled-garlic-cloves-250g\" style=\"color:var(--brand);\"\u003egarlic\u003c\/a\u003e. Toss in sprouts with a splash of \u003ca href=\"\/products\/haday-golden-label-light-soy-sauce-1-28l\" style=\"color:var(--brand);\"\u003elight soy\u003c\/a\u003e; finish with a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003esesame oil\u003c\/a\u003e. Stir‑fry just 1–2 minutes to keep them crisp.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eClear enoki \u0026amp; tofu soup \u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eBroth-based\u003c\/span\u003e\n\u003c\/h4\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eSimmer \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:var(--brand);\"\u003eclear chicken broth\u003c\/a\u003e, add \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\" style=\"color:var(--brand);\"\u003eenoki mushrooms\u003c\/a\u003e and cubes of \u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\" style=\"color:var(--brand);\"\u003esilken tofu\u003c\/a\u003e. Drop in the sprouts for the last 30–60 seconds; season lightly to taste.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eSesame‑vinegar crunchy salad\u003c\/h4\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eRinse and drain well. Toss with julienned carrot\/cucumber, a dash of \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003ewhite rice vinegar\u003c\/a\u003e, a few drops of sesame oil, and sliced \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\" style=\"color:var(--brand);\"\u003espring onion\u003c\/a\u003e. Chill briefly and serve.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eStreet‑style rice noodle stir‑fry\u003c\/h4\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eStir‑fry soaked \u003ca href=\"\/products\/cha-kou-rice-noodles-1kg\" style=\"color:var(--brand);\"\u003erice noodles\u003c\/a\u003e with beaten \u003ca href=\"\/products\/canobolas-free-range-eggs-18-pieces-1kg\" style=\"color:var(--brand);\"\u003eeggs\u003c\/a\u003e, garlic and chives. Toss in sprouts at the end with a spoon of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:var(--brand);\"\u003eoyster sauce\u003c\/a\u003e for shine and wok aroma.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n  \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n    \u003cli\u003eRinse in cold water and drain thoroughly; excess water can dilute stir‑fry sauces.\u003c\/li\u003e\n    \u003cli\u003eOptional: pinch off the stringy tails for a neater presentation.\u003c\/li\u003e\n    \u003cli\u003eCook fast over high heat; aim for 1–2 minutes or add at the end of cooking to keep the crunch.\u003c\/li\u003e\n    \u003cli\u003eFor milder taste, blanch briefly (20–30 seconds) then shock in cold water before using.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n  \u003cp style=\"margin:0;color:#334155;font-size:14px;display:flex;flex-wrap:wrap;gap:8px;\"\u003e\n    \u003ca href=\"\/products\/haday-golden-label-light-soy-sauce-1-28l\" style=\"color:var(--brand);\"\u003eLight soy sauce\u003c\/a\u003e\n    \u003cspan style=\"color:#94a3b8;\"\u003e•\u003c\/span\u003e\n    \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003eSesame oil\u003c\/a\u003e\n    \u003cspan style=\"color:#94a3b8;\"\u003e•\u003c\/span\u003e\n    \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\" style=\"color:var(--brand);\"\u003eEnoki mushrooms\u003c\/a\u003e\n    \u003cspan style=\"color:#94a3b8;\"\u003e•\u003c\/span\u003e\n    \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" style=\"color:var(--brand);\"\u003eClassic tofu (firm)\u003c\/a\u003e\n    \u003cspan style=\"color:#94a3b8;\"\u003e•\u003c\/span\u003e\n    \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\" style=\"color:var(--brand);\"\u003eRice vermicelli\u003c\/a\u003e\n    \u003cspan style=\"color:#94a3b8;\"\u003e•\u003c\/span\u003e\n    \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003eWhite rice vinegar\u003c\/a\u003e\n    \u003cspan style=\"color:#94a3b8;\"\u003e•\u003c\/span\u003e\n    \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\" style=\"color:var(--brand);\"\u003eSpring onion\u003c\/a\u003e\n  \u003c\/p\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;text-align:center;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n  \u003ca href=\"\/collections\/order-mushrooms-beans-online-next-day-delivery-in-sydney\" style=\"display:inline-block;color:var(--brand);padding:10px 14px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;\"\u003eBrowse Mushrooms \u0026amp; Beans\u003c\/a\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$4.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$7.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151495442719,"sku":"A0735745752289","price":1.79,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/09356dc1852ab9dd791f2cc663067593.jpg?v=1735370753"},{"product_id":"fresh-hydroponically-grown-shanghai-bok-choy-1-bundle","title":"Hydroponically Grown Shanghai Bok Choy - 1 Bundle","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#0f172a;line-height:1.55;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;\"\u003e\n    \u003ch1 style=\"margin:0 0 6px;font-size:26px;font-weight:800;color:#0f172a;\"\u003eHydroponically Grown Shanghai Bok Choy - 1 Bundle\u003c\/h1\u003e\n    \u003cp style=\"margin:8px 0 0;color:#475569;font-size:14px;\"\u003eCrisp green stems, tender leaves, and clean, soil-free growing — perfect for quick weeknight cooking.\u003c\/p\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eHydroponic-grown for extra cleanliness and consistent crunch.\u003c\/li\u003e\n      \u003cli\u003eSweet, mild flavor that shines in quick stir-fries, soups, and noodles.\u003c\/li\u003e\n      \u003cli\u003eCooks in minutes — stems stay juicy while leaves turn silky.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 12px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n    \u003cdiv style=\"display:grid;gap:14px;\"\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;\"\u003eGarlic–Ginger Stir‑Fry with Oyster Sauce\u003c\/div\u003e\n        \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eWok-sear stems, then leaves; splash with \u003ca style=\"color:#DB3A35;\" href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e and a spoon of water to glaze. Ready in about 2–4 minutes.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;\"\u003eClear Noodle Soup with Enoki \u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eBroth‑based\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eSimmer a light broth (try \u003ca style=\"color:#DB3A35;\" href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003eclear chicken stock\u003c\/a\u003e), add \u003ca style=\"color:#DB3A35;\" href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\"\u003erice vermicelli\u003c\/a\u003e, enoki \u003ca style=\"color:#DB3A35;\" href=\"\/products\/chois-enoki-mushrooms-300g\"\u003emushrooms\u003c\/a\u003e, then the bok choy for 1–2 minutes till vibrant.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;\"\u003eSilky Tofu Braise with Soy\u003c\/div\u003e\n        \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eGently simmer chunks of firm \u003ca style=\"color:#DB3A35;\" href=\"\/products\/fresh-ever-green-aged-tofu-approximately-900g\"\u003etofu\u003c\/a\u003e with soy, garlic, and a splash of water. Nestle in bok choy for the final 2–3 minutes.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;\"\u003eSesame‑Ginger Salad\u003c\/div\u003e\n        \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eThinly slice raw stems\/leaves; toss with \u003ca style=\"color:#DB3A35;\" href=\"\/products\/hengshun-9-degree-rice-vinegar-500ml\"\u003erice vinegar\u003c\/a\u003e, a few drops of \u003ca style=\"color:#DB3A35;\" href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003esesame oil\u003c\/a\u003e, soy, and grated ginger for a crunchy slaw.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eRinse briefly; hydroponic growing means minimal grit.\u003c\/li\u003e\n      \u003cli\u003eSplit stems from leaves so you can start stems first for extra crunch.\u003c\/li\u003e\n      \u003cli\u003eA quick blanch (20–40 seconds) sets color before stir‑frying or chilling for salads.\u003c\/li\u003e\n      \u003cli\u003eDon’t overcook — remove from heat as soon as leaves wilt and stems turn glossy.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003e\n\u003ca style=\"color:#DB3A35;\" href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003eLight soy sauce\u003c\/a\u003e or a touch of \u003ca style=\"color:#DB3A35;\" href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e\n\u003c\/li\u003e\n      \u003cli\u003eUmami boosters like \u003ca style=\"color:#DB3A35;\" href=\"\/products\/chois-shiitake-mushrooms-100g\"\u003eshiitake mushrooms\u003c\/a\u003e\n\u003c\/li\u003e\n      \u003cli\u003eProtein balance with \u003ca style=\"color:#DB3A35;\" href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eclassic tofu\u003c\/a\u003e or \u003ca style=\"color:#DB3A35;\" href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eking prawns\u003c\/a\u003e\n\u003c\/li\u003e\n      \u003cli\u003eFinishing drizzle of \u003ca style=\"color:#DB3A35;\" href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003esesame oil\u003c\/a\u003e\n\u003c\/li\u003e\n      \u003cli\u003eNoodle companions like \u003ca style=\"color:#DB3A35;\" href=\"\/products\/fresh-evergreen-yangchun-noodles-500g\"\u003eYangchun wheat noodles\u003c\/a\u003e\n\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;\"\u003e\n    \u003cdiv\u003e\n      \u003ch3 style=\"margin:0 0 6px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n      \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eExplore more fresh leafy greens for your next stir‑fry, soup, or salad.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003ca href=\"\/collections\/leafy-vegetables\" style=\"color:#DB3A35;padding:10px 14px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;font-weight:700;white-space:nowrap;\"\u003eBrowse all leafy vegetables\u003c\/a\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$4.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$7.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\n\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n\n\n","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151499342111,"sku":"9335351095476","price":1.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_f6dd913a-7613-407c-88aa-346a9c450e5c.jpg?v=1721716011"},{"product_id":"fresh-chicken-feather-greens-approximately-200g-per-bunch","title":"Chicken Feather Greens, 1 Bunch, 200g","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:6px 0 20px;color:#334155;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.6;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;margin-top:8px;\"\u003e\u003ch1 style=\"margin:0 0 6px;font-size:24px;letter-spacing:.2px;\"\u003eChicken Feather Greens, 1 Bunch, 200g\u003c\/h1\u003e\n\u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eTender, frilly baby Asian greens with crisp stems and a mild, sweet‑green flavor—perfect for speedy weeknight cooking.\u003c\/p\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n\u003cul style=\"margin:8px 0 0 18px;padding:0;\"\u003e\n\u003cli\u003eDelicate, quick‑cooking leaves and crunchy stems—ready in minutes.\u003c\/li\u003e\n\u003cli\u003eMild, versatile taste that shines in stir‑fries, soups, and simple salads.\u003c\/li\u003e\n\u003cli\u003eGreat companion to garlic, soy, sesame, mushrooms, and tofu.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n\u003cdiv style=\"display:grid;grid-template-columns:1fr;gap:14px;\"\u003e \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n\u003ch4 style=\"margin:0 0 6px;font-size:16px;\"\u003eGarlic–oyster stir‑fry\u003c\/h4\u003e\n\u003cp style=\"margin:6px 0 0;\"\u003eWok over high heat with a splash of oil, sizzle minced garlic, then add greens; toss with a spoon of oyster sauce and a dash of water. Cook 1–2 minutes until glossy and just tender. Try with \u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003ePeeled Garlic Cloves - 250g\u003c\/a\u003e, \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eHaitian Premium Oyster Sauce 700g\u003c\/a\u003e, and \u003ca href=\"\/products\/88-canola-oil-1l\"\u003e88 Canola Oil - 1L\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n\u003ch4 style=\"margin:0 0 6px;font-size:16px;\"\u003eBlanched sesame‑soy salad \u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eLow‑calorie\u003c\/span\u003e\n\u003c\/h4\u003e\n\u003cp style=\"margin:6px 0 0;\"\u003eBlanch greens 20–40 seconds, chill, then dress lightly with soy, rice vinegar, and a few drops of sesame oil. Garnish with toasted sesame. Use \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\"\u003eHengshun White Rice Vinegar 500ml\u003c\/a\u003e, \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eLee Kum Kee Pure Sesame Oil 207ml\u003c\/a\u003e, and \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003eHaitian Premium Light Soy Sauce 500ml\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n\u003ch4 style=\"margin:0 0 6px;font-size:16px;\"\u003eBrothy tofu \u0026amp; enoki soup\u003c\/h4\u003e\n\u003cp style=\"margin:6px 0 0;\"\u003eSimmer a light stock, add tofu cubes and enoki, then slip in chopped greens just before serving (they cook in 30–60 seconds). Cozy and clean. Pair with \u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\"\u003eEver Green Silken Tofu, 300g\u003c\/a\u003e, \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\"\u003eEnoki Enoki Mushrooms - 300g\u003c\/a\u003e, and \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003eBull Head Clear Chicken Broth 411ml\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n\u003ch4 style=\"margin:0 0 6px;font-size:16px;\"\u003e10‑minute noodle bowl topper\u003c\/h4\u003e\n\u003cp style=\"margin:6px 0 0;\"\u003eBoil wheat or rice noodles; in the last minute, add chopped greens. Drain and finish with light soy and a touch of chili oil. Try \u003ca href=\"\/products\/fresh-evergreen-yangchun-noodles-500g\"\u003eEvergreen Yangchun Noodles 500g\u003c\/a\u003e, \u003ca href=\"\/products\/haday-golden-label-light-soy-sauce-1-28l\"\u003eHaday Golden Label Light Soy Sauce 1.28L\u003c\/a\u003e, and \u003ca href=\"\/products\/chuan-nan-spicy-chili-oil-326g\"\u003eChuan Nan Spicy Chili Oil 326g\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/div\u003e \u003c\/div\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n\u003cul style=\"margin:8px 0 0 18px;padding:0;\"\u003e\n\u003cli\u003eRinse well and shake dry; sand hides between frilly leaves.\u003c\/li\u003e\n\u003cli\u003eTrim the root base, keep stems intact for crunch; halve thicker stems for even cooking.\u003c\/li\u003e\n\u003cli\u003eCook hot and fast—stir‑fry 1–2 minutes or blanch 20–40 seconds to keep vibrant and crisp.\u003c\/li\u003e\n\u003cli\u003eSeason at the end to avoid over‑wilting.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n\u003cul style=\"margin:8px 0 0 18px;padding:0;column-count:2;column-gap:18px;max-width:760px;\"\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-bean-sprouts-approximately-400g\"\u003eBean Sprouts 400g\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-bundle-of-chives-pack-of-2\"\u003eBunch of Coriander\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/chois-shimeji-mushrooms-150g\"\u003eChois Shimeji Mushrooms - 150g\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/ever-green-fried-tofu-puffs-200g\"\u003eEver Green Fried Tofu Puffs - 200g\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003eHaitian Premium Light Soy Sauce 500ml\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-bundle-of-chives-pack-of-2\"\u003eBundle of Chives - Pack of 2\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;display:flex;align-items:center;justify-content:space-between;\"\u003e\u003ch3 style=\"margin:0;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n\u003ca href=\"\/collections\/leafy-vegetables\" style=\"margin-left:16px;color:var(--brand);font-weight:700;\"\u003eSee all leafy vegetables →\u003c\/a\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$4.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$7.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151501013279,"sku":"9202402011400","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/0333884a2c1505fdb46d3a52eda724942yxKagXQEltoHSM2i3rmV0Z29HBQkCdP_81f5dc6f-a076-4808-b76d-12ba469ff3bc.jpg?v=1721715484"},{"product_id":"fresh-large-bok-choy-bundle","title":"Large Bok Choy Bundle","description":"\u003cp\u003eDiscover the fresh, crisp taste of our Large Bok Choy Bundle, perfect for a variety of healthy dishes.\u003cbr\u003e Each bundle includes several large stalks, rich in vitamins A, C, and K, as well as minerals like calcium and iron.\u003cbr\u003e Ideal for stir-fries, soups, and steamed dishes, this versatile vegetable adds a mild, yet sweet flavor to any meal.\u003cbr\u003e Our bok choy is organically grown, ensuring you receive the highest quality, nutrient-packed greens.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151504945439,"sku":"9202402011425","price":1.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/6b3503b49c332c66a956e5635b996747bdqBj3Vhc8ZNjE8RYqOktTYEELIGaSrc_4ad4c382-6739-43aa-ae18-91201b6c5234.jpg?v=1721715484"},{"product_id":"mccormick-five-spice-fried-chicken-mix-45g","title":"McCormick Five-Spice Fried Chicken Mix 45g","description":"McCormick Five-Spice Fried Chicken Mix 45g - A convenient and flavorful seasoning mix that combines five traditional Chinese spices for a delicious and aromatic fried chicken dish. \u003cbr\u003e Perfect for adding a unique and savory twist to your homemade fried chicken recipes.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153223954719,"sku":"6901844500074","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_2da81aa4-6c7f-4e76-b3d0-ea0a91334650.jpg?v=1712393470"},{"product_id":"mccormick-borscht-soup-25g","title":"McCormick Borscht Soup 25g","description":"McCormick Borscht Soup 25g - A convenient and flavorful soup mix that allows you to enjoy the classic taste of borscht in just minutes. Perfect for a quick and satisfying meal or snack.\u003cbr\u003eExperience the rich and tangy flavors of traditional borscht with this easy-to-prepare soup mix.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153229820191,"sku":"6901844500227","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_c24c8e9d-4c40-4197-8e32-838a67e23ade.jpg?v=1712393484"},{"product_id":"mccormick-crispy-fried-chicken-mix-45g","title":"McCormick Crispy Fried Chicken Mix 45g","description":"McCormick Crispy Fried Chicken Mix 45g - A convenient and easy-to-use mix that helps you achieve perfectly crispy and flavorful fried chicken every time. Simply coat your chicken pieces with this mix before frying for a delicious and crispy finish.\u003cbr\u003eEnjoy the authentic taste of crispy fried chicken with this McCormick mix that guarantees a crunchy and golden coating on your favorite chicken dishes.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153234571551,"sku":"6901844500463","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_b74fdb65-e8f7-4bbf-97f2-6fa7706e1180.jpg?v=1712393507"},{"product_id":"mccormick-crispy-spicy-fried-chicken-seasoning-45g","title":"McCormick Crispy Spicy Fried Chicken Seasoning 45g","description":"McCormick Crispy Spicy Fried Chicken Mix 45g - A convenient and flavorful mix that helps you achieve perfectly crispy and spicy fried chicken every time. \u003cbr\u003e Ideal for adding a delicious kick to your homemade fried chicken dishes.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153237487903,"sku":"6901844500470","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/cae38bdbf5f018064dfe59a35fe17900uYwpwLvM9awxktOmHijl1f19Fmj0W5ti.jpg?v=1712393527"},{"product_id":"mccormick-garlic-flavoured-bone-frying-mix-50g","title":"McCormick Garlic Flavoured Bone Frying Mix 50g","description":"McCormick Garlic Flavoured Bone Frying Mix 50g is a convenient and flavorful coating mix for frying meats, providing a delicious garlic taste with every bite.\u003cbr\u003ePerfect for adding a savory crunch to your favorite dishes, this mix is easy to use and enhances the overall flavor of your meals.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153249087775,"sku":"6901844500876","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/932fc749718edd09537f4ec717978486AXBYcRSYx9YNzAeM16kKVeOk44jyeNHv.jpg?v=1712393558"},{"product_id":"mccormick-garlic-flavoured-fried-chicken-mix-45g","title":"McCormick Garlic Flavoured Fried Chicken Mix 45g","description":"McCormick Garlic Flavoured Fried Chicken Mix 45g - A convenient and flavorful mix that enhances the taste of fried chicken with a delicious garlic flavor. Perfect for adding a savory twist to your favorite chicken dishes.\u003cbr\u003eCreated by McCormick, a trusted brand known for high-quality seasonings and food products.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153252397343,"sku":"6901844522113","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_bb1a0b88-9731-4145-8999-c1c950fd329e.jpg?v=1712393571"},{"product_id":"mccormick-breaded-pork-chop-mix-45g","title":"McCormick Breaded Pork Chop Mix 45g","description":"McCormick Breaded Pork Chop Mix 45g - Convenient mix for creating delicious and crispy breaded pork chops at home. Simply coat the pork chops in the mix and fry for a tasty meal.\u003cbr\u003ePerfect for quick and easy meal preparation, this mix adds a flavorful and crunchy coating to your pork chops.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153253642527,"sku":"6901844524117","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_61a5acae-de27-4b65-8230-6f4726f12a3c.jpg?v=1712393578"},{"product_id":"wang-shouyi-thirteen-spices-seasoning-45g","title":"Wang Shouyi Thirteen Spices Seasoning 45g","description":"A 45g pack of Wang Shouyi Thirteen Spices Seasoning, perfect for adding a flavorful kick to your dishes. This seasoning blend includes a unique combination of thirteen spices for a delicious and aromatic taste.\u003cbr\u003eEnhance the flavor of your favorite recipes with this convenient and versatile seasoning mix.","brand":"Wang Shouyi","offers":[{"title":"Default Title","offer_id":48153336021279,"sku":"6906303888885","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_494b1125-7ecf-4400-b3af-b5b0accecce3.jpg?v=1712393780"},{"product_id":"mccormick-five-spice-powder-10g","title":"McCormick Five Spice Powder 10g","description":"McCormick Five Spice Powder 10g is a versatile blend of five essential spices, perfect for adding depth and flavor to a variety of dishes. This convenient 10g size allows for easy portioning and storage.\u003cbr\u003eEnhance your culinary creations with the unique and aromatic blend of McCormick Five Spice Powder.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153457852703,"sku":"A6901844704113","price":1.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_f691f843-4e9f-4e7e-aedf-6ad15c21a6cf.jpg?v=1712394535"},{"product_id":"mccormick-white-pepper-powder-10g","title":"McCormick White Pepper Powder 10g","description":"McCormick White Pepper Powder 10g - A convenient and versatile spice that adds a mild heat and subtle flavor to a variety of dishes. Perfect for seasoning meats, soups, and stir-fries.\u003cbr\u003eCompact size makes it easy to store and use in small quantities for fresh and flavorful cooking.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153458049311,"sku":"A6901844706117","price":1.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_e212fc95-227c-49ce-9b3b-b68466352f3b.jpg?v=1712394542"},{"product_id":"mccormick-black-pepper-powder-10g","title":"McCormick Ground Black Pepper - 10g","description":"McCormick Black Pepper Powder 10g - High-quality black pepper powder with a bold flavor and aroma, perfect for seasoning a variety of dishes.\u003cbr\u003eConvenient 10g size for easy storage and use in cooking.","brand":"McCormick","offers":[{"title":"Default Title","offer_id":48153459425567,"sku":"A6901844707114","price":1.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_0edc433f-af21-42cc-9859-a3340a5d7662.jpg?v=1712394560"},{"product_id":"mccormick-ginger-powder-10g","title":"McCormick Ginger Powder 10g","description":"McCormick Ginger Powder 10g is a convenient and versatile spice that adds a warm and spicy flavor to a variety of dishes. Made from high-quality ginger, this powder is perfect for seasoning meats, stir-fries, soups, and marinades.\u003cbr\u003eEnhance the taste of your favorite recipes with the bold and aromatic flavor of McCormick Ginger Powder 10g.","brand":"Mccormick","offers":[{"title":"Default Title","offer_id":48153459654943,"sku":"A6901844709118","price":1.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_2f052a29-38de-4349-aab0-9e2551a5b25e.jpg?v=1712394567"},{"product_id":"canton-salt-iodised-low-sodium-salt-250g","title":"Yueyan Iodized Low Sodium Salt - 250g","description":"Canton Salt Iodised Low Sodium Salt 250g - A low sodium salt option that is iodised for added health benefits, perfect for those looking to reduce their sodium intake without compromising on taste.\u003cbr\u003e","brand":"Guangdong Salt","offers":[{"title":"Default Title","offer_id":48153508774175,"sku":"A6926656823319","price":1.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_e0314dd5-a5ed-4819-955a-4fc165f26b4f.jpg?v=1712395149"},{"product_id":"wujiang-whole-pickled-mustard-greens-300g","title":"Wujiang Whole Pickled Mustard Greens 300g","description":"Tangy and crunchy whole pickled mustard greens from Wujiang, perfect for adding a flavorful kick to your dishes. \u003cbr\u003e Comes in a convenient 300g package for easy storage and use.","brand":"Wujiang","offers":[{"title":"Default Title","offer_id":48153591513375,"sku":"6901754000886","price":1.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_4e753686-9660-42da-85ba-b337788da096.jpg?v=1712396227"},{"product_id":"wujiang-crispy-pickled-mustard-150g","title":"Wujiang Crispy Pickled Mustard 150g","description":"Wujiang Crispy Pickled Mustard is a 150g jar of tangy and crunchy pickled mustard greens, perfect for adding a flavorful kick to your dishes. Made with high-quality ingredients, this pickled mustard is a versatile condiment that can enhance the taste of various recipes.\u003cbr\u003e","brand":"Wujiang","offers":[{"title":"Default Title","offer_id":48153591644447,"sku":"6901754040936","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/35ea22869d3d043b271c9c6a2ce27673OzI8kUsXiIjom9eD7KWCTNhLhnP4ZLxs.jpg?v=1735370687"},{"product_id":"chuan-nan-original-flavour-crispy-pickled-vegetables-80g","title":"Chuan Nan Original Flavour Crispy Pickled Vegetables 80g","description":"Chuan Nan Original Flavour Crispy Pickled Vegetables 80g - Enjoy the tangy and crunchy taste of pickled vegetables with this original flavor variety. Perfect as a snack or as a side dish to complement your meals.\u003cbr\u003eExperience the authentic Chuan Nan taste in every bite, made with high-quality ingredients and a traditional recipe for a satisfying and flavorful snack.","brand":"Chuannan","offers":[{"title":"Default Title","offer_id":48153628606751,"sku":"A6915993300508","price":1.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_ed4b17d7-5234-4c13-af08-24f260eb2d45.jpg?v=1712396745"},{"product_id":"chuan-nan-delicious-crispy-pickled-vegetables-perfect-with-rice-80g","title":"Chuan Nan Delicious Crispy Pickled Vegetables, Perfect with Rice, 80g","description":"\u003cp\u003eChuan Nan Delicious Crispy Pickled Vegetables are a flavorful and crunchy addition to any meal, especially when paired with rice. Each 80g pack is packed with tangy and savory flavors that will enhance your dining experience.\u003c\/p\u003e","brand":"Chuannan","offers":[{"title":"Default Title","offer_id":48153629163807,"sku":"A6915993300515","price":1.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_20a1067c-0584-4e45-9a7c-f3ed0352896f.jpg?v=1712396755"},{"product_id":"chuan-nan-refreshing-vegetable-hearts-80g","title":"Chuannan Pickled Mustard Stems - 80g","description":"Chuan Nan Refreshing Vegetable Hearts 80g - A pack of 80g of refreshing vegetable hearts, perfect for adding a burst of flavor to your dishes. \u003cbr\u003e Made with high-quality ingredients, these vegetable hearts are a convenient and tasty addition to any meal.","brand":"Chuannan","offers":[{"title":"Default Title","offer_id":48153630802207,"sku":"A6915993300539","price":1.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_4ec3aebd-74e1-43cd-9520-cc847f6817cd.jpg?v=1712396774"},{"product_id":"chuan-nan-crispy-pickled-vegetables-side-dish-80g","title":"Chuan Nan Crispy Pickled Vegetables Side Dish, 80g","description":"Chuan Nan Crispy Pickled Vegetables Side Dish is a flavorful and crunchy snack made with a mix of pickled vegetables, perfect for adding a zesty kick to your meals. Enjoy the convenience of a ready-to-eat side dish that is packed with tangy and savory flavors.\u003cbr\u003e","brand":"Chuannan","offers":[{"title":"Default Title","offer_id":48153632112927,"sku":"A6915993300553","price":1.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_b76e53fc-d1df-4fe0-8c07-d91e5038b04a.jpg?v=1712396787"},{"product_id":"hua-hai-shun-da-hot-pot-sichuan-noodles-240g","title":"Huaseed Hot Pot Sichuan Vermicelli - 240g","description":"Authentic Sichuan noodles from Hua Hai Shun Da, perfect for hot pot dishes. 240g pack for convenient preparation.\u003cbr\u003eTraditional flavors and easy to cook, ideal for a spicy and flavorful meal.","brand":"Hua Hai Shun Da","offers":[{"title":"Default Title","offer_id":48153794773279,"sku":"A6942333704450","price":1.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_c08c392e-c996-4563-a14f-394cd99bf6ae.jpg?v=1736929119"},{"product_id":"tuxiaoyang-plain-noodles-300g","title":"Toyoung Somen Noodles - 300g","description":"TuXiaoYang Plain Noodles 300g - Authentic Chinese noodles made with high-quality ingredients, perfect for creating delicious and satisfying meals at home.\u003cbr\u003eEnjoy the versatility of these plain noodles in soups, stir-fries, or cold noodle salads for a tasty and convenient meal option.","brand":"Tuxiaoyang","offers":[{"title":"Default Title","offer_id":48153813909791,"sku":"A6974215770116","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_118fdcb3-4d5f-4bf9-98e3-d288b8422fe3.jpg?v=1712398882"},{"product_id":"tuxiaoyang-udon-noodles-300g-frozen","title":"Toyoung Udon Noodles - 300g","description":"Tuxiaoyang Udon Noodles are a convenient and delicious frozen option for a quick and satisfying meal. Made with high-quality ingredients, these noodles are perfect for stir-fries, soups, and other Asian-inspired dishes.\u003cbr\u003eEnjoy the authentic taste and chewy texture of these Udon noodles in just minutes.","brand":"Tuxiaoyang","offers":[{"title":"Default Title","offer_id":48153814008095,"sku":"A6974215770123","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_59117298-3da2-4c9c-aefe-b3d84b051f34.jpg?v=1712398889"},{"product_id":"haidilao-hot-pot-dipping-sauce-garlic-flavor-90g","title":"Haidilao Hot Pot Dipping Sauce - Garlic, 90g","description":"A 90g bottle of Haidilao Hot Pot Dipping Sauce in Garlic Flavor, perfect for adding a savory and aromatic kick to your hot pot experience.\u003cbr\u003e Made with high-quality ingredients, this dipping sauce enhances the taste of your favorite meats and vegetables.","brand":"Haidilao","offers":[{"title":"Default Title","offer_id":48154083557663,"sku":"A6975742473587","price":1.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_8e56efac-5de9-469c-8d11-18d6be14d518.jpg?v=1712402657"},{"product_id":"wu-la-ma-vegetarian-lamb-skewers-90g","title":"Wu La Ma Vegetarian Lamb Skewers 90g","description":"Wu La Ma Vegetarian Lamb Skewers are a delicious, plant-based alternative to traditional lamb skewers. \u003cbr\u003e Each 90g pack is packed with flavor and protein, perfect for a quick snack or addition to your favorite dishes.","brand":"Wu La Ma","offers":[{"title":"Default Title","offer_id":48154101678367,"sku":"A6936158285065","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_a8e4fc79-91d5-4454-a459-1df6afd87109.jpg?v=1712403038"},{"product_id":"wei-long-spicy-mala-flavor-konjac-snack-50g","title":"Wei Long Spicy Mala Flavor Konjac Snack 50g","description":"Wei Long Spicy Mala Flavor Konjac Snack is a 50g pack of deliciously spicy and flavorful konjac-based snack. \u003cbr\u003e It offers a unique mala flavor that's perfect for those who love a fiery kick in their snacks.","brand":"Weilong","offers":[{"title":"Default Title","offer_id":48154126516511,"sku":"A6971258740120","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_f940fc51-520f-4a21-84b2-52ba7fa2f08f.jpg?v=1712403510"},{"product_id":"wei-long-spicy-and-sour-konjac-snack-50g","title":"Wei Long Spicy and Sour Konjac Snack 50g","description":"Wei Long Spicy and Sour Konjac Snack is a 50g pack of flavorful, low-calorie snack made from konjac root. \u003cbr\u003e It offers a unique combination of spicy and sour taste, perfect for those who enjoy bold flavors.","brand":"Weilong","offers":[{"title":"Default Title","offer_id":48154137755935,"sku":"A6971258744425","price":1.79,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/6a1a688ce4315705e2a742b0081896e0rVA15CjojLYX7C9zAzKGltqBLkqaco5g.jpg?v=1712403635"},{"product_id":"xzl-fresh-grape-fruit-bites-258ml","title":"Strong Food Fresh Grape Fruit Bites 258ml","description":"\u003cp\u003eStrong Food Fresh Grape Fruit Bites 258ml is a refreshing beverage packed with the natural sweetness of grape fruit bites. It's a delicious and healthy drink option, perfect for quenching your thirst.\u003c\/p\u003e","brand":"Strong Food","offers":[{"title":"Default Title","offer_id":48154663190815,"sku":"6926475204481","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/3_c44fd84c-34f6-4d32-80fe-279bc532ca33.jpg?v=1712405289"},{"product_id":"xzl-fruit-burst-snow-pear-and-loquat-drink-258ml","title":"Strong Food Fruit Burst Snow Pear and Loquat Drink 258ml","description":"\u003cp\u003eStrong Food Fruit Burst Snow Pear and Loquat Drink is a refreshing beverage packed with the natural sweetness of snow pear and loquat. This 258ml drink is perfect for quenching your thirst and providing a burst of fruity flavor.\u003c\/p\u003e","brand":"Strong Food","offers":[{"title":"Default Title","offer_id":48154663256351,"sku":"6926475206324","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_19cf6bbf-075f-446f-b9dd-2aa69d0fcaa1.jpg?v=1712405293"},{"product_id":"chacha-crispy-onion-flavoured-potato-chips-51g","title":"ChaCha Kazhichui Scallion Flavor Potato Crackers - 51g","description":"\u003cp\u003eChaCha Crispy Onion Flavoured Potato Chips are a delicious snack with a unique onion twist. These 51g packs are perfect for on-the-go snacking or sharing with friends.\u003c\/p\u003e","brand":"ChaCha","offers":[{"title":"Default Title","offer_id":48155999502623,"sku":"A6924187830714","price":1.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_07fb1730-e892-4a04-8c26-c5d0a41560f6.jpg?v=1712409917"},{"product_id":"chacha-crispy-potato-chips-tomato-flavour-51g","title":"ChaCha KazhiCui Potato Crackers - Tomato Flavor, 51g","description":"\u003cp\u003eChaCha Crispy Potato Chips are a delicious snack with a rich tomato flavour. This 51g pack is perfect for on-the-go snacking.\u003c\/p\u003e","brand":"ChaCha","offers":[{"title":"Default Title","offer_id":48156006482207,"sku":"A6924187830943","price":1.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_ed266632-c9f3-4e83-92f1-7c7d723a5ad9.jpg?v=1712409931"},{"product_id":"want-want-qq-pineapple-flavoured-candy-70g","title":"Want Want QQ Pineapple Flavoured Candy 70g","description":"A 70g pack of Want Want QQ Pineapple Flavoured Candy, offering a sweet and tangy pineapple taste. \u003cbr\u003e These candies are individually wrapped, making them perfect for on-the-go snacking or sharing.","brand":"Want Want","offers":[{"title":"Default Title","offer_id":48156264661279,"sku":"A6920548862080","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/bae0a422ecfde637eafb5bb35d5b4e9ewXSGdS9xkAL0kG2qpIi71yZ8XZEGBTza.jpg?v=1712410698"},{"product_id":"want-want-qq-orange-flavoured-candy-70g","title":"Want Want QQ Orange Flavoured Candy 70g","description":"\u003cp\u003eWant Want QQ Orange Flavoured Candy is a 70g pack of delicious, tangy orange candies. They offer a refreshing citrus taste and a satisfying chewy texture.\u003c\/p\u003e","brand":"Want Want","offers":[{"title":"Default Title","offer_id":48156415525151,"sku":"A6920548862066","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/dc2befbce35505357905fb9a46262a0aZrevFfuN3dNiIZukUg3cPD98UtSZyTs6.jpg?v=1712411206"},{"product_id":"want-want-qq-grape-flavoured-candy-70g","title":"Want-Want QQ Grape Flavoured Candy 70g","description":"\u003cp\u003eWant-Want QQ Grape Flavoured Candy is a 70g pack of delicious, grape-flavored sweets. These candies offer a juicy and refreshing taste, perfect for satisfying your sweet tooth.\u003c\/p\u003e","brand":"Want Want","offers":[{"title":"Default Title","offer_id":48156418933023,"sku":"A6920548862073","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/57553d8a24fb3d7a186fb541c1519b0bQGS4gDNdjayj5POojZUAWJHDDA7fN2X9.jpg?v=1712411213"},{"product_id":"want-want-qq-lychee-flavoured-candy-70g","title":"Want Want QQ Lychee Flavoured Candy 70g","description":"Want Want QQ Lychee Flavoured Candy is a 70g pack of sweet, fruity candies with a distinct lychee flavor.\u003cbr\u003eThese candies offer a unique taste experience, perfect for those who enjoy trying new and exotic flavors.","brand":"Want Want","offers":[{"title":"Default Title","offer_id":48156428304671,"sku":"A6920548862998","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_3ce48098-840b-4d74-845a-0a110e90e995.jpg?v=1745982897"},{"product_id":"want-want-qq-strawberry-flavoured-candy-70g","title":"Want Want QQ Strawberry Flavoured Candy 70g","description":"Want-Want QQ Strawberry Flavoured Candy is a 70g pack of delicious, fruity sweets with a rich strawberry taste. \u003cbr\u003e These candies offer a long-lasting flavor and a satisfying chewy texture, perfect for a sweet treat anytime.","brand":"Want Want","offers":[{"title":"Default Title","offer_id":48156428861727,"sku":"A6920548867139","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/293cf7b76bf769d1b82eeff94c49e9aaXHkXqZyLZDrvUEP5fISmawk1UPNw5lWP.jpg?v=1712411241"},{"product_id":"want-want-qq-candy-green-apple-flavor-70g","title":"Want Want QQ Candy, Green Apple Flavor, 70g","description":"\u003cp\u003eWant Want QQ Candy is a delicious green apple flavored candy, packed in a 70g bag. It offers a sweet and tangy taste that's perfect for satisfying your sweet tooth.\u003c\/p\u003e","brand":"Want Want","offers":[{"title":"Default Title","offer_id":48156429680927,"sku":"A6920548867320","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/b8ee272aaedee53e288da64919205574bit1Gf89sLm2SeDA2iLlzBT4wHHAxCl2.jpg?v=1712411249"},{"product_id":"ganten-mineral-water-570ml","title":"Ganten Mineral Water 570ml","description":"\u003cp\u003eA 570ml bottle of Ganten Mineral Water, sourced from natural springs and packed with essential minerals for hydration and health.\u003c\/p\u003e","brand":"Ganten","offers":[{"title":"Default Title","offer_id":48157625418015,"sku":"6922255451427","price":1.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_d24eef17-ee36-47b7-ac9e-e7924d8f2bc6.jpg?v=1736929056"},{"product_id":"shenhui-refreshing-herbal-tea-250ml","title":"Shenhui Refreshing Herbal Tea 250ml","description":"\u003cp\u003eA 250ml herbal tea from Shenhui, designed to refresh and rejuvenate with its blend of natural herbs.\u003c\/p\u003e","brand":"Shenhui","offers":[{"title":"Default Title","offer_id":48157665886495,"sku":"A6909548048885","price":0.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_b37b59ea-6bbd-4c3f-b173-e78c703916a5.jpg?v=1712416640"},{"product_id":"wang-lao-ji-herbal-tea-310ml","title":"Wanglaoji Herbal Tea - 310ml","description":"\u003cp\u003eA refreshing 310ml herbal tea from Wang Lao Ji, known for its cooling properties and health benefits.\u003c\/p\u003e","brand":"Wanglaoji","offers":[{"title":"Default Title","offer_id":48157680664863,"sku":"A6956367338680","price":1.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_5c3ee7cc-1330-43e0-8de4-d6746a4c6ddf.jpg?v=1712416837"},{"product_id":"jianlibao-classic-retro-can-orange-honey-flavour-sports-drink-330ml","title":"Jianlibao Classic Orange \u0026 Honey Sports Drink - 330ml","description":"\u003cp\u003eA 330ml sports drink with a classic retro can design, featuring a refreshing orange honey flavor from Jianlibao.\u003c\/p\u003e","brand":"Jianlibao","offers":[{"title":"Default Title","offer_id":48157743808799,"sku":"A6935947800496","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_b0dcf4bc-951e-4c56-a4a4-d616a802e68e.jpg?v=1712417729"},{"product_id":"master-kang-fresh-shrimp-and-fish-noodle-soup-101g-tub-main-barcode","title":"Master Kong Fresh Shrimp and Fish Noodle Soup, 101g","description":"\u003cp\u003eA convenient and delicious instant noodle soup made with fresh shrimp and fish, perfect for a quick and satisfying meal.\u003c\/p\u003e","brand":"Master Kong","offers":[{"title":"Default Title","offer_id":48158038032671,"sku":"A6920152414040","price":1.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/f3d347ce0f54629e56684278e782e7f35RBMrRDLW75e1sKdhw97p1PuGjExJuOl.jpg?v=1712421831"},{"product_id":"master-kang-mushroom-chicken-noodle-soup-instant-noodles-in-a-tub-105g","title":"Master Kong Mushroom Chicken Noodle Soup - 105g","description":"\u003cp\u003eConvenient and flavorful instant noodle soup with mushroom and chicken flavors, ready to eat in minutes.\u003c\/p\u003e","brand":"Master Kong","offers":[{"title":"Default Title","offer_id":48158039965983,"sku":"A6920208942718","price":1.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_63e99311-f95e-4af9-b1df-86a40cbc9bd2.jpg?v=1712421865"},{"product_id":"meiji-xinxin-vanilla-flavoured-finger-cup-snacks-50g","title":"Meiji XinXin Vanilla Flavoured Finger Cup Snacks 50g","description":"\u003cp\u003eMeiji XinXin Vanilla Flavoured Finger Cup Snacks are a delicious and convenient snack option, packed with a rich vanilla flavor. Weighing 50g, these finger cup snacks are perfect for on-the-go munching.\u003c\/p\u003e","brand":"Meiji","offers":[{"title":"Default Title","offer_id":48160957038879,"sku":"8888077102252","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_70b283c5-c38e-44ef-a200-4f8fb0812c28.jpg?v=1712460195"}],"url":"https:\/\/www.umall.com.au\/collections\/sale\/savoury-fish-biscuits.oembed","provider":"Umall - Australia's Largest Online Asian Supermarket","version":"1.0","type":"link"}