{"id":17998,"date":"2026-10-06T14:07:57","date_gmt":"2026-10-06T06:07:57","guid":{"rendered":"https:\/\/tiffanysmandarin.com\/?p=17998"},"modified":"2026-10-25T08:57:24","modified_gmt":"2026-10-25T00:57:24","slug":"chinese-cooking-game","status":"publish","type":"post","link":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/","title":{"rendered":"Chinese cooking game"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/#%F0%9F%8D%B3_Cooking_Methods_Flashcards\" >\ud83c\udf73 Cooking Methods Flashcards<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/#title_Hanzi_Kitchen\" >'+title+' Hanzi Kitchen<\/a><\/li><\/ul><\/nav><\/div>\n\n<div style=\"height:6px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Huninn&#038;family=LXGW+WenKai+TC:wght@400;700&#038;family=Fredoka:wght@500;600&#038;display=swap\">\n\n<div id=\"tkg-unified-wrapper\">\n  <!-- \u552f\u4e00\u4f9b\u5168\u7ad9\u5207\u63db\u958b\u95dc\u8fa8\u8b58\u7528\u7684\u96b1\u85cf\u53c3\u8003\u5143\u7d20 -->\n  <div id=\"tkg-site-lang-probe\" style=\"position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0\" aria-hidden=\"true\">\n    <span id=\"tkg-probe-tw\" class=\"lang-zh-TW\">\u7e41<\/span>\n    <span id=\"tkg-probe-cn\" class=\"lang-zh-CN\">\u7b80<\/span>\n  <\/div>\n\n<style>\n\/* ==================== 1. \u9583\u5361\u5340\u584a\u6a23\u5f0f (Morandi Blue) ==================== *\/\n#tkg-unified-wrapper {\n  width: 100%;\n  max-width: 1100px;\n  margin: 0 auto 40px auto;\n  box-sizing: border-box;\n}\n#tkg-unified-wrapper * {\n  box-sizing: border-box;\n}\n\n#tkg-fc-section {\n  --fc-bg: #ffffff;\n  --fc-border: #eaeaea;\n  --fc-accent: #7a9cb5;\n  --fc-text: #333333;\n  --fc-sub: #777777;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"PingFang TC\", \"Microsoft JhengHei\", \"PingFang SC\", sans-serif;\n  background-color: var(--fc-bg);\n  color: var(--fc-text);\n  padding: 20px 15px 45px 15px;\n  border-radius: 18px;\n  margin-bottom: 32px;\n}\n\n#tkg-fc-section .fc-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding-bottom: 15px;\n  border-bottom: 2px solid var(--fc-border);\n  margin-bottom: 20px;\n  flex-wrap: wrap;\n  gap: 10px;\n}\n\n#tkg-fc-section .fc-nav-title {\n  font-size: 22px;\n  font-weight: bold;\n  color: var(--fc-accent) !important;\n  margin: 0;\n}\n\n#tkg-fc-section .fc-toolbar-actions {\n  display: flex;\n  gap: 10px;\n  align-items: center;\n  flex-wrap: wrap;\n}\n\n#tkg-fc-section .fc-btn {\n  background-color: #ffffff;\n  border: 1.5px solid var(--fc-accent);\n  color: var(--fc-accent);\n  padding: 6px 16px;\n  border-radius: 20px;\n  cursor: pointer;\n  font-size: 14px;\n  font-weight: bold;\n  transition: all 0.2s;\n}\n#tkg-fc-section .fc-btn:hover {\n  background-color: var(--fc-accent);\n  color: #ffffff;\n}\n\n#tkg-fc-section .fc-sub-header {\n  margin-bottom: 18px;\n}\n#tkg-fc-section .fc-sub-title {\n  font-size: 18px;\n  font-weight: bold;\n  color: var(--fc-accent) !important;\n  margin: 0;\n}\n\n#tkg-fc-section .fc-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(155px, 1fr));\n  gap: 18px;\n}\n\n#tkg-fc-section .fc-card {\n  background-color: transparent;\n  perspective: 1000px;\n  height: 185px;\n  cursor: pointer;\n  user-select: none;\n}\n\n#tkg-fc-section .fc-card-inner {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  text-align: center;\n  transition: transform 0.6s cubic-bezier(0.4, 0.2, 0.2, 1);\n  transform-style: preserve-3d;\n}\n\n#tkg-fc-section .fc-card.is-flipped .fc-card-inner {\n  transform: rotateY(180deg);\n}\n\n#tkg-fc-section .fc-front,\n#tkg-fc-section .fc-back {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  border-radius: 12px;\n  background-color: #ffffff;\n  border: 1px solid var(--fc-border);\n  box-shadow: 0 2px 6px rgba(0,0,0,0.04);\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: space-between;\n  padding: 14px 8px 10px 8px;\n  transition: border-color 0.2s, box-shadow 0.2s;\n}\n\n#tkg-fc-section .fc-front:hover,\n#tkg-fc-section .fc-back:hover {\n  border-color: var(--fc-accent);\n  box-shadow: 0 6px 14px rgba(122,156,181,0.2);\n}\n\n#tkg-fc-section .fc-badge {\n  position: absolute;\n  top: 7px;\n  left: 7px;\n  font-size: 11px;\n  color: #ffffff;\n  background-color: var(--fc-accent);\n  border-radius: 50%;\n  width: 18px;\n  height: 18px;\n  line-height: 18px;\n  text-align: center;\n  font-weight: bold;\n}\n\n#tkg-fc-section .fc-audio-btn {\n  position: absolute;\n  top: 7px;\n  right: 7px;\n  width: 26px;\n  height: 26px;\n  border-radius: 50%;\n  background-color: #ffffff;\n  border: 1px solid var(--fc-accent);\n  color: var(--fc-accent);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 12px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  z-index: 10;\n}\n#tkg-fc-section .fc-audio-btn:hover {\n  background-color: var(--fc-accent);\n  color: #ffffff;\n  transform: scale(1.15);\n}\n\n#tkg-fc-section .fc-audio-inline {\n  background: none;\n  border: none;\n  cursor: pointer;\n  color: var(--fc-accent);\n  font-size: 14px;\n  padding: 0 0 0 4px;\n  vertical-align: middle;\n}\n\n#tkg-fc-section .fc-hanzi-big {\n  font-size: 42px;\n  font-weight: bold;\n  color: var(--fc-text) !important;\n  margin: auto 0;\n}\n\n#tkg-fc-section .fc-flip-hint {\n  font-size: 10px;\n  color: #aaaaaa;\n  margin-top: 4px;\n}\n\n#tkg-fc-section .fc-back {\n  transform: rotateY(180deg);\n  background-color: #fafbfc;\n  justify-content: flex-start;\n  padding: 12px 8px 8px 8px;\n}\n\n#tkg-fc-section .fc-trans-list {\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  gap: 5px;\n  margin-top: 20px;\n  margin-bottom: 6px;\n  text-align: left;\n}\n\n#tkg-fc-section .fc-trans-item {\n  display: flex;\n  align-items: center;\n  gap: 5px;\n  font-size: 12px;\n  line-height: 1.25;\n}\n\n#tkg-fc-section .fc-lang-pill {\n  font-size: 9px;\n  font-weight: bold;\n  background-color: #edf2f7;\n  color: var(--fc-accent);\n  padding: 2px 4px;\n  border-radius: 4px;\n  flex-shrink: 0;\n}\n\n#tkg-fc-section .fc-trans-text {\n  font-weight: 600;\n  color: var(--fc-text);\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n#tkg-fc-section .fc-back-sub {\n  font-size: 11px;\n  color: var(--fc-sub);\n  margin-top: auto;\n  border-top: 1px dashed var(--fc-border);\n  padding-top: 4px;\n  width: 100%;\n  text-align: center;\n}\n\n\/* ==================== 2. \u6f22\u5b57\u9910\u5ef3\u904a\u6232\u6a23\u5f0f ==================== *\/\n#tkg-game-section {\n  --tkg-wall:#e2ebe5; --tkg-tile:#d0ddd5; --tkg-paper:#fffdf6; --tkg-ink:#1e2b27; --tkg-muted:#5b6c65;\n  --tkg-jade:#1d6b56; --tkg-jade-deep:#12463a; --tkg-mint:#d9efe4;\n  --tkg-lantern:#d63f2c; --tkg-marigold:#f3b22e; --tkg-marigold-soft:#fde9b8;\n  --tkg-wood:#c88b52; --tkg-wood-deep:#8d582c; --tkg-steel:#eef1ef;\n  --tkg-good:#23855a; --tkg-bad:#c2412d;\n  --tkg-ui:\"Huninn\",\"PingFang TC\",\"Noto Sans TC\",\"Microsoft JhengHei\",\"PingFang SC\",sans-serif;\n  --tkg-hanzi:\"LXGW WenKai TC\",\"Kaiti TC\",\"Kaiti SC\",\"BiauKai\",serif;\n  --tkg-en:\"Fredoka\",\"Avenir Next\",\"Segoe UI\",sans-serif;\n  background-color:var(--tkg-wall);\n  background-image:\n    linear-gradient(var(--tkg-tile) 2px,transparent 2px),\n    linear-gradient(90deg,var(--tkg-tile) 2px,transparent 2px);\n  background-size:44px 44px;\n  color:var(--tkg-ink);\n  font-family:var(--tkg-ui);\n  font-size:16px;\n  border-radius:18px;\n  padding:16px 16px 24px 16px;\n}\n#tkg-game-section button { font:inherit; color:inherit; cursor:pointer; }\n#tkg-game-section button:focus-visible { outline:3px solid var(--tkg-marigold); outline-offset:2px; }\n\n\/* Ruby \u9632\u5168\u7ad9 CSS \u6c61\u67d3\u4fdd\u8b77\uff1a\u76f4\u63a5\u5beb\u6b7b color: var(--\u4f60\u7684\u8b8a\u6578) !important \u5728 ruby \u8207 .rb \u5169\u5c64\u4e0a *\/\n#tkg-game-section ruby {\n  ruby-position:over;\n  color:var(--tkg-lantern) !important;\n  font-family:var(--tkg-hanzi) !important;\n  font-size:30px !important;\n  font-weight:700 !important;\n}\n#tkg-game-section ruby .rb {\n  color:var(--tkg-lantern) !important;\n  font-family:var(--tkg-hanzi) !important;\n  font-size:30px !important;\n  font-weight:700 !important;\n}\n#tkg-game-section .tkg-dishrow ruby,\n#tkg-game-section .tkg-dishrow ruby .rb {\n  color:var(--tkg-ink) !important;\n  font-size:22px !important;\n}\n#tkg-game-section rt {\n  font-family:var(--tkg-en) !important;\n  font-size:12px !important;\n  font-weight:500 !important;\n  color:var(--tkg-muted) !important;\n  letter-spacing:0 !important;\n}\n\n#tkg-game-section .tkg-sign { display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; background:var(--tkg-jade-deep); color:var(--tkg-paper); border-radius:14px; padding:10px 14px; box-shadow:0 4px 0 #0b2e26; margin-bottom:12px; }\n#tkg-game-section .tkg-sign h2 { margin:0; font-family:var(--tkg-hanzi); font-weight:700; font-size:26px; letter-spacing:.08em; display:flex; align-items:center; gap:10px; color:var(--tkg-paper) !important; }\n#tkg-game-section .tkg-sign h2 small { font-family:var(--tkg-en); font-weight:500; font-size:15px; letter-spacing:.04em; opacity:.8; color:var(--tkg-paper) !important; }\n#tkg-game-section .tkg-lamp { width:22px; height:28px; border-radius:50% 50% 45% 45%; background:var(--tkg-lantern); box-shadow:inset 0 -5px 0 rgba(0,0,0,.18),0 0 12px rgba(214,63,44,.6); position:relative; display:inline-block; }\n#tkg-game-section .tkg-lamp::before { content:\"\"; position:absolute; left:7px; top:-5px; width:8px; height:5px; background:var(--tkg-marigold); border-radius:2px; }\n#tkg-game-section .tkg-meta { display:flex; flex-wrap:wrap; gap:8px; margin-left:auto; align-items:center; }\n#tkg-game-section .tkg-chip { background:rgba(255,255,255,.12); border-radius:999px; padding:5px 12px; font-size:15px; white-space:nowrap; color:var(--tkg-paper); }\n#tkg-game-section .tkg-chip b { color:var(--tkg-marigold); }\n#tkg-game-section .tkg-toggle { background:transparent; border:1.5px solid rgba(255,255,255,.35); border-radius:999px; padding:5px 12px; font-size:14px; color:var(--tkg-paper); }\n#tkg-game-section .tkg-toggle[aria-pressed=\"true\"] { background:var(--tkg-marigold); border-color:var(--tkg-marigold); color:var(--tkg-jade-deep); font-weight:700; }\n\n#tkg-game-section .tkg-scene { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }\n#tkg-game-section .tkg-side { display:flex; align-items:flex-end; gap:10px; background:rgba(255,253,246,.7); border:2px solid var(--tkg-tile); border-radius:16px; padding:10px 12px; min-height:150px; min-width:0; }\n#tkg-game-section .tkg-side.is-chef { flex-direction:row-reverse; }\n#tkg-game-section .tkg-fig { width:96px; flex:none; }\n#tkg-game-section .tkg-fig svg { width:100%; height:auto; display:block; }\n#tkg-game-section .tkg-bubble { position:relative; background:var(--tkg-paper); border:2.5px solid var(--tkg-ink); border-radius:18px; padding:10px 14px; flex:1; min-width:0; margin-bottom:34px; color:var(--tkg-ink); }\n#tkg-game-section .tkg-bubble::after { content:\"\"; position:absolute; bottom:-12px; left:18px; transform:rotate(45deg); width:18px; height:18px; background:var(--tkg-paper); border-right:2.5px solid var(--tkg-ink); border-bottom:2.5px solid var(--tkg-ink); }\n#tkg-game-section .tkg-side.is-chef .tkg-bubble { border-style:dashed; border-radius:22px; }\n#tkg-game-section .tkg-side.is-chef .tkg-bubble::after { display:none; }\n#tkg-game-section .tkg-side.is-chef .tkg-bubble::before { content:\"\"; position:absolute; right:6px; bottom:-26px; width:14px; height:14px; border-radius:50%; background:var(--tkg-paper); border:2.5px dashed var(--tkg-ink); box-shadow:14px 12px 0 -4px var(--tkg-paper),14px 12px 0 -1.5px var(--tkg-ink); }\n#tkg-game-section .tkg-say { font-family:var(--tkg-hanzi); font-size:20px; line-height:1.5; color:var(--tkg-ink); }\n#tkg-game-section .tkg-dishname { display:inline-block; font-family:var(--tkg-hanzi); font-weight:700; font-size:30px; color:var(--tkg-lantern) !important; letter-spacing:.04em; line-height:1.3; }\n#tkg-game-section .tkg-hint { font-family:var(--tkg-hanzi); font-size:21px; line-height:1.55; color:var(--tkg-ink); }\n#tkg-game-section .tkg-hint strong { font-weight:700; color:var(--tkg-jade-deep) !important; background:var(--tkg-mint); border-radius:6px; padding:0 3px; border-bottom:2px solid var(--tkg-jade); }\n#tkg-game-section .tkg-hint em { font-style:normal; font-weight:700; color:var(--tkg-lantern) !important; background:var(--tkg-marigold-soft); border-radius:6px; padding:0 3px; }\n#tkg-game-section .tkg-legend { display:flex; gap:10px; flex-wrap:wrap; font-size:12px; color:var(--tkg-muted); margin-top:6px; }\n#tkg-game-section .tkg-legend i { font-style:normal; border-radius:4px; padding:0 5px; }\n#tkg-game-section .tkg-legend .lv { background:var(--tkg-marigold-soft); color:var(--tkg-lantern); }\n#tkg-game-section .tkg-legend .li { background:var(--tkg-mint); color:var(--tkg-jade-deep); }\n#tkg-game-section .tkg-fb { margin-top:6px; font-size:15px; color:var(--tkg-bad); font-weight:700; }\n#tkg-game-section .tkg-fb.is-info { color:var(--tkg-jade); }\n#tkg-game-section .tkg-fb small { display:block; font-weight:400; color:var(--tkg-muted); font-size:14px; }\n#tkg-game-section .tkg-blabel { font-size:12px; letter-spacing:.12em; color:var(--tkg-muted); margin-bottom:2px; }\n#tkg-game-section .tkg-stars { font-size:26px; letter-spacing:4px; color:var(--tkg-marigold); text-shadow:0 1px 0 var(--tkg-wood-deep); }\n#tkg-game-section .tkg-stars .off { color:var(--tkg-tile); text-shadow:none; }\n\n#tkg-game-section .tkg-steps { display:flex; flex-wrap:wrap; align-items:center; gap:8px; font-size:15px; color:var(--tkg-muted); margin-bottom:12px; }\n#tkg-game-section .tkg-dot { min-width:34px; height:34px; padding:0 6px; border-radius:999px; border:2px dashed var(--tkg-muted); display:grid; place-items:center; font-family:var(--tkg-hanzi); font-size:18px; font-weight:700; background:var(--tkg-paper); color:var(--tkg-ink); }\n#tkg-game-section .tkg-dot.is-done { border:2px solid var(--tkg-good); background:var(--tkg-good); color:#ffffff; }\n#tkg-game-section .tkg-dot.is-now { border:2.5px solid var(--tkg-lantern); color:var(--tkg-lantern); }\n#tkg-game-section .tkg-selbar { margin-left:auto; display:flex; gap:6px; align-items:center; flex-wrap:wrap; }\n#tkg-game-section .tkg-selbar .tkg-pill svg { width:20px; height:20px; vertical-align:middle; }\n#tkg-game-section .tkg-selbar .tkg-pill { background:var(--tkg-paper); border:1.5px solid var(--tkg-jade); color:var(--tkg-jade); border-radius:999px; padding:2px 10px; font-family:var(--tkg-hanzi); font-size:16px; }\n\n#tkg-game-section .tkg-counter { background:linear-gradient(var(--tkg-wood),#b97b44); border-radius:16px; padding:10px; box-shadow:inset 0 3px 0 rgba(255,255,255,.25),0 5px 0 var(--tkg-wood-deep); margin-bottom:12px; }\n#tkg-game-section .tkg-kitchen { display:grid; grid-template-columns:repeat(8,minmax(0,1fr)); gap:8px; }\n#tkg-game-section .tkg-station { position:relative; background:var(--tkg-steel); border:2.5px solid var(--tkg-wood-deep); border-radius:14px; padding:8px 4px 6px; display:flex; flex-direction:column; align-items:center; gap:2px; transition:transform .12s; color:var(--tkg-ink); }\n#tkg-game-section .tkg-station:hover { transform:translateY(-2px); }\n#tkg-game-section .tkg-station svg.tool { width:100%; max-width:84px; height:auto; }\n#tkg-game-section .tkg-station .lbl { font-family:var(--tkg-en); font-weight:600; font-size:15px; text-align:center; line-height:1.15; color:var(--tkg-ink); }\n#tkg-game-section .tkg-station .on { min-height:24px; display:flex; gap:1px; flex-wrap:wrap; justify-content:center; font-size:18px; line-height:1; }\n#tkg-game-section .tkg-station .on svg { width:20px; height:20px; }\n#tkg-game-section .tkg-station.is-active { border-color:var(--tkg-lantern); background:#ffffff; }\n\n#tkg-game-section .tkg-fx { position:absolute; inset:0; pointer-events:none; overflow:hidden; border-radius:12px; }\n#tkg-game-section .tkg-fx span { position:absolute; left:50%; top:40%; }\n#tkg-game-section .tkg-fx.chop span { font-size:30px; animation:tkgChop .3s ease-in-out infinite; left:58%; top:12%; }\n@keyframes tkgChop { 50% { transform:translateY(16px) rotate(-12deg); } }\n#tkg-game-section .tkg-fx.rise span { width:14px; height:14px; border-radius:50%; background:rgba(150,150,150,.55); animation:tkgRise 1s ease-out infinite; }\n#tkg-game-section .tkg-fx.rise.bub span { background:transparent; border:2.5px solid #6fb3d9; width:12px; height:12px; }\n#tkg-game-section .tkg-fx.rise.steam span { background:rgba(255,255,255,.95); box-shadow:0 0 6px #fff; width:18px; height:18px; }\n#tkg-game-section .tkg-fx.rise.oil span { background:rgba(243,178,46,.75); width:10px; height:10px; }\n@keyframes tkgRise { from { transform:translate(-50%,10px) scale(.6); opacity:.9; } to { transform:translate(-50%,-50px) scale(1.4); opacity:0; } }\n#tkg-game-section .tkg-fx.heat { animation:tkgHeat .5s ease-in-out infinite alternate; }\n@keyframes tkgHeat { from { box-shadow:inset 0 0 0 0 rgba(243,120,30,0); } to { box-shadow:inset 0 0 30px 6px rgba(243,120,30,.7); } }\n#tkg-game-section .tkg-fx.spark span { font-size:20px; animation:tkgTwinkle .6s ease-in-out infinite alternate; }\n@keyframes tkgTwinkle { from { transform:scale(.5); opacity:.3; } to { transform:scale(1.2); opacity:1; } }\n#tkg-game-section .tkg-fx.stir span { font-size:28px; top:18%; left:40%; animation:tkgStir .6s linear infinite; transform-origin:20px 30px; }\n@keyframes tkgStir { to { transform:rotate(360deg); } }\n#tkg-game-section .tkg-fx.pop span { font-size:28px; top:15%; left:42%; animation:tkgPopin .6s ease-out; }\n@keyframes tkgPopin { from { transform:scale(0); } 60% { transform:scale(1.3); } to { transform:scale(1); } }\n\n#tkg-game-section .tkg-trayhead { display:flex; align-items:baseline; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-bottom:8px; }\n#tkg-game-section .tkg-trayhead h3 { margin:0; font-size:17px; font-family:var(--tkg-en); color:var(--tkg-jade-deep); letter-spacing:.04em; }\n#tkg-game-section .tkg-trayhead p { margin:0; font-size:14px; color:var(--tkg-muted); }\n#tkg-game-section .tkg-tray { display:grid; grid-template-columns:repeat(auto-fill,minmax(88px,1fr)); gap:8px; }\n#tkg-game-section .tkg-tile { position:relative; background:var(--tkg-paper); border:2.5px solid #c9d6ce; border-radius:14px; padding:8px 4px 6px; display:flex; flex-direction:column; align-items:center; gap:2px; min-height:96px; justify-content:center; transition:transform .12s,border-color .12s; color:var(--tkg-ink); }\n#tkg-game-section .tkg-tile .ic { font-size:40px; line-height:1; height:46px; display:grid; place-items:center; }\n#tkg-game-section .tkg-tile .ic svg { width:46px; height:46px; }\n#tkg-game-section .tkg-tile .nm { font-family:var(--tkg-en); font-size:15px; font-weight:600; text-align:center; line-height:1.15; color:var(--tkg-ink); }\n#tkg-game-section .tkg-tile .cap { font-size:11px; color:var(--tkg-muted); letter-spacing:.1em; }\n#tkg-game-section .tkg-tile.is-sel { border-color:var(--tkg-jade); background:var(--tkg-mint); transform:translateY(-4px); }\n#tkg-game-section .tkg-tile.is-sel::after { content:\"\u2713\"; position:absolute; top:4px; right:6px; width:20px; height:20px; border-radius:50%; background:var(--tkg-jade); color:#ffffff; font-size:13px; display:grid; place-items:center; }\n#tkg-game-section .tkg-tile.is-wip { border-style:dashed; border-color:var(--tkg-wood-deep); }\n#tkg-game-section .tkg-glow { animation:tkgGlow .7s ease-in-out infinite alternate; }\n@keyframes tkgGlow { from { box-shadow:0 0 0 0 rgba(243,178,46,.0); } to { box-shadow:0 0 0 6px rgba(243,178,46,.95),0 0 22px 6px rgba(243,178,46,.8); } }\n\n#tkg-game-section .tkg-servebar { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:16px; background:var(--tkg-paper); border:2.5px solid var(--tkg-ink); border-radius:16px; padding:14px; }\n#tkg-game-section .tkg-dishphoto { flex:none; display:grid; place-items:center; }\n#tkg-game-section .tkg-dishphoto img { display:block; width:auto; height:auto; max-width:150px; max-height:120px; object-fit:contain; border-radius:12px; }\n#tkg-game-section .tkg-dishphoto .tkg-plate { display:none; }\n#tkg-game-section .tkg-dishphoto.noimg img { display:none; }\n#tkg-game-section .tkg-dishphoto.noimg .tkg-plate { display:block; }\n#tkg-game-section .tkg-plate { position:relative; width:150px; height:96px; flex:none; }\n#tkg-game-section .tkg-plate svg { position:absolute; inset:0; width:100%; height:100%; }\n#tkg-game-section .tkg-plate .items { position:absolute; inset:14px 20px 22px; display:flex; flex-wrap:wrap; justify-content:center; align-items:center; font-size:26px; line-height:1; }\n#tkg-game-section .tkg-plate .items svg { position:static; width:28px; height:28px; }\n#tkg-game-section .tkg-big { font-family:var(--tkg-ui); font-size:22px; padding:12px 28px; border-radius:999px; border:none; background:var(--tkg-lantern); color:#ffffff; box-shadow:0 4px 0 #8f2416; letter-spacing:.1em; }\n#tkg-game-section .tkg-big:active { transform:translateY(3px); box-shadow:0 1px 0 #8f2416; }\n#tkg-game-section .tkg-big.alt { background:var(--tkg-jade); box-shadow:0 4px 0 var(--tkg-jade-deep); }\n\n#tkg-game-section .tkg-sheet { position:relative; width:100%; background:var(--tkg-paper); border:3px solid var(--tkg-ink); border-radius:20px; padding:14px 16px 16px; box-shadow:0 6px 0 var(--tkg-jade-deep); z-index:1; margin-bottom:12px; }\n#tkg-game-section .tkg-sheet h3 { margin:0 0 10px; font-size:17px; display:flex; align-items:center; gap:8px; justify-content:space-between; color:var(--tkg-ink); }\n#tkg-game-section .tkg-acts { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; }\n#tkg-game-section .tkg-act { font-family:var(--tkg-en); font-weight:600; font-size:21px; padding:12px 8px; border-radius:14px; border:2.5px solid var(--tkg-jade); background:#ffffff; color:var(--tkg-jade-deep); display:flex; flex-direction:column; align-items:center; line-height:1.15; }\n#tkg-game-section .tkg-act:hover { background:var(--tkg-mint); }\n#tkg-game-section .tkg-back { background:none; border:1.5px solid var(--tkg-muted); border-radius:999px; padding:3px 12px; font-size:14px; color:var(--tkg-muted); }\n#tkg-game-section .tkg-learned { display:flex; align-items:center; justify-content:center; gap:14px; padding:10px; font-family:var(--tkg-en); font-size:26px; font-weight:600; color:var(--tkg-jade-deep); }\n#tkg-game-section .tkg-learned b { font-family:var(--tkg-hanzi); font-size:52px; color:var(--tkg-lantern); animation:tkgPopin .5s ease-out; }\n\n#tkg-game-section .tkg-card { background:var(--tkg-paper); border:3px solid var(--tkg-ink); border-radius:22px; padding:24px clamp(16px,4vw,36px); box-shadow:0 6px 0 var(--tkg-jade-deep); display:flex; flex-direction:column; gap:18px; color:var(--tkg-ink); }\n#tkg-game-section .tkg-hero { display:flex; flex-wrap:wrap; align-items:center; gap:18px; }\n#tkg-game-section .tkg-hero .tkg-fig { width:120px; }\n#tkg-game-section .tkg-hero h3 { margin:0; font-family:var(--tkg-hanzi); font-size:clamp(32px,5vw,46px); letter-spacing:.06em; color:var(--tkg-ink); }\n#tkg-game-section .tkg-hero p { margin:6px 0 0; font-size:18px; color:var(--tkg-muted); max-width:34em; }\n#tkg-game-section .tkg-how { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px; margin:0; padding:0; list-style:none; counter-reset:s; }\n#tkg-game-section .tkg-how li { counter-increment:s; background:var(--tkg-mint); border-radius:14px; padding:12px 14px 12px 50px; position:relative; font-size:16px; line-height:1.5; color:var(--tkg-ink); }\n#tkg-game-section .tkg-how li::before { content:counter(s); position:absolute; left:12px; top:12px; width:28px; height:28px; border-radius:50%; background:var(--tkg-jade); color:#ffffff; display:grid; place-items:center; font-weight:700; }\n#tkg-game-section .tkg-opts { display:flex; flex-direction:column; gap:12px; }\n#tkg-game-section .tkg-opt { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; }\n#tkg-game-section .tkg-opt > span { min-width:11em; font-size:17px; }\n#tkg-game-section .tkg-seg { display:flex; gap:6px; flex-wrap:wrap; }\n#tkg-game-section .tkg-seg button { border:2px solid var(--tkg-jade); background:#ffffff; border-radius:999px; padding:6px 16px; font-size:16px; color:var(--tkg-jade-deep); }\n#tkg-game-section .tkg-seg button[aria-pressed=\"true\"] { background:var(--tkg-jade); color:#ffffff; }\n#tkg-game-section .tkg-sumgrid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; }\n#tkg-game-section .tkg-sumbox { background:#ffffff; border:2px solid var(--tkg-tile); border-radius:16px; padding:14px; min-width:0; }\n#tkg-game-section .tkg-sumbox h4 { margin:0 0 10px; font-size:14px; font-family:var(--tkg-en); color:var(--tkg-jade-deep); letter-spacing:.1em; }\n#tkg-game-section .tkg-dishrow { display:flex; justify-content:space-between; align-items:center; gap:8px; padding:5px 0; border-bottom:1px dashed var(--tkg-tile); }\n#tkg-game-section .tkg-dishrow .tkg-stars { font-size:18px; letter-spacing:2px; white-space:nowrap; }\n#tkg-game-section .tkg-chips { display:flex; flex-wrap:wrap; gap:8px; }\n#tkg-game-section .tkg-ichip { display:flex; align-items:center; gap:6px; background:var(--tkg-mint); border-radius:999px; padding:4px 12px 4px 6px; font-family:var(--tkg-hanzi); font-size:19px; color:var(--tkg-ink); }\n#tkg-game-section .tkg-ichip small { font-family:var(--tkg-en); font-size:13px; color:var(--tkg-muted); }\n#tkg-game-section .tkg-ichip .e { font-size:22px; line-height:1; }\n#tkg-game-section .tkg-ichip svg { width:24px; height:24px; }\n#tkg-game-section .tkg-vchip { background:var(--tkg-marigold-soft); border-radius:12px; padding:6px 12px; display:flex; align-items:baseline; gap:8px; }\n#tkg-game-section .tkg-vchip b { font-family:var(--tkg-hanzi); font-size:26px; color:var(--tkg-lantern); }\n#tkg-game-section .tkg-vchip span { font-family:var(--tkg-en); font-size:16px; color:var(--tkg-ink); }\n#tkg-game-section .tkg-total { font-size:20px; }\n#tkg-game-section .tkg-total b { font-size:30px; color:var(--tkg-lantern); }\n#tkg-game-section .tkg-credit { margin:14px 0 0; text-align:center; font-family:var(--tkg-en); font-size:15px; letter-spacing:.06em; color:var(--tkg-jade-deep); }\n\n@media (max-width:900px) { #tkg-game-section .tkg-kitchen { grid-template-columns:repeat(4,minmax(0,1fr)); } }\n@media (max-width:680px) {\n  #tkg-game-section .tkg-scene { grid-template-columns:1fr; }\n  #tkg-game-section .tkg-side { min-height:0; }\n  #tkg-game-section .tkg-fig { width:76px; }\n  #tkg-game-section .tkg-sign h2 { font-size:22px; }\n  #tkg-game-section .tkg-meta { margin-left:0; }\n}\n@media print {\n  #tkg-game-section, #tkg-fc-section .fc-toolbar-actions { display:none !important; }\n}\n<\/style>\n\n  <!-- \u7b2c\u4e00\u90e8\u5206\uff1a\u5148\u5b57\u5361 (Cooking Methods Flashcards) -->\n  <section id=\"tkg-fc-section\">\n    <div class=\"fc-header\">\n      <h2 class=\"fc-nav-title\" id=\"tkg-fc-title\"><span class=\"ez-toc-section\" id=\"%F0%9F%8D%B3_Cooking_Methods_Flashcards\"><\/span>\ud83c\udf73 Cooking Methods Flashcards<span class=\"ez-toc-section-end\"><\/span><\/h2>\n      <div class=\"fc-toolbar-actions\">\n        <button class=\"fc-btn\" id=\"tkg-fc-flipall\" data-tkg-btn=\"fcflip\">\ud83d\udd04 Flip All<\/button>\n        <button class=\"fc-btn\" data-tkg-btn=\"fcprint\">\ud83d\udda8\ufe0f Print \/ Save PDF<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"fc-sub-header\">\n      <h3 class=\"fc-sub-title\" id=\"tkg-fc-subtitle\">Vocabulary Review (Click to Flip \u00b7 Click \ud83d\udd0a to Listen)<\/h3>\n    <\/div>\n    <div class=\"fc-grid\" id=\"tkg-fc-grid\"><\/div>\n  <\/section>\n\n  <!-- \u7b2c\u4e8c\u90e8\u5206\uff1a\u5f8c\u904a\u6232 (Tiffany \u6f22\u5b57\u9910\u5ef3) -->\n  <section id=\"tkg-game-section\">\n    <div id=\"tkg-game-slot\"><\/div>\n    <footer class=\"tkg-credit\">OneDotDot Chinese \u00b7 Tiffany Huang<\/footer>\n  <\/section>\n\n<script>\n(function(){\n  var isSC = false;\n  var fcAllFlipped = false;\n  var curAudio = null;\n\n  \/* ==================== 1. 24 \u5f35\u70f9\u98ea\u65b9\u5f0f\u5b57\u5361\u8cc7\u6599\u5eab ==================== *\/\n  var COOKING_DB = [\n    { id: 1, tc: \"\u70e4\", sc: \"\u70e4\", pinyin: \"k\u01ceo\", en: \"to bake\", ja: \"\u713c\u304f\", ko: \"\uad7d\ub2e4\" },\n    { id: 2, tc: \"\u706b\u70e4\", sc: \"\u706b\u70e4\", pinyin: \"hu\u01d2k\u01ceo\", en: \"to grill\", ja: \"\u76f4\u706b\u713c\u304d\", ko: \"\uc9c1\ud654\uad6c\uc774\" },\n    { id: 3, tc: \"\u71d2\u70e4\", sc: \"\u70e7\u70e4\", pinyin: \"sh\u0101ok\u01ceo\", en: \"to barbecue\", ja: \"\u30d0\u30fc\u30d9\u30ad\u30e5\u30fc\", ko: \"\ubc14\ube44\ud050\" },\n    { id: 4, tc: \"\u70b8\", sc: \"\u70b8\", pinyin: \"zh\u00e0\", en: \"to deep-fry\", ja: \"\u63da\u3052\u308b\", ko: \"\ud280\uae30\ub2e4\" },\n    { id: 5, tc: \"\u7092\", sc: \"\u7092\", pinyin: \"ch\u01ceo\", en: \"to stir-fry\", ja: \"\u7092\u3081\u308b\", ko: \"\ubcf6\ub2e4\" },\n    { id: 6, tc: \"\u714e\", sc: \"\u714e\", pinyin: \"ji\u0101n\", en: \"to fry\", ja: \"\u713c\u304f(\u30d5\u30e9\u30a4\u30d1\u30f3)\", ko: \"\ubd80\uce58\ub2e4\" },\n    { id: 7, tc: \"\u71ac\", sc: \"\u71ac\", pinyin: \"\u00e1o\", en: \"to simmer\", ja: \"\u716e\u8fbc\u3080\", ko: \"\ud479 \ub053\uc774\ub2e4\" },\n    { id: 8, tc: \"\u716e\", sc: \"\u716e\", pinyin: \"zh\u01d4\", en: \"to boil\", ja: \"\u8339\u3067\u308b\", ko: \"\ub053\uc774\ub2e4\" },\n    { id: 9, tc: \"\u71d9\", sc: \"\u712f\", pinyin: \"t\u00e0ng\", pinyin_sc: \"ch\u0101o\", diffPron: true, en: \"to blanch\", ja: \"\u6e6f\u901a\u3057\u3059\u308b\", ko: \"\uc0b4\uc9dd \ub370\uce58\ub2e4\" },\n    { id: 10, tc: \"\u71c9\", sc: \"\u7096\", pinyin: \"d\u00f9n\", en: \"to stew\", ja: \"\u716e\u8fbc\u3080\", ko: \"\uc870\ub9ac\ub2e4\" },\n    { id: 11, tc: \"\u84b8\", sc: \"\u84b8\", pinyin: \"zh\u0113ng\", en: \"to steam\", ja: \"\u84b8\u3059\", ko: \"\ucc0c\ub2e4\" },\n    { id: 12, tc: \"\u62cc\", sc: \"\u62cc\", pinyin: \"b\u00e0n\", en: \"to toss\", ja: \"\u548c\u3048\u308b\", ko: \"\ubb34\uce58\ub2e4\" },\n    { id: 13, tc: \"\u9183\", sc: \"\u814c\", pinyin: \"y\u0101n\", en: \"to marinate\", ja: \"\u6f2c\u3051\u308b\", ko: \"\uc7ac\uc6b0\ub2e4\" },\n    { id: 14, tc: \"\u5241\", sc: \"\u5241\", pinyin: \"du\u00f2\", en: \"to chop\", ja: \"\u53e9\u304d\u5207\u308b\", ko: \"\ub2e4\uc9c0\ub2e4\" },\n    { id: 15, tc: \"\u5207\", sc: \"\u5207\", pinyin: \"qi\u0113\", en: \"to cut\", ja: \"\u5207\u308b\", ko: \"\uc790\ub974\ub2e4\" },\n    { id: 16, tc: \"\u5207\u7247\", sc: \"\u5207\u7247\", pinyin: \"qi\u0113pi\u00e0n\", en: \"to slice\", ja: \"\u30b9\u30e9\u30a4\u30b9\", ko: \"\uc370\ub2e4\" },\n    { id: 17, tc: \"\u524a\", sc: \"\u524a\", pinyin: \"xi\u0101o\", en: \"to peel\", ja: \"\u76ae\u3092\u3080\u304f\", ko: \"\uae4e\ub2e4\" },\n    { id: 18, tc: \"\u5228\", sc: \"\u5228\", pinyin: \"b\u00e0o\", en: \"to grate\", ja: \"\u5343\u5207\u308a\/\u3059\u308a\u304a\u308d\u3059\", ko: \"\ucc44\uc370\ub2e4\" },\n    { id: 19, tc: \"\u6492\", sc: \"\u6492\", pinyin: \"s\u01ce\", en: \"to sprinkle\", ja: \"\u632f\u308a\u304b\u3051\u308b\", ko: \"\ubfcc\ub9ac\ub2e4\" },\n    { id: 20, tc: \"\u5305\", sc: \"\u5305\", pinyin: \"b\u0101o\", en: \"to wrap\", ja: \"\u5305\u3080\", ko: \"\uc2f8\ub2e4\" },\n    { id: 21, tc: \"\u6253\u86cb\", sc: \"\u6253\u86cb\", pinyin: \"d\u01ce d\u00e0n\", en: \"to crack an egg\", ja: \"\u5375\u3092\u5272\u308b\", ko: \"\ub2ec\uac40\uc744 \uae68\ub2e4\" },\n    { id: 22, tc: \"\u6ef7\", sc: \"\u5364\", pinyin: \"l\u01d4\", en: \"to braise in master stock\", ja: \"\u91a4\u6cb9\u716e\u8fbc\u307f\", ko: \"\uac04\uc7a5\uc5d0 \uc870\ub9ac\ub2e4\" },\n    { id: 23, tc: \"\u7d05\u71d2\", sc: \"\u7ea2\u70e7\", pinyin: \"h\u00f3ngsh\u0101o\", en: \"to braise in soy sauce\", ja: \"\u91a4\u6cb9\u7092\u3081\u716e\", ko: \"\uac04\uc7a5 \uc870\ub9bc\" },\n    { id: 24, tc: \"\u6e05\u71c9\", sc: \"\u6e05\u7096\", pinyin: \"q\u012bngd\u00f9n\", en: \"to stew in clear soup\", ja: \"\u6e05\u6e6f\u716e\u8fbc\u307f\", ko: \"\ub9d1\uc740 \uad6d\ubb3c\ub85c \ub053\uc774\ub2e4\" }\n  ];\n\n  \/* ==================== \u8a9e\u97f3\u767c\u97f3\u7cfb\u7d71 (\u652f\u63f4\u7e41\u7c21\u4e0d\u540c\u767c\u97f3\u8207 TTS \u5099\u63f4) ==================== *\/\n  function speakTTS(text, langCode){\n    try{\n      if(window.speechSynthesis){\n        window.speechSynthesis.cancel();\n        var u = new SpeechSynthesisUtterance(text);\n        u.lang = langCode;\n        u.rate = 0.9;\n        window.speechSynthesis.speak(u);\n      }\n    }catch(e){}\n  }\n\n  function playVocabSound(itemId, ev){\n    if(ev) ev.stopPropagation();\n    var item = null;\n    for(var i=0; i<COOKING_DB.length; i++){\n      if(COOKING_DB[i].id === itemId){\n        item = COOKING_DB[i];\n        break;\n      }\n    }\n    if(!item) return;\n\n    if(curAudio){\n      curAudio.pause();\n      curAudio.currentTime = 0;\n    }\n\n    var base = 'https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/10\/';\n    \/\/ \u82e5\u5728\u7c21\u9ad4\u6a21\u5f0f\u4e14\u5169\u5cb8\u8b80\u97f3\/\u7528\u8a5e\u4e0d\u540c (\u4f8b\u5982\uff1a\u71d9 t\u00e0ng vs \u712f ch\u0101o)\uff0c\u512a\u5148\u5617\u8a66\u8b80\u53d6\u7c21\u9ad4\u97f3\u6a94\uff0c\u82e5\u7121\u5247\u7528\u5927\u9678\u666e\u901a\u8a71 TTS \u767c\u97f3\n    if(isSC){\n      var scUrl = base + encodeURIComponent(item.sc) + '.m4a';\n      var tcUrl = base + encodeURIComponent(item.tc) + '.m4a';\n      curAudio = new Audio(scUrl);\n      curAudio.play().catch(function(){\n        if(item.diffPron){\n          speakTTS(item.sc, 'zh-CN');\n        } else {\n          curAudio = new Audio(tcUrl);\n          curAudio.play().catch(function(){\n            speakTTS(item.sc, 'zh-CN');\n          });\n        }\n      });\n    } else {\n      var url = base + encodeURIComponent(item.tc) + '.m4a';\n      curAudio = new Audio(url);\n      curAudio.play().catch(function(){\n        speakTTS(item.tc, 'zh-TW');\n      });\n    }\n  }\n\n  function renderFlashcards(){\n    var flipBtn = document.getElementById('tkg-fc-flipall');\n    if(flipBtn){\n      flipBtn.innerText = fcAllFlipped ? '\ud83d\udd04 Reset Front' : '\ud83d\udd04 Flip All';\n    }\n    var grid = document.getElementById('tkg-fc-grid');\n    if(!grid) return;\n    var html = '';\n    COOKING_DB.forEach(function(item){\n      var name = isSC ? item.sc : item.tc;\n      var py = item.pinyin;\n      if(isSC){\n        if(item.pinyin_sc) py = item.pinyin_sc;\n      }\n      var flipCls = fcAllFlipped ? ' is-flipped' : '';\n      html += '<div class=\"fc-card' + flipCls + '\" data-tkg-fcard=\"1\">' +\n        '<div class=\"fc-card-inner\">' +\n          '<div class=\"fc-front\">' +\n            '<div class=\"fc-badge\">' + item.id + '<\/div>' +\n            '<div class=\"fc-audio-btn\" title=\"Listen\" data-tkg-fcaud=\"' + item.id + '\">\ud83d\udd0a<\/div>' +\n            '<div class=\"fc-hanzi-big\">' + name + '<\/div>' +\n            '<div class=\"fc-flip-hint\">\ud83d\udc46 Click to flip<\/div>' +\n          '<\/div>' +\n          '<div class=\"fc-back\">' +\n            '<div class=\"fc-badge\">' + item.id + '<\/div>' +\n            '<div class=\"fc-audio-btn\" title=\"Listen\" data-tkg-fcaud=\"' + item.id + '\">\ud83d\udd0a<\/div>' +\n            '<div class=\"fc-trans-list\">' +\n              '<div class=\"fc-trans-item\"><span class=\"fc-lang-pill\">EN<\/span><span class=\"fc-trans-text\" title=\"' + item.en + '\">' + item.en + '<\/span><\/div>' +\n              '<div class=\"fc-trans-item\"><span class=\"fc-lang-pill\">JA<\/span><span class=\"fc-trans-text\" title=\"' + item.ja + '\">' + item.ja + '<\/span><\/div>' +\n              '<div class=\"fc-trans-item\"><span class=\"fc-lang-pill\">KO<\/span><span class=\"fc-trans-text\" title=\"' + item.ko + '\">' + item.ko + '<\/span><\/div>' +\n            '<\/div>' +\n            '<div class=\"fc-back-sub\">' +\n              '<span>' + name + '<\/span> \u00b7 <span>' + py + '<\/span>' +\n              '<button class=\"fc-audio-inline\" title=\"Listen\" data-tkg-fcaud=\"' + item.id + '\">\ud83d\udd0a<\/button>' +\n            '<\/div>' +\n            '<div class=\"fc-flip-hint\">\u21ba Click to flip back<\/div>' +\n          '<\/div>' +\n        '<\/div>' +\n      '<\/div>';\n    });\n    grid.innerHTML = html;\n  }\n\n  \/* ==================== 2. \u6f22\u5b57\u9910\u5ef3\u904a\u6232\u8cc7\u6599\u5eab\u8207\u908f\u8f2f ==================== *\/\n  var SVG = {\n    greens:'<svg viewBox=\"0 0 64 64\"><ellipse cx=\"22\" cy=\"24\" rx=\"10\" ry=\"17\" transform=\"rotate(-18 22 24)\" fill=\"#4fae4a\" stroke=\"#2c6e2a\" stroke-width=\"2\"\/><ellipse cx=\"42\" cy=\"24\" rx=\"10\" ry=\"17\" transform=\"rotate(18 42 24)\" fill=\"#4fae4a\" stroke=\"#2c6e2a\" stroke-width=\"2\"\/><ellipse cx=\"32\" cy=\"19\" rx=\"11\" ry=\"17\" fill=\"#5cc057\" stroke=\"#2c6e2a\" stroke-width=\"2\"\/><path d=\"M24 60 Q21 44 26 34 L38 34 Q43 44 40 60 Z\" fill=\"#eef7dd\" stroke=\"#7aa35a\" stroke-width=\"2\"\/><\/svg>',\n    cabbage:'<svg viewBox=\"0 0 64 64\"><circle cx=\"32\" cy=\"34\" r=\"25\" fill=\"#b9df8c\" stroke=\"#5f9a3a\" stroke-width=\"2.5\"\/><path d=\"M14 30 Q32 16 50 30 M18 44 Q32 28 46 44 M32 10 Q26 34 32 58\" fill=\"none\" stroke=\"#6faa45\" stroke-width=\"2.5\"\/><\/svg>',\n    daikon:'<svg viewBox=\"0 0 64 64\"><path d=\"M26 6 Q22 12 30 18 M38 6 Q42 12 34 18 M32 4 V18\" stroke=\"#3f9a3c\" stroke-width=\"5\" stroke-linecap=\"round\" fill=\"none\"\/><path d=\"M24 18 Q20 40 28 54 Q32 62 36 54 Q44 40 40 18 Z\" fill=\"#f6f4ec\" stroke=\"#9aa59a\" stroke-width=\"2.5\"\/><path d=\"M28 30 h4 M33 40 h4\" stroke=\"#c7ccc4\" stroke-width=\"2\"\/><\/svg>',\n    scallion:'<svg viewBox=\"0 0 64 64\"><path d=\"M22 6 L26 40\" stroke=\"#3fa34a\" stroke-width=\"7\" stroke-linecap=\"round\"\/><path d=\"M36 4 L36 40\" stroke=\"#52b85a\" stroke-width=\"7\" stroke-linecap=\"round\"\/><path d=\"M44 8 L40 40\" stroke=\"#3fa34a\" stroke-width=\"6\" stroke-linecap=\"round\"\/><rect x=\"20\" y=\"38\" width=\"26\" height=\"16\" rx=\"6\" fill=\"#f7f7ee\" stroke=\"#a4ad9e\" stroke-width=\"2\"\/><path d=\"M26 54 l-3 6 M33 54 v7 M40 54 l3 6\" stroke=\"#b9a988\" stroke-width=\"2\"\/><\/svg>',\n    shiitake:'<svg viewBox=\"0 0 64 64\"><rect x=\"26\" y=\"30\" width=\"12\" height=\"26\" rx=\"5\" fill=\"#f1e2c4\" stroke=\"#a88a5c\" stroke-width=\"2\"\/><path d=\"M6 34 Q6 10 32 10 Q58 10 58 34 Q32 27 6 34 Z\" fill=\"#8a5636\" stroke=\"#5a3520\" stroke-width=\"2.5\"\/><circle cx=\"22\" cy=\"20\" r=\"2.5\" fill=\"#d8b98f\"\/><circle cx=\"36\" cy=\"16\" r=\"2\" fill=\"#d8b98f\"\/><circle cx=\"44\" cy=\"24\" r=\"2.5\" fill=\"#d8b98f\"\/><\/svg>',\n    noodles:'<svg viewBox=\"0 0 64 64\"><g fill=\"none\" stroke=\"#e9c35a\" stroke-width=\"3.5\" stroke-linecap=\"round\"><path d=\"M14 8 q4 6 0 12 q-4 6 0 12 q4 6 0 12 q-4 6 0 12\"\/><path d=\"M24 8 q4 6 0 12 q-4 6 0 12 q4 6 0 12 q-4 6 0 12\"\/><path d=\"M34 8 q4 6 0 12 q-4 6 0 12 q4 6 0 12 q-4 6 0 12\"\/><path d=\"M44 8 q4 6 0 12 q-4 6 0 12 q4 6 0 12 q-4 6 0 12\"\/><\/g><rect x=\"8\" y=\"28\" width=\"48\" height=\"9\" rx=\"3\" fill=\"#d63f2c\"\/><\/svg>',\n    soy:'<svg viewBox=\"0 0 64 64\"><rect x=\"27\" y=\"4\" width=\"10\" height=\"8\" rx=\"2\" fill=\"#d63f2c\"\/><path d=\"M26 12 h12 v8 q8 4 8 12 v24 q0 4 -4 4 h-20 q-4 0 -4 -4 v-24 q0 -8 8 -12 z\" fill=\"#3a2214\" stroke=\"#1d110a\" stroke-width=\"2\"\/><rect x=\"22\" y=\"34\" width=\"20\" height=\"14\" rx=\"2\" fill=\"#f6ead2\"\/><rect x=\"26\" y=\"38\" width=\"12\" height=\"3\" fill=\"#d63f2c\"\/><\/svg>',\n    vinegar:'<svg viewBox=\"0 0 64 64\"><rect x=\"28\" y=\"2\" width=\"8\" height=\"8\" rx=\"2\" fill=\"#f3b22e\"\/><path d=\"M28 10 h8 v10 q6 3 6 10 v26 q0 4 -4 4 h-12 q-4 0 -4 -4 v-26 q0 -7 6 -10 z\" fill=\"#f2cf8a\" fill-opacity=\".85\" stroke=\"#b07d2a\" stroke-width=\"2\"\/><rect x=\"24\" y=\"34\" width=\"16\" height=\"12\" rx=\"2\" fill=\"#fff\"\/><circle cx=\"32\" cy=\"40\" r=\"3\" fill=\"#1d6b56\"\/><\/svg>',\n    mayo:'<svg viewBox=\"0 0 64 64\"><path d=\"M32 2 l6 10 h-12 z\" fill=\"#d63f2c\"\/><rect x=\"24\" y=\"11\" width=\"16\" height=\"7\" rx=\"2\" fill=\"#d63f2c\"\/><path d=\"M22 18 h20 q4 0 4 6 v30 q0 6 -6 6 h-16 q-6 0 -6 -6 v-30 q0 -6 4 -6 z\" fill=\"#fff4cf\" stroke=\"#c9a65a\" stroke-width=\"2\"\/><path d=\"M18 34 q14 6 28 0\" stroke=\"#2f7fc0\" stroke-width=\"4\" fill=\"none\"\/><\/svg>',\n    flour:'<svg viewBox=\"0 0 64 64\"><path d=\"M14 16 l6 -8 h24 l6 8 v40 q0 4 -4 4 h-28 q-4 0 -4 -4 z\" fill=\"#f3e3b8\" stroke=\"#a88a4c\" stroke-width=\"2.5\"\/><path d=\"M14 16 h36\" stroke=\"#a88a4c\" stroke-width=\"2\"\/><path d=\"M32 26 v24 M32 32 l-6 -4 M32 32 l6 -4 M32 40 l-6 -4 M32 40 l6 -4\" stroke=\"#c79a3a\" stroke-width=\"2.5\" stroke-linecap=\"round\" fill=\"none\"\/><\/svg>',\n    clam:'<svg viewBox=\"0 0 64 64\"><path d=\"M32 10 Q48 16 54 42 Q44 56 32 56 Q20 56 10 42 Q16 16 32 10 Z\" fill=\"#e8dfcf\" stroke=\"#5a4a3a\" stroke-width=\"3\"\/><path d=\"M14 40 Q32 30 50 40\" fill=\"none\" stroke=\"#5a4a3a\" stroke-width=\"2\"\/><\/svg>',\n    wrapper:'<svg viewBox=\"0 0 64 64\"><circle cx=\"32\" cy=\"34\" r=\"26\" fill=\"#fbf4e3\" stroke=\"#cdb98d\" stroke-width=\"2.5\"\/><circle cx=\"24\" cy=\"28\" r=\"1.5\" fill=\"#e3d3ad\"\/><circle cx=\"40\" cy=\"38\" r=\"1.5\" fill=\"#e3d3ad\"\/><circle cx=\"30\" cy=\"44\" r=\"1.5\" fill=\"#e3d3ad\"\/><\/svg>',\n    dumpwrap:'<svg viewBox=\"0 0 64 64\"><ellipse cx=\"32\" cy=\"48\" rx=\"24\" ry=\"9\" fill=\"#f6ecd4\" stroke=\"#cdb98d\" stroke-width=\"2\"\/><ellipse cx=\"32\" cy=\"40\" rx=\"24\" ry=\"9\" fill=\"#f9f0dc\" stroke=\"#cdb98d\" stroke-width=\"2\"\/><ellipse cx=\"32\" cy=\"32\" rx=\"24\" ry=\"9\" fill=\"#fcf6e8\" stroke=\"#cdb98d\" stroke-width=\"2\"\/><\/svg>',\n    wip:'<svg viewBox=\"0 0 64 64\"><path d=\"M22 14 q-3 -5 0 -9 M32 12 q-3 -5 0 -9 M42 14 q-3 -5 0 -9\" stroke=\"#9fb3aa\" stroke-width=\"2.5\" fill=\"none\" stroke-linecap=\"round\"\/><path d=\"M10 40 Q10 20 32 20 Q54 20 54 40 Z\" fill=\"#d9e4de\" stroke=\"#5b6c65\" stroke-width=\"2.5\"\/><circle cx=\"32\" cy=\"18\" r=\"4\" fill=\"#5b6c65\"\/><rect x=\"6\" y=\"40\" width=\"52\" height=\"6\" rx=\"3\" fill=\"#fff\" stroke=\"#5b6c65\" stroke-width=\"2.5\"\/><path d=\"M12 46 Q14 58 32 58 Q50 58 52 46\" fill=\"#c88b52\" stroke=\"#5b6c65\" stroke-width=\"2.5\"\/><\/svg>'\n  };\n\n  var TOOLSVG = {\n    board:'<svg class=\"tool\" viewBox=\"0 0 84 60\"><rect x=\"6\" y=\"20\" width=\"72\" height=\"34\" rx=\"7\" fill=\"#dca468\" stroke=\"#8d582c\" stroke-width=\"2.5\"\/><circle cx=\"68\" cy=\"30\" r=\"3.5\" fill=\"#8d582c\"\/><path d=\"M14 34 h40 M16 44 h34\" stroke=\"#c48a50\" stroke-width=\"2\"\/><path d=\"M20 8 h34 l4 8 h-38 z\" fill=\"#d7dde0\" stroke=\"#5b6c65\" stroke-width=\"2\"\/><rect x=\"56\" y=\"10\" width=\"20\" height=\"5\" rx=\"2.5\" fill=\"#1e2b27\"\/><\/svg>',\n    pan:'<svg class=\"tool\" viewBox=\"0 0 84 60\"><circle cx=\"34\" cy=\"32\" r=\"24\" fill=\"#373c42\" stroke=\"#1e2b27\" stroke-width=\"2.5\"\/><circle cx=\"34\" cy=\"32\" r=\"18\" fill=\"#4d545c\"\/><rect x=\"56\" y=\"28\" width=\"26\" height=\"9\" rx=\"4.5\" fill=\"#8d582c\"\/><\/svg>',\n    pot:'<svg class=\"tool\" viewBox=\"0 0 84 60\"><rect x=\"6\" y=\"28\" width=\"10\" height=\"6\" rx=\"3\" fill=\"#5b6c65\"\/><rect x=\"68\" y=\"28\" width=\"10\" height=\"6\" rx=\"3\" fill=\"#5b6c65\"\/><path d=\"M14 24 h56 v24 q0 8 -8 8 h-40 q-8 0 -8 -8 z\" fill=\"#c3cbd1\" stroke=\"#5b6c65\" stroke-width=\"2.5\"\/><ellipse cx=\"42\" cy=\"22\" rx=\"30\" ry=\"6\" fill=\"#dfe5e8\" stroke=\"#5b6c65\" stroke-width=\"2.5\"\/><rect x=\"36\" y=\"11\" width=\"12\" height=\"6\" rx=\"3\" fill=\"#1e2b27\"\/><\/svg>',\n    steamer:'<svg class=\"tool\" viewBox=\"0 0 84 60\"><path d=\"M14 22 Q42 4 70 22 Z\" fill=\"#e8c57a\" stroke=\"#8d582c\" stroke-width=\"2.5\"\/><rect x=\"12\" y=\"22\" width=\"60\" height=\"16\" rx=\"4\" fill=\"#efcd85\" stroke=\"#8d582c\" stroke-width=\"2.5\"\/><rect x=\"12\" y=\"38\" width=\"60\" height=\"16\" rx=\"4\" fill=\"#e2bb6c\" stroke=\"#8d582c\" stroke-width=\"2.5\"\/><path d=\"M12 30 h60 M12 46 h60\" stroke=\"#b98a3e\" stroke-width=\"1.5\"\/><\/svg>',\n    oven:'<svg class=\"tool\" viewBox=\"0 0 84 60\"><rect x=\"10\" y=\"4\" width=\"64\" height=\"52\" rx=\"7\" fill=\"#ece6da\" stroke=\"#5b6c65\" stroke-width=\"2.5\"\/><circle cx=\"22\" cy=\"13\" r=\"3.5\" fill=\"#5b6c65\"\/><circle cx=\"34\" cy=\"13\" r=\"3.5\" fill=\"#5b6c65\"\/><rect x=\"48\" y=\"10\" width=\"18\" height=\"6\" rx=\"3\" fill=\"#d63f2c\"\/><rect x=\"18\" y=\"22\" width=\"48\" height=\"27\" rx=\"4\" fill=\"#3b2e26\"\/><path d=\"M24 40 q4 -6 8 0 q4 -6 8 0 q4 -6 8 0 q4 -6 8 0\" stroke=\"#f3923a\" stroke-width=\"2.5\" fill=\"none\"\/><\/svg>',\n    plate:'<svg class=\"tool\" viewBox=\"0 0 84 60\"><ellipse cx=\"42\" cy=\"36\" rx=\"36\" ry=\"17\" fill=\"#fff\" stroke=\"#5b6c65\" stroke-width=\"2.5\"\/><ellipse cx=\"42\" cy=\"35\" rx=\"24\" ry=\"10\" fill=\"none\" stroke=\"#c9d6ce\" stroke-width=\"2\"\/><\/svg>',\n    hand:'<svg class=\"tool\" viewBox=\"0 0 84 60\"><g fill=\"#f4cfa9\" stroke=\"#1e2b27\" stroke-width=\"2.5\" stroke-linejoin=\"round\"><path d=\"M27 38 q-11 -12 -15 -7 q-3 4 9 18\"\/><rect x=\"28\" y=\"6\" width=\"8\" height=\"28\" rx=\"4\"\/><rect x=\"37\" y=\"3\" width=\"8\" height=\"30\" rx=\"4\"\/><rect x=\"46\" y=\"5\" width=\"8\" height=\"28\" rx=\"4\"\/><rect x=\"55\" y=\"11\" width=\"7\" height=\"22\" rx=\"3.5\"\/><path d=\"M25 28 h38 v12 q0 16 -19 16 q-17 0 -19 -16 z\"\/><\/g><path d=\"M33 44 q6 4 14 0\" stroke=\"#e0a98a\" stroke-width=\"2\" fill=\"none\"\/><\/svg>',\n    bowl:'<svg class=\"tool\" viewBox=\"0 0 84 60\"><path d=\"M8 22 H76 Q74 54 42 54 Q10 54 8 22 Z\" fill=\"#fff\" stroke=\"#5b6c65\" stroke-width=\"2.5\"\/><path d=\"M12 32 Q42 38 72 32\" stroke=\"#2f6fb0\" stroke-width=\"3\" fill=\"none\"\/><path d=\"M18 42 q4 -4 8 0 q4 -4 8 0\" stroke=\"#2f6fb0\" stroke-width=\"2\" fill=\"none\"\/><ellipse cx=\"42\" cy=\"22\" rx=\"34\" ry=\"5\" fill=\"#f1f4f2\" stroke=\"#5b6c65\" stroke-width=\"2.5\"\/><\/svg>'\n  };\n  var PLATESVG = '<svg viewBox=\"0 0 150 96\"><ellipse cx=\"75\" cy=\"56\" rx=\"70\" ry=\"34\" fill=\"#fff\" stroke=\"#1e2b27\" stroke-width=\"3\"\/><ellipse cx=\"75\" cy=\"54\" rx=\"50\" ry=\"22\" fill=\"none\" stroke=\"#c9d6ce\" stroke-width=\"2.5\"\/><\/svg>';\n\n  var ING = {\n    tomato:{zh:'\u756a\u8304',sc:'\u897f\u7ea2\u67ff',en:'Tomato',e:'\ud83c\udf45'},\n    egg:{zh:'\u96de\u86cb',sc:'\u9e21\u86cb',en:'Egg',e:'\ud83e\udd5a'},\n    beef:{zh:'\u725b\u8089',sc:'\u725b\u8089',en:'Beef',e:'\ud83e\udd69'},\n    pork:{zh:'\u8c6c\u8089',sc:'\u732a\u8089',en:'Pork',e:'\ud83c\udf56'},\n    chicken:{zh:'\u96de\u8089',sc:'\u9e21\u8089',en:'Chicken',e:'\ud83c\udf57'},\n    shrimp:{zh:'\u8766\u4ec1',sc:'\u867e\u4ec1',en:'Shrimp',e:'\ud83e\udd90'},\n    rice:{zh:'\u767d\u98ef',sc:'\u7c73\u996d',en:'Rice',e:'\ud83c\udf5a'},\n    potato:{zh:'\u99ac\u9234\u85af',sc:'\u571f\u8c46',en:'Potato',e:'\ud83e\udd54'},\n    cucumber:{zh:'\u5c0f\u9ec3\u74dc',sc:'\u9ec4\u74dc',en:'Cucumber',e:'\ud83e\udd52'},\n    garlic:{zh:'\u849c\u982d',sc:'\u849c\u5934',en:'Garlic',e:'\ud83e\uddc4'},\n    onion:{zh:'\u6d0b\u8525',sc:'\u6d0b\u8471',en:'Onion',e:'\ud83e\uddc5'},\n    carrot:{zh:'\u7d05\u863f\u8514',sc:'\u80e1\u841d\u535c',en:'Carrot',e:'\ud83e\udd55'},\n    basil:{zh:'\u4e5d\u5c64\u5854',sc:'\u4e5d\u5c42\u5854',en:'Thai basil',e:'\ud83c\udf3f'},\n    ribs:{zh:'\u6392\u9aa8',sc:'\u6392\u9aa8',en:'Pork ribs',e:'\ud83c\udf56'},\n    bun:{zh:'\u9eb5\u5305',sc:'\u9762\u5305',en:'Bun',e:'\ud83c\udf5e'},\n    lettuce:{zh:'\u751f\u83dc',sc:'\u751f\u83dc',en:'Lettuce',e:'\ud83e\udd6c'},\n    pepper:{zh:'\u9752\u6912',sc:'\u9752\u6912',en:'Green pepper',e:'\ud83e\uded1'},\n    sweetpotato:{zh:'\u5730\u74dc',sc:'\u7ea2\u85af',en:'Sweet potato',e:'\ud83c\udf60'},\n    clam:{zh:'\u86e4\u870a',sc:'\u86e4\u870a',en:'Clams',s:'clam'},\n    greens:{zh:'\u9752\u83dc',sc:'\u9752\u83dc',en:'Leafy greens',s:'greens'},\n    cabbage:{zh:'\u9ad8\u9e97\u83dc',sc:'\u5377\u5fc3\u83dc',en:'Cabbage',s:'cabbage'},\n    daikon:{zh:'\u767d\u863f\u8514',sc:'\u767d\u841d\u535c',en:'Daikon radish',s:'daikon'},\n    scallion:{zh:'\u8525',sc:'\u8471',en:'Scallion',s:'scallion'},\n    shiitake:{zh:'\u9999\u83c7',sc:'\u9999\u83c7',en:'Shiitake',s:'shiitake'},\n    noodles:{zh:'\u9eb5\u689d',sc:'\u9762\u6761',en:'Noodles',s:'noodles'},\n    soy:{zh:'\u91ac\u6cb9',sc:'\u9171\u6cb9',en:'Soy sauce',s:'soy'},\n    vinegar:{zh:'\u918b',sc:'\u918b',en:'Vinegar',s:'vinegar'},\n    mayo:{zh:'\u7f8e\u4e43\u6ecb',sc:'\u6c99\u62c9\u9171',en:'Mayonnaise',s:'mayo'},\n    flour:{zh:'\u70b8\u7c89',sc:'\u70b8\u7c89',en:'Frying flour',s:'flour'},\n    wrapper:{zh:'\u9eb5\u76ae',sc:'\u9762\u76ae',en:'Bun dough',s:'wrapper'},\n    dumpwrap:{zh:'\u6c34\u9903\u76ae',sc:'\u997a\u5b50\u76ae',en:'Dumpling wrappers',s:'dumpwrap'}\n  };\n\n  var ACT = {\n    '\u5207':{sc:'\u5207',en:'to cut'},\n    '\u5207\u7247':{sc:'\u5207\u7247',en:'to slice'},\n    '\u5241':{sc:'\u5241',en:'to chop'},\n    '\u7092':{sc:'\u7092',en:'to stir-fry'},\n    '\u714e':{sc:'\u714e',en:'to fry'},\n    '\u70b8':{sc:'\u70b8',en:'to deep-fry'},\n    '\u716e':{sc:'\u716e',en:'to boil'},\n    '\u71c9':{sc:'\u7096',en:'to stew'},\n    '\u71ac':{sc:'\u71ac',en:'to simmer'},\n    '\u71d9':{sc:'\u712f',en:'to blanch'},\n    '\u6ef7':{sc:'\u5364',en:'to braise in master stock'},\n    '\u84b8':{sc:'\u84b8',en:'to steam'},\n    '\u70e4':{sc:'\u70e4',en:'to bake'},\n    '\u71d2\u70e4':{sc:'\u70e7\u70e4',en:'to barbecue'},\n    '\u9183':{sc:'\u814c',en:'to marinate'},\n    '\u62cc':{sc:'\u62cc',en:'to toss'},\n    '\u6492':{sc:'\u6492',en:'to sprinkle'},\n    '\u5305':{sc:'\u5305',en:'to wrap'},\n    '\u524a':{sc:'\u524a',en:'to peel'},\n    '\u52a0':{sc:'\u52a0',en:'to add'},\n    '\u6253\u86cb':{sc:'\u6253\u86cb',en:'to crack an egg'}\n  };\n\n  var TOOLS = [\n    {id:'board',en:'Cutting board',acts:['\u5207','\u5207\u7247','\u5241']},\n    {id:'pan',en:'Frying pan',acts:['\u714e','\u7092','\u70b8']},\n    {id:'pot',en:'Pot',acts:['\u716e','\u71c9','\u71ac','\u71d9','\u6ef7']},\n    {id:'steamer',en:'Steamer',acts:['\u84b8']},\n    {id:'oven',en:'Oven',acts:['\u70e4','\u71d2\u70e4']},\n    {id:'plate',en:'Plate',acts:['\u9183']},\n    {id:'bowl',en:'Bowl',acts:['\u62cc','\u6492','\u6253\u86cb']},\n    {id:'hand',en:'Hands',acts:['\u5305','\u524a','\u52a0']}\n  ];\n  var TOOL = {};\n  TOOLS.forEach(function(t){ TOOL[t.id] = t; });\n\n  function S(i,t,a,h,hsc){ return {i:i,t:t,a:a,h:h,hsc:hsc||h}; }\n  var DISHES = [\n    {n:'\u756a\u8304\u7092\u86cb',sc:'\u897f\u7ea2\u67ff\u7092\u86cb',py:'f\u0101n qi\u00e9 ch\u01ceo d\u00e0n',py_sc:'x\u012b h\u00f3ng sh\u00ec ch\u01ceo d\u00e0n',en:'Tomato & egg stir-fry',s:[\n      S(['tomato'],'board','\u5207','\u5148\u628a[\u756a\u8304]*\u5207*\u4e00*\u5207*\u3002','\u5148\u628a[\u897f\u7ea2\u67ff]*\u5207*\u4e00*\u5207*\u3002'),\n      S(['egg'],'bowl','\u6253\u86cb','\u5148*\u6253\u86cb*\uff1a\u628a[\u96de\u86cb]\u6253\u9032\u7897\u88e1\u3002','\u5148*\u6253\u86cb*\uff1a\u628a[\u9e21\u86cb]\u6253\u8fdb\u7897\u91cc\u3002'),\n      S(['egg'],'pan','\u7092','\u628a[\u86cb]\u653e\u5230\u5e73\u5e95\u934b\u88e1*\u7092*\u3002','\u628a[\u86cb]\u653e\u5230\u5e73\u5e95\u9505\u91cc*\u7092*\u3002'),\n      S(['tomato'],'pan','\u7092','\u518d\u628a[\u756a\u8304]\u653e\u9032\u5e73\u5e95\u934b\uff0c\u4e00\u8d77*\u7092*\uff01','\u518d\u628a[\u897f\u7ea2\u67ff]\u653e\u8fdb\u5e73\u5e95\u9505\uff0c\u4e00\u8d77*\u7092*\uff01')\n    ]},\n    {n:'\u725b\u8089\u9eb5',sc:'\u725b\u8089\u9762',py:'ni\u00fa r\u00f2u mi\u00e0n',py_sc:'ni\u00fa r\u00f2u mi\u00e0n',en:'Beef noodle soup',s:[\n      S(['beef'],'board','\u5207','\u5148\u628a[\u725b\u8089]*\u5207*\u6210\u584a\u3002','\u5148\u628a[\u725b\u8089]*\u5207*\u6210\u5757\u3002'),\n      S(['beef'],'pot','\u71c9','\u628a[\u725b\u8089]\u653e\u9032\u934b\u5b50\u88e1\u6162\u6162*\u71c9*\u3002','\u628a[\u725b\u8089]\u653e\u8fdb\u9505\u5b50\u91cc\u6162\u6162*\u7096*\u3002'),\n      S(['noodles'],'pot','\u716e','\u628a[\u9eb5\u689d]\u653e\u9032\u934b\u5b50\u88e1*\u716e*\u3002','\u628a[\u9762\u6761]\u653e\u8fdb\u9505\u5b50\u91cc*\u716e*\u3002'),\n      S(['scallion'],'board','\u5207','\u628a[\u8525]*\u5207*\u4e00*\u5207*\u3002','\u628a[\u8471]*\u5207*\u4e00*\u5207*\u3002'),\n      S(['scallion'],'bowl','\u6492','\u628a\u9eb5\u548c\u6e6f\u5012\u9032\u7897\u88e1\uff0c\u518d\u628a[\u8525]*\u6492*\u5728\u4e0a\u9762\u3002','\u628a\u9762\u548c\u6c64\u5012\u8fdb\u7897\u91cc\uff0c\u518d\u628a[\u8471]*\u6492*\u5728\u4e0a\u9762\u3002')\n    ]},\n    {n:'\u71d9\u9752\u83dc',sc:'\u712f\u9752\u83dc',py:'t\u00e0ng q\u012bng c\u00e0i',py_sc:'ch\u0101o q\u012bng c\u00e0i',en:'Blanched greens',s:[\n      S(['greens'],'pot','\u71d9','\u628a[\u9752\u83dc]\u653e\u9032\u934b\u5b50\u88e1*\u71d9*\u4e00\u4e0b\u3002','\u628a[\u9752\u83dc]\u653e\u8fdb\u9505\u5b50\u91cc*\u712f*\u4e00\u4e0b\u3002')\n    ]},\n    {n:'\u6ef7\u8089\u98ef\u52a0\u86cb',sc:'\u5364\u8089\u996d\u52a0\u86cb',py:'l\u01d4 r\u00f2u f\u00e0n ji\u0101 d\u00e0n',py_sc:'l\u01d4 r\u00f2u f\u00e0n ji\u0101 d\u00e0n',en:'Braised pork rice with egg',s:[\n      S(['pork'],'board','\u5241','\u5148\u628a[\u8c6c\u8089]*\u5241*\u6210\u5c0f\u4e01\u3002','\u5148\u628a[\u732a\u8089]*\u5241*\u6210\u5c0f\u4e01\u3002'),\n      S(['pork','soy'],'pot','\u6ef7','\u628a[\u8c6c\u8089]\u548c[\u91ac\u6cb9]\u653e\u9032\u934b\u5b50\u88e1*\u6ef7*\u3002','\u628a[\u732a\u8089]\u548c[\u9171\u6cb9]\u653e\u8fdb\u9505\u5b50\u91cc*\u5364*\u3002'),\n      S(['egg'],'pot','\u716e','\u628a[\u96de\u86cb]\u653e\u9032\u934b\u5b50\u88e1*\u716e*\u4e00*\u716e*\u3002','\u628a[\u9e21\u86cb]\u653e\u8fdb\u9505\u5b50\u91cc*\u716e*\u4e00*\u716e*\u3002'),\n      S(['rice'],'hand','\u52a0','\u6700\u5f8c\u628a[\u767d\u98ef]*\u52a0*\u9032\u7897\u88e1\u3002','\u6700\u540e\u628a[\u7c73\u996d]*\u52a0*\u8fdb\u7897\u91cc\u3002')\n    ]},\n    {n:'\u8766\u4ec1\u7092\u98ef',sc:'\u867e\u4ec1\u7092\u996d',py:'xi\u0101 r\u00e9n ch\u01ceo f\u00e0n',py_sc:'xi\u0101 r\u00e9n ch\u01ceo f\u00e0n',en:'Shrimp fried rice',s:[\n      S(['scallion'],'board','\u5207','\u5148\u628a[\u8525]*\u5207*\u4e00*\u5207*\u3002','\u5148\u628a[\u8471]*\u5207*\u4e00*\u5207*\u3002'),\n      S(['shrimp'],'pan','\u7092','\u628a[\u8766\u4ec1]\u653e\u5230\u5e73\u5e95\u934b\u88e1*\u7092*\u3002','\u628a[\u867e\u4ec1]\u653e\u5230\u5e73\u5e95\u9505\u91cc*\u7092*\u3002'),\n      S(['egg','rice'],'pan','\u7092','\u518d\u628a[\u96de\u86cb]\u548c[\u767d\u98ef]\u653e\u9032\u5e73\u5e95\u934b\uff0c\u4e00\u8d77*\u7092*\uff01','\u518d\u628a[\u9e21\u86cb]\u548c[\u7c73\u996d]\u653e\u8fdb\u5e73\u5e95\u9505\uff0c\u4e00\u8d77*\u7092*\uff01'),\n      S(['scallion'],'bowl','\u6492','\u628a\u7092\u98ef\u76db\u9032\u7897\u88e1\uff0c\u518d\u628a[\u8525]*\u6492*\u5728\u4e0a\u9762\u3002','\u628a\u7092\u996d\u76db\u8fdb\u7897\u91cc\uff0c\u518d\u628a[\u8471]*\u6492*\u5728\u4e0a\u9762\u3002')\n    ]},\n    {n:'\u99ac\u9234\u85af\u96de\u86cb\u6c99\u62c9',sc:'\u571f\u8c46\u9e21\u86cb\u6c99\u62c9',py:'m\u01ce l\u00edng sh\u01d4 j\u012b d\u00e0n sh\u0101 l\u0101',py_sc:'t\u01d4 d\u00f2u j\u012b d\u00e0n sh\u0101 l\u0101',en:'Potato egg salad',s:[\n      S(['potato'],'hand','\u524a','\u5148\u628a[\u99ac\u9234\u85af]\u7684\u76ae*\u524a*\u6389\u3002','\u5148\u628a[\u571f\u8c46]\u7684\u76ae*\u524a*\u6389\u3002'),\n      S(['potato'],'board','\u5207','\u628a[\u99ac\u9234\u85af]*\u5207*\u6210\u584a\u3002','\u628a[\u571f\u8c46]*\u5207*\u6210\u5757\u3002'),\n      S(['potato'],'steamer','\u84b8','\u628a[\u99ac\u9234\u85af]\u653e\u9032\u84b8\u7c60\u88e1*\u84b8*\u3002','\u628a[\u571f\u8c46]\u653e\u8fdb\u84b8\u7b3c\u91cc*\u84b8*\u3002'),\n      S(['egg'],'pot','\u716e','\u628a[\u96de\u86cb]\u653e\u9032\u934b\u5b50\u88e1*\u716e*\u3002','\u628a[\u9e21\u86cb]\u653e\u8fdb\u9505\u5b50\u91cc*\u716e*\u3002'),\n      S(['mayo'],'bowl','\u62cc','\u628a[\u7f8e\u4e43\u6ecb]\u52a0\u9032\u7897\u88e1\uff0c*\u62cc*\u4e00*\u62cc*\u3002','\u628a[\u6c99\u62c9\u9171]\u52a0\u8fdb\u7897\u91cc\uff0c*\u62cc*\u4e00*\u62cc*\u3002')\n    ]},\n    {n:'\u6dbc\u62cc\u5c0f\u9ec3\u74dc',sc:'\u51c9\u62cc\u9ec4\u74dc',py:'li\u00e1ng b\u00e0n xi\u01ceo hu\u00e1ng gu\u0101',py_sc:'li\u00e1ng b\u00e0n hu\u00e1ng gu\u0101',en:'Cucumber salad',s:[\n      S(['cucumber'],'board','\u5207\u7247','\u5148\u628a[\u5c0f\u9ec3\u74dc]*\u5207\u7247*\u3002','\u5148\u628a[\u9ec4\u74dc]*\u5207\u7247*\u3002'),\n      S(['cucumber'],'plate','\u9183','\u628a[\u5c0f\u9ec3\u74dc]\u653e\u5728\u76e4\u5b50\u4e0a*\u9183*\u4e00\u4e0b\u3002','\u628a[\u9ec4\u74dc]\u653e\u5728\u76d8\u5b50\u4e0a*\u814c*\u4e00\u4e0b\u3002'),\n      S(['garlic'],'board','\u5241','\u628a[\u849c\u982d]*\u5241*\u788e\u3002','\u628a[\u849c\u5934]*\u5241*\u788e\u3002'),\n      S(['garlic','vinegar'],'bowl','\u62cc','\u628a[\u849c\u982d]\u548c[\u918b]\u52a0\u9032\u7897\u88e1\uff0c*\u62cc*\u4e00*\u62cc*\u3002','\u628a[\u849c\u5934]\u548c[\u918b]\u52a0\u8fdb\u7897\u91cc\uff0c*\u62cc*\u4e00*\u62cc*\u3002')\n    ]},\n    {n:'\u70b8\u96de\u6392',sc:'\u70b8\u9e21\u6392',py:'zh\u00e0 j\u012b p\u00e1i',py_sc:'zh\u00e0 j\u012b p\u00e1i',en:'Fried chicken cutlet',s:[\n      S(['chicken','soy'],'plate','\u9183','\u628a[\u96de\u8089]\u548c[\u91ac\u6cb9]\u653e\u5728\u76e4\u5b50\u4e0a*\u9183*\u4e00*\u9183*\u3002','\u628a[\u9e21\u8089]\u548c[\u9171\u6cb9]\u653e\u5728\u76d8\u5b50\u4e0a*\u814c*\u4e00*\u814c*\u3002'),\n      S(['flour'],'hand','\u52a0','\u628a[\u70b8\u7c89]*\u52a0*\u5728\u96de\u8089\u4e0a\uff0c\u6cbe\u4e00\u6cbe\u3002','\u628a[\u70b8\u7c89]*\u52a0*\u5728\u9e21\u8089\u4e0a\uff0c\u88f9\u4e00\u88f9\u3002'),\n      S(['chicken'],'pan','\u70b8','\u628a[\u96de\u8089]\u653e\u9032\u5e73\u5e95\u934b*\u70b8*\uff0c\u70b8\u5f97\u91d1\u91d1\u8106\u8106\uff01','\u628a[\u9e21\u8089]\u653e\u8fdb\u5e73\u5e95\u9505*\u70b8*\uff0c\u70b8\u5f97\u91d1\u9ec4\u9165\u8106\uff01')\n    ]},\n    {n:'\u6f22\u5821',sc:'\u6c49\u5821',py:'h\u00e0n b\u01ceo',py_sc:'h\u00e0n b\u01ceo',en:'Hamburger',s:[\n      S(['tomato'],'board','\u5207\u7247','\u5148\u628a[\u756a\u8304]*\u5207\u7247*\u3002','\u5148\u628a[\u897f\u7ea2\u67ff]*\u5207\u7247*\u3002'),\n      S(['beef'],'board','\u5241','\u628a[\u725b\u8089]*\u5241*\u6210\u8089\u672b\u3002','\u628a[\u725b\u8089]*\u5241*\u6210\u8089\u672b\u3002'),\n      S(['beef'],'pan','\u714e','\u628a[\u725b\u8089]\u653e\u5728\u5e73\u5e95\u934b\u4e0a*\u714e*\u3002','\u628a[\u725b\u8089]\u653e\u5728\u5e73\u5e95\u9505\u4e0a*\u714e*\u3002'),\n      S(['bun'],'oven','\u70e4','\u628a[\u9eb5\u5305]\u653e\u9032\u70e4\u7bb1*\u70e4*\u4e00*\u70e4*\u3002','\u628a[\u9762\u5305]\u653e\u8fdb\u70e4\u7bb1*\u70e4*\u4e00*\u70e4*\u3002'),\n      S(['lettuce'],'hand','\u52a0','\u6700\u5f8c\u628a[\u751f\u83dc]*\u52a0*\u9032\u9eb5\u5305\u88e1\u3002','\u6700\u540e\u628a[\u751f\u83dc]*\u52a0*\u8fdb\u9762\u5305\u91cc\u3002')\n    ]},\n    {n:'\u5c0f\u7c60\u5305',sc:'\u5c0f\u7b3c\u5305',py:'xi\u01ceo l\u00f3ng b\u0101o',py_sc:'xi\u01ceo l\u00f3ng b\u0101o',en:'Soup dumplings',s:[\n      S(['pork'],'board','\u5241','\u5148\u628a[\u8c6c\u8089]*\u5241*\u6210\u8089\u672b\u3002','\u5148\u628a[\u732a\u8089]*\u5241*\u6210\u8089\u672b\u3002'),\n      S(['pork'],'bowl','\u62cc','\u628a[\u8c6c\u8089]\u653e\u9032\u7897\u88e1\uff0c*\u62cc*\u6210\u8089\u9921\u3002','\u628a[\u732a\u8089]\u653e\u8fdb\u7897\u91cc\uff0c*\u62cc*\u6210\u8089\u9985\u3002'),\n      S(['wrapper'],'hand','\u5305','\u7528\u624b\u628a\u8089\u9921*\u5305*\u9032[\u9eb5\u76ae]\u88e1\u3002','\u7528\u624b\u628a\u8089\u9985*\u5305*\u8fdb[\u9762\u76ae]\u91cc\u3002'),\n      S(['wip'],'steamer','\u84b8','\u628a[\u5305\u597d\u7684\u5c0f\u7c60\u5305]\u653e\u9032\u84b8\u7c60*\u84b8*\u3002','\u628a[\u5305\u597d\u7684\u5c0f\u7b3c\u5305]\u653e\u8fdb\u84b8\u7b3c*\u84b8*\u3002')\n    ]},\n    {n:'\u6c34\u9903',sc:'\u6c34\u997a',py:'shu\u01d0 ji\u01ceo',py_sc:'shu\u01d0 ji\u01ceo',en:'Boiled dumplings',s:[\n      S(['cabbage'],'board','\u5207','\u5148\u628a[\u9ad8\u9e97\u83dc]*\u5207*\u4e00*\u5207*\u3002','\u5148\u628a[\u5377\u5fc3\u83dc]*\u5207*\u4e00*\u5207*\u3002'),\n      S(['pork'],'board','\u5241','\u628a[\u8c6c\u8089]*\u5241*\u6210\u8089\u672b\u3002','\u628a[\u732a\u8089]*\u5241*\u6210\u8089\u672b\u3002'),\n      S(['pork','cabbage'],'bowl','\u62cc','\u628a[\u8c6c\u8089]\u548c[\u9ad8\u9e97\u83dc]\u653e\u9032\u7897\u88e1\uff0c*\u62cc*\u6210\u9921\u3002','\u628a[\u732a\u8089]\u548c[\u5377\u5fc3\u83dc]\u653e\u8fdb\u7897\u91cc\uff0c*\u62cc*\u6210\u9985\u3002'),\n      S(['dumpwrap'],'hand','\u5305','\u7528\u624b\u628a\u9921*\u5305*\u9032[\u6c34\u9903\u76ae]\u88e1\u3002','\u7528\u624b\u628a\u9985*\u5305*\u8fdb[\u997a\u5b50\u76ae]\u91cc\u3002'),\n      S(['wip'],'pot','\u716e','\u628a[\u5305\u597d\u7684\u6c34\u9903]\u653e\u9032\u934b\u5b50\u88e1*\u716e*\u3002','\u628a[\u5305\u597d\u7684\u6c34\u997a]\u653e\u8fdb\u9505\u5b50\u91cc*\u716e*\u3002')\n    ]},\n    {n:'\u863f\u8514\u6392\u9aa8\u6e6f',sc:'\u841d\u535c\u6392\u9aa8\u6c64',py:'lu\u00f3 bo p\u00e1i g\u01d4 t\u0101ng',py_sc:'lu\u00f3 bo p\u00e1i g\u01d4 t\u0101ng',en:'Daikon pork rib soup',s:[\n      S(['daikon'],'hand','\u524a','\u5148\u628a[\u767d\u863f\u8514]\u7684\u76ae*\u524a*\u6389\u3002','\u5148\u628a[\u767d\u841d\u535c]\u7684\u76ae*\u524a*\u6389\u3002'),\n      S(['daikon'],'board','\u5207','\u628a[\u767d\u863f\u8514]*\u5207*\u6210\u584a\u3002','\u628a[\u767d\u841d\u535c]*\u5207*\u6210\u5757\u3002'),\n      S(['ribs'],'board','\u5241','\u628a[\u6392\u9aa8]*\u5241*\u6210\u5c0f\u584a\u3002','\u628a[\u6392\u9aa8]*\u5241*\u6210\u5c0f\u5757\u3002'),\n      S(['ribs'],'pot','\u71d9','\u628a[\u6392\u9aa8]\u653e\u9032\u934b\u5b50\u88e1*\u71d9*\u4e00\u4e0b\u3002','\u628a[\u6392\u9aa8]\u653e\u8fdb\u9505\u5b50\u91cc*\u712f*\u4e00\u4e0b\u3002'),\n      S(['daikon'],'pot','\u71ac','\u518d\u628a[\u767d\u863f\u8514]\u653e\u9032\u934b\u5b50\u88e1\uff0c\u6162\u6162*\u71ac*\u6210\u6e6f\u3002','\u518d\u628a[\u767d\u841d\u535c]\u653e\u8fdb\u9505\u5b50\u91cc\uff0c\u6162\u6162*\u71ac*\u6210\u6c64\u3002')\n    ]},\n    {n:'\u86e4\u870a\u84b8\u86cb',sc:'\u86e4\u870a\u84b8\u86cb',py:'g\u00e9 l\u00ec zh\u0113ng d\u00e0n',py_sc:'g\u00e9 l\u00ec zh\u0113ng d\u00e0n',en:'Steamed egg with clams',s:[\n      S(['egg'],'bowl','\u6253\u86cb','\u5148*\u6253\u86cb*\uff1a\u628a[\u96de\u86cb]\u6253\u9032\u7897\u88e1\u3002','\u5148*\u6253\u86cb*\uff1a\u628a[\u9e21\u86cb]\u6253\u8fdb\u7897\u91cc\u3002'),\n      S(['egg'],'bowl','\u62cc','\u628a\u7897\u88e1\u7684[\u96de\u86cb]*\u62cc*\u4e00*\u62cc*\u3002','\u628a\u7897\u91cc\u7684[\u9e21\u86cb]*\u62cc*\u4e00*\u62cc*\u3002'),\n      S(['clam'],'hand','\u52a0','\u628a[\u86e4\u870a]*\u52a0*\u9032\u7897\u88e1\u7684\u86cb\u88e1\u3002','\u628a[\u86e4\u870a]*\u52a0*\u8fdb\u7897\u91cc\u7684\u86cb\u91cc\u3002'),\n      S(['wip'],'steamer','\u84b8','\u628a[\u6574\u7897\u86cb]\u653e\u9032\u84b8\u7c60*\u84b8*\u3002','\u628a[\u6574\u7897\u86cb]\u653e\u8fdb\u84b8\u7b3c*\u84b8*\u3002')\n    ]},\n    {n:'\u70b8\u85af\u689d',sc:'\u70b8\u85af\u6761',py:'zh\u00e0 sh\u01d4 ti\u00e1o',py_sc:'zh\u00e0 sh\u01d4 ti\u00e1o',en:'French fries',s:[\n      S(['potato'],'hand','\u524a','\u5148\u628a[\u99ac\u9234\u85af]\u7684\u76ae*\u524a*\u6389\u3002','\u5148\u628a[\u571f\u8c46]\u7684\u76ae*\u524a*\u6389\u3002'),\n      S(['potato'],'board','\u5207','\u628a[\u99ac\u9234\u85af]*\u5207*\u6210\u9577\u689d\u3002','\u628a[\u571f\u8c46]*\u5207*\u6210\u957f\u6761\u3002'),\n      S(['potato'],'pan','\u70b8','\u628a[\u99ac\u9234\u85af]\u653e\u9032\u5e73\u5e95\u934b\u88e1*\u70b8*\uff01','\u628a[\u571f\u8c46]\u653e\u8fdb\u5e73\u5e95\u9505\u91cc*\u70b8*\uff01')\n    ]},\n    {n:'\u99ac\u9234\u85af\u71c9\u8c6c\u8089',sc:'\u571f\u8c46\u7096\u732a\u8089',py:'m\u01ce l\u00edng sh\u01d4 d\u00f9n zh\u016b r\u00f2u',py_sc:'t\u01d4 d\u00f2u d\u00f9n zh\u016b r\u00f2u',en:'Pork & potato stew',s:[\n      S(['potato','carrot'],'hand','\u524a','\u5148\u628a[\u99ac\u9234\u85af]\u548c[\u7d05\u863f\u8514]\u7684\u76ae*\u524a*\u6389\u3002','\u5148\u628a[\u571f\u8c46]\u548c[\u80e1\u841d\u535c]\u7684\u76ae*\u524a*\u6389\u3002'),\n      S(['potato','pork','carrot','onion'],'board','\u5207','\u628a[\u99ac\u9234\u85af]\u3001[\u8c6c\u8089]\u3001[\u7d05\u863f\u8514]\u548c[\u6d0b\u8525]\u90fd*\u5207*\u4e00*\u5207*\u3002','\u628a[\u571f\u8c46]\u3001[\u732a\u8089]\u3001[\u80e1\u841d\u535c]\u548c[\u6d0b\u8471]\u90fd*\u5207*\u4e00*\u5207*\u3002'),\n      S(['pork'],'pan','\u7092','\u628a[\u8c6c\u8089]\u653e\u5230\u5e73\u5e95\u934b\u88e1*\u7092*\u4e00*\u7092*\u3002','\u628a[\u732a\u8089]\u653e\u5230\u5e73\u5e95\u9505\u91cc*\u7092*\u4e00*\u7092*\u3002'),\n      S(['potato','pork','carrot','onion'],'pot','\u71c9','\u628a[\u99ac\u9234\u85af]\u3001[\u8c6c\u8089]\u3001[\u7d05\u863f\u8514]\u548c[\u6d0b\u8525]\u90fd\u653e\u9032\u934b\u5b50\u88e1*\u71c9*\u3002','\u628a[\u571f\u8c46]\u3001[\u732a\u8089]\u3001[\u80e1\u841d\u535c]\u548c[\u6d0b\u8471]\u90fd\u653e\u8fdb\u9505\u5b50\u91cc*\u7096*\u3002')\n    ]},\n    {n:'\u4e5d\u5c64\u5854\u714e\u86cb',sc:'\u4e5d\u5c42\u5854\u714e\u86cb',py:'ji\u01d4 c\u00e9ng t\u01ce ji\u0101n d\u00e0n',py_sc:'ji\u01d4 c\u00e9ng t\u01ce ji\u0101n d\u00e0n',en:'Thai basil omelette',s:[\n      S(['basil'],'board','\u5207','\u5148\u628a[\u4e5d\u5c64\u5854]*\u5207*\u4e00*\u5207*\u3002','\u5148\u628a[\u4e5d\u5c42\u5854]*\u5207*\u4e00*\u5207*\u3002'),\n      S(['egg'],'bowl','\u6253\u86cb','*\u6253\u86cb*\uff1a\u628a[\u96de\u86cb]\u6253\u9032\u7897\u88e1\u3002','*\u6253\u86cb*\uff1a\u628a[\u9e21\u86cb]\u6253\u8fdb\u7897\u91cc\u3002'),\n      S(['basil','egg'],'bowl','\u62cc','\u628a[\u4e5d\u5c64\u5854]\u548c[\u96de\u86cb]\u653e\u9032\u7897\u88e1\uff0c*\u62cc*\u4e00*\u62cc*\u3002','\u628a[\u4e5d\u5c42\u5854]\u548c[\u9e21\u86cb]\u653e\u8fdb\u7897\u91cc\uff0c*\u62cc*\u4e00*\u62cc*\u3002'),\n      S(['wip'],'pan','\u714e','\u628a[\u62cc\u597d\u7684\u86cb]\u5012\u9032\u5e73\u5e95\u934b*\u714e*\u3002','\u628a[\u62cc\u597d\u7684\u86cb]\u5012\u8fdb\u5e73\u5e95\u9505*\u714e*\u3002')\n    ]},\n    {n:'\u7d05\u863f\u8514\u7092\u6d0b\u8525',sc:'\u80e1\u841d\u535c\u7092\u6d0b\u8471',py:'h\u00f3ng lu\u00f3 bo ch\u01ceo y\u00e1ng c\u014dng',py_sc:'h\u00fa lu\u00f3 bo ch\u01ceo y\u00e1ng c\u014dng',en:'Carrot & onion stir-fry',s:[\n      S(['carrot'],'hand','\u524a','\u5148\u628a[\u7d05\u863f\u8514]\u7684\u76ae*\u524a*\u6389\u3002','\u5148\u628a[\u80e1\u841d\u535c]\u7684\u76ae*\u524a*\u6389\u3002'),\n      S(['carrot','onion'],'board','\u5207','\u628a[\u7d05\u863f\u8514]\u548c[\u6d0b\u8525]*\u5207*\u4e00*\u5207*\u3002','\u628a[\u80e1\u841d\u535c]\u548c[\u6d0b\u8471]*\u5207*\u4e00*\u5207*\u3002'),\n      S(['carrot','onion'],'pan','\u7092','\u628a[\u7d05\u863f\u8514]\u548c[\u6d0b\u8525]\u653e\u9032\u5e73\u5e95\u934b\uff0c\u4e00\u8d77*\u7092*\uff01','\u628a[\u80e1\u841d\u535c]\u548c[\u6d0b\u8471]\u653e\u8fdb\u5e73\u5e95\u9505\uff0c\u4e00\u8d77*\u7092*\uff01')\n    ]},\n    {n:'\u9999\u83c7\u96de\u6e6f',sc:'\u9999\u83c7\u9e21\u6c64',py:'xi\u0101ng g\u016b j\u012b t\u0101ng',py_sc:'xi\u0101ng g\u016b j\u012b t\u0101ng',en:'Shiitake chicken soup',s:[\n      S(['chicken'],'board','\u5241','\u5148\u628a[\u96de\u8089]*\u5241*\u6210\u584a\u3002','\u5148\u628a[\u9e21\u8089]*\u5241*\u6210\u5757\u3002'),\n      S(['chicken'],'pot','\u71d9','\u628a[\u96de\u8089]\u653e\u9032\u934b\u5b50\u88e1*\u71d9*\u4e00\u4e0b\u3002','\u628a[\u9e21\u8089]\u653e\u8fdb\u9505\u5b50\u91cc*\u712f*\u4e00\u4e0b\u3002'),\n      S(['shiitake'],'pot','\u71c9','\u518d\u628a[\u9999\u83c7]\u653e\u9032\u934b\u5b50\u88e1\uff0c*\u71c9*\u6210\u6e6f\u3002','\u518d\u628a[\u9999\u83c7]\u653e\u8fdb\u9505\u5b50\u91cc\uff0c*\u7096*\u6210\u6c64\u3002')\n    ]},\n    {n:'\u70e4\u8089\u4e32',sc:'\u70e4\u8089\u4e32',py:'k\u01ceo r\u00f2u chu\u00e0n',py_sc:'k\u01ceo r\u00f2u chu\u00e0n',en:'Grilled pork skewers',s:[\n      S(['pork'],'board','\u5207','\u5148\u628a[\u8c6c\u8089]*\u5207*\u6210\u584a\u3002','\u5148\u628a[\u732a\u8089]*\u5207*\u6210\u5757\u3002'),\n      S(['pork','soy'],'plate','\u9183','\u628a[\u8c6c\u8089]\u548c[\u91ac\u6cb9]\u653e\u5728\u76e4\u5b50\u4e0a*\u9183*\u4e00*\u9183*\u3002','\u628a[\u732a\u8089]\u548c[\u9171\u6cb9]\u653e\u5728\u76d8\u5b50\u4e0a*\u814c*\u4e00*\u814c*\u3002'),\n      S(['pepper'],'board','\u5207','\u628a[\u9752\u6912]*\u5207*\u6210\u584a\u3002','\u628a[\u9752\u6912]*\u5207*\u6210\u5757\u3002'),\n      S(['onion'],'board','\u5207\u7247','\u628a[\u6d0b\u8525]*\u5207\u7247*\u3002','\u628a[\u6d0b\u8471]*\u5207\u7247*\u3002'),\n      S(['pork','pepper','onion'],'oven','\u71d2\u70e4','\u628a[\u8c6c\u8089]\u3001[\u9752\u6912]\u548c[\u6d0b\u8525]\u4e32\u8d77\u4f86\uff0c\u653e\u9032\u70e4\u7bb1*\u71d2\u70e4*\u3002','\u628a[\u732a\u8089]\u3001[\u9752\u6912]\u548c[\u6d0b\u8471]\u4e32\u8d77\u6765\uff0c\u653e\u8fdb\u70e4\u7bb1*\u70e7\u70e4*\u3002')\n    ]},\n    {n:'\u5730\u74dc\u7a00\u98ef',sc:'\u7ea2\u85af\u7a00\u996d',py:'d\u00ec gu\u0101 x\u012b f\u00e0n',py_sc:'h\u00f3ng sh\u01d4 x\u012b f\u00e0n',en:'Sweet potato congee',s:[\n      S(['sweetpotato'],'hand','\u524a','\u5148\u628a[\u5730\u74dc]\u7684\u76ae*\u524a*\u6389\u3002','\u5148\u628a[\u7ea2\u85af]\u7684\u76ae*\u524a*\u6389\u3002'),\n      S(['sweetpotato'],'board','\u5207','\u628a[\u5730\u74dc]*\u5207*\u6210\u5c0f\u584a\u3002','\u5148\u628a[\u7ea2\u85af]*\u5207*\u6210\u5c0f\u5757\u3002'),\n      S(['rice','sweetpotato'],'pot','\u71ac','\u628a[\u767d\u98ef]\u548c[\u5730\u74dc]\u653e\u9032\u934b\u5b50\u88e1\uff0c\u6162\u6162*\u71ac*\u6210\u7a00\u98ef\u3002','\u628a[\u7c73\u996d]\u548c[\u7ea2\u85af]\u653e\u8fdb\u9505\u5b50\u91cc\uff0c\u6162\u6162*\u71ac*\u6210\u7a00\u996d\u3002')\n    ]}\n  ];\n\n  var DISH_IMG = 'https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/10\/';\n  var LINES_TC = ['\u6211\u60f3\u5403{d}\uff01','\u8001\u95c6\uff0c\u6211\u8981{d}\uff01','\u8acb\u7d66\u6211{d}\uff0c\u8b1d\u8b1d\u3002','\u4f60\u597d\uff0c\u6211\u8981\u4e00\u4efd{d}\u3002'];\n  var LINES_SC = ['\u6211\u60f3\u5403{d}\uff01','\u8001\u677f\uff0c\u6211\u8981{d}\uff01','\u8bf7\u7ed9\u6211{d}\uff0c\u8c22\u8c22\u3002','\u4f60\u597d\uff0c\u6211\u8981\u4e00\u4efd{d}\u3002'];\n  var LOOKS = [\n    {hair:'#2b211c',shirt:'#2f6fb0',v:0},{hair:'#5a3a22',shirt:'#d63f2c',v:1},{hair:'#1e2b27',shirt:'#f3b22e',v:2},\n    {hair:'#8a5636',shirt:'#23855a',v:0},{hair:'#3a2f2a',shirt:'#a35bb5',v:2},{hair:'#c7a46b',shirt:'#e07a3c',v:1}\n  ];\n\n  var st = {\n    screen:'start', settings:{count:5,showNames:true,sound:true},\n    order:[], idx:0, step:0, sel:[], phase:'pick', errStep:0, glow:false, dishErr:0, dishGlow:false,\n    results:[], tray:[], on:{}, actOrder:[], look:0, lineIdx:0, fb:null, learned:null, anim:null\n  };\n  var fbTimer = null;\n\n  function shuffle(a){\n    var arr = a.slice();\n    for(var i=arr.length-1; i>0; i--){\n      var j = Math.floor(Math.random()*(i+1));\n      var tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;\n    }\n    return arr;\n  }\n\n  function icon(id){\n    if(id==='wip') return SVG.wip;\n    var g = ING[id];\n    if(g.e) return '<span class=\"e\">'+g.e+'<\/span>';\n    return SVG[g.s];\n  }\n\n  function hintHTML(h){\n    return h.replace(\/\\*(.+?)\\*\/g,'<em>$1<\/em>').replace(\/\\[(.+?)\\]\/g,'<strong>$1<\/strong>');\n  }\n\n  function actLabel(a){\n    if(isSC){\n      if(ACT[a]){\n        if(ACT[a].sc) return ACT[a].sc;\n      }\n    }\n    return a;\n  }\n\n  function ingLabel(id){\n    if(isSC){\n      if(ING[id].sc) return ING[id].sc;\n    }\n    return ING[id].zh;\n  }\n\n  function dishName(d){\n    if(isSC){\n      if(d.sc) return d.sc;\n    }\n    return d.n;\n  }\n\n  function dishPy(d){\n    if(isSC){\n      if(d.py_sc) return d.py_sc;\n    }\n    return d.py;\n  }\n\n  function stepHint(s){\n    if(isSC){\n      if(s.hsc) return s.hsc;\n    }\n    return s.h;\n  }\n\n  function ruby(d){\n    var chars = Array.from(dishName(d));\n    var py = dishPy(d).split(' ');\n    var out = '<span class=\"tkg-dishname\">';\n    for(var i=0; i<chars.length; i++){\n      var rtTxt = py[i] ? py[i] : '';\n      out += '<ruby><span class=\"rb\">' + chars[i] + '<\/span><rt>' + rtTxt + '<\/rt><\/ruby>';\n    }\n    out += '<\/span>';\n    return out;\n  }\n\n  function sameSet(a,b){\n    if(a.length !== b.length) return false;\n    for(var i=0; i<a.length; i++){\n      if(b.indexOf(a[i]) < 0) return false;\n    }\n    return true;\n  }\n\n  function personSVG(look,happy){\n    var hair = look.v===1 ? '<circle cx=\"60\" cy=\"32\" r=\"11\" fill=\"'+look.hair+'\"\/>' : '';\n    var longHair = look.v===2 ? '<path d=\"M32 62 Q30 92 40 100 L80 100 Q90 92 88 62 Z\" fill=\"'+look.hair+'\"\/>' : '';\n    var eyes = happy\n      ? '<path d=\"M47 66 q4 -5 8 0 M65 66 q4 -5 8 0\" stroke=\"#1e2b27\" stroke-width=\"3\" fill=\"none\" stroke-linecap=\"round\"\/>'\n      : '<circle cx=\"51\" cy=\"66\" r=\"3.2\" fill=\"#1e2b27\"\/><circle cx=\"69\" cy=\"66\" r=\"3.2\" fill=\"#1e2b27\"\/>';\n    var mouth = happy\n      ? '<path d=\"M50 78 Q60 90 70 78 Z\" fill=\"#c2412d\"\/>'\n      : '<path d=\"M53 79 Q60 84 67 79\" stroke=\"#1e2b27\" stroke-width=\"2.5\" fill=\"none\" stroke-linecap=\"round\"\/>';\n    return '<svg viewBox=\"0 0 120 140\" aria-hidden=\"true\">'+longHair+'<path d=\"M22 140 Q22 100 60 98 Q98 100 98 140 Z\" fill=\"'+look.shirt+'\" stroke=\"#1e2b27\" stroke-width=\"2.5\"\/>'+hair+'<circle cx=\"60\" cy=\"68\" r=\"26\" fill=\"#f4cfa9\" stroke=\"#1e2b27\" stroke-width=\"2.5\"\/><path d=\"M33 64 Q33 40 60 40 Q87 40 87 64 Q78 52 60 52 Q42 52 33 64 Z\" fill=\"'+look.hair+'\"\/>'+eyes+'<ellipse cx=\"45\" cy=\"75\" rx=\"4\" ry=\"2.5\" fill=\"#f2a08e\"\/><ellipse cx=\"75\" cy=\"75\" rx=\"4\" ry=\"2.5\" fill=\"#f2a08e\"\/>'+mouth+'<\/svg>';\n  }\n\n  function chefSVG(mood){\n    var eyes = mood==='think'\n      ? '<circle cx=\"52\" cy=\"64\" r=\"3.2\" fill=\"#1e2b27\"\/><circle cx=\"70\" cy=\"64\" r=\"3.2\" fill=\"#1e2b27\"\/><path d=\"M46 56 l10 -2 M64 54 l10 2\" stroke=\"#1e2b27\" stroke-width=\"2.5\" stroke-linecap=\"round\"\/>'\n      : '<path d=\"M47 66 q4 -5 8 0 M65 66 q4 -5 8 0\" stroke=\"#1e2b27\" stroke-width=\"3\" fill=\"none\" stroke-linecap=\"round\"\/>';\n    return '<svg viewBox=\"0 0 120 140\" aria-hidden=\"true\"><path d=\"M22 140 Q22 100 60 98 Q98 100 98 140 Z\" fill=\"#fff\" stroke=\"#1e2b27\" stroke-width=\"2.5\"\/><path d=\"M46 100 L60 118 L74 100 Z\" fill=\"#d63f2c\"\/><circle cx=\"52\" cy=\"122\" r=\"2.5\" fill=\"#1e2b27\"\/><circle cx=\"52\" cy=\"132\" r=\"2.5\" fill=\"#1e2b27\"\/><circle cx=\"60\" cy=\"70\" r=\"26\" fill=\"#f4cfa9\" stroke=\"#1e2b27\" stroke-width=\"2.5\"\/><circle cx=\"44\" cy=\"30\" r=\"15\" fill=\"#fff\" stroke=\"#1e2b27\" stroke-width=\"2.5\"\/><circle cx=\"60\" cy=\"22\" r=\"17\" fill=\"#fff\" stroke=\"#1e2b27\" stroke-width=\"2.5\"\/><circle cx=\"76\" cy=\"30\" r=\"15\" fill=\"#fff\" stroke=\"#1e2b27\" stroke-width=\"2.5\"\/><rect x=\"38\" y=\"32\" width=\"44\" height=\"18\" rx=\"4\" fill=\"#fff\" stroke=\"#1e2b27\" stroke-width=\"2.5\"\/>'+eyes+'<path d=\"M48 78 Q54 72 60 77 Q66 72 72 78 Q66 82 60 79 Q54 82 48 78 Z\" fill=\"#3a2a22\"\/><ellipse cx=\"44\" cy=\"74\" rx=\"4\" ry=\"2.5\" fill=\"#f2a08e\"\/><ellipse cx=\"76\" cy=\"74\" rx=\"4\" ry=\"2.5\" fill=\"#f2a08e\"\/><\/svg>';\n  }\n\n  var AC = null;\n  function getAC(){\n    try{\n      if(!AC){\n        var Ctx = window.AudioContext || window.webkitAudioContext;\n        if(Ctx) AC = new Ctx();\n      }\n      if(AC){\n        if(AC.state==='suspended') AC.resume();\n      }\n      return AC;\n    }catch(e){ return null; }\n  }\n  function tone(f,d,type,v,delay,slide){\n    if(!st.settings.sound) return;\n    var c = getAC();\n    if(!c) return;\n    try{\n      var t = c.currentTime + (delay || 0);\n      var o = c.createOscillator(), g = c.createGain();\n      o.type = type || 'sine';\n      o.frequency.setValueAtTime(f,t);\n      if(slide) o.frequency.exponentialRampToValueAtTime(slide,t+d);\n      g.gain.setValueAtTime(v || 0.08, t);\n      g.gain.exponentialRampToValueAtTime(0.0001, t+d);\n      o.connect(g); g.connect(c.destination);\n      o.start(t); o.stop(t+d+0.02);\n    }catch(e){}\n  }\n  function noise(d,ftype,freq,v,delay){\n    if(!st.settings.sound) return;\n    var c = getAC();\n    if(!c) return;\n    try{\n      var t = c.currentTime + (delay || 0);\n      var b = c.createBuffer(1,Math.max(1,c.sampleRate*d),c.sampleRate);\n      var ch = b.getChannelData(0);\n      for(var i=0;i<ch.length;i++) ch[i]=Math.random()*2-1;\n      var s = c.createBufferSource(); s.buffer = b;\n      var f = c.createBiquadFilter(); f.type = ftype; f.frequency.value = freq;\n      var g = c.createGain(); g.gain.setValueAtTime(v||0.08,t); g.gain.exponentialRampToValueAtTime(0.0001,t+d);\n      s.connect(f); f.connect(g); g.connect(c.destination); s.start(t);\n    }catch(e){}\n  }\n  var SFX = {\n    tick:function(){tone(700,.06,'triangle',.06)},\n    good:function(){tone(660,.12,'triangle',.09);tone(990,.2,'triangle',.09,.1)},\n    bad:function(){tone(240,.14,'square',.035);tone(180,.22,'square',.035,.12)},\n    chop:function(){[0,.22,.44,.66].forEach(function(d){noise(.05,'bandpass',2400,.25,d)})},\n    sizzle:function(){noise(1.1,'highpass',3200,.09)},\n    fry:function(){noise(1.1,'highpass',2200,.12);[.1,.3,.5,.8].forEach(function(d){noise(.03,'bandpass',4000,.15,d)})},\n    bubble:function(){[0,.15,.3,.45,.6,.8].forEach(function(d){tone(300+Math.random()*300,.09,'sine',.09,d,900)})},\n    steam:function(){noise(1.1,'highpass',5000,.07)},\n    heat:function(){tone(110,.9,'sawtooth',.02);tone(1320,.3,'sine',.07,.85)},\n    spark:function(){[0,.12,.24].forEach(function(d,i){tone(1200+i*300,.18,'sine',.06,d)})},\n    stir:function(){[0,.3,.6].forEach(function(d){noise(.22,'bandpass',900,.12,d)})},\n    pop:function(){tone(400,.12,'sine',.1,0,900)},\n    serve:function(){[523,659,784,1046].forEach(function(f,i){tone(f,.25,'triangle',.08,i*.1)})}\n  };\n  var FX = {'\u6253\u86cb':'pop','\u71d2\u70e4':'heat','\u5207\u7247':'chop','\u52a0':'pop','\u5241':'chop','\u524a':'chop','\u6492':'spark','\u5305':'pop','\u5207':'chop','\u7092':'sizzle','\u714e':'sizzle','\u70b8':'fry','\u716e':'bubble','\u71c9':'bubble','\u71ac':'bubble','\u71d9':'bubble','\u6ef7':'bubble','\u84b8':'steam','\u70e4':'heat','\u9183':'spark','\u62cc':'stir'};\n\n  function fxHTML(fx){\n    function spans(k,txt){\n      var s = '';\n      for(var i=0;i<k;i++){\n        var left = 25 + i*(50\/Math.max(1,k-1));\n        var delay = (i*0.17).toFixed(2);\n        s += '<span style=\"left:'+left+'%;animation-delay:'+delay+'s\">'+(txt||'')+'<\/span>';\n      }\n      return s;\n    }\n    if(fx==='chop') return '<div class=\"tkg-fx chop\"><span>\ud83d\udd2a<\/span><\/div>';\n    if(fx==='sizzle') return '<div class=\"tkg-fx rise\">'+spans(4)+'<\/div>';\n    if(fx==='fry') return '<div class=\"tkg-fx rise oil\">'+spans(6)+'<\/div>';\n    if(fx==='bubble') return '<div class=\"tkg-fx rise bub\">'+spans(5)+'<\/div>';\n    if(fx==='steam') return '<div class=\"tkg-fx rise steam\">'+spans(4)+'<\/div>';\n    if(fx==='heat') return '<div class=\"tkg-fx heat\"><\/div>';\n    if(fx==='spark') return '<div class=\"tkg-fx spark\">'+spans(3,'\u2728')+'<\/div>';\n    if(fx==='stir') return '<div class=\"tkg-fx stir\"><span>\ud83e\udd44<\/span><\/div>';\n    return '<div class=\"tkg-fx pop\"><span>\u2728<\/span><\/div>';\n  }\n\n  function dish(){ return DISHES[st.order[st.idx]]; }\n  function curStep(){ return dish().s[st.step]; }\n  function dishIngs(d){\n    var set = [];\n    d.s.forEach(function(s){\n      s.i.forEach(function(x){\n        if(x !== 'wip'){\n          if(set.indexOf(x) < 0) set.push(x);\n        }\n      });\n    });\n    return set;\n  }\n\n  function startGame(){\n    getAC();\n    var n = st.settings.count;\n    var pool = shuffle(DISHES.map(function(item,idx){ return idx; }));\n    st.order = pool.slice(0,n);\n    st.idx = 0; st.results = []; st.screen = 'play';\n    initDish(); renderGame();\n  }\n\n  function initDish(){\n    var d = dish(); var own = dishIngs(d);\n    var pool = shuffle(Object.keys(ING).filter(function(k){ return own.indexOf(k) < 0; }));\n    var extra = pool.slice(0, own.length >= 4 ? 2 : 3);\n    st.tray = shuffle(own.concat(extra)).concat(['wip']);\n    st.step=0; st.sel=[]; st.phase='pick'; st.errStep=0; st.glow=false; st.dishErr=0; st.dishGlow=false;\n    st.on={}; st.fb=null; st.learned=null; st.anim=null;\n    st.look = Math.floor(Math.random()*LOOKS.length);\n    st.lineIdx = Math.floor(Math.random()*LINES_TC.length);\n  }\n\n  function feedback(main,sub,kind){\n    st.fb = {main:main,sub:sub,kind:kind||'bad'};\n    clearTimeout(fbTimer);\n    fbTimer = setTimeout(function(){ st.fb=null; renderGame(); }, 2500);\n  }\n\n  function wrong(sub){\n    st.errStep++; st.dishErr++;\n    if(st.errStep >= 2){ st.glow=true; st.dishGlow=true; }\n    var msg = isSC ? '\u597d\u50cf\u4e0d\u592a\u5bf9\uff0c\u518d\u60f3\u60f3\uff01' : '\u597d\u50cf\u4e0d\u592a\u5c0d\uff0c\u518d\u60f3\u60f3\uff01';\n    feedback(msg, st.glow ? sub+' Look for the glow!' : sub);\n    SFX.bad();\n    renderGame();\n  }\n\n  function tapIng(id){\n    if(st.phase !== 'pick'){\n      if(st.phase !== 'action') return;\n    }\n    var i = st.sel.indexOf(id);\n    if(i >= 0) st.sel.splice(i,1); else st.sel.push(id);\n    SFX.tick();\n    renderGame();\n  }\n\n  function tapTool(tid){\n    if(st.phase !== 'pick'){\n      if(st.phase !== 'action') return;\n    }\n    if(st.phase === 'action'){\n      if(st.actTool === tid){ st.phase='pick'; renderGame(); return; }\n    }\n    st.phase='action'; st.actTool=tid; st.actOrder=shuffle(TOOL[tid].acts);\n    SFX.tick();\n    renderGame();\n  }\n\n  function tapAct(a){\n    if(st.phase !== 'action') return;\n    var s = curStep(), tid = st.actTool, want = s.a;\n    if(!st.sel.length){\n      feedback('Pick ingredients first!','Tap ingredients below, then choose an action.','info');\n      renderGame(); return;\n    }\n    if(a !== want){ wrong('Wrong action.'); return; }\n    if(tid !== s.t){ wrong('Wrong station.'); return; }\n    if(!sameSet(st.sel, s.i)){ wrong('Check the ingredients.'); return; }\n    st.on[tid] = s.i.slice(); st.phase = 'busy';\n    st.learned = {en:ACT[a].en, zh:actLabel(a)};\n    st.anim = {tool:tid, fx:FX[a]};\n    SFX.good();\n    setTimeout(function(){ if(SFX[FX[a]]) SFX[FX[a]](); }, 150);\n    renderGame();\n    setTimeout(function(){ st.learned=null; renderGame(); }, 1300);\n    setTimeout(function(){\n      st.step++; st.sel=[]; st.errStep=0; st.glow=false; st.anim=null; st.learned=null; st.fb=null;\n      st.phase = st.step >= dish().s.length ? 'ready' : 'pick';\n      renderGame();\n    }, 1700);\n  }\n\n  function starStr(n){ return '\u2605'.repeat(n) + '<span class=\"off\">' + '\u2605'.repeat(3-n) + '<\/span>'; }\n  function totalStars(){ return st.results.reduce(function(a,r){ return a+r.stars; },0); }\n\n  function renderSign(){\n    var title = isSC ? 'Tiffany\u6c49\u5b57\u9910\u5385' : 'Tiffany\u6f22\u5b57\u9910\u5ef3';\n    var html = '<header class=\"tkg-sign\"><h2><span class=\"ez-toc-section\" id=\"title_Hanzi_Kitchen\"><\/span><span class=\"tkg-lamp\"><\/span>'+title+' <small>Hanzi Kitchen<\/small><span class=\"ez-toc-section-end\"><\/span><\/h2><div class=\"tkg-meta\">';\n    if(st.screen === 'play'){\n      html += '<span class=\"tkg-chip\">Customer <b>'+(st.idx+1)+'<\/b> \/ '+st.order.length+'<\/span>';\n      html += '<span class=\"tkg-chip\">\u2605 <b>'+totalStars()+'<\/b><\/span>';\n    }\n    html += '<button class=\"tkg-toggle\" data-tkg-btn=\"names\" aria-pressed=\"'+st.settings.showNames+'\">Labels: '+(st.settings.showNames?'On':'Off')+'<\/button>';\n    html += '<button class=\"tkg-toggle\" data-tkg-btn=\"sound\" aria-pressed=\"'+st.settings.sound+'\">Sound: '+(st.settings.sound?'On':'Off')+'<\/button>';\n    html += '<\/div><\/header>';\n    return html;\n  }\n\n  function renderStart(){\n    var c = st.settings.count;\n    var title = isSC ? 'Tiffany\u6c49\u5b57\u9910\u5385' : 'Tiffany\u6f22\u5b57\u9910\u5ef3';\n    var countBtns = '';\n    [5,10,DISHES.length].forEach(function(n){\n      var label = (n===DISHES.length) ? ('All '+n) : (n+' dishes');\n      countBtns += '<button data-tkg-count=\"'+n+'\" aria-pressed=\"'+(c===n)+'\">'+label+'<\/button>';\n    });\n    return '<div class=\"tkg-card\">' +\n      '<div class=\"tkg-hero\"><div class=\"tkg-fig\">'+chefSVG('happy')+'<\/div><div><h3>'+title+'<\/h3><p>Read each customer\\'s order, pick the right ingredients, use the right station, and choose the right cooking action. The chef\\'s thought bubble gives you hints in Chinese.<\/p><\/div><\/div>' +\n      '<ol class=\"tkg-how\">' +\n        '<li>Read what the customer orders.<\/li>' +\n        '<li>Read the chef\\'s hint and tap the ingredients you need.<\/li>' +\n        '<li>Open any station to see its actions, then choose the one that matches the verb in the hint.<\/li>' +\n      '<\/ol>' +\n      '<div class=\"tkg-opts\">' +\n        '<div class=\"tkg-opt\"><span>Dishes this round<\/span><div class=\"tkg-seg\">'+countBtns+'<\/div><\/div>' +\n        '<div class=\"tkg-opt\"><span>Ingredient labels<\/span><div class=\"tkg-seg\">' +\n          '<button data-tkg-names=\"1\" aria-pressed=\"'+st.settings.showNames+'\">On<\/button>' +\n          '<button data-tkg-names=\"0\" aria-pressed=\"'+(!st.settings.showNames)+'\">Off (harder)<\/button>' +\n        '<\/div><\/div>' +\n      '<\/div>' +\n      '<div><button class=\"tkg-big\" data-tkg-btn=\"go\">Open the restaurant<\/button><\/div>' +\n    '<\/div>';\n  }\n\n  function renderPlay(){\n    var d = dish(), look = LOOKS[st.look];\n    var served = st.phase==='served', ready = st.phase==='ready';\n    var linesArr = isSC ? LINES_SC : LINES_TC;\n    var rawLine = linesArr[st.lineIdx] ? linesArr[st.lineIdx] : LINES_TC[0];\n    var order = rawLine.replace('{d}', '<span style=\"white-space:nowrap\">'+ruby(d)+'<\/span>');\n    var custSay = served\n      ? '<div class=\"tkg-say\">'+(isSC?'\u8c22\u8c22\uff01\u597d\u597d\u5403\uff01':'\u8b1d\u8b1d\uff01\u597d\u597d\u5403\uff01')+'<\/div><div class=\"tkg-stars\">'+starStr(st.results[st.results.length-1].stars)+'<\/div>'\n      : '<div class=\"tkg-blabel\">ORDER<\/div><div class=\"tkg-say\">'+order+'<\/div>';\n\n    var chefSay = '';\n    if(served) chefSay = '<div class=\"tkg-hint\">'+(isSC?'\u6b22\u8fce\u518d\u6765\uff01':'\u6b61\u8fce\u518d\u4f86\uff01')+'<\/div>';\n    else if(ready) chefSay = '<div class=\"tkg-hint\">Well done! '+(isSC?'\u5feb\u628a\u83dc\u7aef\u7ed9\u5ba2\u4eba\u5427\uff01':'\u5feb\u628a\u83dc\u7aef\u7d66\u5ba2\u4eba\u5427\uff01')+'<\/div>';\n    else chefSay = '<div class=\"tkg-blabel\">CHEF IS THINKING\u2026<\/div><div class=\"tkg-hint\">'+hintHTML(stepHint(curStep()))+'<\/div><div class=\"tkg-legend\"><span><i class=\"lv\">red<\/i> = action<\/span><span><i class=\"li\">green<\/i> = ingredient<\/span><\/div>';\n\n    if(st.fb){\n      chefSay += '<div class=\"tkg-fb '+(st.fb.kind==='info'?'is-info':'')+'\">'+st.fb.main+'<small>'+st.fb.sub+'<\/small><\/div>';\n    }\n\n    var s = null;\n    if(!served){\n      if(!ready) s = curStep();\n    }\n    var glowIng = [];\n    var glowTool = null;\n    if(st.glow){\n      if(s){\n        glowIng = s.i;\n        glowTool = s.t;\n      }\n    }\n\n    var dots = '';\n    d.s.forEach(function(x,i){\n      var done = i < st.step;\n      var now = false;\n      if(i === st.step){\n        if(!ready){\n          if(!served) now = true;\n        }\n      }\n      var dotTxt = (i+1);\n      if(done){\n        if(x.a) dotTxt = actLabel(x.a);\n      }\n      dots += '<span class=\"tkg-dot'+(done?' is-done':'')+(now?' is-now':'')+'\">'+dotTxt+'<\/span>';\n    });\n\n    var selbar = '';\n    if(st.sel.length){\n      selbar = '<div class=\"tkg-selbar\">Selected: ' + st.sel.map(function(id){ return '<span class=\"tkg-pill\">'+icon(id)+'<\/span>'; }).join('') + '<\/div>';\n    }\n\n    var stations = '';\n    TOOLS.forEach(function(t){\n      var fx = '';\n      if(st.anim){\n        if(st.anim.tool === t.id) fx = fxHTML(st.anim.fx);\n      }\n      var on = (st.on[t.id]||[]).map(icon).join('');\n      var actCls = '';\n      if(st.phase === 'action'){\n        if(st.actTool === t.id) actCls = ' is-active';\n      }\n      var glCls = (glowTool === t.id) ? ' tkg-glow' : '';\n      stations += '<button class=\"tkg-station'+actCls+glCls+'\" data-tkg-tool=\"'+t.id+'\">'+TOOLSVG[t.id]+'<span class=\"lbl\">'+t.en+'<\/span><span class=\"on\">'+on+'<\/span>'+fx+'<\/button>';\n    });\n\n    var lower = '';\n    if(ready || served){\n      var items = dishIngs(d).slice(0,6).map(icon).join('');\n      var btn = ready\n        ? '<button class=\"tkg-big\" data-tkg-btn=\"serve\">Serve!<\/button>'\n        : '<button class=\"tkg-big alt\" data-tkg-btn=\"next\">'+(st.idx+1>=st.order.length?'See results':'Next customer')+'<\/button>';\n      lower = '<div class=\"tkg-servebar\"><div class=\"tkg-dishphoto\"><img decoding=\"async\" src=\"'+DISH_IMG+encodeURIComponent(d.n)+'.png\" alt=\"'+dishName(d)+'\" onerror=\"this.parentNode.classList.add(\\'noimg\\')\"><div class=\"tkg-plate\">'+PLATESVG+'<div class=\"items\">'+items+'<\/div><\/div><\/div>' +\n        '<div>'+ruby(d)+'<div style=\"color:var(--tkg-muted);margin:2px 0 10px\">'+d.en+'<\/div>'+btn+'<\/div><\/div>';\n    } else {\n      var hasW = false;\n      if(st.step > 0){\n        if(d.s.some(function(x){ return x.i.indexOf('wip') >= 0; })) hasW = true;\n      }\n      var tiles = '';\n      st.tray.filter(function(id){\n        if(id !== 'wip') return true;\n        return hasW;\n      }).forEach(function(id){\n        var isW = (id === 'wip');\n        var nm = isW ? 'Your dish' : ING[id].en;\n        var showN = isW ? true : st.settings.showNames;\n        var wipCls = isW ? ' is-wip' : '';\n        var selCls = (st.sel.indexOf(id) >= 0) ? ' is-sel' : '';\n        var glCls = (glowIng.indexOf(id) >= 0) ? ' tkg-glow' : '';\n        tiles += '<button class=\"tkg-tile'+wipCls+selCls+glCls+'\" data-tkg-ing=\"'+id+'\"><span class=\"ic\">'+icon(id)+'<\/span>'+(showN?'<span class=\"nm\">'+nm+'<\/span>':'')+(isW?'<span class=\"cap\">IN PROGRESS<\/span>':'')+'<\/button>';\n      });\n      lower = '<div class=\"tkg-trayhead\"><h3>Ingredients<\/h3><p>Tap ingredients (you can pick more than one), then open a station to see its actions.<\/p><\/div>' +\n        '<div class=\"tkg-tray\">'+tiles+'<\/div>';\n    }\n\n    var sheet = '';\n    var showSheet = (st.phase === 'action');\n    if(st.phase === 'busy'){\n      if(st.learned) showSheet = true;\n    }\n    if(showSheet){\n      var t = TOOL[st.actTool];\n      sheet = '<div class=\"tkg-sheet\">';\n      if(st.learned){\n        sheet += '<div class=\"tkg-learned\">'+st.learned.en+' <span>\u2192<\/span> <b>'+st.learned.zh+'<\/b><\/div>';\n      } else {\n        var q = (t.id==='hand') ? 'What do you do with your hands?' : ('What do you do at the '+t.en.toLowerCase()+'?');\n        var actBtns = '';\n        st.actOrder.forEach(function(a){\n          var gl = '';\n          if(st.glow){\n            if(s){\n              if(a === s.a){\n                if(st.actTool === s.t) gl = ' tkg-glow';\n              }\n            }\n          }\n          actBtns += '<button class=\"tkg-act'+gl+'\" data-tkg-act=\"'+a+'\">'+ACT[a].en+'<\/button>';\n        });\n        sheet += '<h3><span style=\"font-family:var(--tkg-en)\">'+q+'<\/span><button class=\"tkg-back\" data-tkg-btn=\"back\">Close<\/button><\/h3><div class=\"tkg-acts\">'+actBtns+'<\/div>';\n      }\n      sheet += '<\/div>';\n    }\n\n    return '<div class=\"tkg-scene\">' +\n      '<div class=\"tkg-side customer\"><div class=\"tkg-fig\">'+personSVG(look,served)+'<\/div><div class=\"tkg-bubble\">'+custSay+'<\/div><\/div>' +\n      '<div class=\"tkg-side is-chef\"><div class=\"tkg-fig\">'+chefSVG(ready||served?'happy':'think')+'<\/div><div class=\"tkg-bubble\">'+chefSay+'<\/div><\/div>' +\n    '<\/div>' +\n    '<div class=\"tkg-steps\">Steps '+dots+selbar+'<\/div>' +\n    '<div class=\"tkg-counter\"><div class=\"tkg-kitchen\">'+stations+'<\/div><\/div>' +\n    sheet + lower;\n  }\n\n  function renderSummary(){\n    var played = st.results.map(function(r){ return DISHES[r.d]; });\n    var ings = [], verbs = [];\n    played.forEach(function(d){\n      dishIngs(d).forEach(function(i){ if(ings.indexOf(i)<0) ings.push(i); });\n      d.s.forEach(function(s){\n        if(s.a){\n          if(verbs.indexOf(s.a)<0) verbs.push(s.a);\n        }\n      });\n    });\n    var max = st.results.length*3, tot = totalStars();\n    var msg = tot===max ? 'Perfect score!' : (tot>=max*0.7 ? 'Great job! Your customers are happy.' : 'Nice work. Play again to get more stars.');\n\n    var dishRows = st.results.map(function(r){\n      return '<div class=\"tkg-dishrow\"><span>'+ruby(DISHES[r.d])+'<\/span><span class=\"tkg-stars\">'+starStr(r.stars)+'<\/span><\/div>';\n    }).join('');\n    var ingChips = ings.map(function(i){\n      return '<span class=\"tkg-ichip\">'+icon(i)+ingLabel(i)+' <small>'+ING[i].en+'<\/small><\/span>';\n    }).join('');\n    var verbChips = verbs.map(function(v){\n      return '<span class=\"tkg-vchip\"><b>'+actLabel(v)+'<\/b><span>'+ACT[v].en+'<\/span><\/span>';\n    }).join('');\n\n    return '<div class=\"tkg-card\">' +\n      '<div class=\"tkg-hero\"><div class=\"tkg-fig\">'+chefSVG('happy')+'<\/div><div><h3>Today\\'s results<\/h3><p class=\"tkg-total\">You earned <b>'+tot+'<\/b> \/ '+max+' stars. '+msg+'<\/p><\/div><\/div>' +\n      '<div class=\"tkg-sumgrid\">' +\n        '<div class=\"tkg-sumbox\"><h4>DISHES<\/h4>'+dishRows+'<\/div>' +\n        '<div class=\"tkg-sumbox\"><h4>INGREDIENTS<\/h4><div class=\"tkg-chips\">'+ingChips+'<\/div><\/div>' +\n        '<div class=\"tkg-sumbox\"><h4>COOKING VERBS<\/h4><div class=\"tkg-chips\">'+verbChips+'<\/div><\/div>' +\n      '<\/div>' +\n      '<div><button class=\"tkg-big\" data-tkg-btn=\"again\">Play again<\/button><\/div>' +\n    '<\/div>';\n  }\n\n  function renderGame(){\n    var slot = document.getElementById('tkg-game-slot');\n    if(!slot) return;\n    var body = st.screen==='start' ? renderStart() : (st.screen==='play' ? renderPlay() : renderSummary());\n    slot.innerHTML = renderSign() + body;\n  }\n\n  function renderAll(){\n    renderFlashcards();\n    renderGame();\n  }\n\n  \/* ==================== \u4e8b\u4ef6\u76e3\u807d ==================== *\/\n  var wrapperEl = document.getElementById('tkg-unified-wrapper');\n  wrapperEl.addEventListener('click', function(e){\n    var audEl = e.target.closest('[data-tkg-fcaud]');\n    if(audEl){\n      var itemId = parseInt(audEl.getAttribute('data-tkg-fcaud'), 10);\n      playVocabSound(itemId, e);\n      return;\n    }\n\n    var fcardEl = e.target.closest('[data-tkg-fcard]');\n    if(fcardEl){\n      fcardEl.classList.toggle('is-flipped');\n      return;\n    }\n\n    var b = e.target.closest('button');\n    if(!b) return;\n\n    var btnType = b.getAttribute('data-tkg-btn');\n    if(btnType === 'fcflip'){ fcAllFlipped = !fcAllFlipped; renderFlashcards(); return; }\n    if(btnType === 'fcprint'){ window.print(); return; }\n    if(btnType === 'names'){ st.settings.showNames = !st.settings.showNames; renderGame(); return; }\n    if(btnType === 'sound'){ st.settings.sound = !st.settings.sound; if(st.settings.sound) SFX.tick(); renderGame(); return; }\n    if(btnType === 'go'){ startGame(); return; }\n    if(btnType === 'again'){ st.screen = 'start'; renderGame(); return; }\n    if(btnType === 'back'){ st.phase = 'pick'; renderGame(); return; }\n    if(btnType === 'serve'){\n      var stars = st.dishGlow ? 1 : (st.dishErr > 0 ? 2 : 3);\n      st.results.push({d:st.order[st.idx], stars:stars});\n      st.phase = 'served';\n      SFX.serve();\n      renderGame();\n      return;\n    }\n    if(btnType === 'next'){\n      if(st.idx+1 >= st.order.length) st.screen = 'summary';\n      else { st.idx++; initDish(); }\n      renderGame();\n      return;\n    }\n\n    var cntAttr = b.getAttribute('data-tkg-count');\n    if(cntAttr !== null){ st.settings.count = parseInt(cntAttr,10); renderGame(); return; }\n\n    var nmAttr = b.getAttribute('data-tkg-names');\n    if(nmAttr !== null){ st.settings.showNames = (nmAttr === '1'); renderGame(); return; }\n\n    var ingAttr = b.getAttribute('data-tkg-ing');\n    if(ingAttr){ tapIng(ingAttr); return; }\n\n    var toolAttr = b.getAttribute('data-tkg-tool');\n    if(toolAttr){ tapTool(toolAttr); return; }\n\n    var actAttr = b.getAttribute('data-tkg-act');\n    if(actAttr){ tapAct(actAttr); return; }\n  });\n\n  \/* ==================== \u5168\u7ad9\u7e41\u7c21\u5207\u63db\u81ea\u52d5\u5075\u6e2c ==================== *\/\n  function detectSiteLang(){\n    var detectedSC = isSC;\n    try{\n      \/\/ 1. \u6aa2\u67e5\u53c3\u8003\u5143\u7d20 (.lang-zh-TW \/ .lang-zh-CN) \u7684\u986f\u793a\u72c0\u614b\n      var probeCN = document.getElementById('tkg-probe-cn');\n      var probeTW = document.getElementById('tkg-probe-tw');\n      if(probeCN){\n        if(probeTW){\n          var cnDisp = window.getComputedStyle(probeCN).display;\n          var twDisp = window.getComputedStyle(probeTW).display;\n          if(cnDisp !== 'none'){\n            if(twDisp === 'none'){\n              detectedSC = true;\n            }\n          } else if(twDisp !== 'none'){\n            if(cnDisp === 'none'){\n              detectedSC = false;\n            }\n          }\n        }\n      }\n      \/\/ 2. \u8f14\u52a9\u6aa2\u67e5 html \/ body class \u6216 Cookie\n      var htmlCls = document.documentElement.className || '';\n      var bodyCls = document.body ? (document.body.className || '') : '';\n      var combined = htmlCls + ' ' + bodyCls;\n      if(combined.indexOf('zh-cn') >= 0 || combined.indexOf('zh-CN') >= 0 || combined.indexOf('simplified') >= 0){\n        detectedSC = true;\n      } else if(combined.indexOf('zh-tw') >= 0 || combined.indexOf('zh-TW') >= 0 || combined.indexOf('traditional') >= 0){\n        detectedSC = false;\n      }\n    }catch(e){}\n\n    if(detectedSC !== isSC){\n      isSC = detectedSC;\n      renderAll();\n    }\n  }\n\n  \/\/ \u521d\u6b21\u6aa2\u67e5 Cookie\n  try{\n    var cookies = document.cookie.split(';');\n    for(var cIdx=0; cIdx<cookies.length; cIdx++){\n      if(cookies[cIdx].trim().indexOf('lang=sc') === 0){\n        isSC = true;\n      }\n    }\n  }catch(e){}\n\n  detectSiteLang();\n  renderAll();\n\n  try{\n    var obs = new MutationObserver(detectSiteLang);\n    obs.observe(document.documentElement, {attributes:true, subtree:true, attributeFilter:['class','style','lang']});\n  }catch(e){}\n  setInterval(detectSiteLang, 800);\n})();\n<\/script>\n<\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium is-resized\"><a href=\"https:\/\/tiffanysmandarin.com\/index.php\/food-words\/\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"86\" src=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png\" alt=\"\" class=\"wp-image-571\" style=\"width:150px;height:43px\" srcset=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png 300w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-600x171.png 600w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963.png 700w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u7e41 \u7b80 \ud83c\udf73 Cooking Methods Flashcards \ud83d\udd04 Flip All \ud83d\udda8\ufe0f Print \/ Save PDF Vocabulary Review (Click to Flip \u00b7 Click \ud83d\udd0a to Listen) OneDotDot Chinese \u00b7 Tiffany Huang<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_wp_convertkit_post_meta":{"form":"-1","landing_page":"0","tag":"0","restrict_content":"0"},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1238],"tags":[],"class_list":["post-17998","post","type-post","status-publish","format-standard","hentry","category-food"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Chinese cooking game - OneDotDot Chinese<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Chinese cooking game - OneDotDot Chinese\" \/>\n<meta property=\"og:description\" content=\"\u7e41 \u7b80 \ud83c\udf73 Cooking Methods Flashcards \ud83d\udd04 Flip All \ud83d\udda8\ufe0f Print \/ Save PDF Vocabulary Review (Click to Flip \u00b7 Click \ud83d\udd0a to Listen) OneDotDot Chinese \u00b7 Tiffany Huang\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/\" \/>\n<meta property=\"og:site_name\" content=\"OneDotDot Chinese\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-06T06:07:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-25T00:57:24+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png\" \/>\n<meta name=\"author\" content=\"tiffany\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"tiffany\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/\"},\"author\":{\"name\":\"tiffany\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"headline\":\"Chinese cooking game\",\"datePublished\":\"2026-10-06T06:07:57+00:00\",\"dateModified\":\"2026-10-25T00:57:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/\"},\"wordCount\":23,\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/e68f92e59c963-300x86.png\",\"articleSection\":[\"food\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/\",\"name\":\"Chinese cooking game - OneDotDot Chinese\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/e68f92e59c963-300x86.png\",\"datePublished\":\"2026-10-06T06:07:57+00:00\",\"dateModified\":\"2026-10-25T00:57:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/#primaryimage\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/e68f92e59c963.png\",\"contentUrl\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/e68f92e59c963.png\",\"width\":700,\"height\":200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/10\\\/06\\\/chinese-cooking-game\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chinese cooking game\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\",\"name\":\"OneDotDot Chinese\",\"description\":\"Learn a little Chinese every day\",\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tiffanysmandarin.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\",\"name\":\"tiffany\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"url\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"contentUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"width\":214,\"height\":214,\"caption\":\"tiffany\"},\"logo\":{\"@id\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/tiffanys_talk\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/tiffany-huang-mandarin\\\/\"],\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/author\\\/tiffany\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Chinese cooking game - OneDotDot Chinese","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/","og_locale":"en_US","og_type":"article","og_title":"Chinese cooking game - OneDotDot Chinese","og_description":"\u7e41 \u7b80 \ud83c\udf73 Cooking Methods Flashcards \ud83d\udd04 Flip All \ud83d\udda8\ufe0f Print \/ Save PDF Vocabulary Review (Click to Flip \u00b7 Click \ud83d\udd0a to Listen) OneDotDot Chinese \u00b7 Tiffany Huang","og_url":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/","og_site_name":"OneDotDot Chinese","article_published_time":"2026-10-06T06:07:57+00:00","article_modified_time":"2026-10-25T00:57:24+00:00","og_image":[{"url":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png","type":"","width":"","height":""}],"author":"tiffany","twitter_card":"summary_large_image","twitter_misc":{"Written by":"tiffany","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/#article","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/"},"author":{"name":"tiffany","@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"headline":"Chinese cooking game","datePublished":"2026-10-06T06:07:57+00:00","dateModified":"2026-10-25T00:57:24+00:00","mainEntityOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/"},"wordCount":23,"publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/#primaryimage"},"thumbnailUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png","articleSection":["food"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/","url":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/","name":"Chinese cooking game - OneDotDot Chinese","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/#primaryimage"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/#primaryimage"},"thumbnailUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png","datePublished":"2026-10-06T06:07:57+00:00","dateModified":"2026-10-25T00:57:24+00:00","breadcrumb":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/#primaryimage","url":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963.png","contentUrl":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963.png","width":700,"height":200},{"@type":"BreadcrumbList","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/10\/06\/chinese-cooking-game\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/tiffanysmandarin.com\/"},{"@type":"ListItem","position":2,"name":"Chinese cooking game"}]},{"@type":"WebSite","@id":"https:\/\/tiffanysmandarin.com\/#website","url":"https:\/\/tiffanysmandarin.com\/","name":"OneDotDot Chinese","description":"Learn a little Chinese every day","publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tiffanysmandarin.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99","name":"tiffany","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","url":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","contentUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","width":214,"height":214,"caption":"tiffany"},"logo":{"@id":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png"},"sameAs":["https:\/\/www.instagram.com\/tiffanys_talk\/","https:\/\/www.linkedin.com\/in\/tiffany-huang-mandarin\/"],"url":"https:\/\/tiffanysmandarin.com\/index.php\/author\/tiffany\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/17998","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/comments?post=17998"}],"version-history":[{"count":12,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/17998\/revisions"}],"predecessor-version":[{"id":18565,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/17998\/revisions\/18565"}],"wp:attachment":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/media?parent=17998"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/categories?post=17998"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/tags?post=17998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}