{"id":1722,"date":"2025-12-17T00:19:23","date_gmt":"2025-12-17T00:19:23","guid":{"rendered":"https:\/\/korsaty.net\/?page_id=1722"},"modified":"2025-12-17T00:19:25","modified_gmt":"2025-12-17T00:19:25","slug":"1722-2","status":"publish","type":"page","link":"https:\/\/korsaty.net\/ar\/1722-2\/","title":{"rendered":""},"content":{"rendered":"<style data-wp-block-html=\"css\">\n\/* styles.css *\/\n:root{\n  --bg0:#0a1020;\n  --bg1:#0b1430;\n  --card: rgba(255,255,255,.06);\n  --card2: rgba(255,255,255,.08);\n  --stroke: rgba(255,255,255,.12);\n  --text:#eef2ff;\n  --muted:#b8c2e6;\n  --accent:#7c5cff;\n  --ok:#2bd4a7;\n  --warn:#ffcc66;\n  --shadow: 0 18px 50px rgba(0,0,0,.35);\n  --radius: 18px;\n  --radius2: 14px;\n  --focus: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 65%);\n  --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --sans: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, \"Apple Color Emoji\",\"Segoe UI Emoji\";\n}\n\nhtml[data-theme=\"light\"]{\n  --bg0:#f6f7fb;\n  --bg1:#eef0ff;\n  --card: rgba(255,255,255,.78);\n  --card2: rgba(245,255,252,.92);\n  --stroke: rgba(17,24,39,.12);\n  --text:#0f172a;\n  --muted:#475569;\n  --accent:#5b5cff;\n  --ok:#0ea5a5;\n  --warn:#b45309;\n  --shadow: 0 18px 50px rgba(17,24,39,.14);\n}\n\n*{ box-sizing:border-box; }\nhtml,body{ height:100%; }\nbody{\n  margin:0;\n  font-family: var(--sans);\n  color: var(--text);\n  background: linear-gradient(180deg, var(--bg0), var(--bg1));\n  overflow-x:hidden;\n}\n\n.bg{\n  position: fixed;\n  inset:-40vh -20vw auto -20vw;\n  height: 90vh;\n  background:\n    radial-gradient(900px 520px at 20% 25%, color-mix(in oklab, var(--accent), transparent 72%), transparent 60%),\n    radial-gradient(900px 520px at 88% 18%, color-mix(in oklab, var(--ok), transparent 76%), transparent 60%),\n    radial-gradient(1000px 620px at 55% 0%, rgba(255,255,255,.06), transparent 62%);\n  filter: blur(0px);\n  pointer-events:none;\n  z-index: -1;\n}\n\n.wrap{\n  width: min(980px, calc(100% - 28px));\n  margin: 0 auto;\n}\n\n.topbar{\n  position: sticky;\n  top: 0;\n  z-index: 50;\n  backdrop-filter: blur(14px);\n  background: color-mix(in oklab, var(--bg0), transparent 35%);\n  border-bottom: 1px solid var(--stroke);\n}\n\n.topbar .wrap{\n  display:grid;\n  gap: 14px;\n  padding: 14px 0;\n}\n\n@media (min-width: 860px){\n  .topbar .wrap{\n    grid-template-columns: 1.25fr .9fr;\n    align-items:start;\n    gap: 18px;\n  }\n}\n\n.brand{ display:grid; gap: 6px; }\n.kicker{\n  font-size: 12px;\n  letter-spacing:.16em;\n  text-transform: uppercase;\n  color: color-mix(in oklab, var(--muted), transparent 15%);\n}\n.title{\n  margin:0;\n  font-size: clamp(20px, 3.2vw, 32px);\n  line-height: 1.12;\n  letter-spacing: -0.02em;\n}\n.subtitle{\n  margin:0;\n  font-size: 14px;\n  color: var(--muted);\n  line-height: 1.35;\n}\n\n.controls{\n  display:grid;\n  gap: 10px;\n  align-content:start;\n}\n\n.search{\n  display:flex;\n  align-items:center;\n  gap: 10px;\n  border: 1px solid var(--stroke);\n  border-radius: 999px;\n  padding: 10px 12px;\n  background: rgba(255,255,255,.06);\n  box-shadow: 0 12px 30px rgba(0,0,0,.10);\n}\n.searchIcon{\n  opacity:.85;\n  font-weight: 900;\n  user-select:none;\n}\n.search input{\n  width: 100%;\n  border: 0;\n  outline: none;\n  background: transparent;\n  color: var(--text);\n  font-size: 14px;\n}\n.search input::placeholder{\n  color: color-mix(in oklab, var(--muted), transparent 25%);\n}\n\n.btnRow{\n  display:flex;\n  gap: 10px;\n  flex-wrap: wrap;\n  align-items:center;\n}\n\n.btn{\n  border: 1px solid var(--stroke);\n  background: transparent;\n  color: var(--text);\n  border-radius: 14px;\n  padding: 10px 12px;\n  font-weight: 800;\n  font-size: 13px;\n  cursor:pointer;\n  min-height: 42px;\n  touch-action: manipulation;\n  box-shadow: 0 10px 26px rgba(0,0,0,.08);\n}\n.btn:focus{ outline: none; box-shadow: var(--focus), 0 10px 26px rgba(0,0,0,.08); }\n\n.btnPrimary{\n  border-color: color-mix(in oklab, var(--accent), white 40%);\n  background: linear-gradient(135deg, var(--accent), color-mix(in oklab, var(--accent), white 18%));\n  color: white;\n  box-shadow: 0 14px 34px color-mix(in oklab, var(--accent), transparent 75%);\n}\n.btnSecondary{\n  border-color: color-mix(in oklab, var(--ok), white 45%);\n  background: linear-gradient(135deg, var(--ok), color-mix(in oklab, var(--ok), white 18%));\n  color: #07171a;\n  box-shadow: 0 14px 34px color-mix(in oklab, var(--ok), transparent 78%);\n}\n.btnGhost{\n  background: rgba(255,255,255,.05);\n}\n\n.stats{\n  font-size: 12px;\n  color: var(--muted);\n}\n\n.panel{\n  margin: 16px 0;\n  border: 1px solid var(--stroke);\n  background: color-mix(in oklab, var(--card), transparent 0%);\n  border-radius: var(--radius);\n  box-shadow: var(--shadow);\n  overflow:hidden;\n}\n\n.panelHead{\n  padding: 14px 14px 0;\n}\n.h2{\n  margin:0;\n  font-size: 16px;\n  letter-spacing: -0.01em;\n}\n.muted{\n  color: var(--muted);\n  margin: 6px 0 10px;\n  font-size: 13px;\n}\n\ndetails summary{\n  list-style:none;\n  cursor:pointer;\n  user-select:none;\n  display:flex;\n  justify-content:space-between;\n  align-items:center;\n  gap: 10px;\n  padding: 14px;\n  font-weight: 900;\n}\ndetails summary::-webkit-details-marker{ display:none; }\ndetails[open] summary{\n  border-bottom: 1px solid var(--stroke);\n}\n\n.pill{\n  font-size: 12px;\n  color: var(--muted);\n  border: 1px solid var(--stroke);\n  padding: 6px 10px;\n  border-radius: 999px;\n  background: rgba(255,255,255,.05);\n}\n\n.notes{\n  padding: 14px;\n  display:grid;\n  gap: 10px;\n}\n.noteCard{\n  border: 1px dashed color-mix(in oklab, var(--stroke), transparent 10%);\n  border-radius: var(--radius2);\n  padding: 12px;\n  background: rgba(255,255,255,.04);\n}\n.noteCard h3{\n  margin:0 0 6px;\n  font-size: 13px;\n}\n.noteCard p{\n  margin:0;\n  font-size: 13px;\n  color: var(--muted);\n  line-height:1.55;\n  white-space: pre-wrap;\n}\n\n.qaList{\n  display:grid;\n  gap: 12px;\n  padding: 14px;\n}\n\n.card{\n  border: 1px solid var(--stroke);\n  border-radius: var(--radius);\n  background: rgba(255,255,255,.05);\n  box-shadow: 0 12px 30px rgba(0,0,0,.12);\n  overflow:hidden;\n  transition: transform .14s ease, border-color .14s ease, background .14s ease;\n}\n.card:focus-within{\n  transform: translateY(-1px);\n  border-color: color-mix(in oklab, var(--accent), white 20%);\n}\n\n.card.is-answer{\n  background: color-mix(in oklab, var(--ok), transparent 92%);\n  border-color: color-mix(in oklab, var(--ok), white 35%);\n}\n\n.cardHead{\n  display:flex;\n  align-items:flex-start;\n  justify-content:space-between;\n  gap: 10px;\n  padding: 14px 14px 8px;\n}\n\n.badges{ display:flex; gap: 8px; flex-wrap:wrap; }\n.badge{\n  font-size: 12px;\n  padding: 6px 10px;\n  border-radius: 999px;\n  border: 1px solid var(--stroke);\n  background: rgba(255,255,255,.05);\n  color: var(--muted);\n  user-select:none;\n}\n.badge.levelEasy{ border-color: color-mix(in oklab, var(--ok), white 60%); }\n.badge.levelMedium{ border-color: color-mix(in oklab, var(--warn), white 55%); }\n.badge.levelAdvanced{ border-color: color-mix(in oklab, var(--danger, #ff5c7a), white 55%); }\n\n.qWrap{\n  padding: 0 14px 14px;\n  display:grid;\n  gap: 10px;\n}\n\n.qText, .aText{\n  margin:0;\n  font-size: 15px;\n  line-height: 1.55;\n  white-space: pre-wrap;\n}\n.qText b, .aText b{ font-weight: 900; }\n\n.aText{\n  display:none;\n  color: color-mix(in oklab, var(--text), var(--ok) 14%);\n}\n.card.is-answer .aText{ display:block; }\n.card.is-answer .qText{ display:none; }\n\n.choices{\n  display:grid;\n  gap: 6px;\n  padding: 10px 12px;\n  border-radius: var(--radius2);\n  border: 1px solid var(--stroke);\n  background: rgba(255,255,255,.04);\n  font-family: var(--mono);\n  font-size: 13px;\n  color: color-mix(in oklab, var(--text), transparent 5%);\n}\n.choice{\n  display:flex;\n  gap: 8px;\n  align-items:flex-start;\n}\n.choice span{\n  opacity:.9;\n}\n\n.actions{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap: 10px;\n  flex-wrap:wrap;\n  padding: 0 14px 14px;\n}\n\n.flipBtns{\n  display:flex;\n  gap: 10px;\n  align-items:center;\n}\n\n.btnSmall{\n  padding: 10px 12px;\n  border-radius: 12px;\n  font-weight: 900;\n  font-size: 13px;\n  min-height: 42px;\n}\n\n.btnAnswer{\n  border-color: color-mix(in oklab, var(--accent), white 40%);\n  background: linear-gradient(135deg, var(--accent), color-mix(in oklab, var(--accent), white 18%));\n  color: white;\n}\n.btnQuestion{\n  border-color: color-mix(in oklab, var(--ok), white 50%);\n  background: linear-gradient(135deg, var(--ok), color-mix(in oklab, var(--ok), white 18%));\n  color: #07171a;\n}\n\n.btnAnswer[hidden], .btnQuestion[hidden]{ display:none !important; }\n\n.meta{\n  font-size: 12px;\n  color: var(--muted);\n  display:flex;\n  gap: 10px;\n  align-items:center;\n}\n.meta .dot{\n  width: 6px;\n  height: 6px;\n  border-radius: 50%;\n  background: color-mix(in oklab, var(--muted), transparent 20%);\n  display:inline-block;\n}\n\n.empty{\n  margin: 0;\n  padding: 0 14px 18px;\n  color: var(--muted);\n  text-align:center;\n}\n\n.fineprint{\n  margin: 0;\n  padding: 0 14px 16px;\n  color: color-mix(in oklab, var(--muted), transparent 10%);\n  font-size: 12px;\n}\n\n.footer{\n  padding: 18px 0 28px;\n  border-top: 1px solid var(--stroke);\n  margin-top: 18px;\n}\n\n@media (prefers-reduced-motion: reduce){\n  *{ transition:none !important; scroll-behavior:auto !important; }\n}\n\n<\/style>\n\n<script data-wp-block-html=\"js\">\n\/* app.js *\/\n(() => {\n  const els = {\n    search: document.getElementById(\"searchInput\"),\n    list: document.getElementById(\"qaList\"),\n    empty: document.getElementById(\"emptyState\"),\n    count: document.getElementById(\"countText\"),\n    notes: document.getElementById(\"notes\"),\n    notesDetails: document.getElementById(\"notesDetails\"),\n    btnRevealAll: document.getElementById(\"btnRevealAll\"),\n    btnHideAll: document.getElementById(\"btnHideAll\"),\n    btnTheme: document.getElementById(\"btnTheme\"),\n  };\n\n  const STORAGE_KEY = \"lesson1_qa_state_v1\";\n\n  \/** -----------------------------\n   *  DATA (from the pasted lesson)\n   *  ----------------------------*\/\n  const NOTES = [\n    {\n      title: \"Zero & products\",\n      text:\n        \"\u2022 If either a or b is 0, then ab = 0.\\n\" +\n        \"\u2022 If ab = 0, then a = 0 or b = 0.\\n\" +\n        \"\u2022 Multiplication Property of 0: a\u00b70 = 0 and 0\u00b7a = 0.\"\n    },\n    {\n      title: \"Signs (product, quotient, sum)\",\n      text:\n        \"\u2022 If a and b are both positive, ab and a\/b are positive.\\n\" +\n        \"\u2022 If a and b are both negative, ab and a\/b are positive.\\n\" +\n        \"\u2022 If one is positive and the other is negative, ab and a\/b are negative.\\n\" +\n        \"\u2022 If both are positive, a+b is positive.\\n\" +\n        \"\u2022 If both are negative, a+b is negative.\\n\" +\n        \"\u2022 If one is positive and the other is negative, a+b takes the sign of the number with the larger absolute value.\\n\" +\n        \"\u2022 To evaluate a \u2212 b, write a + (\u2212b) and use addition rules.\\n\" +\n        \"\u2022 The product of several numbers is positive if the number of negative factors is even; negative if odd.\"\n    },\n    {\n      title: \"Consecutive integers\",\n      text:\n        \"Consecutive integers are two or more integers in sequence, each 1 more than the previous:\\n\" +\n        \"Examples: 4,5   12,13,14,15   \u22123,\u22122,\u22121,0,1,2   n, n+1, n+2, n+3, \u2026\"\n    },\n    {\n      title: \"Divisors \/ factors \/ multiples\",\n      text:\n        \"If m and n are integers, these are synonymous:\\n\" +\n        \"\u2022 m is a divisor (factor) of n\\n\" +\n        \"\u2022 n is divisible by m\\n\" +\n        \"\u2022 n is a multiple of m\\n\" +\n        \"Meaning: dividing n by m leaves remainder 0.\"\n    },\n    {\n      title: \"Remainder form (division algorithm)\",\n      text:\n        \"If m and n are positive integers and r is the remainder when n is divided by m, then:\\n\" +\n        \"n = mq + r, where q is an integer and 0 \u2264 r < m.\"\n    },\n    {\n      title: \"Even\/odd rules\",\n      text:\n        \"For integers m and n:\\n\" +\n        \"\u2022 If either m or n is even, then mn is even.\\n\" +\n        \"\u2022 If both m and n are odd, then mn is odd.\\n\" +\n        \"\u2022 If m and n are both even or both odd, then m+n and m\u2212n are even.\\n\" +\n        \"\u2022 If one is even and the other is odd, then m+n and m\u2212n are odd.\"\n    },\n    {\n      title: \"Adding &#038; subtracting real numbers\",\n      text:\n        \"Adding:\\n\" +\n        \"\u2022 Like signs: add absolute values; keep the sign.\\n\" +\n        \"\u2022 Unlike signs: subtract smaller absolute value from larger; keep sign of the larger absolute value.\\n\" +\n        \"Subtraction:\\n\" +\n        \"\u2022 a \u2212 b = a + (\u2212b).\"\n    },\n    {\n      title: \"Multiplying, dividing, reciprocals\",\n      text:\n        \"Multiplying:\\n\" +\n        \"\u2022 Like signs \u2192 positive, unlike signs \u2192 negative.\\n\" +\n        \"Dividing:\\n\" +\n        \"\u2022 Like signs \u2192 positive, unlike signs \u2192 negative (for nonzero numbers).\\n\" +\n        \"Reciprocal of nonzero a is 1\/a. Two numbers are reciprocals if their product is 1.\\n\" +\n        \"Division by 0 is undefined; 0 divided by a nonzero number is 0.\"\n    },\n    {\n      title: \"Equivalent fractions\",\n      text:\n        \"\u2212x\/y, \u2212(x\/y), and x\/(\u2212y) are equal (y \u2260 0).\\n\" +\n        \"Also: x\/y = (\u2212x)\/(\u2212y).\"\n    },\n    {\n      title: \"Order of operations\",\n      text:\n        \"1) Work separately above and below any fraction bar.\\n\" +\n        \"2) Work inside grouping symbols from inner to outer.\\n\" +\n        \"3) Powers, roots, absolute values.\\n\" +\n        \"4) Multiplication\/division left to right.\\n\" +\n        \"5) Addition\/subtraction left to right.\\n\" +\n        \"Tip: Use parentheses around negative substitutions.\"\n    },\n    {\n      title: \"Distributive property\",\n      text:\n        \"a(b + c) = ab + ac and (b + c)a = ba + ca.\\n\" +\n        \"Often described as \u201cclearing\u201d parentheses.\"\n    },\n    {\n      title: \"Inverse &#038; identity properties\",\n      text:\n        \"Additive inverse: a + (\u2212a) = 0.\\n\" +\n        \"Multiplicative inverse (a \u2260 0): a\u00b7(1\/a) = 1.\\n\" +\n        \"Identity: a + 0 = a and a\u00b71 = a.\"\n    },\n    {\n      title: \"Commutative &#038; associative\",\n      text:\n        \"Commutative:\\n\" +\n        \"\u2022 a + b = b + a\\n\" +\n        \"\u2022 ab = ba\\n\" +\n        \"Associative:\\n\" +\n        \"\u2022 a + (b + c) = (a + b) + c\\n\" +\n        \"\u2022 a(bc) = (ab)c\"\n    },\n    {\n      title: \"Expressions &#038; like terms\",\n      text:\n        \"Variable: value can change. Constant: fixed.\\n\" +\n        \"Numerical expression: constants + operations.\\n\" +\n        \"Algebraic expression: variables\/constants + operations.\\n\" +\n        \"Terms: parts added\/subtracted.\\n\" +\n        \"Like terms: same variables with same powers (constants are like terms).\\n\" +\n        \"Coefficient: number multiplied by a variable; if not shown, it\u2019s 1.\\n\" +\n        \"To evaluate: substitute and simplify.\"\n    },\n    {\n      title: \"Note about the pasted source\",\n      text:\n        \"Some items were incomplete\/missing in the pasted text (notably Question 35 and Question 58, and the numbering jumps in places). \" +\n        \"Everything else below follows the provided content as closely as possible.\"\n    }\n  ];\n\n  const QA = [\n    {\n      id: 1,\n      level: \"Medium\",\n      q: \"At midnight, the temperature was \u221212 degrees. By noon, the temperature had risen 28 degrees. During the afternoon, it fell 10 degrees, and fell another 3 degrees by midnight. What was the temperature at midnight?\",\n      choices: [\"A) 0\", \"B) 3\", \"C) 12\", \"D) 24\"],\n      a: \"3 degrees (Choice B).\",\n      work:\n        \"Rise means +, fell means \u2212.\\n\" +\n        \"Temperature = \u221212 + 28 \u2212 10 \u2212 3 = 3.\"\n    },\n    {\n      id: 2,\n      level: \"Easy\",\n      q: \"The number 0 is not an example of which of the following?\",\n      choices: [\"A) Real numbers\", \"B) Whole numbers\", \"C) Integers\", \"D) Natural numbers\"],\n      a: \"Natural numbers (Choice D).\",\n      work: \"Natural (counting) numbers start at 1.\"\n    },\n    {\n      id: 3,\n      level: \"Easy\",\n      q: \"How much does the product of 6 and 25 exceed the product of 3 and 25?\",\n      a: \"75.\",\n      work: \"6(25) \u2212 3(25) = 25(6 \u2212 3) = 25(3) = 75.\"\n    },\n    {\n      id: 4,\n      level: \"Easy\",\n      q: \"If a = xy and b = xz, what is the value of a \u2212 b?\",\n      choices: [\"A) x(y \u2212 z)\", \"B) x(z \u2212 y)\", \"C) z(x \u2212 y)\", \"D) y(x \u2212 z)\"],\n      a: \"x(y \u2212 z) (Choice A).\",\n      work: \"a \u2212 b = xy \u2212 xz = x(y \u2212 z).\"\n    },\n    {\n      id: 5,\n      level: \"Easy\",\n      q: \"Let # represent one of the four basic operations such that for any nonzero real numbers a and b:\\n\u2022 a # 0 = a\\n\u2022 a # b = b # a\\nWhich arithmetic operation does # represent?\",\n      choices: [\"A) + only\", \"B) \u2212 only\", \"C) \u00d7 only\", \"D) \u00f7 only\"],\n      a: \"Addition (+) (Choice A).\",\n      work: \"Only addition satisfies both conditions (identity with 0 and commutative).\"\n    },\n    {\n      id: 6,\n      level: \"Easy\",\n      q: \"m = 4ab and n = m\/(a + 2). What is the value of n when a = 3 and b = 5?\",\n      a: \"12.\",\n      work: \"m = 4(3)(5) = 60\\nn = 60\/(3 + 2) = 12.\"\n    },\n    {\n      id: 7,\n      level: \"Medium\",\n      q: \"If 13 \u2264 a \u2264 21, 9 \u2264 b \u2264 19, 2 \u2264 c \u2264 6, where a, b, and c are integers, what is the largest possible value of (a \u2212 b)\/c?\",\n      a: \"6.\",\n      work: \"Maximize numerator and minimize denominator:\\na = 21, b = 9, c = 2\\n(21 \u2212 9)\/2 = 6.\"\n    },\n    {\n      id: 8,\n      level: \"Medium\",\n      q: \"If 13 < a < 21, 9 < b < 19, 2 < c < 6, where a, b, and c are integers, what is the largest possible value of (a \u2212 b)\/c?\",\n      a: \"10\/3.\",\n      work: \"a max = 20, b min = 10, c min = 3\\n(20 \u2212 10)\/3 = 10\/3.\"\n    },\n    {\n      id: 9,\n      level: \"Advanced\",\n      q: \"If x and y are positive integers and 4x + 2y = 24, what is the sum of all possible values of x?\",\n      a: \"15.\",\n      work:\n        \"4x + 2y = 24 \u2192 2y = 24 \u2212 4x \u2192 y = 12 \u2212 2x.\\n\" +\n        \"For y to stay positive: x = 1,2,3,4,5.\\n\" +\n        \"Sum = 1 + 2 + 3 + 4 + 5 = 15.\"\n    },\n    {\n      id: 10,\n      level: \"Advanced\",\n      q: \"What is the value of a + bc when a = 2, b = 3, and c = 5?\",\n      a: \"17.\",\n      work: \"a + bc = 2 + (3)(5) = 2 + 15 = 17.\"\n    },\n    {\n      id: 11,\n      level: \"Easy\",\n      q: \"Evaluate the expression: 30 \u2212 5(4) + 2\\n(Source also showed a small x\/y table, but the expression is evaluated directly.)\",\n      a: \"12.\",\n      work: \"Multiply first: 30 \u2212 20 + 2 = 10 + 2 = 12.\"\n    },\n    {\n      id: 12,\n      level: \"Easy\",\n      q: \"Evaluate the expression: 14 \u00f7 7 \u00d7 5 \u2212 3\u00b2\",\n      a: \"1.\",\n      work:\n        \"Power first: 3\u00b2 = 9\\n\" +\n        \"Then \u00f7 and \u00d7 left to right: 14 \u00f7 7 = 2, 2 \u00d7 5 = 10\\n\" +\n        \"10 \u2212 9 = 1.\"\n    },\n    {\n      id: 13,\n      level: \"Easy\",\n      q: \"How many numbers are even and prime at the same time?\",\n      a: \"1.\",\n      work: \"Only 2 is both even and prime.\"\n    },\n    {\n      id: 14,\n      level: \"Easy\",\n      q: \"How many prime numbers are less than 20?\",\n      a: \"8.\",\n      work: \"Primes < 20: 2,3,5,7,11,13,17,19 \u2192 8 primes.\"\n    },\n    {\n      id: 15,\n      level: \"Easy\",\n      q: \"Which number is divisible by 2 and 3?\",\n      choices: [\"A) 3517\", \"B) 4203\", \"C) 5100\", \"D) 3112\"],\n      a: \"5100 (Choice C).\",\n      work:\n        \"Divisible by 2 \u2192 last digit even.\\n\" +\n        \"Divisible by 3 \u2192 sum of digits divisible by 3.\\n\" +\n        \"5100 works.\"\n    },\n    {\n      id: 16,\n      level: \"Easy\",\n      q: \"Which of the following numbers is neither prime nor composite?\",\n      choices: [\"A) 2\", \"B) 0\", \"C) 1\", \"D) 3\"],\n      a: \"1 (Choice C).\",\n      work: \"1 is neither prime nor composite.\"\n    },\n    {\n      id: 17,\n      level: \"Easy\",\n      q: \"How many positive factors does the number 12 have?\",\n      a: \"6.\",\n      work: \"Factors: 1,2,3,4,6,12 \u2192 6 factors.\"\n    },\n    {\n      id: 18,\n      level: \"Easy\",\n      q: \"When a whole number A is divided by 5, the quotient is 13 and the remainder is 4. What is A?\",\n      a: \"69.\",\n      work: \"A = 5(13) + 4 = 65 + 4 = 69.\"\n    },\n    {\n      id: 19,\n      level: \"Medium\",\n      q: \"All the numbers divisible by both 3 and 10 are also divisible by:\",\n      choices: [\"A) 4\", \"B) 9\", \"C) 12\", \"D) 15\"],\n      a: \"15 (Choice D).\",\n      work: \"Example: 30 is divisible by 3 and 10, and it is divisible by 15 (but not by 4, 9, or 12).\"\n    },\n    {\n      id: 20,\n      level: \"Medium\",\n      q: \"If A divided by 4 leaves remainder 3, and A divided by 3 leaves remainder 0, what is a possible value of A?\",\n      choices: [\"A) 8\", \"B) 11\", \"C) 15\", \"D) 18\"],\n      a: \"15 (Choice C).\",\n      work:\n        \"Remainder 0 when divided by 3 \u2192 A is divisible by 3.\\n\" +\n        \"Check 15: 15 \u00f7 4 = 3 remainder 3.\"\n    },\n    {\n      id: 21,\n      level: \"Medium\",\n      q: \"If (2x)\/y = 1\/2, what is y\/x?\",\n      a: \"4.\",\n      work: \"(2x)\/y = 1\/2 \u2192 y = 4x \u2192 y\/x = 4.\"\n    },\n    {\n      id: 22,\n      level: \"Easy\",\n      q: \"How many integers from \u22123000 to 3000 inclusive are divisible by 3?\",\n      a: \"2001.\",\n      work:\n        \"From 3 to 3000: 1000 multiples.\\n\" +\n        \"From \u22123 to \u22123000: 1000 multiples.\\n\" +\n        \"Plus 0: 1.\\n\" +\n        \"Total = 1000 + 1000 + 1 = 2001.\"\n    },\n    {\n      id: 23,\n      level: \"Medium\",\n      q: \"If a\u00b2b\u00b3c\u2075 is negative, which product is always positive?\",\n      choices: [\"A) ac\", \"B) b\u00b2c\", \"C) ab\", \"D) bc\"],\n      a: \"From the sign analysis in the source: bc must be negative (Choice D was highlighted).\",\n      work:\n        \"a\u00b2 is always positive. So the sign depends on b\u00b3c\u2075 \u2192 sign(b)\u00b7sign(c).\\n\" +\n        \"If the expression is negative, then b and c have opposite signs \u2192 bc is negative.\\n\" +\n        \"Note: This determines bc\u2019s sign (negative), even though the prompt says \u201calways positive.\u201d\"\n    },\n    {\n      id: 24,\n      level: \"Medium\",\n      q: \"For which value of m is m(m \u2212 2)(m + 1) negative?\",\n      choices: [\"A) 0\", \"B) \u22121\", \"C) 2\", \"D) \u22122\"],\n      a: \"\u22122 (Choice D).\",\n      work:\n        \"Expression is 0 at m = 0, 2, \u22121.\\n\" +\n        \"Try m = \u22122: (\u22122)(\u22124)(\u22121) = \u22128 (negative).\"\n    },\n    {\n      id: 25,\n      level: \"Medium\",\n      q: \"If c = ab\/d, then 1\/(ab) = ?\",\n      choices: [\"A) c + d\", \"B) cd\", \"C) c\/d\", \"D) 1\/(cd)\"],\n      a: \"1\/(cd) (Choice D).\",\n      work: \"c = ab\/d \u2192 ab = cd \u2192 1\/(ab) = 1\/(cd).\"\n    },\n    {\n      id: 26,\n      level: \"Medium\",\n      q: \"If the product of 12 numbers is positive, what is the greatest number of them that can be negative?\",\n      choices: [\"A) 2\", \"B) 10\", \"C) 11\", \"D) 12\"],\n      a: \"12 (Choice D).\",\n      work:\n        \"A product is positive when the number of negative factors is even.\\n\" +\n        \"With 12 numbers, the maximum even count of negatives is 12.\\n\" +\n        \"Note: the pasted text marked \u201cC\u201d, but 11 negatives would make the product negative.\"\n    },\n    {\n      id: 27,\n      level: \"Medium\",\n      q: \"Solve for m: 5m + m + 2m \u2212 10 = m \u2212 3m + 5\",\n      choices: [\"A) 3\/2\", \"B) \u22123\/2\", \"C) 3\", \"D) 2\"],\n      a: \"3\/2 (Choice A).\",\n      work:\n        \"8m \u2212 10 = \u22122m + 5\\n\" +\n        \"10m = 15\\n\" +\n        \"m = 15\/10 = 3\/2.\"\n    },\n    {\n      id: 28,\n      level: \"Medium\",\n      q: \"If k \u2212 (1\/2)m = 0 and k = 1, what is m?\",\n      a: \"2.\",\n      work: \"1 \u2212 (1\/2)m = 0 \u2192 (1\/2)m = 1 \u2192 m = 2.\"\n    },\n    {\n      id: 29,\n      level: \"Easy\",\n      q: \"The width of a room is w and the length is 6 meters longer than its width. What is the perimeter?\",\n      choices: [\"A) 2w + 6\", \"B) 6w + 12\", \"C) 4w + 12\", \"D) w\u00b2 + 6\"],\n      a: \"4w + 12 (Choice C).\",\n      work:\n        \"Width = w, Length = w + 6\\n\" +\n        \"Perimeter = 2(w + (w + 6)) = 4w + 12.\"\n    },\n    {\n      id: 30,\n      level: \"Medium\",\n      q: \"One kilogram of apple costs $3. At this rate, how many dollars will m kilograms cost?\",\n      choices: [\"A) 3\/m\", \"B) m\/3\", \"C) 3m\", \"D) 3 + m\"],\n      a: \"3m (Choice C).\",\n      work: \"Multiply rate by quantity: 3 \u00d7 m = 3m.\"\n    },\n    {\n      id: 31,\n      level: \"Easy\",\n      q: \"Which is equivalent to 2(3c \u2212 4) + 10?\",\n      choices: [\"A) 6c + 2\", \"B) 6c \u2212 2\", \"C) 6c + 18\", \"D) 2c + 10\"],\n      a: \"6c + 2 (Choice A).\",\n      work: \"2(3c \u2212 4) + 10 = 6c \u2212 8 + 10 = 6c + 2.\"\n    },\n    {\n      id: 32,\n      level: \"Easy\",\n      q: \"If 3y \u2212 6 = 9, what is 2y + 7?\",\n      a: \"17.\",\n      work: \"3y = 15 \u2192 y = 5 \u2192 2y + 7 = 2(5) + 7 = 17.\"\n    },\n    {\n      id: 33,\n      level: \"Medium\",\n      q: \"If a \u2212 b = 12 and a\/2 = 10, what is a + b?\",\n      a: \"28.\",\n      work:\n        \"a\/2 = 10 \u2192 a = 20\\n\" +\n        \"20 \u2212 b = 12 \u2192 b = 8\\n\" +\n        \"a + b = 20 + 8 = 28.\"\n    },\n    {\n      id: 34,\n      level: \"Medium\",\n      q: \"3, 4, 6, 10, m. If the mean of the five numbers is 6, what is m?\",\n      a: \"7.\",\n      work:\n        \"(3 + 4 + 6 + 10 + m)\/5 = 6 \u2192 23 + m = 30 \u2192 m = 7.\"\n    },\n    {\n      id: 35,\n      level: \"Medium\",\n      q: \"Question 35 was incomplete in the pasted text.\\nIt began with: \u201cx \u2212 yx = m\u201d (or a similar form) and stated: x is positive and y is negative, then asked which statement must be true.\",\n      a: \"Answer not available from the provided text.\",\n      work: \"If you paste the full Question 35 (including the exact equation and choices), I can add it precisely.\"\n    },\n    {\n      id: 38,\n      level: \"Medium\",\n      q: \"Omar earns m dollars per week. At this rate, how many weeks will it take him to earn c dollars?\",\n      choices: [\"A) cm\", \"B) c + m\", \"C) m\/c\", \"D) c\/m\"],\n      a: \"c\/m (Choice D).\",\n      work: \"Weeks = (total earn c) \/ (earn per week m) = c\/m.\"\n    },\n    {\n      id: 39,\n      level: \"Easy\",\n      q: \"If (4a)\/b = 5, what is b\/a?\",\n      a: \"4\/5 (0.8).\",\n      work: \"(4a)\/b = 5 \u2192 a\/b = 5\/4 \u2192 b\/a = 4\/5.\"\n    },\n    {\n      id: 40,\n      level: \"Easy\",\n      q: \"A task can be done in 20 hours by 4 students. How many students are needed to do the same task in 10 hours?\",\n      a: \"8 students.\",\n      work: \"Half the time \u2192 double the students: 4 \u00d7 2 = 8.\"\n    },\n    {\n      id: 41,\n      level: \"Medium\",\n      q: \"If 4a = 2b = c, what is the average of a, b, and c in terms of a?\",\n      choices: [\"A) 4a\/3\", \"B) 2a\", \"C) 7a\/3\", \"D) 3a\"],\n      a: \"7a\/3 (Choice C).\",\n      work:\n        \"From 4a = c \u2192 c = 4a\\n\" +\n        \"From 4a = 2b \u2192 b = 2a\\n\" +\n        \"Average = (a + 2a + 4a)\/3 = 7a\/3.\"\n    },\n    {\n      id: 42,\n      level: \"Medium\",\n      q: \"If a and b are positive integers and a\u00b2 \u2212 b\u00b2 = 24, which could be the smallest value of a?\",\n      choices: [\"A) 4\", \"B) 5\", \"C) 7\", \"D) 8\"],\n      a: \"5 (Choice B).\",\n      work:\n        \"a\u00b2 = 24 + b\u00b2. Try b = 1..4:\\n\" +\n        \"b=1 \u2192 a\u00b2=25 \u2192 a=5 works.\"\n    },\n    {\n      id: 43,\n      level: \"Medium\",\n      q: \"If the average of a and 2b is 26, the average of b and 2c is 41, and the average of c and 2a is 23, what is the average of a, b, and c?\",\n      choices: [\"A) 12\", \"B) 16\", \"C) 20\", \"D) 24\"],\n      a: \"20 (Choice C).\",\n      work:\n        \"(a + 2b)\/2 = 26 \u2192 a + 2b = 52\\n\" +\n        \"(b + 2c)\/2 = 41 \u2192 b + 2c = 82\\n\" +\n        \"(c + 2a)\/2 = 23 \u2192 c + 2a = 46\\n\" +\n        \"Add: 3a + 3b + 3c = 180 \u2192 a + b + c = 60\\n\" +\n        \"Average = 60\/3 = 20.\"\n    },\n    {\n      id: 44,\n      level: \"Advanced\",\n      q: \"If the average of 2a and b equals 50% of 4b, what is a\/b?\",\n      a: \"3\/2 (1.5).\",\n      work:\n        \"Average(2a, b) = (2a + b)\/2\\n\" +\n        \"(2a + b)\/2 = 0.5(4b) = 2b\\n\" +\n        \"2a + b = 4b \u2192 2a = 3b \u2192 a\/b = 3\/2.\"\n    },\n    {\n      id: 45,\n      level: \"Medium\",\n      q: \"On a map, 3 cm represents k kilometers. How many kilometers are represented by p cm?\",\n      choices: [\"A) 3pk\", \"B) k\/(3p)\", \"C) 3k\/p\", \"D) pk\/3\"],\n      a: \"pk\/3 (Choice D).\",\n      work: \"Scale: 3 cm \u2192 k km, so p cm \u2192 (p\u00b7k)\/3 km.\"\n    },\n    {\n      id: 46,\n      level: \"Easy\",\n      q: \"Which expression cannot be equal to 0 for the same value of k?\",\n      choices: [\"A) k\u00b2 \u2212 2\", \"B) k\u00b2 + 1\", \"C) 1 \u2212 k\u00b2\", \"D) 2 \u2212 k\u00b2\"],\n      a: \"k\u00b2 + 1 (Choice B).\",\n      work: \"k\u00b2 \u2265 0 for real k, so k\u00b2 + 1 > 0 always.\"\n    },\n    {\n      id: 47,\n      level: \"Advanced\",\n      q: \"If 4a + 5b equals 250% of 4b, what is (a + b)\/(a \u2212 b)?\",\n      a: \"9.\",\n      work:\n        \"250% of 4b = 2.5\u00b74b = 10b\\n\" +\n        \"4a + 5b = 10b \u2192 4a = 5b \u2192 a\/b = 5\/4\\n\" +\n        \"(a + b)\/(a \u2212 b) = (1.25b + b)\/(1.25b \u2212 b) = 2.25b\/0.25b = 9.\"\n    },\n    {\n      id: 48,\n      level: \"Advanced\",\n      q: \"If 4a \u2212 35 = 4b + 13, what is a \u2212 b?\",\n      a: \"12.\",\n      work:\n        \"4a \u2212 4b = 13 + 35 = 48\\n\" +\n        \"4(a \u2212 b) = 48 \u2192 a \u2212 b = 12.\"\n    },\n    {\n      id: 49,\n      level: \"Medium\",\n      q: \"A\u00b2 \u2212 B\u00b2 = 19. If A and B are positive integers, what is A?\",\n      a: \"10.\",\n      work:\n        \"Find squares with difference 19:\\n\" +\n        \"100 \u2212 81 = 19 \u2192 A\u00b2 = 100 \u2192 A = 10.\"\n    },\n    {\n      id: 50,\n      level: \"Medium\",\n      q: \"If 10m \u2212 5 = a, what is 2m \u2212 1?\",\n      choices: [\"A) a\/5 \u2212 1\", \"B) a\/5\", \"C) a\/5 + 1\", \"D) a\/5 + 5\"],\n      a: \"a\/5 (Choice B).\",\n      work:\n        \"10m \u2212 5 = a \u2192 10m = a + 5 \u2192 m = a\/10 + 1\/2\\n\" +\n        \"2m \u2212 1 = 2(a\/10 + 1\/2) \u2212 1 = a\/5.\"\n    },\n    {\n      id: 51,\n      level: \"Medium\",\n      q: \"If a + b = 10 and 1\/a + 1\/b = 20, what is ab?\",\n      a: \"1\/2 (0.5).\",\n      work:\n        \"1\/a + 1\/b = (a + b)\/ab = 20\\n\" +\n        \"10\/ab = 20 \u2192 ab = 10\/20 = 1\/2.\"\n    },\n    {\n      id: 52,\n      level: \"Medium\",\n      q: \"Which is equivalent to (1\/x)\/(x + 3)?\",\n      choices: [\"A) x(x + 3)\", \"B) x\/(x + 3)\", \"C) (x + 3)\/x\", \"D) 1\/(x(x + 3))\"],\n      a: \"1\/(x(x + 3)) (Choice D).\",\n      work:\n        \"(1\/x)\/(x + 3) = (1\/x) \u00f7 (x + 3) = (1\/x)\u00b7(1\/(x + 3)) = 1\/(x(x + 3)).\"\n    },\n    {\n      id: 53,\n      level: \"Medium\",\n      q: \"If ab = 8, which cannot be a value of a?\",\n      choices: [\"A) \u22126\", \"B) 0\", \"C) \u22125\", \"D) 1\"],\n      a: \"0 (Choice B).\",\n      work: \"If a = 0, then ab = 0, not 8.\"\n    },\n    {\n      id: 54,\n      level: \"Medium\",\n      q: \"If (2\/3)a = 5 \u2212 (3\/5)b, what is 10a + 9b?\",\n      a: \"75.\",\n      work:\n        \"Multiply all terms by 15:\\n\" +\n        \"10a = 75 \u2212 9b\\n\" +\n        \"So 10a + 9b = 75.\"\n    },\n    {\n      id: 55,\n      level: \"Medium\",\n      q: \"Which expression is NOT equivalent to ab(c + d)?\",\n      choices: [\"A) abd + abc\", \"B) ab(d + c)\", \"C) ba(c + d)\", \"D) abc + bd\"],\n      a: \"abc + bd (Choice D).\",\n      work: \"All others keep the factor ab; D is missing a factor a with bd.\"\n    },\n    {\n      id: 56,\n      level: \"Easy\",\n      q: \"If 2a + 2b = 9, what is 0.5a + 0.5b?\",\n      a: \"2.25.\",\n      work:\n        \"2(a + b) = 9 \u2192 a + b = 4.5\\n\" +\n        \"0.5a + 0.5b = 0.5(a + b) = 0.5(4.5) = 2.25.\"\n    },\n    {\n      id: 57,\n      level: \"Medium\",\n      q: \"What is the value of | |5| \u2212 |\u22127| | ?\",\n      choices: [\"A) 2\", \"B) \u22122\", \"C) 12\", \"D) \u221212\"],\n      a: \"2 (Choice A).\",\n      work: \"||5| \u2212 |\u22127|| = |5 \u2212 7| = |\u22122| = 2.\"\n    },\n    {\n      id: 58,\n      level: \"Easy\",\n      q: \"Question 58 title appeared (\u201cEasy Question\u201d) but the actual question text was not included in the pasted content.\",\n      a: \"Answer not available from the provided text.\",\n      work: \"Paste Question 58 fully and I\u2019ll add it.\"\n    }\n  ];\n\n  \/** -----------------------------\n   *  STATE\n   *  ----------------------------*\/\n  const state = {\n    theme: \"dark\",          \/\/ \"dark\" | \"light\"\n    revealed: new Set(),    \/\/ question ids\n    notesOpen: false\n  };\n\n  function loadState() {\n    try {\n      const raw = localStorage.getItem(STORAGE_KEY);\n      if (!raw) return;\n      const parsed = JSON.parse(raw);\n      if (parsed && typeof parsed === \"object\") {\n        if (parsed.theme === \"light\" || parsed.theme === \"dark\") state.theme = parsed.theme;\n        if (Array.isArray(parsed.revealed)) state.revealed = new Set(parsed.revealed);\n        if (typeof parsed.notesOpen === \"boolean\") state.notesOpen = parsed.notesOpen;\n      }\n    } catch {\n      \/\/ ignore\n    }\n  }\n\n  function saveState() {\n    try {\n      const payload = {\n        theme: state.theme,\n        revealed: Array.from(state.revealed),\n        notesOpen: !!els.notesDetails?.open\n      };\n      localStorage.setItem(STORAGE_KEY, JSON.stringify(payload));\n    } catch {\n      \/\/ ignore\n    }\n  }\n\n  \/** -----------------------------\n   *  THEME\n   *  ----------------------------*\/\n  function applyTheme() {\n    if (state.theme === \"light\") {\n      document.documentElement.setAttribute(\"data-theme\", \"light\");\n      els.btnTheme?.setAttribute(\"aria-pressed\", \"true\");\n      els.btnTheme && (els.btnTheme.textContent = \"Light\");\n    } else {\n      document.documentElement.removeAttribute(\"data-theme\");\n      els.btnTheme?.setAttribute(\"aria-pressed\", \"false\");\n      els.btnTheme && (els.btnTheme.textContent = \"Dark\");\n    }\n  }\n\n  function toggleTheme() {\n    state.theme = (state.theme === \"light\") ? \"dark\" : \"light\";\n    applyTheme();\n    saveState();\n  }\n\n  \/** -----------------------------\n   *  RENDER HELPERS\n   *  ----------------------------*\/\n  function make(tag, className, text) {\n    const node = document.createElement(tag);\n    if (className) node.className = className;\n    if (text !== undefined && text !== null) node.textContent = String(text);\n    return node;\n  }\n\n  function levelClass(level) {\n    const v = String(level || \"\").toLowerCase();\n    if (v.includes(\"easy\")) return \"levelEasy\";\n    if (v.includes(\"medium\")) return \"levelMedium\";\n    if (v.includes(\"advanced\")) return \"levelAdvanced\";\n    return \"\";\n  }\n\n  function renderNotes() {\n    if (!els.notes) return;\n    els.notes.innerHTML = \"\";\n\n    NOTES.forEach((n) => {\n      const card = make(\"div\", \"noteCard\");\n      const h = make(\"h3\", \"\", n.title);\n      const p = make(\"p\", \"\", n.text);\n      card.appendChild(h);\n      card.appendChild(p);\n      els.notes.appendChild(card);\n    });\n  }\n\n  function makeChoices(choices) {\n    if (!choices || !choices.length) return null;\n    const box = make(\"div\", \"choices\");\n    choices.forEach((c) => {\n      const row = make(\"div\", \"choice\");\n      const bullet = make(\"span\", \"\", \"\u2022\");\n      const txt = make(\"span\", \"\", c);\n      row.appendChild(bullet);\n      row.appendChild(txt);\n      box.appendChild(row);\n    });\n    return box;\n  }\n\n  function makeWork(work) {\n    if (!work) return null;\n    \/\/ Reuse .choices styling as a neat monospaced \u201cwork box\u201d\n    const box = make(\"div\", \"choices\");\n    const lines = String(work).split(\"\\n\");\n    lines.forEach((line) => {\n      const row = make(\"div\", \"choice\");\n      const bullet = make(\"span\", \"\", \"\u21b3\");\n      const txt = make(\"span\", \"\", line);\n      row.appendChild(bullet);\n      row.appendChild(txt);\n      box.appendChild(row);\n    });\n    return box;\n  }\n\n  function flipToAnswer(card, id) {\n    card.classList.add(\"is-answer\");\n    state.revealed.add(id);\n\n    const btnA = card.querySelector(\".btnAnswer\");\n    const btnQ = card.querySelector(\".btnQuestion\");\n    if (btnA && btnQ) {\n      btnA.hidden = true;\n      btnQ.hidden = false;\n      btnA.setAttribute(\"aria-expanded\", \"true\");\n      btnQ.focus();\n    }\n    saveState();\n    updateStats();\n  }\n\n  function flipToQuestion(card, id) {\n    card.classList.remove(\"is-answer\");\n    state.revealed.delete(id);\n\n    const btnA = card.querySelector(\".btnAnswer\");\n    const btnQ = card.querySelector(\".btnQuestion\");\n    if (btnA && btnQ) {\n      btnQ.hidden = true;\n      btnA.hidden = false;\n      btnA.setAttribute(\"aria-expanded\", \"false\");\n      btnA.focus();\n    }\n    saveState();\n    updateStats();\n  }\n\n  let currentFiltered = QA.slice();\n\n  function renderQA(items) {\n    if (!els.list) return;\n    els.list.innerHTML = \"\";\n\n    items.forEach((item) => {\n      const card = make(\"section\", \"card\");\n      card.setAttribute(\"data-id\", String(item.id));\n\n      \/\/ Head\n      const head = make(\"div\", \"cardHead\");\n      const badges = make(\"div\", \"badges\");\n\n      const bQ = make(\"span\", \"badge\", `Question ${item.id}`);\n      const bL = make(\"span\", `badge ${levelClass(item.level)}`, item.level || \"Question\");\n      badges.appendChild(bQ);\n      badges.appendChild(bL);\n\n      const bHint = make(\"span\", \"badge\", \"Flip\");\n      head.appendChild(badges);\n      head.appendChild(bHint);\n\n      \/\/ Body\n      const wrap = make(\"div\", \"qWrap\");\n      const q = make(\"p\", \"qText\");\n      q.appendChild(make(\"b\", \"\", \"Q: \"));\n      q.appendChild(document.createTextNode(item.q || \"\"));\n\n      const a = make(\"p\", \"aText\");\n      a.appendChild(make(\"b\", \"\", \"A: \"));\n      a.appendChild(document.createTextNode(item.a || \"\"));\n\n      wrap.appendChild(q);\n\n      const choicesBox = makeChoices(item.choices);\n      if (choicesBox) wrap.appendChild(choicesBox);\n\n      wrap.appendChild(a);\n\n      const workBox = makeWork(item.work);\n      if (workBox) wrap.appendChild(workBox);\n\n      \/\/ Actions\n      const actions = make(\"div\", \"actions\");\n      const flipBtns = make(\"div\", \"flipBtns\");\n\n      const btnAnswer = make(\"button\", \"btn btnSmall btnAnswer\", \"Show answer\");\n      btnAnswer.type = \"button\";\n      btnAnswer.setAttribute(\"aria-expanded\", \"false\");\n\n      const btnQuestion = make(\"button\", \"btn btnSmall btnQuestion\", \"Show question\");\n      btnQuestion.type = \"button\";\n      btnQuestion.hidden = true;\n\n      flipBtns.appendChild(btnAnswer);\n      flipBtns.appendChild(btnQuestion);\n\n      const meta = make(\"div\", \"meta\");\n      meta.appendChild(make(\"span\", \"dot\"));\n      meta.appendChild(make(\"span\", \"\", \"Mobile-first\"));\n\n      actions.appendChild(flipBtns);\n      actions.appendChild(meta);\n\n      \/\/ Assemble\n      card.appendChild(head);\n      card.appendChild(wrap);\n      card.appendChild(actions);\n\n      \/\/ Restore revealed state\n      if (state.revealed.has(item.id)) {\n        card.classList.add(\"is-answer\");\n        btnAnswer.hidden = true;\n        btnQuestion.hidden = false;\n        btnAnswer.setAttribute(\"aria-expanded\", \"true\");\n      }\n\n      \/\/ Listeners\n      btnAnswer.addEventListener(\"click\", () => flipToAnswer(card, item.id));\n      btnQuestion.addEventListener(\"click\", () => flipToQuestion(card, item.id));\n\n      els.list.appendChild(card);\n    });\n\n    \/\/ Empty state\n    if (els.empty) {\n      els.empty.hidden = items.length !== 0;\n    }\n  }\n\n  function filterQA(term) {\n    const t = String(term || \"\").trim().toLowerCase();\n    if (!t) return QA.slice();\n\n    return QA.filter((x) => {\n      const blob = [\n        x.id,\n        x.level,\n        x.q,\n        (x.choices || []).join(\" \"),\n        x.a,\n        x.work\n      ].join(\" \").toLowerCase();\n      return blob.includes(t);\n    });\n  }\n\n  function updateStats() {\n    if (!els.count) return;\n    const total = QA.length;\n    const showing = currentFiltered.length;\n\n    \/\/ how many revealed among currently visible\n    let revealedVisible = 0;\n    for (const q of currentFiltered) {\n      if (state.revealed.has(q.id)) revealedVisible++;\n    }\n\n    els.count.textContent =\n      `Showing ${showing} of ${total} \u2022 Revealed ${revealedVisible}\/${showing}`;\n  }\n\n  \/** -----------------------------\n   *  BULK ACTIONS\n   *  ----------------------------*\/\n  function revealAllVisible() {\n    const ids = new Set(currentFiltered.map(x => x.id));\n    ids.forEach((id) => state.revealed.add(id));\n    saveState();\n    renderQA(currentFiltered);\n    updateStats();\n  }\n\n  function hideAllVisible() {\n    const ids = new Set(currentFiltered.map(x => x.id));\n    ids.forEach((id) => state.revealed.delete(id));\n    saveState();\n    renderQA(currentFiltered);\n    updateStats();\n  }\n\n  \/** -----------------------------\n   *  INIT\n   *  ----------------------------*\/\n  function init() {\n    loadState();\n    applyTheme();\n\n    renderNotes();\n    if (els.notesDetails) {\n      els.notesDetails.open = !!state.notesOpen;\n      els.notesDetails.addEventListener(\"toggle\", saveState);\n    }\n\n    currentFiltered = QA.slice();\n    renderQA(currentFiltered);\n    updateStats();\n\n    els.search?.addEventListener(\"input\", () => {\n      currentFiltered = filterQA(els.search.value);\n      renderQA(currentFiltered);\n      updateStats();\n    });\n\n    els.btnRevealAll?.addEventListener(\"click\", revealAllVisible);\n    els.btnHideAll?.addEventListener(\"click\", hideAllVisible);\n    els.btnTheme?.addEventListener(\"click\", toggleTheme);\n  }\n\n  init();\n})();\n\n<\/script>\n\n<!-- index.html -->\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\n  <title>Arithmetic Skills and Concepts \u2014 Lesson 1 (Q&#038;A)<\/title>\n  <meta name=\"color-scheme\" content=\"light dark\" \/>\n  <link rel=\"stylesheet\" href=\"styles.css\" \/>\n<\/head>\n\n<body>\n  <div class=\"bg\"><\/div>\n\n  <header class=\"topbar\">\n    <div class=\"wrap\">\n      <div class=\"brand\">\n        <div class=\"kicker\">Arithmetic Skills and Concepts<\/div>\n        <h1 class=\"title\">Lesson 1 \u2014 Questions &#038; Answers<\/h1>\n        <p class=\"subtitle\">\n          Tap <b>Show answer<\/b> to flip a card into Answer Mode, then <b>Show question<\/b> to flip it back.\n        <\/p>\n      <\/div>\n\n      <div class=\"controls\">\n        <label class=\"search\" aria-label=\"Search questions and answers\">\n          <span class=\"searchIcon\" aria-hidden=\"true\">\u2315<\/span>\n          <input id=\"searchInput\" type=\"search\" placeholder=\"Search (e.g., prime, remainder, order of operations)...\" autocomplete=\"off\" \/>\n        <\/label>\n\n        <div class=\"btnRow\">\n          <button id=\"btnRevealAll\" class=\"btn btnPrimary\" type=\"button\">Reveal all<\/button>\n          <button id=\"btnHideAll\" class=\"btn btnSecondary\" type=\"button\">Hide all<\/button>\n          <button id=\"btnTheme\" class=\"btn btnGhost\" type=\"button\" aria-pressed=\"false\" title=\"Toggle theme\">Theme<\/button>\n        <\/div>\n\n        <div class=\"stats\" aria-live=\"polite\">\n          <span id=\"countText\">Loading\u2026<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/header>\n\n  <main class=\"wrap\">\n    <section class=\"panel\">\n      <details id=\"notesDetails\">\n        <summary>\n          <span>Lesson notes (rules &#038; concepts)<\/span>\n          <span class=\"pill\">Tap to open<\/span>\n        <\/summary>\n        <div id=\"notes\" class=\"notes\">\n          <!-- Filled by app.js -->\n        <\/div>\n      <\/details>\n    <\/section>\n\n    <section class=\"panel\">\n      <div class=\"panelHead\">\n        <h2 class=\"h2\">Practice Questions<\/h2>\n        <p class=\"muted\">Each question is a separate block. Flip to reveal the answer.<\/p>\n      <\/div>\n\n      <div id=\"qaList\" class=\"qaList\" aria-live=\"polite\">\n        <!-- Cards inserted by app.js -->\n      <\/div>\n\n      <p id=\"emptyState\" class=\"empty\" hidden>No matches. Try a different search.<\/p>\n      <p class=\"fineprint\">Tip: Your progress (revealed cards + theme) can be saved on this device.<\/p>\n    <\/section>\n  <\/main>\n\n  <footer class=\"footer wrap\">\n    <span class=\"muted\">Lesson 1 \u2022 Mobile-first Q&#038;A<\/span>\n  <\/footer>\n\n  <script src=\"app.js\" defer><\/script>\n<\/body>\n<\/html>","protected":false},"excerpt":{"rendered":"<p>Arithmetic Skills and Concepts \u2014 Lesson 1 (Q&#038;A) Arithmetic Skills and Concepts Lesson 1 \u2014 Questions &#038; Answers Tap Show [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1722","page","type-page","status-publish","hentry"],"acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/korsaty.net\/ar\/wp-json\/wp\/v2\/pages\/1722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/korsaty.net\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/korsaty.net\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/korsaty.net\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/korsaty.net\/ar\/wp-json\/wp\/v2\/comments?post=1722"}],"version-history":[{"count":1,"href":"https:\/\/korsaty.net\/ar\/wp-json\/wp\/v2\/pages\/1722\/revisions"}],"predecessor-version":[{"id":1723,"href":"https:\/\/korsaty.net\/ar\/wp-json\/wp\/v2\/pages\/1722\/revisions\/1723"}],"wp:attachment":[{"href":"https:\/\/korsaty.net\/ar\/wp-json\/wp\/v2\/media?parent=1722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}