{"title":"Weekly Special","description":"\u003cp\u003eFresh deals weekly on frozen dumplings \u0026amp; buns, hot-pot essentials, pantry staples and snacks—items change every Wednesday and end Friday night. Half Price runs separately SAT-TUE.\u003c\/p\u003e\n\u003cstyle\u003e\n    #um-weekly-nav .um-chip{display:inline-block;margin:4px;padding:7px 11px;border:1px solid #e5e7eb;border-radius:999px;background:#f8fafc;color:#111;text-decoration:none;font-size:13px}\n    #um-weekly-nav .um-acc{display:inline-block;margin:8px 6px;text-align:center}\n    #um-weekly-nav .um-acc summary{display:inline-flex;align-items:center;gap:6px;cursor:pointer;list-style:none;color:#111;background:#eef2ff;border:1px solid #dbeafe;border-radius:999px;padding:7px 12px;font-size:13px;font-weight:600}\n    #um-weekly-nav .um-acc summary .ico{display:inline-block;transition:transform .2s ease}\n    #um-weekly-nav .um-acc summary::-webkit-details-marker{display:none}\n    #um-weekly-nav .um-acc[open] summary .ico{transform:rotate(180deg)}\n  \u003c\/style\u003e\n\u003cdiv id=\"um-weekly-nav\" style=\"max-width: 1040px; margin: 12px auto 18px; text-align: center; line-height: 1.5;\"\u003e\n\u003cp style=\"margin: 0 12px 8px; color: #555;\"\u003eBrowse this week’s Weekly Special—or jump to Half Price for SAT-TUE deals.\u003c\/p\u003e\n\u003ca href=\"\/collections\/half-price\" class=\"um-chip\" style=\"font-weight:600;\"\u003eHalf Price (SAT-TUE)\u003c\/a\u003e\n\u003cdetails class=\"um-acc\"\u003e\n\u003csummary role=\"button\" aria-expanded=\"false\"\u003e\u003cspan class=\"ico\"\u003e▾\u003c\/span\u003e Jump to\u003c\/summary\u003e\n\u003cdiv style=\"margin-top: 8px;\"\u003e\n\u003ca href=\"\/collections\/trending-24\" class=\"um-chip\"\u003eTrending 24\u003c\/a\u003e \u003ca href=\"\/collections\/new-arrivals\" class=\"um-chip\"\u003eNew Arrivals\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e","products":[{"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":3.09,"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-navel-oranges-approximately-3kg","title":"Navel Oranges 3kg","description":"\u003cp\u003eJuicy and seedless, these fresh navel oranges are perfect for snacking or juicing, weighing approximately 3kg.\u003c\/p\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151463067935,"sku":"A0735745752821","price":5.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/c750af558530227a0ddf2b92734bc3e0u9ErRltoYTFEFwbrRK0a2qvEV8ybJKvV.jpg?v=1712383283"},{"product_id":"fresh-loofah-1-piece","title":"Loofah 1 Piece","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 \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:24px;margin-top:16px;\"\u003e \u003ch1 style=\"margin:0 0 6px;font-size:26px;font-weight:800;\"\u003eLoofah 1 Piece\u003c\/h1\u003e \u003cp style=\"margin:0;color:#64748b;font-size:14px;\"\u003eAlso known as Sponge gourd (Luffa)\u003c\/p\u003e \u003c\/section\u003e \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e \u003ch2 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h2\u003e \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e \u003cli\u003eTender, subtly sweet flesh that turns silky when cooked.\u003c\/li\u003e \u003cli\u003eLight and hydrating; great for quick stir‑fries, soups, or steaming.\u003c\/li\u003e \u003cli\u003eSoaks up aromatics and sauces beautifully (garlic, ginger, soy, sesame).\u003c\/li\u003e \u003c\/ul\u003e \u003c\/section\u003e \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e \u003ch2 style=\"margin:0 0 12px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h2\u003e \u003cdiv style=\"display:grid;grid-template-columns:1fr;gap:12px;\"\u003e \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eGarlic shrimp stir‑fry\u003c\/div\u003e \u003cdiv style=\"color:#334155;font-size:14px;\"\u003eStir‑fry sliced loofah on high heat with \u003ca href=\"\/products\/peeled-garlic-cloves-250g\" style=\"color:#DB3A35;\"\u003epeeled garlic\u003c\/a\u003e and a handful of \u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" style=\"color:#DB3A35;\"\u003epeeled king prawns\u003c\/a\u003e. Splash with \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:#DB3A35;\"\u003elight soy sauce\u003c\/a\u003e and finish with a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:#DB3A35;\"\u003esesame oil\u003c\/a\u003e. Cook just until translucent (2–4 minutes).\u003c\/div\u003e \u003c\/div\u003e \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eBroth‑based enoki \u0026amp; tofu soup \u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eBroth-based\u003c\/span\u003e\n\u003c\/div\u003e \u003cdiv style=\"color:#334155;font-size:14px;\"\u003eSimmer loofah half‑moons in \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:#DB3A35;\"\u003eclear chicken broth\u003c\/a\u003e with \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\" style=\"color:#DB3A35;\"\u003eenoki\u003c\/a\u003e, cubes of \u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\" style=\"color:#DB3A35;\"\u003esilken tofu\u003c\/a\u003e, and a few slices of \u003ca href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\" style=\"color:#DB3A35;\"\u003efresh ginger\u003c\/a\u003e until tender (3–5 minutes). Season lightly.\u003c\/div\u003e \u003c\/div\u003e \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eGentle steamed loofah with soy and sesame\u003c\/div\u003e \u003cdiv style=\"color:#334155;font-size:14px;\"\u003eSteam thick loofah slices until just soft (4–6 minutes). Top with minced \u003ca href=\"\/products\/fresh-dried-garlic-heads-approximately-500g\" style=\"color:#DB3A35;\"\u003egarlic\u003c\/a\u003e, drizzle of \u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" style=\"color:#DB3A35;\"\u003eall‑purpose soy sauce\u003c\/a\u003e, and a touch of \u003ca href=\"\/products\/haitian-sesame-fragrant-oil-150ml\" style=\"color:#DB3A35;\"\u003esesame oil\u003c\/a\u003e. Great as a light side.\u003c\/div\u003e \u003c\/div\u003e \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eSilky loofah and egg over rice vermicelli\u003c\/div\u003e \u003cdiv style=\"color:#334155;font-size:14px;\"\u003eScramble eggs from \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\" style=\"color:#DB3A35;\"\u003efree‑range eggs\u003c\/a\u003e, add loofah batons and toss briefly. Serve over softened \u003ca href=\"\/products\/double-phoenix-jiangmen-rice-noodles-454g\" style=\"color:#DB3A35;\"\u003erice vermicelli\u003c\/a\u003e, finishing with a spoon of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:#DB3A35;\"\u003eoyster sauce\u003c\/a\u003e and sliced \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\" style=\"color:#DB3A35;\"\u003eshallots\u003c\/a\u003e.\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e \u003c\/section\u003e \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e \u003ch2 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h2\u003e \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e \u003cli\u003eChoose loofah that feels light with tender skin; avoid very large, woody ones.\u003c\/li\u003e \u003cli\u003ePeel ridges or give a light peel; slice just before cooking to retain moisture.\u003c\/li\u003e \u003cli\u003eCook quickly on high heat until just translucent to keep it silky, not mushy.\u003c\/li\u003e \u003c\/ul\u003e \u003c\/section\u003e \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e \u003ch2 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h2\u003e \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e \u003cli\u003e\u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:#DB3A35;\"\u003eHaitian Premium Oyster Sauce 700g\u003c\/a\u003e\u003c\/li\u003e \u003cli\u003e\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:#DB3A35;\"\u003eLee Kum Kee Pure Sesame Oil 207ml\u003c\/a\u003e\u003c\/li\u003e \u003cli\u003e\u003ca href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\" style=\"color:#DB3A35;\"\u003eFresh Ginger 500g\u003c\/a\u003e\u003c\/li\u003e \u003cli\u003e\u003ca href=\"\/products\/chois-shimeji-mushrooms-150g\" style=\"color:#DB3A35;\"\u003eChois Shimeji Mushrooms - 150g\u003c\/a\u003e\u003c\/li\u003e \u003cli\u003e\u003ca href=\"\/products\/ever-green-fresh-regular-tofu-900g\" style=\"color:#DB3A35;\"\u003eEver Green Fresh Regular Tofu - 900g\u003c\/a\u003e\u003c\/li\u003e \u003cli\u003e\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" style=\"color:#DB3A35;\"\u003eAustralian Raw King Prawns, 700g\u003c\/a\u003e\u003c\/li\u003e \u003c\/ul\u003e \u003c\/section\u003e \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e \u003ch2 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h2\u003e \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eLooking for more fresh picks? \u003ca href=\"\/collections\/vegetables\" style=\"color:#DB3A35;\"\u003eBrowse all Vegetables\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 \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 \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":48151484891423,"sku":"9202402011410","price":4.19,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/f933d35fa17eb6f424af50cbba589827lHBKhNuCwg0aJUfUWNPjKo5qoLOaR5IB.jpg?v=1712384022"},{"product_id":"fresh-dried-garlic-heads-approximately-500g","title":"Garlic Bulbs, 500g","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;max-width:860px;margin:0 auto;color:#111827;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;margin-top:16px;\"\u003e\n  \u003ch2 style=\"margin:0 0 6px;font-size:24px;font-weight:800;\"\u003eGarlic Bulbs, 500g\u003c\/h2\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eWhole, aromatic garlic bulbs for everyday cooking — from fast stir-fries to slow roasts.\u003c\/p\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 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\u003ePunchy raw, mellow-sweet when roasted — versatile across cuisines.\u003c\/li\u003e\n    \u003cli\u003eCloves separate cleanly for smashing, slicing, or grating.\u003c\/li\u003e\n    \u003cli\u003e500g value pack to cover weeknight meals and batch 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:1fr;gap:14px;\"\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n      \u003cdiv style=\"font-weight:700;\"\u003eWok-fried choi sum with garlic and oyster sauce\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eSmash 3–4 cloves and sizzle in a little \u003ca href=\"\/products\/88-canola-oil-1l\" style=\"color:#DB3A35;\"\u003ecanola oil\u003c\/a\u003e until fragrant (30–60 seconds). Add rinsed \u003ca href=\"\/products\/fresh-green-stemmed-vegetable-hearts-bundle\" style=\"color:#DB3A35;\"\u003eGreen-Stemmed Choi Sum\u003c\/a\u003e; toss on high heat 2–3 minutes. Finish with a spoon of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:#DB3A35;\"\u003eoyster sauce\u003c\/a\u003e and a splash of water for glossy greens.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n      \u003cdiv style=\"font-weight:700;\"\u003eClear chicken, ginger \u0026amp; garlic 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 sliced garlic with coins of \u003ca href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\" style=\"color:#DB3A35;\"\u003efresh ginger\u003c\/a\u003e and lean \u003ca href=\"\/products\/premium-selected-frozen-chicken-breast-1kg\" style=\"color:#DB3A35;\"\u003echicken breast\u003c\/a\u003e in \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:#DB3A35;\"\u003eclear chicken stock\u003c\/a\u003e for 8–12 minutes. Add a handful of \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\" style=\"color:#DB3A35;\"\u003eenoki mushrooms\u003c\/a\u003e to finish. Light, aromatic, and satisfying.\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;\"\u003e5-minute garlicky egg fried rice\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eStir-fry grated garlic in hot oil, then add day‑old rice cooked from \u003ca href=\"\/products\/arawana-northeast-rice-5kg\" style=\"color:#DB3A35;\"\u003eArawana Northeast Rice\u003c\/a\u003e. Push to the side, scramble \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\" style=\"color:#DB3A35;\"\u003efree‑range eggs\u003c\/a\u003e, then toss through with chopped \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\" style=\"color:#DB3A35;\"\u003espring onions\u003c\/a\u003e and a drizzle of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:#DB3A35;\"\u003esesame oil\u003c\/a\u003e.\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;\"\u003eCreamy mashed potatoes with roasted garlic\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eRoast a foil‑wrapped head of garlic with a little oil until soft and caramelized (25–35 minutes). Squeeze into hot, drained \u003ca href=\"\/products\/fresh-soil-free-potatoes-approximately-1kg\" style=\"color:#DB3A35;\"\u003epotatoes\u003c\/a\u003e; mash with warm \u003ca href=\"\/products\/bonsoy-soy-milk-1l\" style=\"color:#DB3A35;\"\u003esoy milk\u003c\/a\u003e and season to taste for a mellow, ultra‑smooth mash.\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\u003eTo peel fast: crush cloves lightly with the side of a knife; skins slip off.\u003c\/li\u003e\n    \u003cli\u003eFor strong aroma: grate or mince; for gentle sweetness: slice or roast whole.\u003c\/li\u003e\n    \u003cli\u003eStart garlic in cool oil, heat gradually, and cook just until pale gold to avoid bitterness.\u003c\/li\u003e\n    \u003cli\u003eRemove the green germ for a milder flavor in delicate dishes.\u003c\/li\u003e\n    \u003cli\u003eAdd garlic toward the end of high‑heat stir‑fries so it doesn’t burn.\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\/haday-golden-label-light-soy-sauce-1-28l\" style=\"color:#DB3A35;\"\u003eHaday Light Soy Sauce\u003c\/a\u003e for savory depth\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/chois-shimeji-mushrooms-150g\" style=\"color:#DB3A35;\"\u003eShimeji mushrooms\u003c\/a\u003e to boost umami\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/fresh-baby-bok-choy-pack-of-2\" style=\"color:#DB3A35;\"\u003eBaby bok choy\u003c\/a\u003e for quick garlicky greens\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" style=\"color:#DB3A35;\"\u003eKing prawns\u003c\/a\u003e for seafood stir‑fries\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/angus-prime-ground-beef-500g\" style=\"color:#DB3A35;\"\u003eAngus beef mince\u003c\/a\u003e for garlic fried noodles or rice\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/chuan-lao-hui-spicy-chili-oil-210ml\" style=\"color:#DB3A35;\"\u003eSpicy chili oil\u003c\/a\u003e to make chili‑garlic 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  \u003cul style=\"margin:8px 0 10px 18px;color:#334155;\"\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\" style=\"color:#DB3A35;\"\u003eGinger 500g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/shallots-500g\" style=\"color:#DB3A35;\"\u003eShallots - 500g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/fresh-garlic-leaves-green-garlic-1-bundle\" style=\"color:#DB3A35;\"\u003eFresh Garlic Leaves (Green Garlic)\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/peeled-garlic-cloves-250g\" style=\"color:#DB3A35;\"\u003ePeeled Garlic Cloves - 250g\u003c\/a\u003e\u003c\/li\u003e\n  \u003c\/ul\u003e\n  \u003ca href=\"\/collections\/scallion-ginger-garlic\" style=\"display:inline-block;color:#DB3A35;font-weight:700;\"\u003eBrowse all aromatics →\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":48151487676703,"sku":"A0735745752319","price":2.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/4049e40aea454854f53aca1094bb6493uHtGsGpZ7wpNcF8qHyu9zB8qzAYugSWP.jpg?v=1712384175"},{"product_id":"fresh-yellow-onions-1kg","title":"Yellow Onions 1kg","description":"\u003cdiv id=\"umall-desc\" style=\"max-width:860px;margin:0 auto;--brand:#DB3A35;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;margin-top:12px;\"\u003e\n  \u003ch1 style=\"margin:0 0 6px;font-size:26px;line-height:1.25;\"\u003eYellow Onions 1kg\u003c\/h1\u003e\n  \u003cp style=\"margin:8px 0 0;color:#475569;\"\u003eCrisp when raw, sweet and deeply savory when cooked — the all‑purpose kitchen essential.\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;\"\u003e\n    \u003cli\u003eBalanced bite when raw; turns mellow and sweet as it cooks.\u003c\/li\u003e\n    \u003cli\u003eWorks in everything: stir‑fries, soups, curries, grills, and roasts.\u003c\/li\u003e\n    \u003cli\u003eExcellent base for sauces and braises to build deep umami.\u003c\/li\u003e\n    \u003cli\u003eHolds texture in quick high‑heat cooking yet caramelizes beautifully low \u0026amp; slow.\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;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;\"\u003eCaramelized onions for steak \u0026amp; burgers\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eSlice and cook on low with a touch of oil, stirring until deep golden (25–40 minutes). Pile onto seared \u003ca href=\"\/products\/angus-prime-sirloin-steak-1kg\"\u003eAngus Prime Sirloin Steak\u003c\/a\u003e or your favorite patties. A splash of water or stock helps deglaze for glossy onions.\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:700;\"\u003eFajita‑style peppers \u0026amp; onions\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eSear strips of onion with \u003ca href=\"\/products\/fresh-green-lantern-peppers-pack-of-3\"\u003eGreen Bell Peppers\u003c\/a\u003e over high heat until lightly charred (4–6 minutes). Season with salt, pepper, and a squeeze of lime. Serve with tortillas, rice bowls, or grilled chicken.\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:700;\"\u003eQuick pickled onions \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:6px 0 0;color:#334155;\"\u003eToss thinly sliced onions with a pinch of salt, a touch of sugar, and \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\"\u003eHengshun White Rice Vinegar\u003c\/a\u003e. Rest 15–30 minutes until bright and crisp. Great on salads, grilled fish, and rice bowls.\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:700;\"\u003eGai lan \u0026amp; onion stir‑fry with noodles\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eWok‑toss onions until fragrant (1–2 minutes), add \u003ca href=\"\/products\/fresh-bunch-of-chinese-broccoli-kai-lan-hearts\"\u003eChinese Broccoli (Gai Lan)\u003c\/a\u003e, then cooked \u003ca href=\"\/products\/chung-yuen-hokkien-noodles-1kg\"\u003eHokkien Noodles\u003c\/a\u003e. Finish with light soy sauce and a drizzle of sesame oil.\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;\"\u003e\n    \u003cli\u003eFor milder raw bite, soak sliced onions in cold water for 5–10 minutes, then drain well.\u003c\/li\u003e\n    \u003cli\u003eCaramelizing works best low \u0026amp; slow with occasional deglazing; resist rushing for the sweetest flavor.\u003c\/li\u003e\n    \u003cli\u003eFor stir‑fries, slice pole‑to‑pole (root to tip) so pieces stay crisp and don’t break down.\u003c\/li\u003e\n    \u003cli\u003eStart onions first to build fond; add aromatics (garlic\/ginger) later to avoid scorching.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n  \u003cul style=\"margin:0 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/fresh-green-lantern-peppers-pack-of-3\"\u003eGreen Bell Peppers\u003c\/a\u003e for classic sautéed mix.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/angus-prime-sirloin-steak-1kg\"\u003eAngus Prime Sirloin Steak\u003c\/a\u003e and grills.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/fresh-bunch-of-chinese-broccoli-kai-lan-hearts\"\u003eChinese Broccoli (Gai Lan)\u003c\/a\u003e in quick wok dishes.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003eHaitian Premium Light Soy Sauce\u003c\/a\u003e for seasoning.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/canobolas-free-range-eggs-18-pieces-1kg\"\u003eFree‑Range Eggs\u003c\/a\u003e for scrambles and omelettes.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\"\u003eShiitake Mushrooms\u003c\/a\u003e to deepen umami.\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;text-align:center;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n  \u003cp style=\"margin:6px 0 0;\"\u003e\u003ca href=\"\/collections\/scallion-ginger-garlic\" style=\"color:var(--brand);\"\u003eBrowse more scallion, ginger \u0026amp; garlic essentials\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":48151488233759,"sku":"A0735745752623","price":3.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/7986eb8cc9a7d89f85beecb65961fa9eor6wFi5Jzm4LYUhWDPdBA4HYvjhIpE7E.jpg?v=1736929209"},{"product_id":"fresh-bundle-of-garlic-scapes","title":"Bundle of Garlic Scapes","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px 0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#0f172a;line-height:1.6\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:24px;margin-top:12px;\"\u003e\n  \u003ch2 style=\"margin:0 0 6px;font-size:24px;font-weight:800;\"\u003eBundle of Garlic Scapes\u003c\/h2\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eTender, curly flower stalks from hardneck garlic—mildly garlicky with a sweet, green snap that shines in stir‑fries, eggs, noodles, and quick salads.\u003c\/p\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003eCrisp‑tender texture with a gentle garlic aroma—less pungent than cloves.\u003c\/li\u003e\n    \u003cli\u003eVersatile: great sautéed, grilled, blitzed into sauces, or tossed into soups.\u003c\/li\u003e\n    \u003cli\u003eCooks fast; keeps a vibrant green bite in minutes.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n  \u003col style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli style=\"margin-bottom:10px;\"\u003e\n\u003cstrong\u003eWok‑tossed Beef \u0026amp; Scapes with Oyster Glaze\u003c\/strong\u003e — Stir‑fry sliced scapes with \u003ca href=\"\/products\/angus-prime-shredded-beef-500g\" style=\"color:#DB3A35;\"\u003eAngus Prime Beef Strip\u003c\/a\u003e, a splash of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:#DB3A35;\"\u003eoyster sauce\u003c\/a\u003e and a drizzle of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:#DB3A35;\"\u003esesame oil\u003c\/a\u003e until glossy (2–4 minutes).\u003c\/li\u003e\n    \u003cli style=\"margin-bottom:10px;\"\u003e\n\u003cstrong\u003eGarlic Scapes \u0026amp; Soft Scrambled Eggs\u003c\/strong\u003e — Sauté chopped scapes briefly, then fold into softly set eggs; season with a touch of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:#DB3A35;\"\u003elight soy\u003c\/a\u003e. Try with \u003ca href=\"\/products\/pace-farm-free-range-eggs-12-extra-large-700g\" style=\"color:#DB3A35;\"\u003efree‑range eggs\u003c\/a\u003e.\u003c\/li\u003e\n    \u003cli style=\"margin-bottom:10px;\"\u003e\n\u003cstrong\u003eShiitake, Tofu \u0026amp; Scapes Rice Vermicelli Soup\u003c\/strong\u003e\u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eBroth‑based\u003c\/span\u003e — Simmer \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:#DB3A35;\"\u003eclear chicken broth\u003c\/a\u003e, add \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\" style=\"color:#DB3A35;\"\u003erice vermicelli\u003c\/a\u003e, sliced \u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\" style=\"color:#DB3A35;\"\u003eshiitake\u003c\/a\u003e, scapes, and cubes of \u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\" style=\"color:#DB3A35;\"\u003esilken tofu\u003c\/a\u003e; finish with light soy.\u003c\/li\u003e\n    \u003cli style=\"margin-bottom:0;\"\u003e\n\u003cstrong\u003eLight Smashed Scape Salad\u003c\/strong\u003e — Blanch scapes briefly, smash into bite‑size lengths, then toss with \u003ca href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\" style=\"color:#DB3A35;\"\u003eblack vinegar\u003c\/a\u003e, a dab of \u003ca href=\"\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\" style=\"color:#DB3A35;\"\u003echili crisp\u003c\/a\u003e, and a touch of sesame oil.\u003c\/li\u003e\n  \u003c\/ol\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003eTrim the very tip if tough; cut into 3–5 cm batons or thin slices on the bias.\u003c\/li\u003e\n    \u003cli\u003eStir‑fry on high heat just until crisp‑tender (2–3 minutes) to keep them vibrant.\u003c\/li\u003e\n    \u003cli\u003eFor salads, blanch 30–45 seconds in salted water, then chill to set the green.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:#DB3A35;\"\u003eHaitian Premium Oyster Sauce 700g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" style=\"color:#DB3A35;\"\u003eKikkoman All‑Purpose Soy Sauce 1.6L\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:#DB3A35;\"\u003eLee Kum Kee Pure Sesame Oil 207ml\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\" style=\"color:#DB3A35;\"\u003eChuanwazi Crispy Chili Oil with Peanuts 200g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/chunsi-jiangxi-rice-vermicelli-300g\" style=\"color:#DB3A35;\"\u003eChunsi Jiangxi Rice Vermicelli 300g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" style=\"color:#DB3A35;\"\u003eAustralian Raw King Prawns – Peeled \u0026amp; Tail‑On\u003c\/a\u003e\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;\"\u003e\n  \u003cdiv\u003e\n    \u003ch3 style=\"margin:0 0 6px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n    \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eDiscover more aromatic alliums and kitchen essentials.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003ca href=\"\/collections\/scallion-ginger-garlic\" style=\"color:#DB3A35;white-space:nowrap;font-weight:700;\"\u003eBrowse Scallion • Ginger • Garlic\u003c\/a\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$4.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$7.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151489347871,"sku":"9202402011407","price":1.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/902ff191c310aebba95b67689109ac51PZZL0LoKrNieUsG5JsChWPorqiSAoUMD.jpg?v=1712384267"},{"product_id":"fresh-carrots-approximately-1kg","title":"Carrots 1kg","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif;color:#0f172a;line-height:1.6;padding:8px 0;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;\"\u003e\n    \u003ch1 style=\"margin:0 0 6px;font-size:26px;font-weight:800;\"\u003eCarrots 1kg\u003c\/h1\u003e\n    \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eCrisp, naturally sweet, and endlessly versatile — perfect for quick weeknight cooking or hearty weekend roasts.\u003c\/p\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n    \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eSweet crunch that holds up in stir‑fries, roasts, soups, and slaws.\u003c\/li\u003e\n      \u003cli\u003eCooks fast when julienned; caramelises beautifully when roasted.\u003c\/li\u003e\n      \u003cli\u003ePlays well with soy, sesame, garlic, ginger, and warm spices.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n    \u003cdiv style=\"display:grid;grid-template-columns:1fr;gap:14px;\"\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eGinger–garlic carrot stir‑fry with light soy\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eFlash‑fry carrot matchsticks with ginger and garlic, then finish with a splash of \u003ca href=\"\/products\/haday-golden-label-light-soy-sauce-1-28l\" title=\"Haday Golden Label Light Soy Sauce\"\u003elight soy\u003c\/a\u003e and a drizzle of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" title=\"Haitian Premium Oyster Sauce\"\u003eoyster sauce\u003c\/a\u003e. Stir‑fry 2‑4 minutes until crisp‑tender.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eBrothy carrot, shiitake \u0026amp; rice vermicelli soup\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eSimmer sliced carrots and \u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\" title=\"Chois Shiitake Mushrooms\"\u003eshiitake\u003c\/a\u003e in \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" title=\"Bull Head Clear Chicken Broth\"\u003eclear chicken broth\u003c\/a\u003e, then add \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\" title=\"Chunsi Jiangxi Rice Vermicelli 300g\"\u003erice vermicelli\u003c\/a\u003e. Season to taste for a comforting, broth‑based bowl.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eSesame \u0026amp; rice‑vinegar shredded carrot salad \u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eLow‑calorie\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eToss finely shredded carrots with \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" title=\"Hengshun White Rice Vinegar\"\u003erice vinegar\u003c\/a\u003e, a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" title=\"Lee Kum Kee Pure Sesame Oil\"\u003esesame oil\u003c\/a\u003e, and sliced \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\" title=\"Shallot Bunch\"\u003eshallots\u003c\/a\u003e. Chill briefly for peak crunch.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eCumin‑roasted carrots (sheet‑pan)\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eCoat wedges with a little \u003ca href=\"\/products\/88-canola-oil-1l\" title=\"88 Canola Oil\"\u003ecanola oil\u003c\/a\u003e, toss with \u003ca href=\"\/products\/bakerdream-cumin-barbecue-seasoning-130g\" title=\"Bakerdream Cumin Seasoning\"\u003ecumin seasoning\u003c\/a\u003e, and roast 18‑25 minutes until caramelised.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n    \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003ePeel if you like an ultra‑smooth finish; otherwise scrub well to keep more color and texture.\u003c\/li\u003e\n      \u003cli\u003eFor fast cooking, cut into thin matchsticks or bias slices; for roasting, go chunkier so edges caramelise while centers stay tender.\u003c\/li\u003e\n      \u003cli\u003eBlanch coins or sticks 1‑2 minutes before quick stir‑fries to lock in color and cut cook time.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n    \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" title=\"Australian Raw King Prawns\"\u003eKing prawns\u003c\/a\u003e for quick stir‑fries.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/chois-oyster-mushrooms-400g\" title=\"Chois Oyster Mushrooms\"\u003eOyster mushrooms\u003c\/a\u003e for earthy depth.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/fresh-bunch-of-coriander\" title=\"Bunch of Coriander\"\u003eCoriander\u003c\/a\u003e to finish salads and noodle bowls.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" title=\"Kikkoman Soy Sauce\"\u003eSoy sauce\u003c\/a\u003e for umami seasoning.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" title=\"Ever Green Classic Tofu 500g\"\u003eFirm tofu\u003c\/a\u003e for veg‑forward protein.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n    \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eLove cooking with roots? Explore more picks in our curated range.\u003c\/p\u003e\n    \u003cp style=\"margin:10px 0 0;\"\u003e\u003ca href=\"\/collections\/potatoes-root-vegetables\" style=\"color:var(--brand);font-weight:700;\"\u003eBrowse root vegetables →\u003c\/a\u003e\u003c\/p\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$4.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$7.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151489741087,"sku":"A0735745752159","price":1.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/4049e40aea454854f53aca1094bb64931QnDqeyFQxBHXNeqc3h4WIdsI68uJvxz.jpg?v=1735370758"},{"product_id":"fresh-bundle-of-celery","title":"Bundle of Celery","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:12px;color:#334155;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;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\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:8px;\"\u003e\u003ch1 style=\"margin:0 0 6px;font-size:22px;font-weight:800;\"\u003eBundle of Celery\u003c\/h1\u003e\n\u003cp style=\"margin:6px 0 0;color:#475569;\"\u003eCrisp, aromatic stalks with tender leaves that bring clean crunch and a fresh, herby lift to stir‑fries, soups, and salads.\u003c\/p\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n\u003cul style=\"margin:0 0 0 18px;color:#334155;\"\u003e\n\u003cli\u003eBright, savory aroma and satisfying snap—great raw or cooked.\u003c\/li\u003e\n\u003cli\u003eLeaves are flavorful: use as a garnish or stir into soups at the end.\u003c\/li\u003e\n\u003cli\u003eStands up to high heat: quick sautés keep it juicy and crisp.\u003c\/li\u003e\n\u003cli\u003ePlays well with soy, garlic, ginger, sesame, mushrooms, tofu, beef, and noodles.\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 12px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n\u003col style=\"margin:0 0 0 18px;color:#334155;\"\u003e\n\u003cli style=\"margin-bottom:10px;\"\u003e\n\u003cstrong\u003eWok‑tossed beef \u0026amp; celery with oyster sauce\u003c\/strong\u003e — Sear thin \u003ca href=\"\/products\/angus-prime-shredded-beef-500g\"\u003ebeef strips\u003c\/a\u003e, add sliced celery, garlic, and finish with a spoon of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e. Stir‑fry hot and fast for 2–3 minutes. Optional: use \u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003epeeled garlic cloves\u003c\/a\u003e for speed.\u003c\/li\u003e\n\u003cli style=\"margin-bottom:10px;\"\u003e\n\u003cstrong\u003eLight \u0026amp; crunchy celery salad with sesame and vinegar\u003c\/strong\u003e \u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eLight \u0026amp; fresh\u003c\/span\u003e — Thinly slice celery on the bias, toss with a splash of \u003ca href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\"\u003eZhenjiang vinegar\u003c\/a\u003e, a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003esesame oil\u003c\/a\u003e, pinch of salt, and celery leaves.\u003c\/li\u003e\n\u003cli style=\"margin-bottom:10px;\"\u003e\n\u003cstrong\u003eClear celery, enoki \u0026amp; tofu soup\u003c\/strong\u003e — Simmer \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003eclear chicken broth\u003c\/a\u003e, add sliced celery, a bundle of \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\"\u003eenoki\u003c\/a\u003e, and cubes of \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eclassic tofu\u003c\/a\u003e. Cook just until tender-crisp.\u003c\/li\u003e\n\u003cli style=\"margin-bottom:0;\"\u003e\n\u003cstrong\u003eCelery stir‑fry with rice noodles\u003c\/strong\u003e — Soak \u003ca href=\"\/products\/chunsi-nanchang-stir-fried-rice-noodles-1kg\"\u003estir‑fry rice noodles\u003c\/a\u003e, then toss with celery, scallions, and a drizzle of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003elight soy sauce\u003c\/a\u003e. Keep it hot and quick to preserve crunch.\u003c\/li\u003e\n\u003c\/ol\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n\u003cul style=\"margin:0 0 0 18px;color:#334155;\"\u003e\n\u003cli\u003eTrim the base and leafy tops; reserve leaves for finishing.\u003c\/li\u003e\n\u003cli\u003ePeel tough outer strings with a paring knife for extra tenderness.\u003c\/li\u003e\n\u003cli\u003eBias‑slice thin for quick sautés; chunk larger for braises or soups.\u003c\/li\u003e\n\u003cli\u003eFor salads, briefly blanch slices 10–20 seconds, then chill for a mellower bite.\u003c\/li\u003e\n\u003cli\u003eAdd leaves at the very end of cooking to keep their fragrance.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003ePairs well\u003c\/h3\u003e\n\u003cdiv style=\"display:flex;flex-wrap:wrap;gap:10px;\"\u003e\n\u003ca href=\"\/products\/angus-prime-shredded-beef-500g\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#1f2937;background:#fff;\"\u003eAngus Prime Beef Strip 500g\u003c\/a\u003e\n\u003ca href=\"\/products\/chois-shimeji-mushrooms-150g\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#1f2937;background:#fff;\"\u003eShimeji Mushrooms 150g\u003c\/a\u003e\n\u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#1f2937;background:#fff;\"\u003eEver Green Classic Tofu 500g\u003c\/a\u003e\n\u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#1f2937;background:#fff;\"\u003eLight Soy Sauce 500ml\u003c\/a\u003e\n\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#1f2937;background:#fff;\"\u003eSesame Oil 207ml\u003c\/a\u003e\n\u003ca href=\"\/products\/double-phoenix-jiangmen-rice-noodles-454g\" style=\"display:inline-block;padding:8px 12px;border:1px solid #e2e8f0;border-radius:999px;color:#1f2937;background:#fff;\"\u003eKong Moon Rice Vermicelli 454g\u003c\/a\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;\"\u003eMore in this category\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eLove fresh produce? \u003ca href=\"\/collections\/vegetables\" style=\"color:var(--brand);\"\u003eBrowse all Vegetables\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 \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":48151490298143,"sku":"A0735745752630","price":2.29,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/c2bb8ed7a264be40c167fff4f818c2fb91XI9Ckf7gDmVZSHo0th11ojoXDGLmrG.jpg?v=1712384333"},{"product_id":"fresh-green-lantern-peppers-pack-of-3","title":"Green Bell Peppers- Pack of 3","description":"\u003cdiv id=\"umall-desc\" style=\"max-width:860px;margin:0 auto;--brand:#DB3A35;color:#334155;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;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=\"display:flex;gap:16px;align-items:center;border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;\"\u003e\n    \u003cdiv style=\"flex:0 0 140px;height:140px;border-radius:12px;overflow:hidden;border:1px solid #e2e8f0;background:#f8fafc;display:flex;align-items:center;justify-content:center;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/118e6d912785716b9b3fa3631e0386d6ADguo2kerjsn0shivHNwAC1XCymlDupE.jpg?v=1712384495\" alt=\"Green Bell Peppers - Pack of 3\" style=\"width:100%;height:100%;object-fit:cover;\"\u003e\u003c\/div\u003e\n    \u003cdiv style=\"flex:1;min-width:0;\"\u003e\n      \u003ch1 style=\"margin:0 0 4px;font-size:24px;font-weight:800;color:#0f172a;\"\u003eGreen Bell Peppers — Pack of 3\u003c\/h1\u003e\n      \u003cp style=\"margin:0 0 10px;color:#64748b;font-size:14px;\"\u003eAlso known as green capsicum\u003c\/p\u003e\n      \u003cp style=\"margin:0;font-size:14px;color:#334155;\"\u003eCrisp, juicy, and refreshingly grassy-sweet. Thick-walled peppers that hold their bite in stir-fries, shine in salads, and are perfect for stuffing.\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;padding:0;font-size:14px;color:#334155;\"\u003e\n      \u003cli\u003eClean, mild sweetness with a gentle pepper aroma — no heat.\u003c\/li\u003e\n      \u003cli\u003eThick, crunchy walls that stay snappy after a quick sauté.\u003c\/li\u003e\n      \u003cli\u003eUniform size for even cooking and great for stuffing or skewers.\u003c\/li\u003e\n      \u003cli\u003eVersatile across cuisines: stir-fries, noodles, salads, and roasts.\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(220px,1fr));gap:12px;\"\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:15px;font-weight:700;color:#0f172a;\"\u003eWok-seared beef \u0026amp; capsicum with oyster sauce\u003c\/h4\u003e\n        \u003cp style=\"margin:0;font-size:14px;color:#334155;\"\u003eFlash-fry pepper strips with \u003ca href=\"\/products\/angus-prime-shredded-beef-500g\" style=\"color:var(--brand);\"\u003eAngus beef strips\u003c\/a\u003e and finish with a splash of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:var(--brand);\"\u003eoyster sauce\u003c\/a\u003e. Stir-fry 2-4 minutes for crisp-tender peppers.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:15px;font-weight:700;color:#0f172a;\"\u003eJuicy stuffed peppers (pork \u0026amp; rice)\u003c\/h4\u003e\n        \u003cp style=\"margin:0;font-size:14px;color:#334155;\"\u003eHalve and deseed; stuff with seasoned \u003ca href=\"\/products\/borrowdale-free-range-pork-mince-500g-frozen\" style=\"color:var(--brand);\"\u003elean pork mince\u003c\/a\u003e and cooked \u003ca href=\"\/products\/beidahuang-wuchang-rice-vacuum-pack-5kg\" style=\"color:var(--brand);\"\u003eWuchang rice\u003c\/a\u003e. Bake or steam until tender and succulent.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:15px;font-weight:700;color:#0f172a;\"\u003eCrunchy sesame-vinegar pepper salad \u003cspan style=\"display:inline-flex;align-items:center;border:1px solid rgba(219,58,53,.2);color:var(--brand);background:rgba(219,58,53,.08);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;margin-left:8px\"\u003eLow-calorie\u003c\/span\u003e\n\u003c\/h4\u003e\n        \u003cp style=\"margin:0;font-size:14px;color:#334155;\"\u003eThinly slice peppers and toss with \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003ewhite rice vinegar\u003c\/a\u003e, a drizzle of sesame oil, and a handful of \u003ca href=\"\/products\/fresh-mixed-salad-greens-mesclun-mix-300g\" style=\"color:var(--brand);\"\u003emixed salad greens\u003c\/a\u003e. Bright, crunchy, and refreshing.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:15px;font-weight:700;color:#0f172a;\"\u003eShiitake \u0026amp; pepper rice vermicelli stir-fry\u003c\/h4\u003e\n        \u003cp style=\"margin:0;font-size:14px;color:#334155;\"\u003eStir-fry pepper strips with \u003ca href=\"\/products\/chois-shiitake-mushrooms-100g\" style=\"color:var(--brand);\"\u003eshiitake\u003c\/a\u003e; toss with soaked \u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\" style=\"color:var(--brand);\"\u003erice vermicelli\u003c\/a\u003e, a splash of soy, and sesame oil. Quick, savory weeknight noodles.\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;padding:0;font-size:14px;\"\u003e\n      \u003cli\u003eSlice off the top, run a knife around the core, and tap out seeds; trim white ribs for a milder taste.\u003c\/li\u003e\n      \u003cli\u003eFor crisp-tender bites, cook over high heat and keep to 2-4 minutes in the wok.\u003c\/li\u003e\n      \u003cli\u003eRoast or char to bring out sweetness; peel blistered skin if you prefer a softer texture.\u003c\/li\u003e\n      \u003cli\u003eCut into even strips or cubes so they cook uniformly.\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    \u003cdiv style=\"display:flex;flex-wrap:wrap;gap:10px;margin-top:6px;\"\u003e\n      \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:var(--brand);padding:8px 10px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;\"\u003eLight Soy Sauce (Haitian)\u003c\/a\u003e\n      \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);padding:8px 10px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;\"\u003ePure Sesame Oil\u003c\/a\u003e\n      \u003ca href=\"\/products\/premium-selected-frozen-chicken-breast-1kg\" style=\"color:var(--brand);padding:8px 10px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;\"\u003eChicken Breast Fillet\u003c\/a\u003e\n      \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" style=\"color:var(--brand);padding:8px 10px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;\"\u003eClassic Tofu (Ever Green)\u003c\/a\u003e\n      \u003ca href=\"\/products\/chois-oyster-mushrooms-400g\" style=\"color:var(--brand);padding:8px 10px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;\"\u003eOyster Mushrooms\u003c\/a\u003e\n      \u003ca href=\"\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\" style=\"color:var(--brand);padding:8px 10px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;\"\u003eCrispy Chili Oil\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\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(180px,1fr));gap:12px;\"\u003e\n      \u003ca href=\"\/products\/fresh-red-lantern-peppers-pack-of-3\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:12px;color:var(--brand);\"\u003e\u003cdiv style=\"font-weight:700;color:#0f172a;margin-bottom:4px;\"\u003eRed Bell Peppers\u003c\/div\u003e\n\u003cdiv style=\"font-size:13px;color:#64748b;\"\u003ePack of 3\u003c\/div\u003e\u003c\/a\u003e\n      \u003ca href=\"\/products\/green-bullhorn-peppers-450-500g\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:12px;color:var(--brand);\"\u003e\u003cdiv style=\"font-weight:700;color:#0f172a;margin-bottom:4px;\"\u003eGreen Bullhorn Peppers\u003c\/div\u003e\n\u003cdiv style=\"font-size:13px;color:#64748b;\"\u003e450-500g\u003c\/div\u003e\u003c\/a\u003e\n      \u003ca href=\"\/products\/fresh-bullet-chillies-millet-peppers-approximately-200g\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:12px;color:var(--brand);\"\u003e\u003cdiv style=\"font-weight:700;color:#0f172a;margin-bottom:4px;\"\u003eBird's Eye Chilies\u003c\/div\u003e\n\u003cdiv style=\"font-size:13px;color:#64748b;\"\u003e200g\u003c\/div\u003e\u003c\/a\u003e\n      \u003ca href=\"\/products\/fresh-thai-green-chilli-approximately-150g\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:12px;color:var(--brand);\"\u003e\u003cdiv style=\"font-weight:700;color:#0f172a;margin-bottom:4px;\"\u003eThai Green Chilli\u003c\/div\u003e\n\u003cdiv style=\"font-size:13px;color:#64748b;\"\u003e150g\u003c\/div\u003e\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:var(--brand);text-decoration:underline;\"\u003eBrowse all peppers \u0026amp; chilies\u003c\/a\u003e\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 #e2e8f0;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":48151493050655,"sku":"A0735745752395","price":3.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/118e6d912785716b9b3fa3631e0386d6ADguo2kerjsn0shivHNwAC1XCymlDupE.jpg?v=1712384495"},{"product_id":"frozen-old-northern-hot-pot-chicken-slices-300g","title":"[Frozen] Old Beifang Premium Hot Pot Chicken Slices 300g","description":"\u003cp\u003eSucculent slices of chicken, pre-cut and frozen for convenience, perfect for a hearty hot pot. This 300g pack from Old Beifang ensures quality and flavor in every bite.\u003c\/p\u003e","brand":"Old Beifang","offers":[{"title":"Default Title","offer_id":48152179704095,"sku":"A9333127007234","price":5.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_ce1fc735-60d4-49b9-a952-ab8f7436a49b.jpg?v=1736583634"},{"product_id":"si-hong-crispy-fragrant-dates-168g","title":"Si Hong Crispy Fragrant Dates 168g","description":"\u003cp\u003eSi Hong Crispy Fragrant Dates are a delicious and healthy snack, packed with natural sweetness and nutrients. These 168g packs offer a convenient way to enjoy this traditional Asian delicacy.\u003c\/p\u003e","brand":"SiHong","offers":[{"title":"Default Title","offer_id":48155072561439,"sku":"A6937638102797","price":3.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_fccf121c-c61d-4482-b2bc-7e526b5f7123.jpg?v=1712406493"},{"product_id":"youchen-scallion-flavored-meat-floss-biscuits-bagged-6pcs-208g","title":"Youchen Scallion Flavored Meat Floss Biscuits, Bagged, 6pcs 208g","description":"Youchen Scallion Flavored Meat Floss Biscuits are a savory snack with a unique blend of meat floss and scallion flavors. \u003cbr\u003e Packaged in a convenient bag, this 208g pack contains 6 pieces, perfect for on-the-go snacking or sharing.","brand":"Youchen","offers":[{"title":"Default Title","offer_id":48155853685023,"sku":"A6958620700463","price":4.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_3fe54d8a-0332-49f3-8825-314845152e67.jpg?v=1712409452"},{"product_id":"ito-makeup-remover-soft-wipes-pull-out-style-80-sheets-x-3-packs","title":"ITO Cleansing Cotton Towels - 80 Sheets x 3 Packs","description":"\u003cp\u003eGentle and effective makeup remover wipes in a convenient pull-out style packaging, with 80 sheets per pack and 3 packs included.\u003c\/p\u003e","brand":"Ito","offers":[{"title":"Default Title","offer_id":48158187258143,"sku":"A4573267336756","price":20.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/img_01_2d41992e-93ab-4436-ad55-46c8c522838c.jpg?v=1770198460"},{"product_id":"kao-laurier-sanitary-pads-37cm-12-pcs","title":"Kao Laurier Sanitary Pads 37cm, 12 pcs","description":"\u003cp\u003eExtra-long sanitary pads for maximum protection and comfort during heavy flow days.\u003c\/p\u003e","brand":"Kao","offers":[{"title":"Default Title","offer_id":48158331076895,"sku":"A4901301426291","price":6.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/img_01_11190ce9-2629-4ed4-b5d6-02005a9c456d.jpg?v=1770199067"},{"product_id":"shiseido-rose-garden-shower-gel-300ml","title":"Shiseido Rose Garden Shower Gel 300ml","description":"\u003cp\u003eA luxurious shower gel infused with the delicate scent of roses, leaving skin feeling refreshed and delicately fragranced.\u003c\/p\u003e","brand":"Shiseido","offers":[{"title":"Default Title","offer_id":48158647091487,"sku":"A4901872257737","price":18.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_40a035dc-49ac-43db-b622-f51febdcf252.jpg?v=1712427621"},{"product_id":"camellia-medium-size-ziplock-food-preservation-bags-pack-of-150","title":"Camellia Medium Size Ziplock Food Preservation Bags, Pack of 150","description":"\u003cp\u003eDurable, medium-sized ziplock bags designed for effective food preservation, available in a pack of 150.\u003c\/p\u003e","brand":"Camellia","offers":[{"title":"Default Title","offer_id":48158791860511,"sku":"A6921489034376","price":3.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_6c29279a-aa3e-4301-9a6f-ab7a3f91fedc.jpg?v=1712429660"},{"product_id":"libai-mineral-salt-dishwashing-liquid-1-1l","title":"Liby Mineral Salt Dishwashing Liquid 1.1L","description":"\u003cp\u003eA gentle yet effective dishwashing liquid infused with mineral salts to cut through grease while being kind to your hands.\u003c\/p\u003e","brand":"Liby","offers":[{"title":"Default Title","offer_id":48158894555423,"sku":"6920174700565","price":5.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/793e4af4744d6b58a6152779b352bb89rwW5GRj62L89IHc7xsPXMZO6xD8e7CG4.jpg?v=1712430790"},{"product_id":"camellia-medium-size-wax-free-coated-paper-cups-225ml-pack-of-50","title":"Camellia Medium Size Wax-Free Coated Paper Cups 225ml, Pack of 50","description":"\u003cp\u003eDurable, medium-sized, wax-free coated paper cups, perfect for both hot and cold beverages, available in a pack of 50.\u003c\/p\u003e","brand":"Camellia","offers":[{"title":"Default Title","offer_id":48159007473951,"sku":"A6921489004744","price":3.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_2d757016-fa56-4a18-b2e3-300d3d620256.jpg?v=1735370549"},{"product_id":"chois-enoki-mushrooms-300g","title":"Enoki Mushrooms - 300g","description":"\u003cdiv id=\"umall-desc\" style=\"max-width:860px;margin:0 auto;padding:16px;--brand:#DB3A35\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:24px;margin-top:0;\"\u003e\n  \u003ch1 style=\"margin:0 0 6px;font-size:26px;line-height:1.2;\"\u003eEnoki Mushrooms — 300g\u003c\/h1\u003e\n  \u003cp style=\"margin:0;color:#64748b;font-size:14px;\"\u003eAlso known as Enokitake\u003c\/p\u003e\n  \u003cp style=\"margin:12px 0 0;color:#334155;font-size:15px;\"\u003eDelicate, crunchy strands with a mild, slightly sweet flavor. Enoki slip effortlessly into soups, stir‑fries, noodles and salads, cooking in just 1–2 minutes for a clean, satisfying bite.\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;font-size:15px;\"\u003e\n    \u003cli\u003eUltra‑fresh crunch and gentle sweetness that pairs with almost anything.\u003c\/li\u003e\n    \u003cli\u003eCooks fast — perfect for busy weeknights and last‑minute add‑ins.\u003c\/li\u003e\n    \u003cli\u003eGreat texture contrast for soups, hot pot, stir‑fries, noodles and cold salads.\u003c\/li\u003e\n    \u003cli\u003eStays slender and photogenic in the bowl — lovely for plating.\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;\"\u003eHow to enjoy\u003c\/h3\u003e\n  \u003col style=\"margin:8px 0 0 18px;color:#334155;font-size:15px;\"\u003e\n    \u003cli style=\"margin:0 0 10px;\"\u003e\n      \u003cstrong\u003eBroth‑based enoki \u0026amp; tofu soup\u003c\/strong\u003e\n      \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      — Simmer a light base with \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:var(--brand)\"\u003eclear chicken stock\u003c\/a\u003e (or mushroom hot pot broth like \u003ca href=\"\/products\/haidilao-mushroom-flavor-hot-pot-seasoning-150g\" style=\"color:var(--brand)\"\u003eHaidilao Mushroom\u003c\/a\u003e), then slide in enoki and cubes of \u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\" style=\"color:var(--brand)\"\u003esilken tofu\u003c\/a\u003e. Cook 1–2 minutes and finish with a drizzle of sesame oil.\n    \u003c\/li\u003e\n    \u003cli style=\"margin:0 0 10px;\"\u003e\n      \u003cstrong\u003eGarlic‑ginger enoki stir‑fry with soy \u0026amp; sesame\u003c\/strong\u003e — Flash‑sauté aromatics, add enoki, then 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 a few drops of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand)\"\u003esesame oil\u003c\/a\u003e. Toss for 1–2 minutes and finish with sliced \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\" style=\"color:var(--brand)\"\u003espring onion\u003c\/a\u003e.\n    \u003c\/li\u003e\n    \u003cli style=\"margin:0 0 10px;\"\u003e\n      \u003cstrong\u003eChilled sesame‑vinegar enoki salad\u003c\/strong\u003e — Blanch enoki 30–40 seconds, chill, then dress with \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand)\"\u003erice vinegar\u003c\/a\u003e, a touch of soy, a spoon of \u003ca href=\"\/products\/chuan-nan-spicy-chili-oil-326g\" style=\"color:var(--brand)\"\u003echili oil\u003c\/a\u003e, and minced \u003ca href=\"\/products\/fresh-dried-garlic-heads-approximately-500g\" style=\"color:var(--brand)\"\u003egarlic\u003c\/a\u003e. Sprinkle toasted sesame seeds.\n    \u003c\/li\u003e\n    \u003cli style=\"margin:0 0 0;\"\u003e\n      \u003cstrong\u003eHot pot favorite: enoki bundles\u003c\/strong\u003e — Dip small clusters into a simmering base like \u003ca href=\"\/products\/haidilao-spicy-hot-pot-soup-base-500g\" style=\"color:var(--brand)\"\u003eHaidilao Spicy\u003c\/a\u003e for 30–60 seconds. Pair with \u003ca href=\"\/products\/beifang-sliced-beef-rolls-225g\" style=\"color:var(--brand)\"\u003ebeef rolls\u003c\/a\u003e and soak up broth with \u003ca href=\"\/products\/ever-green-fried-tofu-puffs-200g\" style=\"color:var(--brand)\"\u003etofu puffs\u003c\/a\u003e.\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:15px;\"\u003e\n    \u003cli\u003eTrim 1–2 cm from the root base; separate into small clusters.\u003c\/li\u003e\n    \u003cli\u003eRinse briefly and pat dry to avoid waterlogging.\u003c\/li\u003e\n    \u003cli\u003eCook quickly — 1–2 minutes is enough to keep a tender crunch.\u003c\/li\u003e\n    \u003cli\u003eFor stir‑fries or noodles, add enoki at the end to prevent overcooking.\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:15px;\"\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" style=\"color:var(--brand)\"\u003eKikkoman All‑Purpose Soy Sauce\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand)\"\u003eHengshun White Rice Vinegar 500ml\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand)\"\u003eLee Kum Kee Pure Sesame Oil 207ml\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/fresh-ever-green-smooth-tofu-approximately-300g\" style=\"color:var(--brand)\"\u003eEver Green Silken Tofu, 300g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\" style=\"color:var(--brand)\"\u003eChunsi Jiangxi Rice Vermicelli 300g\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;\"\u003e\n  \u003ch3 style=\"margin:0;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n  \u003ca href=\"\/collections\/order-mushrooms-beans-online-next-day-delivery-in-sydney\" style=\"color:var(--brand);font-weight:700;\"\u003eBrowse all mushrooms \u0026amp; beans →\u003c\/a\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #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\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n","brand":"Chois","offers":[{"title":"Default Title","offer_id":48632367022367,"sku":"A0735745754153","price":2.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/2_fd416b11-4a20-4144-9d7e-55880ff09cbf.jpg?v=1745982862"},{"product_id":"chois-snow-white-mushrooms-1-pack","title":"Chois Snow White Mushrooms - 1 Pack","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px 8px 20px;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:20px;\"\u003e\n  \u003ch1 style=\"margin:0 0 6px;font-size:24px;line-height:1.25;\"\u003eChois Snow White Mushrooms - 1 Pack\u003c\/h1\u003e\n  \u003cp style=\"margin:6px 0 0;font-size:14px;color:#64748b;\"\u003ePristine, tender caps with a mild, nutty sweetness—ready for quick sautés, soups, and stir‑fries.\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;line-height:1.6;\"\u003e\n    \u003cli\u003eClean, delicate flavor that takes on sauces beautifully without overpowering your dish.\u003c\/li\u003e\n    \u003cli\u003eFirm, springy bite that stays tender in stir‑fries, broths, and noodle bowls.\u003c\/li\u003e\n    \u003cli\u003eCooks fast—perfect for busy weeknights and last‑minute sides.\u003c\/li\u003e\n    \u003cli\u003eConsistent Chois quality for reliable texture and freshness every time.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eHow to enjoy\u003c\/h3\u003e\n  \u003col style=\"margin:0 0 0 18px;line-height:1.7;\"\u003e\n    \u003cli style=\"margin:0 0 10px;\"\u003e\n      \u003cstrong\u003eGarlic‑ginger stir‑fry with oyster sauce\u003c\/strong\u003e — Sear mushrooms in a hot pan, add minced garlic and ginger, then glaze with a spoon of \u003ca style=\"color:var(--brand);\" href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eHaitian Premium Oyster Sauce\u003c\/a\u003e. Try with \u003ca style=\"color:var(--brand);\" href=\"\/products\/peeled-garlic-cloves-250g\"\u003ePeeled Garlic Cloves\u003c\/a\u003e and fresh \u003ca style=\"color:var(--brand);\" href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003eGinger 500g\u003c\/a\u003e. Ready in about 2–4 minutes once sizzling.\n    \u003c\/li\u003e\n    \u003cli style=\"margin:0 0 10px;\"\u003e\n      \u003cstrong\u003eBroth-based tofu \u0026amp; rice vermicelli soup\u003c\/strong\u003e\n      \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      — Simmer mushrooms in light chicken stock like \u003ca style=\"color:var(--brand);\" href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003eBull Head Clear Chicken Broth\u003c\/a\u003e, add cubes of \u003ca style=\"color:var(--brand);\" href=\"\/products\/ever-green-fresh-regular-tofu-900g\"\u003eEver Green Fresh Regular Tofu\u003c\/a\u003e and a nest of \u003ca style=\"color:var(--brand);\" href=\"\/products\/chunsi-jiangxi-rice-noodles-300g\"\u003eChunsi Jiangxi Rice Vermicelli 300g\u003c\/a\u003e. Finish with sliced \u003ca style=\"color:var(--brand);\" href=\"\/products\/fresh-bundle-of-spring-onions\"\u003eShallot Bunch\u003c\/a\u003e.\n    \u003c\/li\u003e\n    \u003cli style=\"margin:0 0 10px;\"\u003e\n      \u003cstrong\u003eMushroom hot pot add‑in\u003c\/strong\u003e — Drop into a bubbling pot of \u003ca style=\"color:var(--brand);\" href=\"\/products\/haidilao-mushroom-flavor-hot-pot-seasoning-150g\"\u003eHaidilao Mushroom Hot Pot Seasoning\u003c\/a\u003e and swish 1–2 minutes. Pair with thin \u003ca style=\"color:var(--brand);\" href=\"\/products\/beifang-sliced-beef-rolls-225g\"\u003eBeifang Sliced Beef Rolls\u003c\/a\u003e and dip in \u003ca style=\"color:var(--brand);\" href=\"\/products\/dong-lai-shun-hot-pot-dipping-sauce-savory-flavor-125g\"\u003eDong Lai Shun Savory Dipping Sauce\u003c\/a\u003e.\n    \u003c\/li\u003e\n    \u003cli style=\"margin:0 0 10px;\"\u003e\n      \u003cstrong\u003eSesame–black vinegar roasted mushrooms\u003c\/strong\u003e — Toss with a little oil, roast hot until edges brown (8–12 minutes), then dress with \u003ca style=\"color:var(--brand);\" href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eLee Kum Kee Pure Sesame Oil\u003c\/a\u003e and a splash of \u003ca style=\"color:var(--brand);\" href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\"\u003eHengshun Zhenjiang Aromatic Vinegar\u003c\/a\u003e. Optional heat: \u003ca style=\"color:var(--brand);\" href=\"\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\"\u003eChuanwazi Crispy Chili Oil\u003c\/a\u003e.\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003ePrep Tips\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;line-height:1.6;\"\u003e\n    \u003cli\u003eBrush or quickly rinse and pat dry—avoid soaking so they brown better.\u003c\/li\u003e\n    \u003cli\u003eTrim any dry stem ends; keep caps whole or slice thick for best texture.\u003c\/li\u003e\n    \u003cli\u003eUse a hot pan with space between pieces; cook until they release moisture and edges turn golden.\u003c\/li\u003e\n    \u003cli\u003eSeason near the end to help prevent excess moisture early on.\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:8px 0 0;line-height:1.8;\"\u003e\n    Savory staples: \u003ca style=\"color:var(--brand);\" href=\"\/products\/kikkoman-all-purpose-soy-sauce-1-6l\"\u003eKikkoman Soy Sauce\u003c\/a\u003e, \u003ca style=\"color:var(--brand);\" href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eHaitian Oyster Sauce\u003c\/a\u003e, \u003ca style=\"color:var(--brand);\" href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eSesame Oil\u003c\/a\u003e, \u003ca style=\"color:var(--brand);\" href=\"\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\"\u003eZhenjiang Vinegar\u003c\/a\u003e.\u003cbr\u003e\n    Aromatics: \u003ca style=\"color:var(--brand);\" href=\"\/products\/peeled-garlic-cloves-250g\"\u003eGarlic\u003c\/a\u003e, \u003ca style=\"color:var(--brand);\" href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003eGinger\u003c\/a\u003e, \u003ca style=\"color:var(--brand);\" href=\"\/products\/fresh-bundle-of-spring-onions\"\u003eShallots\u003c\/a\u003e.\u003cbr\u003e\n    Add‑ins: \u003ca style=\"color:var(--brand);\" href=\"\/products\/ever-green-fresh-regular-tofu-900g\"\u003eFresh Tofu\u003c\/a\u003e, \u003ca style=\"color:var(--brand);\" href=\"\/products\/daisho-hakata-ramen-2-servings-188g\"\u003eDaisho Hakata Ramen\u003c\/a\u003e, \u003ca style=\"color:var(--brand);\" href=\"\/products\/angus-prime-shredded-beef-500g\"\u003eAngus Prime Beef Strip 500g\u003c\/a\u003e, \u003ca style=\"color:var(--brand);\" 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 8px;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 style=\"color:var(--brand);\" href=\"\/products\/chois-shiitake-mushrooms-300g\"\u003eChois Shiitake Mushrooms - 300g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca style=\"color:var(--brand);\" href=\"\/products\/chois-oyster-mushrooms-400g\"\u003eChois Oyster Mushrooms - 400g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca style=\"color:var(--brand);\" href=\"\/products\/chois-enoki-mushrooms-300g\"\u003eEnoki Enoki Mushrooms - 300g\u003c\/a\u003e\u003c\/li\u003e\n  \u003c\/ul\u003e\n  \u003cdiv style=\"margin-top:10px;\"\u003e\u003ca style=\"color:var(--brand);font-weight:700;\" href=\"\/collections\/order-mushrooms-beans-online-next-day-delivery-in-sydney\"\u003eBrowse all Mushrooms \u0026amp; Beans →\u003c\/a\u003e\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":48632375836959,"sku":"A0735745754023","price":2.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/7a70159117af95766b01ad2a7d7f6496.jpg?v=1724142856"},{"product_id":"fresh-local-napa-cabbage-1-piece","title":"Wombok (Napa Cabbage) — 1 Piece","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 style=\"--brand: #DB3A35; max-width: 860px; margin: 0 auto; font-family: system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif; color: #334155; line-height: 1.6;\" id=\"umall-desc\"\u003e\n\u003csection style=\"border: 1px solid #e2e8f0; background: #fff; border-radius: 16px; padding: 20px; margin-top: 16px;\"\u003e\n\u003cdiv style=\"display: flex; gap: 16px; align-items: flex-start; flex-wrap: wrap;\"\u003e\n\u003cimg style=\"width: 140px; height: auto; border-radius: 12px; border: 1px solid #e2e8f0;\" alt=\"Fresh Local Napa Cabbage\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/6.webp?v=1725844913\"\u003e\n\u003cdiv\u003e\n\u003ch1 style=\"margin: 0 0 6px; font-size: 26px; line-height: 1.2;\"\u003eWombok (Napa Cabbage) — 1 Piece\u003c\/h1\u003e\n\u003cp style=\"margin: 4px 0 10px; color: #64748b; font-size: 14px;\"\u003eAlso known as Napa Cabbage\/Chinese cabbage\u003c\/p\u003e\n\u003cp style=\"margin: 0; color: #475569; font-size: 15px;\"\u003eSweet, tender leaves with crisp, juicy ribs — a versatile staple for wombok salad (sesame dressing), dumpling filling, stir-fries, soups and hot pot. Quick to cook with next-day Sydney delivery.\u003cbr\u003e\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 8px; font-size: 18px; font-weight: bold;\"\u003eWhy you’ll love it\u003c\/h3\u003e\n\u003cul style=\"margin: 8px 0 0 18px;\"\u003e\n\u003cli\u003eMildly sweet flavor that takes on sauces and aromatics beautifully.\u003c\/li\u003e\n\u003cli\u003eTwo textures in one: crisp stems and silky leaves for balanced bites.\u003c\/li\u003e\n\u003cli\u003eQuick‑cooking — perfect for wombok salad, weeknight stir‑fries, hotpot, noodles or slaw.\u003c\/li\u003e\n\u003cli\u003eFamily‑friendly and versatile across Chinese, Korean and Japanese dishes.\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;\"\u003eHow to enjoy\u003c\/h3\u003e\n\u003col style=\"margin: 8px 0 0 18px;\"\u003e\n\u003cli style=\"margin-bottom: 10px;\"\u003e\n\u003cstrong\u003eGarlic‑ginger wok‑tossed wombok with oyster sauce\u003c\/strong\u003e — Sear stems first, then add leaves with \u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003ePeeled Garlic Cloves\u003c\/a\u003e, \u003ca href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003eGinger\u003c\/a\u003e and a splash of \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eHaitian Premium Oyster Sauce 700g\u003c\/a\u003e. Toss on high heat for 2–4 minutes until just tender.\u003c\/li\u003e\n\u003cli style=\"margin-bottom: 10px;\"\u003e\n\u003cstrong\u003eTomato hot pot with wombok, enoki and tofu puffs\u003c\/strong\u003e — Simmer \u003ca href=\"\/products\/haidilao-tomato-hot-pot-base-200g\"\u003eHaidilao Tomato Hot Pot Base\u003c\/a\u003e, then add cabbage chunks, \u003ca href=\"\/products\/chois-enoki-mushrooms-300g\"\u003eEnoki Mushrooms\u003c\/a\u003e and \u003ca href=\"\/products\/fresh-ever-green-tofu-puffs-approximately-150g\"\u003eEver Green Fried Tofu Puffs 150g\u003c\/a\u003e. Cook until stems turn translucent and leaves are silky.\u003c\/li\u003e\n\u003cli style=\"margin-bottom: 10px;\"\u003e\n\u003cstrong\u003eCrisp sesame wombok slaw\u003c\/strong\u003e\u003cspan style=\"display: inline-flex; align-items: center; border: 1px solid rgba(219,58,53,.2); color: var(--brand); background: rgba(219,58,53,.08); border-radius: 999px; padding: 2px 8px; font-size: 12px; font-weight: 600; margin-left: 8px;\"\u003eLow‑calorie\u003c\/span\u003e — Thinly shred cabbage and toss with \u003ca href=\"\/products\/hengshun-white-rice-vinegar-500ml\"\u003eHengshun White Rice Vinegar\u003c\/a\u003e, a drizzle of \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eSesame Oil\u003c\/a\u003e and julienned \u003ca href=\"\/products\/fresh-carrots-approximately-1kg\"\u003eCarrots\u003c\/a\u003e. Chill 5–10 minutes for extra crunch.\u003c\/li\u003e\n\u003cli style=\"margin-bottom: 10px;\"\u003e\n\u003cstrong\u003eRice vermicelli stir‑fry with wombok and tofu\u003c\/strong\u003e — Soften \u003ca href=\"\/products\/chunsi-jiangxi-rice-vermicelli-300g\"\u003eChunsi Jiangxi Rice Vermicelli\u003c\/a\u003e, then toss with sliced cabbage, cubes of \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eEver Green Classic Tofu\u003c\/a\u003e and a splash of \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003eLight Soy Sauce\u003c\/a\u003e. Keep it smoky and quick, 3–5 minutes.\u003c\/li\u003e\n\u003c\/ol\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;\"\u003ePrep Tips\u003c\/h3\u003e\n\u003cul style=\"margin: 8px 0 0 18px;\"\u003e\n\u003cli\u003eRinse thoroughly between leaves to remove any grit; shake dry.\u003c\/li\u003e\n\u003cli\u003eSeparate stems and leaves; slice stems thicker and leaves thinner for even cooking.\u003c\/li\u003e\n\u003cli\u003eStir‑fry stems first for 1–2 minutes, then add leaves and finish quickly.\u003c\/li\u003e\n\u003cli\u003eFor slaws, lightly salt and rest 5–10 minutes, then dress just before serving.\u003c\/li\u003e\n\u003cli\u003eSeason toward the end to keep the cabbage crisp and vibrant.\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;\"\u003ePairs well\u003c\/h3\u003e\n\u003cul style=\"margin: 8px 0 0 18px;\"\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/peeled-garlic-cloves-250g\"\u003ePeeled Garlic Cloves\u003c\/a\u003e and \u003ca href=\"\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003eFresh Ginger\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eSesame Oil\u003c\/a\u003e or \u003ca href=\"\/products\/haitian-premium-light-soy-sauce-500ml\"\u003eLight Soy Sauce\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003ePremium Oyster Sauce\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/chois-oyster-mushrooms-400g\"\u003eOyster Mushrooms\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-ever-green-aged-tofu-approximately-900g\"\u003eFirm Tofu\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/chunsi-strong-ramen-noodles-1000g\"\u003ePull Noodles\u003c\/a\u003e for quick stir‑fries\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/haidilao-tomato-hot-pot-base-200g\"\u003eTomato Hot Pot Base\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\u003cul style=\"margin: 8px 0 12px 18px;\"\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-cabbage-half-piece\"\u003eFresh Cabbage - Half Piece\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-pointed-cabbage-1-pack\"\u003ePointed Cabbage - 1 Pack\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/purple-cabbage-half-piece\"\u003ePurple Cabbage - Half Piece\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/fresh-bundle-of-jiangmen-white-radishes\"\u003eJiangmen White (Chinese Cabbage), 1 Bundle\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp style=\"margin: 0;\"\u003e\u003ca href=\"\/collections\/cabbage\"\u003eBrowse all cabbages\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 style=\"color: #db3a35; text-decoration: underline;\" href=\"\/pages\/return-refund-policy\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin: 8px 0 0; color: #334155; font-size: 14px;\"\u003eDetails: \u003ca style=\"color: #db3a35; text-decoration: underline;\" href=\"\/pages\/delivery-information\"\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 style=\"color: #db3a35; text-decoration: underline;\" href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; border: 1px solid #e2e8f0;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px; border-right: 1px solid #e2e8f0; border-top: 1px solid #e2e8f0;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; border-top: 1px solid #e2e8f0;\"\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 #e2e8f0;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; border-top: 1px solid #e2e8f0;\"\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 #e2e8f0; border-top: 1px solid #e2e8f0;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; border-top: 1px solid #e2e8f0;\"\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":48632387928351,"sku":"9202403081450","price":4.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/6.webp?v=1725844913"},{"product_id":"pdc-sake-lees-face-mask-10-sheets","title":"PDC Sake Lees Face Mask - 10 Sheets","description":"Experience the nourishing benefits of PDC Sake Lees Face Mask, containing 10 sheets per box.\u003cbr\u003eEnriched with sake lees extract, this mask provides deep hydration and brightening effects for your skin.\u003cbr\u003eIt helps to improve skin texture, enhance skin tone, and reduce the appearance of dark spots.\u003cbr\u003ePerfect for a relaxing skincare routine, this mask leaves your skin feeling soft, supple, and radiant.\u003cbr\u003eIndulge in the luxurious care of PDC Sake Lees Face Mask and reveal a more luminous complexion.","brand":"Pdc","offers":[{"title":"Default Title","offer_id":48648201339167,"sku":"A4961989409115","price":16.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_9939bbd6-07a8-4a01-a640-ab5c9b65585f.jpg?v=1716289577"},{"product_id":"kose-clear-turn-anti-dryness-fine-line-face-masks-50-sheets","title":"Kose Clear Turn Anti-Dryness Fine Line Face Masks - 50 Sheets","description":"Experience the ultimate skincare solution with Kose Clear Turn Anti-Dryness Fine Line Face Masks, available in a convenient pack of 50 sheets.\u003cbr\u003eThese masks are designed to combat dryness and fine lines around the eyes and mouth, providing deep hydration and nourishment.\u003cbr\u003eInfused with collagen, hyaluronic acid, and other moisturizing ingredients, they penetrate deeply into the skin to enhance elasticity and smoothness.\u003cbr\u003eThe high-quality cotton sheets fit snugly to the contours of your face, ensuring maximum absorption of the beauty essence.\u003cbr\u003ePerfect for daily use, these masks help maintain a youthful and radiant complexion.\u003cbr\u003eEnjoy the luxurious and effective skincare experience with Kose Clear Turn Anti-Dryness Fine Line Face Masks.","brand":"Kose","offers":[{"title":"Default Title","offer_id":48648370979103,"sku":"A4971710382884","price":21.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/img_01_4c85d9c0-31ce-4a31-86b2-2c1054b9df3d.jpg?v=1770198519"},{"product_id":"unny-gentle-cleansing-water-500ml","title":"Unny Gentle Cleansing Water - 500ml","description":"Experience the soothing and effective cleansing power of Unny Gentle Cleansing Water, available in a generous 500ml bottle.\u003cbr\u003eFormulated with plant extracts, this cleansing water gently removes makeup and impurities without causing redness or irritation.\u003cbr\u003eFeaturing micellar technology, it effectively dissolves and encapsulates makeup and dirt, leaving your skin clean and refreshed.\u003cbr\u003eEnriched with hydrating ingredients like silver ear mushroom extract and glycerin, it helps maintain skin moisture and prevents dryness.\u003cbr\u003ePerfect for all skin types, Unny Gentle Cleansing Water ensures a comfortable and thorough cleanse, making it an essential part of your skincare routine.","brand":"Unny","offers":[{"title":"Default Title","offer_id":48648416919839,"sku":"A6974108365498","price":12.29,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/img_01_19b0bf6e-3642-47b9-8fc1-f929564e804f.jpg?v=1770198596"},{"product_id":"li-ziqi-luosifen-335g","title":"Li Ziqi Luosifen - 335g","description":"Experience the authentic taste of Li Ziqi Luosifen, a traditional Chinese snail rice noodle dish, in a convenient 335g package.\u003cbr\u003eKnown for its unique and pungent flavor, this dish features a rich broth made from river snails, combined with rice noodles, pickled bamboo shoots, dried tofu, peanuts, and various spices.\u003cbr\u003eEach ingredient is carefully selected to ensure the highest quality and authentic taste.\u003cbr\u003ePerfect for a quick and satisfying meal, Li Ziqi Luosifen brings the flavors of China to your table.\u003cbr\u003eEnjoy the bold and savory taste of this beloved dish, crafted by the renowned brand Li Ziqi.","brand":"Li Ziqi","offers":[{"title":"Default Title","offer_id":48648925118751,"sku":"A6971558610017","price":3.29,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_42208590-ee96-497b-b444-5821e550aa77.jpg?v=1736928975"},{"product_id":"weilih-spicy-beef-flavour-instant-noodles-85g-x-5-packs","title":"Weilih Spicy Beef Flavour Instant Noodles - 85g x 5 Packs","description":"Experience the bold and savory taste of Weilih Spicy Beef Flavour Instant Noodles. Each pack contains 5 individual servings, each weighing 85g, for a total of 425g.\u003cbr\u003eThese noodles are infused with a rich beef flavor and a spicy kick, perfect for a quick and satisfying meal.\u003cbr\u003eSimply cook the noodles, add the included seasoning packets, and enjoy a delicious bowl of spicy beef noodles in minutes.\u003cbr\u003eIdeal for a convenient lunch, dinner, or snack, Weilih Spicy Beef Flavour Instant Noodles bring the taste of authentic Asian cuisine to your table.","brand":"Weilih","offers":[{"title":"Default Title","offer_id":48649143976223,"sku":"A4710199110195","price":4.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_b3840096-661d-4f9b-861a-b3881522d905.jpg?v=1716297390"},{"product_id":"chahua-wavy-sponge-scourer-pack-of-5","title":"Chahua Wavy Sponge Scourer - Pack of 5","description":"Introducing the Chahua Wavy Sponge Scourer, a pack of 5 high-quality cleaning sponges designed to make your cleaning tasks easier and more efficient.\u003cbr\u003eEach sponge features a unique wavy design that enhances scrubbing power while being gentle on surfaces.\u003cbr\u003ePerfect for cleaning dishes, countertops, and other household surfaces, these sponges are durable and long-lasting.\u003cbr\u003eThe soft sponge material effectively absorbs water and soap, providing a thorough clean with minimal effort.\u003cbr\u003eUpgrade your cleaning routine with the Chahua Wavy Sponge Scourer, a reliable choice for any household.","brand":"Chahua","offers":[{"title":"Default Title","offer_id":48666102104351,"sku":"A6921489038053","price":2.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_c963cea5-e3b3-4f2d-82ef-d70543e76987.jpg?v=1716464845"},{"product_id":"chahua-medium-food-storage-bags-30-pieces","title":"Chahua Medium Food Storage Bags - 30 Pieces","description":"Keep your food fresh and organized with Chahua Medium Food Storage Bags. This pack includes 30 pieces of medium-sized, stand-up design bags, perfect for storing fruits, vegetables, snacks, and more.\u003cbr\u003eFeaturing a double zipper seal, these bags ensure an airtight closure to maintain freshness and prevent leaks.\u003cbr\u003eMade from high-quality, BPA-free materials, they are safe for food storage and reusable.\u003cbr\u003eThe transparent design allows for easy identification of contents, while the stand-up feature provides convenient storage and access.\u003cbr\u003eIdeal for home, office, or travel use, Chahua Food Storage Bags offer a practical and reliable solution for all your food storage needs.","brand":"Chahua","offers":[{"title":"Default Title","offer_id":48666108002591,"sku":"A6921489052042","price":3.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_6620ecd3-0e5f-45cf-95ee-a63d916a286f.jpg?v=1716464965"},{"product_id":"stemilt-beetle-red-cherries-500g","title":"Stemilt Beetle Red Cherries - 500g","description":"Enjoy the rich and sweet flavor of Stemilt Beetle Red Cherries, imported from the USA and packed in a convenient 500g package.\u003cbr\u003eThese cherries are known for their vibrant red color and juicy, firm texture, making them a delightful treat for any occasion.\u003cbr\u003eCarefully selected and packed to ensure the highest quality and freshness.\u003cbr\u003ePerfect for snacking, adding to desserts, or incorporating into your favorite recipes.\u003cbr\u003eExperience the premium quality and exceptional taste of Stemilt Beetle Red Cherries.","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48800951238943,"sku":"A0735745755297","price":15.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/f4bff5fa9ff06cfc0588537a1e367a5aLI9cvORWBw78KTzX7XcmO3Ur4LQY8BAH.jpg?v=1718261466"},{"product_id":"chois-fresh-mini-king-oyster-mushrooms-250g","title":"Chois Fresh Mini King Oyster Mushrooms - 250g","description":"\u003cdiv id=\"umall-desc\" style=\"max-width:860px;margin:0 auto;padding:6px 0;--brand:#DB3A35;color:#0f172a;font-family:system-ui,-apple-system,Segoe UI,Roboto,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:20px;\"\u003e\n  \u003cdiv style=\"display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;\"\u003e\n    \u003cdiv style=\"flex:1 1 280px;min-width:260px;\"\u003e\n      \u003ch1 style=\"margin:0 0 6px;font-size:24px;font-weight:800;line-height:1.2;\"\u003eChois Fresh Mini King Oyster Mushrooms - 250g\u003c\/h1\u003e\n      \u003cp style=\"margin:0;color:#64748b;font-size:14px;\"\u003eAlso known as King Trumpet (Eringi)\u003c\/p\u003e\n      \u003cp style=\"margin:10px 0 0;color:#334155;font-size:14px;\"\u003ePetite, meaty mushrooms with buttery stems and delicate caps — perfect for quick searing, soups, and skewers.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"flex:0 0 220px;max-width:220px;\"\u003e\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/780b0445faff2014c16a2f4a4ea6b4c0.jpg?v=1724144036\" alt=\"Chois Fresh Mini King Oyster Mushrooms\" style=\"width:100%;height:auto;border-radius:12px;border:1px solid #e2e8f0;\"\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;\"\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\u003eRich umami and a tender, meaty bite that browns beautifully.\u003c\/li\u003e\n    \u003cli\u003eMini size cooks fast and evenly — ideal for weeknights.\u003c\/li\u003e\n    \u003cli\u003eHolds shape in soups, hotpots, and stir-fries without going soggy.\u003c\/li\u003e\n    \u003cli\u003eVersatile: slice into “scallop” coins, quarter lengthwise, or skewer whole.\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;\"\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:12px;background:#fff;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eGarlic–oyster stir-fry coins\u003c\/h4\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eSlice into 1 cm coins and sear over high heat until golden (2–4 minutes), then glaze with \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e and a splash of water. Finish with minced \u003ca href=\"\/products\/fresh-dried-garlic-heads-approximately-500g\"\u003egarlic\u003c\/a\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:12px;background:#fff;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eClear broth tofu \u0026amp; mushroom 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 minis in \u003ca href=\"\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003eclear chicken broth\u003c\/a\u003e for 3–4 minutes with cubes of \u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eclassic tofu\u003c\/a\u003e. Season lightly and serve hot.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:12px;background:#fff;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eSoy-kissed noodle stir-fry\u003c\/h4\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eWok-sear mushrooms, then toss with cooked \u003ca href=\"\/products\/fresh-evergreen-yangchun-noodles-500g\"\u003eYangchun noodles\u003c\/a\u003e, a splash of \u003ca href=\"\/products\/haday-golden-label-light-soy-sauce-1-28l\"\u003elight soy sauce\u003c\/a\u003e, and a pinch of sugar. Optional chili to taste.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:12px;background:#fff;\"\u003e\n      \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eCumin‑sesame grilled minis\u003c\/h4\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eToss whole minis with \u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003esesame oil\u003c\/a\u003e and \u003ca href=\"\/products\/bakerdream-cumin-barbecue-seasoning-130g\"\u003ecumin seasoning\u003c\/a\u003e. Roast or air‑fry until edges char (8–12 minutes). Serve with a dab of \u003ca href=\"\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\"\u003echili crisp\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;line-height:1.6;\"\u003e\n    \u003cli\u003eTrim the tough base; wipe clean — avoid soaking to keep texture firm.\u003c\/li\u003e\n    \u003cli\u003eFor “scallop” style, cross‑hatch the cut faces so sauces cling and caramelize.\u003c\/li\u003e\n    \u003cli\u003eSear over medium‑high heat with space in the pan for deep browning.\u003c\/li\u003e\n    \u003cli\u003eSeason towards the end; mushrooms concentrate flavor as they cook.\u003c\/li\u003e\n    \u003cli\u003eFor soup\/hotpot, add in the last 2–4 minutes to keep them springy.\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;line-height:1.6;\"\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/haday-golden-label-light-soy-sauce-1-28l\"\u003eLight soy sauce\u003c\/a\u003e or \u003ca href=\"\/products\/haitian-premium-oyster-sauce-700g\"\u003eoyster sauce\u003c\/a\u003e\n\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eSesame oil\u003c\/a\u003e, \u003ca href=\"\/products\/fresh-bundle-of-spring-onions\"\u003espring onions\u003c\/a\u003e \u0026amp; \u003ca href=\"\/products\/fresh-dried-garlic-heads-approximately-500g\"\u003egarlic\u003c\/a\u003e\n\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/products\/chunsi-jiangxi-rice-noodles-1000g\"\u003eRice noodles\u003c\/a\u003e or steamed rice\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eTofu (firm\/classic)\u003c\/a\u003e\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\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  \u003ch3 style=\"margin:0;font-size:18px;font-weight:700;\"\u003eMore in this category\u003c\/h3\u003e\n  \u003ca href=\"\/collections\/order-mushrooms-beans-online-next-day-delivery-in-sydney\" style=\"color:#DB3A35;font-weight:700;\"\u003eBrowse more mushrooms \u0026amp; beans\u003c\/a\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery \u0026amp; Timing\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eYou can \u003cstrong\u003eTrack\u003c\/strong\u003e the courier's location in \u003cstrong\u003eReal‑Time\u003c\/strong\u003e online! Get your order as soon as the \u003cstrong\u003eNext Day\u003c\/strong\u003e (for most areas in Sydney).\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth style=\"text-align:left;padding:10px;border-right:1px solid #e5e7eb;background:#f8fafc;\"\u003eOrder Time\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eArrival Time\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;\"\u003eToday\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNext Day (2 options):\u003c\/strong\u003e\u003cul style=\"margin:6px 0 0 18px;\"\u003e\n\u003cli\u003e11:30AM – 06:30PM\u003c\/li\u003e\n\u003cli\u003e05:00PM – 11:00PM\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"color:#a9a9a9;font-size:12px;margin:10px 0 0;\"\u003e* Canceling after the cutoff may incur fees. \u003ca href=\"\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eClick here\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eDetails: \u003ca href=\"\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDelivery Information\u003c\/a\u003e.\u003c\/p\u003e\u003c\/section\u003e\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eDelivery Fees\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003e* A flat \u003cstrong\u003e$2 service \u0026amp; packaging fee\u003c\/strong\u003e will be added at checkout — \u003ca href=\"https:\/\/www.umall.com.au\/policies\/shipping-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003esee details\u003c\/a\u003e.\u003c\/p\u003e\n\u003ctable style=\"width:100%;border-collapse:collapse;border:1px solid #e5e7eb;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$69.00 and up\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eFree\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$20 – $68.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$4.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding:10px;border-right:1px solid #e5e7eb;border-top:1px solid #e5e7eb;\"\u003e$0.01 – $19.99\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e$7.99 \u003cspan style=\"color:#999;font-size:12px\"\u003e(was $10)\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\n\/* DESC ENHANCER JS v1 *\/\n(function(){\n  const root = document.getElementById('umall-desc');\n  if(!root) return;\n\n  const handleFromHref = (href)=\u003e{\n    try{ const u = new URL(href, location.origin); const parts=u.pathname.split('\/').filter(Boolean); const i=parts.findIndex(p=\u003ep==='products'); if(i\u003e=0\u0026\u0026parts[i+1]) return parts[i+1]; }catch(e){}\n    return null;\n  };\n  const money = (cents)=\u003e{ if(window.Shopify \u0026\u0026 Shopify.formatMoney) return Shopify.formatMoney(cents, \"A${{amount}}\"); return typeof cents==='number' ? 'A$'+(cents\/100).toFixed(2) : ''; };\n  const buildProdCard = (handle)=\u003e{ const a=document.createElement('a'); a.className='um-card'; a.href='\/products\/'+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e\n\n\n\n\n\n\n\n\n","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48800978403615,"sku":"A0735745754085","price":3.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/780b0445faff2014c16a2f4a4ea6b4c0.jpg?v=1724144036"},{"product_id":"borrowdale-free-range-pork-marrow-bones-1kg","title":"Borrowdale Free Range Pork Marrow Bones - 1kg","description":"Experience the rich flavor and nutritional benefits of Borrowdale Free Range Pork Marrow Bones, available in a convenient 1kg package.\u003cbr\u003eSourced from free-range pigs, these marrow bones are perfect for making hearty broths, soups, and stews.\u003cbr\u003eEach bone is carefully selected and frozen to preserve its freshness and quality.\u003cbr\u003eIdeal for adding depth and richness to your culinary creations, Borrowdale Pork Marrow Bones are a must-have for any kitchen.\u003cbr\u003eEnjoy the premium quality and taste of Borrowdale's free-range pork, ensuring a wholesome and delicious addition to your meals.","brand":"Borrowdale","offers":[{"title":"Default Title","offer_id":48801245167903,"sku":"A735850274911","price":6.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_9d7d2b2f-f0e6-4a47-beb5-ef900b2d3930.jpg?v=1736928959"},{"product_id":"cici-lemon-oolong-fruit-tea-300g","title":"Cici Lemon Oolong Fruit Tea - 300g","description":"Enjoy the refreshing taste of Cici Lemon Oolong Fruit Tea, a delightful blend of lemon and oolong tea flavors.\u003cbr\u003eThis 300g pack offers a low-sugar, zero-fat beverage option that is perfect for a relaxing break at home.\u003cbr\u003eInfused with real fruit pieces, this tea provides a burst of citrusy goodness with every sip.\u003cbr\u003eConveniently packaged for easy consumption, Cici Lemon Oolong Fruit Tea is a great choice for tea lovers seeking a healthy and tasty drink.\u003cbr\u003eExperience the harmonious combination of lemon and oolong tea in this delicious and invigorating beverage.","brand":"Xizhilang","offers":[{"title":"Default Title","offer_id":48804416717087,"sku":"A6926475210604","price":1.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_ebe66510-2298-4ce0-9750-73b5aa77c865.jpg?v=1718330270"},{"product_id":"ashiura-horse-oil-exfoliating-beauty-foot-mask-1-pair-30ml","title":"Ashiura Horse Oil Exfoliating Beauty Foot Mask - 1 Pair, 30ml","description":"Experience the rejuvenating effects of the Ashiura Horse Oil Exfoliating Beauty Foot Mask. This foot mask is designed to gently exfoliate and moisturize your feet, leaving them soft and smooth.\u003cbr\u003eInfused with horse oil, it helps to remove dead skin cells and calluses, revealing fresh and healthy skin.\u003cbr\u003eEach pack contains 1 pair of foot masks with 30ml of nourishing essence.\u003cbr\u003eSimply wear the mask for 40 minutes and let the powerful ingredients work their magic.\u003cbr\u003ePerfect for a spa-like treatment at home, the Ashiura Horse Oil Exfoliating Beauty Foot Mask is a must-have for beautiful, well-cared-for feet.","brand":"Ashiura","offers":[{"title":"Default Title","offer_id":48806244417823,"sku":"A4540474777900","price":8.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/img_01_ce6bdaf7-23cc-44a7-9c17-59d2a4256703.jpg?v=1770197391"},{"product_id":"nokchawon-honey-lemon-tea-480g","title":"Nokchawon Honey Lemon Tea - 480g","description":"Enjoy the refreshing and soothing taste of Nokchawon Honey Lemon Tea, packed in a convenient 480g jar.\u003cbr\u003eThis delightful blend combines the natural sweetness of honey with the tangy zest of lemon, creating a perfect balance of flavors.\u003cbr\u003eIdeal for both hot and cold beverages, this honey lemon tea is a versatile addition to your pantry.\u003cbr\u003eMade with high-quality ingredients, it offers a comforting and revitalizing drink for any time of the day.\u003cbr\u003eExperience the premium quality and delicious taste of Nokchawon Honey Lemon Tea, a must-have for tea enthusiasts.","brand":"Nokchawon","offers":[{"title":"Default Title","offer_id":48806621806879,"sku":"A8801767922336","price":6.79,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_61ac827b-cda2-445d-acf9-f4177385f0be.jpg?v=1718332417"},{"product_id":"obento-japanese-panko-bread-crumbs-200g","title":"Obento Japanese Panko Bread Crumbs - 200g","description":"Enhance your dishes with the light and crispy texture of Obento Japanese Panko Bread Crumbs. This 200g pack is perfect for adding a crunchy coating to your favorite fried foods.\u003cbr\u003eMade from high-quality bread, these panko crumbs provide a delicate crunch that is ideal for tempura, tonkatsu, and other Japanese dishes.\u003cbr\u003eEasy to use and versatile, Obento Panko Bread Crumbs are a must-have in your pantry for creating delicious, restaurant-quality meals at home.\u003cbr\u003eEnjoy the authentic taste and texture of Japanese cuisine with Obento Panko Bread Crumbs.","brand":"Obento","offers":[{"title":"Default Title","offer_id":48806661161247,"sku":"9310432003212","price":1.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_e0c6e6c8-9316-4bb3-957b-ed2443642bb2.jpg?v=1718332447"},{"product_id":"hakubaku-organic-udon-noodles-270g","title":"Hakubaku Organic Udon Noodles - 270g","description":"Experience the authentic taste of Japan with Hakubaku Organic Udon Noodles, a versatile and delicious addition to your pantry.\u003cbr\u003eMade from high-quality organic ingredients, these udon noodles are perfect for stir-fry or soup dishes.\u003cbr\u003eEach pack contains 270g of noodles, divided into three convenient 90g portions.\u003cbr\u003eReady in just 10 minutes, these noodles offer a quick and easy meal solution without compromising on flavor.\u003cbr\u003eEnjoy the chewy texture and rich taste of Hakubaku Organic Udon Noodles, a must-have for any Japanese cuisine enthusiast.","brand":"Hakubaku","offers":[{"title":"Default Title","offer_id":48806667419935,"sku":"837328000005","price":3.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_e89188de-4b4a-467f-a9de-bfa32a9978b7.jpg?v=1718332452"},{"product_id":"s-b-golden-curry-japanese-curry-mix-hot-220g","title":"S\u0026B Golden Curry Japanese Curry Mix - Hot, 220g","description":"Experience the rich and flavorful taste of S\u0026amp;B Golden Curry Japanese Curry Mix in a hot variant.\u003cbr\u003eThis 220g package contains a blend of spices that create a delicious and authentic Japanese curry.\u003cbr\u003ePerfect for adding a spicy kick to your meals, this curry mix is easy to prepare and can be enjoyed with rice, vegetables, or meat.\u003cbr\u003eWith no meat contained, it offers a versatile option for various dietary preferences.\u003cbr\u003eIndulge in the bold and savory flavors of S\u0026amp;B Golden Curry, a staple in Japanese cuisine.","brand":"S\u0026B","offers":[{"title":"Default Title","offer_id":48896544899359,"sku":"A074880030723","price":4.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_2ef728f6-dda1-489c-8e6a-aaf72b44a712.jpg?v=1720006948"},{"product_id":"frozen-premium-selected-chicken-mini-drumsticks-1kg","title":"Frozen Premium Selected Chicken Mini Drumsticks - 1kg","description":"Enjoy the high-quality taste of  Frozen Premium Selected Chicken Mini Drumsticks, conveniently packed in a 1kg package.\u003cbr\u003eThese mini drumsticks are carefully selected for their premium quality and are perfect for a variety of dishes.\u003cbr\u003eFrozen to maintain freshness, they are ideal for grilling, frying, or baking.\u003cbr\u003eExperience the tender and juicy flavor of these chicken drumsticks, a great addition to any meal.\u003cbr\u003e ensures the highest standards of selection and freezing to provide you with the best quality chicken.","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48952346214687,"sku":"A0735745756867","price":6.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_7ba3e1f7-79d5-4d46-9006-793c38097ea9.jpg?v=1736928827"},{"product_id":"cara-cara-blood-oranges-0-9-1kg","title":"Cara Cara Blood Oranges - 0.9kg","description":"Enjoy the vibrant and sweet flavor of Cara Cara Blood Oranges, available in a convenient 0.9kg package.\u003cbr\u003eThese oranges are known for their deep red flesh and unique taste, offering a delightful blend of sweetness and tanginess.\u003cbr\u003ePerfect for snacking, juicing, or adding to salads and desserts, Cara Cara Blood Oranges are a versatile and nutritious choice.\u003cbr\u003eEach orange is carefully selected to ensure optimal ripeness and quality.\u003cbr\u003eExperience the refreshing and juicy goodness of Cara Cara Blood Oranges, a premium citrus fruit that adds a burst of flavor to any dish.","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48952354799903,"sku":"A0735745755693","price":3.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/9fb5673a5ee396a6243a6b9b8cae8eee6ovEYiusaDxatU1PiIgMqkCxxrdWDbtq_58eddb0e-8fba-492c-81be-d473bbfaad7d.jpg?v=1721194783"},{"product_id":"driscolls-jumbo-blueberries-125g","title":"Driscoll's Jumbo Blueberries - 125g","description":"Enjoy the plump and juicy Driscoll's Jumbo Blueberries, packed in a convenient 125g container.\u003cbr\u003eThese blueberries are known for their large size and sweet, tangy flavor, making them perfect for snacking, baking, or adding to your favorite dishes.\u003cbr\u003eEach berry is carefully selected to ensure the highest quality and freshness.\u003cbr\u003eGrown in Australia, Driscoll's blueberries are a delicious and nutritious addition to your diet.\u003cbr\u003eExperience the premium quality and delightful taste of Driscoll's Jumbo Blueberries.","brand":"Driscoll's","offers":[{"title":"Default Title","offer_id":48952359256351,"sku":"A0735745756690","price":6.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/4_477589bc-64ad-46a5-bb68-1c792ae0a3c2.jpg?v=1735370318"},{"product_id":"murcott-mandarins-1-1-1-2kg","title":"Murcott Mandarins - 1.1kg","description":"Enjoy the sweet and juicy flavor of Murcott Mandarins, available in a convenient 1.1kg package.\u003cbr\u003eThese mandarins are known for their vibrant orange color and easy-to-peel skin, making them perfect for snacking.\u003cbr\u003eEach mandarin is carefully selected to ensure optimal ripeness and quality.\u003cbr\u003eWhether enjoyed fresh, in salads, or as a refreshing addition to your favorite dishes, Murcott Mandarins offer a delightful taste experience.\u003cbr\u003eExperience the premium quality and delicious flavor of these exceptional mandarins.","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48952368169247,"sku":"A0735745756683","price":3.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/07c515adb66b2856d12ba8e0400b6984lqH7cziWJQZ9ixEtilgQmEZeu9FIubia_b98664a7-8a29-40d5-a513-60b512f7c03f.jpg?v=1721195036"},{"product_id":"ora2-me-muscat-mint-mouth-spray-6ml","title":"Ora2 Me Muscat Mint Mouth Spray - 6ml","description":"Stay fresh on the go with Ora2 Me Muscat Mint Mouth Spray. This 6ml portable mouth spray offers a refreshing muscat mint flavor, perfect for keeping your breath fresh throughout the day.\u003cbr\u003eIts compact size makes it easy to carry in your bag or pocket, ensuring you can maintain fresh breath anytime, anywhere.\u003cbr\u003eFormulated to kill bacteria that cause bad breath, this mouth spray provides an instant burst of freshness.\u003cbr\u003eIdeal for use after meals, before meetings, or whenever you need a quick breath boost.\u003cbr\u003eExperience the convenience and effectiveness of Ora2 Me Muscat Mint Mouth Spray, your go-to solution for fresh breath.","brand":"Ora2","offers":[{"title":"Default Title","offer_id":49031856193823,"sku":"A4901616010222","price":4.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_73313079-0e07-498e-9902-d5f094d0fd31.jpg?v=1722333240"},{"product_id":"hikari-instant-miso-soup-wakame-216g","title":"Hikari Instant Miso Soup Wakame - 216g","description":"\u003cp\u003eEnjoy the authentic taste of Japanese miso soup with Hikari Instant Miso Soup Wakame. This 216g pack contains 12 individual servings, each filled with the rich flavors of wakame seaweed and miso paste. Perfect for a quick and easy meal or snack.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eAuthentic Japanese Flavor:\u003c\/strong\u003e Made with high-quality miso paste and wakame seaweed.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConvenient:\u003c\/strong\u003e 12 individual servings for easy preparation.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuick and Easy:\u003c\/strong\u003e Ready in minutes, just add hot water.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHealthy:\u003c\/strong\u003e Low in calories and rich in nutrients.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVersatile:\u003c\/strong\u003e Great as a starter, side dish, or light meal.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Hikari","offers":[{"title":"Default Title","offer_id":49099064869151,"sku":"A4902663006633","price":3.79,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_15181954-9b77-41a9-8804-3455ed2fb42b.jpg?v=1723016465"},{"product_id":"chaokoh-young-coconut-juice-with-pulp-350ml","title":"Chaokoh Young Coconut Juice with Pulp - 350ml","description":"\u003cp\u003eEnjoy the refreshing taste of Chaokoh Young Coconut Juice with Pulp. This 350ml can is filled with the natural sweetness and delightful texture of young coconut pulp, making it a perfect beverage for any time of the day.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eNatural Sweetness:\u003c\/strong\u003e Made from young coconuts for a naturally sweet flavor.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWith Pulp:\u003c\/strong\u003e Contains real coconut pulp for added texture and taste.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConvenient Packaging:\u003c\/strong\u003e Comes in a 350ml can, perfect for on-the-go refreshment.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHydrating:\u003c\/strong\u003e A great source of hydration and electrolytes.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVersatile Use:\u003c\/strong\u003e Enjoy it chilled, over ice, or as a mixer in your favorite drinks.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Chaokoh","offers":[{"title":"Default Title","offer_id":49135766602015,"sku":"A044738209564","price":1.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_1f02c337-ea2b-4f8e-9590-bf26fabed512.jpg?v=1747018912"},{"product_id":"ttl-hua-diao-chicken-noodles-200g","title":"TTL Hua Diao Chicken Noodles - 200g","description":"\u003cp\u003eEnjoy the rich and savory taste of TTL Hua Diao Chicken Noodles. This 200g pack includes a seasoning packet and Hua Diao cooking wine, providing an authentic and flavorful experience.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eAuthentic Flavor:\u003c\/strong\u003e Made with Hua Diao cooking wine for a unique taste.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConvenient:\u003c\/strong\u003e Easy to prepare, perfect for a quick meal.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuality Ingredients:\u003c\/strong\u003e Includes premium chicken and seasoning packets.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGenerous Portion:\u003c\/strong\u003e 200g pack, ideal for a satisfying meal.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVersatile:\u003c\/strong\u003e Great for lunch, dinner, or a hearty snack.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"TTL","offers":[{"title":"Default Title","offer_id":49135778988319,"sku":"4710199104507","price":4.89,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_a4c960fd-7cfe-402c-87c1-eea095ef7994.jpg?v=1723795876"},{"product_id":"hakugen-cabinet-dehumidifier-floral-scent-450ml","title":"Hakugen Cabinet Dehumidifier Floral Scent - 450ml","description":"\u003cp\u003eKeep your cabinets dry and fresh with the Hakugen Cabinet Dehumidifier. Infused with a pleasant floral scent, this 450ml dehumidifier effectively absorbs moisture and eliminates odors, ensuring a clean and dry environment for up to two months.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eEffective Dehumidification:\u003c\/strong\u003e Absorbs moisture to prevent mold and mildew.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFloral Scent:\u003c\/strong\u003e Leaves a pleasant floral fragrance.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLong-Lasting:\u003c\/strong\u003e Provides dehumidification for up to two months.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSafe and Reliable:\u003c\/strong\u003e Non-toxic and safe for use in enclosed spaces.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConvenient Size:\u003c\/strong\u003e 450ml capacity, perfect for cabinets and small spaces.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Hakugen","offers":[{"title":"Default Title","offer_id":49285087101215,"sku":"A4902407397126","price":6.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_d27cdb0c-36b4-4cf5-94d5-2a7772fc7285.jpg?v=1726213933"},{"product_id":"panama-passionfruit-3-pieces","title":"Panama Passionfruit - 3 Pieces","description":"\u003cp\u003eEnjoy the exotic taste of Panama Passionfruit. These passionfruits are known for their vibrant flavor and juicy pulp, making them a delightful addition to your fruit selection.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eExotic Flavor:\u003c\/strong\u003e Rich and tangy taste that is unique to Panama Passionfruit.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eJuicy Pulp:\u003c\/strong\u003e Perfect for eating fresh or adding to desserts and drinks.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHigh Quality:\u003c\/strong\u003e Sourced from premium growers for the best taste.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConvenient Pack:\u003c\/strong\u003e Comes in a pack of 3 pieces, ready to enjoy.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVersatile Use:\u003c\/strong\u003e Great for snacking, baking, and making beverages.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":49410294317343,"sku":"A0735745758045","price":3.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/62f531a75e9f0be734f73d876336eb88fNJ0IvvqVPEmI4vlJN0ZAOFiOwmtb6UL.jpg?v=1726910254"},{"product_id":"zishan-mealtime-self-heating-hainan-chicken-rice-320g","title":"Zishan Mealtime Self-Heating Hainan Chicken Rice - 320g","description":"\u003cp\u003eEnjoy a convenient and delicious meal with Zishan Mealtime Self-Heating Hainan Chicken Rice. This 320g pack offers a flavorful and satisfying dish that is perfect for any time of the day. Simply activate the self-heating mechanism and your meal will be ready in minutes.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eConvenient:\u003c\/strong\u003e Self-heating technology allows you to enjoy a hot meal anywhere, anytime.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDelicious Flavor:\u003c\/strong\u003e Authentic Hainan chicken rice with a rich and savory taste.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGenerous Portion:\u003c\/strong\u003e 320g pack provides a satisfying meal.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEasy to Use:\u003c\/strong\u003e No need for a microwave or stove, just add water to activate the heating pack.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePerfect for On-the-Go:\u003c\/strong\u003e Ideal for travel, camping, or busy days.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Zishan","offers":[{"title":"Default Title","offer_id":49453875724575,"sku":"6971885310284","price":6.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_dab56536-c37e-433b-9f03-d61dd26534f1.jpg?v=1727515063"},{"product_id":"lanju-ginger-deodorizing-dishwashing-liquid-1-8kg","title":"Lanju Ginger Deodorizing Dishwashing Liquid - 1.8kg","description":"\u003cp\u003eKeep your dishes sparkling clean with Lanju Ginger Deodorizing Dishwashing Liquid. This 1.8kg bottle is specially formulated to remove odors and grease, leaving your dishes fresh and clean.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eEffective Deodorizing:\u003c\/strong\u003e Infused with ginger to eliminate unwanted odors.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePowerful Cleaning:\u003c\/strong\u003e Removes grease and grime effortlessly.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGentle on Hands:\u003c\/strong\u003e Safe for regular use without harsh chemicals.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLarge Capacity:\u003c\/strong\u003e 1.8kg bottle for long-lasting use.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEasy Rinsing:\u003c\/strong\u003e Leaves no residue, ensuring clean dishes every time.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Lanju","offers":[{"title":"Default Title","offer_id":49556999897375,"sku":"A6902312300578","price":5.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_afae9f2e-c183-4c85-9150-9103389c8d9d.jpg?v=1729846643"},{"product_id":"into-you-lip-cheek-mud-em08","title":"INTO YOU Lip \u0026 Cheek Mud #EM08","description":"\u003cp\u003eDiscover the versatile INTO YOU Lip \u0026amp; Cheek Mud in shade #EM08, designed to give your lips and cheeks a soft, matte finish. This innovative formula offers a smooth application and long-lasting color, perfect for any occasion.\u003c\/p\u003e\u003ch2\u003eProduct Highlights:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual Use:\u003c\/strong\u003e Suitable for both lips and cheeks.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMatte Finish:\u003c\/strong\u003e Provides a soft, velvety look.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLong-Lasting:\u003c\/strong\u003e Enjoy vibrant color that lasts all day.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEasy Application:\u003c\/strong\u003e Smooth texture for effortless blending.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTrendy Shade:\u003c\/strong\u003e #EM08 offers a modern, earthy tone.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"INTO YOU","offers":[{"title":"Default Title","offer_id":49943929127199,"sku":"A6938582374025","price":11.29,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/img_01_af2c4f99-9b9b-47bb-8158-384edb666060.jpg?v=1770197367"}],"url":"https:\/\/www.umall.com.au\/collections\/weekly-special\/miso-soup.oembed","provider":"Umall - Australia's Largest Online Asian Supermarket","version":"1.0","type":"link"}