{"id":16858,"date":"2026-09-12T07:34:28","date_gmt":"2026-09-11T23:34:28","guid":{"rendered":"https:\/\/tiffanysmandarin.com\/?p=16858"},"modified":"2026-10-09T20:03:25","modified_gmt":"2026-10-09T12:03:25","slug":"book-2-l1","status":"publish","type":"post","link":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/","title":{"rendered":"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1"},"content":{"rendered":"\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!--\n  \u65b0\u7248\u5be6\u7528\u8996\u807d\u83ef\u8a9e (Practical Audio-Visual Chinese, 2nd Ed.) Book 2 \u00b7 Lesson 1\u300c\u6211\u751f\u75c5\u4e86\u300dI Was Sick \u2014 Vocabulary Embed\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  Same technical pattern as the Book 1 series (see those files' comments\n  for fuller rationale). Key points repeated here:\n    - No <!DOCTYPE>\/<html>\/<head>\/<body>; site's own Text Display \/ Pinyin\n      Display toggle covers zh-TW\/zh-CN as usual\n    - CSS scoped under .pavc-b2l1-vocab-embed with its own --pv2l1-* vars \u2014\n      same palette as the rest of the series\n    - Ruby: every example\/dialogue sentence segmented WORD BY WORD\n    - Root lookup by id (#pavc-b2l1-vocab-embed-1), not currentScript\n    - Same self-contained EN \/ \u65e5\u672c\u8a9e \/ \ud55c\uad6d\uc5b4 translation toggle as the\n      Book 1 series (TR()\/trSpans()\/pv2l1-lang-* classes; quiz's\n      QMC()\/QTYPE() + UI_STRINGS + getLang())\n    - PINYIN SYNC FIX: the site's Pinyin Display toggle only adds the\n      \"hidden\" \/ \"mouseover\" class to <rt> elements that exist at the\n      moment it's clicked. The flashcard (re-rendered on every Prev\/Next)\n      and the Match It tiles (re-rendered every New Round, and using a\n      plain span rather than <rt>) were therefore ignoring it. Now a\n      MutationObserver watches a reference <rt> in the static word list,\n      and syncPinyin() copies its current mode onto the flashcard's <rt>s\n      and onto the tiles (via pv2l1-py-hidden \/ pv2l1-py-mouseover classes on\n      the root) after every re-render and every toggle change.\n    - COPYRIGHT: no audio, no textbook dialogue text, no textbook example\n      sentences reproduced. Section 06 (\"Put It Together\") is an ORIGINAL\n      dialogue I wrote myself \u2014 not the textbook's.\n    - This is the FIRST lesson of Book 2 of this series (distinct from\n      Book 1, which this same project already covers under the\n      pavc-b1lN- naming). Book 2 has its own independent Lesson 1-13\n      numbering, per the textbook's own table of contents.\n    - Vocabulary sourced directly from the uploaded textbook PDF's own\n      \u751f\u8a5e (Vocabulary) list for this lesson (PDF pages 21-27, book pages\n      9-15): 24 main numbered entries + 2 \"SUPPLEMENTARY VOCABULARY\"\n      entries (#25 \u58de\u4e86, #26 \u5fd8), several of which split into their own\n      sub-word cards with independent part-of-speech + gloss exactly as\n      the textbook itself lists them (\u75c5\/\u75c5\u4e86 under \u751f\u75c5; \u79ae\u62dc\u5929 under\n      \u79ae\u62dc; \u91ab under \u91ab\u751f; \u6253\/\u7b97 under \u6253\u7b97; \u8a31 under \u4e5f\u8a31; \u96ea\/\u4e0b\u96ea under\n      \u6ed1\u96ea; \u5fc3 under \u5c0f\u5fc3; \u653e\/\u653e\u5047 under \u653e\u5fc3; \u58de under \u58de\u4e86). Final count:\n      39 words across 26 numbered official entries.\n    - All example sentences newly written for this embed, using only this\n      lesson's own vocabulary plus generic, already-familiar basic words\n      (numbers, pronouns, common review verbs) \u2014 nothing from later\n      lessons.\n    - Traditional\/simplified pairs checked individually, both within\n      headwords AND within every supporting word used in an example or\n      the dialogue (grammar words like \u500b\/\u4e2a, \u5011\/\u4eec, \u9019\/\u8fd9, \u4ec0\u9ebc\/\u4ec0\u4e48,\n      \u5e7e\/\u51e0, \u8aaa\/\u8bf4, \u55ce\/\u5417, \u5b78\/\u5b66, \u6703\/\u4f1a, \u958b\/\u5f00, \u807d\/\u542c, \u9ede\/\u70b9, \u9322\/\u94b1, \u5e36\/\u5e26,\n      \u7576\/\u5f53, \u7a2e\/\u79cd, \u5169\/\u4e24, \u5abd\u5abd\/\u5988\u5988, \u5c0d\/\u5bf9, \u89ba\u5f97\/\u89c9\u5f97, \u624b\u6a5f\/\u624b\u673a,\n      \u5929\u6c23\/\u5929\u6c14 are NOT this lesson's headwords but still differ across\n      scripts, so they're wrapped in WD() wherever they appear) \u2014 see the\n      WD() calls throughout for the complete set. Headword genuine\n      trad\/simp differences: \u9031\u672b\/\u5468\u672b, \u600e\u9ebc\u4e86\/\u600e\u4e48\u4e86, \u79ae\u62dc\/\u793c\u62dc,\n      \u79ae\u62dc\u5929\/\u793c\u62dc\u5929, \u91ab\u751f\/\u533b\u751f, \u91ab\/\u533b, \u6c92\u95dc\u4fc2\/\u6ca1\u5173\u7cfb, \u85e5\/\u836f, \u6c92\u4e8b\u5152\/\u6ca1\u4e8b\u513f,\n      \u9109\u4e0b\/\u4e61\u4e0b, \u4e5f\u8a31\/\u4e5f\u8bb8, \u8a31\/\u8bb8, \u7279\u5225\/\u7279\u522b, \u58de\u4e86\/\u574f\u4e86, \u58de\/\u574f.\n    - No literal `&&` inside the <script> tag (WordPress content filter risk)\n    - Top-of-page support note, same as the rest of the series\n-->\n<div class=\"pavc-b2l1-vocab-embed\" id=\"pavc-b2l1-vocab-embed-1\">\n<style>\n.pavc-b2l1-vocab-embed {\n  --pv2l1-oxblood: #7b2d26;\n  --pv2l1-oxblood-dark: #5e211c;\n  --pv2l1-mustard: #c9922b;\n  --pv2l1-sage: #7c8b6f;\n  --pv2l1-bone: #f7f1e6;\n  --pv2l1-ink: #2c2620;\n  --pv2l1-line: #e4d9c4;\n  font-family: 'Work Sans', -apple-system, sans-serif;\n  color: var(--pv2l1-ink);\n  background: #fff;\n  max-width: 760px;\n  margin: 0 auto;\n  padding: 8px 4px 24px;\n  line-height: 1.6;\n}\n.pavc-b2l1-vocab-embed * { box-sizing: border-box; }\n.pavc-b2l1-vocab-embed h1,\n.pavc-b2l1-vocab-embed h2,\n.pavc-b2l1-vocab-embed h3 {\n  font-family: 'Bitter', Georgia, serif;\n  color: var(--pv2l1-oxblood-dark);\n  margin: 0 0 8px;\n}\n.pavc-b2l1-vocab-embed .pv2l1-support-note {\n  font-size: 0.85rem;\n  color: var(--pv2l1-sage);\n  border-bottom: 1px solid var(--pv2l1-line);\n  padding-bottom: 12px;\n  margin: 0 0 16px;\n}\n.pavc-b2l1-vocab-embed .pv2l1-lede {\n  margin: 0 0 16px;\n  padding: 14px 16px;\n  background: var(--pv2l1-bone);\n  border-left: 4px solid var(--pv2l1-mustard);\n  border-radius: 4px;\n  font-size: 0.98rem;\n}\n.pavc-b2l1-vocab-embed .pv2l1-lede b { color: var(--pv2l1-oxblood-dark); }\n\n.pavc-b2l1-vocab-embed .pv2l1-lang-toggle {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  margin: 0 0 24px;\n  flex-wrap: wrap;\n}\n.pavc-b2l1-vocab-embed .pv2l1-lang-label {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.75rem;\n  color: var(--pv2l1-sage);\n  letter-spacing: 0.06em;\n}\n.pavc-b2l1-vocab-embed .pv2l1-lang-btn {\n  font-family: 'Work Sans', sans-serif;\n  font-size: 0.85rem;\n  border: 1px solid var(--pv2l1-oxblood);\n  color: var(--pv2l1-oxblood);\n  background: #fff;\n  padding: 5px 14px;\n  border-radius: 20px;\n  cursor: pointer;\n}\n.pavc-b2l1-vocab-embed .pv2l1-lang-btn:hover { background: var(--pv2l1-bone); }\n.pavc-b2l1-vocab-embed .pv2l1-lang-btn.pv2l1-lang-active { background: var(--pv2l1-oxblood); color: #fff; }\n\n.pavc-b2l1-vocab-embed .pv2l1-tr { display: none; }\n.pavc-b2l1-vocab-embed.pv2l1-lang-en .pv2l1-tr-en { display: inline; }\n.pavc-b2l1-vocab-embed.pv2l1-lang-ja .pv2l1-tr-ja { display: inline; }\n.pavc-b2l1-vocab-embed.pv2l1-lang-ko .pv2l1-tr-ko { display: inline; }\n\n.pavc-b2l1-vocab-embed .pv2l1-sec-eyebrow {\n  display: inline-block;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.75rem;\n  letter-spacing: 0.08em;\n  color: #fff;\n  background: var(--pv2l1-oxblood);\n  padding: 3px 9px;\n  border-radius: 3px;\n  margin: 32px 0 10px;\n}\n.pavc-b2l1-vocab-embed .pv2l1-word-card {\n  border: 1px solid var(--pv2l1-line);\n  border-radius: 8px;\n  padding: 12px 14px;\n  margin-bottom: 10px;\n  background: #fff;\n}\n.pavc-b2l1-vocab-embed .pv2l1-word-top {\n  display: flex;\n  align-items: baseline;\n  gap: 10px;\n  flex-wrap: wrap;\n}\n.pavc-b2l1-vocab-embed .pv2l1-num {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.75rem;\n  color: var(--pv2l1-mustard);\n  min-width: 22px;\n}\n.pavc-b2l1-vocab-embed .pv2l1-hanzi { font-size: 1.35rem; font-weight: 600; }\n.pavc-b2l1-vocab-embed ruby {\n  ruby-position: over;\n  margin-right: 2px;\n  color: var(--pv2l1-ink) !important;\n  font-size: inherit !important;\n}\n.pavc-b2l1-vocab-embed .rb {\n  color: var(--pv2l1-ink) !important;\n  font-size: inherit !important;\n}\n.pavc-b2l1-vocab-embed rt {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.6rem !important;\n  color: var(--pv2l1-sage) !important;\n  font-weight: 400;\n}\n.pavc-b2l1-vocab-embed rt.hidden { display: none; }\n.pavc-b2l1-vocab-embed rt.mouseover { opacity: 0; }\n.pavc-b2l1-vocab-embed rt.mouseover:hover { opacity: 1; }\n.pavc-b2l1-vocab-embed .pv2l1-meaning { font-style: italic; color: #6b5f52; font-size: 0.92rem; }\n.pavc-b2l1-vocab-embed .pv2l1-speaker {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  flex: 0 0 26px;\n  width: 26px;\n  height: 26px;\n  padding: 0;\n  border: none;\n  background: var(--pv2l1-bone);\n  color: var(--pv2l1-oxblood);\n  border-radius: 50%;\n  cursor: pointer;\n  margin-left: auto;\n}\n.pavc-b2l1-vocab-embed .pv2l1-speaker:hover { background: var(--pv2l1-mustard); color: #fff; }\n.pavc-b2l1-vocab-embed .pv2l1-example {\n  margin-top: 8px;\n  padding-top: 8px;\n  border-top: 1px dashed var(--pv2l1-line);\n  font-size: 0.95rem;\n}\n.pavc-b2l1-vocab-embed .pv2l1-example .pv2l1-sent-word { display: inline-flex; }\n.pavc-b2l1-vocab-embed .pv2l1-example .pv2l1-punct { margin-right: 2px; }\n.pavc-b2l1-vocab-embed .pv2l1-example .pv2l1-en {\n  display: block;\n  color: #6b5f52;\n  font-size: 0.85rem;\n  margin-top: 4px;\n}\n.pavc-b2l1-vocab-embed .pv2l1-dialogue-note { font-size: 0.85rem; color: #6b5f52; margin: 0 0 10px; }\n.pavc-b2l1-vocab-embed .pv2l1-dialogue {\n  background: var(--pv2l1-bone);\n  border-radius: 8px;\n  padding: 16px 18px;\n  margin-top: 8px;\n}\n.pavc-b2l1-vocab-embed .pv2l1-line {\n  display: flex;\n  gap: 8px;\n  margin-bottom: 12px;\n  align-items: flex-start;\n  flex-wrap: wrap;\n}\n.pavc-b2l1-vocab-embed .pv2l1-speaker-tag {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.72rem;\n  color: var(--pv2l1-oxblood);\n  min-width: 46px;\n  padding-top: 3px;\n}\n.pavc-b2l1-vocab-embed .pv2l1-line-body { flex: 1; min-width: 200px; }\n.pavc-b2l1-vocab-embed .pv2l1-line-en { display: block; color: #6b5f52; font-size: 0.82rem; margin-top: 2px; }\n\n.pavc-b2l1-vocab-embed .pv2l1-fc-hint { font-size: 0.85rem; color: #6b5f52; margin: 0 0 12px; text-align: center; }\n.pavc-b2l1-vocab-embed .pv2l1-flashcard-wrap { max-width: 320px; margin: 0 auto 14px; perspective: 1200px; }\n.pavc-b2l1-vocab-embed .pv2l1-flashcard {\n  position: relative;\n  width: 100%;\n  height: 230px;\n  cursor: pointer;\n  transform-style: preserve-3d;\n  transition: transform 0.5s;\n}\n.pavc-b2l1-vocab-embed .pv2l1-flashcard.pv2l1-flipped { transform: rotateY(180deg); }\n.pavc-b2l1-vocab-embed .pv2l1-fc-face {\n  position: absolute;\n  inset: 0;\n  backface-visibility: hidden;\n  border: 1px solid var(--pv2l1-line);\n  border-radius: 12px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 16px;\n  background: #fff;\n  text-align: center;\n}\n.pavc-b2l1-vocab-embed .pv2l1-fc-back { transform: rotateY(180deg); background: var(--pv2l1-bone); }\n.pavc-b2l1-vocab-embed .pv2l1-fc-front .pv2l1-hanzi { font-size: 4rem !important; }\n.pavc-b2l1-vocab-embed .pv2l1-flashcard-wrap rt { font-size: 1.2rem !important; }\n.pavc-b2l1-vocab-embed .pv2l1-fc-back .pv2l1-meaning { font-style: italic; color: var(--pv2l1-oxblood-dark); font-size: 1.5rem; }\n.pavc-b2l1-vocab-embed .pv2l1-flashcard-controls { display: flex; align-items: center; justify-content: center; gap: 14px; margin-bottom: 28px; }\n.pavc-b2l1-vocab-embed .pv2l1-game-btn {\n  font-family: 'Work Sans', sans-serif;\n  font-size: 0.85rem;\n  border: 1px solid var(--pv2l1-oxblood);\n  color: var(--pv2l1-oxblood);\n  background: #fff;\n  padding: 6px 14px;\n  border-radius: 20px;\n  cursor: pointer;\n}\n.pavc-b2l1-vocab-embed .pv2l1-game-btn:hover { background: var(--pv2l1-oxblood); color: #fff; }\n.pavc-b2l1-vocab-embed .pv2l1-game-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }\n.pavc-b2l1-vocab-embed .pv2l1-game-status { font-family: 'IBM Plex Mono', monospace; font-size: 0.82rem; color: var(--pv2l1-sage); }\n.pavc-b2l1-vocab-embed .pv2l1-game-board { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\n.pavc-b2l1-vocab-embed .pv2l1-game-col { display: flex; flex-direction: column; gap: 8px; }\n.pavc-b2l1-vocab-embed .pv2l1-tile {\n  font-family: 'Work Sans', sans-serif;\n  text-align: left;\n  border: 1px solid var(--pv2l1-line);\n  background: #fff;\n  border-radius: 6px;\n  padding: 10px 12px;\n  cursor: pointer;\n  font-size: 0.95rem;\n  color: var(--pv2l1-ink);\n  transition: background 0.15s, border-color 0.15s, transform 0.1s;\n}\n.pavc-b2l1-vocab-embed .pv2l1-tile .pv2l1-tile-py {\n  display: block;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.7rem;\n  color: var(--pv2l1-sage);\n  margin-top: 2px;\n}\n\/* Match It tile pinyin follows the site's Pinyin Display toggle *\/\n.pavc-b2l1-vocab-embed.pv2l1-py-hidden .pv2l1-tile .pv2l1-tile-py { display: none; }\n.pavc-b2l1-vocab-embed.pv2l1-py-mouseover .pv2l1-tile .pv2l1-tile-py { opacity: 0; }\n.pavc-b2l1-vocab-embed.pv2l1-py-mouseover .pv2l1-tile:hover .pv2l1-tile-py { opacity: 1; }\n.pavc-b2l1-vocab-embed .pv2l1-tile:hover:not(.pv2l1-matched):not(.pv2l1-selected) { border-color: var(--pv2l1-mustard); }\n.pavc-b2l1-vocab-embed .pv2l1-tile.pv2l1-selected { border-color: var(--pv2l1-oxblood); background: var(--pv2l1-bone); }\n.pavc-b2l1-vocab-embed .pv2l1-tile.pv2l1-matched { border-color: var(--pv2l1-sage); background: #eef2e9; color: var(--pv2l1-sage); cursor: default; }\n.pavc-b2l1-vocab-embed .pv2l1-tile.pv2l1-wrong { border-color: #b5453d; background: #fbeceb; animation: pv2l1-shake 0.3s; }\n@keyframes pv2l1-shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } }\n.pavc-b2l1-vocab-embed .pv2l1-game-win { text-align: center; padding: 14px; font-family: 'Bitter', serif; color: var(--pv2l1-oxblood-dark); display: none; }\n.pavc-b2l1-vocab-embed .pv2l1-game-win.pv2l1-show { display: block; }\n@media (max-width: 480px) { .pavc-b2l1-vocab-embed .pv2l1-game-board { grid-template-columns: 1fr; } }\n.pavc-b2l1-vocab-embed .pv2l1-quiz { background: #fff; border: 1px solid var(--pv2l1-line); border-radius: 12px; padding: 20px 22px; margin-top: 8px; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-progress { font-size: 0.82rem; color: var(--pv2l1-sage); margin: 0 0 10px; font-family: 'IBM Plex Mono', monospace; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-prompt { font-size: 1.1rem; margin: 0 0 14px; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-options { display: flex; flex-direction: column; gap: 8px; margin: 0 0 10px; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-opt { text-align: left; border: 1px solid var(--pv2l1-line); background: var(--pv2l1-bone); border-radius: 8px; padding: 10px 14px; cursor: pointer; font-size: 0.98rem; color: var(--pv2l1-ink); }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-opt:hover { background: #f0e6d2; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-opt.correct { background: #e3efdd; border-color: #7fae6d; color: #3d5c34; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-opt.incorrect { background: #f5e0dc; border-color: var(--pv2l1-oxblood); color: var(--pv2l1-oxblood-dark); }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-opt[disabled] { cursor: default; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-input-row { display: flex; gap: 8px; margin: 0 0 10px; flex-wrap: wrap; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-input { flex: 1 1 200px; border: 1px solid var(--pv2l1-line); border-radius: 8px; padding: 9px 12px; font-size: 0.98rem; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-submit, .pavc-b2l1-vocab-embed .pv2l1-quiz-next, .pavc-b2l1-vocab-embed .pv2l1-quiz-retake { border: none; background: var(--pv2l1-oxblood); color: #fff; border-radius: 20px; padding: 8px 18px; font-size: 0.9rem; cursor: pointer; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-submit:hover, .pavc-b2l1-vocab-embed .pv2l1-quiz-next:hover, .pavc-b2l1-vocab-embed .pv2l1-quiz-retake:hover { background: var(--pv2l1-oxblood-dark); }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-feedback { font-size: 0.95rem; margin: 0 0 10px; min-height: 1.4em; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-feedback.correct { color: #3d5c34; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-feedback.incorrect { color: var(--pv2l1-oxblood-dark); }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-score { text-align: center; }\n.pavc-b2l1-vocab-embed .pv2l1-quiz-score .pv2l1-quiz-score-num { font-size: 2.2rem; font-weight: 700; color: var(--pv2l1-oxblood-dark); display: block; margin-bottom: 8px; font-family: 'Bitter', serif; }\n<\/style>\n\n<p class=\"pv2l1-support-note\"><em>A note before you start: I&#8217;d love for you to support the official textbook \u2014 this page is only meant as a review tool for people who already own a copy, not a replacement for it.<\/em><\/p>\n\n<p class=\"pv2l1-lede\">\n<b><span class=\"lang-zh-TW\">\u65b0\u7248\u5be6\u7528\u8996\u807d\u83ef\u8a9e<\/span><span class=\"lang-zh-CN\">\u65b0\u7248\u5b9e\u7528\u89c6\u542c\u534e\u8bed<\/span> Book 2 \u00b7 Lesson 1\u300c\u6211\u751f\u75c5\u4e86\u300dI Was Sick<\/b> \u2014 this lesson&#8217;s vocabulary with pinyin, meaning, and an example sentence for every word, segmented word by word so you can see how each piece works on its own. 39 words across five groups, covering being sick, reassurance phrases, time\/vacation words, plans for the countryside and skiing, and doctors &amp; care.\n<\/p>\n\n<div class=\"pv2l1-lang-toggle\">\n  <span class=\"pv2l1-lang-label\">TRANSLATION<\/span>\n  <button type=\"button\" class=\"pv2l1-lang-btn pv2l1-lang-active\" data-lang=\"en\">EN<\/button>\n  <button type=\"button\" class=\"pv2l1-lang-btn\" data-lang=\"ja\">\u65e5\u672c\u8a9e<\/button>\n  <button type=\"button\" class=\"pv2l1-lang-btn\" data-lang=\"ko\">\ud55c\uad6d\uc5b4<\/button>\n<\/div>\n\n<div class=\"pv2l1-sec-eyebrow\">01 \u2014 GETTING SICK<\/div>\n<div id=\"pv2l1-word-list-1\"><\/div>\n\n<div class=\"pv2l1-sec-eyebrow\">02 \u2014 REASSURANCE<\/div>\n<div id=\"pv2l1-word-list-2\"><\/div>\n\n<div class=\"pv2l1-sec-eyebrow\">03 \u2014 TIME &amp; VACATION<\/div>\n<div id=\"pv2l1-word-list-3\"><\/div>\n\n<div class=\"pv2l1-sec-eyebrow\">04 \u2014 PLANS &amp; COUNTRYSIDE<\/div>\n<div id=\"pv2l1-word-list-4\"><\/div>\n\n<div class=\"pv2l1-sec-eyebrow\">05 \u2014 DOCTORS, CARE &amp; MORE<\/div>\n<div id=\"pv2l1-word-list-5\"><\/div>\n\n<div class=\"pv2l1-sec-eyebrow\">06 \u2014 PUT IT TOGETHER<\/div>\n<p class=\"pv2l1-dialogue-note\"><em>Note: this dialogue is not from the textbook \u2014 it&#8217;s a short conversation I made up using this lesson&#8217;s vocabulary so you can see the words used together. For the actual Lesson 1 dialogue, I&#8217;d recommend picking up a copy of the textbook itself.<\/em><\/p>\n<div class=\"pv2l1-dialogue\" id=\"pv2l1-dialogue\"><\/div>\n\n<div class=\"pv2l1-sec-eyebrow\">07 \u2014 FLASHCARDS<\/div>\n<p class=\"pv2l1-fc-hint\">Tap the card to flip it, then use the arrows to move through the deck.<\/p>\n<div class=\"pv2l1-flashcard-wrap\">\n  <div class=\"pv2l1-flashcard\" id=\"pv2l1-flashcard\">\n    <div class=\"pv2l1-fc-face pv2l1-fc-front\" id=\"pv2l1-fc-front\"><\/div>\n    <div class=\"pv2l1-fc-face pv2l1-fc-back\" id=\"pv2l1-fc-back\"><\/div>\n  <\/div>\n<\/div>\n<div class=\"pv2l1-flashcard-controls\">\n  <button class=\"pv2l1-game-btn\" id=\"pv2l1-fc-prev\">\u2039 Prev<\/button>\n  <span class=\"pv2l1-game-status\" id=\"pv2l1-fc-progress\">1 \/ 39<\/span>\n  <button class=\"pv2l1-game-btn\" id=\"pv2l1-fc-next\">Next \u203a<\/button>\n<\/div>\n\n<div class=\"pv2l1-sec-eyebrow\">08 \u2014 MATCH IT<\/div>\n<p style=\"font-size:0.9rem;color:#6b5f52;margin:0 0 10px;\">Tap a Chinese word, then tap the meaning that matches it (in whichever translation language is selected above). Get all 8 pairs to finish the round.<\/p>\n<div class=\"pv2l1-game-bar\">\n  <button class=\"pv2l1-game-btn\" id=\"pv2l1-game-new\">New Round<\/button>\n  <span class=\"pv2l1-game-status\" id=\"pv2l1-game-status\">0 \/ 8 matched<\/span>\n<\/div>\n<div class=\"pv2l1-game-board\">\n  <div class=\"pv2l1-game-col\" id=\"pv2l1-game-col-zh\"><\/div>\n  <div class=\"pv2l1-game-col\" id=\"pv2l1-game-col-en\"><\/div>\n<\/div>\n<div class=\"pv2l1-game-win\" id=\"pv2l1-game-win\">\ud83c\udf89 All matched! Nice work.<\/div>\n\n<div class=\"pv2l1-sec-eyebrow\">09 \u2014 VOCABULARY QUIZ<\/div>\n<p style=\"font-size:0.9rem;color:#6b5f52;margin:0 0 10px;\">20 questions covering this lesson&#8217;s vocabulary \u2014 a mix of multiple choice and type-the-pinyin. Questions pick up whichever translation language is selected above; switching mid-question applies from the next question onward.<\/p>\n<div class=\"pv2l1-quiz\" id=\"pv2l1-quiz\"><\/div>\n\n<script>\n(function () {\n  var root = document.getElementById('pavc-b2l1-vocab-embed-1');\n  if (!root) return;\n\n  var SPEAKER_SVG = '<svg viewBox=\"0 0 24 24\" width=\"12\" height=\"12\" fill=\"currentColor\" aria-hidden=\"true\">' +\n    '<path d=\"M7 4.5v15l13-7.5z\"><\/path>' +\n    '<\/svg>';\n\n  function W(t, s, p) { return { t: t, s: s, pt: p, ps: p }; }\n  function WD(t, s, pt, ps) { return { t: t, s: s, pt: pt, ps: ps }; }\n  function TR(en, ja, ko) { return { en: en, ja: ja, ko: ko }; }\n\n  var GROUPS = {\n    'pv2l1-word-list-1': [\n      { t: '\u751f\u75c5', s: '\u751f\u75c5', p: 'sh\u0113ngb\u00ecng', meaning: TR('to become ill, to be sick', '\u75c5\u6c17\u306b\u306a\u308b', '\ubcd1\ub098\ub2e4'),\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u4e0a','\u4e0a','sh\u00e0ng'), WD('\u500b','\u4e2a','ge','ge'), WD('\u79ae\u62dc','\u793c\u62dc','l\u01d0b\u00e0i','l\u01d0b\u00e0i'), W('\u751f\u75c5','\u751f\u75c5','sh\u0113ngb\u00ecng'), W('\u4e86','\u4e86','le'), '\u3002'],\n        exEn: TR('I got sick last week.', '\u79c1\u306f\u5148\u9031\u75c5\u6c17\u306b\u306a\u308a\u307e\u3057\u305f\u3002', '\uc800\ub294 \uc9c0\ub09c\uc8fc\uc5d0 \ubcd1\uc774 \ub0ac\uc5b4\uc694.') },\n      { t: '\u75c5', s: '\u75c5', p: 'b\u00ecng', meaning: TR('illness, disease', '\u75c5\u6c17', '\ubcd1'),\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u7684','\u7684','de'), W('\u75c5','\u75c5','b\u00ecng'), W('\u597d','\u597d','h\u01ceo'), W('\u4e86','\u4e86','le'), WD('\u55ce','\u5417','ma','ma'), '\uff1f'],\n        exEn: TR('Has your illness gotten better?', '\u3042\u306a\u305f\u306e\u75c5\u6c17\u306f\u826f\u304f\u306a\u308a\u307e\u3057\u305f\u304b\u3002', '\ub2f9\uc2e0 \ubcd1\uc740 \ub098\uc558\uc5b4\uc694?') },\n      { t: '\u75c5\u4e86', s: '\u75c5\u4e86', p: 'b\u00ecngle', meaning: TR('to become ill', '\u75c5\u6c17\u306b\u306a\u3063\u305f', '\ubcd1\uc774 \ub098\ub2e4'),\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u6628\u5929','\u6628\u5929','zu\u00f3ti\u0101n'), W('\u5c31','\u5c31','ji\u00f9'), W('\u75c5\u4e86','\u75c5\u4e86','b\u00ecngle'), '\u3002'],\n        exEn: TR('I already got sick yesterday.', '\u79c1\u306f\u6628\u65e5\u3059\u3067\u306b\u75c5\u6c17\u306b\u306a\u308a\u307e\u3057\u305f\u3002', '\uc800\ub294 \uc5b4\uc81c \uc774\ubbf8 \ubcd1\uc774 \ub0ac\uc5b4\uc694.') },\n      { t: '\u600e\u9ebc\u4e86', s: '\u600e\u4e48\u4e86', p: 'z\u011bnmele', meaning: TR(\"What's wrong?\", '\u3069\u3046\u3057\u305f\u306e?', '\ubb34\uc2a8 \uc77c\uc774\uc5d0\uc694?'),\n        ex: [W('\u4f60','\u4f60','N\u01d0'), WD('\u600e\u9ebc\u4e86','\u600e\u4e48\u4e86','z\u011bnmele','z\u011bnmele'), '\uff1f', W('\u6211','\u6211','W\u01d2'), WD('\u89ba\u5f97','\u89c9\u5f97','ju\u00e9de','ju\u00e9de'), W('\u4e0d','\u4e0d','b\u00f9'), W('\u8212\u670d','\u8212\u670d','sh\u016bf\u00fa'), '\u3002'],\n        exEn: TR(\"What's wrong? I feel uncomfortable.\", '\u3069\u3046\u3057\u305f\u306e?\u6c17\u5206\u304c\u826f\u304f\u306a\u3044\u3067\u3059\u3002', '\ubb34\uc2a8 \uc77c\uc774\uc5d0\uc694? \uc800 \ubab8\uc774 \uc548 \uc88b\uc544\uc694.') },\n      { t: '\u8212\u670d', s: '\u8212\u670d', p: 'sh\u016bf\u00fa', meaning: TR('to be comfortable', '\u5feb\u9069\u3060', '\ud3b8\uc548\ud558\ub2e4'),\n        ex: [W('\u9019\u88e1','\u8fd9\u91cc','Zh\u00e8l\u01d0'), W('\u5f88','\u5f88','h\u011bn'), W('\u8212\u670d','\u8212\u670d','sh\u016bf\u00fa'), '\u3002'],\n        exEn: TR(\"It's very comfortable here.\", '\u3053\u3053\u306f\u3068\u3066\u3082\u5feb\u9069\u3067\u3059\u3002', '\uc5ec\uae30\ub294 \ub9e4\uc6b0 \ud3b8\uc548\ud574\uc694.') },\n      { t: '\u611f\u5192', s: '\u611f\u5192', p: 'g\u01cenm\u00e0o', meaning: TR('to have a cold; cold, flu', '\u98a8\u90aa\u3092\u3072\u304f\uff0f\u98a8\u90aa', '\uac10\uae30\uc5d0 \uac78\ub9ac\ub2e4\/\uac10\uae30'),\n        ex: [W('\u5f1f\u5f1f','\u5f1f\u5f1f','D\u00ecdi'), W('\u611f\u5192','\u611f\u5192','g\u01cenm\u00e0o'), W('\u4e86','\u4e86','le'), '\uff0c', W('\u4e0d\u80fd','\u4e0d\u80fd','b\u00f9n\u00e9ng'), WD('\u4e0a\u5b78','\u4e0a\u5b66','sh\u00e0ngxu\u00e9','sh\u00e0ngxu\u00e9'), '\u3002'],\n        exEn: TR(\"Younger brother has a cold and can't go to school.\", '\u5f1f\u306f\u98a8\u90aa\u3092\u3072\u3044\u3066\u3001\u5b66\u6821\u306b\u884c\u3051\u307e\u305b\u3093\u3002', '\ub0a8\ub3d9\uc0dd\uc774 \uac10\uae30\uc5d0 \uac78\ub824\uc11c \ud559\uad50\uc5d0 \ubabb \uac00\uc694.') },\n      { t: '\u597d\u4e86', s: '\u597d\u4e86', p: 'h\u01ceole', meaning: TR('to be well again, recover', '\u826f\u304f\u306a\u3063\u305f', '\ub098\uc558\ub2e4'),\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u7684','\u7684','de'), W('\u611f\u5192','\u611f\u5192','g\u01cenm\u00e0o'), W('\u597d\u4e86','\u597d\u4e86','h\u01ceole'), WD('\u55ce','\u5417','ma','ma'), '\uff1f'],\n        exEn: TR('Has your cold gotten better?', '\u98a8\u90aa\u306f\u826f\u304f\u306a\u308a\u307e\u3057\u305f\u304b\u3002', '\uac10\uae30\ub294 \ub098\uc558\uc5b4\uc694?') },\n      { t: '\u85e5', s: '\u836f', p: 'y\u00e0o', meaning: TR('medicine', '\u85ac', '\uc57d'),\n        ex: [WD('\u91ab\u751f','\u533b\u751f','Y\u012bsh\u0113ng','y\u012bsh\u0113ng'), W('\u8aaa','\u8bf4','shu\u014d'), W('\u6211','\u6211','w\u01d2'), W('\u4e0d\u5fc5','\u4e0d\u5fc5','b\u00fab\u00ec'), W('\u5403','\u5403','ch\u012b'), WD('\u85e5','\u836f','y\u00e0o','y\u00e0o'), '\u3002'],\n        exEn: TR(\"The doctor said I don't have to take medicine.\", '\u533b\u8005\u306f\u79c1\u304c\u85ac\u3092\u98f2\u3080\u5fc5\u8981\u306f\u306a\u3044\u3068\u8a00\u3044\u307e\u3057\u305f\u3002', '\uc758\uc0ac\uac00 \uc800\ub294 \uc57d\uc744 \uba39\uc744 \ud544\uc694\uac00 \uc5c6\ub2e4\uace0 \ud588\uc5b4\uc694.') }\n    ],\n    'pv2l1-word-list-2': [\n      { t: '\u6c92\u95dc\u4fc2', s: '\u6ca1\u5173\u7cfb', p: 'm\u00e9igu\u0101nxi', meaning: TR(\"no problem, never mind, it doesn't matter\", '\u5927\u4e08\u592b\u3001\u69cb\u308f\u306a\u3044', '\uad1c\ucc2e\uc544\uc694'),\n        ex: [WD('\u5c0d','\u5bf9','Du\u00ec','du\u00ec'), W('\u4e0d','\u4e0d','b\u00f9'), W('\u8d77','\u8d77','q\u01d0'), '\uff0c', W('\u6211','\u6211','w\u01d2'), W('\u4f86','\u6765','l\u00e1i'), W('\u665a\u4e86','\u665a\u4e86','w\u01cenle'), '\u3002', WD('\u6c92\u95dc\u4fc2','\u6ca1\u5173\u7cfb','M\u00e9igu\u0101nxi','m\u00e9igu\u0101nxi'), '\u3002'],\n        exEn: TR(\"I'm sorry, I'm late. No problem.\", '\u3059\u307f\u307e\u305b\u3093\u3001\u9045\u308c\u307e\u3057\u305f\u3002\u5927\u4e08\u592b\u3067\u3059\u3002', '\uc8c4\uc1a1\ud574\uc694, \ub2a6\uc5c8\uc5b4\uc694. \uad1c\ucc2e\uc544\uc694.') },\n      { t: '\u6c92\u4e8b\u5152', s: '\u6ca1\u4e8b\u513f', p: 'm\u00e9ish\u00ecr', meaning: TR(\"never mind, it's nothing, that's all right\", '\u4f55\u3067\u3082\u306a\u3044\u3001\u5927\u4e08\u592b', '\uc544\ubb34 \uc77c\ub3c4 \uc544\ub2c8\uc5d0\uc694'),\n        ex: [WD('\u6c92\u4e8b\u5152','\u6ca1\u4e8b\u513f','M\u00e9ish\u00ecr','m\u00e9ish\u00ecr'), '\uff0c', W('\u6211','\u6211','w\u01d2'), W('\u5f88','\u5f88','h\u011bn'), W('\u597d','\u597d','h\u01ceo'), '\u3002'],\n        exEn: TR(\"It's nothing, I'm fine.\", '\u4f55\u3067\u3082\u306a\u3044\u3067\u3059\u3001\u5143\u6c17\u3067\u3059\u3002', '\uc544\ubb34 \uc77c\ub3c4 \uc544\ub2c8\uc5d0\uc694, \uc800\ub294 \uc798 \uc9c0\ub0b4\uc694.') },\n      { t: '\u4e0d\u5fc5', s: '\u4e0d\u5fc5', p: 'b\u00fab\u00ec', meaning: TR(\"don't have to, need not\", '\uff5e\u3059\u308b\u5fc5\u8981\u306f\u306a\u3044', '~\ud560 \ud544\uc694 \uc5c6\ub2e4'),\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u4e0d\u5fc5','\u4e0d\u5fc5','b\u00fab\u00ec'), W('\u6bcf\u5929','\u6bcf\u5929','m\u011biti\u0101n'), W('\u5403','\u5403','ch\u012b'), WD('\u85e5','\u836f','y\u00e0o','y\u00e0o'), '\u3002'],\n        exEn: TR(\"You don't have to take medicine every day.\", '\u6bce\u65e5\u85ac\u3092\u98f2\u3080\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002', '\ub9e4\uc77c \uc57d\uc744 \uba39\uc744 \ud544\uc694\ub294 \uc5c6\uc5b4\uc694.') },\n      { t: '\u5c31', s: '\u5c31', p: 'ji\u00f9', meaning: TR('(indicating immediacy)', '\u3059\u3050\u306b(\u5373\u6642\u6027\u3092\u8868\u3059)', '\uace7(\uc989\uc2dc\uc131\uc744 \ub098\ud0c0\ub0c4)'),\n        ex: [WD('\u91ab\u751f','\u533b\u751f','Y\u012bsh\u0113ng','y\u012bsh\u0113ng'), W('\u8aaa','\u8bf4','shu\u014d'), W('\u4f11\u606f','\u4f11\u606f','xi\u016bxi'), WD('\u5e7e','\u51e0','j\u01d0','j\u01d0'), W('\u5929','\u5929','ti\u0101n'), W('\u5c31','\u5c31','ji\u00f9'), W('\u597d\u4e86','\u597d\u4e86','h\u01ceole'), '\u3002'],\n        exEn: TR('The doctor said after resting a few days it will be fine.', '\u533b\u8005\u306f\u6570\u65e5\u4f11\u3081\u3070\u3059\u3050\u306b\u826f\u304f\u306a\u308b\u3068\u8a00\u3044\u307e\u3057\u305f\u3002', '\uc758\uc0ac\uac00 \uba70\uce60 \uc26c\uba74 \uace7 \ub098\uc744 \uac70\ub77c\uace0 \ud588\uc5b4\uc694.') },\n      { t: '\u5f97', s: '\u5f97', p: 'd\u011bi', meaning: TR('must, have to', '\uff5e\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044', '~\ud574\uc57c \ud55c\ub2e4'),\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u611f\u5192','\u611f\u5192','g\u01cenm\u00e0o'), W('\u4e86','\u4e86','le'), '\uff0c', W('\u5f97','\u5f97','d\u011bi'), W('\u591a','\u591a','du\u014d'), W('\u559d','\u559d','h\u0113'), W('\u6c34','\u6c34','shu\u01d0'), '\u3002'],\n        exEn: TR('You have a cold, you must drink more water.', '\u98a8\u90aa\u3092\u3072\u3044\u305f\u304b\u3089\u3001\u3082\u3063\u3068\u6c34\u3092\u98f2\u307e\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002', '\uac10\uae30\uc5d0 \uac78\ub838\uc73c\ub2c8\uae4c \ubb3c\uc744 \ub9ce\uc774 \ub9c8\uc154\uc57c \ud574\uc694.') }\n    ],\n    'pv2l1-word-list-3': [\n      { t: '\u9031\u672b', s: '\u5468\u672b', p: 'zh\u014dum\u00f2', meaning: TR('weekend', '\u9031\u672b', '\uc8fc\ub9d0'),\n        ex: [WD('\u9019','\u8fd9','Zh\u00e8','zh\u00e8'), WD('\u500b','\u4e2a','ge','ge'), WD('\u9031\u672b','\u5468\u672b','zh\u014dum\u00f2','zh\u014dum\u00f2'), W('\u4f60','\u4f60','n\u01d0'), W('\u8981','\u8981','y\u00e0o'), W('\u505a','\u505a','zu\u00f2'), WD('\u4ec0\u9ebc','\u4ec0\u4e48','sh\u00e9nme','sh\u00e9nme'), '\uff1f'],\n        exEn: TR('What are you going to do this weekend?', '\u3053\u306e\u9031\u672b\u306f\u4f55\u3092\u3057\u307e\u3059\u304b\u3002', '\uc774\ubc88 \uc8fc\ub9d0\uc5d0 \ubb50 \ud560 \uac70\uc608\uc694?') },\n      { t: '\u79ae\u62dc', s: '\u793c\u62dc', p: 'l\u01d0b\u00e0i', meaning: TR('week', '\u9031', '\uc8fc(\uc77c\uc8fc\uc77c)'),\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u4e0a','\u4e0a','sh\u00e0ng'), WD('\u500b','\u4e2a','ge','ge'), WD('\u79ae\u62dc','\u793c\u62dc','l\u01d0b\u00e0i','l\u01d0b\u00e0i'), W('\u751f\u75c5','\u751f\u75c5','sh\u0113ngb\u00ecng'), W('\u4e86','\u4e86','le'), '\u3002'],\n        exEn: TR('I got sick last week.', '\u79c1\u306f\u5148\u9031\u75c5\u6c17\u306b\u306a\u308a\u307e\u3057\u305f\u3002', '\uc800\ub294 \uc9c0\ub09c\uc8fc\uc5d0 \ubcd1\uc774 \ub0ac\uc5b4\uc694.') },\n      { t: '\u79ae\u62dc\u5929', s: '\u793c\u62dc\u5929', p: 'l\u01d0b\u00e0iti\u0101n', meaning: TR('Sunday', '\u65e5\u66dc\u65e5', '\uc77c\uc694\uc77c'),\n        ex: [WD('\u79ae\u62dc\u5929','\u793c\u62dc\u5929','L\u01d0b\u00e0iti\u0101n','l\u01d0b\u00e0iti\u0101n'), W('\u6211','\u6211','w\u01d2'), W('\u4e0d','\u4e0d','b\u00f9'), W('\u7528','\u7528','y\u00f2ng'), W('\u4e0a\u73ed','\u4e0a\u73ed','sh\u00e0ngb\u0101n'), '\u3002'],\n        exEn: TR(\"I don't have to work on Sunday.\", '\u65e5\u66dc\u65e5\u306f\u4ed5\u4e8b\u306b\u884c\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002', '\uc77c\uc694\uc77c\uc5d0\ub294 \ucd9c\uadfc\ud560 \ud544\uc694\uac00 \uc5c6\uc5b4\uc694.') },\n      { t: '\u5047', s: '\u5047', p: 'ji\u00e0', meaning: TR('vacation, holiday', '\u4f11\u307f', '\ud734\uac00'),\n        ex: [W('\u6211\u5011','\u6211\u4eec','W\u01d2men'), WD('\u5b78\u6821','\u5b66\u6821','xu\u00e9xi\u00e0o','xu\u00e9xi\u00e0o'), W('\u653e','\u653e','f\u00e0ng'), WD('\u5169','\u4e24','li\u01ceng','li\u01ceng'), WD('\u500b','\u4e2a','ge','ge'), WD('\u79ae\u62dc','\u793c\u62dc','l\u01d0b\u00e0i','l\u01d0b\u00e0i'), W('\u7684','\u7684','de'), W('\u5047','\u5047','ji\u00e0'), '\u3002'],\n        exEn: TR('Our school has two weeks of vacation.', '\u79c1\u305f\u3061\u306e\u5b66\u6821\u306f2\u9031\u9593\u306e\u4f11\u307f\u304c\u3042\u308a\u307e\u3059\u3002', '\uc800\ud76c \ud559\uad50\ub294 2\uc8fc \ubc29\ud559\uc774 \uc788\uc5b4\uc694.') },\n      { t: '\u4e5f\u8a31', s: '\u4e5f\u8bb8', p: 'y\u011bx\u01d4', meaning: TR('perhaps, maybe, might', '\u3082\u3057\u304b\u3057\u305f\u3089', '\uc544\ub9c8\ub3c4'),\n        ex: [W('\u6211','\u6211','W\u01d2'), WD('\u4e5f\u8a31','\u4e5f\u8bb8','y\u011bx\u01d4','y\u011bx\u01d4'), W('\u660e\u5929','\u660e\u5929','m\u00edngti\u0101n'), W('\u53bb','\u53bb','q\u00f9'), W('\u770b','\u770b','k\u00e0n'), WD('\u91ab\u751f','\u533b\u751f','y\u012bsh\u0113ng','y\u012bsh\u0113ng'), '\u3002'],\n        exEn: TR('I might go see the doctor tomorrow.', '\u3082\u3057\u304b\u3057\u305f\u3089\u660e\u65e5\u533b\u8005\u306b\u884c\u304f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002', '\uc800\ub294 \uc544\ub9c8 \ub0b4\uc77c \ubcd1\uc6d0\uc5d0 \uac08 \uac83 \uac19\uc544\uc694.') },\n      { t: '\u8a31', s: '\u8bb8', p: 'x\u01d4', meaning: TR('to allow, to permit', '\u8a31\u3059', '\ud5c8\ub77d\ud558\ub2e4'),\n        ex: [WD('\u5abd\u5abd','\u5988\u5988','M\u0101ma','m\u0101ma'), W('\u4e0d','\u4e0d','b\u00f9'), WD('\u8a31','\u8bb8','x\u01d4','x\u01d4'), W('\u6211','\u6211','w\u01d2'), W('\u81ea\u5df1','\u81ea\u5df1','z\u00ecj\u01d0'), W('\u53bb','\u53bb','q\u00f9'), W('\u6ed1\u96ea','\u6ed1\u96ea','hu\u00e1xu\u011b'), '\u3002'],\n        exEn: TR('Mom does not allow me to go skiing alone.', '\u304a\u6bcd\u3055\u3093\u306f\u79c1\u304c\u4e00\u4eba\u3067\u30b9\u30ad\u30fc\u306b\u884c\u304f\u3053\u3068\u3092\u8a31\u3057\u307e\u305b\u3093\u3002', '\uc5c4\ub9c8\ub294 \uc81c\uac00 \ud63c\uc790 \uc2a4\ud0a4 \ud0c0\ub7ec \uac00\ub294 \uac78 \ud5c8\ub77d\ud558\uc9c0 \uc54a\uc544\uc694.') },\n      { t: '\u53ef\u80fd', s: '\u53ef\u80fd', p: 'k\u011bn\u00e9ng', meaning: TR('possibly \/ to be possible \/ possibility', '\u305f\u3076\u3093\uff0f\u53ef\u80fd\u6027\u304c\u3042\u308b', '\uc544\ub9c8\/\uac00\ub2a5\ud558\ub2e4'),\n        ex: [W('\u4ed6','\u4ed6','T\u0101'), W('\u53ef\u80fd','\u53ef\u80fd','k\u011bn\u00e9ng'), W('\u611f\u5192','\u611f\u5192','g\u01cenm\u00e0o'), W('\u4e86','\u4e86','le'), '\u3002'],\n        exEn: TR('He possibly has a cold.', '\u5f7c\u306f\u305f\u3076\u3093\u98a8\u90aa\u3092\u3072\u3044\u3066\u3044\u307e\u3059\u3002', '\uadf8\ub294 \uc544\ub9c8 \uac10\uae30\uc5d0 \uac78\ub9b0 \uac83 \uac19\uc544\uc694.') }\n    ],\n    'pv2l1-word-list-4': [\n      { t: '\u6253\u7b97', s: '\u6253\u7b97', p: 'd\u01cesu\u00e0n', meaning: TR('to plan', '\u8a08\u753b\u3059\u308b\u3001\uff5e\u3059\u308b\u3064\u3082\u308a\u3060', '\uacc4\ud68d\ud558\ub2e4'),\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u653e','\u653e','f\u00e0ng'), W('\u5047','\u5047','ji\u00e0'), W('\u6253\u7b97','\u6253\u7b97','d\u01cesu\u00e0n'), W('\u505a','\u505a','zu\u00f2'), WD('\u4ec0\u9ebc','\u4ec0\u4e48','sh\u00e9nme','sh\u00e9nme'), '\uff1f'],\n        exEn: TR('What do you plan to do during the vacation?', '\u4f11\u307f\u306f\u4f55\u3092\u3059\u308b\u3064\u3082\u308a\u3067\u3059\u304b\u3002', '\ud734\uac00 \ub54c \ubb50 \ud560 \uacc4\ud68d\uc774\uc5d0\uc694?') },\n      { t: '\u6253', s: '\u6253', p: 'd\u01ce', meaning: TR('to hit, to beat, to strike', '\u6253\u3064', '\uce58\ub2e4'),\n        ex: [W('\u4ed6','\u4ed6','T\u0101'), W('\u6253','\u6253','d\u01ce'), W('\u7403','\u7403','qi\u00fa'), W('\u6253','\u6253','d\u01ce'), W('\u5f97','\u5f97','de'), W('\u5f88','\u5f88','h\u011bn'), W('\u597d','\u597d','h\u01ceo'), '\u3002'],\n        exEn: TR('He plays ball very well.', '\u5f7c\u306f\u30dc\u30fc\u30eb\u3092\u3068\u3066\u3082\u4e0a\u624b\u306b\u6253\u3061\u307e\u3059\u3002', '\uadf8\ub294 \uacf5\uc744 \ub9e4\uc6b0 \uc798 \uccd0\uc694.') },\n      { t: '\u7b97', s: '\u7b97', p: 'su\u00e0n', meaning: TR('to calculate', '\u8a08\u7b97\u3059\u308b', '\uacc4\uc0b0\ud558\ub2e4'),\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u7b97','\u7b97','su\u00e0n'), W('\u7b97','\u7b97','suan'), W('\u4e00\u5171','\u4e00\u5171','y\u00edg\u00f2ng'), W('\u591a\u5c11','\u591a\u5c11','du\u014dsh\u01ceo'), WD('\u9322','\u94b1','qi\u00e1n','qi\u00e1n'), '\u3002'],\n        exEn: TR('Calculate how much it is altogether.', '\u5168\u90e8\u3067\u3044\u304f\u3089\u304b\u8a08\u7b97\u3057\u3066\u304f\u3060\u3055\u3044\u3002', '\uc804\ubd80 \uc5bc\ub9c8\uc778\uc9c0 \uacc4\uc0b0\ud574 \ubcf4\uc138\uc694.') },\n      { t: '\u9109\u4e0b', s: '\u4e61\u4e0b', p: 'xi\u0101ngxi\u00e0', meaning: TR('countryside', '\u7530\u820e', '\uc2dc\uace8'),\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u670b\u53cb','\u670b\u53cb','p\u00e9ngyou'), W('\u5bb6','\u5bb6','ji\u0101'), W('\u5728','\u5728','z\u00e0i'), WD('\u9109\u4e0b','\u4e61\u4e0b','xi\u0101ngxi\u00e0','xi\u0101ngxi\u00e0'), '\u3002'],\n        exEn: TR(\"My friend's home is in the countryside.\", '\u79c1\u306e\u53cb\u9054\u306e\u5bb6\u306f\u7530\u820e\u306b\u3042\u308a\u307e\u3059\u3002', '\uc81c \uce5c\uad6c \uc9d1\uc740 \uc2dc\uace8\uc5d0 \uc788\uc5b4\uc694.') },\n      { t: '\u5c71', s: '\u5c71', p: 'sh\u0101n', meaning: TR('mountain', '\u5c71', '\uc0b0'),\n        ex: [W('\u6211\u5011','\u6211\u4eec','W\u01d2men'), W('\u6253\u7b97','\u6253\u7b97','d\u01cesu\u00e0n'), W('\u5230','\u5230','d\u00e0o'), W('\u5c71','\u5c71','sh\u0101n'), W('\u4e0a','\u4e0a','sh\u00e0ng'), W('\u53bb','\u53bb','q\u00f9'), W('\u73a9\u5152','\u73a9\u513f','w\u00e1nr'), '\u3002'],\n        exEn: TR('We plan to go up the mountain to have fun.', '\u79c1\u305f\u3061\u306f\u5c71\u306b\u904a\u3073\u306b\u884c\u304f\u3064\u3082\u308a\u3067\u3059\u3002', '\uc800\ud76c\ub294 \uc0b0\uc5d0 \ub180\ub7ec \uac08 \uacc4\ud68d\uc774\uc5d0\uc694.') },\n      { t: '\u6ed1\u96ea', s: '\u6ed1\u96ea', p: 'hu\u00e1xu\u011b', meaning: TR('to ski', '\u30b9\u30ad\u30fc\u3092\u3059\u308b', '\uc2a4\ud0a4\ub97c \ud0c0\ub2e4'),\n        ex: [W('\u51ac\u5929','\u51ac\u5929','D\u014dngti\u0101n'), W('\u6211','\u6211','w\u01d2'), W('\u5e38\u5e38','\u5e38\u5e38','ch\u00e1ngch\u00e1ng'), W('\u53bb','\u53bb','q\u00f9'), W('\u6ed1\u96ea','\u6ed1\u96ea','hu\u00e1xu\u011b'), '\u3002'],\n        exEn: TR('In winter I often go skiing.', '\u51ac\u306f\u79c1\u306f\u3088\u304f\u30b9\u30ad\u30fc\u3092\u3057\u306b\u884c\u304d\u307e\u3059\u3002', '\uaca8\uc6b8\uc5d0 \uc800\ub294 \uc790\uc8fc \uc2a4\ud0a4\ub97c \ud0c0\ub7ec \uac00\uc694.') },\n      { t: '\u96ea', s: '\u96ea', p: 'xu\u011b', meaning: TR('snow', '\u96ea', '\ub208'),\n        ex: [W('\u5c71','\u5c71','Sh\u0101n'), W('\u4e0a','\u4e0a','sh\u00e0ng'), W('\u7684','\u7684','de'), W('\u96ea','\u96ea','xu\u011b'), W('\u5f88','\u5f88','h\u011bn'), W('\u591a','\u591a','du\u014d'), '\u3002'],\n        exEn: TR(\"There's a lot of snow on the mountain.\", '\u5c71\u306b\u306f\u305f\u304f\u3055\u3093\u306e\u96ea\u304c\u3042\u308a\u307e\u3059\u3002', '\uc0b0\uc5d0\ub294 \ub208\uc774 \ub9ce\uc544\uc694.') },\n      { t: '\u4e0b\u96ea', s: '\u4e0b\u96ea', p: 'xi\u00e0xu\u011b', meaning: TR('to snow', '\u96ea\u304c\u964d\u308b', '\ub208\uc774 \uc624\ub2e4'),\n        ex: [W('\u6628\u5929','\u6628\u5929','Zu\u00f3ti\u0101n'), W('\u665a\u4e0a','\u665a\u4e0a','w\u01censh\u00e0ng'), W('\u4e0b\u96ea','\u4e0b\u96ea','xi\u00e0xu\u011b'), W('\u4e86','\u4e86','le'), '\u3002'],\n        exEn: TR('It snowed last night.', '\u6628\u591c\u96ea\u304c\u964d\u308a\u307e\u3057\u305f\u3002', '\uc5b4\uc82f\ubc24\uc5d0 \ub208\uc774 \uc654\uc5b4\uc694.') }\n    ],\n    'pv2l1-word-list-5': [\n      { t: '\u91ab\u751f', s: '\u533b\u751f', p: 'y\u012bsh\u0113ng', meaning: TR('doctor', '\u533b\u8005', '\uc758\uc0ac'),\n        ex: [W('\u5979','\u5979','T\u0101'), W('\u60f3','\u60f3','xi\u01ceng'), WD('\u7576','\u5f53','d\u0101ng','d\u0101ng'), WD('\u91ab\u751f','\u533b\u751f','y\u012bsh\u0113ng','y\u012bsh\u0113ng'), '\u3002'],\n        exEn: TR('She wants to become a doctor.', '\u5f7c\u5973\u306f\u533b\u8005\u306b\u306a\u308a\u305f\u3044\u3067\u3059\u3002', '\uadf8\ub140\ub294 \uc758\uc0ac\uac00 \ub418\uace0 \uc2f6\uc5b4\ud574\uc694.') },\n      { t: '\u91ab', s: '\u533b', p: 'y\u012b', meaning: TR('to cure, to treat (an illness)', '\u6cbb\u7642\u3059\u308b', '\uce58\ub8cc\ud558\ub2e4'),\n        ex: [WD('\u9019','\u8fd9','Zh\u00e8','zh\u00e8'), WD('\u7a2e','\u79cd','zh\u01d2ng','zh\u01d2ng'), W('\u75c5','\u75c5','b\u00ecng'), W('\u4e0d','\u4e0d','b\u00f9'), W('\u5bb9\u6613','\u5bb9\u6613','r\u00f3ngy\u00ec'), WD('\u91ab','\u533b','y\u012b','y\u012b'), '\u3002'],\n        exEn: TR(\"This kind of illness isn't easy to cure.\", '\u3053\u306e\u7a2e\u985e\u306e\u75c5\u6c17\u306f\u6cbb\u7642\u3057\u306b\u304f\u3044\u3067\u3059\u3002', '\uc774\ub7f0 \ubcd1\uc740 \uce58\ub8cc\ud558\uae30 \uc27d\uc9c0 \uc54a\uc544\uc694.') },\n      { t: '\u7279\u5225', s: '\u7279\u522b', p: 't\u00e8bi\u00e9', meaning: TR('especially; to be special', '\u7279\u306b\uff0f\u7279\u5225\u3060', '\ud2b9\ud788\/\ud2b9\ubcc4\ud558\ub2e4'),\n        ex: [W('\u4eca\u5929','\u4eca\u5929','J\u012bnti\u0101n'), WD('\u5929\u6c23','\u5929\u6c14','ti\u0101nq\u00ec','ti\u0101nq\u00ec'), WD('\u7279\u5225','\u7279\u522b','t\u00e8bi\u00e9','t\u00e8bi\u00e9'), W('\u51b7','\u51b7','l\u011bng'), '\u3002'],\n        exEn: TR('Today the weather is especially cold.', '\u4eca\u65e5\u306f\u5929\u6c17\u304c\u7279\u306b\u5bd2\u3044\u3067\u3059\u3002', '\uc624\ub298 \ub0a0\uc528\uac00 \ud2b9\ud788 \ucd94\uc6cc\uc694.') },\n      { t: '\u5c0f\u5fc3', s: '\u5c0f\u5fc3', p: 'xi\u01ceox\u012bn', meaning: TR('to be careful', '\u6c17\u3092\u3064\u3051\u308b', '\uc870\uc2ec\ud558\ub2e4'),\n        ex: [W('\u4e0b\u96ea','\u4e0b\u96ea','Xi\u00e0xu\u011b'), W('\u4e86','\u4e86','le'), '\uff0c', WD('\u958b','\u5f00','k\u0101i','k\u0101i'), W('\u8eca','\u8f66','ch\u0113'), W('\u8981','\u8981','y\u00e0o'), W('\u5c0f\u5fc3','\u5c0f\u5fc3','xi\u01ceox\u012bn'), '\u3002'],\n        exEn: TR(\"It's snowing, you need to drive carefully.\", '\u96ea\u304c\u964d\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u904b\u8ee2\u306f\u6c17\u3092\u3064\u3051\u3066\u304f\u3060\u3055\u3044\u3002', '\ub208\uc774 \uc624\ub2c8\uae4c \uc6b4\uc804 \uc870\uc2ec\ud574\uc57c \ud574\uc694.') },\n      { t: '\u5fc3', s: '\u5fc3', p: 'x\u012bn', meaning: TR('heart', '\u5fc3', '\ub9c8\uc74c'),\n        ex: [W('\u4ed6','\u4ed6','T\u0101'), W('\u5fc3','\u5fc3','x\u012bn'), WD('\u88e1','\u91cc','l\u01d0','l\u01d0'), W('\u5f88','\u5f88','h\u011bn'), W('\u4e0d','\u4e0d','b\u00f9'), W('\u8212\u670d','\u8212\u670d','sh\u016bf\u00fa'), '\u3002'],\n        exEn: TR('He feels bad at heart.', '\u5f7c\u306f\u5fc3\u306e\u4e2d\u3067\u6c17\u5206\u304c\u826f\u304f\u306a\u3044\u3067\u3059\u3002', '\uadf8\ub294 \ub9c8\uc74c\uc774 \ubd88\ud3b8\ud574\uc694.') },\n      { t: '\u653e\u5fc3', s: '\u653e\u5fc3', p: 'f\u00e0ngx\u012bn', meaning: TR('to be at ease, not worry', '\u5b89\u5fc3\u3059\u308b', '\uc548\uc2ec\ud558\ub2e4'),\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u653e\u5fc3','\u653e\u5fc3','f\u00e0ngx\u012bn'), '\uff0c', W('\u6211','\u6211','w\u01d2'), WD('\u6703','\u4f1a','hu\u00ec','hu\u00ec'), W('\u5c0f\u5fc3','\u5c0f\u5fc3','xi\u01ceox\u012bn'), WD('\u958b','\u5f00','k\u0101i','k\u0101i'), W('\u8eca','\u8f66','ch\u0113'), '\u3002'],\n        exEn: TR(\"Don't worry, I'll drive carefully.\", '\u5b89\u5fc3\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u79c1\u306f\u904b\u8ee2\u306b\u6c17\u3092\u3064\u3051\u307e\u3059\u3002', '\uc548\uc2ec\ud558\uc138\uc694, \uc800\ub294 \uc870\uc2ec\ud574\uc11c \uc6b4\uc804\ud560\uac8c\uc694.') },\n      { t: '\u653e', s: '\u653e', p: 'f\u00e0ng', meaning: TR('to put, to release', '\u7f6e\u304f', '\ub193\ub2e4'),\n        ex: [WD('\u85e5','\u836f','Y\u00e0o','y\u00e0o'), W('\u653e','\u653e','f\u00e0ng'), W('\u5728','\u5728','z\u00e0i'), W('\u684c\u5b50','\u684c\u5b50','zhu\u014dzi'), W('\u4e0a','\u4e0a','sh\u00e0ng'), '\u3002'],\n        exEn: TR('The medicine is placed on the table.', '\u85ac\u306f\u30c6\u30fc\u30d6\u30eb\u306e\u4e0a\u306b\u7f6e\u3044\u3066\u3042\u308a\u307e\u3059\u3002', '\uc57d\uc740 \ud0c1\uc790 \uc704\uc5d0 \ub193\uc5ec \uc788\uc5b4\uc694.') },\n      { t: '\u653e\u5047', s: '\u653e\u5047', p: 'f\u00e0ngji\u00e0', meaning: TR('to have a holiday, vacation', '\u4f11\u307f\u306b\u306a\u308b', '\ubc29\ud559\ud558\ub2e4\/\ud734\uac00\ub97c \uc5bb\ub2e4'),\n        ex: [W('\u6211\u5011','\u6211\u4eec','W\u01d2men'), WD('\u5b78\u6821','\u5b66\u6821','xu\u00e9xi\u00e0o','xu\u00e9xi\u00e0o'), W('\u4e0b','\u4e0b','xi\u00e0'), WD('\u500b','\u4e2a','ge','ge'), WD('\u79ae\u62dc','\u793c\u62dc','l\u01d0b\u00e0i','l\u01d0b\u00e0i'), W('\u653e\u5047','\u653e\u5047','f\u00e0ngji\u00e0'), '\u3002'],\n        exEn: TR('Our school has vacation next week.', '\u79c1\u305f\u3061\u306e\u5b66\u6821\u306f\u6765\u9031\u4f11\u307f\u306b\u306a\u308a\u307e\u3059\u3002', '\uc800\ud76c \ud559\uad50\ub294 \ub2e4\uc74c \uc8fc\uc5d0 \ubc29\ud559\ud574\uc694.') },\n      { t: '\u58de\u4e86', s: '\u574f\u4e86', p: 'hu\u00e0ile', meaning: TR('to be broken, ruined, out of order, spoiled', '\u58ca\u308c\u305f', '\uace0\uc7a5 \ub098\ub2e4'),\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u7684','\u7684','de'), WD('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b','sh\u01d2uj\u012b'), WD('\u58de\u4e86','\u574f\u4e86','hu\u00e0ile','hu\u00e0ile'), '\u3002'],\n        exEn: TR('My phone is broken.', '\u79c1\u306e\u643a\u5e2f\u96fb\u8a71\u304c\u58ca\u308c\u307e\u3057\u305f\u3002', '\uc81c \ud734\ub300\ud3f0\uc774 \uace0\uc7a5 \ub0ac\uc5b4\uc694.') },\n      { t: '\u58de', s: '\u574f', p: 'hu\u00e0i', meaning: TR('to be bad', '\u60aa\u3044', '\ub098\uc058\ub2e4'),\n        ex: [W('\u4ed6','\u4ed6','T\u0101'), W('\u662f','\u662f','sh\u00ec'), WD('\u58de','\u574f','hu\u00e0i','hu\u00e0i'), W('\u4eba','\u4eba','r\u00e9n'), WD('\u55ce','\u5417','ma','ma'), '\uff1f'],\n        exEn: TR('Is he a bad person?', '\u5f7c\u306f\u60aa\u3044\u4eba\u3067\u3059\u304b\u3002', '\uadf8\ub294 \ub098\uc05c \uc0ac\ub78c\uc774\uc5d0\uc694?') },\n      { t: '\u5fd8', s: '\u5fd8', p: 'w\u00e0ng', meaning: TR('to forget', '\u5fd8\u308c\u308b', '\uc78a\ub2e4'),\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u5fd8','\u5fd8','w\u00e0ng'), W('\u4e86','\u4e86','le'), W('\u5e36','\u5e26','d\u00e0i'), WD('\u85e5','\u836f','y\u00e0o','y\u00e0o'), '\u3002'],\n        exEn: TR('I forgot to bring the medicine.', '\u79c1\u306f\u85ac\u3092\u6301\u3063\u3066\u304f\u308b\u306e\u3092\u5fd8\u308c\u307e\u3057\u305f\u3002', '\uc800\ub294 \uc57d\uc744 \uac00\uc838\uc624\ub294 \uac78 \uc78a\uc5c8\uc5b4\uc694.') }\n    ]\n  };\n\n  var DIALOGUE = [\n    { speakerT: '\u9673\u5c0f\u59d0', speakerS: '\u9648\u5c0f\u59d0',\n      tokens: [W('\u4f60','\u4f60','N\u01d0'), WD('\u600e\u9ebc\u4e86','\u600e\u4e48\u4e86','z\u011bnmele','z\u011bnmele'), '\uff1f'],\n      en: TR(\"What's wrong?\", '\u3069\u3046\u3057\u305f\u306e?', '\ubb34\uc2a8 \uc77c\uc774\uc5d0\uc694?') },\n    { speakerT: '\u6797\u5148\u751f', speakerS: '\u6797\u5148\u751f',\n      tokens: [W('\u6211','\u6211','W\u01d2'), W('\u4e0a','\u4e0a','sh\u00e0ng'), WD('\u500b','\u4e2a','ge','ge'), WD('\u79ae\u62dc','\u793c\u62dc','l\u01d0b\u00e0i','l\u01d0b\u00e0i'), W('\u611f\u5192','\u611f\u5192','g\u01cenm\u00e0o'), W('\u4e86','\u4e86','le'), '\uff0c', W('\u4f11\u606f','\u4f11\u606f','xi\u016bxi'), W('\u4e86','\u4e86','le'), W('\u597d','\u597d','h\u01ceo'), WD('\u5e7e','\u51e0','j\u01d0','j\u01d0'), W('\u5929','\u5929','ti\u0101n'), '\u3002'],\n      en: TR('I got a cold last week, and rested for several days.', '\u5148\u9031\u98a8\u90aa\u3092\u3072\u3044\u3066\u3001\u6570\u65e5\u4f11\u307f\u307e\u3057\u305f\u3002', '\uc9c0\ub09c\uc8fc\uc5d0 \uac10\uae30\uc5d0 \uac78\ub824\uc11c \uba70\uce60 \uc26c\uc5c8\uc5b4\uc694.') },\n    { speakerT: '\u9673\u5c0f\u59d0', speakerS: '\u9648\u5c0f\u59d0',\n      tokens: [W('\u770b','\u770b','K\u00e0n'), WD('\u91ab\u751f','\u533b\u751f','y\u012bsh\u0113ng','y\u012bsh\u0113ng'), W('\u4e86','\u4e86','le'), WD('\u55ce','\u5417','ma','ma'), '\uff1f'],\n      en: TR('Did you see a doctor?', '\u533b\u8005\u306b\u8a3a\u3066\u3082\u3089\u3044\u307e\u3057\u305f\u304b\u3002', '\ubcd1\uc6d0\uc5d0 \uac14\uc5c8\uc5b4\uc694?') },\n    { speakerT: '\u6797\u5148\u751f', speakerS: '\u6797\u5148\u751f',\n      tokens: [W('\u770b','\u770b','K\u00e0n'), W('\u4e86','\u4e86','le'), '\uff0c', WD('\u91ab\u751f','\u533b\u751f','Y\u012bsh\u0113ng','y\u012bsh\u0113ng'), W('\u8aaa','\u8bf4','shu\u014d'), WD('\u6c92\u95dc\u4fc2','\u6ca1\u5173\u7cfb','m\u00e9igu\u0101nxi','m\u00e9igu\u0101nxi'), '\uff0c', W('\u4e0d\u5fc5','\u4e0d\u5fc5','b\u00fab\u00ec'), W('\u5403','\u5403','ch\u012b'), WD('\u85e5','\u836f','y\u00e0o','y\u00e0o'), '\uff0c', W('\u591a','\u591a','du\u014d'), W('\u559d','\u559d','h\u0113'), W('\u6c34','\u6c34','shu\u01d0'), '\uff0c', W('\u4f11\u606f','\u4f11\u606f','xi\u016bxi'), WD('\u5e7e','\u51e0','j\u01d0','j\u01d0'), W('\u5929','\u5929','ti\u0101n'), W('\u5c31','\u5c31','ji\u00f9'), W('\u597d\u4e86','\u597d\u4e86','h\u01ceole'), '\u3002'],\n      en: TR(\"Yes. The doctor said it doesn't matter, I don't have to take medicine, just drink more water and rest a few days and I'll be fine.\", '\u306f\u3044\u3001\u533b\u8005\u306f\u5927\u4e08\u592b\u3060\u3068\u8a00\u3044\u307e\u3057\u305f\u3001\u85ac\u3092\u98f2\u3080\u5fc5\u8981\u306f\u306a\u304f\u3001\u6c34\u3092\u305f\u304f\u3055\u3093\u98f2\u3093\u3067\u6570\u65e5\u4f11\u3081\u3070\u826f\u304f\u306a\u308b\u3068\u3002', '\ub124, \uc758\uc0ac\uac00 \uad1c\ucc2e\ub2e4\uace0 \ud588\uace0, \uc57d\uc740 \uc548 \uba39\uc5b4\ub3c4 \ub418\uace0, \ubb3c\uc744 \ub9ce\uc774 \ub9c8\uc2dc\uace0 \uba70\uce60 \uc26c\uba74 \ub098\uc744 \uac70\ub77c\uace0 \ud588\uc5b4\uc694.') },\n    { speakerT: '\u9673\u5c0f\u59d0', speakerS: '\u9648\u5c0f\u59d0',\n      tokens: [W('\u73fe\u5728','\u73b0\u5728','Xi\u00e0nz\u00e0i'), W('\u597d\u4e86','\u597d\u4e86','h\u01ceole'), WD('\u55ce','\u5417','ma','ma'), '\uff1f'],\n      en: TR('Are you better now?', '\u4eca\u306f\u826f\u304f\u306a\u308a\u307e\u3057\u305f\u304b\u3002', '\uc9c0\uae08\uc740 \uc88b\uc544\uc84c\uc5b4\uc694?') },\n    { speakerT: '\u6797\u5148\u751f', speakerS: '\u6797\u5148\u751f',\n      tokens: [W('\u5dee\u4e0d\u591a','\u5dee\u4e0d\u591a','Ch\u00e0b\u00f9du\u014d'), W('\u597d\u4e86','\u597d\u4e86','h\u01ceole'), '\uff0c', W('\u8b1d\u8b1d','\u8c22\u8c22','xi\u00e8xie'), '\u3002'],\n      en: TR('Almost better, thanks.', '\u307b\u3068\u3093\u3069\u826f\u304f\u306a\u308a\u307e\u3057\u305f\u3001\u3042\u308a\u304c\u3068\u3046\u3002', '\uac70\uc758 \ub098\uc558\uc5b4\uc694, \uace0\ub9c8\uc6cc\uc694.') },\n    { speakerT: '\u9673\u5c0f\u59d0', speakerS: '\u9648\u5c0f\u59d0',\n      tokens: [WD('\u9019','\u8fd9','Zh\u00e8','zh\u00e8'), WD('\u500b','\u4e2a','ge','ge'), WD('\u9031\u672b','\u5468\u672b','zh\u014dum\u00f2','zh\u014dum\u00f2'), W('\u4f60','\u4f60','n\u01d0'), W('\u6253\u7b97','\u6253\u7b97','d\u01cesu\u00e0n'), W('\u505a','\u505a','zu\u00f2'), WD('\u4ec0\u9ebc','\u4ec0\u4e48','sh\u00e9nme','sh\u00e9nme'), '\uff1f'],\n      en: TR('What are you planning to do this weekend?', '\u3053\u306e\u9031\u672b\u306f\u4f55\u3092\u3059\u308b\u3064\u3082\u308a\u3067\u3059\u304b\u3002', '\uc774\ubc88 \uc8fc\ub9d0\uc5d0 \ubb50 \ud560 \uacc4\ud68d\uc774\uc5d0\uc694?') },\n    { speakerT: '\u6797\u5148\u751f', speakerS: '\u6797\u5148\u751f',\n      tokens: [W('\u6211','\u6211','W\u01d2'), W('\u53ef\u80fd','\u53ef\u80fd','k\u011bn\u00e9ng'), W('\u8ddf','\u8ddf','g\u0113n'), W('\u670b\u53cb','\u670b\u53cb','p\u00e9ngyou'), W('\u5230','\u5230','d\u00e0o'), WD('\u9109\u4e0b','\u4e61\u4e0b','xi\u0101ngxi\u00e0','xi\u0101ngxi\u00e0'), W('\u53bb','\u53bb','q\u00f9'), W('\u4f4f','\u4f4f','zh\u00f9'), WD('\u5e7e','\u51e0','j\u01d0','j\u01d0'), W('\u5929','\u5929','ti\u0101n'), '\uff0c', W('\u4f60','\u4f60','n\u01d0'), W('\u5462','\u5462','ne'), '\uff1f'],\n      en: TR('I might go stay in the countryside with a friend for a few days, how about you?', '\u305f\u3076\u3093\u53cb\u9054\u3068\u7530\u820e\u306b\u6570\u65e5\u6cca\u307e\u308a\u306b\u884c\u304d\u307e\u3059\u3001\u3042\u306a\u305f\u306f?', '\uc800\ub294 \uc544\ub9c8 \uce5c\uad6c\ub791 \uc2dc\uace8\uc5d0 \uba70\uce60 \uac00\uc11c \uc9c0\ub0bc \uac83 \uac19\uc544\uc694, \ub2f9\uc2e0\uc740\uc694?') },\n    { speakerT: '\u9673\u5c0f\u59d0', speakerS: '\u9648\u5c0f\u59d0',\n      tokens: [W('\u6211','\u6211','W\u01d2'), WD('\u4e5f\u8a31','\u4e5f\u8bb8','y\u011bx\u01d4','y\u011bx\u01d4'), W('\u8ddf','\u8ddf','g\u0113n'), W('\u5bb6\u4eba','\u5bb6\u4eba','ji\u0101r\u00e9n'), W('\u53bb','\u53bb','q\u00f9'), W('\u5c71','\u5c71','sh\u0101n'), W('\u4e0a','\u4e0a','sh\u00e0ng'), W('\u6ed1\u96ea','\u6ed1\u96ea','hu\u00e1xu\u011b'), '\uff0c', W('\u807d\u8aaa','\u542c\u8bf4','t\u012bngshu\u014d'), W('\u5c71','\u5c71','sh\u0101n'), W('\u4e0a','\u4e0a','sh\u00e0ng'), W('\u4e0b\u96ea','\u4e0b\u96ea','xi\u00e0xu\u011b'), W('\u4e86','\u4e86','le'), '\u3002'],\n      en: TR('I might go skiing on the mountain with my family, I heard it snowed up there.', '\u79c1\u306f\u3082\u3057\u304b\u3057\u305f\u3089\u5bb6\u65cf\u3068\u5c71\u3067\u30b9\u30ad\u30fc\u3092\u3057\u306b\u884c\u304f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3001\u5c71\u3067\u306f\u96ea\u304c\u964d\u3063\u305f\u305d\u3046\u3067\u3059\u3002', '\uc800\ub294 \uc544\ub9c8 \uac00\uc871\uc774\ub791 \uc0b0\uc5d0 \uc2a4\ud0a4 \ud0c0\ub7ec \uac08 \uac83 \uac19\uc544\uc694, \uc0b0\uc5d0 \ub208\uc774 \uc654\ub2e4\uace0 \ub4e4\uc5c8\uc5b4\uc694.') },\n    { speakerT: '\u6797\u5148\u751f', speakerS: '\u6797\u5148\u751f',\n      tokens: [WD('\u5929\u6c23','\u5929\u6c14','Ti\u0101nq\u00ec','ti\u0101nq\u00ec'), W('\u4e00\u5b9a','\u4e00\u5b9a','y\u00edd\u00ecng'), W('\u5f88','\u5f88','h\u011bn'), W('\u51b7','\u51b7','l\u011bng'), '\uff0c', WD('\u958b','\u5f00','k\u0101i','k\u0101i'), W('\u8eca','\u8f66','ch\u0113'), W('\u8981','\u8981','y\u00e0o'), WD('\u7279\u5225','\u7279\u522b','t\u00e8bi\u00e9','t\u00e8bi\u00e9'), W('\u5c0f\u5fc3','\u5c0f\u5fc3','xi\u01ceox\u012bn'), W('\u554a','\u554a','a'), '\uff01'],\n      en: TR('The weather must be very cold, be especially careful driving!', '\u304d\u3063\u3068\u5929\u6c17\u306f\u3068\u3066\u3082\u5bd2\u3044\u3067\u3059\u3001\u904b\u8ee2\u306f\u7279\u306b\u6c17\u3092\u3064\u3051\u3066\u304f\u3060\u3055\u3044!', '\ub0a0\uc528\uac00 \ubd84\uba85 \ub9e4\uc6b0 \ucd94\uc6b8 \uac70\uc608\uc694, \uc6b4\uc804 \ud2b9\ud788 \uc870\uc2ec\ud558\uc138\uc694!') },\n    { speakerT: '\u9673\u5c0f\u59d0', speakerS: '\u9648\u5c0f\u59d0',\n      tokens: [W('\u4f60','\u4f60','N\u01d0'), W('\u653e\u5fc3','\u653e\u5fc3','f\u00e0ngx\u012bn'), '\uff0c', W('\u6211','\u6211','w\u01d2'), WD('\u6703','\u4f1a','hu\u00ec','hu\u00ec'), W('\u5c0f\u5fc3','\u5c0f\u5fc3','xi\u01ceox\u012bn'), W('\u7684','\u7684','de'), '\u3002', W('\u795d','\u795d','Zh\u00f9'), W('\u4f60','\u4f60','n\u01d0'), WD('\u65e9','\u65e9','z\u01ceo','z\u01ceo'), WD('\u9ede','\u70b9','di\u01cen','di\u01cen'), W('\u653e\u5047','\u653e\u5047','f\u00e0ngji\u00e0'), '\uff0c', W('\u597d\u597d','\u597d\u597d','h\u01ceoh\u0101o'), W('\u4f11\u606f','\u4f11\u606f','xi\u016bxi'), '\uff01'],\n      en: TR(\"Don't worry, I'll be careful. Wishing you an early vacation and a good rest!\", '\u5b89\u5fc3\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u6c17\u3092\u3064\u3051\u307e\u3059\u3002\u65e9\u304f\u4f11\u307f\u306b\u306a\u3063\u3066\u3001\u3086\u3063\u304f\u308a\u4f11\u3093\u3067\u306d!', '\uc548\uc2ec\ud558\uc138\uc694, \uc870\uc2ec\ud560\uac8c\uc694. \ube68\ub9ac \ubc29\ud559\ud574\uc11c \ud479 \uc26c\uae38 \ubc14\ub77c\uc694!') }\n  ];\n\n  var ALL_WORDS = [];\n  Object.keys(GROUPS).forEach(function (k) {\n    GROUPS[k].forEach(function (w) { ALL_WORDS.push(w); });\n  });\n\n  function trSpans(tr) {\n    return '<span class=\"pv2l1-tr pv2l1-tr-en\">' + tr.en + '<\/span>' +\n           '<span class=\"pv2l1-tr pv2l1-tr-ja\">' + tr.ja + '<\/span>' +\n           '<span class=\"pv2l1-tr pv2l1-tr-ko\">' + tr.ko + '<\/span>';\n  }\n\n  function rubyWord(w) {\n    return '<span class=\"pv2l1-sent-word\">' +\n      '<ruby class=\"lang-zh-TW\"><span class=\"rb\">' + w.t + '<\/span><rt>' + w.pt + '<\/rt><\/ruby>' +\n      '<ruby class=\"lang-zh-CN\"><span class=\"rb\">' + w.s + '<\/span><rt>' + w.ps + '<\/rt><\/ruby>' +\n      '<\/span>';\n  }\n\n  function renderTokens(tokens) {\n    var html = '';\n    tokens.forEach(function (tok) {\n      if (typeof tok === 'string') {\n        html += '<span class=\"pv2l1-punct\">' + tok + '<\/span>';\n      } else {\n        html += rubyWord(tok);\n      }\n    });\n    return html;\n  }\n\n  function headwordRuby(t, s, pt, ps) {\n    return '<ruby class=\"lang-zh-TW\"><span class=\"rb\">' + t + '<\/span><rt>' + pt + '<\/rt><\/ruby>' +\n           '<ruby class=\"lang-zh-CN\"><span class=\"rb\">' + s + '<\/span><rt>' + ps + '<\/rt><\/ruby>';\n  }\n\n  var counter = 0;\n  Object.keys(GROUPS).forEach(function (containerId) {\n    var container = root.querySelector('#' + containerId);\n    if (!container) return;\n    var html = '';\n    GROUPS[containerId].forEach(function (w) {\n      counter++;\n      var num = (counter < 10 ? '0' : '') + counter;\n      html += '<div class=\"pv2l1-word-card\">' +\n        '<div class=\"pv2l1-word-top\">' +\n          '<span class=\"pv2l1-num\">' + num + '<\/span>' +\n          '<span class=\"pv2l1-hanzi\">' + headwordRuby(w.t, w.s, w.pt || w.p, w.ps || w.p) + '<\/span>' +\n          '<span class=\"pv2l1-meaning\">' + trSpans(w.meaning) + '<\/span>' +\n          '<button class=\"pv2l1-speaker\" data-trad=\"' + w.t + '\" data-simp=\"' + w.s + '\" aria-label=\"Play pronunciation\">' + SPEAKER_SVG + '<\/button>' +\n        '<\/div>' +\n        '<div class=\"pv2l1-example\">' +\n          renderTokens(w.ex) +\n          '<span class=\"pv2l1-en\">' + trSpans(w.exEn) + '<\/span>' +\n        '<\/div>' +\n      '<\/div>';\n    });\n    container.innerHTML = html;\n  });\n\n  var dialogueEl = root.querySelector('#pv2l1-dialogue');\n  if (dialogueEl) {\n    var dHtml = '';\n    DIALOGUE.forEach(function (line) {\n      dHtml += '<div class=\"pv2l1-line\">' +\n        '<span class=\"pv2l1-speaker-tag\">' +\n          '<span class=\"lang-zh-TW\">' + line.speakerT + '<\/span>' +\n          '<span class=\"lang-zh-CN\">' + line.speakerS + '<\/span>' +\n        '<\/span>' +\n        '<span class=\"pv2l1-line-body\">' +\n          renderTokens(line.tokens) +\n          '<span class=\"pv2l1-line-en\">' + trSpans(line.en) + '<\/span>' +\n        '<\/span>' +\n      '<\/div>';\n    });\n    dialogueEl.innerHTML = dHtml;\n  }\n\n  \/\/ ---- Pinyin sync with the site's Pinyin Display toggle ----\n  \/\/ The site's toggle tags existing <rt> elements with \"hidden\" or \"mouseover\".\n  \/\/ Content we re-render later (flashcard, Match It tiles) wouldn't get those\n  \/\/ classes, so we read the current mode off a static reference <rt> in the\n  \/\/ word list and copy it over whenever we re-render or the mode changes.\n  var pyRefRt = root.querySelector('#pv2l1-word-list-1 rt');\n\n  function getPinyinMode() {\n    if (!pyRefRt) return 'show';\n    if (pyRefRt.classList.contains('hidden')) return 'hidden';\n    if (pyRefRt.classList.contains('mouseover')) return 'mouseover';\n    return 'show';\n  }\n\n  function syncPinyin() {\n    var mode = getPinyinMode();\n    var isHidden = (mode === 'hidden');\n    var isMouse = (mode === 'mouseover');\n    var fcWrap = root.querySelector('.pv2l1-flashcard-wrap');\n    if (fcWrap) {\n      fcWrap.querySelectorAll('rt').forEach(function (rt) {\n        rt.classList.toggle('hidden', isHidden);\n        rt.classList.toggle('mouseover', isMouse);\n      });\n    }\n    root.classList.toggle('pv2l1-py-hidden', isHidden);\n    root.classList.toggle('pv2l1-py-mouseover', isMouse);\n  }\n\n  if (pyRefRt) {\n    if ('MutationObserver' in window) {\n      new MutationObserver(syncPinyin).observe(pyRefRt, { attributes: true, attributeFilter: ['class'] });\n    }\n  }\n\n  \/\/ ---- Translation language toggle ----\n  var langBtns = root.querySelectorAll('.pv2l1-lang-btn');\n  langBtns.forEach(function (btn) {\n    btn.addEventListener('click', function () {\n      var lang = btn.getAttribute('data-lang');\n      root.classList.remove('pv2l1-lang-en', 'pv2l1-lang-ja', 'pv2l1-lang-ko');\n      root.classList.add('pv2l1-lang-' + lang);\n      langBtns.forEach(function (b) { b.classList.remove('pv2l1-lang-active'); });\n      btn.classList.add('pv2l1-lang-active');\n    });\n  });\n  root.classList.add('pv2l1-lang-en');\n\n  \/\/ ---- Flashcards ----\n  var fcCard = root.querySelector('#pv2l1-flashcard');\n  var fcFront = root.querySelector('#pv2l1-fc-front');\n  var fcBack = root.querySelector('#pv2l1-fc-back');\n  var fcProgress = root.querySelector('#pv2l1-fc-progress');\n  var fcPrevBtn = root.querySelector('#pv2l1-fc-prev');\n  var fcNextBtn = root.querySelector('#pv2l1-fc-next');\n  var fcIndex = 0;\n  var fcFlipped = false;\n\n  function renderFlashcard() {\n    var w = ALL_WORDS[fcIndex];\n    if (!w || !fcFront || !fcBack) return;\n    fcFront.innerHTML = '<span class=\"pv2l1-hanzi\">' + headwordRuby(w.t, w.s, w.pt || w.p, w.ps || w.p) + '<\/span>';\n    fcBack.innerHTML = '<span class=\"pv2l1-meaning\">' + trSpans(w.meaning) + '<\/span>';\n    if (fcProgress) fcProgress.textContent = (fcIndex + 1) + ' \/ ' + ALL_WORDS.length;\n    if (fcCard) fcCard.classList.remove('pv2l1-flipped');\n    fcFlipped = false;\n    syncPinyin();\n  }\n\n  if (fcCard) {\n    fcCard.addEventListener('click', function () {\n      fcFlipped = !fcFlipped;\n      fcCard.classList.toggle('pv2l1-flipped', fcFlipped);\n    });\n  }\n  if (fcPrevBtn) fcPrevBtn.addEventListener('click', function () {\n    fcIndex = (fcIndex - 1 + ALL_WORDS.length) % ALL_WORDS.length;\n    renderFlashcard();\n  });\n  if (fcNextBtn) fcNextBtn.addEventListener('click', function () {\n    fcIndex = (fcIndex + 1) % ALL_WORDS.length;\n    renderFlashcard();\n  });\n  renderFlashcard();\n\n  \/\/ ---- Match It game ----\n  var gameColZh = root.querySelector('#pv2l1-game-col-zh');\n  var gameColEn = root.querySelector('#pv2l1-game-col-en');\n  var gameStatus = root.querySelector('#pv2l1-game-status');\n  var gameWin = root.querySelector('#pv2l1-game-win');\n  var gameNewBtn = root.querySelector('#pv2l1-game-new');\n  var gameRound = [];\n  var gameSelectedZh = null;\n  var gameSelectedEn = null;\n  var gameMatchedCount = 0;\n  var gameBusy = false;\n\n  function shuffle(arr) {\n    var a = arr.slice();\n    for (var i = a.length - 1; i > 0; i--) {\n      var j = Math.floor(Math.random() * (i + 1));\n      var tmp = a[i]; a[i] = a[j]; a[j] = tmp;\n    }\n    return a;\n  }\n\n  function startRound() {\n    gameRound = shuffle(ALL_WORDS).slice(0, 8);\n    gameSelectedZh = null;\n    gameSelectedEn = null;\n    gameMatchedCount = 0;\n    gameBusy = false;\n    if (gameWin) gameWin.classList.remove('pv2l1-show');\n\n    var zhOrder = shuffle(gameRound);\n    var enOrder = shuffle(gameRound);\n\n    gameColZh.innerHTML = zhOrder.map(function (w) {\n      return '<button class=\"pv2l1-tile\" data-id=\"' + w.t + '\" data-side=\"zh\">' +\n        '<span class=\"lang-zh-TW\">' + w.t + '<\/span><span class=\"lang-zh-CN\">' + w.s + '<\/span>' +\n        '<span class=\"pv2l1-tile-py\">' + (w.pt || w.p) + '<\/span>' +\n      '<\/button>';\n    }).join('');\n\n    gameColEn.innerHTML = enOrder.map(function (w) {\n      return '<button class=\"pv2l1-tile\" data-id=\"' + w.t + '\" data-side=\"en\">' + trSpans(w.meaning) + '<\/button>';\n    }).join('');\n\n    updateGameStatus();\n    syncPinyin();\n  }\n\n  function updateGameStatus() {\n    if (gameStatus) gameStatus.textContent = gameMatchedCount + ' \/ ' + gameRound.length + ' matched';\n  }\n\n  function handleTileClick(tile) {\n    if (gameBusy || tile.classList.contains('pv2l1-matched')) return;\n    var side = tile.getAttribute('data-side');\n\n    if (side === 'zh') {\n      if (gameSelectedZh) gameSelectedZh.classList.remove('pv2l1-selected');\n      gameSelectedZh = tile;\n      tile.classList.add('pv2l1-selected');\n    } else {\n      if (gameSelectedEn) gameSelectedEn.classList.remove('pv2l1-selected');\n      gameSelectedEn = tile;\n      tile.classList.add('pv2l1-selected');\n    }\n\n    if (gameSelectedZh) {\n      if (gameSelectedEn) {\n        var zhId = gameSelectedZh.getAttribute('data-id');\n        var enId = gameSelectedEn.getAttribute('data-id');\n        if (zhId === enId) {\n          gameSelectedZh.classList.remove('pv2l1-selected');\n          gameSelectedEn.classList.remove('pv2l1-selected');\n          gameSelectedZh.classList.add('pv2l1-matched');\n          gameSelectedEn.classList.add('pv2l1-matched');\n          gameMatchedCount++;\n          updateGameStatus();\n          gameSelectedZh = null;\n          gameSelectedEn = null;\n          var roundDone = (gameMatchedCount === gameRound.length);\n          if (roundDone) {\n            if (gameWin) {\n              gameWin.classList.add('pv2l1-show');\n            }\n          }\n        } else {\n          gameBusy = true;\n          var z = gameSelectedZh, en = gameSelectedEn;\n          z.classList.add('pv2l1-wrong');\n          en.classList.add('pv2l1-wrong');\n          setTimeout(function () {\n            z.classList.remove('pv2l1-selected', 'pv2l1-wrong');\n            en.classList.remove('pv2l1-selected', 'pv2l1-wrong');\n            gameBusy = false;\n          }, 400);\n          gameSelectedZh = null;\n          gameSelectedEn = null;\n        }\n      }\n    }\n  }\n\n  root.addEventListener('click', function (e) {\n    var tile = e.target.closest('.pv2l1-tile');\n    if (tile) {\n      if (root.contains(tile)) handleTileClick(tile);\n    }\n  });\n  if (gameNewBtn) gameNewBtn.addEventListener('click', startRound);\n\n  startRound();\n\n  \/\/ ---- Vocabulary Quiz (follows the EN\/JA\/KO translation toggle) ----\n  function QMC(promptTR, optionsTR, answer) { return { type: 'mc', prompt: promptTR, options: optionsTR, answer: answer }; }\n  function QTYPE(promptTR, accept) { return { type: 'type', prompt: promptTR, accept: accept }; }\n\n  var QUIZ_DATA = [\n    QTYPE(TR('Type the pinyin for <span class=\"lang-zh-TW\">\u751f\u75c5<\/span><span class=\"lang-zh-CN\">\u751f\u75c5<\/span>.', '<span class=\"lang-zh-TW\">\u751f\u75c5<\/span><span class=\"lang-zh-CN\">\u751f\u75c5<\/span>\u306e\u30d4\u30f3\u30a4\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002', '<span class=\"lang-zh-TW\">\u751f\u75c5<\/span><span class=\"lang-zh-CN\">\u751f\u75c5<\/span>\uc758 \ubcd1\uc74c\uc744 \uc785\ub825\ud558\uc138\uc694.'), ['shengbing']),\n    QMC(\n      TR('<span class=\"lang-zh-TW\">\u600e\u9ebc\u4e86<\/span><span class=\"lang-zh-CN\">\u600e\u4e48\u4e86<\/span> means...', '<span class=\"lang-zh-TW\">\u600e\u9ebc\u4e86<\/span><span class=\"lang-zh-CN\">\u600e\u4e48\u4e86<\/span>\u306e\u610f\u5473\u306f?', '<span class=\"lang-zh-TW\">\u600e\u9ebc\u4e86<\/span><span class=\"lang-zh-CN\">\u600e\u4e48\u4e86<\/span>\uc758 \ub73b\uc740?'),\n      [\n        TR(\"What's wrong?\", '\u3069\u3046\u3057\u305f\u306e?', '\ubb34\uc2a8 \uc77c\uc774\uc5d0\uc694?'),\n        TR('Thank you', '\u3042\u308a\u304c\u3068\u3046', '\uace0\ub9c8\uc6cc\uc694'),\n        TR(\"I'm sorry\", '\u3059\u307f\u307e\u305b\u3093', '\uc8c4\uc1a1\ud574\uc694'),\n        TR('Never mind', '\u5927\u4e08\u592b', '\uad1c\ucc2e\uc544\uc694')\n      ], 0),\n    QMC(\n      TR('\u8212\u670d means...', '\u8212\u670d\u306e\u610f\u5473\u306f?', '\u8212\u670d\uc758 \ub73b\uc740?'),\n      [\n        TR('to be comfortable', '\u5feb\u9069\u3060', '\ud3b8\uc548\ud558\ub2e4'),\n        TR('to be careful', '\u6c17\u3092\u3064\u3051\u308b', '\uc870\uc2ec\ud558\ub2e4'),\n        TR('to be special', '\u7279\u5225\u3060', '\ud2b9\ubcc4\ud558\ub2e4'),\n        TR('to be broken', '\u58ca\u308c\u3066\u3044\u308b', '\uace0\uc7a5 \ub098\ub2e4')\n      ], 0),\n    QTYPE(TR('Type the pinyin for <span class=\"lang-zh-TW\">\u611f\u5192<\/span><span class=\"lang-zh-CN\">\u611f\u5192<\/span>.', '<span class=\"lang-zh-TW\">\u611f\u5192<\/span><span class=\"lang-zh-CN\">\u611f\u5192<\/span>\u306e\u30d4\u30f3\u30a4\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002', '<span class=\"lang-zh-TW\">\u611f\u5192<\/span><span class=\"lang-zh-CN\">\u611f\u5192<\/span>\uc758 \ubcd1\uc74c\uc744 \uc785\ub825\ud558\uc138\uc694.'), ['ganmao']),\n    QMC(\n      TR('<span class=\"lang-zh-TW\">\u6c92\u95dc\u4fc2<\/span><span class=\"lang-zh-CN\">\u6ca1\u5173\u7cfb<\/span> means...', '<span class=\"lang-zh-TW\">\u6c92\u95dc\u4fc2<\/span><span class=\"lang-zh-CN\">\u6ca1\u5173\u7cfb<\/span>\u306e\u610f\u5473\u306f?', '<span class=\"lang-zh-TW\">\u6c92\u95dc\u4fc2<\/span><span class=\"lang-zh-CN\">\u6ca1\u5173\u7cfb<\/span>\uc758 \ub73b\uc740?'),\n      [\n        TR(\"no problem, it doesn't matter\", '\u5927\u4e08\u592b\u3001\u69cb\u308f\u306a\u3044', '\uad1c\ucc2e\uc544\uc694'),\n        TR('to be careful', '\u6c17\u3092\u3064\u3051\u308b', '\uc870\uc2ec\ud558\ub2e4'),\n        TR('to forget', '\u5fd8\u308c\u308b', '\uc78a\ub2e4'),\n        TR('possibly', '\u305f\u3076\u3093', '\uc544\ub9c8')\n      ], 0),\n    QMC(\n      TR('<span class=\"lang-zh-TW\">\u6c92\u4e8b\u5152<\/span><span class=\"lang-zh-CN\">\u6ca1\u4e8b\u513f<\/span> means...', '<span class=\"lang-zh-TW\">\u6c92\u4e8b\u5152<\/span><span class=\"lang-zh-CN\">\u6ca1\u4e8b\u513f<\/span>\u306e\u610f\u5473\u306f?', '<span class=\"lang-zh-TW\">\u6c92\u4e8b\u5152<\/span><span class=\"lang-zh-CN\">\u6ca1\u4e8b\u513f<\/span>\uc758 \ub73b\uc740?'),\n      [\n        TR(\"it's nothing, never mind\", '\u4f55\u3067\u3082\u306a\u3044\u3001\u5927\u4e08\u592b', '\uc544\ubb34 \uc77c\ub3c4 \uc544\ub2c8\uc5d0\uc694'),\n        TR('to have a cold', '\u98a8\u90aa\u3092\u3072\u304f', '\uac10\uae30\uc5d0 \uac78\ub9ac\ub2e4'),\n        TR('to be at ease', '\u5b89\u5fc3\u3059\u308b', '\uc548\uc2ec\ud558\ub2e4'),\n        TR('to plan', '\u8a08\u753b\u3059\u308b', '\uacc4\ud68d\ud558\ub2e4')\n      ], 0),\n    QTYPE(TR('Type the pinyin for <span class=\"lang-zh-TW\">\u4e0d\u5fc5<\/span><span class=\"lang-zh-CN\">\u4e0d\u5fc5<\/span>.', '<span class=\"lang-zh-TW\">\u4e0d\u5fc5<\/span><span class=\"lang-zh-CN\">\u4e0d\u5fc5<\/span>\u306e\u30d4\u30f3\u30a4\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002', '<span class=\"lang-zh-TW\">\u4e0d\u5fc5<\/span><span class=\"lang-zh-CN\">\u4e0d\u5fc5<\/span>\uc758 \ubcd1\uc74c\uc744 \uc785\ub825\ud558\uc138\uc694.'), ['bubi']),\n    QMC(\n      TR('<span class=\"lang-zh-TW\">\u85e5<\/span><span class=\"lang-zh-CN\">\u836f<\/span> means...', '<span class=\"lang-zh-TW\">\u85e5<\/span><span class=\"lang-zh-CN\">\u836f<\/span>\u306e\u610f\u5473\u306f?', '<span class=\"lang-zh-TW\">\u85e5<\/span><span class=\"lang-zh-CN\">\u836f<\/span>\uc758 \ub73b\uc740?'),\n      [\n        TR('medicine', '\u85ac', '\uc57d'),\n        TR('doctor', '\u533b\u8005', '\uc758\uc0ac'),\n        TR('illness', '\u75c5\u6c17', '\ubcd1'),\n        TR('vacation', '\u4f11\u307f', '\ud734\uac00')\n      ], 0),\n    QMC(\n      TR('<span class=\"lang-zh-TW\">\u9031\u672b<\/span><span class=\"lang-zh-CN\">\u5468\u672b<\/span> means...', '<span class=\"lang-zh-TW\">\u9031\u672b<\/span><span class=\"lang-zh-CN\">\u5468\u672b<\/span>\u306e\u610f\u5473\u306f?', '<span class=\"lang-zh-TW\">\u9031\u672b<\/span><span class=\"lang-zh-CN\">\u5468\u672b<\/span>\uc758 \ub73b\uc740?'),\n      [\n        TR('weekend', '\u9031\u672b', '\uc8fc\ub9d0'),\n        TR('Sunday', '\u65e5\u66dc\u65e5', '\uc77c\uc694\uc77c'),\n        TR('week', '\u9031', '\uc8fc'),\n        TR('vacation', '\u4f11\u307f', '\ud734\uac00')\n      ], 0),\n    QTYPE(TR('Type the pinyin for <span class=\"lang-zh-TW\">\u79ae\u62dc\u5929<\/span><span class=\"lang-zh-CN\">\u793c\u62dc\u5929<\/span>.', '<span class=\"lang-zh-TW\">\u79ae\u62dc\u5929<\/span><span class=\"lang-zh-CN\">\u793c\u62dc\u5929<\/span>\u306e\u30d4\u30f3\u30a4\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002', '<span class=\"lang-zh-TW\">\u79ae\u62dc\u5929<\/span><span class=\"lang-zh-CN\">\u793c\u62dc\u5929<\/span>\uc758 \ubcd1\uc74c\uc744 \uc785\ub825\ud558\uc138\uc694.'), ['libaitian']),\n    QMC(\n      TR('\u5047 means...', '\u5047\u306e\u610f\u5473\u306f?', '\u5047\uc758 \ub73b\uc740?'),\n      [\n        TR('vacation, holiday', '\u4f11\u307f', '\ud734\uac00'),\n        TR('week', '\u9031', '\uc8fc'),\n        TR('weekend', '\u9031\u672b', '\uc8fc\ub9d0'),\n        TR('mountain', '\u5c71', '\uc0b0')\n      ], 0),\n    QMC(\n      TR('<span class=\"lang-zh-TW\">\u4e5f\u8a31<\/span><span class=\"lang-zh-CN\">\u4e5f\u8bb8<\/span> means...', '<span class=\"lang-zh-TW\">\u4e5f\u8a31<\/span><span class=\"lang-zh-CN\">\u4e5f\u8bb8<\/span>\u306e\u610f\u5473\u306f?', '<span class=\"lang-zh-TW\">\u4e5f\u8a31<\/span><span class=\"lang-zh-CN\">\u4e5f\u8bb8<\/span>\uc758 \ub73b\uc740?'),\n      [\n        TR('perhaps, maybe', '\u3082\u3057\u304b\u3057\u305f\u3089', '\uc544\ub9c8\ub3c4'),\n        TR('to allow', '\u8a31\u3059', '\ud5c8\ub77d\ud558\ub2e4'),\n        TR('to plan', '\u8a08\u753b\u3059\u308b', '\uacc4\ud68d\ud558\ub2e4'),\n        TR('possibly \/ possibility', '\u305f\u3076\u3093\uff0f\u53ef\u80fd\u6027', '\uc544\ub9c8\/\uac00\ub2a5\uc131')\n      ], 0),\n    QTYPE(TR('Type the pinyin for <span class=\"lang-zh-TW\">\u53ef\u80fd<\/span><span class=\"lang-zh-CN\">\u53ef\u80fd<\/span>.', '<span class=\"lang-zh-TW\">\u53ef\u80fd<\/span><span class=\"lang-zh-CN\">\u53ef\u80fd<\/span>\u306e\u30d4\u30f3\u30a4\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002', '<span class=\"lang-zh-TW\">\u53ef\u80fd<\/span><span class=\"lang-zh-CN\">\u53ef\u80fd<\/span>\uc758 \ubcd1\uc74c\uc744 \uc785\ub825\ud558\uc138\uc694.'), ['keneng']),\n    QMC(\n      TR('\u6253\u7b97 means...', '\u6253\u7b97\u306e\u610f\u5473\u306f?', '\u6253\u7b97\uc758 \ub73b\uc740?'),\n      [\n        TR('to plan', '\u8a08\u753b\u3059\u308b\u3001\uff5e\u3059\u308b\u3064\u3082\u308a\u3060', '\uacc4\ud68d\ud558\ub2e4'),\n        TR('to hit', '\u6253\u3064', '\uce58\ub2e4'),\n        TR('to calculate', '\u8a08\u7b97\u3059\u308b', '\uacc4\uc0b0\ud558\ub2e4'),\n        TR('to allow', '\u8a31\u3059', '\ud5c8\ub77d\ud558\ub2e4')\n      ], 0),\n    QMC(\n      TR('<span class=\"lang-zh-TW\">\u9109\u4e0b<\/span><span class=\"lang-zh-CN\">\u4e61\u4e0b<\/span> means...', '<span class=\"lang-zh-TW\">\u9109\u4e0b<\/span><span class=\"lang-zh-CN\">\u4e61\u4e0b<\/span>\u306e\u610f\u5473\u306f?', '<span class=\"lang-zh-TW\">\u9109\u4e0b<\/span><span class=\"lang-zh-CN\">\u4e61\u4e0b<\/span>\uc758 \ub73b\uc740?'),\n      [\n        TR('countryside', '\u7530\u820e', '\uc2dc\uace8'),\n        TR('mountain', '\u5c71', '\uc0b0'),\n        TR('snow', '\u96ea', '\ub208'),\n        TR('weekend', '\u9031\u672b', '\uc8fc\ub9d0')\n      ], 0),\n    QTYPE(TR('Type the pinyin for <span class=\"lang-zh-TW\">\u6ed1\u96ea<\/span><span class=\"lang-zh-CN\">\u6ed1\u96ea<\/span>.', '<span class=\"lang-zh-TW\">\u6ed1\u96ea<\/span><span class=\"lang-zh-CN\">\u6ed1\u96ea<\/span>\u306e\u30d4\u30f3\u30a4\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002', '<span class=\"lang-zh-TW\">\u6ed1\u96ea<\/span><span class=\"lang-zh-CN\">\u6ed1\u96ea<\/span>\uc758 \ubcd1\uc74c\uc744 \uc785\ub825\ud558\uc138\uc694.'), ['huaxue']),\n    QMC(\n      TR('\u4e0b\u96ea means...', '\u4e0b\u96ea\u306e\u610f\u5473\u306f?', '\u4e0b\u96ea\uc758 \ub73b\uc740?'),\n      [\n        TR('to snow', '\u96ea\u304c\u964d\u308b', '\ub208\uc774 \uc624\ub2e4'),\n        TR('to ski', '\u30b9\u30ad\u30fc\u3092\u3059\u308b', '\uc2a4\ud0a4\ub97c \ud0c0\ub2e4'),\n        TR('mountain', '\u5c71', '\uc0b0'),\n        TR('to be careful', '\u6c17\u3092\u3064\u3051\u308b', '\uc870\uc2ec\ud558\ub2e4')\n      ], 0),\n    QMC(\n      TR('\u91ab\u751f means...', '\u91ab\u751f\u306e\u610f\u5473\u306f?', '\u91ab\u751f\uc758 \ub73b\uc740?'),\n      [\n        TR('doctor', '\u533b\u8005', '\uc758\uc0ac'),\n        TR('medicine', '\u85ac', '\uc57d'),\n        TR('illness', '\u75c5\u6c17', '\ubcd1'),\n        TR('vacation', '\u4f11\u307f', '\ud734\uac00')\n      ], 0),\n    QTYPE(TR('Type the pinyin for <span class=\"lang-zh-TW\">\u7279\u5225<\/span><span class=\"lang-zh-CN\">\u7279\u522b<\/span>.', '<span class=\"lang-zh-TW\">\u7279\u5225<\/span><span class=\"lang-zh-CN\">\u7279\u522b<\/span>\u306e\u30d4\u30f3\u30a4\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002', '<span class=\"lang-zh-TW\">\u7279\u5225<\/span><span class=\"lang-zh-CN\">\u7279\u522b<\/span>\uc758 \ubcd1\uc74c\uc744 \uc785\ub825\ud558\uc138\uc694.'), ['tebie']),\n    QMC(\n      TR('\u653e\u5fc3 means...', '\u653e\u5fc3\u306e\u610f\u5473\u306f?', '\u653e\u5fc3\uc758 \ub73b\uc740?'),\n      [\n        TR('to be at ease, not worry', '\u5b89\u5fc3\u3059\u308b', '\uc548\uc2ec\ud558\ub2e4'),\n        TR('to put, to release', '\u7f6e\u304f', '\ub193\ub2e4'),\n        TR('to have a holiday', '\u4f11\u307f\u306b\u306a\u308b', '\ubc29\ud559\ud558\ub2e4'),\n        TR('to be broken', '\u58ca\u308c\u3066\u3044\u308b', '\uace0\uc7a5 \ub098\ub2e4')\n      ], 0)\n  ];\n\n  var UI_STRINGS = {\n    en: { submit: 'Submit', next: 'Next', placeholder: 'Type your answer', correct: 'Correct!', incorrectPrefix: 'Not quite \u2014 the answer is \"', incorrectSuffix: '\".', incorrectGeneric: 'Not quite \u2014 check the highlighted answer above.', scoreLine: 'Nice work! Want to try again?', retake: 'Retake Quiz', questionLabel: 'Question' },\n    ja: { submit: '\u9001\u4fe1', next: '\u6b21\u3078', placeholder: '\u7b54\u3048\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044', correct: '\u6b63\u89e3!', incorrectPrefix: '\u6b8b\u5ff5\u3001\u6b63\u89e3\u306f\u300c', incorrectSuffix: '\u300d\u3067\u3059\u3002', incorrectGeneric: '\u6b8b\u5ff5\u3001\u4e0a\u306e\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u7b54\u3048\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002', scoreLine: '\u3088\u304f\u3067\u304d\u307e\u3057\u305f!\u3082\u3046\u4e00\u5ea6\u6311\u6226\u3057\u307e\u3059\u304b?', retake: '\u30af\u30a4\u30ba\u3092\u3084\u308a\u76f4\u3059', questionLabel: '\u8cea\u554f' },\n    ko: { submit: '\uc81c\ucd9c', next: '\ub2e4\uc74c', placeholder: '\ub2f5\uc744 \uc785\ub825\ud558\uc138\uc694', correct: '\uc815\ub2f5\uc785\ub2c8\ub2e4!', incorrectPrefix: '\uc544\uc27d\ub124\uc694 \u2014 \uc815\ub2f5\uc740 \"', incorrectSuffix: '\"\uc785\ub2c8\ub2e4.', incorrectGeneric: '\uc544\uc27d\ub124\uc694 \u2014 \uc704\uc5d0 \ud45c\uc2dc\ub41c \uc815\ub2f5\uc744 \ud655\uc778\ud558\uc138\uc694.', scoreLine: '\uc798\ud558\uc168\uc5b4\uc694! \ub2e4\uc2dc \ub3c4\uc804\ud574\ubcf4\uc2dc\uaca0\uc5b4\uc694?', retake: '\ud034\uc988 \ub2e4\uc2dc \ud480\uae30', questionLabel: '\ubb38\uc81c' }\n  };\n\n  function getLang() {\n    if (root.classList.contains('pv2l1-lang-ja')) return 'ja';\n    if (root.classList.contains('pv2l1-lang-ko')) return 'ko';\n    return 'en';\n  }\n\n  function stripTones(s) {\n    return s.normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '').toLowerCase().replace(\/[^a-z0-9]\/g, '');\n  }\n\n  (function initQuiz() {\n    var qRoot = root.querySelector('#pv2l1-quiz');\n    if (!qRoot) return;\n    var current = 0;\n    var score = 0;\n    var answered = false;\n\n    function render() {\n      if (current >= QUIZ_DATA.length) { renderScore(); return; }\n      var lang = getLang();\n      var ui = UI_STRINGS[lang];\n      var q = QUIZ_DATA[current];\n      answered = false;\n      var html = '<p class=\"pv2l1-quiz-progress\">' + ui.questionLabel + ' ' + (current + 1) + ' \/ ' + QUIZ_DATA.length + '<\/p>';\n      html += '<p class=\"pv2l1-quiz-prompt\">' + q.prompt[lang] + '<\/p>';\n      if (q.type === 'mc') {\n        html += '<div class=\"pv2l1-quiz-options\">';\n        for (var i = 0; i < q.options.length; i++) {\n          html += '<button type=\"button\" class=\"pv2l1-quiz-opt\" data-i=\"' + i + '\">' + q.options[i][lang] + '<\/button>';\n        }\n        html += '<\/div>';\n      } else {\n        html += '<div class=\"pv2l1-quiz-input-row\">';\n        html += '<input type=\"text\" class=\"pv2l1-quiz-input\" placeholder=\"' + ui.placeholder + '\">';\n        html += '<button type=\"button\" class=\"pv2l1-quiz-submit\">' + ui.submit + '<\/button>';\n        html += '<\/div>';\n      }\n      html += '<p class=\"pv2l1-quiz-feedback\"><\/p>';\n      html += '<button type=\"button\" class=\"pv2l1-quiz-next\" style=\"display:none;\">' + ui.next + '<\/button>';\n      qRoot.innerHTML = html;\n\n      if (q.type === 'mc') {\n        var opts = qRoot.querySelectorAll('.pv2l1-quiz-opt');\n        opts.forEach(function (btn) {\n          btn.addEventListener('click', function () {\n            if (answered) return;\n            answered = true;\n            var i = parseInt(this.getAttribute('data-i'), 10);\n            var correct = i === q.answer;\n            if (correct) score++;\n            opts.forEach(function (b, bi) {\n              b.setAttribute('disabled', 'disabled');\n              if (bi === q.answer) b.classList.add('correct');\n              else if (bi === i) b.classList.add('incorrect');\n            });\n            showFeedback(correct);\n          });\n        });\n      } else {\n        var input = qRoot.querySelector('.pv2l1-quiz-input');\n        var submitBtn = qRoot.querySelector('.pv2l1-quiz-submit');\n        function submit() {\n          if (answered) return;\n          answered = true;\n          var val = stripTones(input.value || '');\n          var correct = q.accept.indexOf(val) !== -1;\n          if (correct) score++;\n          input.setAttribute('disabled', 'disabled');\n          submitBtn.setAttribute('disabled', 'disabled');\n          showFeedback(correct, q.accept[0]);\n        }\n        submitBtn.addEventListener('click', submit);\n        input.addEventListener('keydown', function (e) { if (e.key === 'Enter') submit(); });\n      }\n\n      function showFeedback(correct, correctAnswer) {\n        var fb = qRoot.querySelector('.pv2l1-quiz-feedback');\n        if (correct) {\n          fb.textContent = ui.correct;\n        } else if (correctAnswer) {\n          fb.textContent = ui.incorrectPrefix + correctAnswer + ui.incorrectSuffix;\n        } else {\n          fb.textContent = ui.incorrectGeneric;\n        }\n        fb.className = 'pv2l1-quiz-feedback ' + (correct ? 'correct' : 'incorrect');\n        var nextBtn = qRoot.querySelector('.pv2l1-quiz-next');\n        nextBtn.style.display = 'inline-block';\n        nextBtn.addEventListener('click', function () { current++; render(); });\n      }\n    }\n\n    function renderScore() {\n      var ui = UI_STRINGS[getLang()];\n      qRoot.innerHTML =\n        '<div class=\"pv2l1-quiz-score\">' +\n        '<span class=\"pv2l1-quiz-score-num\">' + score + ' \/ ' + QUIZ_DATA.length + '<\/span>' +\n        '<p>' + ui.scoreLine + '<\/p>' +\n        '<button type=\"button\" class=\"pv2l1-quiz-retake\">' + ui.retake + '<\/button>' +\n        '<\/div>';\n      qRoot.querySelector('.pv2l1-quiz-retake').addEventListener('click', function () {\n        current = 0; score = 0; render();\n      });\n    }\n\n    render();\n  })();\n\n  \/\/ Speaker buttons (event delegation, Web Speech API) \u2014 headword cards only\n  root.addEventListener('click', function (e) {\n    var btn = e.target.closest('.pv2l1-speaker');\n    if (!btn || !root.contains(btn)) return;\n    if (!('speechSynthesis' in window)) return;\n    var showingSimp = false;\n    var simpEl = root.querySelector('.lang-zh-CN');\n    if (simpEl) {\n      if (simpEl.offsetParent !== null) showingSimp = true;\n    }\n    var text = showingSimp ? btn.getAttribute('data-simp') : btn.getAttribute('data-trad');\n    var utter = new SpeechSynthesisUtterance(text);\n    utter.lang = showingSimp ? 'zh-CN' : 'zh-TW';\n    window.speechSynthesis.cancel();\n    window.speechSynthesis.speak(utter);\n  });\n\n})();\n<\/script>\n<\/div>\n\n\n\n<div style=\"height:57px\" 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\/audio-2\/\"><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=\"object-fit:cover;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":"","protected":false},"author":2,"featured_media":16392,"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":true,"_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":[1357],"tags":[],"class_list":["post-16858","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-1357"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1 - OneDotDot Chinese<\/title>\n<meta name=\"description\" content=\"This is just for my students. \u8996\u807d\u83ef\u8a9e Book 2 Lesson 1\" \/>\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\/09\/12\/book-2-l1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1 - OneDotDot Chinese\" \/>\n<meta property=\"og:description\" content=\"This is just for my students. \u8996\u807d\u83ef\u8a9e Book 2 Lesson 1\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/\" \/>\n<meta property=\"og:site_name\" content=\"OneDotDot Chinese\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-11T23:34:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-09T12:03:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/20190211100150_pic-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1755\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/\"},\"author\":{\"name\":\"tiffany\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"headline\":\"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1\",\"datePublished\":\"2026-09-11T23:34:28+00:00\",\"dateModified\":\"2026-10-09T12:03:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/\"},\"wordCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/20190211100150_pic-scaled.jpg\",\"articleSection\":[\"\u8996\u807d\u83ef\u8a9e\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/\",\"name\":\"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1 - OneDotDot Chinese\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/20190211100150_pic-scaled.jpg\",\"datePublished\":\"2026-09-11T23:34:28+00:00\",\"dateModified\":\"2026-10-09T12:03:25+00:00\",\"description\":\"This is just for my students. \u8996\u807d\u83ef\u8a9e Book 2 Lesson 1\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/20190211100150_pic-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/20190211100150_pic-scaled.jpg\",\"width\":2560,\"height\":1755},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/12\\\/book-2-l1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1\"}]},{\"@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":"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1 - OneDotDot Chinese","description":"This is just for my students. \u8996\u807d\u83ef\u8a9e Book 2 Lesson 1","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\/09\/12\/book-2-l1\/","og_locale":"en_US","og_type":"article","og_title":"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1 - OneDotDot Chinese","og_description":"This is just for my students. \u8996\u807d\u83ef\u8a9e Book 2 Lesson 1","og_url":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/","og_site_name":"OneDotDot Chinese","article_published_time":"2026-09-11T23:34:28+00:00","article_modified_time":"2026-10-09T12:03:25+00:00","og_image":[{"width":2560,"height":1755,"url":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/20190211100150_pic-scaled.jpg","type":"image\/jpeg"}],"author":"tiffany","twitter_card":"summary_large_image","twitter_misc":{"Written by":"tiffany","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/#article","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/"},"author":{"name":"tiffany","@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"headline":"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1","datePublished":"2026-09-11T23:34:28+00:00","dateModified":"2026-10-09T12:03:25+00:00","mainEntityOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/"},"wordCount":2,"publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/#primaryimage"},"thumbnailUrl":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/20190211100150_pic-scaled.jpg","articleSection":["\u8996\u807d\u83ef\u8a9e"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/","url":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/","name":"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1 - OneDotDot Chinese","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/#primaryimage"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/#primaryimage"},"thumbnailUrl":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/20190211100150_pic-scaled.jpg","datePublished":"2026-09-11T23:34:28+00:00","dateModified":"2026-10-09T12:03:25+00:00","description":"This is just for my students. \u8996\u807d\u83ef\u8a9e Book 2 Lesson 1","breadcrumb":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/#primaryimage","url":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/20190211100150_pic-scaled.jpg","contentUrl":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/20190211100150_pic-scaled.jpg","width":2560,"height":1755},{"@type":"BreadcrumbList","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/12\/book-2-l1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/tiffanysmandarin.com\/"},{"@type":"ListItem","position":2,"name":"\u8996\u807d\u83ef\u8a9eBook 2 Lesson 1"}]},{"@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":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/20190211100150_pic-scaled.jpg","_links":{"self":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/16858","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=16858"}],"version-history":[{"count":3,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/16858\/revisions"}],"predecessor-version":[{"id":18074,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/16858\/revisions\/18074"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/media\/16392"}],"wp:attachment":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/media?parent=16858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/categories?post=16858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/tags?post=16858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}