{"title":"Best","description":"","products":[{"product_id":"fresh-white-heart-dragon-fruit-1-piece","title":"White Heart Dragon Fruit - 1 Piece","description":"\u003cp\u003eA succulent, fresh White Heart Dragon Fruit, known for its sweet, delicate taste and rich antioxidants, perfect for a healthy snack or exotic addition to salads and smoothies.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151446913311,"sku":"9202402231779","price":6.29,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_abec4680-ef2f-4eca-8c20-685798ab7e44.jpg?v=1745982973"},{"product_id":"fresh-rockmelon-multiple-sizes-available","title":"Rockmelon 1 Piece","description":"\u003cp\u003eJuicy and sweet, this fresh rockmelon comes in multiple sizes to suit any preference or recipe need.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151455334687,"sku":"A0735745752968","price":4.79,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/dce7394083e48b20857121419e1029d8EuyZbvyfQ34xpbSmO6axt1mQeFsDZdQ3.jpg?v=1745982972"},{"product_id":"fresh-lemons-approximately-500g","title":"Lemons - 3 pieces","description":"\u003cp\u003eBright and zesty, these fresh lemons are perfect for adding a tangy twist to beverages, dishes, and desserts, 3 pieces.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151463493919,"sku":"A0735745752838","price":2.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/3_85fcbf6e-ffbd-4ff8-836d-c69ece56dab2.jpg?v=1745982971"},{"product_id":"fresh-bananas-approximately-1kg","title":"Bananas 1kg","description":"\u003cp\u003eA bundle of fresh, ripe bananas weighing approximately 1kg, perfect for a natural, energy-boosting snack.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151467852063,"sku":"A0735745752975","price":4.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/9_972133a9-6e2b-4dd4-9001-4dfadb34fa8c.webp?v=1745982969"},{"product_id":"fresh-asian-pears-approximately-1-1-2kg","title":"Asian Pears 1kg","description":"\u003cp\u003eJuicy and crisp Asian pears, weighing approximately 1-1.2kg, known for their round shape and sweet, refreshing taste.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151479222559,"sku":"A9202403221801","price":6.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/11_4b96d28d-0994-463d-898f-33d022501ae9.jpg?v=1745982968"},{"product_id":"fresh-ever-green-smooth-tofu-approximately-300g","title":"Ever Green Silken Tofu, 300g","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\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;\"\u003e\n  \u003ch1 style=\"margin:0;font-size:26px;font-weight:800;\"\u003eEver Green Silken Tofu, 300g\u003c\/h1\u003e\n  \u003cp style=\"margin:8px 0 0;color:#334155;\"\u003eUltra-smooth, custard-soft tofu that slips into cold dishes, soups, and delicate steam-custards. Neutral, clean soy flavour; effortlessly versatile.\u003c\/p\u003e\n  \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_88ccd9e0-4500-40e8-a68b-648493d9b7b1.jpg?v=1745982966\" alt=\"Ever Green Silken Tofu 300g\" style=\"width:100%;max-height:360px;object-fit:cover;border-radius:12px;margin-top:12px;\"\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\u003eFeathery, spoon-tender texture that’s perfect for chilled plates and light broths.\u003c\/li\u003e\n    \u003cli\u003ePlant-powered protein with a clean, refreshing taste.\u003c\/li\u003e\n    \u003cli\u003eReady in minutes — no pressing needed; minimal prep, maximum silk.\u003c\/li\u003e\n    \u003cli\u003ePlays well with soy, sesame, ginger, vinegar, and gentle heat.\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:repeat(auto-fit,minmax(240px,1fr));gap:12px;\"\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;\"\u003eChilled soy–sesame tofu with spring onion \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\"\u003eLight \u0026amp; fresh\u003c\/span\u003e\n\u003c\/h4\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eSpoon over a block, drizzle with \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003elight soy\u003c\/a\u003e and a few drops of \u003ca href=\"\/products\/chuan-lao-hui-pure-sesame-oil-320ml\"\u003esesame oil\u003c\/a\u003e, then top with finely sliced \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\"\u003espring onion\u003c\/a\u003e and grated ginger. Ready in 1–2 minutes.\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;\"\u003eSilken tofu + enoki in a light broth\u003c\/h4\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eSimmer tofu cubes and \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\"\u003eenoki\u003c\/a\u003e in a gentle stock made with \u003ca href=\"\/products\/cygnet-clear-soup-hot-pot-base-200g-mild-chinese-shabu-shabu-broth-seasoning\"\u003eclear soup base\u003c\/a\u003e for 2–4 minutes. Finish with a pinch of white pepper and a few drops of sesame oil.\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;\"\u003eSteamed egg \u0026amp; tofu custard with prawns\u003c\/h4\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eBlend silken tofu with beaten \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\"\u003eeggs\u003c\/a\u003e, season lightly, pour into a shallow dish, and top with chopped \u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eking prawns\u003c\/a\u003e. Steam gently 10–12 minutes until just set; splash with soy and sesame oil.\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;\"\u003eSpicy soy–vinegar tofu bowl\u003c\/h4\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eWhisk \u003ca href=\"\/products\/dl-black-soybean-brewed-light-soy-sauce-480ml-limited-import\"\u003elight soy\u003c\/a\u003e with a splash of \u003ca href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\"\u003eZhenjiang vinegar\u003c\/a\u003e and a spoon of \u003ca href=\"\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\"\u003echili crisp\u003c\/a\u003e. Spoon over tofu; add spring onion and toasted sesame seeds.\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\u003eOpen and drain gently; for neat cubes, slice in the pack then slide out.\u003c\/li\u003e\n    \u003cli\u003eAvoid vigorous stirring — use a spoon to lift and nudge; add sauces at the end.\u003c\/li\u003e\n    \u003cli\u003eFor warm dishes, slip tofu into barely simmering broth for 2–4 minutes to heat through without breaking.\u003c\/li\u003e\n    \u003cli\u003eThicken sauces separately (cornstarch slurry) before pouring over the tofu to keep textures 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 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-light-soy-sauce-500ml\"\u003eHaitian Premium Light Soy Sauce 500ml\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\"\u003eHengshun Zhenjiang Aromatic Vinegar 550ml\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eLee Kum Kee Pure Sesame Oil 207ml\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/fresh-bundle-of-spring-onions\"\u003eShallot Bunch (spring onion)\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/chois-enoki-mushrooms-300g\"\u003eEnoki Mushrooms\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/fresh-evergreen-yangchun-noodles-500g\"\u003eEvergreen Yangchun Noodles 500g\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;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n  \u003cdiv style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;\"\u003e\n    \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:12px;color:inherit;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;\"\u003eEver Green Classic Tofu, 500g\u003c\/div\u003e\n      \u003cdiv style=\"color:#64748b;font-size:13px;\"\u003eEveryday block tofu for stir-fries\u003c\/div\u003e\n    \u003c\/a\u003e\n    \u003ca href=\"\/products\/fresh-ever-green-aged-tofu-approximately-900g\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:12px;color:inherit;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;\"\u003eEver Green Traditional Firm Tofu, 900g\u003c\/div\u003e\n      \u003cdiv style=\"color:#64748b;font-size:13px;\"\u003eHearty, braise-friendly texture\u003c\/div\u003e\n    \u003c\/a\u003e\n    \u003ca href=\"\/products\/fresh-ever-green-tofu-puffs-approximately-150g\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:12px;color:inherit;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;\"\u003eEver Green Fried Tofu Puffs 150g\u003c\/div\u003e\n      \u003cdiv style=\"color:#64748b;font-size:13px;\"\u003eGreat for hotpot and curry\u003c\/div\u003e\n    \u003c\/a\u003e\n  \u003c\/div\u003e\n  \u003cdiv style=\"margin-top:12px;\"\u003e\n    \u003ca href=\"\/collections\/tofu-soy-products\" style=\"color:#DB3A35;\"\u003eExplore all tofu \u0026amp; soy products →\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":"Ever Green","offers":[{"title":"Default Title","offer_id":48151479386399,"sku":"A9323536580015","price":2.29,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_88ccd9e0-4500-40e8-a68b-648493d9b7b1.jpg?v=1745982966"},{"product_id":"fresh-ever-green-tofu-approximately-900g","title":"Ever Green Original Tofu - Regular Firm 900g - Limited 1 PP","description":"\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\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\u003cdiv id=\"umall-desc\" style=\"--brand: #DB3A35; max-width: 860px; margin: 0 auto; padding: 16px;\"\u003e\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;\"\u003eEver Green Tofu 900g\u003c\/h2\u003e\n\u003cdiv style=\"color: #64748b; font-size: 14px;\"\u003eAlso known as bean curd\u003c\/div\u003e\n\u003cdiv style=\"color: #64748b; font-size: 14px;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"color: #64748b; font-size: 14px;\"\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003cspan\u003eLimit 1 per customer. Not valid with multi-buy discounts.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\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: bold;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n\u003cul style=\"margin: 8px 0 0 18px; color: #334155; font-size: 14px; line-height: 1.6;\"\u003e\n\u003cli\u003eMild, clean flavor that soaks up sauces and aromatics beautifully.\u003c\/li\u003e\n\u003cli\u003eGenerous 900g block—perfect for family meals, meal prep, or hot pot.\u003c\/li\u003e\n\u003cli\u003eVersatile texture for steaming, pan-searing, stir-frying, braising, or soup.\u003c\/li\u003e\n\u003cli\u003ePlant-based protein that works in both classic Asian dishes and modern bowls.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/section\u003e\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: bold;\"\u003eHow to enjoy\u003c\/h3\u003e\n\u003cdiv style=\"display: grid; gap: 14px;\"\u003e\n\u003cdiv\u003e\n\u003ch4 style=\"margin: 0 0 4px; font-size: 16px; font-weight: bold; color: #111827;\"\u003eSteamed tofu with soy-scallion dressing \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: 0; color: #334155; font-size: 14px;\"\u003eSteam thick slices, then spoon over a light mix of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003elight soy sauce\u003c\/a\u003e and finely sliced \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\"\u003espring onions\u003c\/a\u003e. Finish with a few drops of sesame oil (optional).\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch4 style=\"margin: 0 0 4px; font-size: 16px; font-weight: bold; color: #111827;\"\u003eWeeknight tofu and broccoli stir-fry\u003c\/h4\u003e\n\u003cp style=\"margin: 0; color: #334155; font-size: 14px;\"\u003ePan-sear tofu cubes until golden, toss with \u003ca href=\"\/products\/fresh-broccoli-approximately-900g-1000g\"\u003ebroccoli\u003c\/a\u003e, garlic, and a splash of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e. Stir-fry on high for 3–5 minutes.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch4 style=\"margin: 0 0 4px; font-size: 16px; font-weight: bold; color: #111827;\"\u003eQuick mapo tofu (home‑style)\u003c\/h4\u003e\n\u003cp style=\"margin: 0; color: #334155; font-size: 14px;\"\u003eSimmer tofu in a fragrant sauce of \u003ca href=\"\/products\/congbanlv-doubanjiang-broad-bean-chilli-paste-450g-sichuan-fermented-soybean-sauce\"\u003edoubanjiang\u003c\/a\u003e, garlic, and a little \u003ca href=\"\/products\/borrowdale-free-range-pork-mince-500g-frozen\"\u003epork mince\u003c\/a\u003e. Finish with a drizzle of \u003ca href=\"\/products\/chuan-lao-hui-sichuan-pepper-oil-210ml\"\u003eSichuan pepper oil\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch4 style=\"margin: 0 0 4px; font-size: 16px; font-weight: bold; color: #111827;\"\u003eTomato hot pot with tofu and mushrooms\u003c\/h4\u003e\n\u003cp style=\"margin: 0; color: #334155; font-size: 14px;\"\u003eDrop chunky tofu into a bubbling \u003ca href=\"\/products\/haidilao-tomato-hot-pot-base-200g\"\u003etomato hot pot base\u003c\/a\u003e with \u003ca href=\"\/products\/chois-shimeji-mushrooms-150g\"\u003eshimeji\u003c\/a\u003e and \u003ca href=\"\/products\/fresh-baby-bok-choy-pack-of-2\"\u003ebaby bok choy\u003c\/a\u003e for a cozy, crowd-pleasing meal.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\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: bold;\"\u003ePrep Tips\u003c\/h3\u003e\n\u003cul style=\"margin: 8px 0 0 18px; color: #334155; font-size: 14px; line-height: 1.6;\"\u003e\n\u003cli\u003eFor extra-crispy edges in stir-fries, pat dry and dust lightly with cornstarch before pan-searing.\u003c\/li\u003e\n\u003cli\u003eCut to match the method: large slabs for steaming, 2–3 cm cubes for stir-fries and braises.\u003c\/li\u003e\n\u003cli\u003ePre-sear tofu in a hot pan 2–4 minutes per side to lock in texture, then add sauces.\u003c\/li\u003e\n\u003cli\u003eAdd tofu towards the end of soup\/hot pot and simmer gently to avoid breaking.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/section\u003e\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: bold;\"\u003ePairs well\u003c\/h3\u003e\n\u003cul style=\"margin: 8px 0 0 18px; color: #334155; font-size: 14px; line-height: 1.8;\"\u003e\n\u003cli\u003e\u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\"\u003eKikkoman All‑Purpose Soy Sauce\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eLee Kum Kee Pure Sesame Oil\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\"\u003eCrispy Chili Oil with Peanuts\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-1000g\"\u003eJiangxi Rice Noodles (1kg)\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\"\u003eShiitake Mushrooms\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-snow-pea-sprouts-160g\"\u003eSnow Pea Sprouts\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/section\u003e\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: bold;\"\u003eMore in this category\u003c\/h3\u003e\n\u003cul style=\"margin: 8px 0 10px 18px; color: #334155; font-size: 14px; line-height: 1.8;\"\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\"\u003eEver Green Silken Tofu, 300g\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-ever-green-brick-dried-tofu-approximately-650g\"\u003eEver Green Hard Tofu, 650g\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-ever-green-tofu-puffs-approximately-150g\"\u003eEver Green Fried Tofu Puffs 150g\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-ever-green-dried-tofu-4-pieces-approximately-400g\"\u003eEver Green Dried Tofu – 4 Pieces, 400g\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/ever-green-fresh-regular-tofu-900g\"\u003eEver Green Fresh Regular Tofu – 900g\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp style=\"margin: 0; color: #334155; font-size: 14px;\"\u003e\u003ca href=\"\/collections\/tofu-soy-products\"\u003eBrowse all Tofu \u0026amp; Soy Products →\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/section\u003e\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: bold;\"\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\n\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\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\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\n\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\n\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\n\u003c\/section\u003e\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: bold;\"\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\n\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\n\u003c\/table\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"Ever Green","offers":[{"title":"Default Title","offer_id":48151479681311,"sku":"A9323536008885","price":4.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_c72ed85b-6aaf-444a-a39b-19dd6444dc48.jpg?v=1745982964"},{"product_id":"fresh-tomatoes-approximately-1kg","title":"Tomatoes 0.9kg [Limit 1 PP]","description":"\u003cdiv id=\"umall-desc\" style=\"max-width:860px;margin:0 auto;padding:8px;--brand:#DB3A35;font-family:Inter,system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#1f2937;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\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;\"\u003e\n  \u003ch1 style=\"margin:0 0 4px;font-size:24px;font-weight:800;color:#0f172a;\"\u003eTomatoes 0.9kg\u003c\/h1\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eJuicy, sweet-tart tomatoes perfect for quick stir-fries, bright salads, comforting soups, and saucy noodles.\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\u003eBalanced sweetness and acidity that brighten savory dishes and salads alike.\u003c\/li\u003e\n    \u003cli\u003eFlesh stays meaty when quickly stir-fried; breaks down beautifully for soups and sauces.\u003c\/li\u003e\n    \u003cli\u003eVersatile across cuisines — from Chinese tomato-egg to seafood broths and noodle tosses.\u003c\/li\u003e\n    \u003cli\u003eDelicious raw, lightly cooked, or simmered — prep-friendly for busy weeknights.\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:14px;padding:14px;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;color:#0f172a;\"\u003eClassic Tomato \u0026amp; Egg Stir-Fry (Xīhóngshì Chǎo Dàn)\u003c\/h4\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eSizzle tomato wedges until saucy, then fold in softly scrambled \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\" style=\"color:var(--brand)\"\u003efree‑range eggs\u003c\/a\u003e. Season with a splash of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:var(--brand)\"\u003elight soy sauce\u003c\/a\u003e and finish with sliced \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\" style=\"color:var(--brand)\"\u003espring onions\u003c\/a\u003e. Ready in about 4–6 minutes.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;color:#0f172a;\"\u003eLight \u0026amp; Bright Tomato 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\"\u003eLight \u0026amp; fresh\u003c\/span\u003e\n\u003c\/h4\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eChunky tomatoes tossed with thinly sliced \u003ca href=\"\/products\/fresh-purple-onions-approximately-1kg\" style=\"color:var(--brand)\"\u003epurple onion\u003c\/a\u003e, torn \u003ca href=\"\/products\/fresh-bunch-of-coriander\" style=\"color:var(--brand)\"\u003ecoriander\u003c\/a\u003e, a drizzle of \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand)\"\u003ewhite rice vinegar\u003c\/a\u003e, a pinch of sugar, and sea salt. Chill for 10–15 minutes for best flavor.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;color:#0f172a;\"\u003eTomato Beef Noodle Stir‑Fry\u003c\/h4\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eQuick‑sear \u003ca href=\"\/products\/angus-prime-shredded-beef-500g\" style=\"color:var(--brand)\"\u003ebeef strips\u003c\/a\u003e, add tomato wedges to create a glossy sauce, then toss with hot \u003ca href=\"\/products\/chunsi-nanchang-stir-fried-rice-noodles-1kg\" style=\"color:var(--brand)\"\u003estir‑fry rice noodles\u003c\/a\u003e and a spoon of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:var(--brand)\"\u003eoyster sauce\u003c\/a\u003e. 6–8 minutes pan‑to‑plate.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;color:#0f172a;\"\u003eTangy Tomato Mussel Soup\u003c\/h4\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eSimmer chopped tomatoes with \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:var(--brand)\"\u003eclear chicken broth\u003c\/a\u003e, then add cleaned \u003ca href=\"\/products\/black-local-mussels-1kg\" style=\"color:var(--brand)\"\u003elocal mussels\u003c\/a\u003e. Cook until shells open (4–6 minutes). Finish with cracked pepper and a splash of vinegar for lift.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;color:#0f172a;\"\u003eSilken Tofu with Warm Tomato–Garlic Sauce\u003c\/h4\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eGently simmer diced tomatoes and minced \u003ca href=\"\/products\/peeled-garlic-cloves-250g\" style=\"color:var(--brand)\"\u003egarlic\u003c\/a\u003e until saucy; spoon over chilled or warmed \u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\" style=\"color:var(--brand)\"\u003esilken tofu\u003c\/a\u003e. Finish with a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand)\"\u003epure sesame oil\u003c\/a\u003e.\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\u003ePeel easily: score an “X”, blanch 30–60 seconds, then shock in cold water and slip skins off.\u003c\/li\u003e\n    \u003cli\u003eFor stir‑fries, cut into 2–3 cm wedges so they hold shape yet release some juice for sauce.\u003c\/li\u003e\n    \u003cli\u003eTo keep dishes less watery, scoop seeds for salads; keep them in for soups and braises.\u003c\/li\u003e\n    \u003cli\u003eRoast or pan‑char to deepen sweetness before blending into sauces.\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 href=\"\/products\/fresh-dried-garlic-heads-approximately-500g\" style=\"color:var(--brand)\"\u003eGarlic Bulbs, 500g\u003c\/a\u003e — the classic tomato companion.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/fresh-yellow-onions-1kg\" style=\"color:var(--brand)\"\u003eYellow Onions 1kg\u003c\/a\u003e — for salsas, sauces, and stews.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" style=\"color:var(--brand)\"\u003eKikkoman All‑Purpose Soy Sauce\u003c\/a\u003e — umami lift in quick sautés.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-1000g\" style=\"color:var(--brand)\"\u003eJiangxi Rice Vermicelli 1kg\u003c\/a\u003e — toss with tomato sauce for weeknight noodles.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" style=\"color:var(--brand)\"\u003eAustralian Raw King Prawns 700g\u003c\/a\u003e — sweet seafood partner in tomato broths.\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;justify-content:space-between;align-items:center;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;font-size:14px;\"\u003eKeep your crisper full with the freshest picks.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003ca href=\"\/collections\/vegetables\" style=\"color:var(--brand);font-weight:700;border:1px solid #e2e8f0;background:#fff;border-radius:999px;padding:10px 14px;\"\u003eBrowse all fresh 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\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\u003cp class=\"p1\"\u003eLimit 1 per purchase.  Not valid with multi-buy discounts.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151485088031,"sku":"A0735745752050","price":6.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/c2bb8ed7a264be40c167fff4f818c2fb7tsxWAQ0lNTEOv8wkBPEvgcB644f0nRR.jpg?v=1745982962"},{"product_id":"fresh-okra-approximately-250g","title":"Okra 250g","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:10px 12px;color:#334155;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\"\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:28px;line-height:1.2;color:#0f172a;\"\u003eOkra 250g\u003c\/h1\u003e\n    \u003cp style=\"margin:0 0 2px;font-size:13px;color:#64748b;\"\u003eAlso known as Lady’s finger\u003c\/p\u003e\n    \u003cp style=\"margin:10px 0 0;font-size:15px;\"\u003eCrisp-tender green pods with a gentle grassy sweetness. Great for quick stir-fries, braises, and broth-based dishes where its natural silkiness adds body.\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;line-height:1.6;\"\u003e\n      \u003cli\u003eFirm, fresh pods that stay snappy with a quick sear.\u003c\/li\u003e\n      \u003cli\u003eNaturally thickens soups and stews without flour or starch.\u003c\/li\u003e\n      \u003cli\u003eVersatile: delicious stir-fried, steamed, grilled, or in hotpot.\u003c\/li\u003e\n      \u003cli\u003ePairs beautifully with garlic, soy, chili, sesame, and seafood.\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;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;\"\u003eGarlic–chili wok toss\u003c\/div\u003e\n        \u003cp style=\"margin:0;font-size:14px;\"\u003eFlash-sear okra over high heat with \u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003epeeled garlic\u003c\/a\u003e and slivers of \u003ca href=\"\/products\/fresh-red-chili-peppers-approximately-250g\"\u003ered chili\u003c\/a\u003e. Finish with a splash of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003elight soy sauce\u003c\/a\u003e and a sheen of \u003ca href=\"\/products\/88-canola-oil-1l\"\u003ecanola oil\u003c\/a\u003e.\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;\"\u003eMushroom \u0026amp; tofu miso-style pot\u003c\/div\u003e\n        \u003cp style=\"margin:0;font-size:14px;\"\u003eSimmer in a gentle broth using \u003ca href=\"\/products\/daisho-miso-sumo-hot-pot-soup-base-750g\"\u003emiso hot pot base\u003c\/a\u003e, add \u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\"\u003eshiitake\u003c\/a\u003e and cubes of \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eclassic tofu\u003c\/a\u003e for a cozy, broth-forward 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;\"\u003eChilled soy–vinegar okra \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;font-size:14px;\"\u003eBlanch briefly, then chill. Dress with \u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\"\u003eall‑purpose soy sauce\u003c\/a\u003e, a splash of \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\"\u003ewhite rice vinegar\u003c\/a\u003e, and a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003epure sesame oil\u003c\/a\u003e.\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;\"\u003eOkra \u0026amp; soft-scrambled eggs\u003c\/div\u003e\n        \u003cp style=\"margin:0;font-size:14px;\"\u003eSear okra to lightly char, stir in beaten \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\"\u003efree‑range eggs\u003c\/a\u003e, and season with a spoon of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e for silky, savory bites.\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;line-height:1.6;\"\u003e\n      \u003cli\u003eKeep it dry: pat pods thoroughly before slicing to reduce excess silkiness.\u003c\/li\u003e\n      \u003cli\u003eTrim just the cap—avoid cutting into the seed cavity if you want a crisper bite.\u003c\/li\u003e\n      \u003cli\u003eHigh heat first: sear or stir-fry briefly to set the surface before saucing.\u003c\/li\u003e\n      \u003cli\u003eAdd acidity (vinegar or tomatoes) to keep the texture bright in braises or soups.\u003c\/li\u003e\n      \u003cli\u003eCut larger pods into diagonal chunks for even cooking and great presentation.\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:6px 0 0;font-size:14px;\"\u003e\n      • \u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003ePeeled Garlic Cloves\u003c\/a\u003e\n      • \u003ca href=\"\/products\/fresh-red-chili-peppers-approximately-250g\"\u003eRed Chili Peppers\u003c\/a\u003e\n      • \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eHaitian Oyster Sauce\u003c\/a\u003e\n      • \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eClassic Tofu 500g\u003c\/a\u003e\n      • \u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eRaw King Prawns\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;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;line-height:1.7;\"\u003e\n      \u003cli\u003e\u003ca href=\"\/products\/fresh-small-corn-1-box\"\u003eFresh Baby Corn - 1 Box\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/products\/fresh-green-lantern-peppers-pack-of-3\"\u003eGreen Bell Peppers - Pack of 3\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/products\/fresh-bean-sprouts-approximately-400g\"\u003eBean Sprouts 400g\u003c\/a\u003e\u003c\/li\u003e\n    \u003c\/ul\u003e\n    \u003cdiv style=\"margin-top:10px;\"\u003e\n      \u003ca href=\"\/collections\/vegetables\" style=\"color:#DB3A35;text-decoration:underline;font-weight:700;\"\u003eBrowse all vegetables →\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 #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":48151485481247,"sku":"9202402011411","price":3.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/8a2503c39032fa13b0a2edd5fbdc8d8fCTZKZSuVHByWmnqujrnSY2sz5kGy5Vbx.jpg?v=1745982960"},{"product_id":"fresh-bundle-of-spring-onions","title":"Green Shallots Bunch (Spring Onion)","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px 12px;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:8px;\"\u003e\n    \u003ch1 style=\"margin:0;font-size:26px;font-weight:800;\"\u003eShallot Bunch\u003c\/h1\u003e\n    \u003cp style=\"margin:6px 0 0;color:#64748b;font-size:14px;\"\u003eAlso known as Spring Onion \/ Scallion\u003c\/p\u003e\n    \u003cp style=\"margin:14px 0 0;color:#334155;font-size:15px;\"\u003eCrisp green tops and tender white stems that add a clean, sweet-allium lift to everything from stir-fries and soups to noodles and 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 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:15px;\"\u003e\n      \u003cli\u003eDelicate onion flavor that’s fresh, sweet, and never overpowering.\u003c\/li\u003e\n      \u003cli\u003eUse the whole bunch: mild white ends for sizzle; grassy green tops for finish.\u003c\/li\u003e\n      \u003cli\u003eInstant upgrade to noodles, eggs, dumplings, braises, and broths.\u003c\/li\u003e\n      \u003cli\u003eFast-cooking hero: wilts in seconds for weeknight speed.\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;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;\"\u003eGinger-Scallion Chicken Stir-Fry\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eFlash-fry sliced white ends with ginger, then add strips of \u003ca href=\"\/products\/premium-selected-frozen-chicken-breast-1kg\" style=\"color:var(--brand);\"\u003echicken breast\u003c\/a\u003e. Finish with green tops, a splash of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:var(--brand);\"\u003elight soy sauce\u003c\/a\u003e, and a drizzle of sesame oil. Stir-fry over high heat for 2–4 minutes.\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;\"\u003eBroth‑Based Egg Drop Soup with Silken Tofu \u0026amp; Shallots \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 cubes of \u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\" style=\"color:var(--brand);\"\u003esilken tofu\u003c\/a\u003e and finely sliced shallots. Stream in whisked \u003ca href=\"\/products\/canobolas-free-range-eggs-18-pieces-1kg\" style=\"color:var(--brand);\"\u003eeggs\u003c\/a\u003e, then season with white pepper and a touch of soy.\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;\"\u003eShanghai-Style Scallion Oil Noodles\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eSlowly toast sliced shallots in oil until fragrant, then toss with hot \u003ca href=\"\/products\/fresh-evergreen-yangchun-noodles-500g\" style=\"color:var(--brand);\"\u003eYangchun noodles\u003c\/a\u003e and a spoon of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003epure sesame oil\u003c\/a\u003e. Finish with soy and a pinch of sugar.\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;\"\u003eWok-Tossed Prawns with Scallion Rice Vermicelli\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eStir-fry \u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" style=\"color:var(--brand);\"\u003eking prawns\u003c\/a\u003e, add soaked \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\" style=\"color:var(--brand);\"\u003erice vermicelli\u003c\/a\u003e and a heap of sliced shallots. Season with light soy and white pepper; toss until glossy.\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:15px;\"\u003e\n      \u003cli\u003eTrim root ends; peel away any wilted outer layer. Rinse well (grit hides near the base).\u003c\/li\u003e\n      \u003cli\u003eSeparate whites and greens: whites love high heat; greens are best added at the end.\u003c\/li\u003e\n      \u003cli\u003eSlice on a bias for more surface area and prettier garnish.\u003c\/li\u003e\n      \u003cli\u003eFor scallion oil, gently fry in neutral oil until lightly golden; strain and use the oil to dress noodles or veggies.\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;\"\u003eTofu and noodles love shallots: try \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" style=\"color:var(--brand);\"\u003eclassic tofu\u003c\/a\u003e, chewy \u003ca href=\"\/products\/chunsi-strong-ramen-noodles-1000g\" style=\"color:var(--brand);\"\u003epull noodles\u003c\/a\u003e, rich soy like \u003ca href=\"\/products\/haday-golden-label-light-soy-sauce-1-28l\" style=\"color:var(--brand);\"\u003eHaday light soy\u003c\/a\u003e, a dash of \u003ca href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\" style=\"color:var(--brand);\"\u003eZhenjiang vinegar\u003c\/a\u003e, fragrant \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003esesame oil\u003c\/a\u003e, soft-scrambled \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\" style=\"color:var(--brand);\"\u003eeggs\u003c\/a\u003e, or quick-cooking \u003ca href=\"\/products\/beifang-frozen-sliced-beef-rolls-for-hot-pot-600g\" style=\"color:var(--brand);\"\u003ebeef slices\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;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;font-size:14px;\"\u003eExplore more alliums and aromatics to power up your cooking.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003ca href=\"\/collections\/scallion-ginger-garlic\" style=\"flex-shrink:0;color:#DB3A35;font-weight:700;border:1px solid #e2e8f0;background:#fff;border-radius:999px;padding:10px 14px;\"\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":48151487545631,"sku":"9335351095513","price":2.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/6b6175c571d601234985892455b84449Ia3B3viuY5K38fskdvbXL7l1X5XQObzm.jpg?v=1745982958"},{"product_id":"fresh-single-white-radish","title":"White Radish, 1 Root","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px;color:#334155;line-height:1.55;font-size:15px;\"\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:24px;font-weight:800;color:#0f172a;\"\u003eWhite Radish, 1 Root\u003c\/h1\u003e\n  \u003cp style=\"margin:0;color:#64748b;font-size:14px;\"\u003eAlso known as Daikon\u003c\/p\u003e\n  \u003cp style=\"margin:10px 0 0;\"\u003eCrisp, juicy, and gently peppery when raw; sweet and tender when cooked. This kitchen workhorse is brilliant in salads, soups, braises, and hot pot.\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:6px 0 0 18px;\"\u003e\n    \u003cli\u003eVersatile texture: crisp and refreshing raw; mellow and subtly sweet when simmered.\u003c\/li\u003e\n    \u003cli\u003eBalances rich flavors in stews, braises, and hot pot broths.\u003c\/li\u003e\n    \u003cli\u003eQuick-cooking: turns tender in minutes and absorbs sauces beautifully.\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:12px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));\"\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;color:#0f172a;\"\u003eCrisp daikon slaw with rice vinegar \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:0;\"\u003eJulienne daikon, toss with a pinch of salt, then dress with \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:#DB3A35;\"\u003eHengshun White Rice Vinegar\u003c\/a\u003e and a few drops of \u003ca href=\"\/products\/chuan-lao-hui-pure-sesame-oil-320ml\" style=\"color:#DB3A35;\"\u003epure sesame oil\u003c\/a\u003e. Add sliced spring onions for freshness.\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;color:#0f172a;\"\u003eComforting pork-bone \u0026amp; daikon soup\u003c\/h4\u003e\n      \u003cp style=\"margin:0;\"\u003eSimmer \u003ca href=\"\/products\/frozen-northern-free-range-pork-neck-bones-1kg\" style=\"color:#DB3A35;\"\u003epork neck bones\u003c\/a\u003e with ginger until milky, add thick-cut daikon and top up with \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:#DB3A35;\"\u003eclear chicken broth\u003c\/a\u003e. Cook until daikon is tender-sweet (30–45 minutes after boiling).\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;color:#0f172a;\"\u003eQuick stir-fry with beef strips \u0026amp; oyster sauce\u003c\/h4\u003e\n      \u003cp style=\"margin:0;\"\u003eSear \u003ca href=\"\/products\/angus-prime-shredded-beef-500g\" style=\"color:#DB3A35;\"\u003ebeef strips\u003c\/a\u003e, add batons of daikon and toss with \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:#DB3A35;\"\u003eoyster sauce\u003c\/a\u003e, light soy, garlic, and a splash of water. Stir-fry on high heat until edges turn translucent (3–5 minutes).\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;color:#0f172a;\"\u003eTomato hot pot add‑in\u003c\/h4\u003e\n      \u003cp style=\"margin:0;\"\u003eSlice daikon into half‑moons and simmer in \u003ca href=\"\/products\/haidilao-tomato-hot-pot-base-200g\" style=\"color:#DB3A35;\"\u003eHaidilao Tomato Hot Pot Base\u003c\/a\u003e. Swish in \u003ca href=\"\/products\/beifang-frozen-sliced-beef-rolls-for-hot-pot-600g\" style=\"color:#DB3A35;\"\u003ebeef rolls\u003c\/a\u003e and finish with \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\" style=\"color:#DB3A35;\"\u003eenoki mushrooms\u003c\/a\u003e for a bright, savory pot.\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:6px 0 0 18px;\"\u003e\n    \u003cli\u003ePeel the outer skin for uniform tenderness; cut into rounds, half‑moons, or batons.\u003c\/li\u003e\n    \u003cli\u003eFor milder bite in salads, soak matchsticks in cold water 5–10 minutes; drain well.\u003c\/li\u003e\n    \u003cli\u003eSalt shredded daikon 5–10 minutes, then squeeze to keep slaws extra crisp.\u003c\/li\u003e\n    \u003cli\u003eStir‑fry over high heat until edges turn translucent (2–4 minutes) for a juicy crunch.\u003c\/li\u003e\n    \u003cli\u003eSimmer in soups until just tender so it stays shapely and sweet (20–30 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 8px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n  \u003cp style=\"margin:6px 0 0;\"\u003e\n    \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:#DB3A35;\"\u003eLight Soy Sauce\u003c\/a\u003e •\n    \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:#DB3A35;\"\u003eOyster Sauce\u003c\/a\u003e •\n    \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:#DB3A35;\"\u003eRice Vinegar\u003c\/a\u003e •\n    \u003ca href=\"\/products\/chuan-lao-hui-pure-sesame-oil-320ml\" style=\"color:#DB3A35;\"\u003eSesame Oil\u003c\/a\u003e •\n    \u003ca href=\"\/products\/beifang-frozen-sliced-beef-rolls-for-hot-pot-600g\" style=\"color:#DB3A35;\"\u003eBeef Rolls (Hot Pot)\u003c\/a\u003e •\n    \u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\" style=\"color:#DB3A35;\"\u003eSilken Tofu\u003c\/a\u003e •\n    \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\" style=\"color:#DB3A35;\"\u003eEnoki Mushrooms\u003c\/a\u003e •\n    \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\" style=\"color:#DB3A35;\"\u003eRice Vermicelli\u003c\/a\u003e •\n    \u003ca href=\"\/products\/cygnet-clear-soup-hot-pot-base-200g-mild-chinese-shabu-shabu-broth-seasoning\" style=\"color:#DB3A35;\"\u003eClear Soup Hot Pot Base\u003c\/a\u003e •\n    \u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" style=\"color:#DB3A35;\"\u003eKing Prawns\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;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n  \u003cp style=\"margin:6px 0 0;\"\u003e\u003ca href=\"\/collections\/radish\" style=\"color:#DB3A35;\"\u003eBrowse all radish options\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":48151489544479,"sku":"A0735745752227","price":5.29,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/ed4c3b875ee96fbcd00b5ba7ecf0153bLYHzEfIyRazg4qiZ2VttLGaRPW9Xzubc.jpg?v=1745982957"},{"product_id":"fresh-japanese-purple-chestnut-potatoes-approximately-1-2kg","title":"Japanese Purple Sweet Potatoes, 1kg","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px;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:22px;\"\u003e\n  \u003ch1 style=\"margin:0 0 6px;font-size:26px;font-weight:800;color:#0f172a;\"\u003eJapanese Purple Sweet Potatoes, 1kg\u003c\/h1\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eNaturally sweet with a chestnut-like, fluffy texture and striking purple hue rich in anthocyanins. Roast, steam, or stir-fry for vibrant sides, bowls, and soups.\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\u003eDelicately sweet, nutty flavor that caramelises beautifully when roasted.\u003c\/li\u003e\n    \u003cli\u003eVibrant purple flesh packed with anthocyanins for eye-catching plates.\u003c\/li\u003e\n    \u003cli\u003eHolds shape in soups and stir-fries yet mashes silky-smooth for croquettes or purées.\u003c\/li\u003e\n    \u003cli\u003eVersatile across Japanese, Korean, and everyday home cooking.\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;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;\"\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;\"\u003eRoasted sesame–soy wedges\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eToss chunks with a splash of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:var(--brand);\"\u003elight soy\u003c\/a\u003e and a drizzle of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003esesame oil\u003c\/a\u003e. Roast 20–30 minutes until edges caramelise; finish with sliced \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\" style=\"color:var(--brand);\"\u003espring onion\u003c\/a\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;\"\u003eSweet potato, tofu \u0026amp; enoki 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:6px 0 0;color:#334155;\"\u003eSimmer cubes in \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:var(--brand);\"\u003eclear chicken broth\u003c\/a\u003e 6–8 minutes. Add \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-300g\" style=\"color:var(--brand);\"\u003etofu\u003c\/a\u003e and \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\" style=\"color:var(--brand);\"\u003eenoki\u003c\/a\u003e; season to taste for a light, comforting bowl.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;\"\u003eSoba bowl with soy–sesame dressing\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eRoast slices and serve over \u003ca href=\"\/products\/j-basket-japanese-buckwheat-noodles-720g\" style=\"color:var(--brand);\"\u003ebuckwheat soba\u003c\/a\u003e with a quick sauce of \u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" style=\"color:var(--brand);\"\u003eKikkoman soy\u003c\/a\u003e and a touch of sesame oil. Add blanched greens if you like.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;\"\u003eSatay stir‑fry with bell peppers\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eQuick‑stir‑fry par‑steamed batons with \u003ca href=\"\/products\/fresh-green-lantern-peppers-pack-of-3\" style=\"color:var(--brand);\"\u003egreen bell peppers\u003c\/a\u003e and a spoon of \u003ca href=\"\/products\/bull-head-brand-satay-sauce-250g\" style=\"color:var(--brand);\"\u003esatay sauce\u003c\/a\u003e for 3–4 minutes until glossy and tender‑crisp.\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\u003eScrub well; peel is optional and becomes pleasantly chewy when roasted.\u003c\/li\u003e\n    \u003cli\u003eFor even cooking, cut uniform pieces; steam or microwave briefly before stir‑frying to speed things up.\u003c\/li\u003e\n    \u003cli\u003eRoast on a preheated tray for extra caramelisation; avoid overcrowding.\u003c\/li\u003e\n    \u003cli\u003eA splash of \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003erice vinegar\u003c\/a\u003e brightens sweetness and helps maintain color.\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\" style=\"color:var(--brand);\"\u003eHaitian Premium Light Soy Sauce 500ml\u003c\/a\u003e for simple seasoning.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003eLee Kum Kee Pure Sesame Oil 207ml\u003c\/a\u003e to finish roasted or steamed pieces.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\" style=\"color:var(--brand);\"\u003eChois Shiitake Mushrooms - 100g\u003c\/a\u003e for earthy sauté combos.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-300g\" style=\"color:var(--brand);\"\u003eEver Green Chinese Style Tofu, 300g\u003c\/a\u003e in soups and braises.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003eHengshun White Rice Vinegar 500ml\u003c\/a\u003e for quick pickles and dressings.\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;\"\u003eMore in this category\u003c\/h3\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eLove roots and tubers? Explore more picks for roasting, soups, and stir‑fries.\u003c\/p\u003e\n  \u003cp style=\"margin:10px 0 0;\"\u003e\u003ca href=\"\/collections\/potatoes-root-vegetables\" style=\"color:var(--brand);text-decoration:underline;font-weight:700;\"\u003eBrowse Potatoes \u0026amp; 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 #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","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151489904927,"sku":"A0735745752197","price":9.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/A0735745752197.jpg?v=1745982955"},{"product_id":"fresh-thai-red-chilli-approximately-150g","title":"Thai Red Chilli 150g","description":"\u003cp\u003eExperience the vibrant heat and flavor of Thai Red Chilli, weighing approximately 150g. Perfect for adding a spicy kick to your curries, soups, and sauces.\u003cbr\u003e These chillies are essential for authentic Thai cooking, delivering a robust taste with a fiery finish.\u003cbr\u003e Enhance your dishes with the intense color and piquancy of our freshly picked Thai Red Chilli.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151493706015,"sku":"A0735745752388","price":3.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/59a1ea168b3a08832581b4e5d7ff121fARxTmOSCetoHJLSdLOi4EoDdJZTH3LTY.png?v=1745982954"},{"product_id":"fresh-thai-green-chilli-approximately-150g","title":"Thai Green Chilli 150g","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,'Apple Color Emoji','Segoe UI Emoji';color:#334155;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:20px;\"\u003e\u003cdiv style=\"display:flex;gap:18px;align-items:center;flex-wrap:wrap;\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/118e6d912785716b9b3fa3631e0386d6qrT7qtQNQdoaLPMQPJVIVjuoMMY39S5L.jpg?v=1745982952\" alt=\"Thai Green Chilli 150g\" style=\"width:120px;height:120px;object-fit:cover;border-radius:12px;border:1px solid #e2e8f0;\"\u003e\u003cdiv\u003e\n\u003ch1 style=\"margin:0 0 6px;font-size:24px;font-weight:800;color:#0f172a;\"\u003eThai Green Chilli 150g\u003c\/h1\u003e\n\u003cp style=\"margin:0;color:#64748b;font-size:14px;\"\u003eBright, aromatic heat for Thai stir-fries, curries, soups and zesty salads.\u003c\/p\u003e\n\u003c\/div\u003e\n\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 8px;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\u003eClean, herbal chilli heat that lifts curry pastes, broths and quick sautés.\u003c\/li\u003e\n\u003cli\u003eThin walls and juicy flesh — ideal for slicing, pounding, or charring.\u003c\/li\u003e\n\u003cli\u003eEasy heat control: remove seeds\/membranes for milder dishes, keep them in for extra kick.\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;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;\"\u003eTom Yum prawn noodle soup\u003c\/h4\u003e\n\u003cp style=\"margin:0;\"\u003eSlice chillies into a tangy, aromatic broth using \u003ca href=\"\/products\/bull-head-thai-tom-yum-hot-pot-soup-base-350g\"\u003eTom Yum Hot Pot Soup Base\u003c\/a\u003e, add \u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eraw king prawns\u003c\/a\u003e and a handful of \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\"\u003erice vermicelli\u003c\/a\u003e. Simmer until prawns turn pink; finish with fresh lime and coriander.\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;\"\u003eGarlic‑chilli chicken \u0026amp; green bean stir‑fry\u003c\/h4\u003e\n\u003cp style=\"margin:0;\"\u003eFlash‑fry thinly sliced chicken from \u003ca href=\"\/products\/premium-selected-frozen-chicken-breast-1kg\"\u003epremium chicken breast\u003c\/a\u003e with chopped Thai green chillies, \u003ca href=\"\/products\/fresh-seasonal-green-beans-approximately-500g\"\u003egreen beans\u003c\/a\u003e, a dash of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003elight soy\u003c\/a\u003e and a spoon of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e. Cook on high heat for 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;background:#fff;\"\u003e\n\u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eCreamy Thai green curry with tofu\u003c\/h4\u003e\n\u003cp style=\"margin:0;\"\u003ePound chillies with garlic to boost your curry paste; simmer with coconut milk, then add cubes of \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003efirm tofu\u003c\/a\u003e (or chicken), seasonal veg and Thai basil. Serve with steamed jasmine rice.\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;\"\u003eChilled shirataki with chilli‑vinegar dressing \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:0;\"\u003eRinse and chill \u003ca href=\"\/products\/hankun-crispy-konjac-yam-threads-200g\"\u003eshirataki (konjac) threads\u003c\/a\u003e. Toss with finely sliced green chillies, \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\"\u003erice vinegar\u003c\/a\u003e, a pinch of sugar and minced \u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003egarlic\u003c\/a\u003e for a light, zesty bowl.\u003c\/p\u003e\n\u003c\/div\u003e\n\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 8px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n\u003cul style=\"margin:8px 0 0 18px;padding:0;\"\u003e\n\u003cli\u003eFor milder heat, split lengthwise and scrape out seeds and white membrane.\u003c\/li\u003e\n\u003cli\u003eBloom minced chilli briefly in hot oil to release aroma; avoid scorching.\u003c\/li\u003e\n\u003cli\u003eChar whole chillies in a dry pan 1–2 minutes per side for smoky depth, then slice.\u003c\/li\u003e\n\u003cli\u003eUse gloves when handling and wash cutting boards promptly; avoid touching eyes.\u003c\/li\u003e\n\u003cli\u003eQuick marinade idea (for stir‑fry): 2 parts light soy : 1 part vinegar : pinch sugar + minced chilli and garlic.\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 8px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n\u003cul style=\"margin:8px 0 0 18px;padding:0;\"\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003eLight soy sauce\u003c\/a\u003e and \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e for quick wok dishes.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/chunsi-jiangxi-rice-vermicelli-300g\"\u003eRice vermicelli\u003c\/a\u003e for spicy soups and noodle bowls.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eFirm tofu\u003c\/a\u003e to balance heat in curries and sautés.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eKing prawns\u003c\/a\u003e for seafood stir‑fries and tom yum.\u003c\/li\u003e\n\u003cli\u003eAromatics: \u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003egarlic\u003c\/a\u003e and \u003ca href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003eginger\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;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n\u003cdiv style=\"display:flex;flex-wrap:wrap;gap:10px;\"\u003e \u003ca href=\"\/products\/fresh-bullet-chillies-millet-peppers-approximately-200g\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#0f172a;background:#fff;\"\u003eBird’s Eye Chilies 200g\u003c\/a\u003e \u003ca href=\"\/products\/fresh-green-lantern-peppers-pack-of-3\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#0f172a;background:#fff;\"\u003eGreen Bell Peppers (3 Pack)\u003c\/a\u003e \u003ca href=\"\/products\/fresh-red-chili-peppers-approximately-250g\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#0f172a;background:#fff;\"\u003eRed Chili Peppers 250g\u003c\/a\u003e \u003ca href=\"\/products\/fresh-red-lantern-peppers-pack-of-3\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#0f172a;background:#fff;\"\u003eRed Bell Peppers (3 Pack)\u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"margin-top:12px;\"\u003e\u003ca href=\"\/collections\/shop-peppers-chilli-online-next-day-delivery-in-sydney\" style=\"color:#0f172a;font-weight:700;\"\u003eBrowse all peppers \u0026amp; chillies →\u003c\/a\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 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":48151494885663,"sku":"A0735745752371","price":3.69,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/118e6d912785716b9b3fa3631e0386d6qrT7qtQNQdoaLPMQPJVIVjuoMMY39S5L.jpg?v=1745982952"},{"product_id":"fresh-korean-king-oyster-mushrooms-400g","title":"Korean King Oyster Mushrooms 400g","description":"\u003cp\u003eDiscover the rich, savory flavor of Korean King Oyster Mushrooms, available in a convenient 400g pack. These mushrooms are known for their thick, meaty texture, making them a perfect substitute for meat in vegetarian dishes.\u003cbr\u003e Ideal for stir-fries, soups, and grilling, their robust structure holds up well under heat and absorbs flavors beautifully.\u003cbr\u003e Enhance your culinary creations with these versatile, nutrient-packed mushrooms and bring a touch of Korean cuisine to your table.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151496655135,"sku":"A0735745752791","price":6.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/9edc8524ff4a1061517c71ac3b382dc1.jpg?v=1745982951"},{"product_id":"fresh-green-stemmed-vegetable-hearts-bundle","title":"Green-Stemmed Choi Sum, 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\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;display:flex;gap:16px;align-items:center;\"\u003e\n    \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/ea3b06dc50cec21613ee7213edb8595fdQV7lV8H5lq2PqYqkk0THrUcHRnfiUSe_714421db-fde0-4bc7-9e1a-21c6981930b2.jpg?v=1745982949\" alt=\"Green-Stemmed Choi Sum fresh bundle\" style=\"width:120px;height:120px;object-fit:cover;border-radius:12px;border:1px solid #e2e8f0;\"\u003e\n    \u003cdiv\u003e\n      \u003ch1 style=\"margin:0 0 6px;font-size:24px;font-weight:800;color:#0f172a;\"\u003eGreen-Stemmed Choi Sum, 1 Bundle\u003c\/h1\u003e\n      \u003cp style=\"margin:0;color:#475569;font-size:14px;\"\u003eTender, juicy stems and mild, sweet leaves that cook in minutes — perfect for the wok, broth, or a light blanch.\u003c\/p\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;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eCrisp, green stems with a gentle sweetness that stands up to high heat.\u003c\/li\u003e\n      \u003cli\u003eQuick-cooking: turns vibrant and tender in 1–2 minutes.\u003c\/li\u003e\n      \u003cli\u003eVersatile across stir-fries, noodle soups, hotpot, and simple side dishes.\u003c\/li\u003e\n      \u003cli\u003eDelicious with classic garlic, soy, and oyster sauce pairings.\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\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eWok-tossed with garlic \u0026amp; oyster sauce\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eHeat a little oil, add sliced \u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003egarlic\u003c\/a\u003e, then toss in choi sum until bright. Splash with \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e and a drizzle of \u003ca href=\"\/products\/88-canola-oil-1l\"\u003ecanola oil\u003c\/a\u003e for shine.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eBrothy rice‑vermicelli noodle 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\"\u003eclear chicken broth\u003c\/a\u003e, add \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\"\u003eenoki\u003c\/a\u003e and a handful of \u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eking prawns\u003c\/a\u003e. Blanch \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\"\u003erice vermicelli\u003c\/a\u003e, add choi sum for 30–60 seconds, and ladle over.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eTofu, shiitake \u0026amp; soy stir-fry noodles\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eSear cubes of \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eclassic tofu\u003c\/a\u003e, add sliced \u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\"\u003eshiitake\u003c\/a\u003e, then choi sum and \u003ca href=\"\/products\/chunsi-nanchang-stir-fried-rice-noodles-1kg\"\u003estir-fry noodles\u003c\/a\u003e. Finish with a splash of \u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\"\u003esoy sauce\u003c\/a\u003e.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eBlanched greens with sesame–soy dressing\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eBlanch choi sum 45–60 seconds, drain well, then dress with a mix of \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\"\u003erice vinegar\u003c\/a\u003e, a pinch of sugar, light soy, and a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003esesame oil\u003c\/a\u003e.\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;font-size:14px;\"\u003e\n      \u003cli\u003eRinse thoroughly; grit can hide between stems. Split thicker stems lengthwise for even cooking.\u003c\/li\u003e\n      \u003cli\u003eFor the wok, cook stems first, add leaves last; total cook time is usually 1–2 minutes.\u003c\/li\u003e\n      \u003cli\u003eBlanching: salt the water, cook 30–60 seconds until vivid green, then drain well for saucing.\u003c\/li\u003e\n      \u003cli\u003eA touch of oil and salt in blanching water helps lock in color and sheen.\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;font-size:14px;\"\u003e\n      \u003cli\u003e\u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eHaitian Premium Oyster Sauce 700g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003ePeeled Garlic Cloves 250g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eLee Kum Kee Pure Sesame Oil 207ml\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/products\/chois-oyster-mushrooms-400g\"\u003eChois Oyster Mushrooms - 400g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eEver Green Classic Tofu, 500g\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;justify-content:space-between;align-items:center;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;font-size:14px;\"\u003eLove leafy greens? Discover more fresh picks.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003ca href=\"\/collections\/leafy-vegetables\" style=\"color:var(--brand);font-weight:700;\"\u003eBrowse all leafy vegetables\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 #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":48151499440415,"sku":"9335351095483","price":2.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/ea3b06dc50cec21613ee7213edb8595fdQV7lV8H5lq2PqYqkk0THrUcHRnfiUSe_714421db-fde0-4bc7-9e1a-21c6981930b2.jpg?v=1745982949"},{"product_id":"fresh-bunch-of-coriander","title":"Fresh Coriander (Cilantro) — 1 Bunch","description":"\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\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\u003cdiv id=\"umall-desc\" style=\"--brand: #DB3A35; max-width: 860px; margin: 0 auto; padding: 8px 12px; font-family: system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif; color: #0f172a; line-height: 1.55;\"\u003e\n\u003csection style=\"border: 1px solid #e2e8f0; background: #fff; border-radius: 16px; padding: 20px;\"\u003e\n\u003ch2 style=\"margin: 0 0 4px; font-size: 24px; font-weight: 800;\"\u003eBunch of Coriander\u003c\/h2\u003e\n\u003cp style=\"margin: 0; color: #64748b;\"\u003eAlso known as Cilantro\u003c\/p\u003e\n\u003cp style=\"margin: 10px 0 0; color: #334155;\"\u003eFragrant, citrusy and fresh — coriander leaves and tender stems brighten stir-fries, soups, salads, chutney, salsa and pho in seconds. Quick to use; next-day Sydney delivery.\u003c\/p\u003e\n\u003c\/section\u003e\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: bold;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClean, zesty flavour that lifts rich or spicy dishes.\u003c\/li\u003e\n\u003cli\u003eStems are flavourful — chop for sautés and sauces; save leaves for finishing.\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eVersatile: Asian stir-fry, Mexican salsa\/guacamole, Middle-Eastern salads, Thai curries.\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eAdds colour and freshness to noodles, rice bowls, seafood and grilled meats.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/section\u003e\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: bold;\"\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; background: #fff;\"\u003e\n\u003cdiv style=\"font-weight: bold; margin: 0 0 6px;\"\u003eSoy‑ginger beef stir‑fry with coriander\u003c\/div\u003e\n\u003cp style=\"margin: 0; color: #334155;\"\u003eFlash‑sear thin \u003ca href=\"\/products\/angus-prime-shredded-beef-500g\"\u003ebeef strips\u003c\/a\u003e with sliced \u003ca href=\"\/products\/fresh-yellow-onions-1kg\"\u003eonion\u003c\/a\u003e; splash in \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003elight soy sauce\u003c\/a\u003e. Toss in chopped coriander stems for 20–30 seconds, then finish with leaves off the heat.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border: 1px solid #e2e8f0; border-radius: 12px; padding: 14px; background: #fff;\"\u003e\n\u003cdiv style=\"font-weight: bold; margin: 0 0 6px;\"\u003ePrawn \u0026amp; tofu herb 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;\"\u003eLow‑calorie\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cp style=\"margin: 0; color: #334155;\"\u003eSimmer clear stock with \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003echicken broth\u003c\/a\u003e, add \u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eprawns\u003c\/a\u003e and cubed \u003ca href=\"\/products\/ever-green-fresh-regular-tofu-900g\"\u003etofu\u003c\/a\u003e until just cooked (5–8 minutes). Stir in coriander leaves to finish — light, clean, and aromatic.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border: 1px solid #e2e8f0; border-radius: 12px; padding: 14px; background: #fff;\"\u003e\n\u003cdiv style=\"font-weight: bold; margin: 0 0 6px;\"\u003eEgg fried rice with coriander and greens\u003c\/div\u003e\n\u003cp style=\"margin: 0; color: #334155;\"\u003eStir‑fry day‑old \u003ca href=\"\/products\/arawana-northeast-rice-5kg\"\u003erice\u003c\/a\u003e with beaten \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\"\u003eeggs\u003c\/a\u003e and chopped \u003ca href=\"\/products\/fresh-seasonal-green-beans-approximately-500g\"\u003egreen beans\u003c\/a\u003e. Fold through minced stems during cooking; sprinkle leaves right before serving.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border: 1px solid #e2e8f0; border-radius: 12px; padding: 14px; background: #fff;\"\u003e\n\u003cdiv style=\"font-weight: bold; margin: 0 0 6px;\"\u003eSesame chicken chopped salad with coriander\u003c\/div\u003e\n\u003cp style=\"margin: 0; color: #334155;\"\u003eShred poached \u003ca href=\"\/products\/premium-selected-frozen-chicken-breast-1kg\"\u003echicken breast\u003c\/a\u003e. Toss with lots of coriander, crisp veg, a tangy mix of \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\"\u003erice vinegar\u003c\/a\u003e and a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003esesame oil\u003c\/a\u003e. Fresh, nutty, and ultra‑herby.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\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: bold;\"\u003ePrep Tips\u003c\/h3\u003e\n\u003cul style=\"margin: 0 0 0 18px; color: #334155;\"\u003e\n\u003cli\u003eRinse gently, then pat or spin dry to keep leaves perky.\u003c\/li\u003e\n\u003cli\u003eUse the stems: mince and add early to stir‑fries, sauces, and marinades for extra flavor.\u003c\/li\u003e\n\u003cli\u003eAdd leaves at the end or off heat to preserve aroma.\u003c\/li\u003e\n\u003cli\u003eFor a quick green sauce, blitz stems and leaves with a pinch of salt, a splash of \u003ca href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\"\u003eZhenjiang vinegar\u003c\/a\u003e, and neutral oil.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/section\u003e\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: bold;\"\u003ePairs well\u003c\/h3\u003e\n\u003cul style=\"margin: 0 0 0 18px; color: #334155;\"\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\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eLee Kum Kee Pure Sesame Oil 207ml\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\"\u003eHengshun Zhenjiang Aromatic Vinegar 550ml\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-300g\"\u003eEver Green Chinese Style Tofu, 300g\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eAustralian Raw King Prawns 700g\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\"\u003eChunsi Jiangxi Rice Vermicelli 300g\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/section\u003e\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: bold;\"\u003eMore in this category\u003c\/h3\u003e\n\u003cp style=\"margin: 0; color: #334155;\"\u003eLove fresh greens? Explore our full range of leafy picks here: \u003ca href=\"\/collections\/leafy-vegetables\"\u003eLeafy Vegetables\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/section\u003e\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: bold;\"\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\n\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\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\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\n\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\n\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\n\u003c\/section\u003e\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: bold;\"\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\n\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\n\u003c\/table\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151499997471,"sku":"A0735745751916","price":2.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/6b3503b49c332c66a956e5635b996747jv5XdeaADZHfh5vIvPPYojCCV9abZgUw_81fcde5b-05db-4e4d-9765-b7ad7021f7ea.jpg?v=1745982947"},{"product_id":"frozen-aushin-japanese-style-seaweed-salad-500g","title":"[Frozen] Aushin Japanese Style Seaweed Salad 500g","description":"Aushin's Frozen Japanese Style Seaweed Salad is a 500g pack of nutritious and flavorful seaweed, perfect for enhancing your meals.\u003cbr\u003eEasy to prepare and rich in minerals, it offers a unique taste of Japanese cuisine right in your kitchen.","brand":"Aushin","offers":[{"title":"Default Title","offer_id":48151517692191,"sku":"A4949229795617","price":7.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_76d18143-c60b-4211-a3a5-5762236af62a.jpg?v=1745982946"},{"product_id":"boneless-chicken-feet-frozen-500g","title":"Boneless Chicken Feet (Frozen) 500g","description":"\u003cp\u003eDiscover the culinary versatility of Boneless Chicken Feet (Frozen) 500g, a staple in many traditional dishes. \u003cbr\u003ePerfectly cleaned and prepared, these chicken feet are ready to be used in your favorite recipes, from stews to soups. \u003cbr\u003eRich in collagen, they are not only tasty but also beneficial for joint health. \u003cbr\u003eEach pack contains 500 grams of frozen, boneless chicken feet, ensuring freshness and quality.\u003c\/p\u003e","brand":"Boneless","offers":[{"title":"Default Title","offer_id":48151616291103,"sku":"A3209268200178","price":23.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_536ced02-1702-41e8-a4c7-fddab95a5b92.jpg?v=1745982945"},{"product_id":"fresh-a2-full-cream-milk-2l","title":"A2 Full Cream Milk 2L","description":"\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003eLimit 1 per customer. Not valid with multi-buy discounts.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eA2 Full Cream Milk is a fresh, high-quality dairy product that provides a rich and creamy taste. It comes in a 2L packaging, perfect for family consumption or those who regularly consume milk.\u003c\/p\u003e","brand":"A2","offers":[{"title":"Default Title","offer_id":48151619633439,"sku":"A9335390000035","price":6.79,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/80b207f75ce50ed1402bf2318eac201e2nCf8WIuxe7NRZ0Tc1LZZ1AS0Em6n9I4.jpg?v=1745982943"},{"product_id":"fresh-yakult-probiotic-drink-65ml-10-bottles-pack","title":"Yakult Probiotic Drink 65ml*10 Bottles\/ Pack","description":"\u003cp\u003eYakult Probiotic Drink is a fresh, fermented dairy beverage packed with beneficial probiotics to support gut health. Each pack contains 10 individual 65ml bottles, perfect for daily consumption.\u003c\/p\u003e","brand":"Yakult","offers":[{"title":"Default Title","offer_id":48151647977759,"sku":"A9317557000010","price":8.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_694aea41-4c75-4f7d-87b8-691c773b8934.jpg?v=1745982941"},{"product_id":"angel-yeast-rice-wine-starter-8g","title":"Angel Yeast Rice Wine Starter 8g","description":"\u003cp\u003eAngel Yeast Rice Wine Starter is a high-quality yeast used for making homemade rice wine. It's easy to use, ensuring a successful fermentation process for a delicious and authentic taste.\u003c\/p\u003e","brand":"Angel","offers":[{"title":"Default Title","offer_id":48151715610911,"sku":"A6917790973060","price":0.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_febb971a-aca6-4be9-8832-9245c4aae011.jpg?v=1745982940"},{"product_id":"frozen-mingfa-frozen-bamboo-shoots-400g","title":"[Frozen] Mingfa Frozen Bamboo Shoots 400g","description":"\u003cp\u003eMingfa Frozen Bamboo Shoots are a 400g pack of high-quality, pre-cut bamboo shoots, frozen to maintain freshness. They are perfect for adding a crunchy texture and mild flavor to your Asian-inspired dishes.\u003c\/p\u003e","brand":"Mingfa","offers":[{"title":"Default Title","offer_id":48151718691103,"sku":"678452120029","price":5.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_69d7f794-e3a3-42ac-8eaa-da6675502339.jpg?v=1745982939"},{"product_id":"frozen-yamasan-fish-cakes-250g","title":"Yamasan Frozen Fish Cakes - 250g","description":"\u003cp\u003eYamasan Fish Cakes are a frozen, ready-to-cook seafood product, made from high-quality fish. With 250g in each pack, they offer a convenient and delicious addition to various dishes.\u003c\/p\u003e","brand":"Yamasan","offers":[{"title":"Default Title","offer_id":48151828529439,"sku":"A4974031490009","price":3.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_589057cb-c45f-44a0-9efd-46c7e8f1197e.jpg?v=1747019094"},{"product_id":"frozen-ayi-tofu-fish-250g","title":"[Frozen] Ayi Tofu Fish 250g","description":"Ayi Tofu Fish is a frozen, ready-to-cook product that combines the rich flavors of tofu and fish in a 250g package.\u003cbr\u003eIt's a convenient and healthy option for quick meals, offering a good source of protein and essential nutrients.","brand":"Ayi","offers":[{"title":"Default Title","offer_id":48151845339423,"sku":"9330385000298","price":5.39,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_21a18a80-4ce9-4622-b9ed-ee0375a62df7.jpg?v=1745982936"},{"product_id":"frozen-maruchan-udon-noodles-5pcs-1-25kg","title":"[Frozen] Maruchan Udon Noodles 5pcs 1.25kg","description":"\u003cp class=\"p1\"\u003eEnjoy authentic Japanese-style udon at home with Maruchan Kama-age Udon. Each pack contains 5 portions of thick, chewy noodles—perfect for hot soups, stir-fries, or dipping into your favourite broth. Made in Japan and frozen fresh to lock in texture and taste.\u003c\/p\u003e","brand":"Maruchan","offers":[{"title":"Default Title","offer_id":48151905763615,"sku":"4901990217460","price":8.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_531706ab-8651-4bfc-8ce8-b2064d6a4487.jpg?v=1747018797"},{"product_id":"beifang-sliced-beef-rolls-225g","title":"Beifang Sliced Beef Rolls 225g","description":"\u003cp\u003eThese are frozen, pre-sliced rolls of fatty beef from the Beifang, weighing 225g. Perfect for hot pots, stir-fries, or grilling, they offer a rich, succulent flavor and tender texture.\u003c\/p\u003e\n\n\u003cp\u003eSee all beef in our main collection: \u003ca href=\"\/collections\/angus-wagyu-beef\"\u003eBeef\u003c\/a\u003e.\u003c\/p\u003e","brand":"Beifang","offers":[{"title":"Default Title","offer_id":48152107516191,"sku":"A9353775000234","price":7.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_661f7c06-67e3-4862-8048-a110cf90ce05.jpg?v=1745982934"},{"product_id":"frozen-northern-angus-beef-rolls-225g","title":"[Frozen] Beifang Angus Beef Rolls 225g","description":"\u003cp\u003eSavor the rich, robust flavor of these frozen Beifang Angus Beef Rolls, each weighing 225g. They're made from premium Angus beef, offering a high-quality, convenient meal option.\u003c\/p\u003e\n\n\u003cp\u003eSee all beef in our main collection: \u003ca href=\"\/collections\/angus-wagyu-beef\"\u003eBeef\u003c\/a\u003e.\u003c\/p\u003e","brand":"Beifang","offers":[{"title":"Default Title","offer_id":48152109121823,"sku":"A9353775000302","price":8.79,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_7d35e36f-c441-4b25-9906-4451630f8933.jpg?v=1745982933"},{"product_id":"frozen-northern-style-hotpot-lamb-rolls-value-pack-600g","title":"[Frozen] Beifang Hotpot Sliced Lamb Rolls Value Pack 600g","description":"\u003cp\u003eA value pack of Beifang Hotpot Lamb Rolls, frozen for freshness and convenience. Each 600g pack is filled with thinly sliced lamb, perfect for a hearty hotpot meal.\u003c\/p\u003e","brand":"Beifang","offers":[{"title":"Default Title","offer_id":48152175771935,"sku":"9353775013685","price":23.19,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/300c608122cb93945071953e3807fec5oFYSraomLRwFeazkLFy0iILnoFie4Smx.jpg?v=1745982931"},{"product_id":"frozen-tianshun-pork-and-cabbage-dumplings-600g","title":"Frozen TianShun Pork and Cabbage Dumplings 600g [Limit 1 PP]","description":"\u003cp\u003eExperience the deliciousness of Frozen TianShun Pork and Cabbage Dumplings, a perfect blend of tender pork and fresh cabbage in every bite. Ideal for any occasion, these dumplings bring the taste of authentic Chinese cuisine to your kitchen. Quick to prepare and enjoy, they offer a satisfying meal for the whole family.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eAuthentic Chinese flavor:\u003c\/strong\u003e Traditional taste of pork and cabbage.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGenerous 600g package:\u003c\/strong\u003e Perfect for sharing.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHigh-quality ingredients:\u003c\/strong\u003e Made with fresh pork and cabbage.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEasy preparation:\u003c\/strong\u003e Ready in minutes.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVersatile meal option:\u003c\/strong\u003e Suitable for lunch, dinner, or snacks.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"p1\"\u003eLimit 1 per purchase.  Not valid with multi-buy discounts.\u003c\/p\u003e","brand":"Tianshun","offers":[{"title":"Default Title","offer_id":48152269619487,"sku":"9334027003272","price":5.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/9ee233df1b6ee09fb904d920bc9d10b7xDEh6Qg0IrqnkuhbeFjPLsik9S8DWk8Y.jpg?v=1745982929"},{"product_id":"frozen-tianshun-pork-and-chive-dumplings-600g","title":"Frozen TianShun Pork and Chive Dumplings 600g [Limit 1 PP]","description":"\u003cp\u003eDiscover the delectable taste of Frozen TianShun Pork and Chive Dumplings, filled with succulent pork and fresh chives. These dumplings are perfect for any occasion, bringing the flavors of TianShun's expert craftsmanship to your dinner table.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ePremium TianShun quality:\u003c\/strong\u003e Enjoy expertly crafted dumplings.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSucculent pork and fresh chives:\u003c\/strong\u003e Filled with mouthwatering ingredients.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGenerous 600g package:\u003c\/strong\u003e Ideal for sharing with family and friends.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSimple to cook:\u003c\/strong\u003e Convenient and quick preparation.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVersatile dining option:\u003c\/strong\u003e Great for any meal or snack.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"p1\"\u003eLimit 1 per purchase.  Not valid with multi-buy discounts.\u003c\/p\u003e","brand":"Tianshun","offers":[{"title":"Default Title","offer_id":48152322474271,"sku":"9334027003289","price":5.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/3859c10aca77f1e043a68a5607ebf4b8qdUhF5YozUDf6J4a5BCUNtr08iqDjOUO.jpg?v=1745982927"},{"product_id":"frozen-sanquan-refined-red-bean-soup-dumplings-400g","title":"Sanquan Frozen Glutinous Rice Balls with Sweetened Red Bean Paste Filling - 400g","description":"\u003cp\u003eThese are frozen dumplings filled with a sweet red bean soup, ready to be steamed or boiled. Produced by Sanquan, they offer a convenient and delicious dessert or snack option.\u003c\/p\u003e","brand":"Sanquan","offers":[{"title":"Default Title","offer_id":48152486641951,"sku":"A6908791600338","price":5.79,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_8dd435fe-541d-4fb6-90e8-0ce509a7eb49.jpg?v=1745982925"},{"product_id":"hengshun-chinkiang-vinegar-550ml-zhenjiang-vinegar","title":"Hengshun Chinkiang Vinegar 550mL (Zhenjiang Vinegar)","description":"\u003cp class=\"p1\"\u003eHengshun Chinkiang Vinegar is a classic Chinese black rice vinegar made from quality glutinous rice, water and wheat bran, naturally fermented for a deep, mellow flavour. Its rich, slightly smoky and tangy taste is perfect for dipping dumplings, making cold noodle salads, or adding a finishing splash to stir-fries and braised dishes.\u003c\/p\u003e\n\u003cp class=\"p2\"\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp class=\"p1\"\u003eUse it to brighten soups, balance rich meats, or mix with soy sauce, garlic and chilli for an easy dipping sauce. A pantry staple for authentic Jiangsu and Shanghai-style home cooking.\u003c\/p\u003e","brand":"Hengshun","offers":[{"title":"Default Title","offer_id":48153257967903,"sku":"6902007508302","price":2.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/a8b05f1a7b40fba34cfe604ca747973eqZrl8wpHOPXWIzYQ2V5XtzoW2IrNW34e.jpg?v=1745982919"},{"product_id":"lee-kum-kee-fresh-oyster-sauce-705g","title":"Lee Kum Kee Selected Oyster Sauce - 705g","description":"Lee Kum Kee Fresh Oyster Sauce 705g - A savory and rich sauce made from fresh oysters, perfect for adding depth of flavor to stir-fries, marinades, and Asian dishes.\u003cbr\u003eGreat for enhancing the umami taste in your cooking, this oyster sauce is versatile and easy to use.","brand":"Lee Kum Kee","offers":[{"title":"Default Title","offer_id":48153444057375,"sku":"A4893888002145","price":4.29,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/img_01_05ea0161-3b22-488b-8045-49e0cb4dc484.jpg?v=1770189859"},{"product_id":"royal-family-thai-hom-mali-rice-jasmine-rice-5kg","title":"Royal Family Thai Hom Mali Rice Jasmine Rice 5kg","description":"\u003cp\u003eRoyal Family Thai Hom Mali Rice Jasmine Rice 5kg offers premium quality, aromatic rice that is both fragrant and fluffy.\u003c\/p\u003e\n\u003cp\u003eSourced from Thailand's lush fields, this jasmine rice is renowned for its soft texture and exquisite taste.\u003c\/p\u003e\n\u003cp\u003eIdeal for a variety of dishes, it enhances the flavor of both traditional and contemporary recipes.\u003c\/p\u003e\n\u003cp\u003eThe 5kg packaging is perfect for smaller households, ensuring you have a fresh and ample supply for everyday cooking and special occasions.\u003c\/p\u003e","brand":"Royal Family","offers":[{"title":"Default Title","offer_id":48153690571039,"sku":"A8850187400030","price":24.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_5eb3664a-6be7-4666-93d2-62f0cf339f1e.jpg?v=1745982915"},{"product_id":"fresh-evergreen-whole-egg-wonton-wrappers-60pcs-350g","title":"Evergreen Whole Egg Wonton Wrappers 48pcs 290g","description":"\u003cp\u003eFresh Evergreen Whole Egg Wonton Wrappers are made with whole eggs for a rich flavor and come in a pack of 48 pieces, weighing 290g. Perfect for making delicious wontons at home.\u003cbr\u003eEnjoy the convenience of pre-made wonton wrappers without sacrificing quality or taste.\u003c\/p\u003e","brand":"Evergreen","offers":[{"title":"Default Title","offer_id":48153697878303,"sku":"A9323536588844","price":2.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_2b816a6e-bf1b-42ee-bf90-3a6e688d3b83.jpg?v=1745982913"},{"product_id":"haidilao-hot-pot-sichuan-noodles-200g-frozen","title":"Haidilao Hotpot Sweet Potato Noodles - 200g","description":"\u003cp\u003eAuthentic Sichuan-style noodles from Haidilao Hot Pot, conveniently frozen for quick and easy preparation at home. Enjoy the bold and spicy flavors of traditional Chinese cuisine in just minutes.\u003c\/p\u003e","brand":"Haidilao","offers":[{"title":"Default Title","offer_id":48153800507679,"sku":"A6974140807024","price":2.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_c3810fee-f324-495c-91e0-33bf842a7e9d.jpg?v=1745982912"},{"product_id":"double-phoenix-premium-lemon-powder-400g","title":"Double Phoenix Selected Rice Vermicelli - 400g","description":"Double Phoenix Premium Lemon Powder 400g - High-quality lemon powder made by Shuang Feng Brand, perfect for adding a burst of citrus flavor to drinks, desserts, and savory dishes.\u003cbr\u003eConvenient and versatile, this 400g pack ensures you always have a tangy lemon flavor on hand for all your culinary creations.","brand":"Shuang Feng Brand","offers":[{"title":"Default Title","offer_id":48153831538975,"sku":"A9310432007005","price":3.29,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_ba9260f4-e45b-40ee-95be-82bfa9d5779d.jpg?v=1745982911"},{"product_id":"tongzhen-premium-raw-starch-500g","title":"Tongzhen Premium Raw Starch 500g","description":"Tongzhen Premium Raw Starch 500g - High-quality raw starch perfect for thickening sauces and soups, ideal for baking and cooking.\u003cbr\u003eGreat for gluten-free and vegan recipes, adds texture and consistency to a variety of dishes.","brand":"Tong Zhen","offers":[{"title":"Default Title","offer_id":48153986466079,"sku":"4891031027014","price":5.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_80958393-0e1d-40dd-9b75-59b2615016c5.jpg?v=1745982910"},{"product_id":"s-b-golden-curry-extra-spicy-198g","title":"S\u0026B Golden Curry, Extra Spicy, 198g","description":"S\u0026amp;B Golden Curry, Extra Spicy, 198g - A flavorful and aromatic Japanese curry mix with an extra kick of spice, perfect for adding heat to your favorite dishes.\u003cbr\u003eEasy to prepare and versatile, this curry mix is a convenient way to enjoy the bold flavors of Japanese curry at home.","brand":"S\u0026B","offers":[{"title":"Default Title","offer_id":48154035814687,"sku":"A4901002133535","price":6.39,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_ec1f290b-b723-450f-a55b-d9c2126d53dd.jpg?v=1747019090"},{"product_id":"lao-gan-ma-spicy-three-pepper-chili-oil-280g","title":"Lao Gan Ma Spicy Three Pepper Chili Oil 280g","description":"A 280g bottle of Lao Gan Ma Spicy Three Pepper Chili Oil, known for its bold and spicy flavor profile perfect for adding heat to your favorite dishes.\u003cbr\u003e Made with a blend of three different types of peppers, this chili oil is versatile and can be used in stir-fries, marinades, and more.","brand":"Lao Gan Ma","offers":[{"title":"Default Title","offer_id":48154056196383,"sku":"A6921804700788","price":4.09,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_d2a77a70-4a91-4e33-b1d8-ae887fb11645.jpg?v=1745982907"},{"product_id":"chacha-sunflower-seeds-with-truffle-flavor-160g","title":"ChaCha Truffle Flavor Sunflower Seeds - 160g","description":"\u003cp\u003eChaCha Sunflower Seeds with Truffle Flavor are a delicious and healthy snack, packed with nutrients and a unique truffle taste. Each 160g pack offers a satisfying crunch and a gourmet flavor experience.\u003c\/p\u003e","brand":"ChaCha","offers":[{"title":"Default Title","offer_id":48154314244383,"sku":"A6924187806962","price":3.19,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_6e1a5dfd-2979-48a0-a95d-4b26dece2ee4.jpg?v=1745982906"},{"product_id":"orihiro-japanese-konjac-jelly-zero-calorie-apple-flavour-130g","title":"Orihiro Japanese Konjac Jelly, Zero Calorie, Apple Flavour, 130g","description":"\u003cp\u003eOrihiro Japanese Konjac Jelly is a zero-calorie dessert with a refreshing apple flavour. This 130g pack offers a guilt-free indulgence, made from natural konjac plant.\u003c\/p\u003e","brand":"Orihiro","offers":[{"title":"Default Title","offer_id":48154679542047,"sku":"A4571157258119","price":3.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_d410520a-681d-4188-9083-2bcb66caf734.jpg?v=1747019086"},{"product_id":"nongfu-mountain-manor-preserved-plums-88g","title":"Farmers Grange Preserved Plums 88g","description":"\u003cp\u003eFarmers Grange Preserved Plums are a delicious and tangy snack, packed in an 88g container for convenience. These preserved plums are a product of Farmers Grange, known for their high-quality food products.\u003c\/p\u003e","brand":"Farmers Grange","offers":[{"title":"Default Title","offer_id":48154818969887,"sku":"A6920404307489","price":2.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_6f2909f3-0573-4b89-bdda-8a344f5f5195.jpg?v=1745982903"},{"product_id":"nestle-mini-kitkat-wafer-biscuits-rich-matcha-flavour-10pcs-113g","title":"Nestle Mini KitKat Wafer Biscuits - Rich Matcha Flavour, 10pcs 113g","description":"\u003cp\u003eNestle Mini KitKat Wafer Biscuits are bite-sized treats infused with rich matcha flavour. Each pack contains 10 pieces, weighing a total of 113g.\u003c\/p\u003e","brand":"Nestle","offers":[{"title":"Default Title","offer_id":48155337097503,"sku":"A4902201179973","price":8.49,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/ed7c584193e8b3a3493f6994eac06bd00b3V2DUikODnrfgwUaHjzYpADSMX9aJD.jpg?v=1745982902"},{"product_id":"oreo-sandwich-biscuits-crystal-grape-peach-flavor-97g","title":"Oreo Sandwich Cookies - Crystal Grape \u0026 Peach Flavor, 97g","description":"Oreo Sandwich Biscuits Crystal Grape + Peach Flavor 97g are a unique twist on the classic Oreo, featuring a blend of grape and peach flavors. \u003cbr\u003e Each 97g pack is perfect for snacking on the go or sharing with friends.","brand":"Oreo","offers":[{"title":"Default Title","offer_id":48155384873247,"sku":"A6901668005939","price":3.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_6086e983-2b18-42e4-8423-2654846bcff9.jpg?v=1745982900"},{"product_id":"oishi-cheese-sticks-80g","title":"Oishi Cheese Sticks 80g","description":"\u003cp\u003eOishi Cheese Sticks 80g are crunchy, savory snacks packed with cheesy flavor. Perfect for on-the-go snacking or as a tasty addition to your lunchbox.\u003c\/p\u003e","brand":"Oishi","offers":[{"title":"Default Title","offer_id":48156144697631,"sku":"A6926265313058","price":2.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_9cad45bc-1f6b-499e-a633-ef61547eb5e5.jpg?v=1745982899"},{"product_id":"morinaga-hi-chew-grape-filled-soft-candy-12-pieces","title":"Morinaga Hi-Chew Grape Filled Soft Candy - 12 Pieces","description":"\u003cp\u003eMorinaga Hi-Chew Grape Filled Soft Candy is a delicious, chewy candy with a juicy grape filling. Each pack contains 12 individually wrapped pieces for easy on-the-go snacking.\u003c\/p\u003e","brand":"Morinaga","offers":[{"title":"Default Title","offer_id":48156355232031,"sku":"A4902888116322","price":2.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/679d4c56c98631e1243745ef6527823cuFtHlAjlG5EVc7yucrjckjRVLxq4ssnt.jpg?v=1747019070"},{"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":"haoliyou-grape-flavoured-soft-candy-60g","title":"Orion Grape Flavor Soft Gummies - 60g","description":"Orion Grape Flavoured Soft Candy is a 60g pack of delicious, chewy candies with a rich grape flavor. \u003cbr\u003e Perfect for satisfying your sweet tooth, these candies offer a delightful taste experience with every bite.","brand":"Orion","offers":[{"title":"Default Title","offer_id":48156440592671,"sku":"A6920907804775","price":1.59,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_69274f22-e251-401e-ac15-ebdc8d184ce0.jpg?v=1745982896"}],"url":"https:\/\/www.umall.com.au\/collections\/best\/hotpot-seafood-selected.oembed","provider":"Umall - Australia's Largest Online Asian Supermarket","version":"1.0","type":"link"}