{"title":"Khoai \u0026 Củ","description":"\u003cdiv style=\"max-width:940px;margin:8px auto 16px;line-height:1.6;text-align:center;\"\u003e\u003cp\u003eCác loại củ cho mọi món ăn — khoai tây, khoai lang, khoai môn, củ cải trắng, cà rốt và củ sen. Xem tất cả rau củ: \u003ca href=\"\/vi\/collections\/vegetables\"\u003eRau củ\u003c\/a\u003e.\u003c\/p\u003e\u003c\/div\u003e","products":[{"product_id":"fresh-soil-free-potatoes-approximately-1kg","title":"Khoai Tây Rửa Sạch 1 kg – khoai tây sạch, dễ chế biến","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px 0;color:#334155;font-family:-apple-system,BlinkMacSystemFont,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=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;\"\u003e\n    \u003ch1 style=\"margin:0 0 6px;font-size:26px;line-height:1.2;\"\u003eKhoai tây sạch đất, 1kg\u003c\/h1\u003e\n    \u003cp style=\"margin:6px 0 0;color:#64748b;font-size:14px;\"\u003eKhoai sạch đất, tiện sơ chế cho bữa cơm ngày thường — dùng nướng, nghiền, xào hoặc nấu canh.\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;\"\u003eĐặc điểm sản phẩm\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;\"\u003e\n      \u003cli\u003eKhoai đã làm sạch đất, giúp sơ chế nhanh và gọn hơn.\u003c\/li\u003e\n      \u003cli\u003eNướng lên vỏ ngoài giòn, bên trong bùi xốp.\u003c\/li\u003e\n      \u003cli\u003eDùng xào kiểu Á, nấu hầm, ăn lẩu hoặc nướng lò đơn giản.\u003c\/li\u003e\n      \u003cli\u003eVị dịu, bùi nhẹ, hợp với tỏi, giấm, nước tương và ớt.\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;\"\u003eGợi ý chế biến\u003c\/h3\u003e\n    \u003cdiv style=\"display:grid;gap:14px;\"\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:4px;\"\u003eKhoai tây sợi xào ớt chuông xanh \u0026amp; giấm đen\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#475569;\"\u003eCắt khoai thành sợi, rửa sạch rồi xào nhanh với tỏi, \u003ca href=\"\/vi\/products\/fresh-green-lantern-peppers-pack-of-3\"\u003eớt chuông xanh\u003c\/a\u003e, một ít \u003ca href=\"\/vi\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\"\u003egiấm thơm Zhenjiang\u003c\/a\u003e và chút muối; xào vừa chín tới, còn giòn (3–5 phút). Thêm \u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\"\u003etỏi bóc vỏ\u003c\/a\u003e cắt lát để dậy mùi thơm.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:4px;\"\u003eThịt bò \u0026amp; khoai tây hầm\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#475569;\"\u003eÁp chảo cho vàng mặt \u003ca href=\"\/vi\/products\/angus-prime-beef-cubes-1kg\"\u003ethịt bò Angus cắt khối\u003c\/a\u003e, thêm khoai tây và gia vị thơm, đổ ngập bằng \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003enước dùng gà trong\u003c\/a\u003e rồi hầm đến mềm (30–45 phút). Nêm thêm chút nước tương nhạt và tiêu đen.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:4px;\"\u003eSalad khoai tây sợi thanh nhẹ \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\"\u003eNhẹ nhàng \u0026amp; tươi mát\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#475569;\"\u003eChần khoai tây sợi 1–2 phút, để nguội rồi trộn với \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\"\u003egiấm gạo trắng\u003c\/a\u003e, một ít \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003edầu mè\u003c\/a\u003e, chút muối và hành lá hoặc ngò rí.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-weight:700;margin-bottom:4px;\"\u003eKhoai tây \u0026amp; nấm hương sốt dầu hào\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#475569;\"\u003eÁp chảo khoai tây cắt múi, rồi đảo cùng \u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-300g\"\u003enấm hương\u003c\/a\u003e cắt lát và một muỗng \u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\"\u003edầu hào cao cấp\u003c\/a\u003e; thêm ít nước, nấu liu riu cho sốt áo đều (6–8 phút).\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;\"\u003eMẹo sơ chế và nấu\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;\"\u003e\n      \u003cli\u003eRửa nhanh, chà sạch nếu cần; có thể giữ vỏ để thêm độ bùi và dưỡng chất.\u003c\/li\u003e\n      \u003cli\u003eCắt khoai đều miếng để chín đều; luộc sơ khoai cắt múi 5–7 phút trước khi nướng để phần cạnh giòn hơn.\u003c\/li\u003e\n      \u003cli\u003eKhi xào, cắt sợi rồi rửa đến khi nước gần trong để bớt tinh bột bám ngoài và giữ độ giòn.\u003c\/li\u003e\n      \u003cli\u003eKhi luộc, cho khoai vào nước lạnh có muối, đun sôi nhẹ đến khi xiên nĩa vừa mềm để khoai không bị úng nước.\u003c\/li\u003e\n      \u003cli\u003eNêm muối từ đầu, sau đó thêm giấm, nước tương hoặc dầu mè lúc cuối để món ăn đậm vị hơn.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;\"\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/fresh-dried-garlic-heads-approximately-500g\"\u003eTỏi củ, 500g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\"\u003eHengshun Giấm thơm Zhenjiang 550ml\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/haitian-premium-light-soy-sauce-500ml\"\u003eHaitian Nước tương nhạt cao cấp 500ml\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/fresh-green-lantern-peppers-pack-of-3\"\u003eỚt chuông xanh - Gói 3\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-100g\"\u003eChois Nấm hương - 100g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/angus-prime-beef-cubes-1kg\"\u003eThịt bò Angus thượng hạng cắt khối 1kg\u003c\/a\u003e\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;display:flex;justify-content:space-between;align-items:center;gap:12px;\"\u003e\n    \u003ch3 style=\"margin:0;font-size:18px;font-weight:700;\"\u003eXem thêm cùng loại\u003c\/h3\u003e\n    \u003ca href=\"\/vi\/collections\/potatoes-root-vegetables\" style=\"color:var(--brand);text-decoration:underline;font-weight:600;\"\u003eXem Khoai \u0026amp; Củ\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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=\"\/vi\/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":48151489446175,"sku":"A0735745752210","price":4.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/b757186cc141894763bec18ec45b3dc8DkZkbAC8hSWAV02E6lKQaOTHbXJAqivS.jpg?v=1712384273"},{"product_id":"fresh-carrots-approximately-1kg","title":"Cà Rốt Tươi 1 kg – ngọt giòn, giàu vitamin A","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;\"\u003eCà rốt 1kg\u003c\/h1\u003e\n    \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eCà rốt giòn, ngọt tự nhiên, dễ chế biến — xào nhanh cho bữa cơm ngày thường hoặc nướng cho bữa cuối tuần.\u003c\/p\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eĐặc điểm sản phẩm\u003c\/h3\u003e\n    \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eGiữ vị ngọt và độ giòn khi xào, nướng, nấu canh hoặc trộn gỏi.\u003c\/li\u003e\n      \u003cli\u003eCắt sợi thì nhanh chín; nướng lên ngọt thơm, xém cạnh.\u003c\/li\u003e\n      \u003cli\u003eHợp với nước tương, mè, tỏi, gừng và các gia vị thơm ấm.\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;\"\u003eGợi ý chế biến\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;\"\u003eCà rốt xào gừng–tỏi và nước tương nhạt\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eXào nhanh cà rốt sợi với gừng, tỏi, rồi thêm chút \u003ca href=\"\/vi\/products\/haday-golden-label-light-soy-sauce-1-28l\" title=\"Haday Golden Label Light Soy Sauce\"\u003enước tương nhạt\u003c\/a\u003e và một ít \u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\" title=\"Haitian Premium Oyster Sauce\"\u003edầu hào\u003c\/a\u003e. Xào 2‑4 phút đến khi vừa chín tới, còn giòn.\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;\"\u003eCanh cà rốt, nấm hương \u0026amp; bún gạo\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eNấu liu riu cà rốt cắt lát cùng \u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-100g\" title=\"Chois Shiitake Mushrooms\"\u003enấm hương\u003c\/a\u003e trong \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" title=\"Bull Head Clear Chicken Broth\"\u003enước dùng gà trong\u003c\/a\u003e, sau đó cho \u003ca href=\"\/vi\/products\/chunsi-jiangxi-rice-noodles-300g\" title=\"Chunsi Jiangxi Rice Vermicelli 300g\"\u003ebún gạo\u003c\/a\u003e vào. Nêm vừa ăn để có tô bún nước ấm bụng.\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;\"\u003eGỏi cà rốt sợi với mè \u0026amp; giấm gạo \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\"\u003eÍt calo\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eTrộn cà rốt sợi nhỏ với \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\" title=\"Hengshun White Rice Vinegar\"\u003egiấm gạo\u003c\/a\u003e, vài giọt \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\" title=\"Lee Kum Kee Pure Sesame Oil\"\u003edầu mè\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/fresh-bundle-of-spring-onions\" title=\"Shallot Bunch\"\u003ehành tím\u003c\/a\u003e cắt lát. Ướp lạnh một lúc để giữ độ giòn.\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;\"\u003eCà rốt nướng thì là Ai Cập trên khay\u003c\/div\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eTrộn cà rốt cắt múi với ít \u003ca href=\"\/vi\/products\/88-canola-oil-1l\" title=\"88 Canola Oil\"\u003edầu cải\u003c\/a\u003e, trộn cùng \u003ca href=\"\/vi\/products\/bakerdream-cumin-barbecue-seasoning-130g\" title=\"Bakerdream Cumin Seasoning\"\u003egia vị thì là Ai Cập\u003c\/a\u003e rồi nướng 18‑25 phút đến khi lên màu.\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;\"\u003eMẹo sơ chế và nấu\u003c\/h3\u003e\n    \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eGọt vỏ nếu muốn cà rốt thật láng; hoặc chà sạch để giữ màu sắc và độ giòn.\u003c\/li\u003e\n      \u003cli\u003eMuốn nhanh chín thì cắt sợi nhỏ hoặc lát xéo; khi nướng, cắt miếng lớn hơn để cạnh xém mà bên trong vẫn mềm.\u003c\/li\u003e\n      \u003cli\u003eChần cà rốt cắt khoanh hoặc que 1‑2 phút trước khi xào nhanh để giữ màu và rút ngắn thời gian nấu.\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;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n    \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003e\n\u003ca href=\"\/vi\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" title=\"Australian Raw King Prawns\"\u003eTôm lớn\u003c\/a\u003e cho món xào nhanh.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/vi\/products\/chois-oyster-mushrooms-400g\" title=\"Chois Oyster Mushrooms\"\u003eNấm bào ngư\u003c\/a\u003e cho vị bùi thơm đặc trưng của nấm.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/vi\/products\/fresh-bunch-of-coriander\" title=\"Bunch of Coriander\"\u003eNgò rí\u003c\/a\u003e để rắc lên salad và tô mì.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/vi\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" title=\"Kikkoman Soy Sauce\"\u003eNước tương\u003c\/a\u003e để nêm vị đậm đà.\u003c\/li\u003e\n      \u003cli\u003e\n\u003ca href=\"\/vi\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" title=\"Ever Green Classic Tofu 500g\"\u003eĐậu hũ cứng\u003c\/a\u003e để thêm đạm từ thực vật.\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;\"\u003eXem thêm cùng loại\u003c\/h3\u003e\n    \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eBạn thích nấu các loại củ? Xem thêm các lựa chọn trong nhóm này.\u003c\/p\u003e\n    \u003cp style=\"margin:10px 0 0;\"\u003e\u003ca href=\"\/vi\/collections\/potatoes-root-vegetables\" style=\"color:var(--brand);font-weight:700;\"\u003eXem rau củ →\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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=\"\/vi\/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":3.19,"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-japanese-purple-chestnut-potatoes-approximately-1-2kg","title":"Khoai lang tím Nhật Bản, 1kg","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#0f172a;line-height:1.6;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;\"\u003e\n  \u003ch1 style=\"margin:0 0 6px;font-size:26px;font-weight:800;color:#0f172a;\"\u003eKhoai lang tím Nhật Bản, 1kg\u003c\/h1\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eKhoai ngọt tự nhiên, bùi xốp như hạt dẻ, có màu tím nổi bật và giàu anthocyanin. Nướng, hấp hoặc xào để ăn kèm, làm món tô hoặc nấu canh.\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;\"\u003eĐặc điểm sản phẩm\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003eVị ngọt nhẹ, bùi; nướng lên thơm và xém cạnh.\u003c\/li\u003e\n    \u003cli\u003eRuột tím giàu anthocyanin, giúp món ăn thêm màu sắc.\u003c\/li\u003e\n    \u003cli\u003eGiữ miếng khi nấu canh hoặc xào, cũng dễ nghiền mịn để làm bánh croquette hay khoai nghiền.\u003c\/li\u003e\n    \u003cli\u003eDùng được trong món Nhật Bản, Hàn Quốc và bữa cơm gia đình.\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;\"\u003eGợi ý chế biến\u003c\/h3\u003e\n  \u003cdiv style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;\"\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;\"\u003eKhoai lang nướng mè–nước tương\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eTrộn khoai cắt miếng với chút \u003ca href=\"\/vi\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:var(--brand);\"\u003enước tương nhạt\u003c\/a\u003e và ít \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003edầu mè\u003c\/a\u003e. Nướng 20–30 phút đến khi cạnh lên màu; rắc thêm \u003ca href=\"\/vi\/products\/fresh-bundle-of-spring-onions\" style=\"color:var(--brand);\"\u003ehành lá cắt lát\u003c\/a\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;\"\u003eCanh khoai lang, đậu hũ \u0026amp; nấm kim châm \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\"\u003eMón nước\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eNấu liu riu khoai cắt khối trong \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:var(--brand);\"\u003enước dùng gà trong\u003c\/a\u003e 6–8 phút. Thêm \u003ca href=\"\/vi\/products\/fresh-ever-green-chinese-style-tofu-approximately-300g\" style=\"color:var(--brand);\"\u003eđậu hũ\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/chois-enoki-mushrooms-300g\" style=\"color:var(--brand);\"\u003enấm kim châm\u003c\/a\u003e; nêm vừa ăn để có tô canh thanh nhẹ.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;\"\u003eMì soba với sốt nước tương–mè\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eNướng khoai cắt lát, xếp lên \u003ca href=\"\/vi\/products\/j-basket-japanese-buckwheat-noodles-720g\" style=\"color:var(--brand);\"\u003emì soba kiều mạch\u003c\/a\u003e rồi trộn với sốt làm nhanh từ \u003ca href=\"\/vi\/products\/kikkoman-all-purpose-soy-sauce-1-6l\" style=\"color:var(--brand);\"\u003eKikkoman nước tương\u003c\/a\u003e và chút dầu mè. Có thể thêm rau xanh chần nếu thích.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;color:#0f172a;\"\u003eKhoai lang xào satay với ớt chuông\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eXào nhanh khoai cắt que đã hấp sơ cùng \u003ca href=\"\/vi\/products\/fresh-green-lantern-peppers-pack-of-3\" style=\"color:var(--brand);\"\u003eớt chuông xanh\u003c\/a\u003e và một muỗng \u003ca href=\"\/vi\/products\/bull-head-brand-satay-sauce-250g\" style=\"color:var(--brand);\"\u003esốt satay\u003c\/a\u003e trong 3–4 phút, đến khi sốt áo đều và khoai vừa mềm, còn giòn.\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;\"\u003eMẹo sơ chế và nấu\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003eChà rửa sạch; có thể để vỏ, khi nướng vỏ sẽ dai nhẹ.\u003c\/li\u003e\n    \u003cli\u003eCắt đều miếng để chín đều; hấp hoặc quay vi sóng sơ trước khi xào để nhanh chín hơn.\u003c\/li\u003e\n    \u003cli\u003eLàm nóng khay trước khi nướng để khoai dễ lên màu; không xếp quá chật.\u003c\/li\u003e\n    \u003cli\u003eMột chút \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003egiấm gạo\u003c\/a\u003e giúp cân bằng vị ngọt và giữ màu.\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;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;\"\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:var(--brand);\"\u003eHaitian Nước tương nhạt cao cấp 500ml\u003c\/a\u003e để nêm đơn giản.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003eLee Kum Kee Dầu mè nguyên chất 207ml\u003c\/a\u003e để thêm vào khoai nướng hoặc hấp lúc cuối.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-100g\" style=\"color:var(--brand);\"\u003eChois Nấm hương - 100g\u003c\/a\u003e để xào cùng, thêm vị bùi thơm của nấm.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/fresh-ever-green-chinese-style-tofu-approximately-300g\" style=\"color:var(--brand);\"\u003eEver Green Đậu hũ kiểu Trung Quốc, 300g\u003c\/a\u003e cho món canh và món kho.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003eHengshun Giấm gạo trắng 500ml\u003c\/a\u003e để muối chua nhanh hoặc pha sốt trộn.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eXem thêm cùng loại\u003c\/h3\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;\"\u003eBạn thích các loại khoai củ? Xem thêm nguyên liệu để nướng, nấu canh và xào.\u003c\/p\u003e\n  \u003cp style=\"margin:10px 0 0;\"\u003e\u003ca href=\"\/vi\/collections\/potatoes-root-vegetables\" style=\"color:var(--brand);text-decoration:underline;font-weight:700;\"\u003eXem Khoai \u0026amp; Củ\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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=\"\/vi\/products\"+handle; a.setAttribute('data-handle',handle); a.innerHTML='\u003cdiv class=\"um-imgbox\"\u003e\u003cimg alt=\"'+handle+'\" loading=\"lazy\"\/\u003e\u003cspan class=\"um-badge\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"um-meta\"\u003e\u003cdiv class=\"um-title\"\u003e'+handle.replace(\/-\/g,' ')+'\u003c\/div\u003e\u003cdiv class=\"um-price\"\u003e\u003c\/div\u003e\u003c\/div\u003e'; return a; };\n  const hydrate = async (a)=\u003e{ const h=a.getAttribute('data-handle'); try{ const r=await fetch('\/products\/'+h+'.js',{credentials:'same-origin'}); if(!r.ok) return; const p=await r.json(); const img=a.querySelector('img'); if(p.images\u0026\u0026p.images[0]) img.src=p.images[0]; const t=a.querySelector('.um-title'); t.textContent=p.title||t.textContent; const vs=(p.variants||[]); const avail=vs.filter(v=\u003ev.available); const arr=avail.length?avail:vs; if(arr.length){ const min=Math.min(...arr.map(v=\u003ev.price)); const maxCompare=Math.max(...arr.map(v=\u003ev.compare_at_price||0)); const price=a.querySelector('.um-price'); price.textContent=''; const cur=document.createElement('span'); cur.textContent=money(min); price.appendChild(cur); if(maxCompare \u0026\u0026 maxCompare\u003emin){ const s=document.createElement('s'); s.textContent=money(maxCompare); price.appendChild(document.createTextNode(' ')); price.appendChild(s); const badge=a.querySelector('.um-badge'); const off=Math.round((1-min\/maxCompare)*100); badge.textContent='-'+off+'%'; badge.style.display='inline-block'; } } }catch(e){} };\n\n  const ensureAfter = (refNode, node)=\u003e{ if(!refNode || !node) return; if(node.parentElement) return; refNode.parentElement.insertBefore(node, refNode.nextSibling); };\n\n  \/\/ How to enjoy → 卡片（保留原内容；隐藏原块；标题统一“Recipes with this product”）\n  try{\n    \/\/ 1) 更鲁棒地找到标题（h2\/h3\/h4）\n    const enjoyH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(how to enjoy|ways to enjoy|serving ideas|recipes with this product|食用建议|食用灵感|食法)\/i.test(h.textContent));\n    if(enjoyH){\n      const container = enjoyH.parentElement;\n      \/\/ 2) 就近查找列表或段落（同容器或下一个兄弟）\n      let listEl = container.querySelector('ol, ul');\n      if(!listEl){ const sib = enjoyH.nextElementSibling; if(sib){ listEl = sib.querySelector \u0026\u0026 sib.querySelector('ol, ul'); } }\n\n      \/\/ 3) 容器若不存在则创建\n      let cardsHost = container.querySelector('#um-recipes-cards');\n      if(!cardsHost){ cardsHost=document.createElement('div'); cardsHost.id='um-recipes-cards'; cardsHost.className='um-recipes'; ensureAfter(listEl||enjoyH, cardsHost); }\n      let prodHost = container.querySelector('#um-recipes-products');\n      if(!prodHost){ prodHost=document.createElement('div'); prodHost.id='um-recipes-products'; prodHost.className='um-slider'; ensureAfter(cardsHost, prodHost); }\n\n      const links = new Set();\n      let items = [];\n      if(listEl){ items = Array.from(listEl.children).filter(n=\u003en.tagName==='LI'); }\n      \/\/ 4) 若没有列表，尝试用同容器的段落或“网格DIV\/ARTICLE”作为卡片项\n      if(items.length === 0){\n        let ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n        if(ps.length \u003c 2){ const sib = enjoyH.nextElementSibling; if(sib){ ps = Array.from(sib.querySelectorAll(':scope \u003e p')); } }\n        items = ps;\n      }\n      \/\/ 5) 同容器下寻找“网格容器”（含多个子块，且子块内有 h4\/strong）\n      let gridToHide = null;\n      if(items.length === 0){\n        const ch = Array.from(container.children || []);\n        for(const el of ch){\n          if(el === enjoyH) continue;\n          if(el.children \u0026\u0026 el.children.length \u003e= 2){\n            const first = el.children[0];\n            if((first.querySelector \u0026\u0026 first.querySelector('h3, h4, h5, strong, b, div[style*=\"font-weight:700\"]'))){\n              items = Array.from(el.children);\n              gridToHide = el;\n              break;\n            }\n          }\n        }\n      }\n      \/\/ 6) 仍然没有，则看紧跟标题的下一个块（如显示为卡片的 div\/article 列表）\n      if(items.length === 0){\n        const sib = enjoyH.nextElementSibling;\n        if(sib){\n          const children = Array.from(sib.children || []);\n          if(children.length \u003e= 2){ items = children; gridToHide = sib; }\n        }\n      }\n\n      if(items.length){\n        items.forEach((node, idx)=\u003e{\n          const card=document.createElement('article'); card.className='um-rcard';\n          const titleNode = node.querySelector \u0026\u0026 node.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b, a');\n          const h4=document.createElement('h4'); h4.textContent = titleNode ? (titleNode.textContent.trim()||('Recipe '+(idx+1))) : ('Recipe '+(idx+1));\n          const clone = node.cloneNode(true);\n          const rm = clone.querySelector \u0026\u0026 clone.querySelector('h3, h4, h5, div[style*=\"font-weight:700\"], strong, b'); if(rm) rm.remove();\n          const body=document.createElement('div'); while(clone.firstChild){ body.appendChild(clone.firstChild); }\n          card.appendChild(h4); card.appendChild(body); cardsHost.appendChild(card);\n          (node.querySelectorAll ? node.querySelectorAll('a[href]') : []).forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h) links.add(h); });\n        });\n        \/\/ 统一标题并隐藏原内容块\n        enjoyH.textContent = 'Recipes with this product';\n        if(listEl){ listEl.style.display='none'; }\n        else if(gridToHide){ gridToHide.style.display='none'; }\n        else {\n          \/\/ 隐藏直接段落（避免把其它段落隐藏过多，仅隐藏紧邻的）\n          const ps = Array.from(container.querySelectorAll(':scope \u003e p'));\n          ps.forEach(p=\u003e{ p.style.display='none'; });\n        }\n      }\n      if(prodHost \u0026\u0026 links.size){ Array.from(links).forEach(h=\u003e{ const a=buildProdCard(h); prodHost.appendChild(a); hydrate(a); }); }\n    }\n  }catch(e){}\n\n  \/\/ Pairs well → 滑动卡片（并将标题统一为 “Pairs well with these products”）\n  try{\n    const pairsH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(pairs\\s*well|pairswell|配搭建议|搭配推荐|搭配)\/i.test(h.textContent));\n    if(pairsH){\n      const section=pairsH.parentElement; const ul=section.querySelector('ul');\n      \/\/ 统一标题文案\n      pairsH.textContent = 'Pairs well with these products';\n      let host=section.querySelector('#um-pairs-slider');\n      if(!host){ host=document.createElement('div'); host.id='um-pairs-slider'; host.className='um-slider'; ensureAfter(ul||pairsH, host); }\n      const unique=new Set();\n      \/\/ 允许 p 段落或任意容器中的产品链接\n      section.querySelectorAll('a[href]').forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)) unique.add(h); });\n      unique.forEach(h=\u003e{ const card=buildProdCard(h); host.appendChild(card); hydrate(card); });\n    }\n  }catch(e){}\n\n  \/\/ More in this category → 条件滑动，成功后隐藏原标题与列表，把 Explore CTA 放到滑动条上方\n  try{\n    const moreH = Array.from(root.querySelectorAll('h2,h3,h4')).find(h=\u003e\/(more in this category|同类推荐|更多此分类)\/i.test(h.textContent));\n    if(moreH){ const section=moreH.parentElement; const ul=section.querySelector('ul'); let host=section.querySelector('#um-more-slider'); if(!host){ host=document.createElement('div'); host.id='um-more-slider'; host.className='um-slider'; ensureAfter(ul||moreH, host); } if(ul){ const links=ul.querySelectorAll('a[href]'); if(links.length\u003e=2){ const unique=new Set(); links.forEach(a=\u003e{ const h=handleFromHref(a.getAttribute('href')); if(h \u0026\u0026 !unique.has(h)){ unique.add(h); const card=buildProdCard(h); host.appendChild(card); hydrate(card); } }); if(host.children.length){ ul.style.display='none'; moreH.style.display='none'; const ctaWrap = Array.from(section.querySelectorAll('div')).find(d=\u003ed.querySelector('a[href^=\"\/collections\/\"]')); if(ctaWrap){ section.insertBefore(ctaWrap, host); } } } } }\n  }catch(e){}\n})();\n\u003c\/script\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151489904927,"sku":"A0735745752197","price":8.99,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/A0735745752197.jpg?v=1745982955"},{"product_id":"fresh-golden-sweet-potatoes-approximately-1kg","title":"Khoai lang cam 1 kg – ngọt bùi, giàu dinh dưỡng","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:16px;\"\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:0;\"\u003e\n  \u003ch1 style=\"margin:0 0 8px;font-size:26px;line-height:1.2;\"\u003eKhoai lang 1kg\u003c\/h1\u003e\n  \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eKhoai lang ngọt tự nhiên, nướng lên mềm mịn. Dùng xào, nấu canh, trộn salad hoặc ăn cùng cơm.\u003c\/p\u003e\n  \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/4049e40aea454854f53aca1094bb6493IXVU9pgHPRmMEeuPf1n5vApAtXFyCWIj.jpg?v=1712384323\" alt=\"Sweet Potatoes\" style=\"width:100%;height:auto;border-radius:12px;margin-top:14px;\"\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  \u003ch2 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eĐặc điểm sản phẩm\u003c\/h2\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;line-height:1.6;\"\u003e\n    \u003cli\u003eNướng lên xém cạnh, bên trong bùi mịn.\u003c\/li\u003e\n    \u003cli\u003eHợp với nước tương, tỏi, gừng và mè—những gia vị quen thuộc cho món mặn.\u003c\/li\u003e\n    \u003cli\u003eDùng xào nhanh ngày thường, nấu canh hoặc chuẩn bị sẵn các phần ăn.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch2 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eGợi ý chế biến\u003c\/h2\u003e\n  \u003col style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;line-height:1.7;\"\u003e\n    \u003cli style=\"margin-bottom:14px;\"\u003e\n\u003cstrong\u003eKhoai lang cắt khối xào gừng–tỏi và mè\u003c\/strong\u003e — Xào khoai lang cắt khối đã làm chín sơ với \u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\"\u003etỏi bóc vỏ\u003c\/a\u003e, một ít \u003ca href=\"\/vi\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003egừng\u003c\/a\u003e, chút \u003ca href=\"\/vi\/products\/haday-golden-label-light-soy-sauce-1-28l\"\u003enước tương nhạt\u003c\/a\u003e và thêm \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003edầu mè lúc cuối\u003c\/a\u003e.\u003c\/li\u003e\n    \u003cli style=\"margin-bottom:14px;\"\u003e\n\u003cstrong\u003eCanh nấm kim châm \u0026amp; đậu hũ\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\"\u003e Món nước\u003c\/span\u003e — Nấu liu riu khoai cắt lát mỏng với nước dùng nấm dịu nhẹ như \u003ca href=\"\/vi\/products\/haidilao-mushroom-flavor-hot-pot-seasoning-150g\"\u003eHaidilao Nước cốt lẩu nấm\u003c\/a\u003e, thêm \u003ca href=\"\/vi\/products\/chois-enoki-mushrooms-300g\"\u003enấm kim châm\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/fresh-ever-green-smooth-tofu-approximately-300g\"\u003eđậu hũ\u003c\/a\u003e mềm mịn, nấu đến khi chín mềm.\u003c\/li\u003e\n    \u003cli style=\"margin-bottom:14px;\"\u003e\n\u003cstrong\u003eSalad khoai lang nướng \u0026amp; trứng dùng ấm\u003c\/strong\u003e — Nướng khoai cắt múi, trộn cùng \u003ca href=\"\/vi\/products\/pace-farm-free-range-eggs-12-extra-large-700g\"\u003etrứng gà thả vườn luộc lòng đào\u003c\/a\u003e, chút \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\"\u003egiấm gạo\u003c\/a\u003e và ít \u003ca href=\"\/vi\/products\/haitian-sesame-fragrant-oil-150ml\"\u003edầu mè\u003c\/a\u003e. Thêm \u003ca href=\"\/vi\/products\/fresh-purple-onions-approximately-1kg\"\u003ehành tây tím\u003c\/a\u003e cắt mỏng để tạo vị hăng nhẹ.\u003c\/li\u003e\n    \u003cli style=\"margin-bottom:6px;\"\u003e\n\u003cstrong\u003eCơm tôm cà ri \u0026amp; khoai lang\u003c\/strong\u003e — Nấu liu riu khoai cắt miếng với gia vị cà ri, thêm \u003ca href=\"\/vi\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003etôm lớn\u003c\/a\u003e, múc lên \u003ca href=\"\/vi\/products\/arawana-northeast-rice-5kg\"\u003ecơm\u003c\/a\u003e nóng rồi áo đều chút \u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\"\u003edầu hào\u003c\/a\u003e.\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  \u003ch2 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eMẹo sơ chế và nấu\u003c\/h2\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;line-height:1.6;\"\u003e\n    \u003cli\u003eChà rửa sạch; có thể giữ vỏ (vỏ nướng lên ăn ngon).\u003c\/li\u003e\n    \u003cli\u003eMuốn xào nhanh, hấp sơ khoai cắt khối 5–7 phút rồi cho vào chảo xào tiếp.\u003c\/li\u003e\n    \u003cli\u003eNướng khoai cắt múi ở nhiệt cao với ít dầu đến khi cạnh lên màu.\u003c\/li\u003e\n    \u003cli\u003eKhi nấu canh nhanh, cắt lát mỏng để khoai mềm đều mà không làm các nguyên liệu khác chín quá.\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  \u003ch2 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eGợi ý kết hợp\u003c\/h2\u003e\n  \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;line-height:1.7;\"\u003e\n    \u003cli\u003e\u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\"\u003eHaitian Dầu hào cao cấp 700g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/vi\/products\/haday-golden-label-light-soy-sauce-1-28l\"\u003eHaday Golden Label Nước tương nhạt\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003eBull Head Nước dùng gà trong\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-300g\"\u003eChois Nấm hương 300g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/vi\/products\/fresh-dried-garlic-heads-approximately-500g\"\u003eTỏi củ 500g\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"\/vi\/products\/fresh-green-lantern-peppers-pack-of-3\"\u003eỚt chuông xanh (Gói 3)\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  \u003ch2 style=\"margin:0;font-size:18px;font-weight:700;\"\u003eXem thêm cùng loại\u003c\/h2\u003e\n  \u003ca href=\"\/vi\/collections\/potatoes-root-vegetables\" style=\"color:#DB3A35;text-decoration:none;border-bottom:1px solid #DB3A35;font-weight:700;\"\u003eXem tất cả Khoai \u0026amp; Củ\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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=\"\/vi\/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":48151490199839,"sku":"A0735745752180","price":5.79,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/4049e40aea454854f53aca1094bb6493IXVU9pgHPRmMEeuPf1n5vApAtXFyCWIj.jpg?v=1712384323"},{"product_id":"fresh-red-skin-potatoes-approximately-1kg","title":"Khoai tây đỏ Úc 1 kg – dẻo mịn, chế biến đa dạng","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:12px;color:#0f172a;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=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;\"\u003e\n  \u003ch1 style=\"margin:0 0 6px;font-size:26px;font-weight:800;color:#0f172a;\"\u003eKhoai tây đỏ 1kg\u003c\/h1\u003e\n  \u003cp style=\"margin:8px 0 0;color:#475569;font-size:14px;\"\u003eKhoai vỏ mỏng màu đỏ, ruột bùi mịn, ngọt tự nhiên và thơm nhẹ. Dùng nướng, trộn salad, hầm hoặc xào nhanh—khoai giữ miếng tốt khi nấu.\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;\"\u003eĐặc điểm sản phẩm\u003c\/h3\u003e\n  \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n    \u003cli\u003eRuột dẻo, chín mềm mà không dễ nát—hợp để nướng và làm salad khoai tây.\u003c\/li\u003e\n    \u003cli\u003eVỏ mỏng, có thêm hương vị và dưỡng chất—không cần gọt vỏ.\u003c\/li\u003e\n    \u003cli\u003eCó thể nướng, xào, nấu canh hoặc đập dẹt để nướng giòn cạnh.\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;\"\u003eGợi ý chế biến\u003c\/h3\u003e\n  \u003cdiv style=\"display:grid;grid-template-columns:1fr;gap:12px;\"\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;margin-bottom:4px;\"\u003eKhoai tây đỏ nướng giòn với tỏi \u0026amp; rau thơm\u003c\/div\u003e\n      \u003cdiv style=\"color:#334155;font-size:14px;\"\u003eTrộn khoai cắt miếng với ít dầu, \u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eTỏi bóc vỏ - 250g\u003c\/a\u003e đập dập, muối và tiêu; nướng ở nhiệt cao đến vàng (khoảng 25–35 phút). Dùng dầu vị trung tính như \u003ca href=\"\/vi\/products\/88-canola-oil-1l\" style=\"color:#DB3A35;text-decoration:underline;\"\u003e88 Dầu cải - 1L\u003c\/a\u003e.\u003c\/div\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;margin-bottom:4px;\"\u003eKhoai tây sợi xào chua cay \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\"\u003eÍt dầu hơn\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv style=\"color:#334155;font-size:14px;\"\u003eCắt khoai thành sợi, rửa bớt tinh bột rồi xào nhanh với \u003ca href=\"\/vi\/products\/fresh-spiral-jalapeno-peppers-approximately-200g\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eỚt xanh dài, 200g\u003c\/a\u003e cắt sợi, một ít \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eHengshun Giấm gạo trắng 500ml\u003c\/a\u003e và chút \u003ca href=\"\/vi\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eHaitian Nước tương nhạt cao cấp 500ml\u003c\/a\u003e cho vị chua, giòn (2–4 phút).\u003c\/div\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;margin-bottom:4px;\"\u003eCanh khoai tây, nấm hương \u0026amp; đậu hũ\u003c\/div\u003e\n      \u003cdiv style=\"color:#334155;font-size:14px;\"\u003eNấu liu riu khoai tây cắt khối trong \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eBull Head Nước dùng gà trong 411ml\u003c\/a\u003e, thêm \u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-100g\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eChois Nấm hương - 100g\u003c\/a\u003e và những miếng \u003ca href=\"\/vi\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eEver Green Đậu hũ truyền thống, 500g\u003c\/a\u003e mềm, nấu đến chín; thêm ít dầu mè và tiêu trắng lúc cuối.\u003c\/div\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;margin-bottom:4px;\"\u003eSalad khoai tây đỏ với hành tím dùng ấm\u003c\/div\u003e\n      \u003cdiv style=\"color:#334155;font-size:14px;\"\u003eLuộc khoai vừa mềm, lúc còn ấm trộn với \u003ca href=\"\/vi\/products\/shallots-500g\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eHành tím - 500g\u003c\/a\u003e băm nhỏ, một ít \u003ca href=\"\/vi\/products\/baoding-shanghai-rice-vinegar-500ml\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eBaoding Giấm gạo Shanghai 500ml\u003c\/a\u003e, dầu ô liu, muối và rau thơm. Ăn kèm thịt hoặc cá nướng.\u003c\/div\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;\"\u003eMẹo sơ chế và nấu\u003c\/h3\u003e\n  \u003cul style=\"margin:0 0 0 18px;color:#334155;font-size:14px;\"\u003e\n    \u003cli\u003eChà rửa sạch, giữ vỏ để giữ màu sắc và dưỡng chất.\u003c\/li\u003e\n    \u003cli\u003eKhi nướng: luộc sơ 5–8 phút, xóc cho cạnh hơi sần rồi nướng nhiệt cao để giòn hơn.\u003c\/li\u003e\n    \u003cli\u003eKhi xào sợi: rửa và để thật ráo để bớt tinh bột ngoài; xào lửa lớn cho vừa chín tới, còn giòn.\u003c\/li\u003e\n    \u003cli\u003eKhi luộc làm salad, cho khoai vào nước lạnh có muối để chín đều và giữ miếng.\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;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n  \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eCó thể kết hợp với: \n    \u003ca href=\"\/vi\/products\/fresh-yellow-onions-1kg\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eHành tây vàng 1kg\u003c\/a\u003e, \n    \u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eTỏi bóc vỏ\u003c\/a\u003e, \n    \u003ca href=\"\/vi\/products\/fresh-spiral-jalapeno-peppers-approximately-200g\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eỚt xanh dài\u003c\/a\u003e, \n    \u003ca href=\"\/vi\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eNước tương nhạt\u003c\/a\u003e, \n    \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eGiấm gạo\u003c\/a\u003e, \n    \u003ca href=\"\/vi\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eDầu ớt giòn\u003c\/a\u003e.\n  \u003c\/p\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eXem thêm cùng loại\u003c\/h3\u003e\n  \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eXem thêm các loại khoai củ: \u003ca href=\"\/vi\/collections\/potatoes-root-vegetables\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eKhoai \u0026amp; Củ\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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\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=\"\/vi\/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","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48151490789663,"sku":"A0735745752203","price":5.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/4049e40aea454854f53aca1094bb6493YTiCbInczPxFie8UCpASft1Zr5K0s2Up.jpg?v=1712384366"},{"product_id":"fresh-corn-on-the-cob-top-removed-pack-of-3-cut-into-sections","title":"Bắp Siêu Ngọt Bonaccord 500 g (3 củ) – tươi giòn, vị ngọt tự nhiên","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:6px 0 18px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#334155;line-height:1.55;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;display:flex;gap:16px;align-items:flex-start;\"\u003e\n  \u003cdiv style=\"flex:1 1 340px;min-width:240px;\"\u003e\n    \u003ch1 style=\"margin:0 0 6px;font-size:22px;font-weight:800;\"\u003eBắp ngọt, gói 3 (500g)\u003c\/h1\u003e\n    \u003cdiv style=\"display:inline-block;border:1px solid #e2e8f0;border-radius:999px;padding:4px 10px;color:#64748b;font-size:12px;font-weight:600;\"\u003eBắp cắt khúc sẵn • Nấu nhanh\u003c\/div\u003e\n    \u003cp style=\"margin:10px 0 0;\"\u003eBắp ngọt, mọng nước được cắt khúc tiện cho vào chảo, nồi hoặc vỉ nướng. Dùng cho bữa tối trong tuần, BBQ, súp hoặc món xào.\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\/2_37103070-f29a-4adc-a3e1-9a8352c770ac.jpg?v=1731489683\" alt=\"Sweek Corns 3-Pack (500g) pre-cut cob sections\" style=\"width:100%;height:auto;border-radius:12px;border:1px solid #e2e8f0;\"\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;\"\u003eĐiểm nổi bật của sản phẩm\u003c\/h3\u003e\n  \u003cul style=\"margin:0 0 0 18px;padding:0;\"\u003e\n    \u003cli\u003eHạt bắp tươi, ngọt tự nhiên và giòn.\u003c\/li\u003e\n    \u003cli\u003eCắt khúc sẵn tiện dùng, giúp nấu nhanh và chín đều.\u003c\/li\u003e\n    \u003cli\u003eDùng để nướng, luộc, hấp, xào hoặc nấu súp.\u003c\/li\u003e\n    \u003cli\u003eChỉ cần vài phút nấu—tiện cho những tối bận rộn.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 12px;font-size:18px;font-weight:700;\"\u003eGợi ý thưởng thức\u003c\/h3\u003e\n  \u003cdiv style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;\"\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;background:#fff;border-radius:12px;padding:14px;\"\u003e\n      \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eBắp nướng nước tương–mè với ớt chưng giòn\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;\"\u003eÁp chảo hoặc nướng bắp đến khi bề mặt hơi xém; trộn với vài giọt dầu mè rang và một muỗng ớt chưng giòn. Có thể dùng \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003eLee Kum Kee Dầu mè\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/chuanwazi-crispy-chili-oil-with-peanuts-200g-sichuan-chili-crisp\" style=\"color:var(--brand);\"\u003eChuanwazi Ớt chưng giòn\u003c\/a\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;background:#fff;border-radius:12px;padding:14px;\"\u003e\n      \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eSúp gà với nấm kim châm \u0026amp; bắp ngọt\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;\"\u003eNấu bắp cắt khúc trong nước dùng gà trong, thêm nấm kim châm, nêm nhẹ và rắc hành lá lúc cuối. Dùng \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:var(--brand);\"\u003eBull Head Nước dùng gà\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/chois-enoki-mushrooms-300g\" style=\"color:var(--brand);\"\u003eNấm kim châm\u003c\/a\u003e. Món ăn sẵn sàng trong khoảng 8–12 phút.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;background:#fff;border-radius:12px;padding:14px;\"\u003e\n      \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eBắp xào ớt chuông đỏ \u0026amp; tỏi\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;\"\u003eTách hạt hoặc chẻ khúc bắp làm tư; xào với ớt chuông đỏ cắt hạt lựu và tỏi đến khi vừa mềm giòn (3–5 phút). Dùng \u003ca href=\"\/vi\/products\/fresh-red-lantern-peppers-pack-of-3\" style=\"color:var(--brand);\"\u003eỚt chuông đỏ\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\" style=\"color:var(--brand);\"\u003eTỏi bóc vỏ\u003c\/a\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;background:#fff;border-radius:12px;padding:14px;\"\u003e\n      \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eSalad đậu hũ–bắp lạnh với giấm gạo \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\"\u003eNhẹ \u0026amp; thanh mát\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;\"\u003eHâm bắp bằng lò vi sóng hoặc hấp (2–4 phút); tách hạt rồi trộn với đậu hũ cứng để lạnh, giấm gạo, chút muối và rau thơm. Thử \u003ca href=\"\/vi\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" style=\"color:var(--brand);\"\u003eEver Green Classic Đậu hũ\u003c\/a\u003e với \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003eHengshun Giấm gạo trắng\u003c\/a\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;background:#fff;border-radius:12px;padding:14px;\"\u003e\n      \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eTôm \u0026amp; bắp gói giấy bạc (BBQ hoặc lò nướng)\u003c\/div\u003e\n      \u003cp style=\"margin:6px 0 0;\"\u003eGói bắp cắt khúc với tôm, ít dầu ăn vị trung tính, tỏi và tiêu; gói kín, nấu đến khi mọng nước (10–15 phút ở lửa vừa). Dùng \u003ca href=\"\/vi\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\" style=\"color:var(--brand);\"\u003eTôm lớn sống Úc\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/88-canola-oil-1l\" style=\"color:var(--brand);\"\u003e88 Dầu hạt cải\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;\"\u003eMẹo sơ chế\u003c\/h3\u003e\n  \u003cul style=\"margin:0 0 0 18px;padding:0;\"\u003e\n    \u003cli\u003eLuộc hoặc hấp đến khi bắp sáng màu và mềm, khoảng 3–6 phút tùy kích cỡ.\u003c\/li\u003e\n    \u003cli\u003eKhi nướng, phết ít dầu và trở thường xuyên trong 8–12 phút đến khi hơi xém.\u003c\/li\u003e\n    \u003cli\u003eKhi xào, tách hạt khỏi lõi để mau chín (2–4 phút ở lửa lớn).\u003c\/li\u003e\n    \u003cli\u003eNêm đơn giản với muối, chút nước tương hoặc dầu ớt để giữ rõ vị ngọt của bắp.\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;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n  \u003cul style=\"margin:0 0 0 18px;padding:0;\"\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:var(--brand);\"\u003eHaitian Premium Dầu hào 700g\u003c\/a\u003e cho món xào bóng đẹp.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/chuan-lao-hui-pure-sesame-oil-320ml\" style=\"color:var(--brand);\"\u003eChuan Lao Hui Dầu mè nguyên chất\u003c\/a\u003e thêm mùi thơm bùi.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\" style=\"color:var(--brand);\"\u003eHengshun Giấm thơm Trấn Giang\u003c\/a\u003e để cân bằng vị ngọt.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/haidilao-tomato-hot-pot-base-200g\" style=\"color:var(--brand);\"\u003eHaidilao Cốt lẩu cà chua\u003c\/a\u003e—bắp giúp nước dùng có vị ngọt tự nhiên.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-300g\" style=\"color:var(--brand);\"\u003eChois Nấm hương - 300g\u003c\/a\u003e thêm vị nấm đậm.\u003c\/li\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/meat-boys-frozen-angus-beef-short-ribs-500g\" style=\"color:var(--brand);\"\u003eSườn bò Angus - 500g\u003c\/a\u003e ăn kèm bắp nướng.\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:10px;\"\u003e\n  \u003ch3 style=\"margin:0;font-size:18px;font-weight:700;\"\u003eSản phẩm cùng loại\u003c\/h3\u003e\n  \u003ca href=\"\/vi\/collections\/corn\" style=\"color:var(--brand);font-weight:700;\"\u003eXem tất cả bắp →\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trực tuyến! Nhận đơn hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eBấm vào đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện tại.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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=\"\/vi\/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":48151490887967,"sku":"9202402011404","price":5.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/2_37103070-f29a-4adc-a3e1-9a8352c770ac.jpg?v=1731489683"},{"product_id":"fresh-small-corn-1-box","title":"Ngô Non (Baby Corn) 1 hộp – rau đa dụng xào, lẩu \u0026 salad","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;padding:8px 0;color:#0f172a;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.6;\"\u003e\n  \u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;margin-top:8px;\"\u003e\n    \u003ch1 style=\"margin:0 0 4px;font-size:26px;font-weight:800;\"\u003eBắp non tươi - 1 hộp\u003c\/h1\u003e\n    \u003cdiv style=\"color:#64748b;font-size:14px;margin-top:6px;\"\u003eCòn gọi là bắp non\u003c\/div\u003e\n    \u003cp style=\"margin:10px 0 0;font-size:15px;color:#334155;\"\u003eTrái bắp nhỏ, giòn ngọt, giữ độ giòn khi nấu lửa lớn — dùng xào, nấu canh, trộn salad hoặc nướng.\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;\"\u003eĐặc điểm sản phẩm\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eGiòn mềm vừa ăn, ngọt nhẹ, chỉ cần vài phút để nấu.\u003c\/li\u003e\n      \u003cli\u003eHợp với món xào kiểu Á, mì nước, lẩu và salad tươi.\u003c\/li\u003e\n      \u003cli\u003eTrái nhỏ vừa ăn, kích cỡ đều — không cần bóc vỏ, ít mất công sơ chế.\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;\"\u003eGợi ý chế biến\u003c\/h3\u003e\n    \u003col style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli style=\"margin:10px 0 0;\"\u003e\n        \u003cdiv style=\"font-weight:700;\"\u003eBắp non xào tỏi dầu hào\u003c\/div\u003e\n        \u003cdiv\u003eXào bắp non với tỏi đập dập (\u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\"\u003eTỏi bóc vỏ - 250g\u003c\/a\u003e), chút \u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\"\u003eHaitian Dầu hào cao cấp 700g\u003c\/a\u003e và ít nước; xào lửa lớn 2–4 phút cho sốt áo đều, bắp còn giòn.\u003c\/div\u003e\n      \u003c\/li\u003e\n      \u003cli style=\"margin:10px 0 0;\"\u003e\n        \u003cdiv style=\"font-weight:700;\"\u003eBún nước gà \u0026amp; rau củ thanh nhẹ \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\"\u003eMón nước\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003eĐun liu riu \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003eBull Head Nước dùng gà trong 411ml\u003c\/a\u003e, thêm bắp non cắt lát, thịt gà nạc luộc (\u003ca href=\"\/vi\/products\/premium-selected-frozen-chicken-breast-1kg\"\u003ePhi lê ức gà cao cấp- 1kg\u003c\/a\u003e) và nấu mềm \u003ca href=\"\/vi\/products\/chunsi-jiangxi-rice-noodles-300g\"\u003eChunsi Bún gạo Jiangxi 300g\u003c\/a\u003e. Nêm nhẹ, rắc hành lá lên trên.\u003c\/div\u003e\n      \u003c\/li\u003e\n      \u003cli style=\"margin:10px 0 0;\"\u003e\n        \u003cdiv style=\"font-weight:700;\"\u003eSalad mè–giấm gạo\u003c\/div\u003e\n        \u003cdiv\u003eChần bắp non 1–2 phút, để nguội rồi trộn với rau lá (\u003ca href=\"\/vi\/products\/fresh-mixed-salad-greens-mesclun-mix-300g\"\u003eRau xà lách hỗn hợp mesclun 300g\u003c\/a\u003e), \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\"\u003eHengshun Giấm gạo trắng\u003c\/a\u003e, một ít \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eLee Kum Kee Dầu mè nguyên chất\u003c\/a\u003e và chút muối.\u003c\/div\u003e\n      \u003c\/li\u003e\n      \u003cli style=\"margin:10px 0 0;\"\u003e\n        \u003cdiv style=\"font-weight:700;\"\u003eThịt bò xào tiêu \u0026amp; bắp non\u003c\/div\u003e\n        \u003cdiv\u003eXào nhanh bắp non với thịt bò mềm cắt sợi (\u003ca href=\"\/vi\/products\/angus-prime-shredded-beef-500g\"\u003eThịt bò Angus thượng hạng cắt sợi 500g\u003c\/a\u003e), tiêu đập dập và chút nước tương (\u003ca href=\"\/vi\/products\/kikkoman-all-purpose-soy-sauce-1-6l\"\u003eKikkoman Nước tương đa dụng 1.6L\u003c\/a\u003e), đảo 3–5 phút để có món xào đậm sốt.\u003c\/div\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;\"\u003eMẹo sơ chế và nấu\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eRửa rồi thấm khô; cắt bỏ phần gốc cứng nếu cần.\u003c\/li\u003e\n      \u003cli\u003eXào lửa lớn 2–4 phút để giữ độ giòn; thêm ít nước để bắp chín bằng hơi lúc cuối.\u003c\/li\u003e\n      \u003cli\u003eChần 1–2 phút trước khi trộn salad hoặc làm món nguội nhanh.\u003c\/li\u003e\n      \u003cli\u003eNướng hoặc áp chảo với ít dầu đến khi hơi xém, thỉnh thoảng trở mặt.\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;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/kikkoman-all-purpose-soy-sauce-1-6l\"\u003eKikkoman Nước tương đa dụng - 1.6L\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\"\u003eHaitian Dầu hào cao cấp 700g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003eLee Kum Kee Dầu mè nguyên chất 207ml\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-300g\"\u003eChois Nấm hương - 300g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/premium-selected-frozen-chicken-breast-1kg\"\u003ePhi lê ức gà cao cấp- 1kg\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003eTôm lớn sống Úc – Bóc vỏ \u0026amp; giữ đuôi, cấp đông nhanh 700g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eEver Green Đậu hũ truyền thống, 500g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/chunsi-jiangxi-rice-vermicelli-300g\"\u003eChunsi Bún gạo Jiangxi 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;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;\"\u003e\n    \u003cdiv\u003e\n      \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eXem thêm cùng loại\u003c\/h3\u003e\n      \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eBạn thích vị giòn ngọt của bắp? Xem thêm các loại bắp trong cửa hàng.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"min-width:max-content;\"\u003e\u003ca href=\"\/vi\/collections\/corn\" style=\"color:var(--brand);font-weight:700;\"\u003eXem tất cả các loại bắp →\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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=\"\/vi\/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":48151491117343,"sku":"9202402011403","price":4.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/24b56963bff0f0c0df0cd2f0ead88640XGtsNfpbAxQ84rXjM6Kom3QB5cJ2bV2W.png?v=1712384392"},{"product_id":"fresh-small-taro-1kg","title":"Khoai Môn Nhỏ Tươi 1 kg – củ bùi thơm, giàu chất xơ","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:#334155;line-height:1.6;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:24px;margin-top:16px;\"\u003e\n  \u003ch1 style=\"margin:0 0 6px;font-size:26px;line-height:1.25;\"\u003eKhoai môn củ nhỏ tươi - 1kg\u003c\/h1\u003e\n  \u003cp style=\"margin:8px 0 0;\"\u003eKhoai môn củ nhỏ bùi mịn, nấu chín thì mềm xốp — dùng nấu canh, kho, ăn lẩu hoặc hấp.\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;\"\u003eĐặc điểm sản phẩm\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;padding:0;\"\u003e\n    \u003cli\u003eChín kỹ thì bùi xốp như hạt dẻ, có vị ngọt nhẹ.\u003c\/li\u003e\n    \u003cli\u003eCủ nhỏ vừa ăn, giữ miếng khi nấu canh hoặc kho, bên trong vẫn bùi mịn.\u003c\/li\u003e\n    \u003cli\u003eHấp rồi thêm nước tương và hẹ, hầm với thịt heo hoặc cho vào lẩu.\u003c\/li\u003e\n    \u003cli\u003eGiúp nước dùng và món hầm sánh hơn — không cần thêm sữa hay bột.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 14px;font-size:18px;font-weight:700;\"\u003eGợi ý chế biến\u003c\/h3\u003e\n  \u003cdiv style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;\"\u003e\n    \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff;\"\u003e\n      \u003cdiv style=\"font-weight:700;margin-bottom:6px;\"\u003eCanh sườn heo \u0026amp; khoai mô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\"\u003eMón nước\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv style=\"font-size:14px;color:#475569;\"\u003eLuộc sơ khoai môn rồi hầm với \u003ca href=\"\/vi\/products\/umall-frozen-pork-spare-ribs-600g\"\u003esườn heo\u003c\/a\u003e, một lon \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003enước dùng gà trong\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003egừng\u003c\/a\u003e cắt lát đến khi khoai mềm mịn, nước canh hơi sánh. Rắc thêm \u003ca href=\"\/vi\/products\/fresh-bundle-of-spring-onions\"\u003ehành tím băm\u003c\/a\u003e.\u003c\/div\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;margin-bottom:6px;\"\u003eKhoai môn kho ba rọi heo\u003c\/div\u003e\n      \u003cdiv style=\"font-size:14px;color:#475569;\"\u003eÁp chảo thịt cắt khối từ \u003ca href=\"\/vi\/products\/borrowdale-free-range-pork-belly-bbq-slices-6mm-500g\"\u003eba rọi heo\u003c\/a\u003e, thêm khoai môn đã chần, \u003ca href=\"\/vi\/products\/haitian-dark-soy-sauce-500ml\"\u003enước tương đen\u003c\/a\u003e, đường và nước; kho liu riu đến khi sốt bóng, thịt khoai mềm. Thêm ít \u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\"\u003etỏi\u003c\/a\u003e vào cuối.\u003c\/div\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;margin-bottom:6px;\"\u003eLẩu cà chua với khoai môn, nấm shimeji \u0026amp; đậu hũ chiên phồng\u003c\/div\u003e\n      \u003cdiv style=\"font-size:14px;color:#475569;\"\u003eNấu liu riu \u003ca href=\"\/vi\/products\/haidilao-tomato-hot-pot-base-200g\"\u003enước cốt lẩu cà chua\u003c\/a\u003e với nước. Thêm khoai môn đã luộc sơ, \u003ca href=\"\/vi\/products\/chois-shimeji-mushrooms-150g\"\u003enấm shimeji\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/ever-green-fried-tofu-puffs-200g\"\u003eđậu hũ chiên phồng\u003c\/a\u003e. Nấu đến khi khoai bùi mịn, nấm vừa mềm.\u003c\/div\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;margin-bottom:6px;\"\u003eKhoai môn hấp sốt nước tương–hẹ\u003c\/div\u003e\n      \u003cdiv style=\"font-size:14px;color:#475569;\"\u003eHấp khoai cắt miếng đến mềm, rưới hỗn hợp ấm gồm \u003ca href=\"\/vi\/products\/haitian-premium-light-soy-sauce-500ml\"\u003enước tương nhạt\u003c\/a\u003e, dầu nóng và \u003ca href=\"\/vi\/products\/fresh-bundle-of-chives-pack-of-2\"\u003ehẹ\u003c\/a\u003e cắt nhỏ. Thêm vài giọt \u003ca href=\"\/vi\/products\/amoy-black-sesame-oil-150ml-aromatic-roasted-sesame-essence\"\u003edầu mè đen\u003c\/a\u003e.\u003c\/div\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;\"\u003eMẹo sơ chế và nấu\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;padding:0;\"\u003e\n    \u003cli\u003eNếu da nhạy cảm, nên đeo găng vì khoai môn sống có thể gây ngứa. Gọt dưới vòi nước rồi rửa sạch.\u003c\/li\u003e\n    \u003cli\u003eLuộc sơ khoai đã cắt 5–7 phút để bớt tinh bột ngoài, để ráo trước khi kho, chiên hoặc cho vào lẩu.\u003c\/li\u003e\n    \u003cli\u003eNấu thật chín mềm đến bên trong: hấp 12–18 phút; nấu liu riu hoặc kho 20–30 phút sau khi luộc sơ.\u003c\/li\u003e\n    \u003cli\u003eMuốn cạnh giòn, hấp trước rồi chiên áp chảo với lớp dầu mỏng đến vàng.\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;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n  \u003cul style=\"margin:8px 0 0 18px;padding:0;\"\u003e\n    \u003cli\u003e\n\u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\"\u003eDầu hào\u003c\/a\u003e hoặc \u003ca href=\"\/vi\/products\/haitian-premium-light-soy-sauce-500ml\"\u003enước tương nhạt\u003c\/a\u003e để thêm vị đậm đà\u003c\/li\u003e\n    \u003cli\u003eMột ít \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003edầu mè nguyên chất\u003c\/a\u003e\n\u003c\/li\u003e\n    \u003cli\u003eGia vị thơm: \u003ca href=\"\/vi\/products\/fresh-dried-garlic-heads-approximately-500g\"\u003etỏi củ\u003c\/a\u003e, \u003ca href=\"\/vi\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003egừng\u003c\/a\u003e, \u003ca href=\"\/vi\/products\/fresh-bundle-of-spring-onions\"\u003ehành tím\u003c\/a\u003e\n\u003c\/li\u003e\n    \u003cli\u003eThêm vị bùi thơm với \u003ca href=\"\/vi\/products\/chois-oyster-mushrooms-400g\"\u003enấm bào ngư\u003c\/a\u003e\n\u003c\/li\u003e\n    \u003cli\u003eĂn cùng nguyên liệu giàu đạm: \u003ca href=\"\/vi\/products\/umall-frozen-pork-belly-cubes-600g\"\u003eba rọi heo cắt khối\u003c\/a\u003e hoặc \u003ca href=\"\/vi\/products\/australian-raw-king-prawns-peeled-tail-on-flash-frozen-700g\"\u003etôm lớn\u003c\/a\u003e\n\u003c\/li\u003e\n    \u003cli\u003eThêm đậu hũ để có độ mềm khác: \u003ca href=\"\/vi\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eđậu hũ truyền thống (loại cứng)\u003c\/a\u003e\n\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eXem thêm cùng loại\u003c\/h3\u003e\n  \u003cp style=\"margin:6px 0 0;\"\u003eBạn thích các loại khoai củ? \u003ca href=\"\/vi\/collections\/potatoes-root-vegetables\"\u003eXem bộ sưu tập Khoai \u0026amp; Củ\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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\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=\"\/vi\/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","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48632349720863,"sku":"A0735745755259","price":24.19,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/c71b813236366c9e5a994c9564f41dd4.jpg?v=1724144137"},{"product_id":"fresh-premium-local-yam-1kg","title":"Khoai Mài (Yam) Úc 1 kg – củ mài dẻo mềm, bổ dưỡng","description":"\u003cp\u003eKhoai mài Úc tươi ngon, vỏ mỏng, ruột trắng sáng mang vị bùi tự nhiên. Mềm dẻo khi nấu, dễ kết hợp vào các món luộc, hấp, xào hay nấu canh.\u003c\/p\u003e\u003ch2\u003eĐặc sắc sản phẩm:\u003c\/h2\u003e\u003cul\u003e\u003cli\u003e\u003cstrong\u003eTươi sạch:\u003c\/strong\u003e Thu hoạch trực tiếp, không dùng hóa chất, giữ trọn vị thơm mát.\u003c\/li\u003e\u003cli\u003e\u003cstrong\u003eKết cấu dẻo mịn:\u003c\/strong\u003e Thích hợp làm chè, bột hay dùng làm nguyên liệu chính cho nhiều món ăn.\u003c\/li\u003e\u003cli\u003e\u003cstrong\u003eGiàu dinh dưỡng:\u003c\/strong\u003e Cung cấp nhiều tinh bột, vitamin và khoáng chất cần thiết.\u003c\/li\u003e\u003cli\u003e\u003cstrong\u003eKhối lượng 1 kg:\u003c\/strong\u003e Đủ cho 2–3 người dùng, dễ chia khẩu phần.\u003c\/li\u003e\u003cli\u003e\u003cstrong\u003eĐa dụng:\u003c\/strong\u003e Luộc, hấp, xào, nấu canh hoặc chế biến món tráng miệng đều ngon.\u003c\/li\u003e\u003c\/ul\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":48632354439455,"sku":"A0735745754832","price":21.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/A0735745754832.jpg?v=1724307881"},{"product_id":"fresh-radishes-1-bunch","title":"Củ Cải Đỏ (Radish) 1 bó – giòn ngọt, cay nhẹ","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#0f172a;line-height:1.6;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;margin-top:16px;\"\u003e\n  \u003ch1 style=\"margin:0 0 6px;font-size:26px;line-height:1.2;font-weight:800;\"\u003eCủ cải tươi - 1 bó\u003c\/h1\u003e\n  \u003cp style=\"margin:6px 0 0;color:#475569;font-size:14px;\"\u003eCủ cải giòn, cay nhẹ, màu tươi — dùng trộn salad, muối chua nhanh hoặc xào sơ.\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;\"\u003eĐặc điểm sản phẩm\u003c\/h3\u003e\n  \u003cul style=\"margin:10px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n    \u003cli\u003eGiòn, có vị cay thanh giúp món ăn thêm tươi vị.\u003c\/li\u003e\n    \u003cli\u003eCó thể ăn sống, xào sơ, nướng hoặc muối chua nhanh.\u003c\/li\u003e\n    \u003cli\u003eLá củ cải cũng ăn được, có vị cay nhẹ — cho vào mì hoặc xào đến vừa mềm.\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;\"\u003eGợi ý chế biến\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;font-size:15px;margin:0 0 6px;\"\u003eSalad củ cải giòn với mè–nước tương\u003c\/div\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eCắt củ cải thành lát mỏng, trộn với chút \u003ca href=\"\/vi\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\" style=\"color:var(--brand);\"\u003egiấm thơm Zhenjiang\u003c\/a\u003e, một ít \u003ca href=\"\/vi\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:var(--brand);\"\u003enước tương nhạt\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/fresh-bundle-of-spring-onions\" style=\"color:var(--brand);\"\u003ehành lá\u003c\/a\u003e cắt lát. Thêm vài giọt dầu mè và hạt rang.\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;font-size:15px;margin:0 0 6px;\"\u003eCủ cải muối chua nhanh ăn cùng mì\u003c\/div\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eTrộn củ cải cắt lát mỏng với muối, đường rồi đổ ngập bằng \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003egiấm gạo trắng\u003c\/a\u003e đã làm ấm. Để 10–15 phút. Cho lên \u003ca href=\"\/vi\/products\/chunsi-jiangxi-rice-noodles-300g\" style=\"color:var(--brand);\"\u003ebún gạo\u003c\/a\u003e cùng rau thơm và dầu ớt.\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;font-size:15px;margin:0 0 6px;\"\u003eCủ cải xào tỏi với đậu hũ \u0026amp; dầu hào\u003c\/div\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eCắt củ cải làm đôi hoặc tư, xào nhanh với \u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\" style=\"color:var(--brand);\"\u003etỏi\u003c\/a\u003e và những miếng \u003ca href=\"\/vi\/products\/fresh-ever-green-dried-tofu-4-pieces-approximately-400g\" style=\"color:var(--brand);\"\u003eđậu hũ khô\u003c\/a\u003e. Thêm một muỗng \u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:var(--brand);\"\u003edầu hào\u003c\/a\u003e và chút nước, xào 2–4 phút đến vừa mềm.\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;font-size:15px;margin:0 0 6px;\"\u003eCanh củ cải \u0026amp; nấm hương \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\"\u003eMón nước\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eNấu liu riu củ cải cắt múi và \u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-100g\" style=\"color:var(--brand);\"\u003enấm hương\u003c\/a\u003e cắt lát trong \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:var(--brand);\"\u003enước dùng gà trong\u003c\/a\u003e 5–8 phút; thêm tiêu trắng và hành lá lúc cuối.\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;\"\u003eMẹo sơ chế và nấu\u003c\/h3\u003e\n  \u003cul style=\"margin:10px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n    \u003cli\u003eCắt phần lá để riêng, giữ lại để xào nhanh với tỏi hoặc cho vào mì.\u003c\/li\u003e\n    \u003cli\u003eMuốn lát củ cải giòn hơn, ngâm nước đá 5–10 phút rồi để thật ráo.\u003c\/li\u003e\n    \u003cli\u003eCắt đôi hoặc tư khi xào; giữ lửa lớn để củ cải còn giòn.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n  \u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n  \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eThử thêm một ít \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003edầu mè nguyên chất\u003c\/a\u003e, chút \u003ca href=\"\/vi\/products\/haday-golden-label-light-soy-sauce-1-28l\" style=\"color:var(--brand);\"\u003enước tương nhạt\u003c\/a\u003e hoặc \u003ca href=\"\/vi\/products\/haitian-dark-soy-sauce-500ml\" style=\"color:var(--brand);\"\u003enước tương đen\u003c\/a\u003e. Muốn thêm đạm, dùng \u003ca href=\"\/vi\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\" style=\"color:var(--brand);\"\u003eđậu hũ truyền thống\u003c\/a\u003e hoặc thêm vị bùi thơm với \u003ca href=\"\/vi\/products\/chois-oyster-mushrooms-400g\" style=\"color:var(--brand);\"\u003enấm bào ngư\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/section\u003e\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;display:flex;justify-content:space-between;align-items:center;gap:12px;\"\u003e\n  \u003cdiv\u003e\n    \u003ch3 style=\"margin:0 0 6px;font-size:18px;font-weight:700;\"\u003eXem thêm cùng loại\u003c\/h3\u003e\n    \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eXem thêm các loại củ giòn, cay nhẹ và phù hợp nấu canh.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003ca href=\"\/vi\/collections\/radish\" style=\"color:var(--brand);font-weight:700;border:1px solid #e2e8f0;padding:10px 14px;border-radius:12px;background:#fff;\"\u003eXem tất cả các loại củ cải →\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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=\"\/vi\/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":48800945701151,"sku":"A0735745755310","price":2.49,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/A0735745755310.jpg?v=1724308104"},{"product_id":"ming-fa-frozen-young-taro-400g","title":"Khoai môn non Ming Fa 400 g – đông lạnh tiện nấu chè \u0026 canh","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;color:#0f172a;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.6;\"\u003e\n\u003cstyle\u003e#umall-desc a{ text-decoration:none !important; border-bottom:1px solid var(--brand) !important; } #umall-desc a:hover{ opacity:.85; }\u003c\/style\u003e\n\n\n\n\n\n\n\u003cstyle\u003e\n\/* DESC ENHANCER v1 *\/\n#umall-desc .um-slider{ display:grid; grid-auto-flow:column; grid-auto-columns:180px; gap:12px; overflow-x:auto; padding:2px 2px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin-top:12px; }\n#umall-desc .um-slider::-webkit-scrollbar{ height:8px; }\n#umall-desc .um-slider::-webkit-scrollbar-thumb{ background:#e5e7eb; border-radius:999px; }\n#umall-desc .um-card{ scroll-snap-align:start; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; text-decoration:none; color:inherit; }\n#umall-desc a.um-card{ border-bottom:1px solid #e5e7eb !important; text-decoration:none !important; }\n#umall-desc a[style*=\"border-radius:999\"]{ border-bottom:1px solid #e2e8f0 !important; text-decoration:none !important; }\n#umall-desc .um-imgbox{ background:#fff; display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:1\/1; height:auto; position:relative; }\n#umall-desc .um-imgbox img{ max-width:100%; max-height:100%; object-fit:contain; }\n#umall-desc .um-badge{ position:absolute; top:8px; left:8px; background:rgba(219,58,53,.92); color:#fff; font-weight:700; font-size:12px; padding:2px 6px; border-radius:6px; display:none; }\n#umall-desc .um-meta{ padding:10px 10px 12px; display:flex; flex-direction:column; gap:6px; }\n#umall-desc .um-title{ font-size:14px; font-weight:600; color:#0f172a; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:38px; }\n#umall-desc .um-price{ font-size:14px; font-weight:700; color:var(--brand); display:flex; align-items:center; gap:8px; }\n#umall-desc .um-price s{ color:#94a3b8; font-weight:500; }\n#umall-desc .um-recipes{ display:grid; grid-template-columns:repeat(1,minmax(0,1fr)); gap:12px; margin-top:12px; }\n@media (min-width:640px){ #umall-desc .um-recipes{ grid-template-columns:repeat(2,minmax(0,1fr)); } }\n@media (min-width:1024px){ #umall-desc .um-recipes{ grid-template-columns:repeat(3,minmax(0,1fr)); } }\n#umall-desc .um-rcard{ border:1px solid #e2e8f0; border-radius:12px; background:#fff; padding:16px; }\n#umall-desc .um-rcard h4{ margin:0 0 6px; font-size:16px; font-weight:700; color:#0f172a; }\n#umall-desc .um-rcard p, #umall-desc .um-rcard div{ margin:0; font-size:14px; color:#334155; }\n#umall-desc .um-section-title{ margin:16px 0 10px; font-size:16px; font-weight:800; }\n\u003c\/style\u003e\n\n\n\n\n\n\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:22px;margin-top:0;\"\u003e\u003ch1 style=\"margin:0;font-size:24px;line-height:1.25;\"\u003eMing Fa Khoai môn non đông lạnh - 400g\u003c\/h1\u003e\n\u003cp style=\"margin:8px 0 0;color:#475569;font-size:14px;\"\u003eKhoai môn non đã gọt vỏ và cấp đông nhanh, tiện chế biến — ruột bùi mịn, giữ miếng khi nấu canh, kho và xào.\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;\"\u003eĐặc điểm sản phẩm\u003c\/h3\u003e\n\u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n\u003cli\u003eBùi mịn, ngọt nhẹ, giữ hương vị khoai môn quen thuộc.\u003c\/li\u003e\n\u003cli\u003eĐã gọt vỏ và chia phần, không cần sơ chế; nấu trực tiếp từ đông lạnh.\u003c\/li\u003e\n\u003cli\u003eGiữ nguyên miếng khi nấu liu riu hoặc xào nhẹ, không dễ bị nhũn.\u003c\/li\u003e\n\u003cli\u003eDùng ăn lẩu, nấu hầm, xào hoặc nấu chè nước cốt dừa.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eGợi ý chế biến\u003c\/h3\u003e\n\u003col style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eCanh khoai môn \u0026amp; đậu hũ\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\"\u003e Món nước\u003c\/span\u003e — Nấu liu riu khoai môn trong \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003enước dùng gà trong\u003c\/a\u003e cùng những lát \u003ca href=\"\/vi\/products\/fresh-ever-green-chinese-style-tofu-approximately-500g\"\u003eđậu hũ truyền thống\u003c\/a\u003e và vài lát \u003ca href=\"\/vi\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003egừng tươi\u003c\/a\u003e đến vừa mềm (8–12 phút). Thêm chút tiêu trắng lúc cuối.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eKhoai môn xào dầu hào và hẹ\u003c\/strong\u003e — Luộc sơ khoai môn 3–4 phút, áp chảo đến vàng. Đảo cùng \u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\"\u003edầu hào\u003c\/a\u003e, \u003ca href=\"\/vi\/products\/fresh-bundle-of-chives-pack-of-2\"\u003ehẹ tươi\u003c\/a\u003e và ít \u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\"\u003etỏi\u003c\/a\u003e băm, xào trên chảo nóng với \u003ca href=\"\/vi\/products\/88-canola-oil-1l\"\u003edầu cải\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eKhoai môn cắt khối cho món lẩu\u003c\/strong\u003e — Cho khoai môn vào nồi \u003ca href=\"\/vi\/products\/haidilao-tomato-hot-pot-base-200g\"\u003enước cốt lẩu cà chua\u003c\/a\u003e đang sôi nhẹ, nấu 6–10 phút cùng \u003ca href=\"\/vi\/products\/frozen-northern-style-wagyu-beef-rolls-225g\"\u003ethịt bò wagyu cuộn\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/chois-enoki-mushrooms-300g\"\u003enấm kim châm\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eKhoai môn kho ba rọi heo với nước tương\u003c\/strong\u003e — Áp chảo cho vàng mặt \u003ca href=\"\/vi\/products\/borrowdale-free-range-pork-belly-slices-3mm-500g\"\u003eba rọi heo cắt lát\u003c\/a\u003e; thêm khoai môn, chút \u003ca href=\"\/vi\/products\/haitian-dark-soy-sauce-500ml\"\u003enước tương đen\u003c\/a\u003e và nước dùng loãng, kho liu riu đến khi mềm và sốt bóng.\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 8px;font-size:18px;font-weight:700;\"\u003eMẹo sơ chế và nấu\u003c\/h3\u003e\n\u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n\u003cli\u003eNấu trực tiếp từ đông lạnh khi làm canh hoặc món hầm; nếu áp chảo hay xào thì rã đông sơ, thấm thật khô để dễ vàng mặt.\u003c\/li\u003e\n\u003cli\u003eLuộc sơ 3–4 phút trước khi xào để khoai giữ nguyên khối.\u003c\/li\u003e\n\u003cli\u003eNấu lửa nhỏ đến vừa mềm (8–12 phút tùy kích cỡ); tránh đun sôi mạnh hoặc đảo quá nhiều.\u003c\/li\u003e\n\u003cli\u003eLuôn nấu chín kỹ trước khi ăn.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n\u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n\u003cli\u003e\n\u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\"\u003eTỏi\u003c\/a\u003e \u0026amp; \u003ca href=\"\/vi\/products\/fresh-green-leaf-farm-tender-ginger-approximately-500g\"\u003egừng\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"\/vi\/products\/kikkoman-all-purpose-soy-sauce-1-6l\"\u003eNước tương\u003c\/a\u003e \u0026amp; \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\"\u003edầu mè\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003eThêm vị đậm đà với \u003ca href=\"\/vi\/products\/chois-shiitake-mushrooms-300g\"\u003enấm hương\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003eNước dùng cho món canh: \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\"\u003enước dùng gà\u003c\/a\u003e hoặc \u003ca href=\"\/vi\/products\/haidilao-mushroom-flavor-hot-pot-seasoning-150g\"\u003egia vị lẩu nấm\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003eKết hợp thêm đạm: đậu hũ cứng, ba rọi heo, thịt bò cắt lát\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;\"\u003eXem thêm cùng loại\u003c\/h3\u003e\n\u003cdiv style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;\"\u003e\n\u003ca href=\"\/vi\/products\/fresh-small-taro-1kg\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:14px;color:#0f172a;background:#fff;\"\u003e\u003cdiv style=\"font-weight:600;\"\u003eKhoai môn củ nhỏ tươi - 1kg\u003c\/div\u003e\n\u003cdiv style=\"font-size:12px;color:#64748b;\"\u003eLựa chọn khoai tươi\u003c\/div\u003e\u003c\/a\u003e\n\u003ca href=\"\/vi\/products\/fresh-selection-of-fresh-lotus-root-various-sizes-available\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:14px;color:#0f172a;background:#fff;\"\u003e\u003cdiv style=\"font-weight:600;\"\u003eCủ sen tươi 1–1.2kg\u003c\/div\u003e\n\u003cdiv style=\"font-size:12px;color:#64748b;\"\u003eGiòn ngon khi xào\u003c\/div\u003e\u003c\/a\u003e\n\u003ca href=\"\/vi\/products\/fresh-soil-free-potatoes-approximately-1kg\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:14px;color:#0f172a;background:#fff;\"\u003e\u003cdiv style=\"font-weight:600;\"\u003eKhoai tây sạch đất, 1kg\u003c\/div\u003e\n\u003cdiv style=\"font-size:12px;color:#64748b;\"\u003eNguyên liệu quen thuộc hằng ngày\u003c\/div\u003e\u003c\/a\u003e\n\u003ca href=\"\/vi\/products\/fresh-golden-sweet-potatoes-approximately-1kg\" style=\"display:block;border:1px solid #e2e8f0;border-radius:12px;padding:14px;color:#0f172a;background:#fff;\"\u003e\u003cdiv style=\"font-weight:600;\"\u003eKhoai lang 1kg\u003c\/div\u003e\n\u003cdiv style=\"font-size:12px;color:#64748b;\"\u003eNướng hoặc hấp\u003c\/div\u003e\u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"margin-top:12px;\"\u003e\u003ca href=\"\/vi\/collections\/potatoes-root-vegetables\" style=\"color:#DB3A35;font-weight:600;\"\u003eXem tất cả các loại khoai củ →\u003c\/a\u003e\u003c\/div\u003e\u003c\/section\u003e\u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\u003ch3 style=\"margin:0 0 8px;font-size:18px;font-weight:700;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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=\"\/vi\/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":"Minfa","offers":[{"title":"Default Title","offer_id":48801283735839,"sku":"6920084998274","price":3.39,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/d41caca64cfd5c65e125aa011b43339bwV1YN5bKCB4R8QC1ZUxlfl0OGHRxcWOP_c9f816f7-cc95-413c-b48b-5cdc19a4dc78.jpg?v=1718326724"},{"product_id":"small-potatoes-800g","title":"Khoai Tây Mini 800 g – khoai tây nhỏ xinh, dễ chế biến","description":"\u003cdiv id=\"umall-desc\" style=\"--brand:#DB3A35;max-width:860px;margin:0 auto;font-family:system-ui,-apple-system,Segoe UI,Roboto,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:16px;\"\u003e\n    \u003ch1 style=\"margin:0 0 6px;font-size:26px;font-weight:800;\"\u003eKhoai tây củ nhỏ - 800g\u003c\/h1\u003e\n    \u003cp style=\"margin:8px 0 0;color:#475569;font-size:14px;\"\u003eKhoai vỏ mỏng, mềm bùi tự nhiên—dùng nướng, luộc, đập dẹt nướng giòn hoặc xào nhanh.\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;\"\u003eĐặc điểm sản phẩm\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eKích cỡ đều giúp khoai chín đều và giòn cạnh.\u003c\/li\u003e\n      \u003cli\u003eRuột bùi mịn như bơ, vỏ mỏng—không cần gọt vỏ.\u003c\/li\u003e\n      \u003cli\u003eCó thể nướng, đập dẹt, xào chảo hoặc nấu canh.\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;\"\u003eGợi ý chế biến\u003c\/h3\u003e\n    \u003cdiv style=\"display:grid;gap:14px;\"\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eKhoai tây nướng khay với tỏi\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eLuộc sơ rồi nướng nhiệt cao đến vàng, trộn với \u003ca href=\"\/vi\/products\/peeled-garlic-cloves-250g\" style=\"color:var(--brand);\"\u003etỏi bóc vỏ\u003c\/a\u003e đập dập và chút dầu ô liu hoặc dầu mè cho thơm.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eKhoai tây đập dẹt nướng giòn với dầu ớt giòn \u0026amp; giấm đen\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eLuộc mềm, đập dẹt rồi nướng đến khi bề mặt sần giòn. Thêm \u003ca href=\"\/vi\/products\/cuihong-spicy-chili-oil-200g\" style=\"color:var(--brand);\"\u003edầu ớt cay\u003c\/a\u003e và một ít \u003ca href=\"\/vi\/products\/hengshun-zhenjiang-aromatic-vinegar-550ml\" style=\"color:var(--brand);\"\u003egiấm thơm Zhenjiang\u003c\/a\u003e.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eKhoai tây xào nước tương–dầu hào với ớt chuông\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eLuộc sơ khoai rồi xào cùng \u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-700g\" style=\"color:var(--brand);\"\u003edầu hào\u003c\/a\u003e + \u003ca href=\"\/vi\/products\/haitian-premium-light-soy-sauce-500ml\" style=\"color:var(--brand);\"\u003enước tương nhạt\u003c\/a\u003e, \u003ca href=\"\/vi\/products\/fresh-green-lantern-peppers-pack-of-3\" style=\"color:var(--brand);\"\u003eớt chuông xanh\u003c\/a\u003e cắt lát và \u003ca href=\"\/vi\/products\/fresh-yellow-onions-1kg\" style=\"color:var(--brand);\"\u003ehành tây vàng\u003c\/a\u003e.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eCanh khoai tây \u0026amp; nấm kim châm \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\"\u003eÍt calo\u003c\/span\u003e\n\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eNấu liu riu khoai cắt đôi với \u003ca href=\"\/vi\/products\/bull-head-clear-chicken-broth-411ml-canned-chicken-stock\" style=\"color:var(--brand);\"\u003enước dùng gà trong\u003c\/a\u003e , thêm \u003ca href=\"\/vi\/products\/chois-enoki-mushrooms-300g\" style=\"color:var(--brand);\"\u003enấm kim châm\u003c\/a\u003e ngay trước khi ăn.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;\"\u003e\n        \u003ch4 style=\"margin:0 0 6px;font-size:16px;font-weight:700;\"\u003eSalad khoai tây ấm trộn mè–giấm thanh nhẹ\u003c\/h4\u003e\n        \u003cp style=\"margin:0;color:#334155;font-size:14px;\"\u003eHấp hoặc luộc khoai rồi trộn khi còn ấm với \u003ca href=\"\/vi\/products\/hengshun-white-rice-vinegar-500ml\" style=\"color:var(--brand);\"\u003egiấm gạo trắng\u003c\/a\u003e, chút \u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003edầu mè\u003c\/a\u003e và \u003ca href=\"\/vi\/products\/fresh-bundle-of-spring-onions\" style=\"color:var(--brand);\"\u003ehành lá cắt lát\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;\"\u003eMẹo sơ chế và nấu\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003eKhông cần gọt vỏ—chỉ cần chà rửa sạch. Cắt đôi hoặc để nguyên củ thành miếng vừa ăn.\u003c\/li\u003e\n      \u003cli\u003eLuộc sơ trong nước nêm đủ muối đến khi mũi dao xiên vào còn hơi cứng (8–12 phút), để khoai ráo hơi trước khi nướng hoặc xào.\u003c\/li\u003e\n      \u003cli\u003eMuốn giòn hơn, xóc cho bề mặt hơi sần sau khi luộc sơ rồi mới nướng.\u003c\/li\u003e\n      \u003cli\u003eNêm khi khoai còn nóng để thấm vị hơn (giấm, nước tương hoặc gia vị thơm).\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;\"\u003eGợi ý kết hợp\u003c\/h3\u003e\n    \u003cul style=\"margin:8px 0 0 18px;color:#334155;font-size:14px;\"\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/frozen-northern-angus-beef-rolls-225g\" style=\"color:var(--brand);\"\u003e[Đông lạnh] Beifang Thịt bò Angus cuộn 225g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/haitian-premium-oyster-sauce-1kg\" style=\"color:var(--brand);\"\u003eHaitian Dầu hào cao cấp 1kg\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/lee-kum-kee-pure-sesame-oil-207ml\" style=\"color:var(--brand);\"\u003eLee Kum Kee Dầu mè nguyên chất 207ml\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/fresh-dried-garlic-heads-approximately-500g\" style=\"color:var(--brand);\"\u003eTỏi củ, 500g\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/fresh-green-lantern-peppers-pack-of-3\" style=\"color:var(--brand);\"\u003eỚt chuông xanh - Gói 3\u003c\/a\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003ca href=\"\/vi\/products\/chois-oyster-mushrooms-400g\" style=\"color:var(--brand);\"\u003eChois Nấm bào ngư - 400g\u003c\/a\u003e\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/section\u003e\n\n  \u003csection style=\"border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:20px;margin-top:16px;\"\u003e\n    \u003ch3 style=\"margin:0 0 10px;font-size:18px;font-weight:700;\"\u003eXem thêm cùng loại\u003c\/h3\u003e\n    \u003cp style=\"margin:6px 0 0;color:#334155;font-size:14px;\"\u003eBạn thích món ăn kèm bùi và canh ấm? \u003ca href=\"\/vi\/collections\/potatoes-root-vegetables\" style=\"color:var(--brand);\"\u003eXem thêm các loại khoai củ\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;\"\u003eGiao hàng \u0026amp; thời gian nhận\u003c\/h3\u003e\n\u003cp style=\"margin:6px 0 10px;color:#334155;font-size:14px;\"\u003eBạn có thể \u003cstrong\u003etheo dõi\u003c\/strong\u003e vị trí của người giao hàng theo \u003cstrong\u003ethời gian thực\u003c\/strong\u003e trên mạng. Bạn có thể nhận hàng sớm nhất vào \u003cstrong\u003engày hôm sau\u003c\/strong\u003e (áp dụng cho phần lớn khu vực tại 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;\"\u003eThời gian đặt hàng\u003c\/th\u003e\n\u003cth style=\"text-align:left;padding:10px;background:#f8fafc;\"\u003eThời gian nhận hàng\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;\"\u003eHôm nay\u003c\/td\u003e\n\u003ctd style=\"padding:12px;border-top:1px solid #e5e7eb;\"\u003e\n\u003cstrong\u003eNgày hôm sau (2 lựa chọn):\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* Hủy đơn sau giờ chốt đơn có thể phát sinh phí. \u003ca href=\"\/vi\/pages\/return-refund-policy\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eXem tại đây\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp style=\"margin:8px 0 0;color:#334155;font-size:14px;\"\u003eChi tiết: \u003ca href=\"\/vi\/pages\/delivery-information\" style=\"color:#DB3A35;text-decoration:underline;\"\u003eThông tin giao hàng\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;\"\u003ePhí giao hàng\u003c\/h3\u003e\n\u003cp style=\"font-size:13px;color:#666;margin:0 0 8px\"\u003eMỗi đơn hàng có một khoản phí dịch vụ nhỏ. Bạn vui lòng xem \u003ca href=\"\/vi\/pages\/delivery-information\"\u003ethông tin giao hàng\u003c\/a\u003e để biết mức phí hiện hành.\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;\"\u003eTừ $69.00 trở lên\u003c\/td\u003e\n\u003ctd style=\"padding:10px;border-top:1px solid #e5e7eb;\"\u003e\u003cstrong\u003eMiễn phí\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(trước đây $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(trước đây $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=\"\/vi\/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":48896034603295,"sku":"A0735745752173","price":4.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/7b631fb2a83192c983449a89ae32ce2f.jpg?v=1724144093"},{"product_id":"shiyuedaotian-white-glutinous-corn-2-08kg","title":"October Rice Field Bắp nếp trắng nguyên trái – Ăn liền, hút chân không 2.08kg (8 x 260g)","description":"\u003cp\u003eOctober Rice Field Bắp nếp trắng ngọt tự nhiên, dẻo dai—đã nấu chín và hút chân không, tiện dùng. Mỗi trái đóng kín để giữ độ tươi; ăn ngay từ gói hoặc hâm vài phút để làm món ăn kèm, ăn vặt hay dùng cho bữa sáng.\u003c\/p\u003e\u003ch2\u003eĐiểm nổi bật của sản phẩm:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eĂn liền:\u003c\/strong\u003e Bắp nếp nguyên trái đã nấu chín—không cần bóc vỏ hay sơ chế.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGói gia đình:\u003c\/strong\u003e Tổng 2.08kg gồm 8 trái, mỗi trái 260g đóng gói riêng.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHút chân không giữ vị:\u003c\/strong\u003e Bao bì giúp giữ vị và độ dẻo, bảo quản được ở nhiệt độ thường.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eNhiều cách thưởng thức:\u003c\/strong\u003e Ăn ngay từ túi hoặc hâm bằng lò vi sóng, hấp hay nướng.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eĂn vặt hoặc ăn kèm:\u003c\/strong\u003e Tiện cho hộp cơm, bữa ăn nhanh và tiệc BBQ.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"October Rice Field","offers":[{"title":"Default Title","offer_id":50513141661983,"sku":"A6953721708059","price":14.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_6f2bb796-010a-48dd-82ca-300dd7556dac.jpg?v=1737104569"},{"product_id":"october-rice-field-yellow-waxy-corn-1-76kg-8-x-220g-ready-to-eat-vacuum-sealed-corn-on-the-cob","title":"October Rice Field Bắp nếp vàng 1.76kg (8 x 220g) - Bắp nguyên trái ăn liền hút chân không","description":"\u003cp\u003eThưởng thức vị ngọt dẻo của bắp nếp vàng October Rice Field—bắp nguyên trái đã nấu chín, hút chân không, sẵn sàng dùng bất cứ lúc nào bạn muốn. Gói gia đình 1.76 kg này (8 x 220 g) mang đến sự tiện lợi và chất lượng đồng đều cùng độ dẻo đặc trưng của bắp nếp.\u003c\/p\u003e\u003ch2\u003eĐiểm nổi bật của sản phẩm:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eĂn liền:\u003c\/strong\u003e Bắp nếp (bắp dẻo) đã nấu chín—dùng ngay từ gói hoặc hâm nóng.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eChia phần ăn tiện lợi:\u003c\/strong\u003e 8 trái được hút chân không riêng (mỗi trái 220 g), dễ chia sẻ và chuẩn bị bữa ăn.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eNgọt tự nhiên:\u003c\/strong\u003e Hạt bắp vàng với kết cấu dẻo ngon.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDễ hâm nóng:\u003c\/strong\u003e Hâm bằng lò vi sóng, hấp hoặc luộc nguyên túi để dùng nhanh.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eNhiều cách thưởng thức:\u003c\/strong\u003e Thích hợp làm món ăn nhẹ, món ăn kèm hoặc món quen thuộc trong hộp cơm.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"October Rice Field","offers":[{"title":"Default Title","offer_id":51168375210271,"sku":"M6953721707571","price":13.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/img_01_c5648b4b-4171-4e63-81b8-68df1618788f.jpg?v=1770189678"},{"product_id":"october-rice-field-black-glutinous-corn-1-76-kg-ready-to-eat-vacuum-packs","title":"October Rice Field Bắp nếp đen 1.76kg - Gói hút chân không ăn liền","description":"\u003cp\u003eTừ October Rice Field—một trong những thương hiệu ngũ cốc nổi tiếng của Trung Quốc—là những trái bắp nếp đen (bắp sáp) mềm, ngọt tự nhiên. Mỗi trái bắp được nấu chín và hút chân không để giữ độ tươi, nên bạn có thể ăn ngay khi mở gói, dùng lạnh hoặc hâm nóng trong vài phút.\u003c\/p\u003e\u003ch2\u003eĐiểm nổi bật của sản phẩm:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBắp nếp dẻo ngọt:\u003c\/strong\u003e Hạt bắp tím đậm có độ dẻo dai ngon.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTiện lợi và ăn liền:\u003c\/strong\u003e Dùng lạnh, hấp cho nóng hoặc cho vào lò vi sóng sau khi mở gói.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGói gia đình:\u003c\/strong\u003e Tổng khối lượng 1.76kg, trên bao bì ghi 220g × 8 gói hút chân không riêng lẻ.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eNhiều cách sử dụng:\u003c\/strong\u003e Rất thích hợp cho bữa sáng, ăn nhẹ, hộp cơm trưa hoặc làm món ăn kèm bổ dưỡng.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBảo quản được ở nhiệt độ thường:\u003c\/strong\u003e Bảo quản ở nhiệt độ phòng; giữ lạnh sau khi mở.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"October Rice Field","offers":[{"title":"Default Title","offer_id":51168375243039,"sku":"M6974382972085","price":13.69,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_047b76c7-487d-44f7-bb04-8da7ae004864.jpg?v=1756216193"},{"product_id":"purple-yam-purple-flesh-1-1-1-3kg","title":"Khoai mỡ tím 1kg","description":"\u003cp\u003eKhoai mỡ tím có phần ruột tím đậm, vị ngọt nhẹ và bùi, dùng được cho cả món mặn lẫn món tráng miệng. Bạn có thể luộc, hấp, nướng hoặc nghiền để tạo màu tự nhiên và thêm độ bùi đặc cho bữa ăn hằng ngày hay các món theo phong cách châu Á.\u003c\/p\u003e\u003ch2\u003eĐiểm nổi bật của sản phẩm:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eMàu tím nổi bật:\u003c\/strong\u003e Ruột khoai tím đậm giúp món ăn thêm đẹp mắt.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eNhiều cách chế biến:\u003c\/strong\u003e Thích hợp để nướng, nghiền, làm bánh hoặc bào vào món tráng miệng.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eKết cấu bùi đặc:\u003c\/strong\u003e Khoai có nhiều tinh bột, khi nấu chín trở nên bùi mịn, thích hợp dùng thay khoai tây.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eThích hợp làm món tráng miệng:\u003c\/strong\u003e Thường dùng trong bánh kiểu Á, pudding và các loại nhân ngọt dạng nhuyễn.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eKhối lượng:\u003c\/strong\u003e 1kg.\u003c\/li\u003e\n\u003c\/ul\u003e\u003cdetails\u003e\u003csummary\u003eTừ khóa tìm kiếm\u003c\/summary\u003e\u003cp\u003e\u003csmall\u003eTừ khóa tìm kiếm: khoai mỡ tím, ube, khoai mỡ ruột tím, khoai mỡ, 山药, 紫山药\u003c\/small\u003e\u003c\/p\u003e\u003c\/details\u003e\n\u003cdiv class=\"sp101\" data-sp101=\"v1\"\u003e\n\u003cp\u003eKhoai mỡ tím tạo màu tím tự nhiên cho món ăn hằng ngày và món tráng miệng. Bạn có thể nướng làm món mặn ăn kèm, nghiền thay khoai tây hoặc dùng phần ruột đã nấu chín để làm bánh và pudding. Vị ngọt nhẹ, bùi của khoai hợp với những công thức cần kết cấu nhiều tinh bột, bùi mịn.\u003c\/p\u003e\n\u003ch2\u003eCâu hỏi thường gặp\u003c\/h2\u003e\n\u003ch3\u003eKhoai mỡ tím có vị gì?\u003c\/h3\u003e\n\u003cp\u003eKhoai mỡ tím có vị ngọt nhẹ, bùi và ruột tím đậm. Khi nấu chín, khoai có kết cấu nhiều tinh bột, bùi mịn, dùng được cho cả món mặn và món ngọt.\u003c\/p\u003e\n\u003ch3\u003eChế biến khoai mỡ tím như thế nào?\u003c\/h3\u003e\n\u003cp\u003eBạn có thể luộc, hấp, nướng hoặc nghiền khoai mỡ tím. Nấu đến khi khoai mềm rồi dùng thay khoai tây hoặc cho vào bánh, pudding và các loại nhân ngọt dạng nhuyễn.\u003c\/p\u003e\n\u003ch3\u003eCó thể đặt khoai mỡ tím giao tận nhà ở đâu?\u003c\/h3\u003e\n\u003cp\u003eBạn có thể đặt khoai mỡ tím tươi online tại Umall để giao tận nhà trong khu vực Sydney metro. Wollongong và Canberra có ngày giao hàng cố định.\u003c\/p\u003e\n\u003c\/div\u003e\u003c!-- \/sp101 --\u003e","brand":"Umall Fresh","offers":[{"title":"Default Title","offer_id":52638105567519,"sku":"A9202606151337","price":11.09,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/150bdd5d61bfeb9a2d27d3eb07c3cdebzQAywkn9aM6Eigl0B5N6BHCg2JGOuLWo.jpg?v=1782462798"},{"product_id":"jinri-douyun-tender-glutinous-bamboo-shoots-260g","title":"Jinri Douyun Măng nếp non 260g","description":"\u003cp\u003eMăng nếp non Jinri Douyun mang đến độ giòn nhẹ và vị ngọt thanh cho các món Trung Quốc bạn yêu thích. Đã được sơ chế và hút chân không, măng có thể cho thẳng vào món xào, món hầm, súp hoặc lẩu để tăng ngay hương vị và kết cấu.\u003c\/p\u003e\u003ch2\u003eĐiểm nổi bật của sản phẩm:\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eGiống măng nếp:\u003c\/strong\u003e Mềm tự nhiên, có độ dẻo nhẹ dễ ăn và giữ được kết cấu khi nấu.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSẵn sàng sử dụng:\u003c\/strong\u003e Măng đã cắt giúp tiết kiệm thời gian sơ chế—chỉ cần rửa, cắt theo kích cỡ mong muốn nếu cần rồi nấu.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eNguyên liệu đa dụng:\u003c\/strong\u003e Thích hợp cho món xào, món kho, mì nước, lẩu và salad lạnh.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHút chân không giữ độ tươi:\u003c\/strong\u003e Bao bì kín giúp giữ hương thơm và kết cấu cho đến khi bạn sẵn sàng nấu.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGói 260 g tiện lợi:\u003c\/strong\u003e Phần ăn tiện lợi để nấu tại nhà hoặc chuẩn bị bữa ăn.\u003c\/li\u003e\n\u003c\/ul\u003e\u003cdetails\u003e\u003csummary\u003eTừ khóa tìm kiếm\u003c\/summary\u003e\u003cp\u003e\u003csmall\u003eTừ khóa tìm kiếm: măng nếp, 糯米笋, Jinri Douyun, măng Trung Quốc, măng hút chân không, rau xào\u003c\/small\u003e\u003c\/p\u003e\u003c\/details\u003e","brand":"Jinri Douyun","offers":[{"title":"Default Title","offer_id":52653340459295,"sku":"A6974785825988","price":2.59,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/files\/1_396ea79c-4486-4a95-8b43-5cfe73913a86.jpg?v=1783064772"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0864\/3602\/0511\/collections\/A0735745752197.jpg?v=1725009726","url":"https:\/\/www.umall.com.au\/vi\/collections\/khoai-tay-va-cac-lo%e1%ba%a1i-c%e1%bb%a7\/instant-food.oembed","provider":"Umall - Australia's Largest Online Asian Supermarket","version":"1.0","type":"link"}