{"id":27083,"date":"2026-08-25T21:07:31","date_gmt":"2026-08-25T15:37:31","guid":{"rendered":"https:\/\/qsh.in\/boards\/wbbse\/?p=27083"},"modified":"2026-08-25T21:16:16","modified_gmt":"2026-08-25T15:46:16","slug":"3-digit-subtraction","status":"publish","type":"post","link":"https:\/\/qsh.in\/boards\/wbbse\/mental-math\/3-digit-subtraction\/","title":{"rendered":"\u09e9-\u0985\u0999\u09cd\u0995\u09c7\u09b0 \u09ac\u09bf\u09df\u09cb\u0997\u09c7\u09b0 \u09ae\u09cd\u09af\u09be\u099c\u09bf\u0995! (Samudrayaan Deep Ocean)"},"content":{"rendered":"<p>\u0986\u099c\u0995\u09c7\u09b0 \u0997\u09c7\u09ae\u099f\u09bf \u098f\u0995\u099f\u09c1 \u0986\u09b2\u09be\u09a6\u09be! \u0986\u09ae\u09b0\u09be \u099a\u09b2\u09c7 \u098f\u09b8\u09c7\u099b\u09bf \u0997\u09ad\u09c0\u09b0 \u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09c7\u09b0 \u09a8\u09bf\u099a\u09c7, \u0986\u09ae\u09be\u09a6\u09c7\u09b0 <strong>\u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09af\u09be\u09a8 (Submarine)<\/strong> \u09a8\u09bf\u09df\u09c7\u0964 \u0995\u09bf\u09a8\u09cd\u09a4\u09c1 \u09b9\u09a0\u09be\u09ce \u0995\u09b0\u09c7 \u09b8\u09be\u09ae\u09a8\u09c7 \u0985\u09a8\u09c7\u0995 \u09ac\u09dc \u09ac\u09dc \u09b8\u09be\u09ae\u09c1\u09a6\u09cd\u09b0\u09bf\u0995 \u09ae\u09be\u0987\u09a8 \u0986\u09b0 \u09aa\u09be\u09a5\u09b0 \u09ad\u09c7\u09b8\u09c7 \u0986\u09b8\u099b\u09c7! \u098f\u0997\u09c1\u09b2\u09cb\u0995\u09c7 \u09b8\u09b0\u09be\u09a4\u09c7 \u09b9\u09b2\u09c7 \u09a4\u09cb\u09ae\u09be\u0995\u09c7 <strong>\u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad<\/strong> \u099b\u09c1\u0981\u09dc\u09a4\u09c7 \u09b9\u09ac\u09c7\u0964 \u0986\u09b0 \u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad \u09ab\u09be\u09df\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u098f\u0995\u09ae\u09be\u09a4\u09cd\u09b0 \u0989\u09aa\u09be\u09df \u09b9\u09b2\u09cb\u2014\u09ac\u09dc \u09ac\u09dc \u09e9-\u0985\u0999\u09cd\u0995\u09c7\u09b0 \u09ac\u09bf\u09df\u09cb\u0997 \u0996\u09be\u09a4\u09be-\u0995\u09b2\u09ae \u099b\u09be\u09dc\u09be \u09e8 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7 \u09b8\u09ae\u09be\u09a7\u09be\u09a8 \u0995\u09b0\u09be!<\/p>\n<p>\u09ad\u09df \u09aa\u09c7\u09df\u09cb \u09a8\u09be, \u0986\u099c \u0986\u09ae\u09bf \u09a4\u09cb\u09ae\u09be\u0995\u09c7 <strong>\u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u09ae\u09c7\u09a5\u09a1 (Rounding Strategy)<\/strong> \u09a8\u09be\u09ae\u09c7\u09b0 \u098f\u0995\u099f\u09bf \u09ae\u09cd\u09af\u09be\u099c\u09bf\u0995 \u099f\u09cd\u09b0\u09bf\u0995 \u09b6\u09c7\u0996\u09be\u09ac\u0964<\/p>\n<h3>\u09ae\u09cd\u09af\u09be\u099c\u09bf\u0995 \u099f\u09cd\u09b0\u09bf\u0995: \u09e9-\u0985\u0999\u09cd\u0995\u09c7\u09b0 \u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u0995\u09cc\u09b6\u09b2 \u2728<\/h3>\n<p>\u09af\u0996\u09a8 \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09be\u09b0 \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf \u0995\u09cb\u09a8\u09cb \u09b6\u09a4\u0995\u09c7\u09b0 (\u09af\u09c7\u09ae\u09a8 \u09e7\u09e6\u09e6, \u09e8\u09e6\u09e6, \u09e9\u09e6\u09e6) \u0996\u09c1\u09ac \u0995\u09be\u099b\u09be\u0995\u09be\u099b\u09bf \u09b9\u09df (\u09af\u09c7\u09ae\u09a8: \u09e7\u09ef\u09eb, \u09e8\u09ef\u09ee, \u09e9\u09ef\u09e6), \u09a4\u0996\u09a8 \u098f\u0987 \u09a8\u09bf\u09df\u09ae\u099f\u09bf \u099c\u09be\u09a6\u09c1\u09b0 \u09ae\u09a4\u09cb \u0995\u09be\u099c \u0995\u09b0\u09c7\u0964<\/p>\n<p><strong>\u0989\u09a6\u09be\u09b9\u09b0\u09a3 \u09a6\u09c7\u0996\u09cb: \u09eb\u09ea\u09e9 \u2013 \u09e8\u09ef\u09ee = ?<\/strong><\/p>\n<ul>\n<li><strong>\u09a7\u09be\u09aa \u09e7:<\/strong> \u09e8\u09ef\u09ee \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf \u09e9\u09e6\u09e6 \u098f\u09b0 \u0996\u09c1\u09ac \u0995\u09be\u099b\u09be\u0995\u09be\u099b\u09bf\u0964 \u09a4\u09be\u0987 \u09e8\u09ef\u09ee \u098f\u09b0 \u099c\u09be\u09df\u0997\u09be\u09df \u09ae\u09a8\u09c7 \u09ae\u09a8\u09c7 \u09e9\u09e6\u09e6 \u09a7\u09b0\u09c7 \u09a8\u09be\u0993\u0964<\/li>\n<li><strong>\u09a7\u09be\u09aa \u09e8:<\/strong> \u098f\u09ac\u09be\u09b0 \u09eb\u09ea\u09e9 \u09a5\u09c7\u0995\u09c7 \u09e9\u09e6\u09e6 \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09cb: \u09eb\u09ea\u09e9 \u2013 \u09e9\u09e6\u09e6 = <strong>\u09e8\u09ea\u09e9<\/strong> (\u098f\u099f\u09be \u09ae\u09c1\u0996\u09c7 \u09ae\u09c1\u0996\u09c7 \u0995\u09b0\u09be \u0996\u09c1\u09ac \u09b8\u09b9\u099c!)\u0964<\/li>\n<li><strong>\u09a7\u09be\u09aa \u09e9:<\/strong> \u09af\u09c7\u09b9\u09c7\u09a4\u09c1 \u09a4\u09c1\u09ae\u09bf \u09e8\u09ef\u09ee \u098f\u09b0 \u09ac\u09a6\u09b2\u09c7 \u09e9\u09e6\u09e6 \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09c7\u099b\u09bf\u09b2\u09c7 (\u0985\u09b0\u09cd\u09a5\u09be\u09ce \u09e8 \u09ac\u09c7\u09b6\u09bf \u09ac\u09be\u09a6 \u09a6\u09bf\u09df\u09c7\u099b\u09bf\u09b2\u09c7), \u09a4\u09be\u0987 \u098f\u09ac\u09be\u09b0 \u09e8\u09ea\u09e9 \u098f\u09b0 \u09b8\u09be\u09a5\u09c7 \u09b8\u09c7\u0987 \u09e8 \u09af\u09cb\u0997 \u0995\u09b0\u09c7 \u09a6\u09be\u0993: \u09e8\u09ea\u09e9 + \u09e8 = <strong>\u09e8\u09ea\u09eb<\/strong>\u0964<\/li>\n<\/ul>\n<p>\u0989\u09a4\u09cd\u09a4\u09b0 \u09aa\u09c7\u09df\u09c7 \u0997\u09c7\u09b2\u09c7 \u09e8 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7 \u2794 <strong>\u09e8\u09ea\u09eb<\/strong>!<\/p>\n<h3>\u09af\u09a6\u09bf \u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u0995\u09b0\u09be \u09a8\u09be \u09af\u09be\u09df? (Chunking Method) \ud83e\udd14<\/h3>\n<p>\u09af\u09a6\u09bf \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf \u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u0995\u09b0\u09be\u09b0 \u09ae\u09a4\u09cb \u09a8\u09be \u09b9\u09df (\u09af\u09c7\u09ae\u09a8: \u09ec\u09eb\u09ea \u2013 \u09e8\u09e9\u09e7), \u09a4\u0996\u09a8 \u0986\u09ae\u09b0\u09be \u09aa\u09cd\u09b0\u09a5\u09ae \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf \u0986\u09b8\u09cd\u09a4 \u09b0\u09c7\u0996\u09c7 \u09a6\u09cd\u09ac\u09bf\u09a4\u09c0\u09df \u09b8\u0982\u0996\u09cd\u09af\u09be\u099f\u09bf\u0995\u09c7 \u09ad\u09c7\u0999\u09c7 \u09a7\u09be\u09aa\u09c7 \u09a7\u09be\u09aa\u09c7 \u09ac\u09be\u09a6 \u09a6\u09c7\u09ac\u0964<\/p>\n<ul>\n<li><strong>\u09a7\u09be\u09aa \u09e7:<\/strong> \u09b6\u09a4\u0995 \u09ac\u09be\u09a6 \u09a6\u09be\u0993: \u09ec\u09eb\u09ea \u2013 \u09e8\u09e6\u09e6 = <strong>\u09ea\u09eb\u09ea<\/strong><\/li>\n<li><strong>\u09a7\u09be\u09aa \u09e8:<\/strong> \u09a6\u09b6\u0995 \u09ac\u09be\u09a6 \u09a6\u09be\u0993: \u09ea\u09eb\u09ea \u2013 \u09e9\u09e6 = <strong>\u09ea\u09e8\u09ea<\/strong><\/li>\n<li><strong>\u09a7\u09be\u09aa \u09e9:<\/strong> \u098f\u0995\u0995 \u09ac\u09be\u09a6 \u09a6\u09be\u0993: \u09ea\u09e8\u09ea \u2013 \u09e7 = <strong>\u09ea\u09e8\u09e9<\/strong><\/li>\n<\/ul>\n<h3>\u098f\u09ac\u09be\u09b0 \u09a4\u09cb\u09ae\u09be\u09b0 \u09aa\u09be\u09b2\u09be! \u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u09ac\u09be\u0981\u099a\u09be\u0993! \ud83d\ude80<\/h3>\n<p>\u0996\u09be\u09a4\u09be-\u0995\u09b2\u09ae \u09a6\u09c2\u09b0\u09c7 \u09b8\u09b0\u09bf\u09df\u09c7 \u09b0\u09be\u0996\u09cb! \u09a8\u09bf\u099a\u09c7 \u09a5\u09be\u0995\u09be \u0997\u09c7\u09ae\u099f\u09bf\u09a4\u09c7 <strong>\u201c\u09ae\u09bf\u09b6\u09a8 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09cb\u201d<\/strong> \u09ac\u09be\u099f\u09a8\u09c7 \u0995\u09cd\u09b2\u09bf\u0995 \u0995\u09b0\u09cb\u0964 \u09b8\u09cd\u0995\u09cd\u09b0\u09bf\u09a8\u09c7 \u09ac\u09dc \u09ac\u09bf\u09df\u09cb\u0997\u09c7\u09b0 \u0985\u0999\u09cd\u0995 \u098f\u09b2\u09c7\u0987 \u09b0\u09be\u0989\u09a8\u09cd\u09a1\u09bf\u0982 \u099f\u09cd\u09b0\u09bf\u0995 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c7 \u09b8\u09a0\u09bf\u0995 \u0989\u09a4\u09cd\u09a4\u09b0\u099f\u09bf \u09ac\u09c7\u099b\u09c7 \u09a8\u09be\u0993\u0964 \u09a4\u09c1\u09ae\u09bf \u09af\u09a4 \u09a6\u09cd\u09b0\u09c1\u09a4 \u09b8\u09a0\u09bf\u0995 \u0989\u09a4\u09cd\u09a4\u09b0 \u09a6\u09c7\u09ac\u09c7, \u09a4\u09cb\u09ae\u09be\u09b0 \u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u09a5\u09c7\u0995\u09c7 \u09a4\u09a4 \u09a6\u09cd\u09b0\u09c1\u09a4 \u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad \u09ab\u09be\u09df\u09be\u09b0 \u09b9\u09ac\u09c7 \u098f\u09ac\u0982 \u09ae\u09be\u0987\u09a8 \u09a7\u09cd\u09ac\u0982\u09b8 \u09b9\u09ac\u09c7!<\/p>\n<p>\u09a6\u09c7\u0996\u09bf \u09a4\u09c1\u09ae\u09bf \u0986\u099c \u0995\u09a4 \u09b8\u09cd\u0995\u09cb\u09b0 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09cb! \u099a\u09b2\u09cb \u0996\u09c7\u09b2\u09bf\u2026<\/p>\n<style>#h5g-wrap-27083 { max-width: 800px; width: 100%; margin: 2rem auto; background: #111827; border-radius: 12px; box-shadow: 0 10px 25px rgba(0,0,0,0.15); overflow: hidden; font-family: system-ui, -apple-system, sans-serif; }\n#h5g-wrap-27083 .h5g-toolbar { display: flex; justify-content: space-between; align-items: center; padding: 12px 20px; background: #1f2937; border-bottom: 1px solid #374151; }\n#h5g-wrap-27083 .h5g-title { color: #f3f4f6; font-weight: 600; font-size: 14px; letter-spacing: 0.5px; text-transform: uppercase; }\n#h5g-wrap-27083 .h5g-fs-btn { background: #3b82f6; color: #fff; border: none; padding: 8px 14px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 8px; transition: background 0.2s ease; }\n#h5g-wrap-27083 .h5g-fs-btn:hover { background: #2563eb; }\n#h5g-wrap-27083 .h5g-fs-btn svg { width: 16px; height: 16px; fill: currentColor; }\n#h5g-wrap-27083 .h5g-fs-btn.exit-mode { background: #166534; padding: 6px 12px; font-size: 12px; }\n#h5g-wrap-27083 .h5g-fs-btn.exit-mode:hover { background: #14532d; }\n#h5g-wrap-27083 .h5g-iframe-container { width: 100%; height: 75vh; min-height: 550px; max-height: 700px; position: relative; background: #000; }\n#h5g-wrap-27083 iframe { width: 100%; height: 100%; border: none; display: block; }\n@media (max-width: 480px) {\n    #h5g-wrap-27083 .h5g-iframe-container { min-height: 600px; }\n}\n#h5g-wrap-27083:fullscreen { max-width: 100%; width: 100%; height: 100%; margin: 0; border-radius: 0; display: flex; flex-direction: column; }\n#h5g-wrap-27083:fullscreen .h5g-iframe-container { height: 100%; flex-grow: 1; min-height: 0; max-height: none; }\n#h5g-wrap-27083:-webkit-full-screen { max-width: 100%; width: 100%; height: 100%; margin: 0; border-radius: 0; display: flex; flex-direction: column; }\n#h5g-wrap-27083:-webkit-full-screen .h5g-iframe-container { height: 100%; flex-grow: 1; min-height: 0; max-height: none; }\n#h5g-wrap-27083:-ms-fullscreen { max-width: 100%; width: 100%; height: 100%; margin: 0; border-radius: 0; display: flex; flex-direction: column; }\n#h5g-wrap-27083:-ms-fullscreen .h5g-iframe-container { height: 100%; flex-grow: 1; min-height: 0; max-height: none; }<\/style><div id=\"h5g-wrap-27083\" class=\"h5g-wrapper\">  <div class=\"h5g-toolbar\">    <div class=\"h5g-title\">\u09e9-\u0985\u0999\u09cd\u0995\u09c7\u09b0 \u09ac\u09bf\u09df\u09cb\u0997\u09c7\u09b0 \u09ae\u09cd\u09af\u09be\u099c\u09bf\u0995! (Samudrayaan Deep Ocean)<\/div>    <button id=\"h5g-fs-btn-27083\" class=\"h5g-fs-btn\" type=\"button\" aria-label=\"Toggle fullscreen\">      <svg viewbox=\"0 0 24 24\"><path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"><\/path><\/svg>      <span>Full Screen<\/span>    <\/button>  <\/div>  <div class=\"h5g-iframe-container\">    <iframe id=\"h5g-iframe-27083\" srcdoc=\"&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;UTF-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot;&gt;&lt;base href=&quot;https:\/\/qsh.in\/boards\/wbbse\/&quot;&gt;&lt;style&gt;html, body { width: 100%; height: 100%; margin: 0; padding: 0; background: transparent; touch-action: none; overflow: hidden; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; }&lt;\/style&gt;&lt;style&gt;#sim-root {\r\n    position: relative;\r\n    width: 100%;\r\n    height: 100vh;\r\n    min-height: 600px;\r\n    background-color: #000a14;\r\n    color: #e0f7fa;\r\n    font-family: 'Noto Sans Bengali', system-ui, sans-serif;\r\n    overflow: hidden;\r\n    display: flex;\r\n    flex-direction: column;\r\n    touch-action: manipulation;\r\n    -webkit-tap-highlight-color: transparent;\r\n    user-select: none;\r\n}\r\n\r\n.screen {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    display: none;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    align-items: center;\r\n    background: radial-gradient(circle at bottom, #003366 0%, #000a14 100%);\r\n    z-index: 10;\r\n}\r\n\r\n.screen.active {\r\n    display: flex;\r\n}\r\n\r\n#game-screen {\r\n    z-index: 1;\r\n    background: transparent;\r\n}\r\n\r\n.panel {\r\n    background: rgba(0, 20, 40, 0.85);\r\n    border: 2px solid #00b4d8;\r\n    border-radius: 16px;\r\n    padding: 2rem;\r\n    max-width: 90%;\r\n    width: 500px;\r\n    text-align: center;\r\n    box-shadow: 0 0 30px rgba(0, 180, 216, 0.4);\r\n    backdrop-filter: blur(8px);\r\n}\r\n\r\n.panel h1 {\r\n    color: #90e0ef;\r\n    margin-top: 0;\r\n    font-size: clamp(1.8rem, 5vw, 2.5rem);\r\n    text-shadow: 0 0 10px rgba(144, 224, 239, 0.5);\r\n}\r\n\r\n.panel p {\r\n    font-size: 1.1rem;\r\n    line-height: 1.6;\r\n    margin-bottom: 1.5rem;\r\n}\r\n\r\n.trick-box {\r\n    background: rgba(0, 180, 216, 0.15);\r\n    border-left: 4px solid #00b4d8;\r\n    padding: 12px;\r\n    font-size: 1rem !important;\r\n    text-align: left;\r\n    color: #caf0f8;\r\n    border-radius: 0 8px 8px 0;\r\n}\r\n\r\n.action-btn {\r\n    background: #0077b6;\r\n    color: #fff;\r\n    border: none;\r\n    padding: 12px 35px;\r\n    font-size: 1.3rem;\r\n    border-radius: 8px;\r\n    cursor: pointer;\r\n    font-weight: bold;\r\n    transition: all 0.2s;\r\n    box-shadow: 0 4px 15px rgba(0, 119, 182, 0.5);\r\n}\r\n\r\n.action-btn:active {\r\n    transform: scale(0.95);\r\n    background: #023e8a;\r\n}\r\n\r\n\/* HUD *\/\r\n#hud {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    padding: 15px 20px;\r\n    display: flex;\r\n    justify-content: space-between;\r\n    box-sizing: border-box;\r\n    font-size: 1.2rem;\r\n    font-weight: bold;\r\n    color: #48cae4;\r\n    z-index: 5;\r\n    background: linear-gradient(to bottom, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0) 100%);\r\n}\r\n\r\n\/* Timer *\/\r\n#timer-container {\r\n    position: absolute;\r\n    top: 60px;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    width: 80%;\r\n    max-width: 400px;\r\n    height: 12px;\r\n    background: rgba(0,0,0,0.5);\r\n    border-radius: 6px;\r\n    overflow: hidden;\r\n    z-index: 5;\r\n    border: 1px solid #00b4d8;\r\n}\r\n\r\n#timer-bar {\r\n    width: 100%;\r\n    height: 100%;\r\n    background: #00b4d8;\r\n    transition: width 0.1s linear, background-color 0.3s;\r\n}\r\n\r\n\/* Problem Display *\/\r\n#problem-display {\r\n    position: absolute;\r\n    top: 95px;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    z-index: 5;\r\n    background: rgba(0, 20, 40, 0.8);\r\n    border: 2px solid #00b4d8;\r\n    padding: 12px 40px;\r\n    border-radius: 12px;\r\n    backdrop-filter: blur(5px);\r\n    box-shadow: 0 5px 20px rgba(0, 180, 216, 0.3);\r\n}\r\n\r\n.problem-text {\r\n    font-size: clamp(2.2rem, 6vw, 3.2rem);\r\n    font-weight: bold;\r\n    color: #ffffff;\r\n    letter-spacing: 2px;\r\n}\r\n\r\n\/* Canvas *\/\r\n#game-canvas {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    z-index: 2;\r\n    background: linear-gradient(to bottom, #001f3f 0%, #003366 50%, #000022 100%);\r\n}\r\n\r\n\/* Control Dock *\/\r\n#control-dock {\r\n    position: absolute;\r\n    bottom: 25px;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    width: 95%;\r\n    max-width: 600px;\r\n    display: grid;\r\n    grid-template-columns: repeat(2, 1fr);\r\n    gap: 12px;\r\n    z-index: 10;\r\n}\r\n\r\n@media (min-width: 480px) {\r\n    #control-dock {\r\n        grid-template-columns: repeat(4, 1fr);\r\n    }\r\n}\r\n\r\n.option-btn {\r\n    background: rgba(0, 53, 102, 0.85);\r\n    border: 2px solid #48cae4;\r\n    color: #ffffff;\r\n    font-size: clamp(1.6rem, 5vw, 2.2rem);\r\n    padding: 15px 0;\r\n    border-radius: 12px;\r\n    cursor: pointer;\r\n    font-weight: bold;\r\n    transition: all 0.1s;\r\n    backdrop-filter: blur(8px);\r\n    box-shadow: 0 4px 10px rgba(0,0,0,0.5);\r\n}\r\n\r\n.option-btn:active {\r\n    background: #48cae4;\r\n    color: #000;\r\n    transform: scale(0.95);\r\n}\r\n\r\n.option-btn.correct {\r\n    background: #00e676;\r\n    color: #000;\r\n    border-color: #00e676;\r\n}\r\n\r\n.option-btn.wrong {\r\n    background: #ff1744;\r\n    color: #fff;\r\n    border-color: #ff1744;\r\n    animation: shake 0.3s;\r\n}\r\n\r\n@keyframes shake {\r\n    0%, 100% { transform: translateX(0); }\r\n    25% { transform: translateX(-6px); }\r\n    75% { transform: translateX(6px); }\r\n}&lt;\/style&gt;&lt;\/head&gt;&lt;body&gt;&lt;div id=&quot;game-container&quot; style=&quot;width:100%;height:100%;display:flex;justify-content:center;align-items:center;&quot;&gt;&lt;div id=&quot;sim-root&quot;&gt;\r\n    <!-- Start Screen -->\r\n    &lt;div id=&quot;start-screen&quot; class=&quot;screen active&quot;&gt;\r\n        &lt;div class=&quot;panel&quot;&gt;\r\n            &lt;h2&gt;\u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09af\u09be\u09a8 \u09ae\u09bf\u09b6\u09a8&lt;\/h2&gt;\r\n            &lt;p&gt;\u0986\u09ae\u09be\u09a6\u09c7\u09b0 \u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u0997\u09ad\u09c0\u09b0 \u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09c7 \u0986\u099f\u0995\u09c7 \u09aa\u09dc\u09c7\u099b\u09c7! \u09b8\u09be\u09ae\u09a8\u09c7 \u09ac\u09bf\u09b6\u09be\u09b2 \u09b8\u09ac \u09b8\u09be\u09ae\u09c1\u09a6\u09cd\u09b0\u09bf\u0995 \u09aa\u09be\u09a5\u09b0 \u0993 \u09ae\u09be\u0987\u09a8 \u09ad\u09c7\u09b8\u09c7 \u0986\u09b8\u099b\u09c7\u0964&lt;\/p&gt;\r\n            &lt;p class=&quot;trick-box&quot;&gt;&lt;strong&gt;\u09ac\u09c8\u09a6\u09bf\u0995 \u099f\u09cd\u09b0\u09bf\u0995:&lt;\/strong&gt; \u09e7\u09ef\u09eb, \u09e8\u09ef\u09ee-\u098f\u09b0 \u09ae\u09a4\u09cb \u09b8\u0982\u0996\u09cd\u09af\u09be \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09a4\u09c7 \u0995\u09be\u099b\u09c7\u09b0 \u09b6\u09a4\u0995 (\u09e8\u09e6\u09e6, \u09e9\u09e6\u09e6) \u09a7\u09b0\u09c7 \u09a8\u09be\u0993\u0964 \u09a4\u09be\u09b0\u09aa\u09b0 \u09af\u09a4\u099f\u09c1\u0995\u09c1 \u09ac\u09c7\u09b6\u09bf \u09ac\u09bf\u09df\u09cb\u0997 \u0995\u09b0\u09c7\u099b\u09cb, \u09a4\u09be \u09af\u09cb\u0997 \u0995\u09b0\u09c7 \u09a6\u09be\u0993!&lt;\/p&gt;\r\n            &lt;p&gt;\u09b8\u09a0\u09bf\u0995 \u0989\u09a4\u09cd\u09a4\u09b0 \u09ac\u09c7\u099b\u09c7 \u09a8\u09bf\u09df\u09c7 '\u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad' \u09ab\u09be\u09df\u09be\u09b0 \u0995\u09b0\u09cb \u098f\u09ac\u0982 \u09b0\u09be\u09b8\u09cd\u09a4\u09be \u09aa\u09b0\u09bf\u09b7\u09cd\u0995\u09be\u09b0 \u0995\u09b0\u09cb!&lt;\/p&gt;\r\n            &lt;button id=&quot;start-btn&quot; class=&quot;action-btn&quot;&gt;\u09ae\u09bf\u09b6\u09a8 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09cb&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n    <!-- Game Screen -->\r\n    &lt;div id=&quot;game-screen&quot; class=&quot;screen&quot;&gt;\r\n        <!-- HUD -->\r\n        &lt;div id=&quot;hud&quot;&gt;\r\n            &lt;div class=&quot;hud-item&quot;&gt;\u09b8\u09cd\u0995\u09cb\u09b0: &lt;span id=&quot;score-display&quot;&gt;\u09e6&lt;\/span&gt;&lt;\/div&gt;\r\n            &lt;div class=&quot;hud-item&quot;&gt;\u09b2\u09c7\u09ad\u09c7\u09b2: &lt;span id=&quot;level-display&quot;&gt;\u09e7&lt;\/span&gt;&lt;\/div&gt;\r\n            &lt;div class=&quot;hud-item&quot;&gt;\u09b2\u09be\u0987\u09ab: &lt;span id=&quot;lives-display&quot;&gt;\u2764\ufe0f\u2764\ufe0f\u2764\ufe0f&lt;\/span&gt;&lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        \r\n        <!-- Timer Bar -->\r\n        &lt;div id=&quot;timer-container&quot;&gt;\r\n            &lt;div id=&quot;timer-bar&quot;&gt;&lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n\r\n        <!-- Problem Display -->\r\n        &lt;div id=&quot;problem-display&quot;&gt;\r\n            &lt;div class=&quot;problem-text&quot; id=&quot;math-problem&quot;&gt;\u09eb\u09ea\u09e9 - \u09e8\u09ef\u09ee = ?&lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n\r\n        <!-- Canvas for Animation -->\r\n        &lt;canvas id=&quot;game-canvas&quot;&gt;&lt;\/canvas&gt;\r\n\r\n        <!-- Controls \/ Numpad Dock -->\r\n        &lt;div id=&quot;control-dock&quot;&gt;\r\n            &lt;button class=&quot;option-btn&quot; data-index=&quot;0&quot;&gt;\u09e6&lt;\/button&gt;\r\n            &lt;button class=&quot;option-btn&quot; data-index=&quot;1&quot;&gt;\u09e6&lt;\/button&gt;\r\n            &lt;button class=&quot;option-btn&quot; data-index=&quot;2&quot;&gt;\u09e6&lt;\/button&gt;\r\n            &lt;button class=&quot;option-btn&quot; data-index=&quot;3&quot;&gt;\u09e6&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n    <!-- Game Over Screen -->\r\n    &lt;div id=&quot;game-over-screen&quot; class=&quot;screen&quot;&gt;\r\n        &lt;div class=&quot;panel&quot;&gt;\r\n            &lt;h1 id=&quot;end-title&quot;&gt;\u09ae\u09bf\u09b6\u09a8 \u09b0\u09bf\u09aa\u09cb\u09b0\u09cd\u099f&lt;\/h1&gt;\r\n            &lt;p id=&quot;end-message&quot;&gt;\u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u0996\u09c1\u09ac \u09ac\u09c7\u09b6\u09bf \u0995\u09cd\u09b7\u09a4\u09bf\u0997\u09cd\u09b0\u09b8\u09cd\u09a4 \u09b9\u09df\u09c7\u099b\u09c7!&lt;\/p&gt;\r\n            &lt;p&gt;\u09a4\u09cb\u09ae\u09be\u09b0 \u099a\u09c2\u09dc\u09be\u09a8\u09cd\u09a4 \u09b8\u09cd\u0995\u09cb\u09b0: &lt;span id=&quot;final-score&quot;&gt;\u09e6&lt;\/span&gt;&lt;\/p&gt;\r\n            &lt;button id=&quot;restart-btn&quot; class=&quot;action-btn&quot;&gt;\u0986\u09ac\u09be\u09b0 \u0996\u09c7\u09b2\u09cb&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/div&gt;&lt;\/div&gt;&lt;script&gt;window.GameController = {\n    saveScore: function(score, time, extraData) {\n        try {\n            window.parent.postMessage({\n                action: 'h5g_save_score',\n                game_id: 27083,\n                score: score,\n                time: time || 0,\n                meta: extraData || {}\n            }, '*');\n        } catch (e) {}\n    },\n    getBestScore: function(callback) {\n        var reqId = 'req_' + Date.now() + '_' + Math.floor(Math.random() * 100000);\n        var done = false;\n        function handler(e) {\n            if (done) return;\n            if (e.data &amp;&amp; e.data.action === 'h5g_best_score' &amp;&amp; e.data.req_id === reqId) {\n                done = true;\n                window.removeEventListener('message', handler);\n                try { callback(e.data.score, e.data.runs); } catch (err) {}\n            }\n        }\n        window.addEventListener('message', handler);\n        try {\n            window.parent.postMessage({ action: 'h5g_get_best', game_id: 27083, req_id: reqId }, '*');\n        } catch (e) {}\n        setTimeout(function() {\n            if (!done) {\n                done = true;\n                window.removeEventListener('message', handler);\n                try { callback(null, 0); } catch (err) {}\n            }\n        }, 2000);\n    }\n};&lt;\/script&gt;&lt;script&gt;(function() {\r\n    'use strict';\r\n\r\n    \/\/ --- Utility: Bengali Numerals ---\r\n    const EN_TO_BN = { '0':'\u09e6', '1':'\u09e7', '2':'\u09e8', '3':'\u09e9', '4':'\u09ea', '5':'\u09eb', '6':'\u09ec', '7':'\u09ed', '8':'\u09ee', '9':'\u09ef' };\r\n    \r\n    function toBengali(num) {\r\n        return num.toString().split('').map(d =&gt; EN_TO_BN[d] || d).join('');\r\n    }\r\n\r\n    \/\/ --- State &amp; Variables ---\r\n    let state = {\r\n        isPlaying: false,\r\n        score: 0,\r\n        level: 1,\r\n        lives: 3,\r\n        timeLeft: 15000,\r\n        maxTime: 15000,\r\n        lastTime: 0,\r\n        currentProblem: null,\r\n        correctIndex: 0,\r\n        sceneState: 'idle', \/\/ idle, fire, hit\r\n        accuracy: { correct: 0, total: 0 }\r\n    };\r\n\r\n    \/\/ Animation Variables\r\n    let animPhase = 0;\r\n    let mineX = 0;\r\n    let mineY = 0;\r\n    let bubbles = [];\r\n    let sonicWaves = [];\r\n    let particles = [];\r\n\r\n    \/\/ --- Audio System ---\r\n    const AudioCtx = window.AudioContext || window.webkitAudioContext;\r\n    let actx;\r\n\r\n    function initAudio() {\r\n        if (!actx) actx = new AudioCtx();\r\n        if (actx.state === 'suspended') actx.resume();\r\n    }\r\n\r\n    function playSound(type) {\r\n        if (!actx) return;\r\n        const osc = actx.createOscillator();\r\n        const gain = actx.createGain();\r\n        osc.connect(gain);\r\n        gain.connect(actx.destination);\r\n        const now = actx.currentTime;\r\n\r\n        if (type === 'sonar') {\r\n            osc.type = 'sine';\r\n            osc.frequency.setValueAtTime(800, now);\r\n            gain.gain.setValueAtTime(0.3, now);\r\n            gain.gain.exponentialRampToValueAtTime(0.01, now + 0.5);\r\n            osc.start(now); osc.stop(now + 0.5);\r\n        } else if (type === 'sonic') {\r\n            osc.type = 'triangle';\r\n            osc.frequency.setValueAtTime(400, now);\r\n            osc.frequency.exponentialRampToValueAtTime(100, now + 0.4);\r\n            gain.gain.setValueAtTime(0.4, now);\r\n            gain.gain.exponentialRampToValueAtTime(0.01, now + 0.4);\r\n            osc.start(now); osc.stop(now + 0.4);\r\n        } else if (type === 'explosion') {\r\n            osc.type = 'sawtooth';\r\n            osc.frequency.setValueAtTime(100, now);\r\n            osc.frequency.exponentialRampToValueAtTime(10, now + 0.8);\r\n            gain.gain.setValueAtTime(0.6, now);\r\n            gain.gain.exponentialRampToValueAtTime(0.01, now + 0.8);\r\n            osc.start(now); osc.stop(now + 0.8);\r\n        }\r\n    }\r\n\r\n    function announce(text) {\r\n        if ('speechSynthesis' in window) {\r\n            window.speechSynthesis.cancel();\r\n            const msg = new SpeechSynthesisUtterance(text);\r\n            msg.rate = 1.2; msg.pitch = 0.8; msg.lang = 'bn-IN'; \r\n            window.speechSynthesis.speak(msg);\r\n        }\r\n    }\r\n\r\n    \/\/ --- Canvas Rendering (Vector Art) ---\r\n    const canvas = document.getElementById('game-canvas');\r\n    const ctx = canvas.getContext('2d');\r\n    let animationId;\r\n\r\n    function resizeCanvas() {\r\n        const dpr = window.devicePixelRatio || 1;\r\n        const rect = canvas.parentElement.getBoundingClientRect();\r\n        canvas.width = rect.width * dpr;\r\n        canvas.height = rect.height * dpr;\r\n        ctx.scale(dpr, dpr);\r\n        canvas.style.width = `${rect.width}px`;\r\n        canvas.style.height = `${rect.height}px`;\r\n    }\r\n\r\n    function initBubbles() {\r\n        bubbles = [];\r\n        const w = canvas.width \/ (window.devicePixelRatio || 1);\r\n        const h = canvas.height \/ (window.devicePixelRatio || 1);\r\n        for(let i=0; i&lt;30; i++) {\r\n            bubbles.push({\r\n                x: Math.random() * w,\r\n                y: Math.random() * h,\r\n                r: Math.random() * 4 + 1,\r\n                speed: Math.random() * 1 + 0.5\r\n            });\r\n        }\r\n    }\r\n\r\n    \/\/ Awesome Explosion Particles Setup\r\n    function createExplosion(x, y) {\r\n        particles = [];\r\n        const colors = ['#ffea00', '#ff5722', '#ff1744', '#00e5ff', '#ffffff'];\r\n        for (let i = 0; i &lt; 50; i++) {\r\n            const angle = Math.random() * Math.PI * 2;\r\n            const speed = Math.random() * 10 + 3;\r\n            particles.push({\r\n                x: x,\r\n                y: y,\r\n                vx: Math.cos(angle) * speed,\r\n                vy: Math.sin(angle) * speed,\r\n                size: Math.random() * 8 + 3,\r\n                color: colors[Math.floor(Math.random() * colors.length)],\r\n                life: 1.0,\r\n                decay: Math.random() * 0.02 + 0.015\r\n            });\r\n        }\r\n    }\r\n\r\n    function drawSubmarine(x, y, scale) {\r\n        ctx.save();\r\n        ctx.translate(x, y);\r\n        ctx.scale(scale, scale);\r\n        \r\n        ctx.fillStyle = '#ffb703'; \r\n        ctx.beginPath();\r\n        ctx.ellipse(0, 0, 60, 25, 0, 0, Math.PI * 2);\r\n        ctx.fill();\r\n        \r\n        ctx.fillStyle = '#8ecae6';\r\n        ctx.beginPath();\r\n        ctx.arc(30, -5, 10, 0, Math.PI * 2);\r\n        ctx.fill();\r\n        ctx.strokeStyle = '#023047';\r\n        ctx.lineWidth = 3;\r\n        ctx.stroke();\r\n\r\n        ctx.fillStyle = '#fb8500';\r\n        ctx.beginPath();\r\n        ctx.roundRect(-20, -40, 30, 20, 5);\r\n        ctx.fill();\r\n        \r\n        ctx.strokeStyle = '#023047';\r\n        ctx.lineWidth = 5;\r\n        ctx.beginPath();\r\n        ctx.moveTo(-5, -40); ctx.lineTo(-5, -55); ctx.lineTo(5, -55);\r\n        ctx.stroke();\r\n\r\n        ctx.fillStyle = '#8ecae6';\r\n        const propAngle = Date.now() \/ 100;\r\n        ctx.save();\r\n        ctx.translate(-65, 0);\r\n        ctx.rotate(propAngle);\r\n        ctx.fillRect(-5, -15, 10, 30);\r\n        ctx.restore();\r\n        \r\n        ctx.restore();\r\n    }\r\n\r\n    function drawSeaMine(x, y, scale) {\r\n        ctx.save();\r\n        ctx.translate(x, y);\r\n        ctx.scale(scale, scale);\r\n        \r\n        ctx.fillStyle = '#455a64';\r\n        ctx.beginPath();\r\n        ctx.arc(0, 0, 30, 0, Math.PI * 2);\r\n        ctx.fill();\r\n        \r\n        ctx.fillStyle = '#cfd8dc';\r\n        for (let i = 0; i &lt; 8; i++) {\r\n            ctx.save();\r\n            ctx.rotate((Math.PI \/ 4) * i);\r\n            ctx.beginPath();\r\n            ctx.moveTo(-5, -30);\r\n            ctx.lineTo(5, -30);\r\n            ctx.lineTo(0, -45);\r\n            ctx.fill();\r\n            ctx.restore();\r\n        }\r\n        \r\n        ctx.fillStyle = (Math.floor(Date.now() \/ 200) % 2 === 0) ? '#ff1744' : '#5c0011';\r\n        ctx.beginPath();\r\n        ctx.arc(0, 0, 8, 0, Math.PI * 2);\r\n        ctx.fill();\r\n        \r\n        ctx.restore();\r\n    }\r\n\r\n    function drawScene() {\r\n        const w = canvas.width \/ (window.devicePixelRatio || 1);\r\n        const h = canvas.height \/ (window.devicePixelRatio || 1);\r\n        \r\n        ctx.clearRect(0, 0, w, h);\r\n\r\n        ctx.fillStyle = 'rgba(255, 255, 255, 0.2)';\r\n        bubbles.forEach(b =&gt; {\r\n            ctx.beginPath();\r\n            ctx.arc(b.x, b.y, b.r, 0, Math.PI * 2);\r\n            ctx.fill();\r\n            b.y -= b.speed;\r\n            if(b.y &lt; -10) b.y = h + 10;\r\n        });\r\n\r\n        let subX = w * 0.2;\r\n        let subY = h * 0.6 + Math.sin(Date.now() \/ 500) * 10;\r\n\r\n        drawSubmarine(subX, subY, 1);\r\n\r\n        if (state.sceneState === 'idle') {\r\n            mineX = w * 0.8 - ((state.maxTime - state.timeLeft) \/ state.maxTime) * (w * 0.4);\r\n            mineY = h * 0.6 + Math.cos(Date.now() \/ 400) * 20;\r\n            drawSeaMine(mineX, mineY, 1);\r\n            \r\n        } else if (state.sceneState === 'fire') {\r\n            \r\n            ctx.strokeStyle = '#00e5ff';\r\n            ctx.lineWidth = 4;\r\n            sonicWaves.forEach(sw =&gt; {\r\n                ctx.beginPath();\r\n                ctx.arc(subX + 60, subY, sw.radius, -Math.PI\/4, Math.PI\/4);\r\n                ctx.stroke();\r\n                sw.radius += 15;\r\n            });\r\n            \r\n            \/\/ Explosion Logic\r\n            if (animPhase === 15) {\r\n                createExplosion(mineX, mineY);\r\n                playSound('explosion');\r\n            }\r\n            \r\n            if (animPhase &gt;= 15) {\r\n                \/\/ Expanding Shockwave Ring\r\n                const ringAlpha = Math.max(0, 1 - (animPhase - 15) * 0.04);\r\n                if (ringAlpha &gt; 0) {\r\n                    ctx.strokeStyle = `rgba(0, 229, 255, ${ringAlpha})`;\r\n                    ctx.lineWidth = 15;\r\n                    ctx.beginPath();\r\n                    ctx.arc(mineX, mineY, (animPhase - 15) * 12, 0, Math.PI * 2);\r\n                    ctx.stroke();\r\n                }\r\n\r\n                \/\/ Draw Flying Particles\r\n                particles.forEach(p =&gt; {\r\n                    ctx.globalAlpha = p.life;\r\n                    ctx.fillStyle = p.color;\r\n                    ctx.beginPath();\r\n                    ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);\r\n                    ctx.fill();\r\n                    p.x += p.vx;\r\n                    p.y += p.vy;\r\n                    p.life -= p.decay;\r\n                });\r\n                ctx.globalAlpha = 1.0;\r\n                particles = particles.filter(p =&gt; p.life &gt; 0);\r\n            } else {\r\n                drawSeaMine(mineX, mineY, 1); \/\/ Draw normally before wave hits\r\n            }\r\n            animPhase++;\r\n            \r\n        } else if (state.sceneState === 'hit') {\r\n            mineX -= 20; \r\n            drawSeaMine(mineX, mineY, 1);\r\n            \r\n            if (animPhase &gt; 5) {\r\n                ctx.fillStyle = 'rgba(255, 0, 0, 0.5)';\r\n                ctx.fillRect(0, 0, w, h); \r\n            }\r\n            animPhase++;\r\n        }\r\n    }\r\n\r\n    function gameLoop(timestamp) {\r\n        if (!state.isPlaying) return;\r\n        \r\n        if (!state.lastTime) state.lastTime = timestamp;\r\n        const dt = timestamp - state.lastTime;\r\n        state.lastTime = timestamp;\r\n\r\n        if (state.sceneState === 'idle') {\r\n            state.timeLeft -= dt;\r\n            const timerBar = document.getElementById('timer-bar');\r\n            const pct = Math.max(0, (state.timeLeft \/ state.maxTime) * 100);\r\n            timerBar.style.width = `${pct}%`;\r\n            \r\n            if (pct &lt; 30) timerBar.style.backgroundColor = '#ff1744';\r\n            else timerBar.style.backgroundColor = '#00b4d8';\r\n\r\n            if (state.timeLeft &lt;= 0) {\r\n                handleAnswer(-1); \r\n            }\r\n        }\r\n\r\n        drawScene();\r\n        animationId = requestAnimationFrame(gameLoop);\r\n    }\r\n\r\n    \/\/ --- Game Logic ---\r\n    function generateProblem() {\r\n        const hundreds = [100, 200, 300, 400, 500];\r\n        const targetHundred = hundreds[Math.floor(Math.random() * hundreds.length)];\r\n        \r\n        const offset = Math.floor(Math.random() * 5) + 1;\r\n        const sub = targetHundred - offset;\r\n        \r\n        const base = targetHundred + 100 + Math.floor(Math.random() * 300);\r\n        const correct = base - sub;\r\n        \r\n        let wrong1 = correct - (offset * 2); \r\n        let wrong2 = correct - 100; \r\n        let wrong3 = correct + 10; \r\n\r\n        let options = [correct, wrong1, wrong2, wrong3];\r\n        options.sort(() =&gt; Math.random() - 0.5);\r\n\r\n        state.currentProblem = { base, sub, correct, options };\r\n        state.correctIndex = options.indexOf(correct);\r\n\r\n        document.getElementById('math-problem').innerText = `${toBengali(base)} - ${toBengali(sub)} = ?`;\r\n        \r\n        const btns = document.querySelectorAll('.option-btn');\r\n        btns.forEach((btn, idx) =&gt; {\r\n            btn.innerText = toBengali(options[idx]);\r\n            btn.className = 'option-btn'; \r\n        });\r\n\r\n        state.maxTime = Math.max(6000, 15000 - (state.level * 400));\r\n        state.timeLeft = state.maxTime;\r\n        state.lastTime = performance.now();\r\n        state.sceneState = 'idle';\r\n        \r\n        animPhase = 0;\r\n        sonicWaves = [];\r\n        particles = [];\r\n        \r\n        if (Math.random() &gt; 0.5) playSound('sonar');\r\n    }\r\n\r\n    function handleAnswer(selectedIndex) {\r\n        if (state.sceneState !== 'idle') return;\r\n        state.accuracy.total++;\r\n\r\n        const isCorrect = selectedIndex === state.correctIndex;\r\n        const btns = document.querySelectorAll('.option-btn');\r\n        \r\n        if (selectedIndex &gt;= 0) {\r\n            btns[selectedIndex].classList.add(isCorrect ? 'correct' : 'wrong');\r\n        }\r\n\r\n        if (isCorrect) {\r\n            state.sceneState = 'fire';\r\n            state.accuracy.correct++;\r\n            state.score += Math.ceil(state.timeLeft \/ 100);\r\n            state.level++;\r\n            \r\n            playSound('sonic');\r\n            for(let i=0; i&lt;3; i++) {\r\n                setTimeout(() =&gt; sonicWaves.push({radius: 20}), i * 100);\r\n            }\r\n            \r\n            announce(&quot;\u099f\u09be\u09b0\u09cd\u0997\u09c7\u099f \u09a7\u09cd\u09ac\u0982\u09b8 \u09b9\u09df\u09c7\u099b\u09c7!&quot;);\r\n            \r\n            document.getElementById('score-display').innerText = toBengali(state.score);\r\n            document.getElementById('level-display').innerText = toBengali(state.level);\r\n            \r\n            \/\/ Wait slightly longer to let students enjoy the explosion effect\r\n            setTimeout(generateProblem, 2000);\r\n\r\n        } else {\r\n            state.sceneState = 'hit';\r\n            state.lives--;\r\n            updateLivesUI();\r\n            \r\n            playSound('explosion');\r\n            announce(&quot;\u09b8\u09be\u09ac\u09ae\u09c7\u09b0\u09bf\u09a8 \u09a1\u09cd\u09af\u09be\u09ae\u09c7\u099c\u09a1!&quot;);\r\n            \r\n            if (state.correctIndex &gt;= 0) {\r\n                btns[state.correctIndex].classList.add('correct');\r\n            }\r\n\r\n            setTimeout(() =&gt; {\r\n                if (state.lives &gt; 0) {\r\n                    generateProblem();\r\n                } else {\r\n                    endGame();\r\n                }\r\n            }, 2000);\r\n        }\r\n    }\r\n\r\n    function updateLivesUI() {\r\n        let hearts = '';\r\n        for(let i=0; i&lt;state.lives; i++) hearts += '\u2764\ufe0f';\r\n        document.getElementById('lives-display').innerText = hearts || '\ud83d\udca5';\r\n    }\r\n\r\n    function startGame() {\r\n        initAudio();\r\n        initBubbles();\r\n        state.isPlaying = true;\r\n        state.score = 0;\r\n        state.level = 1;\r\n        state.lives = 3;\r\n        state.accuracy = { correct: 0, total: 0 };\r\n        \r\n        updateLivesUI();\r\n        document.getElementById('score-display').innerText = toBengali(state.score);\r\n        document.getElementById('level-display').innerText = toBengali(state.level);\r\n        \r\n        document.querySelectorAll('.screen').forEach(s =&gt; s.classList.remove('active'));\r\n        document.getElementById('game-screen').classList.add('active');\r\n        \r\n        resizeCanvas();\r\n        generateProblem();\r\n        announce(&quot;\u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09af\u09be\u09a8 \u09ae\u09bf\u09b6\u09a8\u09c7 \u09b8\u09cd\u09ac\u09be\u0997\u09a4\u09ae\u0964 \u09ae\u09be\u0987\u09a8 \u09a5\u09c7\u0995\u09c7 \u09b8\u09be\u09ac\u09a7\u09be\u09a8\u0964&quot;);\r\n        \r\n        if (!animationId) animationId = requestAnimationFrame(gameLoop);\r\n    }\r\n\r\n    function endGame() {\r\n        state.isPlaying = false;\r\n        cancelAnimationFrame(animationId);\r\n        animationId = null;\r\n        \r\n        document.querySelectorAll('.screen').forEach(s =&gt; s.classList.remove('active'));\r\n        document.getElementById('game-over-screen').classList.add('active');\r\n        document.getElementById('final-score').innerText = toBengali(state.score);\r\n        \r\n        if (window.GameController &amp;&amp; typeof window.GameController.saveScore === 'function') {\r\n            const acc = state.accuracy.total &gt; 0 ? Math.round((state.accuracy.correct \/ state.accuracy.total) * 100) : 0;\r\n            window.GameController.saveScore(state.score, state.level * 10, { level: state.level, accuracy: acc });\r\n        }\r\n    }\r\n\r\n    \/\/ --- Event Listeners ---\r\n    document.getElementById('start-btn').addEventListener('pointerdown', startGame);\r\n    document.getElementById('restart-btn').addEventListener('pointerdown', startGame);\r\n    \r\n    document.querySelectorAll('.option-btn').forEach(btn =&gt; {\r\n        btn.addEventListener('pointerdown', function(e) {\r\n            e.preventDefault();\r\n            const idx = parseInt(this.getAttribute('data-index'));\r\n            handleAnswer(idx);\r\n        });\r\n    });\r\n\r\n    window.addEventListener('resize', resizeCanvas);\r\n    window.addEventListener('resize', initBubbles);\r\n\r\n})();&lt;\/script&gt;&lt;\/body&gt;&lt;\/html&gt;\" scrolling=\"no\" allowfullscreen=\"true\" allow=\"fullscreen; autoplay; gamepad; accelerometer; gyroscope; clipboard-write\"><\/iframe>  <\/div><\/div><script data-cfasync=\"false\" data-no-optimize=\"1\">(function() {\n    'use strict';\n\n    var wrapId = 'h5g-wrap-27083';\n    var btnId  = 'h5g-fs-btn-27083';\n    var gameId = 27083;\n\n    var wrap = document.getElementById(wrapId);\n    var btn  = document.getElementById(btnId);\n    if (!wrap || !btn) return;\n\n    var svgExpand   = '<svg viewBox=\"0 0 24 24\"><path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\/>';\n    var svgContract = '<svg viewBox=\"0 0 24 24\"><path d=\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\"\/>';\n\n    function getFsEl() {\n        return document.fullscreenElement\n            || document.webkitFullscreenElement\n            || document.msFullscreenElement\n            || null;\n    }\n\n    btn.addEventListener('click', function() {\n        var fsEl = getFsEl();\n        if (!fsEl) {\n            if (wrap.requestFullscreen) { var p = wrap.requestFullscreen(); if (p && p.catch) p.catch(function(){}); }\n            else if (wrap.webkitRequestFullscreen) { wrap.webkitRequestFullscreen(); }\n            else if (wrap.msRequestFullscreen) { wrap.msRequestFullscreen(); }\n        } else {\n            if (document.exitFullscreen) { var p2 = document.exitFullscreen(); if (p2 && p2.catch) p2.catch(function(){}); }\n            else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); }\n            else if (document.msExitFullscreen) { document.msExitFullscreen(); }\n        }\n    });\n\n    function syncButton() {\n        var fsEl = getFsEl();\n        if (fsEl === wrap) {\n            btn.classList.add('exit-mode');\n            btn.innerHTML = svgContract + ' <span>Exit';\n        } else {\n            btn.classList.remove('exit-mode');\n            btn.innerHTML = svgExpand + ' <span>Full Screen';\n        }\n    }\n\n    document.addEventListener('fullscreenchange', syncButton);\n    document.addEventListener('webkitfullscreenchange', syncButton);\n    document.addEventListener('MSFullscreenChange', syncButton);\n\n    \/* ---- Global listener: added once per page ---- *\/\n    if (!window.h5gListenerAdded) {\n        window.h5gListenerAdded = true;\n\n        function isTrustedFrame(src) {\n            var frames = document.querySelectorAll('iframe[id^=\"h5g-iframe-\"]');\n            for (var i = 0; i < frames.length; i++) {\n                if (frames[i].contentWindow === src) return true;\n            }\n            return false;\n        }\n\n        function readScores() {\n            try { return JSON.parse(localStorage.getItem('h5g_user_scores') || '{}'); }\n            catch (e) { return {}; }\n        }\n\n        function writeScores(obj) {\n            try { localStorage.setItem('h5g_user_scores', JSON.stringify(obj)); }\n            catch (e) {}\n        }\n\n        \/\/ Migrate flat\/old entries -> { last, best, runs }\n        function normalize(entry) {\n            if (!entry) return { last: null, best: null, runs: 0 };\n            if (entry.last !== undefined || entry.best !== undefined) return entry;\n            return { last: entry, best: entry, runs: 1 };\n        }\n\n        window.addEventListener('message', function(event) {\n            if (!event.data || !event.data.action) return;\n            if (!isTrustedFrame(event.source)) return;\n\n            var action = event.data.action;\n            var gid    = String(event.data.game_id);\n\n            if (action === 'h5g_save_score') {\n                var store = readScores();\n                var entry = normalize(store[gid]);\n                var payload = {\n                    score: Number(event.data.score) || 0,\n                    time: Number(event.data.time) || 0,\n                    meta: event.data.meta || {},\n                    saved_at: new Date().toISOString()\n                };\n                entry.last = payload;\n                entry.runs = (entry.runs || 0) + 1;\n                if (!entry.best || payload.score > Number(entry.best.score)) {\n                    entry.best = payload;\n                }\n                store[gid] = entry;\n                writeScores(store);\n\n                try {\n                    event.source.postMessage({\n                        action: 'h5g_score_saved',\n                        game_id: gid,\n                        is_best: entry.best === payload,\n                        best: entry.best.score\n                    }, '*');\n                } catch (e) {}\n\n            } else if (action === 'h5g_get_best') {\n                var store2 = readScores();\n                var e2 = normalize(store2[gid]);\n                try {\n                    event.source.postMessage({\n                        action: 'h5g_best_score',\n                        req_id: event.data.req_id,\n                        game_id: gid,\n                        score: e2.best ? e2.best.score : null,\n                        runs: e2.runs || 0\n                    }, '*');\n                } catch (e) {}\n            }\n        });\n    }\n})();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u0986\u099c\u0995\u09c7\u09b0 \u0997\u09c7\u09ae\u099f\u09bf \u098f\u0995\u099f\u09c1 \u0986\u09b2\u09be\u09a6\u09be! \u0986\u09ae\u09b0\u09be \u099a\u09b2\u09c7 \u098f\u09b8\u09c7\u099b\u09bf \u0997\u09ad\u09c0\u09b0 \u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09c7\u09b0 \u09a8\u09bf\u099a\u09c7, \u0986\u09ae\u09be\u09a6\u09c7\u09b0 \u09b8\u09ae\u09c1\u09a6\u09cd\u09b0\u09af\u09be\u09a8 (Submarine) \u09a8\u09bf\u09df\u09c7\u0964 \u0995\u09bf\u09a8\u09cd\u09a4\u09c1 \u09b9\u09a0\u09be\u09ce \u0995\u09b0\u09c7 \u09b8\u09be\u09ae\u09a8\u09c7 \u0985\u09a8\u09c7\u0995 \u09ac\u09dc \u09ac\u09dc \u09b8\u09be\u09ae\u09c1\u09a6\u09cd\u09b0\u09bf\u0995 \u09ae\u09be\u0987\u09a8 \u0986\u09b0 \u09aa\u09be\u09a5\u09b0 \u09ad\u09c7\u09b8\u09c7 \u0986\u09b8\u099b\u09c7! \u098f\u0997\u09c1\u09b2\u09cb\u0995\u09c7 \u09b8\u09b0\u09be\u09a4\u09c7 \u09b9\u09b2\u09c7 \u09a4\u09cb\u09ae\u09be\u0995\u09c7 \u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad \u099b\u09c1\u0981\u09dc\u09a4\u09c7 \u09b9\u09ac\u09c7\u0964 \u0986\u09b0 \u09b8\u09a8\u09bf\u0995 \u0993\u09df\u09c7\u09ad \u09ab\u09be\u09df\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u098f\u0995\u09ae\u09be\u09a4\u09cd\u09b0 \u0989\u09aa\u09be\u09df \u09b9\u09b2\u09cb\u2014\u09ac\u09dc \u09ac\u09dc \u09e9-\u0985\u0999\u09cd\u0995\u09c7\u09b0 \u09ac\u09bf\u09df\u09cb\u0997 \u0996\u09be\u09a4\u09be-\u0995\u09b2\u09ae \u099b\u09be\u09dc\u09be \u09e8 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7 \u09b8\u09ae\u09be\u09a7\u09be\u09a8 \u0995\u09b0\u09be! \u09ad\u09df \u09aa\u09c7\u09df\u09cb \u09a8\u09be, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-27083","post","type-post","status-publish","format-standard","hentry","category-mental-math-tricks"],"_links":{"self":[{"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/posts\/27083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/comments?post=27083"}],"version-history":[{"count":1,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/posts\/27083\/revisions"}],"predecessor-version":[{"id":27084,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/posts\/27083\/revisions\/27084"}],"wp:attachment":[{"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/media?parent=27083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/categories?post=27083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qsh.in\/boards\/wbbse\/wp-json\/wp\/v2\/tags?post=27083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}