<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-809985467483246870</id><updated>2026-10-16T06:42:14.016-07:00</updated><category term="Writing"/><category term="Reading"/><category term="Grammar"/><category term="B1 Word Exercises"/><category term="Basic Grammar"/><category term="Slider"/><category term="Paragraph"/><category term="C2 English"/><category term="Higher Secondary Grammar"/><category term="Story"/><category term="Essay"/><category term="Graph &amp; Chart"/><category term="Complete Grammar"/><category term="B2 Word Exercises"/><category term="Class IX &amp; X"/><category term="C1 English"/><category term="Idioms"/><category term="Email"/><category term="Notice"/><category term="C1 Word Exercises"/><category term="Informal Letter"/><category term="Application"/><category term="B1 English"/><category term="B 2 English"/><category term="Exam"/><category term="Poetry"/><category term="C2 Word Exercises"/><category term="Literature"/><category term="Dialogues"/><category term="Resources"/><category term="B1 Listening"/><category term="Writing Exercises"/><category term="Academia"/><category term="Student Projects"/><category term="Vocabulary Exercises"/><category term="Introduction to Literature"/><category term="Listening Test"/><category term="Synonyms &amp; Antonyms"/><category term="Astronomy"/><category term="Methodology"/><category term="Speaking"/><category term="B2 Listening"/><category term="Report"/><category term="Admin"/><category term="Complete Gramar"/><category term="Grammar Exercises"/><category term="Insight Book Store"/><category term="All Links"/><category term="C1 Listening"/><category term="C2 Listening"/><category term="Class Room Language"/><category term="Complete Gramma"/><category term="Exercises"/><category term="Flow Chart Writing"/><category term="HSC ENGLISH"/><category term="Spelling Bee"/><category term="Summary and Theme"/><category term="Surveys"/><title type='text'>INSIGHT ENGLISH LEARNING DOMAIN (IELD)</title><subtitle type='html'>grammar | sentence | sentence structure | parts of speech | noun | pronoun | adjective | verb | adverb | preposition | conjunction | interjection | phrase | phrases | clause | clauses | paragraph | application | formal email | informal email | formal letter | informal letter | graph and chart | story | essay | HSC grammar | writing | report | flow chart | summary and theme writing | English language and literature | poetry | history of English Literature | poetry | drama | novel |  all grammar |</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.ieldonline.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>922</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-7331447716112131530</id><published>2026-10-16T06:19:08.707-07:00</published><updated>2026-10-16T06:42:14.016-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Complete Gramar"/><title type='text'>Some Pages from A Comprehensive English Grammar Guide</title><content type='html'>Some Pages from &lt;a href=&quot;https://drive.google.com/drive/folders/1dueN2jx_rtwCFmc88pxdZQOEvOo1nxJv?usp=sharing&quot;&gt;A Comprehensive English Grammar Guide&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/7331447716112131530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/7331447716112131530?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/7331447716112131530'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/7331447716112131530'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/10/some-pages-from-comprehensive-english.html' title='Some Pages from A Comprehensive English Grammar Guide'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-1754186646362944600</id><published>2026-08-20T05:28:50.054-07:00</published><updated>2026-08-20T07:39:04.928-07:00</updated><title type='text'></title><content type='html'>&lt;div id=&quot;phoneme-chart-wrapper&quot;&gt;
  &lt;style&gt;
    #phoneme-chart-wrapper {
      box-sizing: border-box;
      font-family: &#39;IBM Plex Sans&#39;, -apple-system, BlinkMacSystemFont, sans-serif;
      color: #ece7dc;
      background: #12151b;
      padding: 30px 20px 40px;
      border-radius: 8px;
      max-width: 1140px;
      margin: 0 auto;
    }
    #phoneme-chart-wrapper * {
      box-sizing: border-box;
    }
    
    /* Live Speech Display Bar */
    #phoneme-chart-wrapper .speech-status-bar {
      background: #1b2029;
      border: 1px solid rgba(236,231,220,0.10);
      border-radius: 4px;
      padding: 12px 16px;
      margin-bottom: 28px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      font-family: &#39;IBM Plex Mono&#39;, monospace;
      font-size: 13px;
    }
    #phoneme-chart-wrapper .status-label {
      color: #9aa0ab;
    }
    #phoneme-chart-wrapper .status-text {
      color: #e8a33d;
      font-weight: 500;
    }

    #phoneme-chart-wrapper .section {
      margin-top: 32px;
    }
    #phoneme-chart-wrapper .section:first-child {
      margin-top: 0;
    }
    #phoneme-chart-wrapper .section-title {
      font-family: &#39;Newsreader&#39;, serif;
      font-style: italic;
      font-size: 22px;
      color: #5fbfa3;
      margin: 0 0 16px 0;
      border-bottom: 1px solid rgba(236,231,220,0.10);
      padding-bottom: 8px;
    }
    #phoneme-chart-wrapper .section[data-cat=&quot;consonant&quot;] .section-title { color: #e8a33d; }
    #phoneme-chart-wrapper .section[data-cat=&quot;diphthong&quot;] .section-title { color: #d9695f; }
    
    #phoneme-chart-wrapper .grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
      gap: 10px;
    }
    #phoneme-chart-wrapper .card {
      background: #1b2029;
      border: 1px solid rgba(236,231,220,0.10);
      border-radius: 4px;
      padding: 14px 12px;
      cursor: pointer;
      text-align: left;
      color: #ece7dc;
      transition: background .12s ease, transform .12s ease;
    }
    #phoneme-chart-wrapper .card:hover {
      background: #232a35;
      transform: translateY(-2px);
    }
    #phoneme-chart-wrapper .top-row {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      margin-bottom: 6px;
    }
    #phoneme-chart-wrapper .symbol {
      font-family: &#39;IBM Plex Mono&#39;, monospace;
      font-size: 24px;
      font-weight: 500;
      line-height: 1;
    }
    #phoneme-chart-wrapper .bangla {
      font-size: 14px;
      color: #9aa0ab;
      font-weight: 400;
    }
    #phoneme-chart-wrapper .card[data-cat=&quot;consonant&quot;] .symbol { color: #e8a33d; }
    #phoneme-chart-wrapper .card[data-cat=&quot;front&quot;] .symbol,
    #phoneme-chart-wrapper .card[data-cat=&quot;central&quot;] .symbol,
    #phoneme-chart-wrapper .card[data-cat=&quot;back&quot;] .symbol { color: #5fbfa3; }
    #phoneme-chart-wrapper .card[data-cat=&quot;diphthong&quot;] .symbol { color: #d9695f; }

    #phoneme-chart-wrapper .word {
      font-size: 13px;
      color: #9aa0ab;
      display: block;
    }
    #phoneme-chart-wrapper .word b {
      color: #ece7dc;
    }
    #phoneme-chart-wrapper .card.playing {
      outline: 2px solid currentColor;
    }
  &lt;/style&gt;

  &lt;!-- Live Status Monitor --&gt;
  &lt;div class=&quot;speech-status-bar&quot;&gt;
    &lt;span class=&quot;status-label&quot;&gt;Now Speaking:&lt;/span&gt;
    &lt;span class=&quot;status-text&quot; id=&quot;status-display&quot;&gt;Click any card to hear pronunciation&lt;/span&gt;
  &lt;/div&gt;

  &lt;div id=&quot;phoneme-sections&quot;&gt;&lt;/div&gt;

  &lt;script&gt;
    (function() {
      const DATA = [
        // Consonants (24)
        { s:&quot;p&quot;,  ipa:&quot;p&quot;,  w:&quot;pen&quot;,    bn:&quot;প&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;b&quot;,  ipa:&quot;b&quot;,  w:&quot;bat&quot;,    bn:&quot;ব&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;t&quot;,  ipa:&quot;t&quot;,  w:&quot;ten&quot;,    bn:&quot;ট&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;d&quot;,  ipa:&quot;d&quot;,  w:&quot;dog&quot;,    bn:&quot;ড&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;k&quot;,  ipa:&quot;k&quot;,  w:&quot;cat&quot;,    bn:&quot;ক&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;g&quot;,  ipa:&quot;ɡ&quot;,  w:&quot;go&quot;,     bn:&quot;গ&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;f&quot;,  ipa:&quot;f&quot;,  w:&quot;fan&quot;,    bn:&quot;ফ&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;v&quot;,  ipa:&quot;v&quot;,  w:&quot;van&quot;,    bn:&quot;ভ&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;θ&quot;,  ipa:&quot;θ&quot;,  w:&quot;think&quot;,  bn:&quot;থ (soft)&quot;,  cat:&quot;consonant&quot; },
        { s:&quot;ð&quot;,  ipa:&quot;ð&quot;,  w:&quot;this&quot;,   bn:&quot;দ (soft)&quot;,  cat:&quot;consonant&quot; },
        { s:&quot;s&quot;,  ipa:&quot;s&quot;,  w:&quot;sun&quot;,    bn:&quot;স&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;z&quot;,  ipa:&quot;z&quot;,  w:&quot;zoo&quot;,    bn:&quot;জ (soft)&quot;,  cat:&quot;consonant&quot; },
        { s:&quot;ʃ&quot;,  ipa:&quot;ʃ&quot;,  w:&quot;ship&quot;,   bn:&quot;শ&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;ʒ&quot;,  ipa:&quot;ʒ&quot;,  w:&quot;vision&quot;, bn:&quot;ঝ (soft)&quot;,  cat:&quot;consonant&quot; },
        { s:&quot;h&quot;,  ipa:&quot;h&quot;,  w:&quot;hat&quot;,    bn:&quot;হ&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;tʃ&quot;, ipa:&quot;tʃ&quot;, w:&quot;chair&quot;,  bn:&quot;চ&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;dʒ&quot;, ipa:&quot;dʒ&quot;, w:&quot;jam&quot;,    bn:&quot;জ&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;m&quot;,  ipa:&quot;m&quot;,  w:&quot;man&quot;,    bn:&quot;ম&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;n&quot;,  ipa:&quot;n&quot;,  w:&quot;net&quot;,    bn:&quot;ন&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;ŋ&quot;,  ipa:&quot;ŋ&quot;,  w:&quot;sing&quot;,   bn:&quot;ং (ঙ)&quot;,      cat:&quot;consonant&quot; },
        { s:&quot;l&quot;,  ipa:&quot;l&quot;,  w:&quot;leg&quot;,    bn:&quot;ল&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;r&quot;,  ipa:&quot;ɹ&quot;,  w:&quot;red&quot;,    bn:&quot;র&quot;,         cat:&quot;consonant&quot; },
        { s:&quot;j&quot;,  ipa:&quot;j&quot;,  w:&quot;yes&quot;,    bn:&quot;য / ইয়ে&quot;,  cat:&quot;consonant&quot; },
        { s:&quot;w&quot;,  ipa:&quot;w&quot;,  w:&quot;we&quot;,     bn:&quot;ওয়া&quot;,       cat:&quot;consonant&quot; },

        // Front Vowels (4)
        { s:&quot;ɪ&quot;,  ipa:&quot;ɪ&quot;,  w:&quot;bit&quot;,    bn:&quot;ই&quot;,         cat:&quot;front&quot; },
        { s:&quot;iː&quot;, ipa:&quot;iː&quot;, w:&quot;see&quot;,    bn:&quot;ঈ&quot;,         cat:&quot;front&quot; },
        { s:&quot;e&quot;,  ipa:&quot;e&quot;,  w:&quot;pen&quot;,    bn:&quot;এ&quot;,         cat:&quot;front&quot; },
        { s:&quot;æ&quot;,  ipa:&quot;æ&quot;,  w:&quot;cat&quot;,    bn:&quot;অ্যা&quot;,      cat:&quot;front&quot; },

        // Central Vowels (3)
        { s:&quot;ʌ&quot;,  ipa:&quot;ʌ&quot;,  w:&quot;cup&quot;,    bn:&quot;আ&quot;,         cat:&quot;central&quot; },
        { s:&quot;ɜː&quot;, ipa:&quot;ɜː&quot;, w:&quot;bird&quot;,   bn:&quot;আ (mid)&quot;,   cat:&quot;central&quot; },
        { s:&quot;ə&quot;,  ipa:&quot;ə&quot;,  w:&quot;about&quot;,  bn:&quot;অ (weak)&quot;,  cat:&quot;central&quot; },

        // Back Vowels (5)
        { s:&quot;ʊ&quot;,  ipa:&quot;ʊ&quot;,  w:&quot;put&quot;,    bn:&quot;উ&quot;,         cat:&quot;back&quot; },
        { s:&quot;uː&quot;, ipa:&quot;uː&quot;, w:&quot;blue&quot;,   bn:&quot;ঊ&quot;,         cat:&quot;back&quot; },
        { s:&quot;ɒ&quot;,  ipa:&quot;ɒ&quot;,  w:&quot;hot&quot;,    bn:&quot;অ&quot;,         cat:&quot;back&quot; },
        { s:&quot;ɔː&quot;, ipa:&quot;ɔː&quot;, w:&quot;call&quot;,   bn:&quot;অ (long)&quot;,  cat:&quot;back&quot; },
        { s:&quot;ɑː&quot;, ipa:&quot;ɑː&quot;, w:&quot;car&quot;,    bn:&quot;আ (long)&quot;,  cat:&quot;back&quot; },

        // Diphthongs (8)
        { s:&quot;eɪ&quot;, ipa:&quot;eɪ&quot;, w:&quot;day&quot;,    bn:&quot;এই&quot;,        cat:&quot;diphthong&quot; },
        { s:&quot;aɪ&quot;, ipa:&quot;aɪ&quot;, w:&quot;my&quot;,     bn:&quot;আই&quot;,        cat:&quot;diphthong&quot; },
        { s:&quot;ɔɪ&quot;, ipa:&quot;ɔɪ&quot;, w:&quot;boy&quot;,    bn:&quot;অয়&quot;,        cat:&quot;diphthong&quot; },
        { s:&quot;əʊ&quot;, ipa:&quot;əʊ&quot;, w:&quot;go&quot;,     bn:&quot;ওউ&quot;,        cat:&quot;diphthong&quot; },
        { s:&quot;aʊ&quot;, ipa:&quot;aʊ&quot;, w:&quot;now&quot;,    bn:&quot;আউ&quot;,        cat:&quot;diphthong&quot; },
        { s:&quot;ɪə&quot;, ipa:&quot;ɪə&quot;, w:&quot;near&quot;,   bn:&quot;ইয়া&quot;,       cat:&quot;diphthong&quot; },
        { s:&quot;eə&quot;, ipa:&quot;eə&quot;, w:&quot;care&quot;,   bn:&quot;এয়া&quot;,       cat:&quot;diphthong&quot; },
        { s:&quot;ʊə&quot;, ipa:&quot;ʊə&quot;, w:&quot;pure&quot;,   bn:&quot;উয়া&quot;,       cat:&quot;diphthong&quot; }
      ];

      const CAT_LABELS = {
        consonant: &quot;Consonants&quot;,
        front: &quot;Front Vowels&quot;,
        central: &quot;Central Vowels&quot;,
        back: &quot;Back Vowels&quot;,
        diphthong: &quot;Diphthongs&quot;
      };

      const CAT_ORDER = [&quot;consonant&quot;, &quot;front&quot;, &quot;central&quot;, &quot;back&quot;, &quot;diphthong&quot;];
      const container = document.getElementById(&quot;phoneme-sections&quot;);
      const statusDisplay = document.getElementById(&quot;status-display&quot;);
      const synth = window.speechSynthesis;

      CAT_ORDER.forEach(cat =&gt; {
        const items = DATA.filter(d =&gt; d.cat === cat);
        const section = document.createElement(&quot;div&quot;);
        section.className = &quot;section&quot;;
        section.dataset.cat = cat;

        const title = document.createElement(&quot;h2&quot;);
        title.className = &quot;section-title&quot;;
        title.textContent = CAT_LABELS[cat];
        section.appendChild(title);

        const grid = document.createElement(&quot;div&quot;);
        grid.className = &quot;grid&quot;;

        items.forEach(item =&gt; {
          const card = document.createElement(&quot;button&quot;);
          card.className = &quot;card&quot;;
          card.dataset.cat = cat;
          card.innerHTML = `
            &lt;div class=&quot;top-row&quot;&gt;
              &lt;span class=&quot;symbol&quot;&gt;${item.s}&lt;/span&gt;
              &lt;span class=&quot;bangla&quot;&gt;${item.bn}&lt;/span&gt;
            &lt;/div&gt;
            &lt;span class=&quot;word&quot;&gt;as in &lt;b&gt;${item.w}&lt;/b&gt;&lt;/span&gt;
          `;
          card.addEventListener(&quot;click&quot;, () =&gt; speakWord(card, item));
          grid.appendChild(card);
        });

        section.appendChild(grid);
        container.appendChild(section);
      });

      function speakWord(card, item) {
        if (!synth) {
          statusDisplay.textContent = &quot;Speech synthesis not supported on this device.&quot;;
          return;
        }
        synth.cancel();

        document.querySelectorAll(&quot;#phoneme-chart-wrapper .card&quot;).forEach(c =&gt; c.classList.remove(&quot;playing&quot;));
        card.classList.add(&quot;playing&quot;);

        const wordUtter = new SpeechSynthesisUtterance(item.w);
        wordUtter.rate = 0.85;
        wordUtter.lang = &quot;en-GB&quot;;

        // Display current phoneme details &amp; word on screen
        statusDisplay.textContent = `/${item.ipa}/ (${item.bn}) → &quot;${item.w}&quot;`;

        wordUtter.onend = () =&gt; {
          card.classList.remove(&quot;playing&quot;);
          statusDisplay.textContent = &quot;Click any card to hear pronunciation&quot;;
        };
        wordUtter.onerror = () =&gt; {
          card.classList.remove(&quot;playing&quot;);
          statusDisplay.textContent = &quot;Click any card to hear pronunciation&quot;;
        };

        synth.speak(wordUtter);
      }
    })();
  &lt;/script&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/1754186646362944600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/1754186646362944600?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1754186646362944600'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1754186646362944600'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/const-data-consonants-24-sp-wpen-bn.html' title=''/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-2755963814184980331</id><published>2026-08-15T09:46:14.311-07:00</published><updated>2026-08-15T09:46:14.312-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Exam"/><title type='text'>JSC Scholarship Syllabus and Suggestion</title><content type='html'>&lt;!-- ============================================================
     JSC EXAMINATION 2027 | ENGLISH — Syllabus &amp; Suggestion Guide
     Paste this whole block into Blogger: Post editor → &quot;HTML view&quot;
     (the &lt;/&gt; icon), then Publish. Self-contained, no external files.
     ============================================================ --&gt;
&lt;div class=&quot;jsc2027-wrap&quot;&gt;

  &lt;style&gt;
    .jsc2027-wrap{
      --navy:#173F8A;
      --light-blue:#EAF1FF;
      --pale-blue:#E8EEF8;
      --pale-green:#F0FDF4;
      --red:#B91C1C;
      --orange:#C2410C;
      --purple:#6D28D9;
      --white:#FFFFFF;
      --black:#111111;
      max-width: 820px;
      margin: 0 auto;
      font-family: &quot;Segoe UI&quot;, Arial, &quot;Helvetica Neue&quot;, sans-serif;
      color: var(--black);
      line-height: 1.5;
      box-sizing: border-box;
    }
    .jsc2027-wrap *{ box-sizing: border-box; }

    .jsc2027-eyebrow{
      text-align:center;
      color:var(--navy);
      font-weight:700;
      font-size:12px;
      letter-spacing:.5px;
      margin:0 0 2px;
    }
    .jsc2027-title{
      text-align:center;
      color:var(--navy);
      font-weight:800;
      font-size:30px;
      margin:0 0 4px;
    }
    .jsc2027-subtitle{
      text-align:center;
      font-size:15px;
      margin:0 0 16px;
      color:#333;
    }

    .jsc2027-section{
      margin: 0 0 18px;
      border-radius: 4px;
      overflow: hidden;
      box-shadow: 0 1px 2px rgba(0,0,0,0.06);
    }
    .jsc2027-head{
      display:flex;
      cursor:pointer;
      user-select:none;
    }
    .jsc2027-num{
      background:var(--navy);
      color:var(--white);
      font-weight:800;
      font-size:15px;
      padding:10px 16px;
      display:flex;
      align-items:center;
      min-width:48px;
      justify-content:center;
    }
    .jsc2027-headtext{
      background:var(--light-blue);
      color:var(--navy);
      font-weight:700;
      font-size:15px;
      padding:10px 16px;
      flex:1;
      display:flex;
      align-items:center;
      justify-content:space-between;
    }
    .jsc2027-caret{
      font-size:12px;
      transition: transform .2s ease;
      opacity:.7;
    }
    .jsc2027-section.collapsed .jsc2027-caret{ transform: rotate(-90deg); }

    .jsc2027-body{
      background:var(--white);
      padding: 14px 16px 4px;
      overflow:hidden;
    }
    .jsc2027-section.collapsed .jsc2027-body{
      display:none;
    }

    /* marks table */
    .jsc2027-table{
      width:100%;
      border-collapse: collapse;
      font-size:14px;
      margin-bottom: 10px;
    }
    .jsc2027-table thead th{
      background:var(--pale-blue);
      color:var(--navy);
      font-weight:700;
      text-align:left;
      padding:8px 10px;
    }
    .jsc2027-table thead th:last-child{ text-align:center; width:110px; }
    .jsc2027-table tbody td{
      padding:7px 10px;
      border-bottom: 1px solid #eef1f6;
    }
    .jsc2027-table tbody td:last-child{ text-align:center; white-space:nowrap; }
    .jsc2027-table tfoot td{
      background:var(--pale-green);
      font-weight:800;
      padding:9px 10px;
    }
    .jsc2027-table tfoot td:last-child{ text-align:center; }

    /* 3-across bullet grid (flexbox: safest cross-browser/Blogger support) */
    .jsc2027-grid{
      display:flex;
      flex-wrap: wrap;
      gap: 10px 18px;
      padding-bottom: 12px;
      font-size:14px;
    }
    .jsc2027-grid div{
      flex: 1 1 30%;
      min-width: 200px;
      padding-left: 14px;
      position:relative;
    }
    .jsc2027-grid div::before{
      content:&quot;\2022&quot;;
      position:absolute;
      left:0;
      color:var(--navy);
      font-weight:700;
    }
    @media (max-width: 640px){
      .jsc2027-grid div{ flex: 1 1 100%; }
      .jsc2027-title{ font-size:24px; }
    }

    /* composition priority labels */
    .jsc2027-priority{
      font-size:14px;
      margin: 0 0 10px;
    }
    .jsc2027-priority b{ font-weight:800; }
    .jsc2027-priority.must b{ color:var(--red); }
    .jsc2027-priority.very b{ color:var(--orange); }
    .jsc2027-priority.imp b{ color:var(--purple); }

    .jsc2027-footer{
      text-align:center;
      font-style: italic;
      font-size:12px;
      color:#555;
      margin: 8px 0 0;
    }
  &lt;/style&gt;

  &lt;p class=&quot;jsc2027-eyebrow&quot;&gt;JSC EXAMINATION 2027&lt;/p&gt;
  &lt;h2 class=&quot;jsc2027-title&quot;&gt;ENGLISH&lt;/h2&gt;
  &lt;p class=&quot;jsc2027-subtitle&quot;&gt;Complete Syllabus &amp;amp; Suggestion Guide | Full Marks: 100&lt;/p&gt;

  &lt;!-- 01 Marks Distribution --&gt;
  &lt;div class=&quot;jsc2027-section&quot;&gt;
    &lt;div class=&quot;jsc2027-head&quot;&gt;
      &lt;div class=&quot;jsc2027-num&quot;&gt;01&lt;/div&gt;
      &lt;div class=&quot;jsc2027-headtext&quot;&gt;Marks Distribution &amp;amp; Syllabus Breakdown &lt;span class=&quot;jsc2027-caret&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;jsc2027-body&quot;&gt;
      &lt;table class=&quot;jsc2027-table&quot;&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Test Item&lt;/th&gt;&lt;th&gt;Marks&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td&gt;Seen Passage-1 – MCQ&lt;/td&gt;&lt;td&gt;0.5×10 = 5&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Seen Passage-1 – Answering questions&lt;/td&gt;&lt;td&gt;2×4 = 8&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Seen Passage-2 – Gap filling&lt;/td&gt;&lt;td&gt;0.5×5 = 2.5&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Seen Passage-2 – Vocabulary (Synonyms &amp;amp; Antonyms)&lt;/td&gt;&lt;td&gt;0.5×5 = 2.5&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Unseen Passage – Information Transfer / True-False&lt;/td&gt;&lt;td&gt;1×5 = 5&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Unseen Passage – Writing Summary&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Unseen Passage – Matching&lt;/td&gt;&lt;td&gt;1×4 = 4&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Poems – Answering questions (any 4 of 7)&lt;/td&gt;&lt;td&gt;2×4 = 8&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Grammar – Gap filling with/without clues&lt;/td&gt;&lt;td&gt;0.5×10 = 5&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Grammar – Substitution table&lt;/td&gt;&lt;td&gt;1×5 = 5&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Grammar – Right form of Verbs&lt;/td&gt;&lt;td&gt;0.5×10 = 5&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Grammar – Changing Sentences&lt;/td&gt;&lt;td&gt;1×10 = 10&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Grammar – Punctuation and Capitalization&lt;/td&gt;&lt;td&gt;0.5×10 = 5&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Writing – Letter/E-mail (Formal/Informal)&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Writing – Completing stories / Writing dialogues&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;Writing – Short composition (200 words)&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
        &lt;tfoot&gt;&lt;tr&gt;&lt;td&gt;Total&lt;/td&gt;&lt;td&gt;100&lt;/td&gt;&lt;/tr&gt;&lt;/tfoot&gt;
      &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 02 Writing part glance --&gt;
  &lt;div class=&quot;jsc2027-section&quot;&gt;
    &lt;div class=&quot;jsc2027-head&quot;&gt;
      &lt;div class=&quot;jsc2027-num&quot;&gt;02&lt;/div&gt;
      &lt;div class=&quot;jsc2027-headtext&quot;&gt;Writing Part (30 Marks) – At a Glance &lt;span class=&quot;jsc2027-caret&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;jsc2027-body&quot;&gt;
      &lt;div class=&quot;jsc2027-grid&quot;&gt;
        &lt;div&gt;Letter/E-mail (Formal/Informal) – 8 marks&lt;/div&gt;
        &lt;div&gt;Completing story / Writing dialogue – 10 marks&lt;/div&gt;
        &lt;div&gt;Short composition, 200 words – 12 marks&lt;/div&gt;
        &lt;div&gt;Practise one of each type every week&lt;/div&gt;
        &lt;div&gt;Learn fixed formats for formal letters/emails&lt;/div&gt;
        &lt;div&gt;Keep 2–3 model dialogues memorised as patterns&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 03 Letter/Email suggestions --&gt;
  &lt;div class=&quot;jsc2027-section&quot;&gt;
    &lt;div class=&quot;jsc2027-head&quot;&gt;
      &lt;div class=&quot;jsc2027-num&quot;&gt;03&lt;/div&gt;
      &lt;div class=&quot;jsc2027-headtext&quot;&gt;Letter / E-mail Suggestions &lt;span class=&quot;jsc2027-caret&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;jsc2027-body&quot;&gt;
      &lt;div class=&quot;jsc2027-grid&quot;&gt;
        &lt;div&gt;Application for a school library&lt;/div&gt;
        &lt;div&gt;Application for leave of absence&lt;/div&gt;
        &lt;div&gt;Application for organising a study tour&lt;/div&gt;
        &lt;div&gt;Application for a common room / canteen&lt;/div&gt;
        &lt;div&gt;Application for financial assistance&lt;/div&gt;
        &lt;div&gt;Application for opening a science club&lt;/div&gt;
        &lt;div&gt;Email describing your school to a friend&lt;/div&gt;
        &lt;div&gt;Email congratulating a friend on success&lt;/div&gt;
        &lt;div&gt;Letter/email on the importance of games and sports&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 04 Story &amp; dialogue --&gt;
  &lt;div class=&quot;jsc2027-section&quot;&gt;
    &lt;div class=&quot;jsc2027-head&quot;&gt;
      &lt;div class=&quot;jsc2027-num&quot;&gt;04&lt;/div&gt;
      &lt;div class=&quot;jsc2027-headtext&quot;&gt;Story Completion &amp;amp; Dialogue Suggestions &lt;span class=&quot;jsc2027-caret&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;jsc2027-body&quot;&gt;
      &lt;div class=&quot;jsc2027-grid&quot;&gt;
        &lt;div&gt;Story: Honesty is the Best Policy&lt;/div&gt;
        &lt;div&gt;Story: Slow and Steady Wins the Race&lt;/div&gt;
        &lt;div&gt;Story: A Friend in Need is a Friend Indeed&lt;/div&gt;
        &lt;div&gt;Story: United We Stand, Divided We Fall&lt;/div&gt;
        &lt;div&gt;Dialogue: on the importance of reading newspapers&lt;/div&gt;
        &lt;div&gt;Dialogue: on the benefits of a morning walk&lt;/div&gt;
        &lt;div&gt;Dialogue: planning a class picnic&lt;/div&gt;
        &lt;div&gt;Dialogue: on preparation for the JSC examination&lt;/div&gt;
        &lt;div&gt;Dialogue: on the uses of the school library&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 05 Composition suggestions --&gt;
  &lt;div class=&quot;jsc2027-section&quot;&gt;
    &lt;div class=&quot;jsc2027-head&quot;&gt;
      &lt;div class=&quot;jsc2027-num&quot;&gt;05&lt;/div&gt;
      &lt;div class=&quot;jsc2027-headtext&quot;&gt;Composition Suggestions (200 words) &lt;span class=&quot;jsc2027-caret&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;jsc2027-body&quot;&gt;
      &lt;p class=&quot;jsc2027-priority must&quot;&gt;&lt;b&gt;MUST PREPARE:&lt;/b&gt; Your School; A Book Fair; Your Hobby; A Winter Morning; Your Aim in Life.&lt;/p&gt;
      &lt;p class=&quot;jsc2027-priority very&quot;&gt;&lt;b&gt;VERY IMPORTANT:&lt;/b&gt; Load Shedding; A Journey by Boat; Discipline in Student Life.&lt;/p&gt;
      &lt;p class=&quot;jsc2027-priority imp&quot;&gt;&lt;b&gt;IMPORTANT:&lt;/b&gt; Tree Plantation; Physical Exercise.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 06 Preparation strategy --&gt;
  &lt;div class=&quot;jsc2027-section&quot;&gt;
    &lt;div class=&quot;jsc2027-head&quot;&gt;
      &lt;div class=&quot;jsc2027-num&quot;&gt;06&lt;/div&gt;
      &lt;div class=&quot;jsc2027-headtext&quot;&gt;Preparation Strategy – Writing Part &lt;span class=&quot;jsc2027-caret&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;jsc2027-body&quot;&gt;
      &lt;div class=&quot;jsc2027-grid&quot;&gt;
        &lt;div&gt;Formats: memorise the fixed opening/closing of formal letters and emails&lt;/div&gt;
        &lt;div&gt;Stories: learn the moral-based story pattern (beginning – middle – end – moral)&lt;/div&gt;
        &lt;div&gt;Dialogues: practise 8–10 exchange dialogues on everyday/school topics&lt;/div&gt;
        &lt;div&gt;Composition: prepare outlines under fixed sub-headings (Introduction, body points, Conclusion)&lt;/div&gt;
        &lt;div&gt;Revision: rewrite each prepared piece from memory once a week&lt;/div&gt;
        &lt;div&gt;Time management: allot roughly 10 / 12 / 15 minutes to letter, dialogue/story, and composition respectively&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p class=&quot;jsc2027-footer&quot;&gt;JSC Syllabus 2027 | English | Full Marks: 100&lt;/p&gt;
&lt;/div&gt;

&lt;script&gt;
(function(){
  var sections = document.querySelectorAll(&#39;.jsc2027-wrap .jsc2027-section&#39;);
  sections.forEach(function(sec){
    var head = sec.querySelector(&#39;.jsc2027-head&#39;);
    head.addEventListener(&#39;click&#39;, function(){
      sec.classList.toggle(&#39;collapsed&#39;);
    });
  });
})();
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/2755963814184980331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/2755963814184980331?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/2755963814184980331'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/2755963814184980331'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/jsc-scholarship-syllabus-and-suggestion.html' title='JSC Scholarship Syllabus and Suggestion'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-1005380678421218556</id><published>2026-08-15T03:30:13.858-07:00</published><updated>2026-08-15T03:30:13.858-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Exam"/><title type='text'>HSC Syllabus and Suggestion - 2027</title><content type='html'>&lt;!-- ===================================================================
     HSC 2027 English 2nd Paper -- Syllabus &amp; Suggestion Guide
     Paste this entire block into Blogger: Post editor -&gt; &quot;HTML view&quot;
     =================================================================== --&gt;
&lt;div id=&quot;hsc-guide-wrapper&quot;&gt;
&lt;style&gt;
  #hsc-guide-wrapper {
    --blue: #173F8A;
    --light-blue: #EAF1FF;
    --green: #F0FDF4;
    --purple: #6D28D9;
    --orange: #C2410C;
    --red: #B91C1C;
    --border: #B9C6DE;
    --text: #1a1a1a;
    max-width: 900px;
    margin: 0 auto;
    font-family: -apple-system, &quot;Segoe UI&quot;, Calibri, Arial, sans-serif;
    color: var(--text);
  }
  #hsc-guide-wrapper * { box-sizing: border-box; }

  .hsc-toolbar {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin: 0 0 16px;
  }
  .hsc-btn {
    background: var(--blue);
    color: #fff;
    border: none;
    padding: 10px 20px;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: background .15s ease, transform .1s ease;
  }
  .hsc-btn:hover { background: #10306b; transform: translateY(-1px); }
  .hsc-btn:active { transform: translateY(0); }
  .hsc-btn svg { width: 16px; height: 16px; fill: #fff; }

  .hsc-sheet {
    background: #fff;
    border: 1px solid #e2e8f0;
    box-shadow: 0 2px 10px rgba(0,0,0,0.06);
    padding: 26px 30px 18px;
    border-radius: 4px;
  }

  .hsc-title-cap {
    text-align: center;
    font-weight: 700;
    color: var(--blue);
    font-size: 13px;
    letter-spacing: .5px;
    margin: 0;
  }
  .hsc-title-main {
    text-align: center;
    font-weight: 800;
    color: var(--blue);
    font-size: 26px;
    letter-spacing: .5px;
    margin: 2px 0 4px;
  }
  .hsc-title-sub {
    text-align: center;
    font-style: italic;
    font-size: 13.5px;
    margin: 0 0 16px;
  }

  .hsc-section-head {
    display: flex;
    align-items: stretch;
    background: var(--blue);
    color: #fff;
    border-radius: 3px;
    overflow: hidden;
    margin: 18px 0 10px;
  }
  .hsc-section-head .num {
    background: rgba(255,255,255,0.12);
    padding: 8px 14px;
    font-weight: 700;
    font-size: 13.5px;
    display: flex;
    align-items: center;
  }
  .hsc-section-head .title {
    padding: 8px 14px;
    font-weight: 700;
    font-size: 13.5px;
    display: flex;
    align-items: center;
  }

  table.hsc-marks {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
  }
  table.hsc-marks th, table.hsc-marks td {
    border: 1px solid var(--border);
    padding: 6px 10px;
    text-align: left;
  }
  table.hsc-marks th {
    background: var(--light-blue);
    font-weight: 700;
  }
  table.hsc-marks td.num, table.hsc-marks th.num { text-align: left; width: 70px; }
  table.hsc-marks tr.total td { background: var(--green); font-weight: 700; }

  .hsc-grid {
    font-size: 13px;
    margin-bottom: 4px;
    letter-spacing: normal;
  }
  .hsc-grid div {
    display: inline-block;
    vertical-align: top;
    width: 32%;
    margin-right: 1%;
    padding-bottom: 6px;
    line-height: 1.45;
    box-sizing: border-box;
  }
  .hsc-grid div::before {
    content: &quot;\2022\00A0&quot;;
  }

  .hsc-tier { font-size: 13px; line-height: 1.6; margin: 4px 0; }
  .hsc-tier b { font-weight: 700; }
  .hsc-tier.must b { color: var(--purple); }
  .hsc-tier.very b { color: var(--orange); }
  .hsc-tier.imp b { color: var(--red); }

  .hsc-strategy { font-size: 13px; line-height: 1.7; margin: 3px 0; }
  .hsc-strategy b { color: var(--blue); }

  .hsc-footer {
    text-align: center;
    font-style: italic;
    font-size: 12px;
    margin-top: 16px;
    padding-top: 8px;
    border-top: 1px solid #e2e8f0;
  }

  /* ---------- Print styles ---------- */
  @page { size: A4; margin: 10mm; }

  @media print {
    .hsc-toolbar { display: none !important; }
    #hsc-guide-wrapper { max-width: 100%; }
    .hsc-sheet {
      box-shadow: none;
      border: none;
      padding: 0;
    }
    body { margin: 0; }
  }

  @media (max-width: 640px) {
    .hsc-grid div { width: 100%; float: none; padding-right: 0; }
    .hsc-sheet { padding: 18px; }
    .hsc-title-main { font-size: 20px; }
  }
&lt;/style&gt;

&lt;div class=&quot;hsc-toolbar&quot;&gt;
  &lt;button class=&quot;hsc-btn&quot; onclick=&quot;hscPrint()&quot;&gt;
    &lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z&quot;/&gt;&lt;/svg&gt;
    Print / Save as PDF
  &lt;/button&gt;
&lt;/div&gt;

&lt;div class=&quot;hsc-sheet&quot; id=&quot;hsc-print-area&quot;&gt;

  &lt;p class=&quot;hsc-title-cap&quot;&gt;HSC EXAMINATION 2027&lt;/p&gt;
  &lt;p class=&quot;hsc-title-main&quot;&gt;ENGLISH 2ND PAPER&lt;/p&gt;
  &lt;p class=&quot;hsc-title-sub&quot;&gt;Complete Syllabus &amp;amp; Suggestion Guide | Full Marks: 100&lt;/p&gt;

  &lt;!-- 01 --&gt;
  &lt;div class=&quot;hsc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;01&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Marks Distribution &amp;amp; Syllabus Breakdown&lt;/div&gt;&lt;/div&gt;
  &lt;table class=&quot;hsc-marks&quot;&gt;
    &lt;tr&gt;&lt;th&gt;Topic / Item&lt;/th&gt;&lt;th class=&quot;num&quot;&gt;Marks&lt;/th&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;1. Gap filling activities without clues (Articles)&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2. Gap filling activities without clues (Prepositions)&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;3. Gap filling activities with words &amp;amp; phrases&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;4. Completing sentences (with clauses/phrases)&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;5. Use of verbs (right form of verbs and subject-verb agreement)&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;6. Changing Sentences&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;7. Narrative style (direct to indirect and vice versa)&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;8. Pronoun Reference&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;9. Use of modifiers&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;10. Use of sentence connectors&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;11. Use of synonym and antonym&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;12. Punctuation&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;13. Formal letter writing / Email&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;08&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;14. Report Writing&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;08&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;15. Paragraph Writing&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;10&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;16. Free Writing / Composition&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;14&lt;/td&gt;&lt;/tr&gt;
    &lt;tr class=&quot;total&quot;&gt;&lt;td&gt;Total&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;100&lt;/td&gt;&lt;/tr&gt;
  &lt;/table&gt;

  &lt;!-- 02 --&gt;
  &lt;div class=&quot;hsc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;02&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Key Grammar Areas&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;hsc-grid&quot;&gt;
    &lt;div&gt;Articles &amp;amp; Prepositions&lt;/div&gt;&lt;div&gt;Right Forms of Verbs &amp;amp; Subject-Verb Agreement&lt;/div&gt;&lt;div&gt;Modifiers (Pre-modifiers &amp;amp; Post-modifiers)&lt;/div&gt;
    &lt;div&gt;Sentence Connectors&lt;/div&gt;&lt;div&gt;Changing Sentences (Voice, Degree, Structure)&lt;/div&gt;&lt;div&gt;Direct &amp;amp; Indirect Narration&lt;/div&gt;
    &lt;div&gt;Completing Sentences&lt;/div&gt;&lt;div&gt;Pronoun Reference&lt;/div&gt;&lt;div&gt;Synonyms &amp;amp; Antonyms&lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 03 --&gt;
  &lt;div class=&quot;hsc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;03&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Formal Letter / Email Suggestions&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;hsc-grid&quot;&gt;
    &lt;div&gt;Application for increasing library/canteen/computer lab facilities&lt;/div&gt;&lt;div&gt;Application for a seat in the college hostel&lt;/div&gt;&lt;div&gt;Application for permission to go on a study tour&lt;/div&gt;
    &lt;div&gt;Complaint letter to civic authorities (road repair, water supply)&lt;/div&gt;&lt;div&gt;Email seeking admission information or seeking a refund&lt;/div&gt;&lt;div&gt;Email thanking/congratulating a friend or professor&lt;/div&gt;
    &lt;div&gt;Application for a testimonial/character certificate&lt;/div&gt;&lt;div&gt;Application for a transfer certificate&lt;/div&gt;&lt;div&gt;Application for financial assistance from the principal&lt;/div&gt;
    &lt;div&gt;Email describing your college campus/annual function&lt;/div&gt;&lt;div&gt;Letter to a friend about your plans after HSC&lt;/div&gt;&lt;div&gt;Email inviting a friend to attend a seminar/workshop&lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 04 --&gt;
  &lt;div class=&quot;hsc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;04&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Report Writing Suggestions&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;hsc-grid&quot;&gt;
    &lt;div&gt;Recent Price Hike of Essential Commodities&lt;/div&gt;&lt;div&gt;Devastating Fire Accident / Road Accident&lt;/div&gt;&lt;div&gt;Observance of International Mother Language Day at College&lt;/div&gt;
    &lt;div&gt;Impact of Traffic Jam in City Life&lt;/div&gt;&lt;div&gt;Prize Giving Ceremony of College&lt;/div&gt;&lt;div&gt;Environment Pollution and Dengue Outbreak&lt;/div&gt;
    &lt;div&gt;Rally to Prevent Drug Abuse&lt;/div&gt;&lt;div&gt;Annual Sports Competition of College&lt;/div&gt;&lt;div&gt;Impact of Social Media on Student Life&lt;/div&gt;
    &lt;div&gt;Flood Situation in Bangladesh&lt;/div&gt;&lt;div&gt;Tree Plantation Campaign in the Locality&lt;/div&gt;&lt;div&gt;Science Fair/Exhibition at College&lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 05 --&gt;
  &lt;div class=&quot;hsc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;05&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Paragraph Suggestions&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;hsc-grid&quot;&gt;
    &lt;div&gt;Deforestation and Climate Change&lt;/div&gt;&lt;div&gt;The Uses and Abuses of Social Media / Internet&lt;/div&gt;&lt;div&gt;Price Hike and Its Impact&lt;/div&gt;
    &lt;div&gt;Female Education&lt;/div&gt;&lt;div&gt;Digital Bangladesh / Smart Bangladesh&lt;/div&gt;&lt;div&gt;Food Adulteration and Health Hazards&lt;/div&gt;
    &lt;div&gt;A Street Hawker / Street Beggar&lt;/div&gt;&lt;div&gt;Your Aim in Life&lt;/div&gt;&lt;div&gt;A Winter Morning&lt;/div&gt;
    &lt;div&gt;Water Pollution&lt;/div&gt;&lt;div&gt;Load Shedding&lt;/div&gt;&lt;div&gt;Traffic Jam&lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 06 --&gt;
  &lt;div class=&quot;hsc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;06&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Free Writing / Composition Suggestions&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;hsc-tier must&quot;&gt;&lt;b&gt;MUST PREPARE:&lt;/b&gt; The Uses and Misuses of Modern Science; The Importance of Tree Plantation; Climate Change &amp;amp; Natural Calamities; Wonders of Modern Science; The Liberation War of Bangladesh; Your Reading Habit.&lt;/p&gt;
  &lt;p class=&quot;hsc-tier very&quot;&gt;&lt;b&gt;VERY IMPORTANT:&lt;/b&gt; Unemployment Problem in Bangladesh; The Value of Time; Patriotism; A Journey by Train/Boat; Global Warming and Its Effects.&lt;/p&gt;
  &lt;p class=&quot;hsc-tier imp&quot;&gt;&lt;b&gt;IMPORTANT:&lt;/b&gt; Student Life and Duties of Students; Your Future Plan in Life; Duties of a Student in Society; Your Favourite Hobby.&lt;/p&gt;

  &lt;!-- 07 --&gt;
  &lt;div class=&quot;hsc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;07&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Preparation Strategy&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;hsc-strategy&quot;&gt;&amp;#8226; &lt;b&gt;Grammar Foundation:&lt;/b&gt; Focus heavily on Subject-Verb Agreement, Modifiers, Connectors, and Changing Sentences. Practice daily board questions.&lt;/p&gt;
  &lt;p class=&quot;hsc-strategy&quot;&gt;&amp;#8226; &lt;b&gt;Writing Part (40 Marks):&lt;/b&gt; Maintain standard formats for Formal Letters, Emails, and Newspaper Reports to secure full structural marks.&lt;/p&gt;
  &lt;p class=&quot;hsc-strategy&quot;&gt;&amp;#8226; &lt;b&gt;Vocabulary:&lt;/b&gt; Enhance your active vocabulary daily to excel in Synonyms/Antonyms and Free Writing topics.&lt;/p&gt;

  &lt;p class=&quot;hsc-footer&quot;&gt;HSC Syllabus 2027 | English 2nd Paper | Full Marks: 100&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
  function hscPrint() {
    window.print();
  }
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/1005380678421218556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/1005380678421218556?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1005380678421218556'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1005380678421218556'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/hsc-syllabus-and-suggestion-2027.html' title='HSC Syllabus and Suggestion - 2027'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-6728656155914219963</id><published>2026-08-14T10:12:22.649-07:00</published><updated>2026-08-15T03:36:27.333-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Exam"/><title type='text'>SSC Syllabus and Suggestion - 2027</title><content type='html'>&lt;!-- ===================================================================
     SSC 2027 English 2nd Paper -- Syllabus &amp; Suggestion Guide
     Paste this entire block into Blogger: Post editor -&gt; &quot;HTML view&quot;
     =================================================================== --&gt;
&lt;div id=&quot;ssc-guide-wrapper&quot;&gt;
&lt;style&gt;
  #ssc-guide-wrapper {
    --blue: #173F8A;
    --light-blue: #EAF1FF;
    --green: #F0FDF4;
    --purple: #6D28D9;
    --orange: #C2410C;
    --red: #B91C1C;
    --border: #B9C6DE;
    --text: #1a1a1a;
    max-width: 900px;
    margin: 0 auto;
    font-family: -apple-system, &quot;Segoe UI&quot;, Calibri, Arial, sans-serif;
    color: var(--text);
  }
  #ssc-guide-wrapper * { box-sizing: border-box; }

  .ssc-toolbar {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin: 0 0 16px;
  }
  .ssc-btn {
    background: var(--blue);
    color: #fff;
    border: none;
    padding: 10px 20px;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: background .15s ease, transform .1s ease;
  }
  .ssc-btn:hover { background: #10306b; transform: translateY(-1px); }
  .ssc-btn:active { transform: translateY(0); }
  .ssc-btn svg { width: 16px; height: 16px; fill: #fff; }

  .ssc-sheet {
    background: #fff;
    border: 1px solid #e2e8f0;
    box-shadow: 0 2px 10px rgba(0,0,0,0.06);
    padding: 26px 30px 18px;
    border-radius: 4px;
  }

  .ssc-title-cap {
    text-align: center;
    font-weight: 700;
    color: var(--blue);
    font-size: 13px;
    letter-spacing: .5px;
    margin: 0;
  }
  .ssc-title-main {
    text-align: center;
    font-weight: 800;
    color: var(--blue);
    font-size: 26px;
    letter-spacing: .5px;
    margin: 2px 0 4px;
  }
  .ssc-title-sub {
    text-align: center;
    font-style: italic;
    font-size: 13.5px;
    margin: 0 0 16px;
  }

  .ssc-section-head {
    display: flex;
    align-items: stretch;
    background: var(--blue);
    color: #fff;
    border-radius: 3px;
    overflow: hidden;
    margin: 18px 0 10px;
  }
  .ssc-section-head .num {
    background: rgba(255,255,255,0.12);
    padding: 8px 14px;
    font-weight: 700;
    font-size: 13.5px;
    display: flex;
    align-items: center;
  }
  .ssc-section-head .title {
    padding: 8px 14px;
    font-weight: 700;
    font-size: 13.5px;
    display: flex;
    align-items: center;
  }

  table.ssc-marks {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
  }
  table.ssc-marks th, table.ssc-marks td {
    border: 1px solid var(--border);
    padding: 6px 10px;
    text-align: left;
  }
  table.ssc-marks th {
    background: var(--light-blue);
    font-weight: 700;
  }
  table.ssc-marks td.num, table.ssc-marks th.num { text-align: left; width: 70px; }
  table.ssc-marks tr.total td { background: var(--green); font-weight: 700; }

  .ssc-grid {
    font-size: 13px;
    margin-bottom: 4px;
    letter-spacing: normal;
  }
  .ssc-grid div {
    display: inline-block;
    vertical-align: top;
    width: 32%;
    margin-right: 1%;
    padding-bottom: 6px;
    line-height: 1.45;
    box-sizing: border-box;
  }
  .ssc-grid div::before {
    content: &quot;\2022\00A0&quot;;
  }

  /* two-column variant, used by the Preparation Strategy section */
  .ssc-grid-2col div {
    width: 49%;
    margin-right: 1%;
  }

  .ssc-tier { font-size: 13px; line-height: 1.6; margin: 4px 0; }
  .ssc-tier b { font-weight: 700; }
  .ssc-tier.must b { color: var(--purple); }
  .ssc-tier.very b { color: var(--orange); }
  .ssc-tier.imp b { color: var(--red); }

  .ssc-footer {
    text-align: center;
    font-style: italic;
    font-size: 12px;
    margin-top: 16px;
    padding-top: 8px;
    border-top: 1px solid #e2e8f0;
  }

  /* ---------- Print styles ---------- */
  @page { size: A4; margin: 10mm; }

  @media print {
    .ssc-toolbar { display: none !important; }
    #ssc-guide-wrapper { max-width: 100%; }
    .ssc-sheet {
      box-shadow: none;
      border: none;
      padding: 0;
    }
    body { margin: 0; }
  }

  @media (max-width: 640px) {
    .ssc-grid div { width: 100%; float: none; padding-right: 0; }
    .ssc-grid-2col div { width: 100%; }
    .ssc-sheet { padding: 18px; }
    .ssc-title-main { font-size: 20px; }
  }
&lt;/style&gt;

&lt;div class=&quot;ssc-toolbar&quot;&gt;
  &lt;button class=&quot;ssc-btn&quot; onclick=&quot;sscPrint()&quot;&gt;
    &lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z&quot;/&gt;&lt;/svg&gt;
    Print / Save as PDF
  &lt;/button&gt;
&lt;/div&gt;

&lt;div class=&quot;ssc-sheet&quot; id=&quot;ssc-print-area&quot;&gt;

  &lt;p class=&quot;ssc-title-cap&quot;&gt;SSC EXAMINATION 2027&lt;/p&gt;
  &lt;p class=&quot;ssc-title-main&quot;&gt;ENGLISH 2ND PAPER&lt;/p&gt;
  &lt;p class=&quot;ssc-title-sub&quot;&gt;Complete Syllabus &amp;amp; Suggestion Guide | Full Marks: 100&lt;/p&gt;

  &lt;!-- 01 --&gt;
  &lt;div class=&quot;ssc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;01&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Marks Distribution &amp;amp; Syllabus Breakdown&lt;/div&gt;&lt;/div&gt;
  &lt;table class=&quot;ssc-marks&quot;&gt;
    &lt;tr&gt;&lt;th&gt;Topic / Item&lt;/th&gt;&lt;th class=&quot;num&quot;&gt;Marks&lt;/th&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Filling gap with clues&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;10&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Substitution table&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Right form of verbs&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;10&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Changing sentence&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;10&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Tag question&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Suffix and prefix&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Preposition&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Connectors&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Punctuation and capitalization&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;05&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Paragraph writing&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;10&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;E-mail/letter/application&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;10&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Composition&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;20&lt;/td&gt;&lt;/tr&gt;
    &lt;tr class=&quot;total&quot;&gt;&lt;td&gt;Total&lt;/td&gt;&lt;td class=&quot;num&quot;&gt;100&lt;/td&gt;&lt;/tr&gt;
  &lt;/table&gt;

  &lt;!-- 02 --&gt;
  &lt;div class=&quot;ssc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;02&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Key Grammar Areas&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;ssc-grid&quot;&gt;
    &lt;div&gt;Active and Passive Voice&lt;/div&gt;&lt;div&gt;Positive, Comparative and Superlative&lt;/div&gt;&lt;div&gt;Assertive to Exclamatory&lt;/div&gt;
    &lt;div&gt;Simple, Complex and Compound&lt;/div&gt;&lt;div&gt;Right form of verbs&lt;/div&gt;&lt;div&gt;Tag questions&lt;/div&gt;
    &lt;div&gt;Suffix and Prefix&lt;/div&gt;&lt;div&gt;Prepositions&lt;/div&gt;&lt;div&gt;Connectors&lt;/div&gt;
    &lt;div&gt;Punctuation and Capitalization&lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 03 --&gt;
  &lt;div class=&quot;ssc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;03&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Paragraph Suggestions&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;ssc-grid&quot;&gt;
    &lt;div&gt;Tree Plantation&lt;/div&gt;&lt;div&gt;Climate Change&lt;/div&gt;&lt;div&gt;The Uses and Abuses of the Internet&lt;/div&gt;
    &lt;div&gt;Traffic Jam&lt;/div&gt;&lt;div&gt;A Book Fair&lt;/div&gt;&lt;div&gt;Food Adulteration&lt;/div&gt;
    &lt;div&gt;A Village Fair&lt;/div&gt;&lt;div&gt;Physical Exercise&lt;/div&gt;&lt;div&gt;The Importance of Education&lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 04 --&gt;
  &lt;div class=&quot;ssc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;04&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Composition Suggestions&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;ssc-tier must&quot;&gt;&lt;b&gt;MUST PREPARE:&lt;/b&gt; The Uses and Abuses of the Internet; Climate Change and Its Effects; The Importance of Tree Plantation; The Importance of Education; The Uses and Misuses of Science and Technology.&lt;/p&gt;
  &lt;p class=&quot;ssc-tier very&quot;&gt;&lt;b&gt;VERY IMPORTANT:&lt;/b&gt; Duties and Responsibilities of Students; Traffic Jam in Bangladesh: Causes and Solutions.&lt;/p&gt;
  &lt;p class=&quot;ssc-tier imp&quot;&gt;&lt;b&gt;IMPORTANT:&lt;/b&gt; The Importance of Learning English; The Value of Time.&lt;/p&gt;

  &lt;!-- 05 --&gt;
  &lt;div class=&quot;ssc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;05&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;E-mail, Letter &amp;amp; Application Suggestions&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;ssc-grid&quot;&gt;
    &lt;div&gt;Application for a full-free studentship&lt;/div&gt;&lt;div&gt;Application for leave of absence&lt;/div&gt;&lt;div&gt;Application for setting up a canteen&lt;/div&gt;
    &lt;div&gt;Application for increasing library facilities&lt;/div&gt;&lt;div&gt;Application for opening a computer/ICT club&lt;/div&gt;&lt;div&gt;Email describing a recent study tour/picnic&lt;/div&gt;
    &lt;div&gt;Email congratulating a friend on an excellent result&lt;/div&gt;&lt;div&gt;Letter/email on the importance of learning English&lt;/div&gt;&lt;div&gt;Email inviting a friend to a birthday party&lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 06 --&gt;
  &lt;div class=&quot;ssc-section-head&quot;&gt;&lt;div class=&quot;num&quot;&gt;06&lt;/div&gt;&lt;div class=&quot;title&quot;&gt;Preparation Strategy&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;ssc-grid ssc-grid-2col&quot;&gt;
    &lt;div&gt;Education: Education, Learning English, Duties of Students&lt;/div&gt;&lt;div&gt;Technology: Internet, Science and Technology&lt;/div&gt;
    &lt;div&gt;Environment: Climate Change, Tree Plantation&lt;/div&gt;&lt;div&gt;Social/Life Issues: Traffic Jam, Value of Time&lt;/div&gt;
    &lt;div&gt;Applications for permission/facilities: canteen, library, computer club, etc.&lt;/div&gt;&lt;div&gt;Applications for financial/academic support: full-free studentship or assistance&lt;/div&gt;
    &lt;div&gt;Applications for leave: illness, family emergency, or personal reasons&lt;/div&gt;&lt;div&gt;Informal email/letter: describing, inviting, congratulating, advising, or thanking&lt;/div&gt;
  &lt;/div&gt;

  &lt;p class=&quot;ssc-footer&quot;&gt;SSC Syllabus 2027 | English 2nd Paper | Full Marks: 100&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
  function sscPrint() {
    window.print();
  }
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/6728656155914219963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/6728656155914219963?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/6728656155914219963'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/6728656155914219963'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/ssc-syllabus-2027.html' title='SSC Syllabus and Suggestion - 2027'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-4872024609056093853</id><published>2026-08-09T21:48:17.565-07:00</published><updated>2026-08-09T22:48:47.407-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 59: Idiom Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Fifty-Seven Assessment · Idioms (50 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:1040px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:760px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  /* RESPONSIVE SCOREBOARD DASHBOARD FIX */
  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(auto-fit, minmax(85px, 1fr));
    gap:8px;
    border:1px solid var(--line);
    border-radius:6px;
    padding:12px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ 
    text-align:center; 
    padding:6px 4px; 
    min-width:0; 
    background:#fff;
    border:1px solid rgba(0,0,0,0.05);
    border-radius:4px;
    display:flex;
    flex-direction:column;
    justify-content:center;
  }
  .score-item.total-card {
    grid-column: 1 / -1;
    background: var(--blue);
    color: #fff;
    padding: 8px;
    margin-top: 4px;
  }
  .score-item.total-card .num {
    color: #fff;
    font-size: 18px;
  }
  .score-item.total-card .lbl {
    color: rgba(255,255,255,0.9);
  }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(11px,2.4vw,13px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:8px;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:2px;
    line-height:1.2;
  }
  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10.5px;
    letter-spacing:.03em;
    text-transform:uppercase;
    padding:10px 12px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .rule-ref{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--ink-dim);
    background:var(--panel-2);
    border:1px solid var(--line);
    border-radius:4px;
    padding:10px 12px;
    margin-bottom:18px;
    line-height:1.6;
  }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 0;
    width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }
  .explanation.show{ display:block; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:6px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:9.5px; padding:9px 10px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Fifty-Seven Assessment&lt;/div&gt;
    &lt;h1&gt;Idioms &lt;em&gt;A&amp;ndash;Z&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 50-mark interactive evaluation drawing on idioms from across the chapter&#39;s A&amp;ndash;Z list — recognizing meanings, completing idioms, matching idioms to meanings, spotting correct usage, filling context blanks, fixing misquoted idioms, and identifying exact wording.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt1 Meaning&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt2 Idiom&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt3 Complete&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m4&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt4 Match&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m5&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt5 Correct Use&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m6&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt6 Context&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m7&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt7 Fix Error&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m8&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt8 Idiom II&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m9&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt9 Complete II&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m10&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt10 Wording&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item total-card&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot;&gt;0/50&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;1: Meaning &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;2: Idiom &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;3: Complete &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m4&quot;&gt;4: Match &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m5&quot;&gt;5: Correct Use &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m6&quot;&gt;6: Context &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m7&quot;&gt;7: Fix Error &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m8&quot;&gt;8: Idiom II &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m9&quot;&gt;9: Complete II &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m10&quot;&gt;10: Wording &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1 --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Identify the Meaning&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct meaning of each idiom (1 mark each).&lt;/p&gt;
    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule(&#39;m1&#39;)&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Identify the Idiom&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Given the meaning, select the correct idiom (1 mark each).&lt;/p&gt;
    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule(&#39;m2&#39;)&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Complete the Idiom&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Type the single missing word that completes each idiom (1 mark each).&lt;/p&gt;
    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 4 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m4&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 4 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Match the Idiom to Its Meaning&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct meaning for each idiom from the shared option list (1 mark each).&lt;/p&gt;
    &lt;div class=&quot;rule-ref&quot;&gt;
      Options: to make a bad situation worse · to avoid close relation with someone · to take advantage of confusion · to depend entirely on one plan · to keep changing opinions · in a helpless or difficult position · to act unfairly · to be captured by an enemy
    &lt;/div&gt;
    &lt;div id=&quot;module4-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule(&#39;m4&#39;)&quot;&gt;Verify Part 4&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 5 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m5&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 5 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot the Correct Usage&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;For each idiom, select the sentence that uses it correctly (1 mark each).&lt;/p&gt;
    &lt;div id=&quot;module5-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule(&#39;m5&#39;)&quot;&gt;Verify Part 5&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 6 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m6&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 6 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Choose the Idiom That Fits the Context&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the idiom that best completes each sentence (1 mark each).&lt;/p&gt;
    &lt;div id=&quot;module6-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule(&#39;m6&#39;)&quot;&gt;Verify Part 6&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 7 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m7&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 7 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot &amp; Fix the Misquoted Idiom&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence below misquotes an idiom. Rewrite the sentence with the idiom worded correctly (1 mark each).&lt;/p&gt;
    &lt;div id=&quot;module7-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule7()&quot;&gt;Verify Part 7&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 8 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m8&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 8 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Identify the Idiom (Set II)&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Given the meaning, select the correct idiom (1 mark each).&lt;/p&gt;
    &lt;div id=&quot;module8-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule(&#39;m8&#39;)&quot;&gt;Verify Part 8&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 9 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m9&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 9 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Complete the Idiom (Set II)&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Type the single missing word that completes each idiom (1 mark each).&lt;/p&gt;
    &lt;div id=&quot;module9-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule9()&quot;&gt;Verify Part 9&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 10 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m10&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 10 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Choose the Correctly Worded Idiom&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the option that is the correctly worded idiom (1 mark each).&lt;/p&gt;
    &lt;div id=&quot;module10-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule(&#39;m10&#39;)&quot;&gt;Verify Part 10&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Fifty-Seven Assessment · Idioms A&amp;ndash;Z Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
      });
    });

    // Score State (50 Marks Total across 10 parts)
    const scores = { m1:0, m2:0, m3:0, m4:0, m5:0, m6:0, m7:0, m8:0, m9:0, m10:0 };

    function updateScoreboard() {
      Object.keys(scores).forEach(k =&gt; {
        document.getElementById(&#39;score-&#39; + k).textContent = scores[k] + &#39;/5&#39;;
      });
      const total = Object.values(scores).reduce((a,b) =&gt; a+b, 0);
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/50&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 50) * 100) + &#39;%&#39;;
    }

    function normalize(str) {
      return str.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()&#39;]/g, &quot;&quot;).toLowerCase().replace(/\s+/g, &quot; &quot;);
    }

    // ---------- MCQ DATA (Parts 1,2,4,5,6,8,10) ----------
    const mcqData = {
      m1: [
        { q: &quot;At the eleventh hour&quot;, opts: [&quot;At the last possible moment&quot;, &quot;In the early morning&quot;, &quot;After a long delay&quot;, &quot;During working hours&quot;], ans: &quot;At the last possible moment&quot; },
        { q: &quot;To bury the hatchet&quot;, opts: [&quot;To end hostility and become friendly again&quot;, &quot;To hide a weapon&quot;, &quot;To start a war&quot;, &quot;To dig a grave&quot;], ans: &quot;To end hostility and become friendly again&quot; },
        { q: &quot;To let the cat out of the bag&quot;, opts: [&quot;To reveal a secret carelessly&quot;, &quot;To free an animal&quot;, &quot;To lose something valuable&quot;, &quot;To play a prank&quot;], ans: &quot;To reveal a secret carelessly&quot; },
        { q: &quot;A bolt from the blue&quot;, opts: [&quot;A sudden and shocking event&quot;, &quot;A streak of lightning&quot;, &quot;A planned announcement&quot;, &quot;A minor inconvenience&quot;], ans: &quot;A sudden and shocking event&quot; },
        { q: &quot;To eat humble pie&quot;, opts: [&quot;To admit one&#39;s mistake humbly&quot;, &quot;To eat a modest meal&quot;, &quot;To celebrate a victory&quot;, &quot;To refuse food politely&quot;], ans: &quot;To admit one&#39;s mistake humbly&quot; }
      ],
      m2: [
        { q: &quot;Meaning: &#39;To speak plainly and honestly&#39;&quot;, opts: [&quot;To call a spade a spade&quot;, &quot;To beat about the bush&quot;, &quot;To cast pearls before swine&quot;, &quot;To blow hot and cold&quot;], ans: &quot;To call a spade a spade&quot; },
        { q: &quot;Meaning: &#39;To make every possible effort&#39;&quot;, opts: [&quot;To leave no stone unturned&quot;, &quot;To burn the midnight oil&quot;, &quot;To rest on one&#39;s laurels&quot;, &quot;To pass the buck&quot;], ans: &quot;To leave no stone unturned&quot; },
        { q: &quot;Meaning: &#39;To confess honestly&#39;&quot;, opts: [&quot;To make a clean breast of&quot;, &quot;To blow one&#39;s own trumpet&quot;, &quot;To rub shoulders with&quot;, &quot;To grease one&#39;s palm&quot;], ans: &quot;To make a clean breast of&quot; },
        { q: &quot;Meaning: &#39;A person skilled in many kinds of work&#39;&quot;, opts: [&quot;A jack of all trades&quot;, &quot;A good Samaritan&quot;, &quot;A greenhorn&quot;, &quot;A yes-man&quot;], ans: &quot;A jack of all trades&quot; },
        { q: &quot;Meaning: &#39;To recover strongly after destruction or failure&#39;&quot;, opts: [&quot;To rise like a phoenix&quot;, &quot;To go to the dogs&quot;, &quot;To rest on one&#39;s laurels&quot;, &quot;To hang by a thread&quot;], ans: &quot;To rise like a phoenix&quot; }
      ],
      m4: [
        { q: &quot;Add fuel to the fire&quot;, opts: [&quot;to make a bad situation worse&quot;, &quot;to avoid close relation with someone&quot;, &quot;to take advantage of confusion&quot;, &quot;to depend entirely on one plan&quot;, &quot;to keep changing opinions&quot;, &quot;in a helpless or difficult position&quot;, &quot;to act unfairly&quot;, &quot;to be captured by an enemy&quot;], ans: &quot;to make a bad situation worse&quot; },
        { q: &quot;To keep someone at arm&#39;s length&quot;, opts: [&quot;to make a bad situation worse&quot;, &quot;to avoid close relation with someone&quot;, &quot;to take advantage of confusion&quot;, &quot;to depend entirely on one plan&quot;, &quot;to keep changing opinions&quot;, &quot;in a helpless or difficult position&quot;, &quot;to act unfairly&quot;, &quot;to be captured by an enemy&quot;], ans: &quot;to avoid close relation with someone&quot; },
        { q: &quot;To fish in troubled waters&quot;, opts: [&quot;to make a bad situation worse&quot;, &quot;to avoid close relation with someone&quot;, &quot;to take advantage of confusion&quot;, &quot;to depend entirely on one plan&quot;, &quot;to keep changing opinions&quot;, &quot;in a helpless or difficult position&quot;, &quot;to act unfairly&quot;, &quot;to be captured by an enemy&quot;], ans: &quot;to take advantage of confusion&quot; },
        { q: &quot;To put all one&#39;s eggs in one basket&quot;, opts: [&quot;to make a bad situation worse&quot;, &quot;to avoid close relation with someone&quot;, &quot;to take advantage of confusion&quot;, &quot;to depend entirely on one plan&quot;, &quot;to keep changing opinions&quot;, &quot;in a helpless or difficult position&quot;, &quot;to act unfairly&quot;, &quot;to be captured by an enemy&quot;], ans: &quot;to depend entirely on one plan&quot; },
        { q: &quot;To hit below the belt&quot;, opts: [&quot;to make a bad situation worse&quot;, &quot;to avoid close relation with someone&quot;, &quot;to take advantage of confusion&quot;, &quot;to depend entirely on one plan&quot;, &quot;to keep changing opinions&quot;, &quot;in a helpless or difficult position&quot;, &quot;to act unfairly&quot;, &quot;to be captured by an enemy&quot;], ans: &quot;to act unfairly&quot; }
      ],
      m5: [
        { q: &quot;Which sentence correctly uses &#39;to bite off more than one can chew&#39;?&quot;, opts: [&quot;By taking three jobs at once, he bit off more than he could chew.&quot;, &quot;He bit off more than he could chew at breakfast.&quot;, &quot;She bit off more than he could chew about the weather.&quot;, &quot;They bit off more than could chew a sandwich.&quot;], ans: &quot;By taking three jobs at once, he bit off more than he could chew.&quot; },
        { q: &quot;Which sentence correctly uses &#39;to be in the good books of&#39;?&quot;, opts: [&quot;Rina is in the good books of her employer because of her honesty.&quot;, &quot;Rina is in the good book of a novel.&quot;, &quot;Rina bought good books of her employer.&quot;, &quot;Rina is in good books at the library.&quot;], ans: &quot;Rina is in the good books of her employer because of her honesty.&quot; },
        { q: &quot;Which sentence correctly uses &#39;to cast pearls before swine&#39;?&quot;, opts: [&quot;Teaching good manners to such rude people is like casting pearls before swine.&quot;, &quot;He cast pearls before swine into the ocean.&quot;, &quot;She wore pearls before swine at the party.&quot;, &quot;The jeweler cast pearls before swine for sale.&quot;], ans: &quot;Teaching good manners to such rude people is like casting pearls before swine.&quot; },
        { q: &quot;Which sentence correctly uses &#39;to pull someone&#39;s leg&#39;?&quot;, opts: [&quot;My friends were just pulling my leg about the surprise.&quot;, &quot;The doctor pulled my leg during the checkup.&quot;, &quot;He pulled his leg muscle while running.&quot;, &quot;She pulled the leg of the table to fix it.&quot;], ans: &quot;My friends were just pulling my leg about the surprise.&quot; },
        { q: &quot;Which sentence correctly uses &#39;to keep the wolf from the door&#39;?&quot;, opts: [&quot;He works two jobs to keep the wolf from the door.&quot;, &quot;He keeps a wolf as a pet near the door.&quot;, &quot;She keeps the wolf from the door of the zoo.&quot;, &quot;They kept a wolf away from the door with a fence.&quot;], ans: &quot;He works two jobs to keep the wolf from the door.&quot; }
      ],
      m6: [
        { q: &quot;Losing the job was a ___ for him; he later found a much better opportunity.&quot;, opts: [&quot;blessing in disguise&quot;, &quot;bolt from the blue&quot;, &quot;storm in a teacup&quot;, &quot;wolf in sheep&#39;s clothing&quot;], ans: &quot;blessing in disguise&quot; },
        { q: &quot;The committee kept changing its opinion on the proposal — they seemed to ___ about it.&quot;, opts: [&quot;blow hot and cold&quot;, &quot;bury the hatchet&quot;, &quot;rule the roost&quot;, &quot;break the ice&quot;], ans: &quot;blow hot and cold&quot; },
        { q: &quot;After the scandal, everyone could see the ___ for the minister&#39;s career.&quot;, opts: [&quot;writing on the wall&quot;, &quot;sword of Damocles&quot;, &quot;lion&#39;s share&quot;, &quot;gift of the gab&quot;], ans: &quot;writing on the wall&quot; },
        { q: &quot;He only ever talks about football — he really has a ___ mind.&quot;, opts: [&quot;one-track mind&quot;, &quot;open mind&quot;, &quot;narrow escape&quot;, &quot;killer instinct&quot;], ans: &quot;one-track mind&quot; },
        { q: &quot;The volunteers worked tirelessly and rendered ___ during the flood relief operation.&quot;, opts: [&quot;yeoman service&quot;, &quot;lion&#39;s share&quot;, &quot;killer instinct&quot;, &quot;hallmark&quot;], ans: &quot;yeoman service&quot; }
      ],
      m8: [
        { q: &quot;Meaning: &#39;To weaken someone&#39;s confidence or efforts&#39;&quot;, opts: [&quot;To take the wind out of someone&#39;s sails&quot;, &quot;To pour oil on troubled waters&quot;, &quot;To rub shoulders with&quot;, &quot;To play second fiddle&quot;], ans: &quot;To take the wind out of someone&#39;s sails&quot; },
        { q: &quot;Meaning: &#39;To begin from the very beginning&#39;&quot;, opts: [&quot;To start from scratch&quot;, &quot;To start with a bang&quot;, &quot;To turn over a new leaf&quot;, &quot;To break the ice&quot;], ans: &quot;To start from scratch&quot; },
        { q: &quot;Meaning: &#39;To control someone completely&#39;&quot;, opts: [&quot;To lead someone by the nose&quot;, &quot;To pay through the nose&quot;, &quot;To turn a deaf ear to&quot;, &quot;To hold the purse strings&quot;], ans: &quot;To lead someone by the nose&quot; },
        { q: &quot;Meaning: &#39;A task demanding the strength of a mythical hero&#39;&quot;, opts: [&quot;A Herculean task&quot;, &quot;A tall order&quot;, &quot;A hard nut to crack&quot;, &quot;A pretty kettle of fish&quot;], ans: &quot;A Herculean task&quot; },
        { q: &quot;Meaning: &#39;To create hostility between people&#39;&quot;, opts: [&quot;To breed bad blood&quot;, &quot;To burn one&#39;s fingers&quot;, &quot;To bear the brunt of&quot;, &quot;To back the wrong horse&quot;], ans: &quot;To breed bad blood&quot; }
      ],
      m10: [
        { q: &quot;Which is the correctly worded idiom?&quot;, opts: [&quot;To play second fiddle&quot;, &quot;To play second violin&quot;, &quot;To play the second string&quot;, &quot;To play backup fiddle&quot;], ans: &quot;To play second fiddle&quot; },
        { q: &quot;Which is the correctly worded idiom?&quot;, opts: [&quot;A skeleton in a cupboard&quot;, &quot;A skeleton in a closet room&quot;, &quot;A bone in a cupboard&quot;, &quot;A ghost in a cupboard&quot;], ans: &quot;A skeleton in a cupboard&quot; },
        { q: &quot;Which is the correctly worded idiom?&quot;, opts: [&quot;To throw dust in someone&#39;s eyes&quot;, &quot;To throw sand in someone&#39;s eyes&quot;, &quot;To throw mud in someone&#39;s face&quot;, &quot;To throw dirt in someone&#39;s mouth&quot;], ans: &quot;To throw dust in someone&#39;s eyes&quot; },
        { q: &quot;Which is the correctly worded idiom?&quot;, opts: [&quot;To put a spoke in someone&#39;s wheel&quot;, &quot;To put a stick in someone&#39;s wheel&quot;, &quot;To put a wrench in someone&#39;s wheel&quot;, &quot;To put a bolt in someone&#39;s wheel&quot;], ans: &quot;To put a spoke in someone&#39;s wheel&quot; },
        { q: &quot;Which is the correctly worded idiom?&quot;, opts: [&quot;To separate the sheep from the goats&quot;, &quot;To separate the wheat from the goats&quot;, &quot;To separate the sheep from the wolves&quot;, &quot;To separate the lambs from the goats&quot;], ans: &quot;To separate the sheep from the goats&quot; }
      ]
    };

    function renderMCQModule(key) {
        const container = document.getElementById(`module${key.slice(1)}-container`);
        if(!container) return;
        mcqData[key].forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;${key}-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;${key}-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule(key) {
        let currentScore = 0;
        mcqData[key].forEach((item, index) =&gt; {
            const select = document.getElementById(`${key}-${index}`);
            const fb = document.getElementById(`${key}-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores[key] = currentScore;
        updateScoreboard();
    }

    // ---------- PART 3: COMPLETE THE IDIOM (Set I) ----------
    const m3Data = [
      { q: &quot;To ___ the bull by the horns (To face a problem bravely)&quot;, ans: [&quot;take&quot;] },
      { q: &quot;To burn the ___ oil (To work or study late at night)&quot;, ans: [&quot;midnight&quot;] },
      { q: &quot;To read between the ___ (To understand hidden meaning)&quot;, ans: [&quot;lines&quot;] },
      { q: &quot;To turn over a new ___ (To begin a better way of life)&quot;, ans: [&quot;leaf&quot;] },
      { q: &quot;To hit the nail on the ___ (To say exactly the right thing)&quot;, ans: [&quot;head&quot;] }
    ];

    function renderModule3() {
        const container = document.getElementById(&quot;module3-container&quot;);
        m3Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m3-in-${index}&quot; placeholder=&quot;Type the missing word...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule3() {
        let currentScore = 0;
        m3Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m3-in-${index}`);
            const fb = document.getElementById(`m3-fb-${index}`);
            const cleanUser = normalize(input.value);
            const isMatch = item.ans.some(a =&gt; normalize(a) === cleanUser);
            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Correct word: &quot;${item.ans[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // ---------- PART 7: SPOT &amp; FIX THE MISQUOTED IDIOM ----------
    const m7Data = [
      { q: &quot;He burnt his finger in a risky business.&quot;, targets: [&quot;He burnt his fingers by investing in a risky business.&quot;, &quot;He burnt his fingers in a risky business&quot;], exp: &quot;The idiom is &#39;to burn one&#39;s fingers&#39; (plural).&quot; },
      { q: &quot;The team changed its strategy on the eleventh hour.&quot;, targets: [&quot;The team changed its strategy at the eleventh hour.&quot;], exp: &quot;The correct preposition is &#39;at the eleventh hour&#39;, not &#39;on&#39;.&quot; },
      { q: &quot;Stop beating around the bush and tell me the truth.&quot;, targets: [&quot;Stop beating about the bush and tell me the truth.&quot;], exp: &quot;The idiom taught in this chapter is &#39;to beat about the bush&#39;.&quot; },
      { q: &quot;The old traditions are now dead like a doornail.&quot;, targets: [&quot;The old traditions are now as dead as a doornail.&quot;], exp: &quot;The correct form is &#39;as dead as a doornail&#39;.&quot; },
      { q: &quot;The robbers took to their heel when the police arrived.&quot;, targets: [&quot;The robbers took to their heels when the police arrived.&quot;], exp: &quot;The idiom is &#39;to take to one&#39;s heels&#39; (plural &#39;heels&#39;).&quot; }
    ];

    function renderModule7() {
        const container = document.getElementById(&quot;module7-container&quot;);
        m7Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Misquoted Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m7-in-${index}&quot; placeholder=&quot;Type the corrected sentence...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m7-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m7-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule7() {
        let currentScore = 0;
        m7Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m7-in-${index}`);
            const fb = document.getElementById(`m7-fb-${index}`);
            const exp = document.getElementById(`m7-exp-${index}`);
            const cleanUser = normalize(input.value);
            const isMatch = item.targets.some(t =&gt; normalize(t) === cleanUser);
            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                exp.className = &quot;explanation show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Expected target: &quot;${item.targets[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
                exp.className = &quot;explanation show&quot;;
            }
        });
        scores.m7 = currentScore;
        updateScoreboard();
    }

    // ---------- PART 9: COMPLETE THE IDIOM (Set II) ----------
    const m9Data = [
      { q: &quot;To add insult to ___ (To make a bad situation worse)&quot;, ans: [&quot;injury&quot;] },
      { q: &quot;To keep something at ___ (To maintain a safe distance)&quot;, ans: [&quot;bay&quot;] },
      { q: &quot;To spill the ___ (To reveal secret information)&quot;, ans: [&quot;beans&quot;] },
      { q: &quot;To cost an arm and a ___ (To be extremely expensive)&quot;, ans: [&quot;leg&quot;] },
      { q: &quot;To bark up the wrong ___ (To follow a mistaken line of thought)&quot;, ans: [&quot;tree&quot;] }
    ];

    function renderModule9() {
        const container = document.getElementById(&quot;module9-container&quot;);
        m9Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m9-in-${index}&quot; placeholder=&quot;Type the missing word...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m9-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule9() {
        let currentScore = 0;
        m9Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m9-in-${index}`);
            const fb = document.getElementById(`m9-fb-${index}`);
            const cleanUser = normalize(input.value);
            const isMatch = item.ans.some(a =&gt; normalize(a) === cleanUser);
            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Correct word: &quot;${item.ans[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m9 = currentScore;
        updateScoreboard();
    }

    // Initialize All Panels
    window.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; {
      [&#39;m1&#39;, &#39;m2&#39;, &#39;m4&#39;, &#39;m5&#39;, &#39;m6&#39;, &#39;m8&#39;, &#39;m10&#39;].forEach(renderMCQModule);
      renderModule3();
      renderModule7();
      renderModule9();
      updateScoreboard();
    });
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/4872024609056093853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/4872024609056093853?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/4872024609056093853'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/4872024609056093853'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-59-idiom-exercises.html' title='Chapter 59: Idiom Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-3237417603259218230</id><published>2026-08-09T21:36:25.435-07:00</published><updated>2026-08-09T22:52:32.281-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 56: ‘So’, ‘Such’, ‘Too’, and ‘Enough’</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Fifty-Six Assessment · &#39;So&#39;, &#39;Such&#39;, &#39;Too&#39;, &#39;Enough&#39; (25 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:720px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  /* UPDATED SCOREBOARD STYLING FOR RESPONSIVENESS */
  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap:10px;
    border:1px solid var(--line);
    border-radius:6px;
    padding:14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ 
    text-align:center; 
    padding:8px 4px; 
    min-width:0; 
    background:#fff;
    border:1px solid var(--line);
    border-radius:4px;
  }
  .score-item.total-item{
    grid-column: 1 / -1;
    background: transparent;
    border: none;
    padding: 4px 0 0 0;
  }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(13px,2.6vw,16px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:9px;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:2px;
    line-height:1.3;
  }
  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .rule-ref{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--ink-dim);
    background:var(--panel-2);
    border:1px solid var(--line);
    border-radius:4px;
    padding:10px 12px;
    margin-bottom:18px;
    line-height:1.6;
  }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select{ max-width:100%; }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:8px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:9px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Fifty-Six Assessment&lt;/div&gt;
    &lt;h1&gt;&lt;em&gt;&#39;So&#39;, &#39;Such&#39;, &#39;Too&#39;&lt;/em&gt; &amp;amp; &lt;em&gt;&#39;Enough&#39;&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 25-mark interactive evaluation covering the degree words &#39;so&#39; (with adjectives/adverbs, &#39;that&#39;-clauses, before/after verbs, and as a clause substitute), &#39;such&#39; (before nouns, with &#39;a/an&#39;, and &#39;such...that&#39;), &#39;too&#39; (with adjectives/adverbs and &#39;too much&#39;), and &#39;enough&#39; (with adjectives, adverbs, and nouns).&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 1 Concepts&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 2 Fill Blank&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 3 Spot Correct&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m4&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 4 Match Use&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m5&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 5 Fix Error&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item total-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 18px;&quot;&gt;0/25&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Concepts &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Fill Blank &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Spot Correct &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m4&quot;&gt;Part 4: Match Use &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m5&quot;&gt;Part 5: Fix Error &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Concept MCQs (5 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct answer about how &#39;so&#39;, &#39;such&#39;, &#39;too&#39;, and &#39;enough&#39; are used (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Fill in the Blank (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Choose the Correct Word&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select &#39;so&#39;, &#39;such&#39;, &#39;too&#39;, or &#39;enough&#39; to correctly complete each sentence (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Spot the Correct Sentence (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot the Correctly Formed Sentence&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the option that uses &#39;so&#39;, &#39;such&#39;, &#39;too&#39;, or &#39;enough&#39; correctly (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 4: Match the Use (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m4&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 4 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Match the Sentence to Its Use&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;For each sentence, select which specific use of &#39;so&#39;, &#39;such&#39;, &#39;too&#39;, or &#39;enough&#39; it demonstrates (1 mark each).&lt;/p&gt;
    &lt;div class=&quot;rule-ref&quot;&gt;
      &#39;So&#39; — before adjective/adverb · &#39;so...that&#39; result clause · before noun/verb (informal &#39;definitely&#39;) · before a verb for emphasis · after a verb (replacing an action) · as a substitute for a whole clause &amp;nbsp;|&amp;nbsp; &#39;Such&#39; — before a noun · &#39;such&#39; + a/an · &#39;such...that&#39; result clause &amp;nbsp;|&amp;nbsp; &#39;Too&#39; — before adjective/adverb · &#39;too much&#39; + uncountable noun &amp;nbsp;|&amp;nbsp; &#39;Enough&#39; — after an adjective · after an adverb · before a noun
    &lt;/div&gt;

    &lt;div id=&quot;module4-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule4()&quot;&gt;Verify Part 4&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 5: Spot &amp; Fix the Error (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m5&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 5 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rewrite the Sentence Correctly&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence below confuses &#39;so&#39;, &#39;such&#39;, &#39;too&#39;, or &#39;enough&#39;. Rewrite it with the correct word (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module5-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule5()&quot;&gt;Verify Part 5&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Fifty-Six Assessment · &#39;So&#39;, &#39;Such&#39;, &#39;Too&#39;, &#39;Enough&#39; Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
      });
    });

    // Score State (25 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0, m4: 0, m5: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/5&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/5&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/5&#39;;
      document.getElementById(&#39;score-m4&#39;).textContent = scores.m4 + &#39;/5&#39;;
      document.getElementById(&#39;score-m5&#39;).textContent = scores.m5 + &#39;/5&#39;;

      const total = scores.m1 + scores.m2 + scores.m3 + scores.m4 + scores.m5;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/25&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 25) * 100) + &#39;%&#39;;
    }

    function normalize(str) {
      return str.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()&#39;]/g, &quot;&quot;).toLowerCase().replace(/\s+/g, &quot; &quot;);
    }

    // --- PART 1: CONCEPT MCQS (5 Marks) ---
    const m1Data = [
      { q: &quot;What do &#39;so&#39; and &#39;such&#39; most often mean when they emphasize degree?&quot;, opts: [&quot;&#39;Very&#39;&quot;, &quot;&#39;Enough&#39;&quot;, &quot;&#39;Barely&#39;&quot;, &quot;&#39;Never&#39;&quot;], ans: &quot;&#39;Very&#39;&quot; },
      { q: &quot;What does &#39;too&#39; mean, and what connotation does it usually carry?&quot;, opts: [&quot;&#39;As much as needed&#39;; neutral connotation&quot;, &quot;&#39;More than is necessary or desirable&#39;; negative connotation&quot;, &quot;&#39;Very&#39;; positive connotation&quot;, &quot;&#39;Slightly&#39;; neutral connotation&quot;], ans: &quot;&#39;More than is necessary or desirable&#39;; negative connotation&quot; },
      { q: &quot;What does &#39;enough&#39; indicate?&quot;, opts: [&quot;An excessive amount&quot;, &quot;A sufficient amount or degree, as much as is needed&quot;, &quot;A very small amount&quot;, &quot;An emphatic degree, like &#39;very&#39;&quot;], ans: &quot;A sufficient amount or degree, as much as is needed&quot; },
      { q: &quot;Where is &#39;such&#39; normally placed relative to a noun (or an adjective + noun)?&quot;, opts: [&quot;After the noun&quot;, &quot;Before the noun, or before an adjective followed by a noun&quot;, &quot;Only after the verb &#39;to be&#39;&quot;, &quot;It cannot be used with nouns&quot;], ans: &quot;Before the noun, or before an adjective followed by a noun&quot; },
      { q: &quot;In &#39;He is so weak that he cannot walk,&#39; what structure does &#39;so&#39; form with &#39;that&#39;?&quot;, opts: [&quot;A comparison&quot;, &quot;A result clause showing the outcome of the degree&quot;, &quot;A question&quot;, &quot;A substitute for the whole sentence&quot;], ans: &quot;A result clause showing the outcome of the degree&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: FILL IN THE BLANK (5 Marks) ---
    const wordOpts = [&quot;so&quot;, &quot;such&quot;, &quot;too&quot;, &quot;enough&quot;];
    const m2Data = [
      { q: &quot;She looks ___ pretty today.&quot;, ans: &quot;so&quot; },
      { q: &quot;I came across ___ wonderful scenery.&quot;, ans: &quot;such&quot; },
      { q: &quot;He is ___ weak to walk.&quot;, ans: &quot;too&quot; },
      { q: &quot;He is good ___ to solve this problem.&quot;, ans: &quot;enough&quot; },
      { q: &quot;It was ___ a terrific moment that I became frightened.&quot;, ans: &quot;such&quot; }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Word --&lt;/option&gt;`;
            wordOpts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m2-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m2-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: SPOT THE CORRECT SENTENCE (5 Marks) ---
    const m3Data = [
      { q: &quot;Which sentence correctly uses &#39;so&#39; as a substitute for a whole clause?&quot;, opts: [&quot;I think that.&quot;, &quot;I think it.&quot;, &quot;I think so.&quot;, &quot;I think such.&quot;], ans: &quot;I think so.&quot; },
      { q: &quot;Which sentence correctly uses &#39;too much&#39; before an uncountable noun?&quot;, opts: [&quot;Too much information is overwhelming.&quot;, &quot;Too many information is overwhelming.&quot;, &quot;Too much informations is overwhelming.&quot;, &quot;Too enough information is overwhelming.&quot;], ans: &quot;Too much information is overwhelming.&quot; },
      { q: &quot;Which sentence correctly places &#39;enough&#39; after an adverb?&quot;, opts: [&quot;He enough runs quickly.&quot;, &quot;He runs quickly enough.&quot;, &quot;He runs enough quickly.&quot;, &quot;Enough he runs quickly.&quot;], ans: &quot;He runs quickly enough.&quot; },
      { q: &quot;Which sentence correctly uses &#39;such&#39; followed by &#39;a&#39;?&quot;, opts: [&quot;Such wonderful a scenery.&quot;, &quot;Such a wonderful scenery.&quot;, &quot;A such wonderful scenery.&quot;, &quot;So a wonderful scenery.&quot;], ans: &quot;Such a wonderful scenery.&quot; },
      { q: &quot;Which sentence correctly uses &#39;so&#39; before a verb for emphasis?&quot;, opts: [&quot;I so appreciate your help.&quot;, &quot;I appreciate so your help.&quot;, &quot;I so much your help appreciate.&quot;, &quot;I appreciate your help so.&quot;], ans: &quot;I so appreciate your help.&quot; }
    ];

    function renderModule3() {
        const container = document.getElementById(&quot;module3-container&quot;);
        m3Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m3-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule3() {
        let currentScore = 0;
        m3Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m3-${index}`);
            const fb = document.getElementById(`m3-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // --- PART 4: MATCH THE USE (5 Marks) ---
    const useOpts = [
      &quot;&#39;So&#39; — before an adjective/adverb&quot;,
      &quot;&#39;So...that&#39; — result clause&quot;,
      &quot;&#39;So&#39; — before a noun/verb (informal &#39;definitely&#39;)&quot;,
      &quot;&#39;So&#39; — before a verb, for emphasis&quot;,
      &quot;&#39;So&#39; — after a verb (replacing an action)&quot;,
      &quot;&#39;So&#39; — substitute for a whole clause&quot;,
      &quot;&#39;Such&#39; — before a noun&quot;,
      &quot;&#39;Such&#39; + a/an&quot;,
      &quot;&#39;Such...that&#39; — result clause&quot;,
      &quot;&#39;Too&#39; — before an adjective/adverb&quot;,
      &quot;&#39;Too much&#39; + uncountable noun&quot;,
      &quot;&#39;Enough&#39; — after an adjective&quot;,
      &quot;&#39;Enough&#39; — after an adverb&quot;,
      &quot;&#39;Enough&#39; — before a noun&quot;
    ];
    const m4Data = [
      { q: &quot;He promised to help, and he did so.&quot;, ans: &quot;&#39;So&#39; — after a verb (replacing an action)&quot; },
      { q: &quot;That is so your friend.&quot;, ans: &quot;&#39;So&#39; — before a noun/verb (informal &#39;definitely&#39;)&quot; },
      { q: &quot;I want such a picture which can energize us.&quot;, ans: &quot;&#39;Such&#39; — before a noun&quot; },
      { q: &quot;We need enough money to survive on earth.&quot;, ans: &quot;&#39;Enough&#39; — before a noun&quot; },
      { q: &quot;He spoke too much.&quot;, ans: &quot;&#39;Too&#39; — before an adjective/adverb&quot; }
    ];

    function renderModule4() {
        const container = document.getElementById(&quot;module4-container&quot;);
        m4Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Use --&lt;/option&gt;`;
            useOpts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m4-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m4-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule4() {
        let currentScore = 0;
        m4Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m4-${index}`);
            const fb = document.getElementById(`m4-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m4 = currentScore;
        updateScoreboard();
    }

    // --- PART 5: SPOT &amp; FIX THE ERROR (5 Marks) ---
    const m5Data = [
      { q: &quot;She looks such pretty today.&quot;, targets: [&quot;She looks so pretty today.&quot;], exp: &quot;&#39;So&#39; (not &#39;such&#39;) is used before an adjective on its own — &#39;so pretty&#39;, not &#39;such pretty&#39;.&quot; },
      { q: &quot;I came across so wonderful scenery.&quot;, targets: [&quot;I came across such wonderful scenery.&quot;], exp: &quot;&#39;Such&#39; is used before a noun (or adjective + noun) — &#39;such wonderful scenery&#39;, not &#39;so wonderful scenery&#39;.&quot; },
      { q: &quot;He is enough weak to walk.&quot;, targets: [&quot;He is too weak to walk.&quot;], exp: &quot;&#39;Too&#39; expresses an undesirable excess before an adjective — &#39;too weak&#39;, not &#39;enough weak&#39;.&quot; },
      { q: &quot;He runs enough quickly.&quot;, targets: [&quot;He runs quickly enough.&quot;], exp: &quot;&#39;Enough&#39; comes after the adverb it modifies — &#39;quickly enough&#39;, not &#39;enough quickly&#39;.&quot; },
      { q: &quot;We need too money to survive.&quot;, targets: [&quot;We need enough money to survive.&quot;], exp: &quot;&#39;Enough&#39; comes before a noun to show sufficiency — &#39;enough money&#39;, not &#39;too money&#39;.&quot; }
    ];

    function renderModule5() {
        const container = document.getElementById(&quot;module5-container&quot;);
        m5Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Incorrect Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m5-in-${index}&quot; placeholder=&quot;Type the corrected sentence...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m5-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m5-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule5() {
        let currentScore = 0;
        m5Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m5-in-${index}`);
            const fb = document.getElementById(`m5-fb-${index}`);
            const exp = document.getElementById(`m5-exp-${index}`);

            const cleanUser = normalize(input.value);
            const isMatch = item.targets.some(t =&gt; normalize(t) === cleanUser);

            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.targets[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores.m5 = currentScore;
        updateScoreboard();
    }

    // Initialization
    window.onload = () =&gt; {
        renderModule1();
        renderModule2();
        renderModule3();
        renderModule4();
        renderModule5();
        updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/3237417603259218230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/3237417603259218230?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/3237417603259218230'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/3237417603259218230'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-56-so-such-too-and-enough.html' title='Chapter 56: ‘So’, ‘Such’, ‘Too’, and ‘Enough’'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-1359003111017475433</id><published>2026-08-09T21:14:36.935-07:00</published><updated>2026-08-09T22:56:34.875-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 55: Forming the Plural of Compound Nouns Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Fifty-Five Assessment · Plural of Compound Nouns (25 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:720px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap:10px;
    border:1px solid var(--line);
    border-radius:6px;
    padding:14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ text-align:center; padding:6px 4px; min-width:0; }
  .score-item.total-score{ 
    grid-column: 1 / -1; 
    margin-top:4px; 
    border-top:1px dashed var(--line); 
    padding-top:10px; 
  }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(13px,2.6vw,15px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:9px;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:2px;
    line-height:1.3;
  }
  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:8px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .rule-ref{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--ink-dim);
    background:var(--panel-2);
    border:1px solid var(--line);
    border-radius:4px;
    padding:12px;
    margin-bottom:18px;
    line-height:1.6;
    word-break:break-word;
  }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(14px,3vw,18px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 0;
    width:100%;
    min-height:44px;
    vertical-align:middle;
  }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; width:100%; }
  .fib-row input{ flex:1; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    width:auto;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    .btn-check{ width:100%; text-align:center; }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:8px; padding:10px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:8px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Fifty-Five Assessment&lt;/div&gt;
    &lt;h1&gt;Forming the Plural of &lt;em&gt;Compound Nouns&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 25-mark interactive evaluation covering the seven rules for pluralizing compound nouns: head-noun pluralization (and its military-title exceptions), man/woman compounds, &quot;no word significant&quot; compounds, noun-plus-preposition hyphenation, verb-plus-preposition hyphenation, -ful nouns, and &quot;of&quot; compounds.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 1 Concepts&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 2 Pluralize&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 3 Spot Correct&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m4&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 4 Match Rule&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m5&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Pt 5 Fix Error&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item total-score&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/25&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Concepts &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Pluralize &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Spot Correct &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m4&quot;&gt;Part 4: Match Rule &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m5&quot;&gt;Part 5: Fix Error &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Concept MCQs (5 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct answer about how compound nouns form their plurals (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Pluralize (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Write the Correct Plural Form&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Type the correct plural of each compound noun below (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Spot the Correct Plural (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot the Correctly Pluralized Form&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the option that pluralizes the compound noun correctly (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 4: Match the Rule (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m4&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 4 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Match the Compound Noun to Its Rule&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;For each compound noun, select the rule that governs how its plural is formed (1 mark each).&lt;/p&gt;
    &lt;div class=&quot;rule-ref&quot;&gt;
      Rule 1 — pluralize the head noun · Rule 1 (Exception) — established military-title plurals (e.g. brigadier-generals) · Rule 2 — man/woman compounds, both words pluralize · Rule 3 — add -s to the last word when no single word is significant · Rule 4 — noun hyphenated with a preposition: plural on the noun · Rule 5 — verb hyphenated with a preposition/particle: plural at the end · Rule 6 — nouns ending in -ful: add -s at the end · Rule 7 — &quot;of&quot; compounds: plural on the noun before &quot;of&quot;
    &lt;/div&gt;

    &lt;div id=&quot;module4-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule4()&quot;&gt;Verify Part 4&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 5: Spot &amp; Fix the Error (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m5&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 5 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rewrite the Sentence Correctly&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence below contains a wrongly formed compound-noun plural. Rewrite the sentence with the correct plural (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module5-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule5()&quot;&gt;Verify Part 5&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Fifty-Five Assessment · Plural of Compound Nouns Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
      });
    });

    // Score State (25 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0, m4: 0, m5: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/5&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/5&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/5&#39;;
      document.getElementById(&#39;score-m4&#39;).textContent = scores.m4 + &#39;/5&#39;;
      document.getElementById(&#39;score-m5&#39;).textContent = scores.m5 + &#39;/5&#39;;

      const total = scores.m1 + scores.m2 + scores.m3 + scores.m4 + scores.m5;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/25&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 25) * 100) + &#39;%&#39;;
    }

    function normalize(str) {
      return str.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()&#39;]/g, &quot;&quot;).toLowerCase().replace(/\s+/g, &quot; &quot;);
    }

    // --- PART 1: CONCEPT MCQS (5 Marks) ---
    const m1Data = [
      { q: &quot;In a standard compound noun (e.g. &#39;attorney general&#39;), which word usually takes the plural form?&quot;, opts: [&quot;The first word, always&quot;, &quot;The head noun (the main noun)&quot;, &quot;The last word, always&quot;, &quot;Neither word changes&quot;], ans: &quot;The head noun (the main noun)&quot; },
      { q: &quot;What happens to military titles like &#39;major-general&#39; or &#39;brigadier-general&#39; when pluralized?&quot;, opts: [&quot;They follow the head-noun rule exactly&quot;, &quot;The -s is added to &#39;general&#39; as an established exception&quot;, &quot;They remain unchanged in the plural&quot;, &quot;Both words are pluralized&quot;], ans: &quot;The -s is added to &#39;general&#39; as an established exception&quot; },
      { q: &quot;When &#39;man&#39; or &#39;woman&#39; begins a compound noun (e.g. &#39;man driver&#39;), how is the plural formed?&quot;, opts: [&quot;Only &#39;man&#39;/&#39;woman&#39; changes&quot;, &quot;Only the second word changes&quot;, &quot;Both words become plural&quot;, &quot;Neither word changes&quot;], ans: &quot;Both words become plural&quot; },
      { q: &quot;In a compound where a verb is hyphenated with a preposition or particle (e.g. &#39;check-in&#39;), where does the plural -s go?&quot;, opts: [&quot;On the verb part&quot;, &quot;On the preposition/particle, at the end&quot;, &quot;On neither part&quot;, &quot;On both parts&quot;], ans: &quot;On the preposition/particle, at the end&quot; },
      { q: &quot;In compounds using &#39;of&#39; (e.g. &#39;cup of coffee&#39;), which word takes the plural form?&quot;, opts: [&quot;The word before &#39;of&#39;&quot;, &quot;The word after &#39;of&#39;&quot;, &quot;&#39;of&#39; itself&quot;, &quot;Neither word changes&quot;], ans: &quot;The word before &#39;of&#39;&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: PLURALIZE (5 Marks) ---
    const m2Data = [
      { q: &quot;commander-in-chief&quot;, targets: [&quot;commanders-in-chief&quot;], exp: &quot;Rule 1: the head noun (&#39;commander&#39;) is pluralized, so &#39;commander-in-chief&#39; becomes &#39;commanders-in-chief&#39;.&quot; },
      { q: &quot;sister-in-law&quot;, targets: [&quot;sisters-in-law&quot;], exp: &quot;Rule 4: when a noun is hyphenated with a preposition, the plural is formed on the noun — &#39;sisters-in-law&#39;, not &#39;sister-in-laws&#39;.&quot; },
      { q: &quot;woman doctor&quot;, targets: [&quot;women doctors&quot;], exp: &quot;Rule 2: when &#39;man&#39; or &#39;woman&#39; begins the compound, both words become plural — &#39;women doctors&#39;.&quot; },
      { q: &quot;drive-in&quot;, targets: [&quot;drive-ins&quot;], exp: &quot;Rule 5: when a verb is hyphenated with a preposition/particle, the plural -s goes at the end — &#39;drive-ins&#39;.&quot; },
      { q: &quot;cupful&quot;, targets: [&quot;cupfuls&quot;], exp: &quot;Rule 6: nouns ending in &#39;-ful&#39; simply add -s at the end — &#39;cupfuls&#39;, not &#39;cupsful&#39;.&quot; }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Compound Noun (singular):&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type the correct plural form...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m2-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m2-in-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);
            const exp = document.getElementById(`m2-exp-${index}`);

            const cleanUser = normalize(input.value);
            const isMatch = item.targets.some(t =&gt; normalize(t) === cleanUser);

            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Correct form: &quot;${item.targets[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: SPOT THE CORRECT PLURAL (5 Marks) ---
    const m3Data = [
      { q: &quot;Which is the correct plural of &#39;passer-by&#39;?&quot;, opts: [&quot;passer-bys&quot;, &quot;passers-by&quot;, &quot;passers-bys&quot;, &quot;passer-byes&quot;], ans: &quot;passers-by&quot; },
      { q: &quot;Which is the correct plural of &#39;major-general&#39;?&quot;, opts: [&quot;majors-general&quot;, &quot;major-generals&quot;, &quot;majors-generals&quot;, &quot;major-general&#39;s&quot;], ans: &quot;major-generals&quot; },
      { q: &quot;Which is the correct plural of &#39;man of peace&#39;?&quot;, opts: [&quot;man of peaces&quot;, &quot;mans of peace&quot;, &quot;men of peace&quot;, &quot;men of peaces&quot;], ans: &quot;men of peace&quot; },
      { q: &quot;Which is the correct plural of &#39;check-in&#39;?&quot;, opts: [&quot;check-ins&quot;, &quot;checks-in&quot;, &quot;check-in&#39;s&quot;, &quot;checkins&quot;], ans: &quot;check-ins&quot; },
      { q: &quot;Which is the correct plural of &#39;trade union&#39;?&quot;, opts: [&quot;trades union&quot;, &quot;trade unions&quot;, &quot;trades unions&quot;, &quot;trade union&#39;s&quot;], ans: &quot;trade unions&quot; }
    ];

    function renderModule3() {
        const container = document.getElementById(&quot;module3-container&quot;);
        m3Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m3-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule3() {
        let currentScore = 0;
        m3Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m3-${index}`);
            const fb = document.getElementById(`m3-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // --- PART 4: MATCH THE RULE (5 Marks) ---
    const ruleOpts = [
      &quot;Rule 1 – Pluralize the head noun&quot;,
      &quot;Rule 1 (Exception) – Established military-title plurals&quot;,
      &quot;Rule 2 – Man/Woman compounds (both words pluralize)&quot;,
      &quot;Rule 3 – Add -s to the last word (no word significant)&quot;,
      &quot;Rule 4 – Noun hyphenated with a preposition&quot;,
      &quot;Rule 5 – Verb hyphenated with a preposition/particle&quot;,
      &quot;Rule 6 – Nouns ending in -ful&quot;,
      &quot;Rule 7 – Compounds with &#39;of&#39;&quot;
    ];
    const m4Data = [
      { q: &quot;hanger-on&quot;, ans: &quot;Rule 4 – Noun hyphenated with a preposition&quot; },
      { q: &quot;brigadier-general&quot;, ans: &quot;Rule 1 (Exception) – Established military-title plurals&quot; },
      { q: &quot;judge advocate&quot;, ans: &quot;Rule 3 – Add -s to the last word (no word significant)&quot; },
      { q: &quot;handful&quot;, ans: &quot;Rule 6 – Nouns ending in -ful&quot; },
      { q: &quot;build-up&quot;, ans: &quot;Rule 5 – Verb hyphenated with a preposition/particle&quot; }
    ];

    function renderModule4() {
        const container = document.getElementById(&quot;module4-container&quot;);
        m4Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Rule --&lt;/option&gt;`;
            ruleOpts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Compound Noun:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m4-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m4-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule4() {
        let currentScore = 0;
        m4Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m4-${index}`);
            const fb = document.getElementById(`m4-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m4 = currentScore;
        updateScoreboard();
    }

    // --- PART 5: SPOT &amp; FIX THE ERROR (5 Marks) ---
    const m5Data = [
      { q: &quot;The attorney generals held a meeting.&quot;, targets: [&quot;The attorneys general held a meeting.&quot;], exp: &quot;Rule 1: the head noun &#39;attorney&#39; is pluralized — &#39;attorneys general&#39;, not &#39;attorney generals&#39;.&quot; },
      { q: &quot;Two mans drivers arrived late.&quot;, targets: [&quot;Two men drivers arrived late.&quot;], exp: &quot;Rule 2: &#39;man&#39; becomes &#39;men&#39; when pluralized as part of the compound — &#39;men drivers&#39;, not &#39;mans drivers&#39;.&quot; },
      { q: &quot;She bought three teaspoonful of sugar.&quot;, targets: [&quot;She bought three teaspoonfuls of sugar.&quot;], exp: &quot;Rule 6: nouns ending in &#39;-ful&#39; add -s at the end — &#39;teaspoonfuls&#39;, not &#39;teaspoonful&#39;.&quot; },
      { q: &quot;The runner-ups received medals.&quot;, targets: [&quot;The runners-up received medals.&quot;], exp: &quot;Rule 4: the plural is formed on the noun before the preposition — &#39;runners-up&#39;, not &#39;runner-ups&#39;.&quot; },
      { q: &quot;We need several cup of teas.&quot;, targets: [&quot;We need several cups of tea.&quot;], exp: &quot;Rule 7: in &#39;of&#39; compounds, the word before &#39;of&#39; takes the plural — &#39;cups of tea&#39;, not &#39;cup of teas&#39;.&quot; }
    ];

    function renderModule5() {
        const container = document.getElementById(&quot;module5-container&quot;);
        m5Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Incorrect Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m5-in-${index}&quot; placeholder=&quot;Type the corrected sentence...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m5-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m5-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule5() {
        let currentScore = 0;
        m5Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m5-in-${index}`);
            const fb = document.getElementById(`m5-fb-${index}`);
            const exp = document.getElementById(`m5-exp-${index}`);

            const cleanUser = normalize(input.value);
            const isMatch = item.targets.some(t =&gt; normalize(t) === cleanUser);

            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.targets[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores.m5 = currentScore;
        updateScoreboard();
    }

    // Initialization
    window.onload = () =&gt; {
        renderModule1();
        renderModule2();
        renderModule3();
        renderModule4();
        renderModule5();
        updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/1359003111017475433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/1359003111017475433?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1359003111017475433'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1359003111017475433'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-55-forming-plural-of-compound.html' title='Chapter 55: Forming the Plural of Compound Nouns Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-5655238659354595698</id><published>2026-08-09T20:22:35.689-07:00</published><updated>2026-08-09T22:59:46.814-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 54: The Usage of &#39;Need&#39;</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Fifty-Four Assessment · Usage of &#39;Need&#39; (15 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root {
    --bg: #ffffff;
    --panel: #ffffff;
    --panel-2: #f8f9fa;
    --ink: #222222;
    --ink-dim: #555555;
    --blue: #0d6efd;
    --blue-soft: #4a7bd8;
    --red: #d9534f;
    --green: #198754;
    --line: rgba(0,0,0,.12);
    --shadow: 0 6px 18px rgba(0,0,0,.08);
    --gutter: 24px;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
  body {
    margin: 0;
    background: #fff;
    color: var(--ink);
    font-family: &#39;Source Serif 4&#39;, serif;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    width: 100%;
  }
  img, svg { max-width: 100%; }
  ::selection { background: var(--blue); color: #fff; }
  .wrap { max-width: 980px; margin: 0 auto; padding: 0 var(--gutter); width: 100%; }

  header.hero {
    padding: clamp(20px, 4vw, 32px) 0 20px;
    border-bottom: 1px solid var(--line);
  }
  .eyebrow {
    font-family: &#39;Space Mono&#39;, monospace;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: 11px;
    color: var(--blue);
    display: flex; 
    align-items: center; 
    gap: 10px;
    flex-wrap: wrap;
  }
  .eyebrow::before { content: &quot;&quot;; width: 28px; height: 1px; background: var(--blue-soft); flex-shrink: 0; }
  h1 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(24px, 5vw, 42px);
    line-height: 1.2;
    margin: 12px 0 6px;
    word-wrap: break-word;
  }
  h1 em { font-style: italic; color: var(--blue); }
  .lede { max-width: 700px; font-size: clamp(13px, 2.5vw, 15px); color: var(--ink-dim); margin-top: 6px; line-height: 1.6; }

  /* Fully Responsive Scoreboard Grid */
  .scoreboard {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 10px;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 12px 14px;
    background: var(--panel-2);
    box-shadow: var(--shadow);
  }
  .score-item { text-align: center; padding: 6px 4px; min-width: 0; }
  .score-item.total-card {
    background: #ffffff;
    border: 1px solid var(--line);
    border-radius: 4px;
  }
  .score-item .num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: clamp(14px, 3.5vw, 16px);
    font-weight: 700;
    color: var(--blue);
    white-space: nowrap;
  }
  .score-item .lbl {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 9px;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--ink-dim);
    margin-top: 2px;
    line-height: 1.3;
  }
  .progress-outer {
    width: 100%;
    height: 6px;
    background: #e9ecef;
    border-radius: 4px;
    overflow: hidden;
    margin-top: 12px;
  }
  .progress-inner {
    height: 100%;
    width: 0%;
    background: var(--blue);
    transition: width .3s ease;
  }

  nav.tabs {
    position: sticky; top: 0; z-index: 20;
    background: #fff;
    border-bottom: 1px solid var(--line);
    padding: 8px 0;
  }
  nav.tabs .wrap {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display: none; }

  .tab-btn {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 20px;
    background: #fff;
    color: var(--ink-dim);
    cursor: pointer;
    transition: all .2s ease;
    flex-shrink: 0;
    min-height: 40px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .tab-btn:hover { border-color: var(--blue-soft); color: var(--ink); }
  .tab-btn:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
  .tab-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }
  .tab-btn .count { opacity: .85; margin-left: 3px; font-weight: 700; }

  section.panel { padding: 24px 0 36px; display: none; }
  section.panel.active { display: block; }

  .kicker {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--blue);
    margin-bottom: 4px;
  }
  h2 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(20px, 4.5vw, 32px);
    margin: 0 0 4px;
    word-wrap: break-word;
  }
  .section-hint { color: var(--ink-dim); font-size: clamp(12px, 2.6vw, 13px); margin-bottom: 16px; }

  .q-card {
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: clamp(12px, 3vw, 16px);
    margin-bottom: 14px;
    background: #fff;
    transition: border-color .2s ease;
    overflow-wrap: break-word;
  }
  .q-card.correct { border-color: var(--green); background: rgba(25,135,84,0.03); }
  .q-card.incorrect { border-color: var(--red); background: rgba(217,83,79,0.03); }
  .q-num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    color: var(--blue);
    margin-bottom: 4px;
  }
  .q-text { font-size: clamp(14px, 3vw, 15px); color: var(--ink); margin-bottom: 10px; line-height: 1.7; overflow-wrap: break-word; }
  .feedback {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 12px;
    margin-top: 8px;
    display: none;
    word-break: break-word;
  }
  .feedback.show { display: block; }
  .feedback.correct { color: var(--green); }
  .feedback.incorrect { color: var(--red); }

  select, input[type=&quot;text&quot;] {
    font-family: &#39;Source Serif 4&#39;, serif;
    font-size: 16px;
    padding: 9px 10px;
    border: 1px solid var(--line);
    border-radius: 4px;
    background: var(--panel-2);
    color: var(--ink);
    margin: 4px 0;
    width: 100%;
    min-height: 44px;
    vertical-align: middle;
  }
  select.correct-input, input.correct-input { border-color: var(--green); background: rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input { border-color: var(--red); background: rgba(217,83,79,0.08); }

  .fib-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
  .fib-row input { flex: 1; min-width: 0; width: 100%; }

  .btn-check {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 12px 18px;
    border: 1px solid var(--blue);
    border-radius: 4px;
    background: var(--blue);
    color: #fff;
    cursor: pointer;
    transition: all .15s ease;
    margin-top: 12px;
    display: inline-block;
    width: 100%;
    text-align: center;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .btn-check:hover { background: var(--blue-soft); border-color: var(--blue-soft); }
  .btn-check:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

  .explanation { font-size: 13px; color: var(--ink-dim); margin-top: 6px; display: none; }

  footer {
    padding: 24px 0 32px;
    text-align: center;
    color: var(--ink-dim);
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 10px;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-top: 1px solid var(--line);
    padding-left: 16px;
    padding-right: 16px;
  }

  /* Screen Breakpoints */
  @media (min-width: 600px) {
    .btn-check { width: auto; min-width: 200px; }
  }

  @media (max-width: 768px) {
    :root { --gutter: 16px; }
  }

  @media (max-width: 480px) {
    :root { --gutter: 12px; }
    .q-card { padding: 12px; }
    .tab-btn { font-size: 10px; padding: 8px 10px; }
    header.hero { padding-top: 16px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Fifty-Four Assessment&lt;/div&gt;
    &lt;h1&gt;The Usage of &lt;em&gt;&#39;Need&#39;&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 15-mark interactive evaluation testing &#39;need&#39; as a main verb (with -s and do/does) versus &#39;need&#39; as an auxiliary verb (no -s, no do/does), plus the &#39;need not have + past participle&#39; structure for unnecessary past actions.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Rewrite)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Spot Fix)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item total-card&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Concept MCQs &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Rewrite Correctly &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Spot the Fix &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Concept MCQs (5 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct answer about how &#39;need&#39; behaves as a main verb and as an auxiliary verb (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Rewrite Correctly (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rewrite the Sentence Correctly&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence below misuses &#39;need&#39; as a main verb or as an auxiliary verb. Rewrite it in the correct form (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Spot the Fix (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot the Correctly Formed Sentence&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the option that uses &#39;need&#39; correctly, either as a main verb or as an auxiliary verb (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Fifty-Four Assessment · &#39;Need&#39; Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior: &#39;smooth&#39;, inline: &#39;center&#39;, block: &#39;nearest&#39; });
      });
    });

    // Score State
    const scores = { m1: 0, m2: 0, m3: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/5&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/5&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/5&#39;;

      const total = scores.m1 + scores.m2 + scores.m3;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/15&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 15) * 100) + &#39;%&#39;;
    }

    // --- PART 1 DATA ---
    const m1Data = [
      { q: &quot;As a main verb, &#39;need&#39; is followed by which of the following?&quot;, opts: [&quot;A noun, a noun phrase, or a to-infinitive&quot;, &quot;Only a bare infinitive&quot;, &quot;Only an -ing form&quot;, &quot;Only a past participle&quot;], ans: &quot;A noun, a noun phrase, or a to-infinitive&quot; },
      { q: &quot;As a main verb, what happens to &#39;need&#39; when the subject is third-person singular?&quot;, opts: [&quot;Nothing changes&quot;, &quot;We add -s (needs)&quot;, &quot;We drop the verb entirely&quot;, &quot;We add -ing&quot;], ans: &quot;We add -s (needs)&quot; },
      { q: &quot;As an auxiliary verb, what happens to &#39;need&#39; when the subject is third-person singular?&quot;, opts: [&quot;We add -s&quot;, &quot;We add -es&quot;, &quot;No change is made&quot;, &quot;We add &#39;do&#39;&quot;], ans: &quot;No change is made&quot; },
      { q: &quot;Which auxiliary do we use to form a question or negative with &#39;need&#39; as a main verb?&quot;, opts: [&quot;Shall/should&quot;, &quot;Do/does&quot;, &quot;Have/has&quot;, &quot;Can/could&quot;], ans: &quot;Do/does&quot; },
      { q: &quot;Which structure expresses a past action that was not actually necessary?&quot;, opts: [&quot;need + to have + past participle&quot;, &quot;needed + base verb&quot;, &quot;need not + have + past participle&quot;, &quot;need not + be + past participle&quot;], ans: &quot;need not + have + past participle&quot; }
    ];

    function renderModule1() {
      const container = document.getElementById(&quot;module1-container&quot;);
      let html = &quot;&quot;;
      m1Data.forEach((item, index) =&gt; {
        let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
        item.opts.forEach(opt =&gt; {
          optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
        });

        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
            &lt;div&gt;
              &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule1() {
      let currentScore = 0;
      m1Data.forEach((item, index) =&gt; {
        const select = document.getElementById(`m1-${index}`);
        const fb = document.getElementById(`m1-fb-${index}`);
        if (select.value === item.ans) {
          select.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          select.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
      });
      scores.m1 = currentScore;
      updateScoreboard();
    }

    // --- PART 2 DATA ---
    const m2Data = [
      {
        q: &quot;He need to see a doctor. (Main verb — missing -s for third-person singular)&quot;,
        targets: [&quot;He needs to see a doctor.&quot;],
        exp: &quot;As a main verb, &#39;need&#39; takes -s with a third-person singular subject: &#39;needs,&#39; not &#39;need.&#39;&quot;
      },
      {
        q: &quot;Do he need to see a doctor? (Main verb question — wrong auxiliary agreement)&quot;,
        targets: [&quot;Does he need to see a doctor?&quot;],
        exp: &quot;With a third-person singular subject, the main verb &#39;need&#39; forms a question with &#39;does,&#39; not &#39;do.&#39;&quot;
      },
      {
        q: &quot;He needs go there. (Main verb — missing to-infinitive)&quot;,
        targets: [&quot;He needs to go there.&quot;],
        exp: &quot;As a main verb, &#39;need&#39; is followed by a to-infinitive: &#39;needs to go,&#39; not &#39;needs go.&#39;&quot;
      },
      {
        q: &quot;He needs not worry. (Auxiliary verb — wrongly adds -s)&quot;,
        targets: [&quot;He need not worry.&quot;],
        exp: &quot;As an auxiliary verb, &#39;need&#39; does not take -s, even with a third-person singular subject: &#39;need not,&#39; not &#39;needs not.&#39;&quot;
      },
      {
        q: &quot;You need not worried about it. (Past necessity — wrong verb form)&quot;,
        targets: [&quot;You need not have worried about it.&quot;],
        exp: &quot;To refer to unnecessary past action, the structure is &#39;need not + have + past participle&#39;: &#39;need not have worried,&#39; not &#39;need not worried.&#39;&quot;
      }
    ];

    function renderModule2() {
      const container = document.getElementById(&quot;module2-container&quot;);
      let html = &quot;&quot;;
      m2Data.forEach((item, index) =&gt; {
        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Incorrect Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
            &lt;div class=&quot;fib-row&quot;&gt;
              &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type the corrected sentence...&quot;&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
            &lt;div id=&quot;m2-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule2() {
      let currentScore = 0;
      m2Data.forEach((item, index) =&gt; {
        const input = document.getElementById(`m2-in-${index}`);
        const fb = document.getElementById(`m2-fb-${index}`);
        const exp = document.getElementById(`m2-exp-${index}`);

        const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
        const isMatch = item.targets.some(t =&gt; t.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase() === cleanUser);

        if (isMatch) {
          input.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          input.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.targets[0]}&quot;`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
        exp.style.display = &quot;block&quot;;
      });
      scores.m2 = currentScore;
      updateScoreboard();
    }

    // --- PART 3 DATA ---
    const m3Data = [
      { q: &quot;Which sentence correctly uses &#39;need&#39; as a main verb with a third-person singular subject?&quot;, opts: [&quot;She need a break.&quot;, &quot;She needs a break.&quot;, &quot;She needing a break.&quot;, &quot;She need have a break.&quot;], ans: &quot;She needs a break.&quot; },
      { q: &quot;Which sentence correctly forms a negative with &#39;need&#39; as a main verb?&quot;, opts: [&quot;She doesn&#39;t needs help.&quot;, &quot;She don&#39;t need help.&quot;, &quot;She doesn&#39;t need help.&quot;, &quot;She need not help.&quot;], ans: &quot;She doesn&#39;t need help.&quot; },
      { q: &quot;Which sentence correctly uses &#39;need&#39; as an auxiliary verb (no -s, no do/does)?&quot;, opts: [&quot;He needs not answer that.&quot;, &quot;He does not need answer that.&quot;, &quot;He need not answer that.&quot;, &quot;He don&#39;t need answer that.&quot;], ans: &quot;He need not answer that.&quot; },
      { q: &quot;Which sentence correctly forms a question with auxiliary &#39;need&#39;?&quot;, opts: [&quot;Does he need go?&quot;, &quot;Need he go?&quot;, &quot;Do he need go?&quot;, &quot;Needs he go?&quot;], ans: &quot;Need he go?&quot; },
      { q: &quot;Which sentence correctly expresses a past action that turned out to be unnecessary?&quot;, opts: [&quot;You need not worry about it yesterday.&quot;, &quot;You needed not worry about it.&quot;, &quot;You need not have worried about it.&quot;, &quot;You need not worrying about it.&quot;], ans: &quot;You need not have worried about it.&quot; }
    ];

    function renderModule3() {
      const container = document.getElementById(&quot;module3-container&quot;);
      let html = &quot;&quot;;
      m3Data.forEach((item, index) =&gt; {
        let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
        item.opts.forEach(opt =&gt; {
          optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
        });

        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
            &lt;div&gt;
              &lt;select id=&quot;m3-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule3() {
      let currentScore = 0;
      m3Data.forEach((item, index) =&gt; {
        const select = document.getElementById(`m3-${index}`);
        const fb = document.getElementById(`m3-fb-${index}`);
        if (select.value === item.ans) {
          select.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          select.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
      });
      scores.m3 = currentScore;
      updateScoreboard();
    }

    // Initializer
    window.onload = () =&gt; {
      renderModule1();
      renderModule2();
      renderModule3();
      updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/5655238659354595698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/5655238659354595698?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/5655238659354595698'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/5655238659354595698'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-54-usage-of-need.html' title='Chapter 54: The Usage of &#39;Need&#39;'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-6595805343533980451</id><published>2026-08-09T19:45:23.775-07:00</published><updated>2026-08-09T23:01:46.027-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 53: The Usage of &#39;One&#39; and &#39;You&#39; Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Fifty-Three Assessment · Usage of &#39;One&#39; and &#39;You&#39; (15 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root {
    --bg: #ffffff;
    --panel: #ffffff;
    --panel-2: #f8f9fa;
    --ink: #222222;
    --ink-dim: #555555;
    --blue: #0d6efd;
    --blue-soft: #4a7bd8;
    --red: #d9534f;
    --green: #198754;
    --line: rgba(0,0,0,.12);
    --shadow: 0 6px 18px rgba(0,0,0,.08);
    --gutter: 24px;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
  body {
    margin: 0;
    background: #fff;
    color: var(--ink);
    font-family: &#39;Source Serif 4&#39;, serif;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    width: 100%;
  }
  img, svg { max-width: 100%; }
  ::selection { background: var(--blue); color: #fff; }
  .wrap { max-width: 980px; margin: 0 auto; padding: 0 var(--gutter); width: 100%; }

  header.hero {
    padding: clamp(20px, 4vw, 32px) 0 20px;
    border-bottom: 1px solid var(--line);
  }
  .eyebrow {
    font-family: &#39;Space Mono&#39;, monospace;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: 11px;
    color: var(--blue);
    display: flex; 
    align-items: center; 
    gap: 10px;
    flex-wrap: wrap;
  }
  .eyebrow::before { content: &quot;&quot;; width: 28px; height: 1px; background: var(--blue-soft); flex-shrink: 0; }
  h1 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(24px, 5vw, 42px);
    line-height: 1.2;
    margin: 12px 0 6px;
    word-wrap: break-word;
  }
  h1 em { font-style: italic; color: var(--blue); }
  .lede { max-width: 700px; font-size: clamp(13px, 2.5vw, 15px); color: var(--ink-dim); margin-top: 6px; line-height: 1.6; }

  /* Fully Responsive Scoreboard Grid */
  .scoreboard {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 10px;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 12px 14px;
    background: var(--panel-2);
    box-shadow: var(--shadow);
  }
  .score-item { text-align: center; padding: 6px 4px; min-width: 0; }
  .score-item.total-card {
    background: #ffffff;
    border: 1px solid var(--line);
    border-radius: 4px;
  }
  .score-item .num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: clamp(14px, 3.5vw, 16px);
    font-weight: 700;
    color: var(--blue);
    white-space: nowrap;
  }
  .score-item .lbl {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 9px;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--ink-dim);
    margin-top: 2px;
    line-height: 1.3;
  }
  .progress-outer {
    width: 100%;
    height: 6px;
    background: #e9ecef;
    border-radius: 4px;
    overflow: hidden;
    margin-top: 12px;
  }
  .progress-inner {
    height: 100%;
    width: 0%;
    background: var(--blue);
    transition: width .3s ease;
  }

  nav.tabs {
    position: sticky; top: 0; z-index: 20;
    background: #fff;
    border-bottom: 1px solid var(--line);
    padding: 8px 0;
  }
  nav.tabs .wrap {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display: none; }

  .tab-btn {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 20px;
    background: #fff;
    color: var(--ink-dim);
    cursor: pointer;
    transition: all .2s ease;
    flex-shrink: 0;
    min-height: 40px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .tab-btn:hover { border-color: var(--blue-soft); color: var(--ink); }
  .tab-btn:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
  .tab-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }
  .tab-btn .count { opacity: .85; margin-left: 3px; font-weight: 700; }

  section.panel { padding: 24px 0 36px; display: none; }
  section.panel.active { display: block; }

  .kicker {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--blue);
    margin-bottom: 4px;
  }
  h2 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(20px, 4.5vw, 32px);
    margin: 0 0 4px;
    word-wrap: break-word;
  }
  .section-hint { color: var(--ink-dim); font-size: clamp(12px, 2.6vw, 13px); margin-bottom: 16px; }

  .q-card {
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: clamp(12px, 3vw, 16px);
    margin-bottom: 14px;
    background: #fff;
    transition: border-color .2s ease;
    overflow-wrap: break-word;
  }
  .q-card.correct { border-color: var(--green); background: rgba(25,135,84,0.03); }
  .q-card.incorrect { border-color: var(--red); background: rgba(217,83,79,0.03); }
  .q-num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    color: var(--blue);
    margin-bottom: 4px;
  }
  .q-text { font-size: clamp(14px, 3vw, 15px); color: var(--ink); margin-bottom: 10px; line-height: 1.7; overflow-wrap: break-word; }
  .feedback {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 12px;
    margin-top: 8px;
    display: none;
    word-break: break-word;
  }
  .feedback.show { display: block; }
  .feedback.correct { color: var(--green); }
  .feedback.incorrect { color: var(--red); }

  select, input[type=&quot;text&quot;] {
    font-family: &#39;Source Serif 4&#39;, serif;
    font-size: 16px;
    padding: 9px 10px;
    border: 1px solid var(--line);
    border-radius: 4px;
    background: var(--panel-2);
    color: var(--ink);
    margin: 4px 0;
    width: 100%;
    min-height: 44px;
    vertical-align: middle;
  }
  select.correct-input, input.correct-input { border-color: var(--green); background: rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input { border-color: var(--red); background: rgba(217,83,79,0.08); }

  .fib-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
  .fib-row input { flex: 1; min-width: 0; width: 100%; }

  .btn-check {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 12px 18px;
    border: 1px solid var(--blue);
    border-radius: 4px;
    background: var(--blue);
    color: #fff;
    cursor: pointer;
    transition: all .15s ease;
    margin-top: 12px;
    display: inline-block;
    width: 100%;
    text-align: center;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .btn-check:hover { background: var(--blue-soft); border-color: var(--blue-soft); }
  .btn-check:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

  .explanation { font-size: 13px; color: var(--ink-dim); margin-top: 6px; display: none; }

  footer {
    padding: 24px 0 32px;
    text-align: center;
    color: var(--ink-dim);
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 10px;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-top: 1px solid var(--line);
    padding-left: 16px;
    padding-right: 16px;
  }

  /* Screen Breakpoints */
  @media (min-width: 600px) {
    .btn-check { width: auto; min-width: 200px; }
  }

  @media (max-width: 768px) {
    :root { --gutter: 16px; }
  }

  @media (max-width: 480px) {
    :root { --gutter: 12px; }
    .q-card { padding: 12px; }
    .tab-btn { font-size: 10px; padding: 8px 10px; }
    header.hero { padding-top: 16px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Fifty-Three Assessment&lt;/div&gt;
    &lt;h1&gt;The Usage of &lt;em&gt;&#39;One&#39;&lt;/em&gt; and &lt;em&gt;&#39;You&#39;&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 15-mark interactive evaluation testing correct pronoun agreement with the impersonal pronoun &#39;one&#39; and the second-person pronoun &#39;you&#39; — including person, number, and consistency across a sentence.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Rewrite)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Spot Fix)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item total-card&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Concept MCQs &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Rewrite Correctly &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Spot the Fix &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Concept MCQs (5 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct answer about how &#39;one&#39; and &#39;you&#39; behave in a sentence (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Rewrite Correctly (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rewrite the Sentence Correctly&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence below starts with &#39;one&#39; but switches to a mismatched pronoun. Rewrite it so the pronoun matches &#39;one&#39; in person and number — use one&#39;s, his/her, or their (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Spot the Fix (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot the Correctly Matched Pronoun&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the option that correctly completes the sentence, keeping pronoun person and number consistent (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Fifty-Three Assessment · &#39;One&#39; and &#39;You&#39; Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior: &#39;smooth&#39;, inline: &#39;center&#39;, block: &#39;nearest&#39; });
      });
    });

    // Score State
    const scores = { m1: 0, m2: 0, m3: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/5&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/5&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/5&#39;;

      const total = scores.m1 + scores.m2 + scores.m3;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/15&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 15) * 100) + &#39;%&#39;;
    }

    // --- PART 1 DATA ---
    const m1Data = [
      { q: &quot;What kind of pronoun is &#39;one&#39;?&quot;, opts: [&quot;A personal pronoun&quot;, &quot;An impersonal pronoun&quot;, &quot;A possessive pronoun&quot;, &quot;A relative pronoun&quot;], ans: &quot;An impersonal pronoun&quot; },
      { q: &quot;What person and number is &#39;one&#39;?&quot;, opts: [&quot;Second person singular&quot;, &quot;Third person singular&quot;, &quot;First person plural&quot;, &quot;Third person plural&quot;], ans: &quot;Third person singular&quot; },
      { q: &quot;Why can &#39;one&#39; not be replaced by &#39;you&#39; later in the same sentence?&quot;, opts: [&quot;Because &#39;you&#39; is plural only&quot;, &quot;Because &#39;you&#39; is a second-person pronoun, while &#39;one&#39; is third person&quot;, &quot;Because &#39;you&#39; is impersonal&quot;, &quot;Because &#39;you&#39; is a possessive pronoun&quot;], ans: &quot;Because &#39;you&#39; is a second-person pronoun, while &#39;one&#39; is third person&quot; },
      { q: &quot;If a sentence begins with &#39;you&#39;, which pronouns should NOT be used later to refer back to it?&quot;, opts: [&quot;Second-person pronouns&quot;, &quot;First-person pronouns&quot;, &quot;Third-person pronouns such as one, she, it, or them&quot;, &quot;Possessive pronouns&quot;], ans: &quot;Third-person pronouns such as one, she, it, or them&quot; },
      { q: &quot;In modern everyday English, which pronoun do many native speakers use after &#39;one&#39; to avoid gender-specific language?&quot;, opts: [&quot;You/your&quot;, &quot;Their/them/themselves&quot;, &quot;It/its&quot;, &quot;We/our&quot;], ans: &quot;Their/them/themselves&quot; }
    ];

    function renderModule1() {
      const container = document.getElementById(&quot;module1-container&quot;);
      let html = &quot;&quot;;
      m1Data.forEach((item, index) =&gt; {
        let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
        item.opts.forEach(opt =&gt; {
          optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
        });

        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
            &lt;div&gt;
              &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule1() {
      let currentScore = 0;
      m1Data.forEach((item, index) =&gt; {
        const select = document.getElementById(`m1-${index}`);
        const fb = document.getElementById(`m1-fb-${index}`);
        if (select.value === item.ans) {
          select.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          select.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
      });
      scores.m1 = currentScore;
      updateScoreboard();
    }

    // --- PART 2 DATA ---
    const m2Data = [
      {
        q: &quot;One should do their duty. (Traditional agreement)&quot;,
        targets: [&quot;One should do one&#39;s duty.&quot;, &quot;One should do his/her duty.&quot;, &quot;One should do his duty.&quot;, &quot;One should do her duty.&quot;],
        exp: &quot;&#39;One&#39; is third person singular, so it should be matched with &#39;one&#39;s&#39; or &#39;his/her&#39; — &#39;their&#39; is only accepted in modern informal usage, not the traditional form being tested here.&quot;
      },
      {
        q: &quot;One should do your duty. (Wrong: &#39;your&#39; is second person)&quot;,
        targets: [&quot;One should do one&#39;s duty.&quot;, &quot;One should do his/her duty.&quot;, &quot;One should do his duty.&quot;, &quot;One should do her duty.&quot;],
        exp: &quot;&#39;Your&#39; is second person and cannot refer back to &#39;one.&#39; Use &#39;one&#39;s&#39; or &#39;his/her&#39; instead.&quot;
      },
      {
        q: &quot;One should follow your heart. (Wrong: &#39;your&#39; is second person)&quot;,
        targets: [&quot;One should follow one&#39;s heart.&quot;, &quot;One should follow his/her heart.&quot;, &quot;One should follow his heart.&quot;, &quot;One should follow her heart.&quot;, &quot;One should follow their heart.&quot;],
        exp: &quot;&#39;Your&#39; cannot follow &#39;one.&#39; The correct forms are &#39;one&#39;s heart&#39; (formal), &#39;his/her heart&#39; (traditional), or &#39;their heart&#39; (modern).&quot;
      },
      {
        q: &quot;One should always keep faith in yourselves. (Wrong: &#39;yourselves&#39; is second person plural)&quot;,
        targets: [&quot;One should always keep faith in oneself.&quot;, &quot;One should always keep faith in himself/herself.&quot;, &quot;One should always keep faith in himself.&quot;, &quot;One should always keep faith in herself.&quot;],
        exp: &quot;&#39;Yourselves&#39; does not match &#39;one&#39; in person or number. Use the reflexive &#39;oneself&#39; or &#39;himself/herself.&#39;&quot;
      },
      {
        q: &quot;One must respect your elders. (Wrong: &#39;your&#39; is second person)&quot;,
        targets: [&quot;One must respect one&#39;s elders.&quot;, &quot;One must respect his/her elders.&quot;, &quot;One must respect his elders.&quot;, &quot;One must respect her elders.&quot;, &quot;One must respect their elders.&quot;],
        exp: &quot;&#39;Your&#39; cannot refer back to &#39;one.&#39; Use &#39;one&#39;s elders,&#39; &#39;his/her elders,&#39; or the modern &#39;their elders.&#39;&quot;
      }
    ];

    function renderModule2() {
      const container = document.getElementById(&quot;module2-container&quot;);
      let html = &quot;&quot;;
      m2Data.forEach((item, index) =&gt; {
        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Incorrect Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
            &lt;div class=&quot;fib-row&quot;&gt;
              &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type the corrected sentence...&quot;&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
            &lt;div id=&quot;m2-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule2() {
      let currentScore = 0;
      m2Data.forEach((item, index) =&gt; {
        const input = document.getElementById(`m2-in-${index}`);
        const fb = document.getElementById(`m2-fb-${index}`);
        const exp = document.getElementById(`m2-exp-${index}`);

        const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
        const isMatch = item.targets.some(t =&gt; t.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase() === cleanUser);

        if (isMatch) {
          input.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          input.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.targets[0]}&quot;`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
        exp.style.display = &quot;block&quot;;
      });
      scores.m2 = currentScore;
      updateScoreboard();
    }

    // --- PART 3 DATA ---
    const m3Data = [
      { q: &quot;One should always keep ___ promises.&quot;, opts: [&quot;your&quot;, &quot;you&quot;, &quot;one&#39;s&quot;, &quot;she&quot;], ans: &quot;one&#39;s&quot; },
      { q: &quot;If you want to succeed, ___ must work hard.&quot;, opts: [&quot;one&quot;, &quot;you&quot;, &quot;they&quot;, &quot;it&quot;], ans: &quot;you&quot; },
      { q: &quot;One must always believe in ___.&quot;, opts: [&quot;yourself&quot;, &quot;themself&quot;, &quot;oneself&quot;, &quot;itself&quot;], ans: &quot;oneself&quot; },
      { q: &quot;You should always trust ___ own judgment.&quot;, opts: [&quot;one&#39;s&quot;, &quot;his/her&quot;, &quot;your&quot;, &quot;their&quot;], ans: &quot;your&quot; },
      { q: &quot;One should treat others as ___ would like to be treated.&quot;, opts: [&quot;you&quot;, &quot;one&quot;, &quot;she&quot;, &quot;it&quot;], ans: &quot;one&quot; }
    ];

    function renderModule3() {
      const container = document.getElementById(&quot;module3-container&quot;);
      let html = &quot;&quot;;
      m3Data.forEach((item, index) =&gt; {
        let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
        item.opts.forEach(opt =&gt; {
          optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
        });

        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
            &lt;div&gt;
              &lt;select id=&quot;m3-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule3() {
      let currentScore = 0;
      m3Data.forEach((item, index) =&gt; {
        const select = document.getElementById(`m3-${index}`);
        const fb = document.getElementById(`m3-fb-${index}`);
        if (select.value === item.ans) {
          select.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          select.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
      });
      scores.m3 = currentScore;
      updateScoreboard();
    }

    // Initializer
    window.onload = () =&gt; {
      renderModule1();
      renderModule2();
      renderModule3();
      updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/6595805343533980451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/6595805343533980451?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/6595805343533980451'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/6595805343533980451'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-53-usage-of-one-and-you.html' title='Chapter 53: The Usage of &#39;One&#39; and &#39;You&#39; Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-1282413289561948966</id><published>2026-08-09T19:33:11.964-07:00</published><updated>2026-08-09T23:05:04.201-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 52: Causative Verb Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Fifty-Two Assessment · Causative Verb (25 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root {
    --bg: #ffffff;
    --panel: #ffffff;
    --panel-2: #f8f9fa;
    --ink: #222222;
    --ink-dim: #555555;
    --blue: #0d6efd;
    --blue-soft: #4a7bd8;
    --red: #d9534f;
    --green: #198754;
    --line: rgba(0,0,0,.12);
    --shadow: 0 6px 18px rgba(0,0,0,.08);
    --gutter: 24px;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
  body {
    margin: 0;
    background: #fff;
    color: var(--ink);
    font-family: &#39;Source Serif 4&#39;, serif;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    width: 100%;
  }
  img, svg { max-width: 100%; }
  ::selection { background: var(--blue); color: #fff; }
  .wrap { max-width: 980px; margin: 0 auto; padding: 0 var(--gutter); width: 100%; }

  header.hero {
    padding: clamp(20px, 4vw, 32px) 0 20px;
    border-bottom: 1px solid var(--line);
  }
  .eyebrow {
    font-family: &#39;Space Mono&#39;, monospace;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: 11px;
    color: var(--blue);
    display: flex; 
    align-items: center; 
    gap: 10px;
    flex-wrap: wrap;
  }
  .eyebrow::before { content: &quot;&quot;; width: 28px; height: 1px; background: var(--blue-soft); flex-shrink: 0; }
  h1 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(24px, 5vw, 42px);
    line-height: 1.2;
    margin: 12px 0 6px;
    word-wrap: break-word;
  }
  h1 em { font-style: italic; color: var(--blue); }
  .lede { max-width: 700px; font-size: clamp(13px, 2.5vw, 15px); color: var(--ink-dim); margin-top: 6px; line-height: 1.6; }

  /* Fully Responsive Scoreboard Grid */
  .scoreboard {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 10px;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 12px 14px;
    background: var(--panel-2);
    box-shadow: var(--shadow);
  }
  .score-item { text-align: center; padding: 6px 4px; min-width: 0; }
  .score-item.total-card {
    background: #ffffff;
    border: 1px solid var(--line);
    border-radius: 4px;
  }
  .score-item .num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: clamp(14px, 3.5vw, 16px);
    font-weight: 700;
    color: var(--blue);
    white-space: nowrap;
  }
  .score-item .lbl {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 9px;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--ink-dim);
    margin-top: 2px;
    line-height: 1.3;
  }
  .progress-outer {
    width: 100%;
    height: 6px;
    background: #e9ecef;
    border-radius: 4px;
    overflow: hidden;
    margin-top: 12px;
  }
  .progress-inner {
    height: 100%;
    width: 0%;
    background: var(--blue);
    transition: width .3s ease;
  }

  nav.tabs {
    position: sticky; top: 0; z-index: 20;
    background: #fff;
    border-bottom: 1px solid var(--line);
    padding: 8px 0;
  }
  nav.tabs .wrap {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display: none; }

  .tab-btn {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 20px;
    background: #fff;
    color: var(--ink-dim);
    cursor: pointer;
    transition: all .2s ease;
    flex-shrink: 0;
    min-height: 40px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .tab-btn:hover { border-color: var(--blue-soft); color: var(--ink); }
  .tab-btn:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
  .tab-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }
  .tab-btn .count { opacity: .85; margin-left: 3px; font-weight: 700; }

  section.panel { padding: 24px 0 36px; display: none; }
  section.panel.active { display: block; }

  .kicker {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--blue);
    margin-bottom: 4px;
  }
  h2 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(20px, 4.5vw, 32px);
    margin: 0 0 4px;
    word-wrap: break-word;
  }
  .section-hint { color: var(--ink-dim); font-size: clamp(12px, 2.6vw, 13px); margin-bottom: 16px; }

  .q-card {
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: clamp(12px, 3vw, 16px);
    margin-bottom: 14px;
    background: #fff;
    transition: border-color .2s ease;
    overflow-wrap: break-word;
  }
  .q-card.correct { border-color: var(--green); background: rgba(25,135,84,0.03); }
  .q-card.incorrect { border-color: var(--red); background: rgba(217,83,79,0.03); }
  .q-num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    color: var(--blue);
    margin-bottom: 4px;
  }
  .q-text { font-size: clamp(14px, 3vw, 15px); color: var(--ink); margin-bottom: 10px; line-height: 1.7; overflow-wrap: break-word; }
  .feedback {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 12px;
    margin-top: 8px;
    display: none;
    word-break: break-word;
  }
  .feedback.show { display: block; }
  .feedback.correct { color: var(--green); }
  .feedback.incorrect { color: var(--red); }

  select, input[type=&quot;text&quot;] {
    font-family: &#39;Source Serif 4&#39;, serif;
    font-size: 16px;
    padding: 9px 10px;
    border: 1px solid var(--line);
    border-radius: 4px;
    background: var(--panel-2);
    color: var(--ink);
    margin: 4px 0;
    width: 100%;
    min-height: 44px;
    vertical-align: middle;
  }
  select.correct-input, input.correct-input { border-color: var(--green); background: rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input { border-color: var(--red); background: rgba(217,83,79,0.08); }

  .fib-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
  .fib-row input { flex: 1; min-width: 0; width: 100%; }

  .btn-check {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 12px 18px;
    border: 1px solid var(--blue);
    border-radius: 4px;
    background: var(--blue);
    color: #fff;
    cursor: pointer;
    transition: all .15s ease;
    margin-top: 12px;
    display: inline-block;
    width: 100%;
    text-align: center;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .btn-check:hover { background: var(--blue-soft); border-color: var(--blue-soft); }
  .btn-check:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

  .explanation { font-size: 13px; color: var(--ink-dim); margin-top: 6px; display: none; }

  footer {
    padding: 24px 0 32px;
    text-align: center;
    color: var(--ink-dim);
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 10px;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-top: 1px solid var(--line);
    padding-left: 16px;
    padding-right: 16px;
  }

  /* Screen Breakpoints */
  @media (min-width: 600px) {
    .btn-check { width: auto; min-width: 200px; }
  }

  @media (max-width: 768px) {
    :root { --gutter: 16px; }
  }

  @media (max-width: 480px) {
    :root { --gutter: 12px; }
    .q-card { padding: 12px; }
    .tab-btn { font-size: 10px; padding: 8px 10px; }
    header.hero { padding-top: 16px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Fifty-Two Assessment&lt;/div&gt;
    &lt;h1&gt;The &lt;em&gt;Causative&lt;/em&gt; Verb&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 25-mark interactive evaluation testing recognition and correct use of causative verbs — let, have, get, make, help, enable, persuade, require, force — and the passive causative structure (have/get + object + past participle).&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Rewrite)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Spot Fix)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m4&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 4 (Passive)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m5&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 5 (Gap-Fill)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item total-card&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot;&gt;0/25&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Concept MCQs &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Rewrite Correctly &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Spot the Fix &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m4&quot;&gt;Part 4: Passive Causative &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m5&quot;&gt;Part 5: Rules Synthesis &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Concept MCQs (5 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct answer about how causative verbs work (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Rewrite Correctly (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rewrite the Sentence Correctly&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence below misuses &#39;to&#39; with a causative verb — either adding it where it doesn&#39;t belong or omitting it where it&#39;s required. Rewrite it correctly (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Spot the Fix (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot the Correctly Fixed Sentence&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the option that uses the causative verb correctly (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 4: Passive Causative Transformation (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m4&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 4 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Passive Causative Transformation&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Rewrite each sentence as a passive causative (have/get + object + past participle) to show the action was done &lt;em&gt;for&lt;/em&gt; the subject, not &lt;em&gt;by&lt;/em&gt; them, using the verb given (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module4-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule4()&quot;&gt;Verify Part 4&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 5: Rules Synthesis Gap-Fill Passage (5 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m5&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 5 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rules Synthesis Gap-Fill&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct word to complete each part of the rule summary (1 mark each).&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-text&quot; id=&quot;module5-container&quot;&gt;
        Causative verbs show that a subject causes, allows, or arranges for someone else to
        &lt;select id=&quot;m5-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;perform&quot;&gt;perform&lt;/option&gt;&lt;option value=&quot;avoid&quot;&gt;avoid&lt;/option&gt;&lt;option value=&quot;describe&quot;&gt;describe&lt;/option&gt;&lt;/select&gt;
        an action, rather than doing it directly. Verbs such as let, have, and make are followed by an object and the
        &lt;select id=&quot;m5-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;base&quot;&gt;base&lt;/option&gt;&lt;option value=&quot;past&quot;&gt;past&lt;/option&gt;&lt;option value=&quot;ing&quot;&gt;-ing&lt;/option&gt;&lt;/select&gt;
        form of the verb, without &#39;to&#39;. In contrast, verbs such as enable, persuade, require, and force are followed by an object and
        &lt;select id=&quot;m5-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;to&quot;&gt;to&lt;/option&gt;&lt;option value=&quot;for&quot;&gt;for&lt;/option&gt;&lt;option value=&quot;by&quot;&gt;by&lt;/option&gt;&lt;/select&gt;
        plus the base form of the verb. &#39;Get&#39;, although it has no non-causative form, behaves like these verbs and also requires an object followed by
        &lt;select id=&quot;m5-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;to&quot;&gt;to&lt;/option&gt;&lt;option value=&quot;for&quot;&gt;for&lt;/option&gt;&lt;option value=&quot;by&quot;&gt;by&lt;/option&gt;&lt;/select&gt;
        plus the base verb, meaning to convince someone to do something. A passive causative structure, formed with have or get plus an object and a
        &lt;select id=&quot;m5-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;past participle&quot;&gt;past participle&lt;/option&gt;&lt;option value=&quot;present participle&quot;&gt;present participle&lt;/option&gt;&lt;option value=&quot;base verb&quot;&gt;base verb&lt;/option&gt;&lt;/select&gt;,
        shows that an action was done for the subject rather than by the subject.
      &lt;/div&gt;

      &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule5()&quot;&gt;Verify Part 5&lt;/button&gt;
      &lt;div id=&quot;m5-feedback&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Fifty-Two Assessment · Causative Verb Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior: &#39;smooth&#39;, inline: &#39;center&#39;, block: &#39;nearest&#39; });
      });
    });

    // Score State (25 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0, m4: 0, m5: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/5&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/5&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/5&#39;;
      document.getElementById(&#39;score-m4&#39;).textContent = scores.m4 + &#39;/5&#39;;
      document.getElementById(&#39;score-m5&#39;).textContent = scores.m5 + &#39;/5&#39;;

      const total = scores.m1 + scores.m2 + scores.m3 + scores.m4 + scores.m5;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/25&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 25) * 100) + &#39;%&#39;;
    }

    // --- PART 1 DATA ---
    const m1Data = [
      { q: &quot;What do causative verbs show?&quot;, opts: [&quot;A subject performing an action directly&quot;, &quot;A subject causing, allowing, or arranging for someone else to perform an action&quot;, &quot;A subject describing a past event&quot;, &quot;A subject asking a question&quot;], ans: &quot;A subject causing, allowing, or arranging for someone else to perform an action&quot; },
      { q: &quot;Which causative verb means &#39;allow&#39;?&quot;, opts: [&quot;Make&quot;, &quot;Force&quot;, &quot;Let&quot;, &quot;Require&quot;], ans: &quot;Let&quot; },
      { q: &quot;Which of these causative verbs must be followed by &#39;to + base verb&#39;?&quot;, opts: [&quot;Let&quot;, &quot;Make&quot;, &quot;Persuade&quot;, &quot;Have&quot;], ans: &quot;Persuade&quot; },
      { q: &quot;Which of these causative verbs are followed directly by the base form of the verb, without &#39;to&#39;?&quot;, opts: [&quot;Enable and require&quot;, &quot;Persuade and force&quot;, &quot;Let and make&quot;, &quot;Get and persuade&quot;], ans: &quot;Let and make&quot; },
      { q: &quot;What does &#39;get&#39; mean when used as a causative verb?&quot;, opts: [&quot;Forcing someone to do something&quot;, &quot;Convincing someone to do something&quot;, &quot;Allowing someone to do something&quot;, &quot;Assisting someone to do something&quot;], ans: &quot;Convincing someone to do something&quot; }
    ];

    function renderModule1() {
      const container = document.getElementById(&quot;module1-container&quot;);
      let html = &quot;&quot;;
      m1Data.forEach((item, index) =&gt; {
        let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
        item.opts.forEach(opt =&gt; {
          optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
        });

        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
            &lt;div&gt;
              &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule1() {
      let currentScore = 0;
      m1Data.forEach((item, index) =&gt; {
        const select = document.getElementById(`m1-${index}`);
        const fb = document.getElementById(`m1-fb-${index}`);
        if (select.value === item.ans) {
          select.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          select.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
      });
      scores.m1 = currentScore;
      updateScoreboard();
    }

    // --- PART 2 DATA ---
    const m2Data = [
      {
        q: &quot;I got him help me. (Missing &#39;to&#39; with get)&quot;,
        targets: [&quot;I got him to help me.&quot;],
        exp: &quot;&#39;Get&#39; requires &#39;to + base verb&#39;: &#39;to help,&#39; not the bare base form.&quot;
      },
      {
        q: &quot;She made me to go. (Extra &#39;to&#39; with make)&quot;,
        targets: [&quot;She made me go.&quot;],
        exp: &quot;&#39;Make&#39; is followed directly by the base form of the verb, without &#39;to&#39;: &#39;go,&#39; not &#39;to go.&#39;&quot;
      },
      {
        q: &quot;They let us to enter. (Extra &#39;to&#39; with let)&quot;,
        targets: [&quot;They let us enter.&quot;],
        exp: &quot;&#39;Let&#39; is followed directly by the base form of the verb, without &#39;to&#39;: &#39;enter,&#39; not &#39;to enter.&#39;&quot;
      },
      {
        q: &quot;The school requires students wear uniforms. (Missing &#39;to&#39; with require)&quot;,
        targets: [&quot;The school requires students to wear uniforms.&quot;],
        exp: &quot;&#39;Require&#39; needs &#39;to + base verb&#39;: &#39;to wear,&#39; not the bare base form.&quot;
      },
      {
        q: &quot;The scholarship enabled her study abroad. (Missing &#39;to&#39; with enable)&quot;,
        targets: [&quot;The scholarship enabled her to study abroad.&quot;],
        exp: &quot;&#39;Enable&#39; needs &#39;to + base verb&#39;: &#39;to study,&#39; not the bare base form.&quot;
      }
    ];

    function renderModule2() {
      const container = document.getElementById(&quot;module2-container&quot;);
      let html = &quot;&quot;;
      m2Data.forEach((item, index) =&gt; {
        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Incorrect Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
            &lt;div class=&quot;fib-row&quot;&gt;
              &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type the corrected sentence...&quot;&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
            &lt;div id=&quot;m2-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule2() {
      let currentScore = 0;
      m2Data.forEach((item, index) =&gt; {
        const input = document.getElementById(`m2-in-${index}`);
        const fb = document.getElementById(`m2-fb-${index}`);
        const exp = document.getElementById(`m2-exp-${index}`);

        const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
        const isMatch = item.targets.some(t =&gt; t.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase() === cleanUser);

        if (isMatch) {
          input.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          input.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.targets[0]}&quot;`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
        exp.style.display = &quot;block&quot;;
      });
      scores.m2 = currentScore;
      updateScoreboard();
    }

    // --- PART 3 DATA ---
    const m3Data = [
      { q: &quot;Which sentence correctly uses &#39;force&#39;?&quot;, opts: [&quot;The robbers forced him open the safe.&quot;, &quot;The robbers forced him opening the safe.&quot;, &quot;The robbers forced him to open the safe.&quot;, &quot;The robbers forced him opened the safe.&quot;], ans: &quot;The robbers forced him to open the safe.&quot; },
      { q: &quot;Which sentence correctly uses &#39;persuade&#39;?&quot;, opts: [&quot;I persuaded him go there.&quot;, &quot;I persuaded him to go there.&quot;, &quot;I persuaded him going there.&quot;, &quot;I persuaded him went there.&quot;], ans: &quot;I persuaded him to go there.&quot; },
      { q: &quot;Which sentence correctly uses &#39;require&#39;?&quot;, opts: [&quot;The law requires drivers carry a valid license.&quot;, &quot;The law requires drivers carrying a valid license.&quot;, &quot;The law requires drivers to carry a valid license.&quot;, &quot;The law requires drivers carried a valid license.&quot;], ans: &quot;The law requires drivers to carry a valid license.&quot; },
      { q: &quot;Which sentence correctly uses &#39;make&#39;?&quot;, opts: [&quot;The teacher made the students to rewrite the essay.&quot;, &quot;The teacher made the students rewrite the essay.&quot;, &quot;The teacher made the students rewriting the essay.&quot;, &quot;The teacher made the students rewritten the essay.&quot;], ans: &quot;The teacher made the students rewrite the essay.&quot; },
      { q: &quot;Which sentence correctly uses &#39;let&#39;?&quot;, opts: [&quot;My father let me to drive his car.&quot;, &quot;My father let me driving his car.&quot;, &quot;My father let me driven his car.&quot;, &quot;My father let me drive his car.&quot;], ans: &quot;My father let me drive his car.&quot; }
    ];

    function renderModule3() {
      const container = document.getElementById(&quot;module3-container&quot;);
      let html = &quot;&quot;;
      m3Data.forEach((item, index) =&gt; {
        let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
        item.opts.forEach(opt =&gt; {
          optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
        });

        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
            &lt;div&gt;
              &lt;select id=&quot;m3-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule3() {
      let currentScore = 0;
      m3Data.forEach((item, index) =&gt; {
        const select = document.getElementById(`m3-${index}`);
        const fb = document.getElementById(`m3-fb-${index}`);
        if (select.value === item.ans) {
          select.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          select.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
      });
      scores.m3 = currentScore;
      updateScoreboard();
    }

    // --- PART 4 DATA ---
    const m4Data = [
      {
        q: &quot;I repaired my car yesterday. (Someone repaired it for me — use &#39;had&#39;)&quot;,
        targets: [&quot;I had my car repaired yesterday.&quot;],
        exp: &quot;Passive causative: had + object (my car) + past participle (repaired) — the action was done for the subject, not by them.&quot;
      },
      {
        q: &quot;She cut her hair. (Someone cut it for her — use &#39;got&#39;)&quot;,
        targets: [&quot;She got her hair cut.&quot;],
        exp: &quot;Passive causative: got + object (her hair) + past participle (cut).&quot;
      },
      {
        q: &quot;He fixed his laptop. (Someone fixed it for him — use &#39;got&#39;)&quot;,
        targets: [&quot;He got his laptop fixed.&quot;],
        exp: &quot;Passive causative: got + object (his laptop) + past participle (fixed).&quot;
      },
      {
        q: &quot;We painted our house last year. (Someone painted it for us — use &#39;had&#39;)&quot;,
        targets: [&quot;We had our house painted last year.&quot;],
        exp: &quot;Passive causative: had + object (our house) + past participle (painted).&quot;
      },
      {
        q: &quot;They cleaned their carpet. (Someone cleaned it for them — use &#39;had&#39;)&quot;,
        targets: [&quot;They had their carpet cleaned.&quot;],
        exp: &quot;Passive causative: had + object (their carpet) + past participle (cleaned).&quot;
      }
    ];

    function renderModule4() {
      const container = document.getElementById(&quot;module4-container&quot;);
      let html = &quot;&quot;;
      m4Data.forEach((item, index) =&gt; {
        html += `
          &lt;div class=&quot;q-card&quot;&gt;
            &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
            &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Active Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
            &lt;div class=&quot;fib-row&quot;&gt;
              &lt;input type=&quot;text&quot; id=&quot;m4-in-${index}&quot; placeholder=&quot;Type the passive causative sentence...&quot;&gt;
            &lt;/div&gt;
            &lt;div id=&quot;m4-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
            &lt;div id=&quot;m4-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
          &lt;/div&gt;
        `;
      });
      container.innerHTML = html;
    }

    function checkModule4() {
      let currentScore = 0;
      m4Data.forEach((item, index) =&gt; {
        const input = document.getElementById(`m4-in-${index}`);
        const fb = document.getElementById(`m4-fb-${index}`);
        const exp = document.getElementById(`m4-exp-${index}`);

        const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
        const isMatch = item.targets.some(t =&gt; t.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase() === cleanUser);

        if (isMatch) {
          input.className = &quot;correct-input&quot;;
          fb.textContent = &quot;Correct! (+1 Mark)&quot;;
          fb.className = &quot;feedback correct show&quot;;
          currentScore += 1;
        } else {
          input.className = &quot;incorrect-input&quot;;
          fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.targets[0]}&quot;`;
          fb.className = &quot;feedback incorrect show&quot;;
        }
        exp.style.display = &quot;block&quot;;
      });
      scores.m4 = currentScore;
      updateScoreboard();
    }

    // --- PART 5 DATA ---
    const m5Answers = {
      &quot;m5-1&quot;: &quot;perform&quot;,
      &quot;m5-2&quot;: &quot;base&quot;,
      &quot;m5-3&quot;: &quot;to&quot;,
      &quot;m5-4&quot;: &quot;to&quot;,
      &quot;m5-5&quot;: &quot;past participle&quot;
    };

    function checkModule5() {
      let currentScore = 0;
      Object.keys(m5Answers).forEach(id =&gt; {
        const select = document.getElementById(id);
        if (select.value === m5Answers[id]) {
          select.className = &quot;correct-input&quot;;
          currentScore += 1;
        } else {
          select.className = &quot;incorrect-input&quot;;
        }
      });

      const fb = document.getElementById(&quot;m5-feedback&quot;);
      if (currentScore === 5) {
        fb.textContent = &quot;Outstanding! All 5 passage choices are correct (+5 Marks).&quot;;
        fb.className = &quot;feedback correct show&quot;;
      } else {
        fb.textContent = `You scored ${currentScore}/5. Review highlighted incorrect fields.`;
        fb.className = &quot;feedback incorrect show&quot;;
      }
      scores.m5 = currentScore;
      updateScoreboard();
    }

    // Initializer
    window.onload = () =&gt; {
      renderModule1();
      renderModule2();
      renderModule3();
      renderModule4();
      updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/1282413289561948966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/1282413289561948966?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1282413289561948966'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1282413289561948966'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-52-causative-verb-exercises.html' title='Chapter 52: Causative Verb Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-5797141276341922787</id><published>2026-08-09T19:17:59.604-07:00</published><updated>2026-08-09T23:09:58.085-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter Fifty-one: Clause Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Fifty-One Assessment · Clause (50 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:700px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  /* Fully Responsive Dashboard/Scoreboard */
  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap:10px;
    border:1px solid var(--line);
    border-radius:8px;
    padding:14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ 
    text-align:center; 
    padding:8px 6px; 
    background:#fff;
    border:1px solid var(--line);
    border-radius:6px;
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    min-width:0; 
  }
  .score-item.total-card{
    background: #eef5ff;
    border-color: var(--blue-soft);
  }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(13px,2.8vw,16px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:9px;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:4px;
    line-height:1.2;
  }
  .progress-outer{
    width:100%;
    height:8px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:14px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:15px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .gap-fill-text select{ display:inline-block; margin:4px; }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:8px; }
    .score-item.total-card{ grid-column: 1 / -1; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:8px 10px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Fifty-One Assessment&lt;/div&gt;
    &lt;h1&gt;The &lt;em&gt;Clause&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 50-mark interactive evaluation testing recognition of independent, dependent, and coordinate clauses; the five functions of noun clauses; the forms of relative pronouns in adjective clauses; and correct tense usage in adverbial clauses of time.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/10&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 · Concept MCQs&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/10&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 · Identify Clause&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/10&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 · Connectives&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m4&quot;&gt;0/10&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 4 · Rewrite&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m5&quot;&gt;0/10&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 5 · Gap-Fill&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item total-card&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 18px;&quot;&gt;0/50&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Concept MCQs &lt;span class=&quot;count&quot;&gt;[10m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Identify Clause &lt;span class=&quot;count&quot;&gt;[10m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Connectives &lt;span class=&quot;count&quot;&gt;[10m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m4&quot;&gt;Part 4: Rewrite Correctly &lt;span class=&quot;count&quot;&gt;[10m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m5&quot;&gt;Part 5: Rules Synthesis &lt;span class=&quot;count&quot;&gt;[10m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1 --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (10 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct answer about clauses, their types, and their behaviour (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (10 Marks)&lt;/div&gt;
    &lt;h2&gt;Identify the Clause Type&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;For each sentence, identify whether the clause is a noun, adjective, or adverbial clause (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (10 Marks)&lt;/div&gt;
    &lt;h2&gt;Connectives, Relative Pronouns &amp;amp; Noun Clause Function&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Choose the correct connective, relative pronoun/adverb, or function of the noun clause (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 4 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m4&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 4 (10 Marks)&lt;/div&gt;
    &lt;h2&gt;Rewrite the Sentence Correctly&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence wrongly uses the future or future perfect tense inside an adverbial clause of time. Rewrite it correctly (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module4-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule4()&quot;&gt;Verify Part 4&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 5 --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m5&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 5 (10 Marks)&lt;/div&gt;
    &lt;h2&gt;Rules Synthesis Gap-Fill&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct word to complete each part of the rule summary (1 mark each).&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-text gap-fill-text&quot; id=&quot;module5-container&quot;&gt;
        A clause is a group of words that contains a finite verb. A clause that expresses complete sense and can stand alone is called an
        &lt;select id=&quot;m5-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;independent&quot;&gt;independent&lt;/option&gt;&lt;option value=&quot;dependent&quot;&gt;dependent&lt;/option&gt;&lt;option value=&quot;coordinate&quot;&gt;coordinate&lt;/option&gt;&lt;/select&gt;
        clause, also known as the principal clause. A clause that cannot express a complete sense of its own is called a
        &lt;select id=&quot;m5-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;dependent&quot;&gt;dependent&lt;/option&gt;&lt;option value=&quot;independent&quot;&gt;independent&lt;/option&gt;&lt;option value=&quot;finite&quot;&gt;finite&lt;/option&gt;&lt;/select&gt;
        clause. When two independent clauses are joined by a coordinating conjunction such as &#39;and&#39; or &#39;but&#39;, the result is called a
        &lt;select id=&quot;m5-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;coordinate&quot;&gt;coordinate&lt;/option&gt;&lt;option value=&quot;subordinate&quot;&gt;subordinate&lt;/option&gt;&lt;option value=&quot;relative&quot;&gt;relative&lt;/option&gt;&lt;/select&gt;
        clause. A noun clause behaves like a
        &lt;select id=&quot;m5-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;noun&quot;&gt;noun&lt;/option&gt;&lt;option value=&quot;verb&quot;&gt;verb&lt;/option&gt;&lt;option value=&quot;preposition&quot;&gt;preposition&lt;/option&gt;&lt;/select&gt;
        in a sentence and can function as a subject, an object, a complement, an object of a preposition, or in
        &lt;select id=&quot;m5-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;apposition&quot;&gt;apposition&lt;/option&gt;&lt;option value=&quot;isolation&quot;&gt;isolation&lt;/option&gt;&lt;option value=&quot;conjunction&quot;&gt;conjunction&lt;/option&gt;&lt;/select&gt;.
        An adjective clause always sits after the
        &lt;select id=&quot;m5-6&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;noun&quot;&gt;noun&lt;/option&gt;&lt;option value=&quot;verb&quot;&gt;verb&lt;/option&gt;&lt;option value=&quot;adverb&quot;&gt;adverb&lt;/option&gt;&lt;/select&gt;
        it modifies, called its antecedent, and uses relative pronouns such as who, which, and that. An adverbial clause behaves like an
        &lt;select id=&quot;m5-7&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;adverb&quot;&gt;adverb&lt;/option&gt;&lt;option value=&quot;adjective&quot;&gt;adjective&lt;/option&gt;&lt;option value=&quot;pronoun&quot;&gt;pronoun&lt;/option&gt;&lt;/select&gt;
        and can express time, place, reason, manner, or condition. When an adverbial clause of time comes before the principal clause, a
        &lt;select id=&quot;m5-8&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;comma&quot;&gt;comma&lt;/option&gt;&lt;option value=&quot;semicolon&quot;&gt;semicolon&lt;/option&gt;&lt;option value=&quot;colon&quot;&gt;colon&lt;/option&gt;&lt;/select&gt;
        must separate them. In adverbial clauses of time that refer to future actions, we avoid the future tense in the subordinate clause and use the
        &lt;select id=&quot;m5-9&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;present&quot;&gt;present&lt;/option&gt;&lt;option value=&quot;past&quot;&gt;past&lt;/option&gt;&lt;option value=&quot;future&quot;&gt;future&lt;/option&gt;&lt;/select&gt;
        tense instead. Likewise, instead of the future perfect tense, we use the
        &lt;select id=&quot;m5-10&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;present perfect&quot;&gt;present perfect&lt;/option&gt;&lt;option value=&quot;past perfect&quot;&gt;past perfect&lt;/option&gt;&lt;option value=&quot;future perfect&quot;&gt;future perfect&lt;/option&gt;&lt;/select&gt;
        tense in such clauses.
      &lt;/div&gt;

      &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule5()&quot;&gt;Verify Part 5&lt;/button&gt;
      &lt;div id=&quot;m5-feedback&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Fifty-One Assessment · Clause Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
      });
    });

    // Score State
    const scores = { m1: 0, m2: 0, m3: 0, m4: 0, m5: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/10&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/10&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/10&#39;;
      document.getElementById(&#39;score-m4&#39;).textContent = scores.m4 + &#39;/10&#39;;
      document.getElementById(&#39;score-m5&#39;).textContent = scores.m5 + &#39;/10&#39;;

      const total = scores.m1 + scores.m2 + scores.m3 + scores.m4 + scores.m5;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/50&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 50) * 100) + &#39;%&#39;;
    }

    // --- PART 1: CONCEPT MCQS ---
    const m1Data = [
      { q: &quot;What must every clause contain?&quot;, opts: [&quot;A finite verb&quot;, &quot;A preposition&quot;, &quot;An adjective&quot;, &quot;A conjunction only&quot;], ans: &quot;A finite verb&quot; },
      { q: &quot;Which clause can stand alone as a complete sentence?&quot;, opts: [&quot;Dependent clause&quot;, &quot;Independent clause&quot;, &quot;Relative clause&quot;, &quot;Noun clause only&quot;], ans: &quot;Independent clause&quot; },
      { q: &quot;Which clause cannot express complete sense on its own?&quot;, opts: [&quot;Independent clause&quot;, &quot;Principal clause&quot;, &quot;Dependent clause&quot;, &quot;Coordinate clause&quot;], ans: &quot;Dependent clause&quot; },
      { q: &quot;A coordinate clause is formed when two independent clauses are joined by a...&quot;, opts: [&quot;Relative pronoun&quot;, &quot;Coordinating conjunction&quot;, &quot;Relative adverb&quot;, &quot;Preposition&quot;], ans: &quot;Coordinating conjunction&quot; },
      { q: &quot;Which type of clause behaves like a noun in a sentence?&quot;, opts: [&quot;Adjective clause&quot;, &quot;Adverbial clause&quot;, &quot;Noun clause&quot;, &quot;Coordinate clause&quot;], ans: &quot;Noun clause&quot; },
      { q: &quot;Which type of clause always sits after the noun it modifies (its antecedent)?&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;, &quot;Coordinate clause&quot;], ans: &quot;Adjective clause&quot; },
      { q: &quot;Which type of clause modifies parts of speech other than nouns and pronouns?&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;, &quot;Independent clause&quot;], ans: &quot;Adverbial clause&quot; },
      { q: &quot;In the structure &#39;noun clause + be verb + principal clause&#39;, the noun clause functions as the...&quot;, opts: [&quot;Object of a preposition&quot;, &quot;Subject&quot;, &quot;Apposition&quot;, &quot;Objective complement&quot;], ans: &quot;Subject&quot; },
      { q: &quot;A relative pronoun in an adjective clause is often omitted when it works as the...&quot;, opts: [&quot;Subject of the adjective clause&quot;, &quot;Object of a transitive verb in the clause&quot;, &quot;Possessive form&quot;, &quot;Antecedent&quot;], ans: &quot;Object of a transitive verb in the clause&quot; },
      { q: &quot;In adverbial clauses of time, which tense is used instead of the future perfect tense?&quot;, opts: [&quot;Simple past&quot;, &quot;Present perfect&quot;, &quot;Past perfect&quot;, &quot;Simple present&quot;], ans: &quot;Present perfect&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 10 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: IDENTIFY THE CLAUSE TYPE ---
    const m2Data = [
      { q: &quot;That he is honest is well known.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Noun clause&quot; },
      { q: &quot;I know that he is honest.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Noun clause&quot; },
      { q: &quot;The man who helped us is my uncle.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Adjective clause&quot; },
      { q: &quot;This is the house where I was born.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Adjective clause&quot; },
      { q: &quot;We will leave when the rain stops.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Adverbial clause&quot; },
      { q: &quot;He succeeded because he worked hard.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Adverbial clause&quot; },
      { q: &quot;She spoke as if she knew everything.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Adverbial clause&quot; },
      { q: &quot;Wherever you go, I will follow you.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Adverbial clause&quot; },
      { q: &quot;The truth is that he lied to us.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Noun clause&quot; },
      { q: &quot;The belief that he is innocent is spreading.&quot;, opts: [&quot;Noun clause&quot;, &quot;Adjective clause&quot;, &quot;Adverbial clause&quot;], ans: &quot;Noun clause&quot; }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 10 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&quot;${item.q}&quot;&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m2-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m2-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: CONNECTIVES &amp; FUNCTION ---
    const m3Data = [
      { q: &quot;The man ___ helped us is my uncle.&quot;, opts: [&quot;who&quot;, &quot;whom&quot;, &quot;whose&quot;, &quot;which&quot;], ans: &quot;who&quot; },
      { q: &quot;The person ___ car was stolen is my neighbor.&quot;, opts: [&quot;who&quot;, &quot;whom&quot;, &quot;whose&quot;, &quot;which&quot;], ans: &quot;whose&quot; },
      { q: &quot;This is the book ___ I bought last year.&quot;, opts: [&quot;who&quot;, &quot;whom&quot;, &quot;whose&quot;, &quot;which&quot;], ans: &quot;which&quot; },
      { q: &quot;The girl ___ we met yesterday is a doctor.&quot;, opts: [&quot;who&quot;, &quot;whom&quot;, &quot;whose&quot;, &quot;which&quot;], ans: &quot;whom&quot; },
      { q: &quot;That is the reason ___ he resigned.&quot;, opts: [&quot;why&quot;, &quot;where&quot;, &quot;when&quot;, &quot;how&quot;], ans: &quot;why&quot; },
      { q: &quot;This is the place ___ I was born.&quot;, opts: [&quot;why&quot;, &quot;where&quot;, &quot;when&quot;, &quot;how&quot;], ans: &quot;where&quot; },
      { q: &quot;I remember the day ___ we first met.&quot;, opts: [&quot;why&quot;, &quot;where&quot;, &quot;when&quot;, &quot;how&quot;], ans: &quot;when&quot; },
      { q: &quot;Tell me ___ you managed to finish it so fast.&quot;, opts: [&quot;why&quot;, &quot;where&quot;, &quot;when&quot;, &quot;how&quot;], ans: &quot;how&quot; },
      { q: &quot;&#39;What he said surprised everyone.&#39; — Here the noun clause &#39;What he said&#39; functions as the...&quot;, opts: [&quot;Subject&quot;, &quot;Object of a verb&quot;, &quot;Object of a preposition&quot;, &quot;Apposition&quot;], ans: &quot;Subject&quot; },
      { q: &quot;&#39;I don&#39;t know where she lives.&#39; — Here the noun clause &#39;where she lives&#39; functions as the...&quot;, opts: [&quot;Subject&quot;, &quot;Object of a verb&quot;, &quot;Object of a preposition&quot;, &quot;Apposition&quot;], ans: &quot;Object of a verb&quot; }
    ];

    function renderModule3() {
        const container = document.getElementById(&quot;module3-container&quot;);
        m3Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 10 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m3-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule3() {
        let currentScore = 0;
        m3Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m3-${index}`);
            const fb = document.getElementById(`m3-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // --- PART 4: REWRITE CORRECTLY ---
    const m4Data = [
      {
        q: &quot;Rohit will talk to me as soon as he will return.&quot;,
        targets: [&quot;Rohit will talk to me as soon as he returns.&quot;],
        exp: &quot;In an adverbial clause of time referring to the future, the subordinate clause uses the simple present, not &#39;will return.&#39;&quot;
      },
      {
        q: &quot;I will return your book on Monday when I will have read it.&quot;,
        targets: [&quot;I will return your book on Monday when I have read it.&quot;],
        exp: &quot;Instead of the future perfect (&#39;will have read&#39;), the adverbial clause of time uses the present perfect: &#39;have read.&#39;&quot;
      },
      {
        q: &quot;She will call you when she will arrive at the station.&quot;,
        targets: [&quot;She will call you when she arrives at the station.&quot;],
        exp: &quot;The time clause takes the simple present (&#39;arrives&#39;), while the future tense stays only in the principal clause.&quot;
      },
      {
        q: &quot;We will start the meeting after he will finish his presentation.&quot;,
        targets: [&quot;We will start the meeting after he finishes his presentation.&quot;],
        exp: &quot;&#39;After&#39; introduces a time clause, so the verb must be simple present (&#39;finishes&#39;), not future.&quot;
      },
      {
        q: &quot;He will visit us once he will complete the project.&quot;,
        targets: [&quot;He will visit us once he completes the project.&quot;],
        exp: &quot;&#39;Once&#39; introduces a time clause referring to the future, so &#39;completes&#39; (simple present) replaces &#39;will complete.&#39;&quot;
      },
      {
        q: &quot;They will leave before the sun will rise.&quot;,
        targets: [&quot;They will leave before the sun rises.&quot;],
        exp: &quot;&#39;Before&#39; introducing a time clause takes the simple present (&#39;rises&#39;), not the future tense.&quot;
      },
      {
        q: &quot;I shall inform you as soon as I will hear from him.&quot;,
        targets: [&quot;I shall inform you as soon as I hear from him.&quot;],
        exp: &quot;&#39;As soon as&#39; introduces a time clause, so &#39;hear&#39; (simple present) is correct, not &#39;will hear.&#39;&quot;
      },
      {
        q: &quot;She will thank you when she will have finished the task.&quot;,
        targets: [&quot;She will thank you when she has finished the task.&quot;],
        exp: &quot;The future perfect &#39;will have finished&#39; is replaced by the present perfect &#39;has finished&#39; in the time clause.&quot;
      },
      {
        q: &quot;We will begin until he will arrive.&quot;,
        targets: [&quot;We will begin until he arrives.&quot;],
        exp: &quot;&#39;Until&#39; introducing a time clause takes the simple present (&#39;arrives&#39;), not the future tense.&quot;
      },
      {
        q: &quot;He will not leave till he will get his answer.&quot;,
        targets: [&quot;He will not leave till he gets his answer.&quot;],
        exp: &quot;&#39;Till&#39; introducing a time clause takes the simple present (&#39;gets&#39;), not the future tense.&quot;
      }
    ];

    function renderModule4() {
        const container = document.getElementById(&quot;module4-container&quot;);
        m4Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 10 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Incorrect Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m4-in-${index}&quot; placeholder=&quot;Type the corrected sentence with the proper tense...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m4-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m4-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule4() {
        let currentScore = 0;
        m4Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m4-in-${index}`);
            const fb = document.getElementById(`m4-fb-${index}`);
            const exp = document.getElementById(`m4-exp-${index}`);

            const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
            const isMatch = item.targets.some(t =&gt; t.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase() === cleanUser);

            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.targets[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores.m4 = currentScore;
        updateScoreboard();
    }

    // --- PART 5: GAP-FILL PASSAGE ---
    const m5Answers = {
        &quot;m5-1&quot;: &quot;independent&quot;,
        &quot;m5-2&quot;: &quot;dependent&quot;,
        &quot;m5-3&quot;: &quot;coordinate&quot;,
        &quot;m5-4&quot;: &quot;noun&quot;,
        &quot;m5-5&quot;: &quot;apposition&quot;,
        &quot;m5-6&quot;: &quot;noun&quot;,
        &quot;m5-7&quot;: &quot;adverb&quot;,
        &quot;m5-8&quot;: &quot;comma&quot;,
        &quot;m5-9&quot;: &quot;present&quot;,
        &quot;m5-10&quot;: &quot;present perfect&quot;
    };

    function checkModule5() {
        let currentScore = 0;
        const keys = Object.keys(m5Answers);
        keys.forEach(id =&gt; {
            const select = document.getElementById(id);
            if (select.value === m5Answers[id]) {
                select.className = &quot;correct-input&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
            }
        });
        
        scores.m5 = currentScore;
        updateScoreboard();

        const fb = document.getElementById(&quot;m5-feedback&quot;);
        fb.textContent = `You scored ${currentScore} out of 10 in Part 5.`;
        fb.className = currentScore === 10 ? &quot;feedback correct show&quot; : &quot;feedback incorrect show&quot;;
    }

    // Initialize all modules on DOM load
    window.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; {
        renderModule1();
        renderModule2();
        renderModule3();
        renderModule4();
        updateScoreboard();
    });
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/5797141276341922787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/5797141276341922787?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/5797141276341922787'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/5797141276341922787'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-fifty-one-clause-exercises.html' title='Chapter Fifty-one: Clause Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-6386584984915163799</id><published>2026-08-09T19:06:39.807-07:00</published><updated>2026-08-09T23:12:40.486-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 50: Mood Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Fifty Assessment · Mood (20 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:700px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  /* UPDATED: Fully responsive Dashboard grid layout */
  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap:10px;
    border:1px solid var(--line);
    border-radius:8px;
    padding:14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ 
    text-align:center; 
    padding:8px 4px; 
    min-width:0; 
    background:#fff;
    border:1px solid var(--line);
    border-radius:6px;
  }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(14px,3.5vw,16px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:9px;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:4px;
    line-height:1.3;
  }
  .score-total-card {
    grid-column: 1 / -1;
    background: rgba(13, 110, 253, 0.05);
    border-color: rgba(13, 110, 253, 0.2);
    padding: 10px 4px;
  }
  .score-total-card .num {
    font-size: clamp(18px, 4vw, 22px);
  }

  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select{ max-width:100%; }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:8px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:9px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Fifty Assessment&lt;/div&gt;
    &lt;h1&gt;The Grammar of &lt;em&gt;Mood&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 20-mark interactive evaluation testing recognition and correct use of the three moods — indicative, imperative, and subjunctive — including subjunctive verb forms after wishes, hypotheticals, demands, and suggestions.&lt;/p&gt;

    &lt;!-- UPDATED: Scoreboard Structure --&gt;
    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (Concept MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Rewrite Correctly)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Spot the Fix)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m4&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 4 (Gap-Fill)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item score-total-card&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot;&gt;0/20&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Concept MCQs &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Rewrite Correctly &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Spot the Fix &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m4&quot;&gt;Part 4: Rules Synthesis &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Concept MCQs --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct answer about how mood works in English grammar (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Rewrite Correctly --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rewrite the Sentence in Correct Mood&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence below has an incorrect mood form. Rewrite it using the correct indicative, imperative, or subjunctive form (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Spot the Fix --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot the Correctly Fixed Sentence&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the option that uses the correct mood form (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 4: Rules Synthesis Gap-Fill Passage --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m4&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 4 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rules Synthesis Gap-Fill&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct word to complete each part of the rule summary (1 mark each).&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-text&quot; id=&quot;module4-container&quot;&gt;
        Mood is the form of a verb that shows the speaker&#39;s
        &lt;select id=&quot;m4-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;attitude&quot;&gt;attitude&lt;/option&gt;&lt;option value=&quot;tense&quot;&gt;tense&lt;/option&gt;&lt;option value=&quot;spelling&quot;&gt;spelling&lt;/option&gt;&lt;/select&gt;
        toward an action or state. English has three moods: indicative, imperative, and
        &lt;select id=&quot;m4-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;subjunctive&quot;&gt;subjunctive&lt;/option&gt;&lt;option value=&quot;passive&quot;&gt;passive&lt;/option&gt;&lt;option value=&quot;perfect&quot;&gt;perfect&lt;/option&gt;&lt;/select&gt;.
        The indicative mood is used to state facts, express opinions, or ask
        &lt;select id=&quot;m4-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;questions&quot;&gt;questions&lt;/option&gt;&lt;option value=&quot;commands&quot;&gt;commands&lt;/option&gt;&lt;option value=&quot;wishes&quot;&gt;wishes&lt;/option&gt;&lt;/select&gt;.
        The imperative mood gives commands, advice, or requests, and is only available in the present tense and the
        &lt;select id=&quot;m4-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;second&quot;&gt;second&lt;/option&gt;&lt;option value=&quot;first&quot;&gt;first&lt;/option&gt;&lt;option value=&quot;third&quot;&gt;third&lt;/option&gt;&lt;/select&gt;
        person, although the subject is often omitted. After trigger verbs and expressions such as suggest, recommend, insist, demand, and essential, the subjunctive mood requires the
        &lt;select id=&quot;m4-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;base&quot;&gt;base&lt;/option&gt;&lt;option value=&quot;past&quot;&gt;past&lt;/option&gt;&lt;option value=&quot;continuous&quot;&gt;continuous&lt;/option&gt;&lt;/select&gt;
        form of the verb — for example, &#39;I insist that he attend,&#39; not &#39;attends.&#39;
      &lt;/div&gt;

      &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule4()&quot;&gt;Verify Part 4&lt;/button&gt;
      &lt;div id=&quot;m4-feedback&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Fifty Assessment · Mood Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
      });
    });

    // Score State (20 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0, m4: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/5&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/5&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/5&#39;;
      document.getElementById(&#39;score-m4&#39;).textContent = scores.m4 + &#39;/5&#39;;

      const total = scores.m1 + scores.m2 + scores.m3 + scores.m4;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/20&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 20) * 100) + &#39;%&#39;;
    }

    // --- PART 1: CONCEPT MCQS ---
    const m1Data = [
      { q: &quot;What does the mood of a verb indicate?&quot;, opts: [&quot;The speaker&#39;s attitude toward an action or state&quot;, &quot;The tense of the sentence&quot;, &quot;The number of syllables in the verb&quot;, &quot;Whether the sentence is active or passive&quot;], ans: &quot;The speaker&#39;s attitude toward an action or state&quot; },
      { q: &quot;How many moods does English grammar have, according to this chapter?&quot;, opts: [&quot;Two&quot;, &quot;Three&quot;, &quot;Four&quot;, &quot;Five&quot;], ans: &quot;Three&quot; },
      { q: &quot;Which mood is used to state facts, express opinions, or ask questions?&quot;, opts: [&quot;Imperative&quot;, &quot;Subjunctive&quot;, &quot;Indicative&quot;, &quot;Conditional&quot;], ans: &quot;Indicative&quot; },
      { q: &quot;Which mood is only available in the present tense and second person, with the subject often omitted?&quot;, opts: [&quot;Indicative&quot;, &quot;Imperative&quot;, &quot;Subjunctive&quot;, &quot;Perfect&quot;], ans: &quot;Imperative&quot; },
      { q: &quot;Which mood expresses wishes, hypothetical situations, demands, or suggestions?&quot;, opts: [&quot;Indicative&quot;, &quot;Imperative&quot;, &quot;Subjunctive&quot;, &quot;Passive&quot;], ans: &quot;Subjunctive&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: REWRITE CORRECTLY ---
    const m2Data = [
      {
        q: &quot;If I was a king, I would help the poor. (Hypothetical — wrong subjunctive form)&quot;,
        targets: [&quot;If I were a king, I would help the poor.&quot;],
        exp: &quot;In a hypothetical (subjunctive) condition, &#39;was&#39; is replaced by &#39;were&#39; for all persons, including &#39;I&#39;.&quot;
      },
      {
        q: &quot;I suggest that he goes there. (Suggestion — wrong verb form)&quot;,
        targets: [&quot;I suggest that he go there.&quot;],
        exp: &quot;After &#39;suggest,&#39; the subjunctive requires the base form of the verb: &#39;go,&#39; not &#39;goes.&#39;&quot;
      },
      {
        q: &quot;The teacher insisted that she attends class. (Demand — wrong verb form)&quot;,
        targets: [&quot;The teacher insisted that she attend class.&quot;],
        exp: &quot;After &#39;insisted,&#39; the subjunctive requires the base form: &#39;attend,&#39; not &#39;attends.&#39;&quot;
      },
      {
        q: &quot;It is important that every student is present. (Necessity — wrong verb form)&quot;,
        targets: [&quot;It is important that every student be present.&quot;],
        exp: &quot;After the expression &#39;it is important that,&#39; the subjunctive uses &#39;be,&#39; not &#39;is.&#39;&quot;
      },
      {
        q: &quot;The doctor advised that he takes rest. (Advice — wrong verb form)&quot;,
        targets: [&quot;The doctor advised that he take rest.&quot;],
        exp: &quot;After &#39;advised that,&#39; the subjunctive requires the base form: &#39;take,&#39; not &#39;takes.&#39;&quot;
      }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Incorrect Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type the corrected sentence with the proper mood form...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m2-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m2-in-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);
            const exp = document.getElementById(`m2-exp-${index}`);

            const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
            const isMatch = item.targets.some(t =&gt; t.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase() === cleanUser);

            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.targets[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: SPOT THE FIX ---
    const m3Data = [
      { q: &quot;Which sentence correctly uses the subjunctive in a hypothetical condition?&quot;, opts: [&quot;If she was here, she could help us.&quot;, &quot;If she were here, she could help us.&quot;, &quot;If she is here, she could help us.&quot;, &quot;If she will be here, she could help us.&quot;], ans: &quot;If she were here, she could help us.&quot; },
      { q: &quot;Which sentence correctly follows &#39;recommend&#39; with the subjunctive base form?&quot;, opts: [&quot;I recommend that he studies harder.&quot;, &quot;I recommend that he studied harder.&quot;, &quot;I recommend that he study harder.&quot;, &quot;I recommend that he studying harder.&quot;], ans: &quot;I recommend that he study harder.&quot; },
      { q: &quot;Which sentence correctly follows &#39;requested&#39; with the subjunctive base form?&quot;, opts: [&quot;The principal requested that every student submits the assignment.&quot;, &quot;The principal requested that every student submitted the assignment.&quot;, &quot;The principal requested that every student submitting the assignment.&quot;, &quot;The principal requested that every student submit the assignment.&quot;], ans: &quot;The principal requested that every student submit the assignment.&quot; },
      { q: &quot;Which sentence correctly follows &#39;proposed&#39; with the subjunctive base form?&quot;, opts: [&quot;They proposed that the meeting starts at ten.&quot;, &quot;They proposed that the meeting start at ten.&quot;, &quot;They proposed that the meeting started at ten.&quot;, &quot;They proposed that the meeting starting at ten.&quot;], ans: &quot;They proposed that the meeting start at ten.&quot; },
      { q: &quot;Which sentence correctly follows &#39;it is essential that&#39; with the subjunctive base form?&quot;, opts: [&quot;It is essential that she arrives on time.&quot;, &quot;It is essential that she arrived on time.&quot;, &quot;It is essential that she arrive on time.&quot;, &quot;It is essential that she arriving on time.&quot;], ans: &quot;It is essential that she arrive on time.&quot; }
    ];

    function renderModule3() {
        const container = document.getElementById(&quot;module3-container&quot;);
        m3Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m3-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule3() {
        let currentScore = 0;
        m3Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m3-${index}`);
            const fb = document.getElementById(`m3-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // --- PART 4: GAP-FILL PASSAGE ---
    const m4Answers = {
        &quot;m4-1&quot;: &quot;attitude&quot;,
        &quot;m4-2&quot;: &quot;subjunctive&quot;,
        &quot;m4-3&quot;: &quot;questions&quot;,
        &quot;m4-4&quot;: &quot;second&quot;,
        &quot;m4-5&quot;: &quot;base&quot;
    };

    function checkModule4() {
        let currentScore = 0;
        Object.keys(m4Answers).forEach(id =&gt; {
            const select = document.getElementById(id);
            if (select.value === m4Answers[id]) {
                select.className = &quot;correct-input&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
            }
        });

        const fb = document.getElementById(&quot;m4-feedback&quot;);
        if (currentScore === 5) {
            fb.textContent = &quot;Outstanding! All 5 passage choices are correct (+5 Marks).&quot;;
            fb.className = &quot;feedback correct show&quot;;
        } else {
            fb.textContent = `You scored ${currentScore}/5. Review highlighted incorrect fields.`;
            fb.className = &quot;feedback incorrect show&quot;;
        }
        scores.m4 = currentScore;
        updateScoreboard();
    }

    // Initialization
    window.onload = () =&gt; {
        renderModule1();
        renderModule2();
        renderModule3();
        updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/6386584984915163799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/6386584984915163799?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/6386584984915163799'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/6386584984915163799'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-50-mood-exercises.html' title='Chapter 50: Mood Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-107722069633592046</id><published>2026-08-09T10:23:23.250-07:00</published><updated>2026-08-09T18:41:08.718-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 49: Active and Passive Voice Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty-Nine Assessment · Active &amp;amp; Passive Voice (70 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:700px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(7, 1fr);
    gap:8px;
    border:1px solid var(--line);
    border-radius:6px;
    padding:12px 14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ text-align:center; padding:4px; min-width:0; }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(10px,2.4vw,12px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:8px;
    letter-spacing:.01em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:2px;
    line-height:1.25;
  }
  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .q-text .active-line{ color:var(--ink-dim); font-style:italic; display:block; margin-bottom:4px; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select{ max-width:100%; }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
    .scoreboard{ grid-template-columns: repeat(4, 1fr); }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(3, 1fr); gap:10px 6px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:9px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty-Nine Assessment&lt;/div&gt;
    &lt;h1&gt;Active &amp;amp; &lt;em&gt;Passive&lt;/em&gt; Voice&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 70-mark interactive evaluation covering all twelve tenses, modal verbs and perfect modals, passive prepositions, quasi-passive verbs, double-object sentences, interrogative transformations, and imperative &amp;amp; optative sentences.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot; id=&quot;scoreboard&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot; id=&quot;tabs-wrap&quot;&gt;&lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot; id=&quot;panels-wrap&quot;&gt;&lt;/div&gt;

&lt;footer&gt;Chapter Forty-Nine Assessment · Active &amp;amp; Passive Voice Module&lt;/footer&gt;

&lt;script&gt;
    // ============ MODULE DEFINITIONS ============
    // Parts 1-13: auto-rendered MCQ / Fill-in-the-blank modules (5 marks each = 65)
    const modules = [
      {
        id: &quot;m1&quot;, label: &quot;Simple Tenses&quot;, tabLabel: &quot;Part 1: Simple Present &amp; Past&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct passive form of each simple present / simple past active sentence (1 mark each).&quot;,
        data: [
          { q: &quot;I write a letter.&quot;, opts: [&quot;A letter is written by me.&quot;, &quot;A letter was written by me.&quot;, &quot;A letter is being written by me.&quot;, &quot;A letter has been written by me.&quot;], ans: &quot;A letter is written by me.&quot; },
          { q: &quot;The boy kicked the ball.&quot;, opts: [&quot;The ball was kicked by the boy.&quot;, &quot;The ball is kicked by the boy.&quot;, &quot;The ball has been kicked by the boy.&quot;, &quot;The ball was being kicked by the boy.&quot;], ans: &quot;The ball was kicked by the boy.&quot; },
          { q: &quot;She writes a letter every day.&quot;, opts: [&quot;A letter is written by her every day.&quot;, &quot;A letter was written by her every day.&quot;, &quot;A letter is being written by her every day.&quot;, &quot;A letter has been written by her every day.&quot;], ans: &quot;A letter is written by her every day.&quot; },
          { q: &quot;They played football yesterday.&quot;, opts: [&quot;Football was played by them yesterday.&quot;, &quot;Football is played by them yesterday.&quot;, &quot;Football has been played by them yesterday.&quot;, &quot;Football was being played by them yesterday.&quot;], ans: &quot;Football was played by them yesterday.&quot; },
          { q: &quot;He teaches English.&quot;, opts: [&quot;English is taught by him.&quot;, &quot;English was taught by him.&quot;, &quot;English is being taught by him.&quot;, &quot;English has been taught by him.&quot;], ans: &quot;English is taught by him.&quot; }
        ]
      },
      {
        id: &quot;m2&quot;, label: &quot;Continuous&quot;, tabLabel: &quot;Part 2: Present &amp; Past Continuous&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct passive form of each continuous-tense active sentence (1 mark each).&quot;,
        data: [
          { q: &quot;I am writing a letter.&quot;, opts: [&quot;A letter is being written by me.&quot;, &quot;A letter was being written by me.&quot;, &quot;A letter is written by me.&quot;, &quot;A letter has been written by me.&quot;], ans: &quot;A letter is being written by me.&quot; },
          { q: &quot;She was writing a book.&quot;, opts: [&quot;A book was being written by her.&quot;, &quot;A book is being written by her.&quot;, &quot;A book was written by her.&quot;, &quot;A book has been written by her.&quot;], ans: &quot;A book was being written by her.&quot; },
          { q: &quot;They are playing football.&quot;, opts: [&quot;Football is being played by them.&quot;, &quot;Football was being played by them.&quot;, &quot;Football is played by them.&quot;, &quot;Football has been played by them.&quot;], ans: &quot;Football is being played by them.&quot; },
          { q: &quot;He was reading a novel.&quot;, opts: [&quot;A novel was being read by him.&quot;, &quot;A novel is being read by him.&quot;, &quot;A novel was read by him.&quot;, &quot;A novel has been read by him.&quot;], ans: &quot;A novel was being read by him.&quot; },
          { q: &quot;We are doing our homework.&quot;, opts: [&quot;Our homework is being done by us.&quot;, &quot;Our homework was being done by us.&quot;, &quot;Our homework is done by us.&quot;, &quot;Our homework has been done by us.&quot;], ans: &quot;Our homework is being done by us.&quot; }
        ]
      },
      {
        id: &quot;m3&quot;, label: &quot;Perfect Tenses&quot;, tabLabel: &quot;Part 3: Perfect Tenses&quot;, type: &quot;fib&quot;,
        hint: &quot;Type only the missing verb phrase (be verb + past participle) to complete the passive sentence (1 mark each).&quot;,
        data: [
          { q: &quot;I have written a letter. → A letter ___ by me.&quot;, target: &quot;has been written&quot;, exp: &quot;Present perfect passive: have/has been + V3.&quot; },
          { q: &quot;They had played football. → Football ___ by them.&quot;, target: &quot;had been played&quot;, exp: &quot;Past perfect passive: had been + V3.&quot; },
          { q: &quot;She has finished her work. → Her work ___ by her.&quot;, target: &quot;has been finished&quot;, exp: &quot;Present perfect passive: have/has been + V3.&quot; },
          { q: &quot;He had broken the glass. → The glass ___ by him.&quot;, target: &quot;had been broken&quot;, exp: &quot;Past perfect passive: had been + V3.&quot; },
          { q: &quot;We have done the job. → The job ___ by us.&quot;, target: &quot;has been done&quot;, exp: &quot;Present perfect passive: have/has been + V3.&quot; }
        ]
      },
      {
        id: &quot;m4&quot;, label: &quot;Perfect Continuous&quot;, tabLabel: &quot;Part 4: Perfect Continuous Tenses&quot;, type: &quot;fib&quot;,
        hint: &quot;Type only the missing verb phrase using the rare but structurally correct &#39;been being&#39; passive pattern (1 mark each).&quot;,
        data: [
          { q: &quot;I have been driving a car. → A car ___ by me.&quot;, target: &quot;has been being driven&quot;, exp: &quot;Present perfect continuous passive: has/have been being + V3.&quot; },
          { q: &quot;She had been writing a novel. → A novel ___ by her.&quot;, target: &quot;had been being written&quot;, exp: &quot;Past perfect continuous passive: had been being + V3.&quot; },
          { q: &quot;He has been reading the book. → The book ___ by him.&quot;, target: &quot;has been being read&quot;, exp: &quot;Present perfect continuous passive: has/have been being + V3.&quot; },
          { q: &quot;They had been building the house. → The house ___ by them.&quot;, target: &quot;had been being built&quot;, exp: &quot;Past perfect continuous passive: had been being + V3.&quot; },
          { q: &quot;We have been solving the problem. → The problem ___ by us.&quot;, target: &quot;has been being solved&quot;, exp: &quot;Present perfect continuous passive: has/have been being + V3.&quot; }
        ]
      },
      {
        id: &quot;m5&quot;, label: &quot;Future Tenses&quot;, tabLabel: &quot;Part 5: Future Tenses&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct passive form for each future-tense active sentence (1 mark each).&quot;,
        data: [
          { q: &quot;I will write a letter.&quot;, opts: [&quot;A letter will be written by me.&quot;, &quot;A letter will have been written by me.&quot;, &quot;A letter will be being written by me.&quot;, &quot;A letter is written by me.&quot;], ans: &quot;A letter will be written by me.&quot; },
          { q: &quot;She will be reading a book.&quot;, opts: [&quot;A book will be being read by her.&quot;, &quot;A book will be read by her.&quot;, &quot;A book will have been read by her.&quot;, &quot;A book is being read by her.&quot;], ans: &quot;A book will be being read by her.&quot; },
          { q: &quot;He will have written the report.&quot;, opts: [&quot;The report will have been written by him.&quot;, &quot;The report will be written by him.&quot;, &quot;The report will be being written by him.&quot;, &quot;The report has been written by him.&quot;], ans: &quot;The report will have been written by him.&quot; },
          { q: &quot;They will finish the project.&quot;, opts: [&quot;The project will be finished by them.&quot;, &quot;The project will have been finished by them.&quot;, &quot;The project will be being finished by them.&quot;, &quot;The project is finished by them.&quot;], ans: &quot;The project will be finished by them.&quot; },
          { q: &quot;We will buy a car.&quot;, opts: [&quot;A car will be bought by us.&quot;, &quot;A car will have been bought by us.&quot;, &quot;A car will be being bought by us.&quot;, &quot;A car is bought by us.&quot;], ans: &quot;A car will be bought by us.&quot; }
        ]
      },
      {
        id: &quot;m6&quot;, label: &quot;Modal Verbs&quot;, tabLabel: &quot;Part 6: Modal Verbs&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct passive form for each active sentence containing a modal verb (1 mark each).&quot;,
        data: [
          { q: &quot;He can do it.&quot;, opts: [&quot;It can be done by him.&quot;, &quot;It can be doing by him.&quot;, &quot;It is done by him.&quot;, &quot;It could be done by him.&quot;], ans: &quot;It can be done by him.&quot; },
          { q: &quot;You could do it.&quot;, opts: [&quot;It could be done by you.&quot;, &quot;It can be done by you.&quot;, &quot;It could be doing by you.&quot;, &quot;It is done by you.&quot;], ans: &quot;It could be done by you.&quot; },
          { q: &quot;They may help us.&quot;, opts: [&quot;We may be helped by them.&quot;, &quot;We may be helping by them.&quot;, &quot;We might be helped by them.&quot;, &quot;We are helped by them.&quot;], ans: &quot;We may be helped by them.&quot; },
          { q: &quot;You should write an email.&quot;, opts: [&quot;An email should be written by you.&quot;, &quot;An email should have been written by you.&quot;, &quot;An email is written by you.&quot;, &quot;An email should be writing by you.&quot;], ans: &quot;An email should be written by you.&quot; },
          { q: &quot;We must follow the rules.&quot;, opts: [&quot;The rules must be followed by us.&quot;, &quot;The rules must have been followed by us.&quot;, &quot;The rules are followed by us.&quot;, &quot;The rules must be following by us.&quot;], ans: &quot;The rules must be followed by us.&quot; }
        ]
      },
      {
        id: &quot;m7&quot;, label: &quot;Perfect Modals&quot;, tabLabel: &quot;Part 7: Perfect Modals&quot;, type: &quot;fib&quot;,
        hint: &quot;Type only the missing verb phrase for each perfect-modal passive sentence (1 mark each).&quot;,
        data: [
          { q: &quot;We should have done it. → It ___ by us.&quot;, target: &quot;should have been done&quot;, exp: &quot;Perfect modal passive: modal + have been + V3.&quot; },
          { q: &quot;We must have broken the rule. → The rule ___ by us.&quot;, target: &quot;must have been broken&quot;, exp: &quot;Perfect modal passive: modal + have been + V3.&quot; },
          { q: &quot;Students ought to have learned ethics. → Ethics ___ by students.&quot;, target: &quot;ought to have been learned&quot;, exp: &quot;Perfect modal passive: ought to have been + V3.&quot; },
          { q: &quot;He might have finished the work. → The work ___ by him.&quot;, target: &quot;might have been finished&quot;, exp: &quot;Perfect modal passive: modal + have been + V3.&quot; },
          { q: &quot;She could have written the letter. → The letter ___ by her.&quot;, target: &quot;could have been written&quot;, exp: &quot;Perfect modal passive: modal + have been + V3.&quot; }
        ]
      },
      {
        id: &quot;m8&quot;, label: &quot;Prepositions&quot;, tabLabel: &quot;Part 8: Prepositions in Passive Voice&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the sentence using the correct preposition (by, to, for, with, at, in) for each special passive construction (1 mark each).&quot;,
        data: [
          { q: &quot;I know him.&quot;, opts: [&quot;He is known to me.&quot;, &quot;He is known by me.&quot;, &quot;He is known with me.&quot;, &quot;He is known at me.&quot;], ans: &quot;He is known to me.&quot; },
          { q: &quot;They annoyed him. (followed by a human being)&quot;, opts: [&quot;He was annoyed with them.&quot;, &quot;He was annoyed at them.&quot;, &quot;He was annoyed by them.&quot;, &quot;He was annoyed to them.&quot;], ans: &quot;He was annoyed with them.&quot; },
          { q: &quot;The meeting annoyed me. (not followed by a human being)&quot;, opts: [&quot;I was annoyed at the meeting.&quot;, &quot;I was annoyed with the meeting.&quot;, &quot;I was annoyed by the meeting.&quot;, &quot;I was annoyed to the meeting.&quot;], ans: &quot;I was annoyed at the meeting.&quot; },
          { q: &quot;This work interests me.&quot;, opts: [&quot;I am interested in this work.&quot;, &quot;I am interested at this work.&quot;, &quot;I am interested with this work.&quot;, &quot;I am interested by this work.&quot;], ans: &quot;I am interested in this work.&quot; },
          { q: &quot;Their behavior surprised me.&quot;, opts: [&quot;I was surprised at their behavior.&quot;, &quot;I was surprised with their behavior.&quot;, &quot;I was surprised in their behavior.&quot;, &quot;I was surprised by their behavior.&quot;], ans: &quot;I was surprised at their behavior.&quot; }
        ]
      },
      {
        id: &quot;m9&quot;, label: &quot;Quasi-Passive&quot;, tabLabel: &quot;Part 9: Quasi-Passive Verbs&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the preferred modern-English passive-like transformation for each quasi-passive sentence (1 mark each).&quot;,
        data: [
          { q: &quot;Honey tastes sweet.&quot;, opts: [&quot;Honey is sweet when it is tasted.&quot;, &quot;Honey is tasted sweet.&quot;, &quot;Honey was sweet when it was tasted.&quot;, &quot;Honey tastes sweet when tasted.&quot;], ans: &quot;Honey is sweet when it is tasted.&quot; },
          { q: &quot;The bed feels soft.&quot;, opts: [&quot;The bed is soft when it is felt.&quot;, &quot;The bed feels soft when touched.&quot;, &quot;The bed was soft when it was felt.&quot;, &quot;The bed is felt soft.&quot;], ans: &quot;The bed is soft when it is felt.&quot; },
          { q: &quot;The rose smells fragrant.&quot;, opts: [&quot;The rose is fragrant when it is smelled.&quot;, &quot;The rose smells fragrant when smelled.&quot;, &quot;The rose was fragrant when it was smelled.&quot;, &quot;The rose is smelled fragrant.&quot;], ans: &quot;The rose is fragrant when it is smelled.&quot; },
          { q: &quot;Quinine tastes bitter.&quot;, opts: [&quot;Quinine is bitter when it is tasted.&quot;, &quot;Quinine tastes bitter when tasted.&quot;, &quot;Quinine was bitter when it was tasted.&quot;, &quot;Quinine is tasted bitter.&quot;], ans: &quot;Quinine is bitter when it is tasted.&quot; },
          { q: &quot;Which method is preferred in modern English for quasi-passive verbs like taste, feel, and smell?&quot;, opts: [&quot;The &#39;when/if&#39; clause method&quot;, &quot;The shorthand compressed method&quot;, &quot;Adding &#39;by&#39; plus the doer&quot;, &quot;Using &#39;being&#39; plus past participle only&quot;], ans: &quot;The &#39;when/if&#39; clause method&quot; }
        ]
      },
      {
        id: &quot;m10&quot;, label: &quot;Double-Object&quot;, tabLabel: &quot;Part 10: Double-Object Sentences&quot;, type: &quot;fib&quot;,
        hint: &quot;Type only the missing verb phrase (plus preposition where needed) to complete each passive sentence (1 mark each).&quot;,
        data: [
          { q: &quot;The teacher gave me a prize. → I ___ a prize by the teacher.&quot;, target: &quot;was given&quot;, exp: &quot;Indirect object as subject: be verb + V3, no preposition needed.&quot; },
          { q: &quot;She sent him a letter. → He ___ a letter by her.&quot;, target: &quot;was sent&quot;, exp: &quot;Indirect object as subject: be verb + V3, no preposition needed.&quot; },
          { q: &quot;My father bought me a bicycle. → A bicycle ___ by my father.&quot;, target: &quot;was bought for me&quot;, exp: &quot;Direct object as subject: be verb + V3 + &#39;for&#39; + indirect object.&quot; },
          { q: &quot;The manager offered her a job. → She ___ a job by the manager.&quot;, target: &quot;was offered&quot;, exp: &quot;Indirect object as subject: be verb + V3, no preposition needed.&quot; },
          { q: &quot;Mother cooked us dinner. → Dinner ___ by Mother.&quot;, target: &quot;was cooked for us&quot;, exp: &quot;Direct object as subject: be verb + V3 + &#39;for&#39; + indirect object.&quot; }
        ]
      },
      {
        id: &quot;m11&quot;, label: &quot;Interrogative I&quot;, tabLabel: &quot;Part 11: Interrogative (do/does/did, am/is/are)&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct passive form for each interrogative sentence (Rules 1 &amp; 2) (1 mark each).&quot;,
        data: [
          { q: &quot;Do you play cricket?&quot;, opts: [&quot;Is cricket played by you?&quot;, &quot;Cricket is played by you?&quot;, &quot;Does cricket play by you?&quot;, &quot;Was cricket played by you?&quot;], ans: &quot;Is cricket played by you?&quot; },
          { q: &quot;Did he play cricket?&quot;, opts: [&quot;Was cricket played by him?&quot;, &quot;Is cricket played by him?&quot;, &quot;Did cricket played by him?&quot;, &quot;Has cricket been played by him?&quot;], ans: &quot;Was cricket played by him?&quot; },
          { q: &quot;Is she doing her homework?&quot;, opts: [&quot;Is her homework being done by her?&quot;, &quot;Was her homework being done by her?&quot;, &quot;Does her homework being done by her?&quot;, &quot;Has her homework been done by her?&quot;], ans: &quot;Is her homework being done by her?&quot; },
          { q: &quot;Was she writing a book?&quot;, opts: [&quot;Was a book being written by her?&quot;, &quot;Is a book being written by her?&quot;, &quot;Did a book written by her?&quot;, &quot;Has a book been written by her?&quot;], ans: &quot;Was a book being written by her?&quot; },
          { q: &quot;Do they clean the room every day?&quot;, opts: [&quot;Is the room cleaned by them every day?&quot;, &quot;Was the room cleaned by them every day?&quot;, &quot;Does the room clean by them every day?&quot;, &quot;Has the room been cleaned by them every day?&quot;], ans: &quot;Is the room cleaned by them every day?&quot; }
        ]
      },
      {
        id: &quot;m12&quot;, label: &quot;Interrogative II&quot;, tabLabel: &quot;Part 12: Interrogative (have/has/had, shall/will, who)&quot;, type: &quot;fib&quot;,
        hint: &quot;Type only the single missing auxiliary word that begins the passive question (Rules 3, 4 &amp; 5) (1 mark each).&quot;,
        data: [
          { q: &quot;Have I broken the glass? → ___ the glass been broken by me?&quot;, target: &quot;Has&quot;, exp: &quot;Rule 3: have/has/had matches the tense, number, and person of the subject that becomes the object.&quot; },
          { q: &quot;Had they played football? → ___ football been played by them?&quot;, target: &quot;Had&quot;, exp: &quot;Rule 3: &#39;had&#39; stays &#39;had&#39; in the passive question.&quot; },
          { q: &quot;Will you buy a car? → ___ a car be bought by you?&quot;, target: &quot;Will&quot;, exp: &quot;Rule 4: shall/will stays the same in the passive question.&quot; },
          { q: &quot;Will he have bought this house? → ___ this house have been bought by him?&quot;, target: &quot;Will&quot;, exp: &quot;Rule 4: shall/will stays the same in the passive question.&quot; },
          { q: &quot;Who has broken the glass? → By ___ has the glass been broken?&quot;, target: &quot;whom&quot;, exp: &quot;Rule 5: &#39;who&#39; becomes &#39;by whom&#39; in the passive question.&quot; }
        ]
      },
      {
        id: &quot;m13&quot;, label: &quot;Imperative/Optative&quot;, tabLabel: &quot;Part 13: Imperative &amp; Optative&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct passive form for each imperative or optative sentence (1 mark each).&quot;,
        data: [
          { q: &quot;Do your job seriously. (advice)&quot;, opts: [&quot;You are advised to do your job seriously.&quot;, &quot;You are ordered to do your job seriously.&quot;, &quot;You are requested to do your job seriously.&quot;, &quot;Your job is done seriously by you.&quot;], ans: &quot;You are advised to do your job seriously.&quot; },
          { q: &quot;Please open the door. (request)&quot;, opts: [&quot;You are requested to open the door.&quot;, &quot;You are advised to open the door.&quot;, &quot;You are ordered to open the door.&quot;, &quot;The door is opened by you.&quot;], ans: &quot;You are requested to open the door.&quot; },
          { q: &quot;Let me eat something.&quot;, opts: [&quot;Let something be eaten by me.&quot;, &quot;Something is let to be eaten by me.&quot;, &quot;Let me be eating something.&quot;, &quot;Something be eaten let me.&quot;], ans: &quot;Let something be eaten by me.&quot; },
          { q: &quot;May our president help our poor people. (optative)&quot;, opts: [&quot;May our poor people be helped by our president.&quot;, &quot;May our president be helped by our poor people.&quot;, &quot;Our poor people are helped by our president.&quot;, &quot;May our poor people helped be by our president.&quot;], ans: &quot;May our poor people be helped by our president.&quot; },
          { q: &quot;Which of these sentences CANNOT be transformed into the passive voice?&quot;, opts: [&quot;May he succeed.&quot;, &quot;Let her finish the work.&quot;, &quot;Please open the door.&quot;, &quot;Do your job seriously.&quot;], ans: &quot;May he succeed.&quot; }
        ]
      }
    ];

    // Part 14: gap-fill synthesis passage (5 marks)
    const m14Answers = {
        &quot;m14-1&quot;: &quot;subject&quot;,
        &quot;m14-2&quot;: &quot;transitive&quot;,
        &quot;m14-3&quot;: &quot;subject&quot;,
        &quot;m14-4&quot;: &quot;when/if&quot;,
        &quot;m14-5&quot;: &quot;object&quot;
    };

    // ============ SCORE STATE ============
    const scores = {};
    modules.forEach(m =&gt; scores[m.id] = 0);
    scores.m14 = 0;
    const TOTAL_MARKS = 70;

    function buildScoreboard() {
        const board = document.getElementById(&quot;scoreboard&quot;);
        let html = &quot;&quot;;
        modules.forEach(m =&gt; {
            html += `&lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-${m.id}&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;${m.label}&lt;/div&gt;&lt;/div&gt;`;
        });
        html += `&lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m14&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Synthesis&lt;/div&gt;&lt;/div&gt;`;
        html += `&lt;div class=&quot;score-item&quot; style=&quot;grid-column: 1 / -1; margin-top:4px;&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/${TOTAL_MARKS}&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;`;
        board.innerHTML = html;
    }

    function updateScoreboard() {
        let total = 0;
        modules.forEach(m =&gt; {
            document.getElementById(`score-${m.id}`).textContent = scores[m.id] + &#39;/5&#39;;
            total += scores[m.id];
        });
        document.getElementById(&#39;score-m14&#39;).textContent = scores.m14 + &#39;/5&#39;;
        total += scores.m14;
        document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/&#39; + TOTAL_MARKS;
        document.getElementById(&#39;progress-bar&#39;).style.width = ((total / TOTAL_MARKS) * 100) + &#39;%&#39;;
    }

    // ============ TABS &amp; PANELS ============
    function buildTabsAndPanels() {
        const tabsWrap = document.getElementById(&quot;tabs-wrap&quot;);
        const panelsWrap = document.getElementById(&quot;panels-wrap&quot;);
        let tabsHtml = &quot;&quot;;
        let panelsHtml = &quot;&quot;;

        modules.forEach((m, idx) =&gt; {
            tabsHtml += `&lt;button class=&quot;tab-btn${idx === 0 ? &#39; active&#39; : &#39;&#39;}&quot; data-panel=&quot;${m.id}&quot;&gt;${m.tabLabel} &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;`;
            panelsHtml += `
                &lt;section class=&quot;panel${idx === 0 ? &#39; active&#39; : &#39;&#39;}&quot; id=&quot;panel-${m.id}&quot;&gt;
                    &lt;div class=&quot;kicker&quot;&gt;${m.tabLabel.split(&#39;:&#39;)[0]} (5 Marks)&lt;/div&gt;
                    &lt;h2&gt;${m.tabLabel.split(&#39;: &#39;)[1]}&lt;/h2&gt;
                    &lt;p class=&quot;section-hint&quot;&gt;${m.hint}&lt;/p&gt;
                    &lt;div id=&quot;module-${m.id}-container&quot;&gt;&lt;/div&gt;
                    &lt;button class=&quot;btn-check&quot; data-check=&quot;${m.id}&quot;&gt;Verify ${m.tabLabel.split(&#39;:&#39;)[0]}&lt;/button&gt;
                &lt;/section&gt;`;
        });

        // Part 14 tab + panel
        tabsHtml += `&lt;button class=&quot;tab-btn&quot; data-panel=&quot;m14&quot;&gt;Part 14: Rules Synthesis &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;`;
        panelsHtml += `
            &lt;section class=&quot;panel&quot; id=&quot;panel-m14&quot;&gt;
                &lt;div class=&quot;kicker&quot;&gt;Part 14 (5 Marks)&lt;/div&gt;
                &lt;h2&gt;Rules Synthesis Gap-Fill&lt;/h2&gt;
                &lt;p class=&quot;section-hint&quot;&gt;Select the correct word to complete each rule summary (1 mark each).&lt;/p&gt;
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-text&quot; id=&quot;module14-container&quot;&gt;
                        Voice refers to the relationship between the
                        &lt;select id=&quot;m14-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;subject&quot;&gt;subject&lt;/option&gt;&lt;option value=&quot;verb&quot;&gt;verb&lt;/option&gt;&lt;option value=&quot;object&quot;&gt;object&lt;/option&gt;&lt;/select&gt;
                        and the action expressed by the verb. Only
                        &lt;select id=&quot;m14-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;transitive&quot;&gt;transitive&lt;/option&gt;&lt;option value=&quot;intransitive&quot;&gt;intransitive&lt;/option&gt;&lt;option value=&quot;modal&quot;&gt;modal&lt;/option&gt;&lt;/select&gt;
                        verbs can normally be transformed into the passive voice, because they take an object. In the passive structure, the object of the active voice becomes the
                        &lt;select id=&quot;m14-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;subject&quot;&gt;subject&lt;/option&gt;&lt;option value=&quot;object&quot;&gt;object&lt;/option&gt;&lt;option value=&quot;verb&quot;&gt;verb&lt;/option&gt;&lt;/select&gt;
                        of the passive sentence. Quasi-passive verbs such as taste, feel, and smell are usually converted using the
                        &lt;select id=&quot;m14-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;when/if&quot;&gt;&#39;when/if&#39;&lt;/option&gt;&lt;option value=&quot;being + V3&quot;&gt;&#39;being + V3&#39;&lt;/option&gt;&lt;option value=&quot;by&quot;&gt;&#39;by&#39;&lt;/option&gt;&lt;/select&gt;
                        clause method rather than the standard passive rule. Finally, an imperative or optative sentence without an
                        &lt;select id=&quot;m14-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;object&quot;&gt;object&lt;/option&gt;&lt;option value=&quot;subject&quot;&gt;subject&lt;/option&gt;&lt;option value=&quot;adverb&quot;&gt;adverb&lt;/option&gt;&lt;/select&gt;
                        cannot be transformed into the passive voice at all.
                    &lt;/div&gt;
                    &lt;button class=&quot;btn-check&quot; data-check=&quot;m14&quot;&gt;Verify Part 14&lt;/button&gt;
                    &lt;div id=&quot;m14-feedback&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;`;

        tabsWrap.innerHTML = tabsHtml;
        panelsWrap.innerHTML = panelsHtml;

        // Tab navigation
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
            btn.addEventListener(&#39;click&#39;, () =&gt; {
                document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
                document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
                btn.classList.add(&#39;active&#39;);
                document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
                btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
            });
        });

        // Check buttons
        document.querySelectorAll(&#39;.btn-check[data-check]&#39;).forEach(btn =&gt; {
            btn.addEventListener(&#39;click&#39;, () =&gt; {
                const id = btn.dataset.check;
                if (id === &#39;m14&#39;) { checkModule14(); return; }
                const mod = modules.find(m =&gt; m.id === id);
                if (mod.type === &#39;mcq&#39;) checkMCQModule(mod);
                else checkFIBModule(mod);
            });
        });
    }

    // ============ RENDER MODULES ============
    function renderMCQModule(mod) {
        const container = document.getElementById(`module-${mod.id}-container`);
        let html = &quot;&quot;;
        mod.data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; { optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`; });
            html += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;span class=&quot;active-line&quot;&gt;Active:&lt;/span&gt; ${item.q}&lt;/div&gt;
                    &lt;div&gt;&lt;select id=&quot;${mod.id}-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;&lt;/div&gt;
                    &lt;div id=&quot;${mod.id}-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;`;
        });
        container.innerHTML = html;
    }

    function renderFIBModule(mod) {
        const container = document.getElementById(`module-${mod.id}-container`);
        let html = &quot;&quot;;
        mod.data.forEach((item, index) =&gt; {
            html += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;${mod.id}-in-${index}&quot; placeholder=&quot;Type only the missing words...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;${mod.id}-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;${mod.id}-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;`;
        });
        container.innerHTML = html;
    }

    // ============ CHECK MODULES ============
    function checkMCQModule(mod) {
        let currentScore = 0;
        mod.data.forEach((item, index) =&gt; {
            const select = document.getElementById(`${mod.id}-${index}`);
            const fb = document.getElementById(`${mod.id}-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores[mod.id] = currentScore;
        updateScoreboard();
    }

    function normalize(str) {
        return str.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()?]/g, &quot;&quot;).replace(/\s+/g, &quot; &quot;).toLowerCase();
    }

    function checkFIBModule(mod) {
        let currentScore = 0;
        mod.data.forEach((item, index) =&gt; {
            const input = document.getElementById(`${mod.id}-in-${index}`);
            const fb = document.getElementById(`${mod.id}-fb-${index}`);
            const exp = document.getElementById(`${mod.id}-exp-${index}`);

            const cleanUser = normalize(input.value);
            const cleanTarget = normalize(item.target);
            const cleanAlt = item.targetAlt ? normalize(item.targetAlt) : null;

            if (cleanUser === cleanTarget || (cleanAlt &amp;&amp; cleanUser === cleanAlt)) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.target}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores[mod.id] = currentScore;
        updateScoreboard();
    }

    function checkModule14() {
        let currentScore = 0;
        Object.keys(m14Answers).forEach(id =&gt; {
            const select = document.getElementById(id);
            if (select.value === m14Answers[id]) {
                select.className = &quot;correct-input&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
            }
        });
        const fb = document.getElementById(&quot;m14-feedback&quot;);
        if (currentScore === 5) {
            fb.textContent = &quot;Outstanding! All 5 passage choices are correct (+5 Marks).&quot;;
            fb.className = &quot;feedback correct show&quot;;
        } else {
            fb.textContent = `You scored ${currentScore}/5. Review highlighted incorrect fields.`;
            fb.className = &quot;feedback incorrect show&quot;;
        }
        scores.m14 = currentScore;
        updateScoreboard();
    }

    // ============ INITIALIZATION ============
    window.onload = () =&gt; {
        buildScoreboard();
        buildTabsAndPanels();
        modules.forEach(m =&gt; {
            if (m.type === &#39;mcq&#39;) renderMCQModule(m);
            else renderFIBModule(m);
        });
        updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/107722069633592046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/107722069633592046?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/107722069633592046'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/107722069633592046'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-50-active-and-passive-voice.html' title='Chapter 49: Active and Passive Voice Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-8364532722660508456</id><published>2026-08-09T04:11:11.955-07:00</published><updated>2026-08-09T18:40:40.834-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 48: Punctuation Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty-Eight Assessment · Punctuation (70 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:700px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(7, 1fr);
    gap:8px;
    border:1px solid var(--line);
    border-radius:6px;
    padding:12px 14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ text-align:center; padding:4px; min-width:0; }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(10px,2.4vw,12px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:8px;
    letter-spacing:.01em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:2px;
    line-height:1.25;
  }
  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select{ max-width:100%; }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
    .scoreboard{ grid-template-columns: repeat(4, 1fr); }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(3, 1fr); gap:10px 6px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:9px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty-Eight Assessment&lt;/div&gt;
    &lt;h1&gt;Rules of &lt;em&gt;Punctuation&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 70-mark interactive evaluation covering terminal punctuation, capitalization, every function of the comma, essential vs. non-essential relative clauses, the semicolon and colon, apostrophes, quotation marks, and the dash, hyphen, asterisk, and brackets.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot; id=&quot;scoreboard&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot; id=&quot;tabs-wrap&quot;&gt;&lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot; id=&quot;panels-wrap&quot;&gt;&lt;/div&gt;

&lt;footer&gt;Chapter Forty-Eight Assessment · Punctuation Module&lt;/footer&gt;

&lt;script&gt;
    // ============ MODULE DEFINITIONS ============
    // Parts 1-13: auto-rendered MCQ / Fill-in-the-blank modules (5 marks each = 65)
    const modules = [
      {
        id: &quot;m1&quot;, label: &quot;Terminal Marks&quot;, tabLabel: &quot;Part 1: Terminal Punctuation&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct terminal punctuation or fully corrected sentence (1 mark each).&quot;,
        data: [
          { q: &quot;Where are you going&quot;, opts: [&quot;.&quot;, &quot;!&quot;, &quot;?&quot;, &quot;no punctuation needed&quot;], ans: &quot;?&quot; },
          { q: &quot;Please close the door&quot;, opts: [&quot;.&quot;, &quot;!&quot;, &quot;?&quot;, &quot;,&quot;], ans: &quot;.&quot; },
          { q: &quot;What a beautiful morning&quot;, opts: [&quot;!&quot;, &quot;.&quot;, &quot;?&quot;, &quot;;&quot;], ans: &quot;!&quot; },
          { q: &quot;Alas I failed in the examination&quot;, opts: [&quot;Alas! I failed in the examination.&quot;, &quot;Alas, I failed in the examination.&quot;, &quot;Alas. I failed in the examination.&quot;, &quot;Alas? I failed in the examination.&quot;], ans: &quot;Alas! I failed in the examination.&quot; },
          { q: &quot;Which sentence type does NOT normally end with a period?&quot;, opts: [&quot;A direct question&quot;, &quot;A declarative sentence&quot;, &quot;An imperative sentence (command)&quot;, &quot;An optative sentence&quot;], ans: &quot;A direct question&quot; }
        ]
      },
      {
        id: &quot;m2&quot;, label: &quot;Capitalization&quot;, tabLabel: &quot;Part 2: Capital Letters&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correctly capitalized version of each sentence (1 mark each).&quot;,
        data: [
          { q: &quot;rahim lives in dhaka.&quot;, opts: [&quot;Rahim lives in Dhaka.&quot;, &quot;Rahim Lives In Dhaka.&quot;, &quot;rahim Lives in dhaka.&quot;, &quot;Rahim lives in dhaka.&quot;], ans: &quot;Rahim lives in Dhaka.&quot; },
          { q: &quot;i met mr. hasan on friday.&quot;, opts: [&quot;I met Mr. Hasan on Friday.&quot;, &quot;I met mr. Hasan on friday.&quot;, &quot;i met Mr. Hasan on Friday.&quot;, &quot;I Met Mr. Hasan On Friday.&quot;], ans: &quot;I met Mr. Hasan on Friday.&quot; },
          { q: &quot;shakespeare wrote hamlet.&quot;, opts: [&quot;Shakespeare wrote Hamlet.&quot;, &quot;shakespeare wrote Hamlet.&quot;, &quot;Shakespeare wrote hamlet.&quot;, &quot;Shakespeare Wrote Hamlet.&quot;], ans: &quot;Shakespeare wrote Hamlet.&quot; },
          { q: &quot;Which pronoun is always capitalized regardless of its position in a sentence?&quot;, opts: [&quot;I&quot;, &quot;he&quot;, &quot;she&quot;, &quot;they&quot;], ans: &quot;I&quot; },
          { q: &quot;my brother studies at rajshahi college.&quot;, opts: [&quot;My brother studies at Rajshahi College.&quot;, &quot;My brother Studies at rajshahi college.&quot;, &quot;my Brother studies at Rajshahi College.&quot;, &quot;My brother studies at rajshahi College.&quot;], ans: &quot;My brother studies at Rajshahi College.&quot; }
        ]
      },
      {
        id: &quot;m3&quot;, label: &quot;Comma: Lists&quot;, tabLabel: &quot;Part 3: Comma in Lists&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correctly punctuated list sentence (1 mark each).&quot;,
        data: [
          { q: &quot;I bought apples oranges bananas and grapes.&quot;, opts: [&quot;I bought apples, oranges, bananas, and grapes.&quot;, &quot;I bought apples, oranges bananas, and grapes.&quot;, &quot;I bought apples oranges, bananas, and grapes.&quot;, &quot;I bought apples, oranges, bananas and grapes,&quot;], ans: &quot;I bought apples, oranges, bananas, and grapes.&quot; },
          { q: &quot;When a list has only two items, how many commas do you use?&quot;, opts: [&quot;None&quot;, &quot;One&quot;, &quot;Two&quot;, &quot;Three&quot;], ans: &quot;None&quot; },
          { q: &quot;The flag is red green and white.&quot;, opts: [&quot;The flag is red, green, and white.&quot;, &quot;The flag is red green, and white.&quot;, &quot;The flag is red, green and white,&quot;, &quot;The flag is, red, green, and white.&quot;], ans: &quot;The flag is red, green, and white.&quot; },
          { q: &quot;The comma placed before &#39;and&#39; at the end of a list is known as what?&quot;, opts: [&quot;The Oxford comma&quot;, &quot;The terminal comma&quot;, &quot;The splice comma&quot;, &quot;The linking comma&quot;], ans: &quot;The Oxford comma&quot; },
          { q: &quot;We visited Cox&#39;s Bazar Sylhet and Rangamati.&quot;, opts: [&quot;We visited Cox&#39;s Bazar, Sylhet, and Rangamati.&quot;, &quot;We visited, Cox&#39;s Bazar, Sylhet and Rangamati.&quot;, &quot;We visited Cox&#39;s Bazar Sylhet, and Rangamati.&quot;, &quot;We visited Cox&#39;s Bazar, Sylhet and, Rangamati.&quot;], ans: &quot;We visited Cox&#39;s Bazar, Sylhet, and Rangamati.&quot; }
        ]
      },
      {
        id: &quot;m4&quot;, label: &quot;Comma: Clauses&quot;, tabLabel: &quot;Part 4: Comma with Dependent Clauses&quot;, type: &quot;fib&quot;,
        hint: &quot;Each sentence begins with a dependent clause. Type only the single word immediately after which the comma belongs (1 mark each).&quot;,
        data: [
          { q: &quot;If you work hard you will succeed.&quot;, target: &quot;hard&quot;, exp: &quot;When a dependent clause opens the sentence, a comma follows it right before the independent clause begins.&quot; },
          { q: &quot;When the rain stopped we went outside.&quot;, target: &quot;stopped&quot;, exp: &quot;The comma comes right after the dependent clause, before &#39;we went outside&#39;.&quot; },
          { q: &quot;Because he was ill he stayed home.&quot;, target: &quot;ill&quot;, exp: &quot;The comma comes right after the dependent clause, before &#39;he stayed home&#39;.&quot; },
          { q: &quot;Although she was tired she continued working.&quot;, target: &quot;tired&quot;, exp: &quot;The comma comes right after the dependent clause, before &#39;she continued working&#39;.&quot; },
          { q: &quot;After the class ended the students left quietly.&quot;, target: &quot;ended&quot;, exp: &quot;The comma comes right after the dependent clause, before &#39;the students left quietly&#39;.&quot; }
        ]
      },
      {
        id: &quot;m5&quot;, label: &quot;Comma: Conjunctions&quot;, tabLabel: &quot;Part 5: Comma with Coordinating Conjunctions&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correctly punctuated sentence, and identify the comma-splice rule (1 mark each).&quot;,
        data: [
          { q: &quot;He studied hard but he failed.&quot;, opts: [&quot;He studied hard, but he failed.&quot;, &quot;He studied hard but, he failed.&quot;, &quot;He studied hard but he, failed.&quot;, &quot;He studied hard; but he failed.&quot;], ans: &quot;He studied hard, but he failed.&quot; },
          { q: &quot;What is a &#39;comma splice&#39;?&quot;, opts: [&quot;Connecting two independent clauses with only a comma and no conjunction&quot;, &quot;Using too many commas in a list&quot;, &quot;Placing a comma before a dependent clause&quot;, &quot;Using a comma instead of a colon&quot;], ans: &quot;Connecting two independent clauses with only a comma and no conjunction&quot; },
          { q: &quot;The sky was cloudy and it started raining.&quot;, opts: [&quot;The sky was cloudy, and it started raining.&quot;, &quot;The sky was cloudy and, it started raining.&quot;, &quot;The sky was cloudy; and it started raining.&quot;, &quot;The sky was cloudy and it, started raining.&quot;], ans: &quot;The sky was cloudy, and it started raining.&quot; },
          { q: &quot;Which structure correctly joins two independent clauses with a coordinating conjunction?&quot;, opts: [&quot;Independent clause + comma + coordinating conjunction + independent clause&quot;, &quot;Independent clause + coordinating conjunction + comma + independent clause&quot;, &quot;Independent clause + comma + independent clause&quot;, &quot;Independent clause + semicolon + comma + independent clause&quot;], ans: &quot;Independent clause + comma + coordinating conjunction + independent clause&quot; },
          { q: &quot;They were poor but they were honest.&quot;, opts: [&quot;They were poor, but they were honest.&quot;, &quot;They were poor but, they were honest.&quot;, &quot;They were poor; but they were honest.&quot;, &quot;They were poor but they, were honest.&quot;], ans: &quot;They were poor, but they were honest.&quot; }
        ]
      },
      {
        id: &quot;m6&quot;, label: &quot;Comma: Linking/Salutation&quot;, tabLabel: &quot;Part 6: Linking Words &amp; Salutations&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct punctuation rule for linking words, salutations, and closings (1 mark each).&quot;,
        data: [
          { q: &quot;In British English, what punctuation typically follows the salutation &#39;Dear Sir&#39;?&quot;, opts: [&quot;A comma&quot;, &quot;A colon&quot;, &quot;A semicolon&quot;, &quot;No punctuation&quot;], ans: &quot;A comma&quot; },
          { q: &quot;In American English, what punctuation typically follows a formal salutation like &#39;Dear Sir&#39;?&quot;, opts: [&quot;A colon&quot;, &quot;A comma&quot;, &quot;A dash&quot;, &quot;A semicolon&quot;], ans: &quot;A colon&quot; },
          { q: &quot;Which punctuation always follows a closing expression such as &#39;Yours sincerely&#39; in both American and British English?&quot;, opts: [&quot;A comma&quot;, &quot;A colon&quot;, &quot;A semicolon&quot;, &quot;A period&quot;], ans: &quot;A comma&quot; },
          { q: &quot;When a linking word like &#39;however&#39; sits in the middle of a sentence, how many commas usually surround it?&quot;, opts: [&quot;Two&quot;, &quot;One&quot;, &quot;Three&quot;, &quot;None&quot;], ans: &quot;Two&quot; },
          { q: &quot;When a linking word like &#39;therefore&#39; occurs at the end of a sentence, how many commas are needed?&quot;, opts: [&quot;One&quot;, &quot;Two&quot;, &quot;Three&quot;, &quot;None&quot;], ans: &quot;One&quot; }
        ]
      },
      {
        id: &quot;m7&quot;, label: &quot;Relative Clauses&quot;, tabLabel: &quot;Part 7: Essential vs Non-Essential Clauses&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct rule or punctuation for essential and non-essential relative clauses (1 mark each).&quot;,
        data: [
          { q: &quot;What is the key rule for punctuating an essential relative clause?&quot;, opts: [&quot;No commas are used, because the clause cannot be removed without losing key meaning&quot;, &quot;Two commas are always used&quot;, &quot;One comma is used at the start only&quot;, &quot;A semicolon is used instead of a comma&quot;], ans: &quot;No commas are used, because the clause cannot be removed without losing key meaning&quot; },
          { q: &quot;What is the key rule for punctuating a non-essential relative clause?&quot;, opts: [&quot;It is set off with commas because it can be removed without losing key meaning&quot;, &quot;It is never separated by commas&quot;, &quot;It always begins a new sentence&quot;, &quot;It requires a colon before it&quot;], ans: &quot;It is set off with commas because it can be removed without losing key meaning&quot; },
          { q: &quot;The cheetah which can reach speeds up to 120 km/h is the fastest land animal in the world. (non-essential clause)&quot;, opts: [&quot;The cheetah, which can reach speeds up to 120 km/h, is the fastest land animal in the world.&quot;, &quot;The cheetah which, can reach speeds up to 120 km/h is the fastest land animal in the world.&quot;, &quot;The cheetah, which can reach speeds up to 120 km/h is the fastest land animal in the world.&quot;, &quot;The cheetah which can reach speeds up to 120 km/h, is the fastest land animal in the world.&quot;], ans: &quot;The cheetah, which can reach speeds up to 120 km/h, is the fastest land animal in the world.&quot; },
          { q: &quot;People who live a sedentary lifestyle are at increased risk of heart disease. — is the relative clause here essential or non-essential?&quot;, opts: [&quot;Essential — no commas needed&quot;, &quot;Non-essential — needs two commas&quot;, &quot;Non-essential — needs one comma&quot;, &quot;Essential — needs one comma&quot;], ans: &quot;Essential — no commas needed&quot; },
          { q: &quot;A relative clause can be introduced by which of the following words?&quot;, opts: [&quot;who, which, whom, that, when, where&quot;, &quot;and, but, or, so&quot;, &quot;however, therefore, in fact&quot;, &quot;dear, sincerely, faithfully&quot;], ans: &quot;who, which, whom, that, when, where&quot; }
        ]
      },
      {
        id: &quot;m8&quot;, label: &quot;Semicolon&quot;, tabLabel: &quot;Part 8: The Semicolon&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct semicolon usage or rule (1 mark each).&quot;,
        data: [
          { q: &quot;I like tea. My brother likes coffee. (combine with a semicolon)&quot;, opts: [&quot;I like tea; my brother likes coffee.&quot;, &quot;I like tea, my brother likes coffee.&quot;, &quot;I like tea: my brother likes coffee.&quot;, &quot;I like tea; My brother likes coffee.&quot;], ans: &quot;I like tea; my brother likes coffee.&quot; },
          { q: &quot;A semicolon is primarily used to:&quot;, opts: [&quot;Join two closely related independent clauses without a conjunction&quot;, &quot;Introduce a list of items&quot;, &quot;End a declarative sentence&quot;, &quot;Mark a contraction&quot;], ans: &quot;Join two closely related independent clauses without a conjunction&quot; },
          { q: &quot;What spacing rule applies to the semicolon?&quot;, opts: [&quot;No space before it, one space after it&quot;, &quot;One space before and after it&quot;, &quot;One space before, no space after it&quot;, &quot;No space before or after it&quot;], ans: &quot;No space before it, one space after it&quot; },
          { q: &quot;Which of these is a conjunctive adverb commonly used with a semicolon?&quot;, opts: [&quot;however&quot;, &quot;and&quot;, &quot;but&quot;, &quot;or&quot;], ans: &quot;however&quot; },
          { q: &quot;The road was blocked. We returned home. (combine with a semicolon)&quot;, opts: [&quot;The road was blocked; we returned home.&quot;, &quot;The road was blocked, we returned home.&quot;, &quot;The road was blocked: we returned home.&quot;, &quot;The road was blocked; We returned home.&quot;], ans: &quot;The road was blocked; we returned home.&quot; }
        ]
      },
      {
        id: &quot;m9&quot;, label: &quot;Colon&quot;, tabLabel: &quot;Part 9: The Colon&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct colon usage or rule (1 mark each).&quot;,
        data: [
          { q: &quot;What must generally precede a colon?&quot;, opts: [&quot;A complete sentence (independent clause)&quot;, &quot;Any incomplete phrase&quot;, &quot;A single word only&quot;, &quot;A coordinating conjunction&quot;], ans: &quot;A complete sentence (independent clause)&quot; },
          { q: &quot;He had only one dream to become a doctor.&quot;, opts: [&quot;He had only one dream: to become a doctor.&quot;, &quot;He had only one dream, to become a doctor.&quot;, &quot;He had only one dream; to become a doctor.&quot;, &quot;He had only one dream - to become a doctor:&quot;], ans: &quot;He had only one dream: to become a doctor.&quot; },
          { q: &quot;The ratio of boys to girls is 3 2.&quot;, opts: [&quot;The ratio of boys to girls is 3:2.&quot;, &quot;The ratio of boys to girls is 3,2.&quot;, &quot;The ratio of boys to girls is 3;2.&quot;, &quot;The ratio of boys to girls is 3-2.&quot;], ans: &quot;The ratio of boys to girls is 3:2.&quot; },
          { q: &quot;Bring the following items paper pens rulers and books.&quot;, opts: [&quot;Bring the following items: paper, pens, rulers, and books.&quot;, &quot;Bring the following items, paper, pens, rulers, and books.&quot;, &quot;Bring the following items; paper, pens, rulers, and books.&quot;, &quot;Bring the following items paper: pens, rulers, and books.&quot;], ans: &quot;Bring the following items: paper, pens, rulers, and books.&quot; },
          { q: &quot;Besides lists and clauses, what else can a colon separate?&quot;, opts: [&quot;The speaker&#39;s name from their speech (e.g., Karim: What are you doing?)&quot;, &quot;Two coordinating conjunctions&quot;, &quot;A dependent clause from an independent clause&quot;, &quot;A subject from its verb&quot;], ans: &quot;The speaker&#39;s name from their speech (e.g., Karim: What are you doing?)&quot; }
        ]
      },
      {
        id: &quot;m10&quot;, label: &quot;Apostrophe&quot;, tabLabel: &quot;Part 10: The Apostrophe&quot;, type: &quot;fib&quot;,
        hint: &quot;Type only the corrected word that needs an apostrophe (1 mark each).&quot;,
        data: [
          { q: &quot;Rahims book is missing.&quot;, target: &quot;Rahim&#39;s&quot;, exp: &quot;An apostrophe + s marks singular possession.&quot; },
          { q: &quot;Im very happy today.&quot;, target: &quot;I&#39;m&quot;, exp: &quot;An apostrophe marks the omitted letter in the contraction &#39;I am&#39; → &#39;I&#39;m&#39;.&quot; },
          { q: &quot;Theyre going to school.&quot;, target: &quot;They&#39;re&quot;, exp: &quot;An apostrophe marks the omitted letter in the contraction &#39;they are&#39; → &#39;they&#39;re&#39;.&quot; },
          { q: &quot;Its a beautiful garden.&quot;, target: &quot;It&#39;s&quot;, exp: &quot;&#39;It&#39;s&#39; is the contraction of &#39;it is&#39;.&quot; },
          { q: &quot;The girls bags are new. (more than one girl)&quot;, target: &quot;girls&#39;&quot;, exp: &quot;For a plural noun already ending in -s, add only an apostrophe after the s.&quot; }
        ]
      },
      {
        id: &quot;m11&quot;, label: &quot;Quotation Marks&quot;, tabLabel: &quot;Part 11: Quotation Marks &amp; Direct Speech&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correctly punctuated direct-speech sentence or rule (1 mark each).&quot;,
        data: [
          { q: &quot;rahim said i will help you&quot;, opts: [&quot;Rahim said, \&quot;I will help you.\&quot;&quot;, &quot;Rahim said \&quot;I will help you\&quot;.&quot;, &quot;Rahim said, &#39;I will help you.&#39;&quot;, &quot;Rahim said: I will help you.&quot;], ans: &quot;Rahim said, \&quot;I will help you.\&quot;&quot; },
          { q: &quot;Where do commas and periods usually go in relation to quotation marks?&quot;, opts: [&quot;Inside the quotation marks&quot;, &quot;Outside the quotation marks&quot;, &quot;It never matters&quot;, &quot;Only periods go inside, commas go outside&quot;], ans: &quot;Inside the quotation marks&quot; },
          { q: &quot;Where do semicolons and colons go in relation to quotation marks?&quot;, opts: [&quot;Outside the quotation marks&quot;, &quot;Inside the quotation marks&quot;, &quot;Either place is acceptable&quot;, &quot;They cannot be used with quotations&quot;], ans: &quot;Outside the quotation marks&quot; },
          { q: &quot;When do we use single quotation marks instead of double?&quot;, opts: [&quot;For a quotation within a quotation&quot;, &quot;For all direct speech&quot;, &quot;For emphasis only&quot;, &quot;For titles of books&quot;], ans: &quot;For a quotation within a quotation&quot; },
          { q: &quot;wow said rita this place is wonderful&quot;, opts: [&quot;\&quot;Wow!\&quot; said Rita, \&quot;This place is wonderful.\&quot;&quot;, &quot;Wow! said Rita, \&quot;This place is wonderful.\&quot;&quot;, &quot;\&quot;Wow\&quot; said Rita \&quot;this place is wonderful\&quot;&quot;, &quot;Rita said, \&quot;Wow this place is wonderful.\&quot;&quot;], ans: &quot;\&quot;Wow!\&quot; said Rita, \&quot;This place is wonderful.\&quot;&quot; }
        ]
      },
      {
        id: &quot;m12&quot;, label: &quot;Dash/Hyphen/etc.&quot;, tabLabel: &quot;Part 12: Dash, Hyphen, Asterisk &amp; Brackets&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct rule about the dash, hyphen, asterisk, or brackets (1 mark each).&quot;,
        data: [
          { q: &quot;What is a key difference between a dash and a hyphen?&quot;, opts: [&quot;A hyphen is shorter than a dash&quot;, &quot;A hyphen is longer than a dash&quot;, &quot;They are exactly the same length&quot;, &quot;A hyphen is only used at the end of a sentence&quot;], ans: &quot;A hyphen is shorter than a dash&quot; },
          { q: &quot;What is the primary function of a hyphen?&quot;, opts: [&quot;To join parts of a compound word&quot;, &quot;To end a sentence&quot;, &quot;To introduce a list&quot;, &quot;To mark possession&quot;], ans: &quot;To join parts of a compound word&quot; },
          { q: &quot;What is one common use of a single asterisk?&quot;, opts: [&quot;To call attention to a footnote&quot;, &quot;To end a question&quot;, &quot;To join two independent clauses&quot;, &quot;To mark a contraction&quot;], ans: &quot;To call attention to a footnote&quot; },
          { q: &quot;What do brackets/parentheses function similarly to?&quot;, opts: [&quot;A pair of commas or dashes enclosing extra information&quot;, &quot;A colon introducing a list&quot;, &quot;A period ending a sentence&quot;, &quot;An apostrophe marking possession&quot;], ans: &quot;A pair of commas or dashes enclosing extra information&quot; },
          { q: &quot;According to the chapter, does a hyphen technically function as a punctuation mark?&quot;, opts: [&quot;No, it does not actually function as a punctuation mark&quot;, &quot;Yes, it is the most essential punctuation mark&quot;, &quot;Yes, but only in British English&quot;, &quot;No, it is only used in mathematics&quot;], ans: &quot;No, it does not actually function as a punctuation mark&quot; }
        ]
      },
      {
        id: &quot;m13&quot;, label: &quot;Mixed Editing&quot;, tabLabel: &quot;Part 13: Mixed Punctuation &amp; Capitalization&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the fully and correctly punctuated version of each sentence (1 mark each).&quot;,
        data: [
          { q: &quot;wow what a beautiful garden&quot;, opts: [&quot;Wow! What a beautiful garden!&quot;, &quot;Wow, what a beautiful garden.&quot;, &quot;Wow. What a beautiful garden?&quot;, &quot;Wow what a beautiful, garden!&quot;], ans: &quot;Wow! What a beautiful garden!&quot; },
          { q: &quot;have you visited the national museum in dhaka&quot;, opts: [&quot;Have you visited the National Museum in Dhaka?&quot;, &quot;have you visited the National museum in Dhaka.&quot;, &quot;Have you visited the national Museum in dhaka?&quot;, &quot;Have You Visited The National Museum In Dhaka?&quot;], ans: &quot;Have you visited the National Museum in Dhaka?&quot; },
          { q: &quot;alas the old man is dead&quot;, opts: [&quot;Alas! The old man is dead.&quot;, &quot;Alas, the old man is dead!&quot;, &quot;Alas the old man is dead.&quot;, &quot;Alas: the old man is dead.&quot;], ans: &quot;Alas! The old man is dead.&quot; },
          { q: &quot;my brother studies at notre dame college&quot;, opts: [&quot;My brother studies at Notre Dame College.&quot;, &quot;My brother studies at notre dame college.&quot;, &quot;my brother Studies at Notre Dame College.&quot;, &quot;My Brother studies at Notre Dame College.&quot;], ans: &quot;My brother studies at Notre Dame College.&quot; },
          { q: &quot;rina said i will visit coxs bazar next month&quot;, opts: [&quot;Rina said, \&quot;I will visit Cox&#39;s Bazar next month.\&quot;&quot;, &quot;rina said, \&quot;I will visit Cox&#39;s Bazar next month.\&quot;&quot;, &quot;Rina said \&quot;I will visit Coxs Bazar next month\&quot;&quot;, &quot;Rina said, I will visit Cox&#39;s Bazar next month.&quot;], ans: &quot;Rina said, \&quot;I will visit Cox&#39;s Bazar next month.\&quot;&quot; }
        ]
      }
    ];

    // Part 14: gap-fill synthesis passage (5 marks)
    const m14Answers = {
        &quot;m14-1&quot;: &quot;exclamation mark&quot;,
        &quot;m14-2&quot;: &quot;terminal&quot;,
        &quot;m14-3&quot;: &quot;coordinating&quot;,
        &quot;m14-4&quot;: &quot;comma splice&quot;,
        &quot;m14-5&quot;: &quot;always&quot;
    };

    // ============ SCORE STATE ============
    const scores = {};
    modules.forEach(m =&gt; scores[m.id] = 0);
    scores.m14 = 0;
    const TOTAL_MARKS = 70;

    function buildScoreboard() {
        const board = document.getElementById(&quot;scoreboard&quot;);
        let html = &quot;&quot;;
        modules.forEach(m =&gt; {
            html += `&lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-${m.id}&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;${m.label}&lt;/div&gt;&lt;/div&gt;`;
        });
        html += `&lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m14&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Synthesis&lt;/div&gt;&lt;/div&gt;`;
        html += `&lt;div class=&quot;score-item&quot; style=&quot;grid-column: 1 / -1; margin-top:4px;&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/${TOTAL_MARKS}&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;`;
        board.innerHTML = html;
    }

    function updateScoreboard() {
        let total = 0;
        modules.forEach(m =&gt; {
            document.getElementById(`score-${m.id}`).textContent = scores[m.id] + &#39;/5&#39;;
            total += scores[m.id];
        });
        document.getElementById(&#39;score-m14&#39;).textContent = scores.m14 + &#39;/5&#39;;
        total += scores.m14;
        document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/&#39; + TOTAL_MARKS;
        document.getElementById(&#39;progress-bar&#39;).style.width = ((total / TOTAL_MARKS) * 100) + &#39;%&#39;;
    }

    // ============ TABS &amp; PANELS ============
    function buildTabsAndPanels() {
        const tabsWrap = document.getElementById(&quot;tabs-wrap&quot;);
        const panelsWrap = document.getElementById(&quot;panels-wrap&quot;);
        let tabsHtml = &quot;&quot;;
        let panelsHtml = &quot;&quot;;

        modules.forEach((m, idx) =&gt; {
            tabsHtml += `&lt;button class=&quot;tab-btn${idx === 0 ? &#39; active&#39; : &#39;&#39;}&quot; data-panel=&quot;${m.id}&quot;&gt;${m.tabLabel} &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;`;
            panelsHtml += `
                &lt;section class=&quot;panel${idx === 0 ? &#39; active&#39; : &#39;&#39;}&quot; id=&quot;panel-${m.id}&quot;&gt;
                    &lt;div class=&quot;kicker&quot;&gt;${m.tabLabel.split(&#39;:&#39;)[0]} (5 Marks)&lt;/div&gt;
                    &lt;h2&gt;${m.tabLabel.split(&#39;: &#39;)[1]}&lt;/h2&gt;
                    &lt;p class=&quot;section-hint&quot;&gt;${m.hint}&lt;/p&gt;
                    &lt;div id=&quot;module-${m.id}-container&quot;&gt;&lt;/div&gt;
                    &lt;button class=&quot;btn-check&quot; data-check=&quot;${m.id}&quot;&gt;Verify ${m.tabLabel.split(&#39;:&#39;)[0]}&lt;/button&gt;
                &lt;/section&gt;`;
        });

        // Part 14 tab + panel
        tabsHtml += `&lt;button class=&quot;tab-btn&quot; data-panel=&quot;m14&quot;&gt;Part 14: Rules Synthesis &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;`;
        panelsHtml += `
            &lt;section class=&quot;panel&quot; id=&quot;panel-m14&quot;&gt;
                &lt;div class=&quot;kicker&quot;&gt;Part 14 (5 Marks)&lt;/div&gt;
                &lt;h2&gt;Rules Synthesis Gap-Fill&lt;/h2&gt;
                &lt;p class=&quot;section-hint&quot;&gt;Select the correct word or phrase to complete each rule summary (1 mark each).&lt;/p&gt;
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-text&quot; id=&quot;module14-container&quot;&gt;
                        Punctuation marks that end a sentence — the period, the
                        &lt;select id=&quot;m14-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;exclamation mark&quot;&gt;exclamation mark&lt;/option&gt;&lt;option value=&quot;hyphen&quot;&gt;hyphen&lt;/option&gt;&lt;option value=&quot;colon&quot;&gt;colon&lt;/option&gt;&lt;/select&gt;
                        , and the question mark — are known as
                        &lt;select id=&quot;m14-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;terminal&quot;&gt;terminal&lt;/option&gt;&lt;option value=&quot;pause&quot;&gt;pause&lt;/option&gt;&lt;option value=&quot;conjunctive&quot;&gt;conjunctive&lt;/option&gt;&lt;/select&gt;
                        punctuation. A comma is used before a
                        &lt;select id=&quot;m14-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;coordinating&quot;&gt;coordinating&lt;/option&gt;&lt;option value=&quot;subordinating&quot;&gt;subordinating&lt;/option&gt;&lt;option value=&quot;relative&quot;&gt;relative&lt;/option&gt;&lt;/select&gt;
                        conjunction (such as &#39;and&#39; or &#39;but&#39;) when it joins two independent clauses; omitting the conjunction and using only a comma creates an error called a
                        &lt;select id=&quot;m14-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;comma splice&quot;&gt;comma splice&lt;/option&gt;&lt;option value=&quot;run-on hyphen&quot;&gt;run-on hyphen&lt;/option&gt;&lt;option value=&quot;dangling modifier&quot;&gt;dangling modifier&lt;/option&gt;&lt;/select&gt;
                        . An essential relative clause is never set off with commas, while a non-essential relative clause is
                        &lt;select id=&quot;m14-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;always&quot;&gt;always&lt;/option&gt;&lt;option value=&quot;never&quot;&gt;never&lt;/option&gt;&lt;option value=&quot;rarely&quot;&gt;rarely&lt;/option&gt;&lt;/select&gt;
                        set off with commas.
                    &lt;/div&gt;
                    &lt;button class=&quot;btn-check&quot; data-check=&quot;m14&quot;&gt;Verify Part 14&lt;/button&gt;
                    &lt;div id=&quot;m14-feedback&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;`;

        tabsWrap.innerHTML = tabsHtml;
        panelsWrap.innerHTML = panelsHtml;

        // Tab navigation
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
            btn.addEventListener(&#39;click&#39;, () =&gt; {
                document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
                document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
                btn.classList.add(&#39;active&#39;);
                document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
                btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
            });
        });

        // Check buttons
        document.querySelectorAll(&#39;.btn-check[data-check]&#39;).forEach(btn =&gt; {
            btn.addEventListener(&#39;click&#39;, () =&gt; {
                const id = btn.dataset.check;
                if (id === &#39;m14&#39;) { checkModule14(); return; }
                const mod = modules.find(m =&gt; m.id === id);
                if (mod.type === &#39;mcq&#39;) checkMCQModule(mod);
                else checkFIBModule(mod);
            });
        });
    }

    // ============ RENDER MODULES ============
    function renderMCQModule(mod) {
        const container = document.getElementById(`module-${mod.id}-container`);
        let html = &quot;&quot;;
        mod.data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; { optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`; });
            html += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;&lt;select id=&quot;${mod.id}-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;&lt;/div&gt;
                    &lt;div id=&quot;${mod.id}-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;`;
        });
        container.innerHTML = html;
    }

    function renderFIBModule(mod) {
        const container = document.getElementById(`module-${mod.id}-container`);
        let html = &quot;&quot;;
        mod.data.forEach((item, index) =&gt; {
            html += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;${mod.id}-in-${index}&quot; placeholder=&quot;Type your answer...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;${mod.id}-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;${mod.id}-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;`;
        });
        container.innerHTML = html;
    }

    // ============ CHECK MODULES ============
    function checkMCQModule(mod) {
        let currentScore = 0;
        mod.data.forEach((item, index) =&gt; {
            const select = document.getElementById(`${mod.id}-${index}`);
            const fb = document.getElementById(`${mod.id}-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores[mod.id] = currentScore;
        updateScoreboard();
    }

    function normalize(str) {
        return str.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()?]/g, &quot;&quot;).replace(/\s+/g, &quot; &quot;).toLowerCase();
    }

    function checkFIBModule(mod) {
        let currentScore = 0;
        mod.data.forEach((item, index) =&gt; {
            const input = document.getElementById(`${mod.id}-in-${index}`);
            const fb = document.getElementById(`${mod.id}-fb-${index}`);
            const exp = document.getElementById(`${mod.id}-exp-${index}`);

            const cleanUser = normalize(input.value);
            const cleanTarget = normalize(item.target);
            const cleanAlt = item.targetAlt ? normalize(item.targetAlt) : null;

            if (cleanUser === cleanTarget || (cleanAlt &amp;&amp; cleanUser === cleanAlt)) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.target}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores[mod.id] = currentScore;
        updateScoreboard();
    }

    function checkModule14() {
        let currentScore = 0;
        Object.keys(m14Answers).forEach(id =&gt; {
            const select = document.getElementById(id);
            if (select.value === m14Answers[id]) {
                select.className = &quot;correct-input&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
            }
        });
        const fb = document.getElementById(&quot;m14-feedback&quot;);
        if (currentScore === 5) {
            fb.textContent = &quot;Outstanding! All 5 passage choices are correct (+5 Marks).&quot;;
            fb.className = &quot;feedback correct show&quot;;
        } else {
            fb.textContent = `You scored ${currentScore}/5. Review highlighted incorrect fields.`;
            fb.className = &quot;feedback incorrect show&quot;;
        }
        scores.m14 = currentScore;
        updateScoreboard();
    }

    // ============ INITIALIZATION ============
    window.onload = () =&gt; {
        buildScoreboard();
        buildTabsAndPanels();
        modules.forEach(m =&gt; {
            if (m.type === &#39;mcq&#39;) renderMCQModule(m);
            else renderFIBModule(m);
        });
        updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/8364532722660508456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/8364532722660508456?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/8364532722660508456'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/8364532722660508456'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-49-punctuation-exercises.html' title='Chapter 48: Punctuation Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-6514324326986447615</id><published>2026-08-09T03:45:58.903-07:00</published><updated>2026-08-09T23:18:48.153-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 46: Misplaced Modifiers Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty-Six Assessment · Misplaced Modifier (20 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:700px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  /* --- FIXED SCOREBOARD LAYOUT --- */
  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(4, 1fr);
    gap:12px 8px;
    border:1px solid var(--line);
    border-radius:6px;
    padding:14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ text-align:center; padding:4px; min-width:0; }
  .score-item.total-item{
    grid-column: 1 / -1;
    margin-top:4px;
    padding-top:8px;
    border-top:1px dashed var(--line);
  }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(13px,3vw,15px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:9px;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:2px;
    line-height:1.3;
  }
  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select{ max-width:100%; }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:12px 8px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:9px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty-Six Assessment&lt;/div&gt;
    &lt;h1&gt;The &lt;em&gt;Misplaced&lt;/em&gt; Modifier&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 20-mark interactive evaluation testing recognition and correction of misplaced (squinting) modifiers — words, phrases, or clauses placed in the wrong position, which distort or confuse the intended meaning of a sentence.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (Concept MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Rewrite Correctly)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Spot the Fix)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m4&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 4 (Gap-Fill)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item total-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/20&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Concept MCQs &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Rewrite Correctly &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Spot the Fix &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m4&quot;&gt;Part 4: Rules Synthesis &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Concept MCQs (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct answer about how misplaced modifiers work (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Rewrite Correctly (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rewrite the Misplaced Sentence&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence below has a misplaced modifier. Rewrite it by moving the modifier next to the word it is meant to describe (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Spot the Fix (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot the Correctly Fixed Sentence&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the option that correctly repositions the modifier (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 4: Rules Synthesis Gap-Fill Passage (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m4&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 4 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rules Synthesis Gap-Fill&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct word to complete each part of the rule summary (1 mark each).&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-text&quot; id=&quot;module4-container&quot;&gt;
        A misplaced modifier is also known as a
        &lt;select id=&quot;m4-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;squinting&quot;&gt;squinting&lt;/option&gt;&lt;option value=&quot;dangling&quot;&gt;dangling&lt;/option&gt;&lt;option value=&quot;floating&quot;&gt;floating&lt;/option&gt;&lt;/select&gt;
        modifier. It can be a word, an adjective, an adverb, a phrase, or a
        &lt;select id=&quot;m4-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;clause&quot;&gt;clause&lt;/option&gt;&lt;option value=&quot;preposition&quot;&gt;preposition&lt;/option&gt;&lt;option value=&quot;conjunction&quot;&gt;conjunction&lt;/option&gt;&lt;/select&gt;,
        and any of these can end up wrongly placed in a sentence. As a general rule, a modifier should always be placed close to the
        &lt;select id=&quot;m4-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;noun&quot;&gt;noun&lt;/option&gt;&lt;option value=&quot;subject&quot;&gt;subject&lt;/option&gt;&lt;option value=&quot;verb&quot;&gt;verb&lt;/option&gt;&lt;/select&gt;
        it is intended to modify. When a modifier is misplaced, the intended meaning of the sentence can become confusing, illogical, or even
        &lt;select id=&quot;m4-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;ridiculous&quot;&gt;ridiculous&lt;/option&gt;&lt;option value=&quot;formal&quot;&gt;formal&lt;/option&gt;&lt;option value=&quot;shorter&quot;&gt;shorter&lt;/option&gt;&lt;/select&gt;.
        Sometimes improper placement creates two possible readings at once, which is called
        &lt;select id=&quot;m4-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;double meaning&quot;&gt;double meaning&lt;/option&gt;&lt;option value=&quot;single meaning&quot;&gt;single meaning&lt;/option&gt;&lt;option value=&quot;no meaning&quot;&gt;no meaning&lt;/option&gt;&lt;/select&gt;.
        For example, &#39;He told us on Tuesday he would watch Avatar&#39; is ambiguous because it does not make clear whether Tuesday was the day he told us, or the day he intended to watch the film.
      &lt;/div&gt;

      &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule4()&quot;&gt;Verify Part 4&lt;/button&gt;
      &lt;div id=&quot;m4-feedback&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Forty-Six Assessment · Misplaced Modifier Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
      });
    });

    // Score State (20 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0, m4: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/5&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/5&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/5&#39;;
      document.getElementById(&#39;score-m4&#39;).textContent = scores.m4 + &#39;/5&#39;;

      const total = scores.m1 + scores.m2 + scores.m3 + scores.m4;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/20&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 20) * 100) + &#39;%&#39;;
    }

    // --- PART 1: CONCEPT MCQS (5 Marks = 5 x 1 Mark) ---
    const m1Data = [
      { q: &quot;A misplaced modifier is also known as a(n) ___ modifier.&quot;, opts: [&quot;squinting&quot;, &quot;dangling&quot;, &quot;absolute&quot;, &quot;coordinating&quot;], ans: &quot;squinting&quot; },
      { q: &quot;Which of the following can a misplaced modifier be?&quot;, opts: [&quot;A word, phrase, or clause&quot;, &quot;Only a single word&quot;, &quot;Only a full clause&quot;, &quot;Only a preposition&quot;], ans: &quot;A word, phrase, or clause&quot; },
      { q: &quot;What happens to the intended meaning of a sentence when a modifier is misplaced?&quot;, opts: [&quot;It stays exactly the same&quot;, &quot;It becomes confusing, illogical, or ridiculous&quot;, &quot;It automatically becomes more formal&quot;, &quot;The sentence becomes grammatically impossible to read&quot;], ans: &quot;It becomes confusing, illogical, or ridiculous&quot; },
      { q: &quot;What is the general rule for correctly placing a modifier?&quot;, opts: [&quot;It should be placed close to the noun it modifies&quot;, &quot;It should always be placed at the start of the sentence&quot;, &quot;It should always be placed at the end of the sentence&quot;, &quot;It should be placed right after the main verb&quot;], ans: &quot;It should be placed close to the noun it modifies&quot; },
      { q: &quot;What can improper use of modifiers sometimes create in a sentence?&quot;, opts: [&quot;Extra punctuation&quot;, &quot;Double meaning&quot;, &quot;A new subject&quot;, &quot;A shorter sentence&quot;], ans: &quot;Double meaning&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: REWRITE CORRECTLY (5 Marks = 5 x 1 Mark) ---
    const m2Data = [
      {
        q: &quot;The man drank a cold cup of coffee. (Misplaced adjective)&quot;,
        targets: [&quot;The man drank a cup of cold coffee.&quot;],
        exp: &quot;&#39;Cold&#39; is meant to describe the coffee, not the cup, so it must sit next to &#39;coffee&#39;.&quot;
      },
      {
        q: &quot;The striped man is wearing a shirt. (Misplaced adjective)&quot;,
        targets: [&quot;The man is wearing a striped shirt.&quot;],
        exp: &quot;A shirt can be striped, not a person — &#39;striped&#39; must sit next to &#39;shirt&#39;.&quot;
      },
      {
        q: &quot;The girl came to me wearing a black t-shirt. (Misplaced phrase)&quot;,
        targets: [&quot;The girl wearing a black t-shirt came to me.&quot;],
        exp: &quot;The phrase &#39;wearing a black t-shirt&#39; is meant to modify &#39;girl,&#39; so it must sit next to &#39;girl,&#39; not next to &#39;me.&#39;&quot;
      },
      {
        q: &quot;The parts are good which are made in Japan. (Misplaced clause)&quot;,
        targets: [&quot;The parts which are made in Japan are good.&quot;],
        exp: &quot;The clause &#39;which are made in Japan&#39; is meant to modify &#39;the parts,&#39; so it must come right after &#39;the parts.&#39;&quot;
      },
      {
        q: &quot;Give it to him that I bought yesterday. (Misplaced clause)&quot;,
        targets: [&quot;Give it that I bought yesterday to him.&quot;],
        exp: &quot;The clause &#39;that I bought yesterday&#39; is meant to modify &#39;it,&#39; not &#39;him,&#39; so it must sit next to &#39;it.&#39;&quot;
      }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Misplaced Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type the corrected sentence with the modifier repositioned...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m2-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m2-in-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);
            const exp = document.getElementById(`m2-exp-${index}`);

            const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
            const isMatch = item.targets.some(t =&gt; t.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase() === cleanUser);

            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.targets[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: SPOT THE FIX (5 Marks = 5 x 1 Mark) ---
    const m3Data = [
      { q: &quot;Which sentence correctly avoids the misplaced adjective?&quot;, opts: [&quot;The man drank a cold cup of coffee.&quot;, &quot;The man drank a cup of cold coffee.&quot;, &quot;The cold man drank a cup of coffee.&quot;, &quot;A cup of coffee cold was drunk by the man.&quot;], ans: &quot;The man drank a cup of cold coffee.&quot; },
      { q: &quot;Which sentence correctly avoids the misplaced adjective?&quot;, opts: [&quot;The striped man is wearing a shirt.&quot;, &quot;The man striped is wearing a shirt.&quot;, &quot;The man is wearing a striped shirt.&quot;, &quot;A shirt striped, the man is wearing.&quot;], ans: &quot;The man is wearing a striped shirt.&quot; },
      { q: &quot;Where should &#39;only&#39; go to mean &#39;I hate nobody but him&#39; (and nothing else)?&quot;, opts: [&quot;Only I hate him.&quot;, &quot;I only hate him.&quot;, &quot;I hate only him.&quot;, &quot;I hate him only nobody.&quot;], ans: &quot;I hate only him.&quot; },
      { q: &quot;Which sentence correctly avoids the misplaced phrase?&quot;, opts: [&quot;The girl came to me wearing a black t-shirt.&quot;, &quot;Wearing a black t-shirt, to me the girl came.&quot;, &quot;The girl wearing a black t-shirt came to me.&quot;, &quot;To me came the girl, wearing a black t-shirt.&quot;], ans: &quot;The girl wearing a black t-shirt came to me.&quot; },
      { q: &quot;Which sentence correctly avoids the misplaced clause?&quot;, opts: [&quot;The parts are good which are made in Japan.&quot;, &quot;The parts which are made in Japan are good.&quot;, &quot;Which are made in Japan, the parts are good.&quot;, &quot;The parts, good, which are made in Japan.&quot;], ans: &quot;The parts which are made in Japan are good.&quot; }
    ];

    function renderModule3() {
        const container = document.getElementById(&quot;module3-container&quot;);
        m3Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m3-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule3() {
        let currentScore = 0;
        m3Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m3-${index}`);
            const fb = document.getElementById(`m3-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // --- PART 4: GAP-FILL PASSAGE (5 Marks = 5 x 1 Mark) ---
    const m4Answers = {
        &quot;m4-1&quot;: &quot;squinting&quot;,
        &quot;m4-2&quot;: &quot;clause&quot;,
        &quot;m4-3&quot;: &quot;noun&quot;,
        &quot;m4-4&quot;: &quot;ridiculous&quot;,
        &quot;m4-5&quot;: &quot;double meaning&quot;
    };

    function checkModule4() {
        let currentScore = 0;
        Object.keys(m4Answers).forEach(id =&gt; {
            const select = document.getElementById(id);
            if (select.value === m4Answers[id]) {
                select.className = &quot;correct-input&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
            }
        });

        const fb = document.getElementById(&quot;m4-feedback&quot;);
        if (currentScore === 5) {
            fb.textContent = &quot;Outstanding! All 5 passage choices are correct (+5 Marks).&quot;;
            fb.className = &quot;feedback correct show&quot;;
        } else {
            fb.textContent = `You scored ${currentScore}/5. Review highlighted incorrect fields.`;
            fb.className = &quot;feedback incorrect show&quot;;
        }
        scores.m4 = currentScore;
        updateScoreboard();
    }

    // Initialization
    window.onload = () =&gt; {
        renderModule1();
        renderModule2();
        renderModule3();
        updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/6514324326986447615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/6514324326986447615?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/6514324326986447615'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/6514324326986447615'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-46-misplaced-modifiers-exercises_0365040765.html' title='Chapter 46: Misplaced Modifiers Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-1784597433025671449</id><published>2026-08-09T03:17:45.401-07:00</published><updated>2026-08-09T23:16:43.480-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 47: Dangling Modifiers Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty-Six Assessment · Dangling Modifier (20 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:700px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  /* RESPONSIVE DASHBOARD / SCOREBOARD FIX */
  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap:10px;
    border:1px solid var(--line);
    border-radius:8px;
    padding:16px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{
    text-align:center;
    padding:10px 8px;
    background:#ffffff;
    border:1px solid var(--line);
    border-radius:6px;
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    min-width:0;
  }
  .score-item.total-item{
    grid-column: 1 / -1;
    background: rgba(13, 110, 253, 0.05);
    border-color: var(--blue-soft);
    padding:12px 8px;
  }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(15px, 3.5vw, 18px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item.total-item .num{
    font-size:clamp(18px, 4.5vw, 22px);
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.04em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:4px;
    line-height:1.3;
  }

  .progress-outer{
    width:100%;
    height:8px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:14px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select{ max-width:100%; }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:8px; padding:10px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:9px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty-Six Assessment&lt;/div&gt;
    &lt;h1&gt;The &lt;em&gt;Dangling&lt;/em&gt; Modifier&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 20-mark interactive evaluation testing recognition and correction of dangling modifiers — phrases that describe someone or something not clearly stated in the sentence.&lt;/p&gt;

    &lt;!-- Corrected &amp; Fully Responsive Scoreboard Dashboard --&gt;
    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;
        &lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;
        &lt;div class=&quot;lbl&quot;&gt;Part 1 (Concept MCQs)&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;
        &lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;
        &lt;div class=&quot;lbl&quot;&gt;Part 2 (Rewrite Correctly)&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;
        &lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;
        &lt;div class=&quot;lbl&quot;&gt;Part 3 (Spot the Fix)&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;
        &lt;div class=&quot;num&quot; id=&quot;score-m4&quot;&gt;0/5&lt;/div&gt;
        &lt;div class=&quot;lbl&quot;&gt;Part 4 (Gap-Fill)&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;score-item total-item&quot;&gt;
        &lt;div class=&quot;num&quot; id=&quot;score-total&quot;&gt;0/20&lt;/div&gt;
        &lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Concept MCQs &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Rewrite Correctly &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Spot the Fix &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m4&quot;&gt;Part 4: Rules Synthesis &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Concept MCQs (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct answer about how dangling modifiers work (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Rewrite Correctly (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rewrite the Dangling Sentence&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Each sentence below has a dangling modifier. Rewrite it by supplying a clear subject for the modifier to describe (1 mark each). Any reasonable subject pronoun is accepted.&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Spot the Fix (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Spot the Correctly Fixed Sentence&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the option that correctly removes the dangling modifier (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 4: Rules Synthesis Gap-Fill Passage (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m4&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 4 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rules Synthesis Gap-Fill&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct word to complete each part of the rule summary (1 mark each).&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-text&quot; id=&quot;module4-container&quot;&gt;
        A dangling modifier is a phrase or clause that describes or modifies someone or something not clearly
        &lt;select id=&quot;m4-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;stated&quot;&gt;stated&lt;/option&gt;&lt;option value=&quot;implied&quot;&gt;implied&lt;/option&gt;&lt;option value=&quot;repeated&quot;&gt;repeated&lt;/option&gt;&lt;/select&gt;
        in a sentence. Unlike an ordinary misplaced modifier, which can be corrected by moving it to a different part of the sentence, a dangling modifier cannot be corrected this way — instead, we must provide a clear
        &lt;select id=&quot;m4-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;subject&quot;&gt;subject&lt;/option&gt;&lt;option value=&quot;verb&quot;&gt;verb&lt;/option&gt;&lt;option value=&quot;object&quot;&gt;object&lt;/option&gt;&lt;/select&gt;
        for it to modify. A dangling modifier also occurs when the intended subject is replaced by
        &lt;select id=&quot;m4-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;another one&quot;&gt;another one&lt;/option&gt;&lt;option value=&quot;the same one&quot;&gt;the same one&lt;/option&gt;&lt;option value=&quot;no one&quot;&gt;no one&lt;/option&gt;&lt;/select&gt;.
        Although a dangling modifier can appear at the beginning or end of a sentence, in most cases it appears at the
        &lt;select id=&quot;m4-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;beginning&quot;&gt;beginning&lt;/option&gt;&lt;option value=&quot;middle&quot;&gt;middle&lt;/option&gt;&lt;option value=&quot;end&quot;&gt;end&lt;/option&gt;&lt;/select&gt;
        of the sentence. For example, &#39;After finishing the work, the game began&#39; is dangling because it does not tell us who
        &lt;select id=&quot;m4-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;finished the work&quot;&gt;finished the work&lt;/option&gt;&lt;option value=&quot;started the game&quot;&gt;started the game&lt;/option&gt;&lt;option value=&quot;gave the salary&quot;&gt;gave the salary&lt;/option&gt;&lt;/select&gt;.
      &lt;/div&gt;

      &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule4()&quot;&gt;Verify Part 4&lt;/button&gt;
      &lt;div id=&quot;m4-feedback&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Forty-Six Assessment · Dangling Modifier Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
      });
    });

    // Score State (20 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0, m4: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/5&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/5&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/5&#39;;
      document.getElementById(&#39;score-m4&#39;).textContent = scores.m4 + &#39;/5&#39;;

      const total = scores.m1 + scores.m2 + scores.m3 + scores.m4;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/20&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 20) * 100) + &#39;%&#39;;
    }

    // --- PART 1: CONCEPT MCQS (5 Marks = 5 x 1 Mark) ---
    const m1Data = [
      { q: &quot;What is a dangling modifier?&quot;, opts: [&quot;A phrase or clause that describes someone or something not clearly stated in the sentence&quot;, &quot;A verb that agrees with the wrong subject&quot;, &quot;A noun that has no plural form&quot;, &quot;A punctuation mark placed incorrectly&quot;], ans: &quot;A phrase or clause that describes someone or something not clearly stated in the sentence&quot; },
      { q: &quot;How can an ordinary misplaced modifier usually be corrected?&quot;, opts: [&quot;By deleting it entirely&quot;, &quot;By moving it to a different part of the sentence&quot;, &quot;By changing it into a question&quot;, &quot;By adding an apostrophe&quot;], ans: &quot;By moving it to a different part of the sentence&quot; },
      { q: &quot;How must a dangling modifier be corrected?&quot;, opts: [&quot;By moving it to a different part of the sentence&quot;, &quot;By providing a clear subject for it to modify&quot;, &quot;By turning it into an adjective&quot;, &quot;By repeating the modifier twice&quot;], ans: &quot;By providing a clear subject for it to modify&quot; },
      { q: &quot;In most cases, where does a dangling modifier appear in a sentence?&quot;, opts: [&quot;At the beginning&quot;, &quot;In the middle only&quot;, &quot;Always at the very end&quot;, &quot;It never appears in a full sentence&quot;], ans: &quot;At the beginning&quot; },
      { q: &quot;Besides a missing subject, when else does a dangling modifier occur?&quot;, opts: [&quot;When the sentence has too many commas&quot;, &quot;When the intended subject is replaced by another one&quot;, &quot;When the verb is in the passive voice&quot;, &quot;When the sentence has no modifier at all&quot;], ans: &quot;When the intended subject is replaced by another one&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: REWRITE CORRECTLY (5 Marks = 5 x 1 Mark) ---
    const m2Data = [
      {
        q: &quot;After finishing the work, the game began. (Dangling)&quot;,
        targets: [&quot;After finishing the work, we started our game.&quot;],
        exp: &quot;The dangling version never tells us who finished the work; &#39;we&#39; supplies the missing subject.&quot;
      },
      {
        q: &quot;Having gone to Khulna, beautiful natural sceneries were enjoyed. (Dangling)&quot;,
        targets: [
          &quot;Having gone to Sundarbans, I enjoyed beautiful natural scenery.&quot;,
          &quot;Having gone to Sundarbans, we enjoyed beautiful natural scenery.&quot;,
          &quot;Having gone to Sundarbans, they enjoyed beautiful natural scenery.&quot;
        ],
        exp: &quot;The dangling version never tells us who went and enjoyed the scenery; adding I/we/they supplies the missing subject.&quot;
      },
      {
        q: &quot;Doing the work seriously, a handsome salary was given. (Dangling)&quot;,
        targets: [&quot;Doing the work seriously, they received a handsome salary.&quot;],
        exp: &quot;The dangling version never tells us who worked seriously; &#39;they&#39; supplies the missing subject.&quot;
      },
      {
        q: &quot;Going to Church, the priest was not found. (Dangling)&quot;,
        targets: [
          &quot;Going to church, I did not find the priest.&quot;,
          &quot;Going to church, we did not find the priest.&quot;,
          &quot;Going to church, they did not find the priest.&quot;,
          &quot;Going to church, people did not find the priest.&quot;
        ],
        exp: &quot;The dangling version never tells us who went looking for the priest; adding a subject fixes it.&quot;
      },
      {
        q: &quot;Searching the almirah, the key was not found. (Dangling)&quot;,
        targets: [
          &quot;Searching the almirah, I did not find the key.&quot;,
          &quot;Searching the almirah, he did not find the key.&quot;,
          &quot;Searching the almirah, she did not find the key.&quot;,
          &quot;Searching the almirah, they did not find the key.&quot;
        ],
        exp: &quot;The dangling version never tells us who searched the almirah; adding a subject answers &#39;who did not find the key?&#39;&quot;
      }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Dangling Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type the corrected sentence with a clear subject...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m2-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m2-in-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);
            const exp = document.getElementById(`m2-exp-${index}`);

            const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
            const isMatch = item.targets.some(t =&gt; t.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase() === cleanUser);

            if (isMatch) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Example target: &quot;${item.targets[0]}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: SPOT THE FIX (5 Marks = 5 x 1 Mark) ---
    const m3Data = [
      { q: &quot;Which sentence correctly avoids the dangling modifier?&quot;, opts: [&quot;After finishing the work, the game began.&quot;, &quot;After finishing the work, we started our game.&quot;, &quot;The game began, after finishing the work by nobody.&quot;, &quot;After the work finishing, game began.&quot;], ans: &quot;After finishing the work, we started our game.&quot; },
      { q: &quot;Which sentence correctly avoids the dangling modifier?&quot;, opts: [&quot;Having gone to Khulna, beautiful natural sceneries were enjoyed.&quot;, &quot;Beautiful natural sceneries, having gone to Khulna, were enjoyed.&quot;, &quot;Having gone to Sundarbans, we enjoyed beautiful natural scenery.&quot;, &quot;Natural sceneries were enjoyed, having gone.&quot;], ans: &quot;Having gone to Sundarbans, we enjoyed beautiful natural scenery.&quot; },
      { q: &quot;Which sentence correctly avoids the dangling modifier?&quot;, opts: [&quot;Doing the work seriously, a handsome salary was given.&quot;, &quot;A handsome salary, doing the work seriously, was given.&quot;, &quot;Doing the work seriously, they received a handsome salary.&quot;, &quot;Seriously doing the work, salary was handsome and given.&quot;], ans: &quot;Doing the work seriously, they received a handsome salary.&quot; },
      { q: &quot;Which sentence correctly avoids the dangling modifier?&quot;, opts: [&quot;Going to Church, the priest was not found.&quot;, &quot;The priest, going to church, was not found.&quot;, &quot;Going to church, they did not find the priest.&quot;, &quot;Not found was the priest, going to church.&quot;], ans: &quot;Going to church, they did not find the priest.&quot; },
      { q: &quot;Which sentence correctly avoids the dangling modifier?&quot;, opts: [&quot;Searching the almirah, the key was not found.&quot;, &quot;The key, searching the almirah, was not found.&quot;, &quot;Searching the almirah, they did not find the key.&quot;, &quot;Not found, searching the almirah, was the key.&quot;], ans: &quot;Searching the almirah, they did not find the key.&quot; }
    ];

    function renderModule3() {
        const container = document.getElementById(&quot;module3-container&quot;);
        m3Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m3-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule3() {
        let currentScore = 0;
        m3Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m3-${index}`);
            const fb = document.getElementById(`m3-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // --- PART 4: GAP-FILL PASSAGE (5 Marks = 5 x 1 Mark) ---
    const m4Answers = {
        &quot;m4-1&quot;: &quot;stated&quot;,
        &quot;m4-2&quot;: &quot;subject&quot;,
        &quot;m4-3&quot;: &quot;another one&quot;,
        &quot;m4-4&quot;: &quot;beginning&quot;,
        &quot;m4-5&quot;: &quot;finished the work&quot;
    };

    function checkModule4() {
        let currentScore = 0;
        Object.keys(m4Answers).forEach(id =&gt; {
            const select = document.getElementById(id);
            if (select.value === m4Answers[id]) {
                select.className = &quot;correct-input&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
            }
        });

        const fb = document.getElementById(&quot;m4-feedback&quot;);
        if (currentScore === 5) {
            fb.textContent = &quot;Outstanding! All 5 passage choices are correct (+5 Marks).&quot;;
            fb.className = &quot;feedback correct show&quot;;
        } else {
            fb.textContent = `You scored ${currentScore}/5. Review highlighted incorrect fields.`;
            fb.className = &quot;feedback incorrect show&quot;;
        }
        scores.m4 = currentScore;
        updateScoreboard();
    }

    // Initialization
    window.onload = () =&gt; {
        renderModule1();
        renderModule2();
        renderModule3();
        updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/1784597433025671449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/1784597433025671449?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1784597433025671449'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1784597433025671449'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-46-misplaced-modifiers-exercises.html' title='Chapter 47: Dangling Modifiers Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-8833333700324375767</id><published>2026-08-09T03:01:16.369-07:00</published><updated>2026-08-09T03:06:02.697-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 45: Number</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty-Five Assessment · Number: Singular &amp; Plural (50 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:700px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(5, 1fr);
    gap:8px;
    border:1px solid var(--line);
    border-radius:6px;
    padding:12px 14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ text-align:center; padding:4px; min-width:0; }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(11px,2.6vw,13px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:8px;
    letter-spacing:.01em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:2px;
    line-height:1.25;
  }
  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select{ max-width:100%; }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
    .scoreboard{ grid-template-columns: repeat(3, 1fr); }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:10px 6px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:9px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty-Five Assessment&lt;/div&gt;
    &lt;h1&gt;Grammatical &lt;em&gt;Number&lt;/em&gt;: Singular &amp; Plural&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 50-mark interactive evaluation testing pronoun number, all seventeen plural-formation rules, irregular and same-form plurals, deceptive number agreement, and apostrophe conventions.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot; id=&quot;scoreboard&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot; id=&quot;tabs-wrap&quot;&gt;&lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot; id=&quot;panels-wrap&quot;&gt;&lt;/div&gt;

&lt;footer&gt;Chapter Forty-Five Assessment · Number (Singular &amp;amp; Plural) Module&lt;/footer&gt;

&lt;script&gt;
    // ============ MODULE DEFINITIONS ============
    // Parts 1-9: auto-rendered MCQ / Fill-in-the-blank modules (5 marks each = 45)
    const modules = [
      {
        id: &quot;m1&quot;, label: &quot;Pronouns&quot;, tabLabel: &quot;Part 1: Pronoun Number&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct plural form of each pronoun (1 mark each). These do not follow any regular rule and must be memorised.&quot;,
        data: [
          { q: &quot;What is the plural form of &#39;I&#39;?&quot;, opts: [&quot;We&quot;, &quot;Us&quot;, &quot;Our&quot;, &quot;They&quot;], ans: &quot;We&quot; },
          { q: &quot;What is the plural form of &#39;Me&#39;?&quot;, opts: [&quot;We&quot;, &quot;Us&quot;, &quot;Ours&quot;, &quot;Our&quot;], ans: &quot;Us&quot; },
          { q: &quot;What is the plural form of &#39;Mine&#39;?&quot;, opts: [&quot;Ours&quot;, &quot;Us&quot;, &quot;Our&quot;, &quot;They&quot;], ans: &quot;Ours&quot; },
          { q: &quot;What is the plural form of &#39;This&#39;?&quot;, opts: [&quot;These&quot;, &quot;Those&quot;, &quot;They&quot;, &quot;Them&quot;], ans: &quot;These&quot; },
          { q: &quot;What is the plural form of &#39;His/her&#39;?&quot;, opts: [&quot;Them&quot;, &quot;Theirs&quot;, &quot;Their&quot;, &quot;They&quot;], ans: &quot;Their&quot; }
        ]
      },
      {
        id: &quot;m2&quot;, label: &quot;&#39;-s&#39; / &#39;-es&#39;&quot;, tabLabel: &quot;Part 2: Simple &#39;-s&#39; / &#39;-es&#39; Endings&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct plural form (Rules 1 &amp; 2): add &#39;-s&#39; generally, or &#39;-es&#39; after &#39;-s&#39;, &#39;-sh&#39;, &#39;-ch&#39;, &#39;-z&#39;, &#39;-x&#39; — unless &#39;-ch&#39; sounds like &#39;k&#39; (1 mark each).&quot;,
        data: [
          { q: &quot;What is the plural of &#39;Boy&#39;?&quot;, opts: [&quot;Boys&quot;, &quot;Boyes&quot;, &quot;Boyies&quot;, &quot;Boy&#39;s&quot;], ans: &quot;Boys&quot; },
          { q: &quot;What is the plural of &#39;Class&#39;?&quot;, opts: [&quot;Classs&quot;, &quot;Classes&quot;, &quot;Classies&quot;, &quot;Class&#39;s&quot;], ans: &quot;Classes&quot; },
          { q: &quot;What is the plural of &#39;Brush&#39;?&quot;, opts: [&quot;Brushs&quot;, &quot;Brushes&quot;, &quot;Brushies&quot;, &quot;Brush&#39;s&quot;], ans: &quot;Brushes&quot; },
          { q: &quot;What is the plural of &#39;Monarch&#39; (the &#39;ch&#39; is pronounced like &#39;k&#39;)?&quot;, opts: [&quot;Monarches&quot;, &quot;Monarchs&quot;, &quot;Monarchies&quot;, &quot;Monarch&#39;s&quot;], ans: &quot;Monarchs&quot; },
          { q: &quot;What is the plural of &#39;mango&#39;?&quot;, opts: [&quot;mangos&quot;, &quot;mangoss&quot;, &quot;mangoes&quot;, &quot;mango&#39;s&quot;], ans: &quot;mangoes&quot; }
        ]
      },
      {
        id: &quot;m3&quot;, label: &quot;&#39;o&#39; Nouns&quot;, tabLabel: &quot;Part 3: Nouns Ending in &#39;o&#39;&quot;, type: &quot;fib&quot;,
        hint: &quot;Type the correct plural form (Rules 3–7): vowel + &#39;o&#39; takes &#39;-s&#39;; consonant + &#39;o&#39; usually takes &#39;-es&#39;, with several exceptions to memorise (1 mark each).&quot;,
        data: [
          { q: &quot;Bamboo (vowel + &#39;o&#39;) →&quot;, target: &quot;bamboos&quot;, exp: &quot;If &#39;o&#39; is preceded by a vowel, we add only &#39;-s&#39;.&quot; },
          { q: &quot;Potato (consonant + &#39;o&#39;) →&quot;, target: &quot;potatoes&quot;, exp: &quot;Many nouns ending in consonant + &#39;o&#39; add &#39;-es&#39;.&quot; },
          { q: &quot;Piano (exception, consonant + &#39;o&#39;) →&quot;, target: &quot;pianos&quot;, exp: &quot;Some nouns ending in consonant + &#39;o&#39; form their plural by adding only &#39;-s&#39;.&quot; },
          { q: &quot;Buffalo (consonant + &#39;o&#39;) →&quot;, target: &quot;buffaloes&quot;, exp: &quot;Many nouns ending in consonant + &#39;o&#39; add &#39;-es&#39;.&quot; },
          { q: &quot;Cargo (can take either ending) →&quot;, target: &quot;cargoes&quot;, targetAlt: &quot;cargos&quot;, exp: &quot;Some nouns ending in &#39;o&#39; can take either &#39;-s&#39; or &#39;-es&#39;.&quot; }
        ]
      },
      {
        id: &quot;m4&quot;, label: &quot;&#39;y&#39; Nouns&quot;, tabLabel: &quot;Part 4: Nouns Ending in &#39;y&#39;&quot;, type: &quot;fib&quot;,
        hint: &quot;Type the correct plural form (Rule 8): consonant + &#39;y&#39; becomes &#39;-ies&#39;; vowel + &#39;y&#39; just adds &#39;-s&#39; (1 mark each).&quot;,
        data: [
          { q: &quot;Baby (consonant + &#39;y&#39;) →&quot;, target: &quot;babies&quot;, exp: &quot;Consonant + &#39;y&#39; → replace &#39;y&#39; with &#39;-i&#39; and add &#39;-es&#39;.&quot; },
          { q: &quot;Lady (consonant + &#39;y&#39;) →&quot;, target: &quot;ladies&quot;, exp: &quot;Consonant + &#39;y&#39; → replace &#39;y&#39; with &#39;-i&#39; and add &#39;-es&#39;.&quot; },
          { q: &quot;City (consonant + &#39;y&#39;) →&quot;, target: &quot;cities&quot;, exp: &quot;Consonant + &#39;y&#39; → replace &#39;y&#39; with &#39;-i&#39; and add &#39;-es&#39;.&quot; },
          { q: &quot;Monkey (vowel + &#39;y&#39;) →&quot;, target: &quot;monkeys&quot;, exp: &quot;If a vowel comes before &#39;y&#39;, we just add &#39;-s&#39;.&quot; },
          { q: &quot;Day (vowel + &#39;y&#39;) →&quot;, target: &quot;days&quot;, exp: &quot;If a vowel comes before &#39;y&#39;, we just add &#39;-s&#39;.&quot; }
        ]
      },
      {
        id: &quot;m5&quot;, label: &quot;&#39;f&#39;/&#39;fe&#39; Nouns&quot;, tabLabel: &quot;Part 5: Nouns Ending in &#39;f&#39; / &#39;fe&#39;&quot;, type: &quot;fib&quot;,
        hint: &quot;Type the correct plural form (Rules 9 &amp; 10): most &#39;f&#39;/&#39;fe&#39; nouns change to &#39;-ves&#39;, but a number of exceptions simply add &#39;-s&#39; (1 mark each).&quot;,
        data: [
          { q: &quot;Leaf →&quot;, target: &quot;leaves&quot;, exp: &quot;&#39;f&#39; changes to &#39;-v&#39; and &#39;-es&#39; is added.&quot; },
          { q: &quot;Calf →&quot;, target: &quot;calves&quot;, exp: &quot;&#39;f&#39; changes to &#39;-v&#39; and &#39;-es&#39; is added.&quot; },
          { q: &quot;Shelf →&quot;, target: &quot;shelves&quot;, exp: &quot;&#39;f&#39; changes to &#39;-v&#39; and &#39;-es&#39; is added.&quot; },
          { q: &quot;Chief (exception) →&quot;, target: &quot;chiefs&quot;, exp: &quot;Some nouns ending in &#39;f&#39; or &#39;fe&#39; simply add &#39;-s&#39;.&quot; },
          { q: &quot;Proof (exception) →&quot;, target: &quot;proofs&quot;, exp: &quot;Some nouns ending in &#39;f&#39; or &#39;fe&#39; simply add &#39;-s&#39;.&quot; }
        ]
      },
      {
        id: &quot;m6&quot;, label: &quot;Vowel Change&quot;, tabLabel: &quot;Part 6: Irregular Vowel-Change Plurals&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct plural form (Rule 11): a few nouns form their plural by changing an internal vowel rather than adding an ending (1 mark each).&quot;,
        data: [
          { q: &quot;What is the plural of &#39;Foot&#39;?&quot;, opts: [&quot;Foots&quot;, &quot;Feet&quot;, &quot;Footes&quot;, &quot;Feets&quot;], ans: &quot;Feet&quot; },
          { q: &quot;What is the plural of &#39;Man&#39;?&quot;, opts: [&quot;Mans&quot;, &quot;Men&quot;, &quot;Manes&quot;, &quot;Mens&quot;], ans: &quot;Men&quot; },
          { q: &quot;What is the plural of &#39;Woman&#39;?&quot;, opts: [&quot;Womans&quot;, &quot;Womens&quot;, &quot;Women&quot;, &quot;Woman&#39;s&quot;], ans: &quot;Women&quot; },
          { q: &quot;What is the plural of &#39;Tooth&#39;?&quot;, opts: [&quot;Tooths&quot;, &quot;Teeth&quot;, &quot;Toothes&quot;, &quot;Teeths&quot;], ans: &quot;Teeth&quot; },
          { q: &quot;What is the plural of &#39;Mouse&#39;?&quot;, opts: [&quot;Mouses&quot;, &quot;Mice&quot;, &quot;Mouseies&quot;, &quot;Mices&quot;], ans: &quot;Mice&quot; }
        ]
      },
      {
        id: &quot;m7&quot;, label: &quot;Number Agreement&quot;, tabLabel: &quot;Part 7: Deceptive Number Agreement&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the sentence with correct subject-verb agreement (Rules 12 &amp; 13): some nouns look plural but are singular, and some look singular but are plural (1 mark each).&quot;,
        data: [
          { q: &quot;Choose the correct sentence (&#39;news&#39; looks plural but is singular):&quot;, opts: [&quot;The news are surprising.&quot;, &quot;The news is surprising.&quot;, &quot;The news were surprising.&quot;, &quot;The news have been surprising.&quot;], ans: &quot;The news is surprising.&quot; },
          { q: &quot;Choose the correct sentence (&#39;physics&#39; looks plural but is singular):&quot;, opts: [&quot;Physics are a difficult subject.&quot;, &quot;Physics is a difficult subject.&quot;, &quot;Physics were a difficult subject.&quot;, &quot;Physics have been a difficult subject.&quot;], ans: &quot;Physics is a difficult subject.&quot; },
          { q: &quot;Choose the correct sentence (&#39;police&#39; looks singular but is plural):&quot;, opts: [&quot;The police is investigating the case.&quot;, &quot;The police are investigating the case.&quot;, &quot;The police was investigating the case.&quot;, &quot;The police has investigated the case.&quot;], ans: &quot;The police are investigating the case.&quot; },
          { q: &quot;Choose the correct sentence (&#39;cattle&#39; looks singular but is plural):&quot;, opts: [&quot;The cattle is grazing in the field.&quot;, &quot;The cattle are grazing in the field.&quot;, &quot;The cattle was grazing in the field.&quot;, &quot;The cattle has grazed in the field.&quot;], ans: &quot;The cattle are grazing in the field.&quot; },
          { q: &quot;Choose the correct sentence (&#39;mankind&#39; looks plural but is singular):&quot;, opts: [&quot;Mankind are facing a climate crisis.&quot;, &quot;Mankind is facing a climate crisis.&quot;, &quot;Mankind were facing a climate crisis.&quot;, &quot;Mankind have faced a climate crisis.&quot;], ans: &quot;Mankind is facing a climate crisis.&quot; }
        ]
      },
      {
        id: &quot;m8&quot;, label: &quot;Same-Form Nouns&quot;, tabLabel: &quot;Part 8: Same-Form &amp; No-Plural Nouns&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct word (Rules 14, 16 &amp; 17): some nouns are identical in both numbers, and some exist only in the singular (1 mark each).&quot;,
        data: [
          { q: &quot;Which word is used as both singular and plural in form?&quot;, opts: [&quot;Species&quot;, &quot;Boy&quot;, &quot;Table&quot;, &quot;Dog&quot;], ans: &quot;Species&quot; },
          { q: &quot;Which word does NOT have a plural form at all?&quot;, opts: [&quot;Furniture&quot;, &quot;Book&quot;, &quot;Table&quot;, &quot;Chair&quot;], ans: &quot;Furniture&quot; },
          { q: &quot;Which word does NOT have a plural form at all?&quot;, opts: [&quot;Scenery&quot;, &quot;Boy&quot;, &quot;Girl&quot;, &quot;Toy&quot;], ans: &quot;Scenery&quot; },
          { q: &quot;Which word&#39;s singular and plural forms are exactly the same?&quot;, opts: [&quot;Fish&quot;, &quot;Cat&quot;, &quot;Boy&quot;, &quot;Table&quot;], ans: &quot;Fish&quot; },
          { q: &quot;Which word&#39;s singular and plural forms are exactly the same?&quot;, opts: [&quot;Aircraft&quot;, &quot;Book&quot;, &quot;Pen&quot;, &quot;Chair&quot;], ans: &quot;Aircraft&quot; }
        ]
      },
      {
        id: &quot;m9&quot;, label: &quot;Apostrophes&quot;, tabLabel: &quot;Part 9: Apostrophes in Plurals&quot;, type: &quot;mcq&quot;,
        hint: &quot;Select the correct option (Rule 15): apostrophes are sometimes used to pluralize letters for clarity, while numbers usually form plurals without one (1 mark each).&quot;,
        data: [
          { q: &quot;According to the chapter, how are single letters typically pluralized for clarity?&quot;, opts: [&quot;By adding &#39;-s&#39; only (e.g., As, Bs)&quot;, &quot;By adding an apostrophe (e.g., A&#39;s, B&#39;s)&quot;, &quot;By adding &#39;-es&#39; (e.g., Aes, Bes)&quot;, &quot;By doubling the letter (e.g., AAs, BBs)&quot;], ans: &quot;By adding an apostrophe (e.g., A&#39;s, B&#39;s)&quot; },
          { q: &quot;According to modern style guides, which form is generally preferred for letters?&quot;, opts: [&quot;A&#39;s and B&#39;s&quot;, &quot;As and Bs&quot;, &quot;A,s and B,s&quot;, &quot;A-s and B-s&quot;], ans: &quot;As and Bs&quot; },
          { q: &quot;How do numbers usually form their plurals?&quot;, opts: [&quot;Without an apostrophe (e.g., 1990s)&quot;, &quot;With an apostrophe (e.g., 1990&#39;s)&quot;, &quot;By adding &#39;-es&#39; (e.g., 1990es)&quot;, &quot;By adding &#39;-ies&#39; (e.g., 1990ies)&quot;], ans: &quot;Without an apostrophe (e.g., 1990s)&quot; },
          { q: &quot;Complete the example sentence: &#39;She could not write ___ properly in his writing.&#39;&quot;, opts: [&quot;bs and ds&quot;, &quot;b&#39;s and d&#39;s&quot;, &quot;bes and des&quot;, &quot;b,s and d,s&quot;], ans: &quot;b&#39;s and d&#39;s&quot; },
          { q: &quot;Complete the example sentence: &#39;There are five ___ and four ___ in his accounting number.&#39;&quot;, opts: [&quot;9&#39;s and 3&#39;s&quot;, &quot;9s and 3s&quot;, &quot;9es and 3es&quot;, &quot;9ies and 3ies&quot;], ans: &quot;9&#39;s and 3&#39;s&quot; }
        ]
      }
    ];

    // Part 10: gap-fill synthesis passage (5 marks)
    const m10Answers = {
        &quot;m10-1&quot;: &quot;&#39;s&#39;&quot;,
        &quot;m10-2&quot;: &quot;&#39;-es&#39;&quot;,
        &quot;m10-3&quot;: &quot;&#39;-i&#39; and add &#39;-es&#39;&quot;,
        &quot;m10-4&quot;: &quot;&#39;-ves&#39;&quot;,
        &quot;m10-5&quot;: &quot;same form&quot;
    };

    // ============ SCORE STATE ============
    const scores = {};
    modules.forEach(m =&gt; scores[m.id] = 0);
    scores.m10 = 0;
    const TOTAL_MARKS = 50;

    function buildScoreboard() {
        const board = document.getElementById(&quot;scoreboard&quot;);
        let html = &quot;&quot;;
        modules.forEach(m =&gt; {
            html += `&lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-${m.id}&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;${m.label}&lt;/div&gt;&lt;/div&gt;`;
        });
        html += `&lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m10&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Synthesis&lt;/div&gt;&lt;/div&gt;`;
        html += `&lt;div class=&quot;score-item&quot; style=&quot;grid-column: 1 / -1; margin-top:4px;&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/${TOTAL_MARKS}&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;`;
        board.innerHTML = html;
    }

    function updateScoreboard() {
        let total = 0;
        modules.forEach(m =&gt; {
            document.getElementById(`score-${m.id}`).textContent = scores[m.id] + &#39;/5&#39;;
            total += scores[m.id];
        });
        document.getElementById(&#39;score-m10&#39;).textContent = scores.m10 + &#39;/5&#39;;
        total += scores.m10;
        document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/&#39; + TOTAL_MARKS;
        document.getElementById(&#39;progress-bar&#39;).style.width = ((total / TOTAL_MARKS) * 100) + &#39;%&#39;;
    }

    // ============ TABS &amp; PANELS ============
    function buildTabsAndPanels() {
        const tabsWrap = document.getElementById(&quot;tabs-wrap&quot;);
        const panelsWrap = document.getElementById(&quot;panels-wrap&quot;);
        let tabsHtml = &quot;&quot;;
        let panelsHtml = &quot;&quot;;

        modules.forEach((m, idx) =&gt; {
            tabsHtml += `&lt;button class=&quot;tab-btn${idx === 0 ? &#39; active&#39; : &#39;&#39;}&quot; data-panel=&quot;${m.id}&quot;&gt;${m.tabLabel} &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;`;
            panelsHtml += `
                &lt;section class=&quot;panel${idx === 0 ? &#39; active&#39; : &#39;&#39;}&quot; id=&quot;panel-${m.id}&quot;&gt;
                    &lt;div class=&quot;kicker&quot;&gt;${m.tabLabel.split(&#39;:&#39;)[0]} (5 Marks)&lt;/div&gt;
                    &lt;h2&gt;${m.tabLabel.split(&#39;: &#39;)[1]}&lt;/h2&gt;
                    &lt;p class=&quot;section-hint&quot;&gt;${m.hint}&lt;/p&gt;
                    &lt;div id=&quot;module-${m.id}-container&quot;&gt;&lt;/div&gt;
                    &lt;button class=&quot;btn-check&quot; data-check=&quot;${m.id}&quot;&gt;Verify ${m.tabLabel.split(&#39;:&#39;)[0]}&lt;/button&gt;
                &lt;/section&gt;`;
        });

        // Part 10 tab + panel
        tabsHtml += `&lt;button class=&quot;tab-btn&quot; data-panel=&quot;m10&quot;&gt;Part 10: Rules Synthesis &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;`;
        panelsHtml += `
            &lt;section class=&quot;panel&quot; id=&quot;panel-m10&quot;&gt;
                &lt;div class=&quot;kicker&quot;&gt;Part 10 (5 Marks)&lt;/div&gt;
                &lt;h2&gt;Rules Synthesis Gap-Fill&lt;/h2&gt;
                &lt;p class=&quot;section-hint&quot;&gt;Select the correct word or ending to complete each rule summary (1 mark each).&lt;/p&gt;
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-text&quot; id=&quot;module10-container&quot;&gt;
                        The plural noun is generally formed by adding
                        &lt;select id=&quot;m10-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;&#39;s&#39;&quot;&gt;&#39;s&#39;&lt;/option&gt;&lt;option value=&quot;&#39;es&#39;&quot;&gt;&#39;es&#39;&lt;/option&gt;&lt;option value=&quot;&#39;ies&#39;&quot;&gt;&#39;ies&#39;&lt;/option&gt;&lt;/select&gt;
                        to the singular, as in &#39;boy&#39; becoming &#39;boys&#39;. Nouns ending in &#39;-s&#39;, &#39;-sh&#39;, &#39;-ch&#39;, &#39;-z&#39;, or &#39;-x&#39; form the plural by adding
                        &lt;select id=&quot;m10-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;&#39;-es&#39;&quot;&gt;&#39;-es&#39;&lt;/option&gt;&lt;option value=&quot;&#39;-s&#39;&quot;&gt;&#39;-s&#39;&lt;/option&gt;&lt;option value=&quot;&#39;-ies&#39;&quot;&gt;&#39;-ies&#39;&lt;/option&gt;&lt;/select&gt;
                        to the singular, as in &#39;class&#39; becoming &#39;classes&#39;. Nouns ending in a consonant + &#39;y&#39; form their plural by replacing &#39;y&#39; with
                        &lt;select id=&quot;m10-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;&#39;-i&#39; and add &#39;-es&#39;&quot;&gt;&#39;-i&#39; and add &#39;-es&#39;&lt;/option&gt;&lt;option value=&quot;&#39;-s&#39; only&quot;&gt;&#39;-s&#39; only&lt;/option&gt;&lt;option value=&quot;&#39;-ies&#39; only&quot;&gt;&#39;-ies&#39; only&lt;/option&gt;&lt;/select&gt;
                        , as in &#39;city&#39; becoming &#39;cities&#39;. Many nouns ending in &#39;f&#39; or &#39;fe&#39; form their plural by transforming the ending into
                        &lt;select id=&quot;m10-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;&#39;-ves&#39;&quot;&gt;&#39;-ves&#39;&lt;/option&gt;&lt;option value=&quot;&#39;-fs&#39;&quot;&gt;&#39;-fs&#39;&lt;/option&gt;&lt;option value=&quot;&#39;-fes&#39;&quot;&gt;&#39;-fes&#39;&lt;/option&gt;&lt;/select&gt;
                        , as in &#39;leaf&#39; becoming &#39;leaves&#39;. Finally, some nouns such as &#39;sheep&#39; and &#39;deer&#39; keep the
                        &lt;select id=&quot;m10-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;same form&quot;&gt;same form&lt;/option&gt;&lt;option value=&quot;opposite form&quot;&gt;opposite form&lt;/option&gt;&lt;option value=&quot;reduplicated form&quot;&gt;reduplicated form&lt;/option&gt;&lt;/select&gt;
                        in both the singular and the plural.
                    &lt;/div&gt;
                    &lt;button class=&quot;btn-check&quot; data-check=&quot;m10&quot;&gt;Verify Part 10&lt;/button&gt;
                    &lt;div id=&quot;m10-feedback&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;`;

        tabsWrap.innerHTML = tabsHtml;
        panelsWrap.innerHTML = panelsHtml;

        // Tab navigation
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
            btn.addEventListener(&#39;click&#39;, () =&gt; {
                document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
                document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
                btn.classList.add(&#39;active&#39;);
                document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
                btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
            });
        });

        // Check buttons
        document.querySelectorAll(&#39;.btn-check[data-check]&#39;).forEach(btn =&gt; {
            btn.addEventListener(&#39;click&#39;, () =&gt; {
                const id = btn.dataset.check;
                if (id === &#39;m10&#39;) { checkModule10(); return; }
                const mod = modules.find(m =&gt; m.id === id);
                if (mod.type === &#39;mcq&#39;) checkMCQModule(mod);
                else checkFIBModule(mod);
            });
        });
    }

    // ============ RENDER MODULES ============
    function renderMCQModule(mod) {
        const container = document.getElementById(`module-${mod.id}-container`);
        let html = &quot;&quot;;
        mod.data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; { optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`; });
            html += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;&lt;select id=&quot;${mod.id}-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;&lt;/div&gt;
                    &lt;div id=&quot;${mod.id}-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;`;
        });
        container.innerHTML = html;
    }

    function renderFIBModule(mod) {
        const container = document.getElementById(`module-${mod.id}-container`);
        let html = &quot;&quot;;
        mod.data.forEach((item, index) =&gt; {
            html += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;${mod.id}-in-${index}&quot; placeholder=&quot;Type the plural form...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;${mod.id}-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;${mod.id}-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;`;
        });
        container.innerHTML = html;
    }

    // ============ CHECK MODULES ============
    function checkMCQModule(mod) {
        let currentScore = 0;
        mod.data.forEach((item, index) =&gt; {
            const select = document.getElementById(`${mod.id}-${index}`);
            const fb = document.getElementById(`${mod.id}-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores[mod.id] = currentScore;
        updateScoreboard();
    }

    function checkFIBModule(mod) {
        let currentScore = 0;
        mod.data.forEach((item, index) =&gt; {
            const input = document.getElementById(`${mod.id}-in-${index}`);
            const fb = document.getElementById(`${mod.id}-fb-${index}`);
            const exp = document.getElementById(`${mod.id}-exp-${index}`);

            const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
            const cleanTarget = item.target.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
            const cleanAlt = item.targetAlt ? item.targetAlt.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase() : null;

            if (cleanUser === cleanTarget || (cleanAlt &amp;&amp; cleanUser === cleanAlt)) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.target}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores[mod.id] = currentScore;
        updateScoreboard();
    }

    function checkModule10() {
        let currentScore = 0;
        Object.keys(m10Answers).forEach(id =&gt; {
            const select = document.getElementById(id);
            if (select.value === m10Answers[id]) {
                select.className = &quot;correct-input&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
            }
        });
        const fb = document.getElementById(&quot;m10-feedback&quot;);
        if (currentScore === 5) {
            fb.textContent = &quot;Outstanding! All 5 passage choices are correct (+5 Marks).&quot;;
            fb.className = &quot;feedback correct show&quot;;
        } else {
            fb.textContent = `You scored ${currentScore}/5. Review highlighted incorrect fields.`;
            fb.className = &quot;feedback incorrect show&quot;;
        }
        scores.m10 = currentScore;
        updateScoreboard();
    }

    // ============ INITIALIZATION ============
    window.onload = () =&gt; {
        buildScoreboard();
        buildTabsAndPanels();
        modules.forEach(m =&gt; {
            if (m.type === &#39;mcq&#39;) renderMCQModule(m);
            else renderFIBModule(m);
        });
        updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/8833333700324375767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/8833333700324375767?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/8833333700324375767'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/8833333700324375767'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-45-number.html' title='Chapter 45: Number'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-7762773317903986212</id><published>2026-08-09T02:49:06.315-07:00</published><updated>2026-08-09T23:22:07.587-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 44: subjunctive Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty-Four Assessment · Subjunctive Mood (20 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:700px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  /* --- FIXED SCOREBOARD LAYOUT --- */
  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(4, 1fr);
    gap:12px 8px;
    border:1px solid var(--line);
    border-radius:6px;
    padding:14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ text-align:center; padding:4px; min-width:0; }
  .score-item.total-item{
    grid-column: 1 / -1;
    margin-top:4px;
    padding-top:8px;
    border-top:1px dashed var(--line);
  }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(13px,3vw,15px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:9px;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:2px;
    line-height:1.3;
  }
  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:16px;
    padding:9px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select{ max-width:100%; }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  .explanation{ font-size:13px; color:var(--ink-dim); margin-top:6px; display:none; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:12px 8px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:9px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty-Four Assessment&lt;/div&gt;
    &lt;h1&gt;The &lt;em&gt;Subjunctive&lt;/em&gt; Mood&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A 20-mark interactive evaluation testing hypothetical &#39;were&#39;, inverted conditionals, and the base-form subjunctive after demand, suggestion, recommendation, and necessity.&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Hypothetical &#39;Were&#39;)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Base-Form Subjunctive)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m4&quot;&gt;0/5&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 4 (Gap-Fill)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item total-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/20&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Rules MCQs &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Hypothetical &#39;Were&#39; &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Demand / Suggestion Forms &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m4&quot;&gt;Part 4: Rules Synthesis &lt;span class=&quot;count&quot;&gt;[5m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Rules MCQs (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Multiple Choice Questions&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the sentence that uses the correct subjunctive form (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Hypothetical &#39;Were&#39; Transformations (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Hypothetical &amp; Wish Transformations&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Correct the verb in brackets, or rewrite the sentence, using the subjunctive &#39;were&#39; for hypothetical, unreal, or wish-based situations (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Demand / Suggestion / Necessity Transformations (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Demand, Suggestion &amp; Necessity Transformations&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Correct the verb in brackets using the base-form subjunctive that follows expressions of demand, suggestion, recommendation, or necessity (1 mark each).&lt;/p&gt;

    &lt;div id=&quot;module3-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 4: Rules Synthesis Gap-Fill Passage (5 Marks = 5 x 1 Mark) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m4&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 4 (5 Marks)&lt;/div&gt;
    &lt;h2&gt;Rules Synthesis Gap-Fill&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct word or form to complete each rule application summary (1 mark each).&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-text&quot; id=&quot;module4-container&quot;&gt;
        The subjunctive mood is used to express wishes, demands, suggestions, recommendations, necessities, or situations that are hypothetical, unreal, or contrary to fact. In hypothetical or unreal situations, we replace &#39;was&#39; with
        &lt;select id=&quot;m4-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;were&quot;&gt;were&lt;/option&gt;&lt;option value=&quot;was&quot;&gt;was&lt;/option&gt;&lt;option value=&quot;be&quot;&gt;be&lt;/option&gt;&lt;/select&gt; for all persons, as in &#39;If I were a bird.&#39;
        After expressions of demand, suggestion, recommendation, or necessity, the verb is used in its
        &lt;select id=&quot;m4-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;base form&quot;&gt;base form&lt;/option&gt;&lt;option value=&quot;past form&quot;&gt;past form&lt;/option&gt;&lt;option value=&quot;-ing form&quot;&gt;-ing form&lt;/option&gt;&lt;/select&gt;, regardless of the subject — so &#39;is&#39; becomes
        &lt;select id=&quot;m4-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;be&quot;&gt;be&lt;/option&gt;&lt;option value=&quot;being&quot;&gt;being&lt;/option&gt;&lt;option value=&quot;been&quot;&gt;been&lt;/option&gt;&lt;/select&gt;, as in &#39;I demand that he be happy.&#39;
        In a formal inverted hypothetical sentence, &#39;if&#39; is dropped and the sentence begins directly with
        &lt;select id=&quot;m4-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;Were&quot;&gt;Were&lt;/option&gt;&lt;option value=&quot;Was&quot;&gt;Was&lt;/option&gt;&lt;option value=&quot;Did&quot;&gt;Did&lt;/option&gt;&lt;/select&gt;, as in &#39;Were I a king!&#39;
        Finally, after the word &#39;wish&#39;, when we talk about a present situation we would like to be different, we use the
        &lt;select id=&quot;m4-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;past simple tense&quot;&gt;past simple tense&lt;/option&gt;&lt;option value=&quot;present tense&quot;&gt;present tense&lt;/option&gt;&lt;option value=&quot;future tense&quot;&gt;future tense&lt;/option&gt;&lt;/select&gt;.
      &lt;/div&gt;

      &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule4()&quot;&gt;Verify Part 4&lt;/button&gt;
      &lt;div id=&quot;m4-feedback&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Forty-Four Assessment · Subjunctive Mood Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
      });
    });

    // Score State (20 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0, m4: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/5&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/5&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/5&#39;;
      document.getElementById(&#39;score-m4&#39;).textContent = scores.m4 + &#39;/5&#39;;

      const total = scores.m1 + scores.m2 + scores.m3 + scores.m4;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/20&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 20) * 100) + &#39;%&#39;;
    }

    // --- PART 1: RULES MCQS (5 Marks = 5 x 1 Mark) ---
    const m1Data = [
      { q: &quot;Which sentence correctly expresses a hypothetical wish?&quot;, opts: [&quot;I wish I was a king!&quot;, &quot;I wish I were a king!&quot;, &quot;I wish I am a king!&quot;, &quot;I wish I be a king!&quot;], ans: &quot;I wish I were a king!&quot; },
      { q: &quot;Which sentence correctly expresses a demand?&quot;, opts: [&quot;I demand that he is present.&quot;, &quot;I demand that he be present.&quot;, &quot;I demand that he was present.&quot;, &quot;I demand that he is being present.&quot;], ans: &quot;I demand that he be present.&quot; },
      { q: &quot;Which sentence correctly expresses a suggestion?&quot;, opts: [&quot;I suggest that she studies harder.&quot;, &quot;I suggest that she study harder.&quot;, &quot;I suggest that she studied harder.&quot;, &quot;I suggest that she is studying harder.&quot;], ans: &quot;I suggest that she study harder.&quot; },
      { q: &quot;Which sentence correctly expresses a necessity?&quot;, opts: [&quot;It is necessary that he arrives early.&quot;, &quot;It is necessary that he arrive early.&quot;, &quot;It is necessary that he arrived early.&quot;, &quot;It is necessary that he is arriving early.&quot;], ans: &quot;It is necessary that he arrive early.&quot; },
      { q: &quot;Which sentence is the correct formal, inverted hypothetical form (without &#39;if&#39;)?&quot;, opts: [&quot;If I were a bird.&quot;, &quot;Were I a bird.&quot;, &quot;I were a bird.&quot;, &quot;Was I a bird.&quot;], ans: &quot;Were I a bird.&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: HYPOTHETICAL &#39;WERE&#39; TRANSFORMATIONS (5 Marks = 5 x 1 Mark) ---
    const m2Data = [
      { q: &quot;If I ___ (be) a millionaire, I would build a hospital.&quot;, target: &quot;were&quot;, exp: &quot;Hypothetical situations use &#39;were&#39; for all persons instead of &#39;was&#39;.&quot; },
      { q: &quot;She wishes she ___ (have) more free time.&quot;, target: &quot;had&quot;, exp: &quot;After &#39;wish&#39;, a present situation we would like to be different takes the past simple tense.&quot; },
      { q: &quot;Rewrite formally without &#39;if&#39;: &#39;If I were rich.&#39;&quot;, target: &quot;Were I rich.&quot;, exp: &quot;In a formal inverted hypothetical sentence, &#39;if&#39; is dropped and &#39;were&#39; begins the sentence.&quot; },
      { q: &quot;If he ___ (be) taller, he could reach the shelf.&quot;, target: &quot;were&quot;, exp: &quot;Hypothetical situations use &#39;were&#39; regardless of the subject.&quot; },
      { q: &quot;I wish I ___ (know) the answer.&quot;, target: &quot;knew&quot;, exp: &quot;After &#39;wish&#39;, use the past simple tense for a present wish.&quot; }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type the corrected word or sentence...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m2-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m2-in-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);
            const exp = document.getElementById(`m2-exp-${index}`);

            const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
            const cleanTarget = item.target.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();

            if (cleanUser === cleanTarget) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.target}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: DEMAND / SUGGESTION / NECESSITY TRANSFORMATIONS (5 Marks = 5 x 1 Mark) ---
    const m3Data = [
      { q: &quot;It is imperative that he ___ (begin) now.&quot;, target: &quot;begin&quot;, exp: &quot;After expressions of demand or necessity, the verb stays in its base form regardless of subject.&quot; },
      { q: &quot;I propose that she ___ (do) it.&quot;, target: &quot;do&quot;, exp: &quot;After &#39;propose&#39;, the base form of the verb is used.&quot; },
      { q: &quot;I demand that he ___ (be) absent.&quot;, target: &quot;be&quot;, exp: &quot;After &#39;demand&#39;, the base form &#39;be&#39; replaces &#39;is&#39;.&quot; },
      { q: &quot;The teacher demanded that the students ___ (submit) their assignments on time.&quot;, target: &quot;submit&quot;, exp: &quot;The base form &#39;submit&#39; is used after &#39;demanded that&#39;, regardless of the plural subject.&quot; },
      { q: &quot;I demand that she ___ (have) priority.&quot;, target: &quot;have&quot;, exp: &quot;The base form &#39;have&#39; replaces &#39;has&#39; after &#39;demand&#39;.&quot; }
    ];

    function renderModule3() {
        const container = document.getElementById(&quot;module3-container&quot;);
        m3Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 5 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m3-in-${index}&quot; placeholder=&quot;Type the corrected word...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m3-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                    &lt;div id=&quot;m3-exp-${index}&quot; class=&quot;explanation&quot;&gt;${item.exp}&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule3() {
        let currentScore = 0;
        m3Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m3-in-${index}`);
            const fb = document.getElementById(`m3-fb-${index}`);
            const exp = document.getElementById(`m3-exp-${index}`);

            const cleanUser = input.value.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();
            const cleanTarget = item.target.trim().replace(/[.,\/#!$%\^&amp;\*;:{}=\-_`~()]/g, &quot;&quot;).toLowerCase();

            if (cleanUser === cleanTarget) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect (0 Marks). Target: &quot;${item.target}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
            exp.style.display = &quot;block&quot;;
        });
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // --- PART 4: GAP-FILL PASSAGE (5 Marks = 5 x 1 Mark) ---
    const m4Answers = {
        &quot;m4-1&quot;: &quot;were&quot;,
        &quot;m4-2&quot;: &quot;base form&quot;,
        &quot;m4-3&quot;: &quot;be&quot;,
        &quot;m4-4&quot;: &quot;Were&quot;,
        &quot;m4-5&quot;: &quot;past simple tense&quot;
    };

    function checkModule4() {
        let currentScore = 0;
        Object.keys(m4Answers).forEach(id =&gt; {
            const select = document.getElementById(id);
            if (select.value === m4Answers[id]) {
                select.className = &quot;correct-input&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
            }
        });

        const fb = document.getElementById(&quot;m4-feedback&quot;);
        if (currentScore === 5) {
            fb.textContent = &quot;Outstanding! All 5 passage choices are correct (+5 Marks).&quot;;
            fb.className = &quot;feedback correct show&quot;;
        } else {
            fb.textContent = `You scored ${currentScore}/5. Review highlighted incorrect fields.`;
            fb.className = &quot;feedback incorrect show&quot;;
        }
        scores.m4 = currentScore;
        updateScoreboard();
    }

    // Initialization
    window.onload = () =&gt; {
        renderModule1();
        renderModule2();
        renderModule3();
        updateScoreboard();
    };
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/7762773317903986212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/7762773317903986212?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/7762773317903986212'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/7762773317903986212'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-forty-four-subjunctive-exercises.html' title='Chapter 44: subjunctive Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-7487981933961970306</id><published>2026-08-08T00:27:05.045-07:00</published><updated>2026-08-08T00:27:05.045-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 43: Redundancy Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty-Three Assessment · Redundancy&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root {
    --bg: #ffffff;
    --panel: #ffffff;
    --panel-2: #f8f9fa;
    --ink: #222222;
    --ink-dim: #555555;
    --blue: #0d6efd;
    --blue-soft: #4a7bd8;
    --red: #d9534f;
    --green: #198754;
    --line: rgba(0, 0, 0, 0.12);
    --shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
    --gutter: 24px;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
  body {
    margin: 0;
    background: #fff;
    color: var(--ink);
    font-family: &#39;Source Serif 4&#39;, serif;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    width: 100%;
  }
  img, svg { max-width: 100%; }
  ::selection { background: var(--blue); color: #fff; }
  .wrap { max-width: 980px; margin: 0 auto; padding: 0 var(--gutter); width: 100%; }

  /* Header &amp; Scoreboard */
  header.hero {
    padding: clamp(20px, 4vw, 32px) 0 20px;
    border-bottom: 1px solid var(--line);
  }
  .eyebrow {
    font-family: &#39;Space Mono&#39;, monospace;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: 11px;
    color: var(--blue);
    display: flex; align-items: center; gap: 10px;
    flex-wrap: wrap;
  }
  .eyebrow::before { content: &quot;&quot;; width: 28px; height: 1px; background: var(--blue-soft); flex-shrink: 0; }
  h1 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(24px, 6vw, 46px);
    line-height: 1.15;
    margin: 12px 0 6px;
    word-wrap: break-word;
  }
  h1 em { font-style: italic; color: var(--blue); }
  .lede { max-width: 700px; font-size: clamp(13px, 2.6vw, 14px); color: var(--ink-dim); margin-top: 6px; line-height: 1.6; }

  /* Scoreboard Grid */
  .scoreboard {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 12px 14px;
    background: var(--panel-2);
    box-shadow: var(--shadow);
  }
  .score-item { text-align: center; padding: 4px; min-width: 0; }
  .score-item .num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: clamp(12px, 3vw, 14px);
    font-weight: 700;
    color: var(--blue);
    white-space: nowrap;
  }
  .score-item .lbl {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 8.5px;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--ink-dim);
    margin-top: 2px;
    line-height: 1.3;
  }
  .progress-outer {
    width: 100%;
    height: 6px;
    background: #e9ecef;
    border-radius: 4px;
    overflow: hidden;
    margin-top: 12px;
  }
  .progress-inner {
    height: 100%;
    width: 0%;
    background: var(--blue);
    transition: width .3s ease;
  }

  /* Navigation Tabs */
  nav.tabs {
    position: sticky; top: 0; z-index: 20;
    background: #fff;
    border-bottom: 1px solid var(--line);
    padding: 8px 0;
  }
  nav.tabs .wrap {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display: none; }

  .tab-btn {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 20px;
    background: #fff;
    color: var(--ink-dim);
    cursor: pointer;
    transition: all .2s ease;
    flex-shrink: 0;
    min-height: 40px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .tab-btn:hover { border-color: var(--blue-soft); color: var(--ink); }
  .tab-btn:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
  .tab-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }
  .tab-btn .count { opacity: .85; margin-left: 3px; font-weight: 700; }

  section.panel { padding: 24px 0 36px; display: none; }
  section.panel.active { display: block; }

  .kicker {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--blue);
    margin-bottom: 4px;
  }
  h2 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(20px, 4.5vw, 32px);
    margin: 0 0 4px;
    word-wrap: break-word;
  }
  .section-hint { color: var(--ink-dim); font-size: clamp(12px, 2.6vw, 13px); margin-bottom: 16px; }

  /* Question Cards */
  .q-card {
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: clamp(12px, 3vw, 16px);
    margin-bottom: 14px;
    background: #fff;
    transition: border-color .2s ease;
    overflow-wrap: break-word;
  }
  .q-card.correct { border-color: var(--green); background: rgba(25, 135, 84, 0.03); }
  .q-card.incorrect { border-color: var(--red); background: rgba(217, 83, 79, 0.03); }
  .q-num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    color: var(--blue);
    margin-bottom: 4px;
  }
  .q-text { font-size: clamp(14px, 3vw, 15px); color: var(--ink); margin-bottom: 10px; line-height: 1.7; overflow-wrap: break-word; }
  .feedback {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 12px;
    margin-top: 8px;
    display: none;
    word-break: break-word;
  }
  .feedback.show { display: block; }
  .feedback.correct { color: var(--green); }
  .feedback.incorrect { color: var(--red); }

  select {
    font-family: &#39;Source Serif 4&#39;, serif;
    font-size: 15px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 4px;
    background: var(--panel-2);
    color: var(--ink);
    margin: 4px 2px;
    max-width: 100%;
    min-height: 42px;
    vertical-align: middle;
    width: 100%;
  }
  select.correct-input { border-color: var(--green); background: rgba(25, 135, 84, 0.08); }
  select.incorrect-input { border-color: var(--red); background: rgba(217, 83, 79, 0.08); }

  .btn-check {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 12px 18px;
    border: 1px solid var(--blue);
    border-radius: 4px;
    background: var(--blue);
    color: #fff;
    cursor: pointer;
    transition: all .15s ease;
    margin-top: 12px;
    display: inline-block;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .btn-check:hover { background: var(--blue-soft); border-color: var(--blue-soft); }
  .btn-check:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

  footer {
    padding: 24px 0 32px;
    text-align: center;
    color: var(--ink-dim);
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 10px;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-top: 1px solid var(--line);
    padding-left: 16px;
    padding-right: 16px;
  }

  @media (max-width: 768px) {
    :root { --gutter: 16px; }
    .btn-check { width: 100%; text-align: center; padding: 12px 0; }
  }

  @media (max-width: 480px) {
    :root { --gutter: 12px; }
    .scoreboard { grid-template-columns: repeat(3, 1fr); gap: 6px; }
    .q-card { padding: 12px; }
    .tab-btn { font-size: 10px; padding: 9px 12px; }
    header.hero { padding-top: 18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty-Three Assessment&lt;/div&gt;
    &lt;h1&gt;20-Mark Exercises on &lt;em&gt;Redundancy&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;An interactive assessment testing the identification and elimination of redundant words to create concise, clear, and effective sentences based on Chapter Forty-Three[cite: 17].&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-p1&quot;&gt;0/10&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (Identification)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-p2&quot;&gt;0/10&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Concise Revisions)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/20&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Grand Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;p1&quot;&gt;Part 1: Redundant Words &lt;span class=&quot;count&quot;&gt;[10m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;p2&quot;&gt;Part 2: Concise Revisions &lt;span class=&quot;count&quot;&gt;[10m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Identifying Redundant Words (10 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-p1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (10 Marks)&lt;/div&gt;
    &lt;h2&gt;Identifying Redundant Words &amp; Acronym Overlap&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the redundant word or phrase in each expression that makes the sentence unnecessary or repetitive (1 mark each)[cite: 17].&lt;/p&gt;

    &lt;div id=&quot;part1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkPart1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Selecting Concise Sentences (10 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-p2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (10 Marks)&lt;/div&gt;
    &lt;h2&gt;Selecting Concisely Correct Sentences&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Choose the concise version that properly eliminates redundancy without changing the original meaning (1 mark each)[cite: 17].&lt;/p&gt;

    &lt;div id=&quot;part2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkPart2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Forty-Three Assessment · Redundancy Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Switching Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior: &#39;smooth&#39;, inline: &#39;center&#39;, block: &#39;nearest&#39; });
      });
    });

    // Score Tracking Object (20 Marks Total)
    const scores = { p1: 0, p2: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-p1&#39;).textContent = scores.p1 + &#39;/10&#39;;
      document.getElementById(&#39;score-p2&#39;).textContent = scores.p2 + &#39;/10&#39;;

      const total = scores.p1 + scores.p2;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/50&#39;; // Wait, out of 20 total for this assessment
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/20&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 20) * 100) + &#39;%&#39;;
    }

    // --- PART 1: IDENTIFYING REDUNDANT WORDS (10 Marks) ---
    const p1Data = [
      { q: &quot;In the sentence &#39;Can you repeat it again?&#39;, which word is redundant alongside &#39;repeat&#39;?&quot;, opts: [&quot;again&quot;, &quot;Can&quot;, &quot;you&quot;, &quot;it&quot;], ans: &quot;again&quot; },
      { q: &quot;In the abbreviation phrase &#39;HIV Virus&#39;, what makes &#39;Virus&#39; redundant?&quot;, opts: [&quot;HIV already stands for Human Immunodeficiency Virus&quot;, &quot;HIV means Hepatitis Virus&quot;, &quot;Virus is a noun&quot;, &quot;It needs to be written as HIV Disease&quot;], ans: &quot;HIV already stands for Human Immunodeficiency Virus&quot; },
      { q: &quot;In the sentence &#39;Return back the book tomorrow.&#39;, which word should be removed to eliminate redundancy?&quot;, opts: [&quot;back&quot;, &quot;Return&quot;, &quot;tomorrow&quot;, &quot;book&quot;], ans: &quot;back&quot; },
      { q: &quot;In the phrase &#39;The two twins look alike.&#39;, which word is redundant before &#39;twins&#39;?&quot;, opts: [&quot;two&quot;, &quot;look&quot;, &quot;alike&quot;, &quot;The&quot;], ans: &quot;two&quot; },
      { q: &quot;In the sentence &#39;He made a future plan.&#39;, which word is redundant when paired with &#39;plan&#39;?&quot;, opts: [&quot;future&quot;, &quot;made&quot;, &quot;plan&quot;, &quot;a&quot;], ans: &quot;future&quot; },
      { q: &quot;In the expression &#39;LCD Display&#39;, what does the &#39;D&#39; in LCD already stand for?&quot;, opts: [&quot;Display&quot;, &quot;Digital&quot;, &quot;Device&quot;, &quot;Data&quot;], ans: &quot;Display&quot; },
      { q: &quot;In the sentence &#39;We discussed about the issue.&#39;, which word is unnecessary after &#39;discussed&#39;?&quot;, opts: [&quot;about&quot;, &quot;the&quot;, &quot;issue&quot;, &quot;We&quot;], ans: &quot;about&quot; },
      { q: &quot;In the sentence &#39;The teacher gave a free gift to the students.&#39;, which word is redundant before &#39;gift&#39;?&quot;, opts: [&quot;free&quot;, &quot;gave&quot;, &quot;teacher&quot;, &quot;students&quot;], ans: &quot;free&quot; },
      { q: &quot;In the expression &#39;LAN Network&#39;, what does the &#39;N&#39; in LAN already stand for?&quot;, opts: [&quot;Network&quot;, &quot;Node&quot;, &quot;Number&quot;, &quot;Net&quot;], ans: &quot;Network&quot; },
      { q: &quot;In the sentence &#39;They all gathered together in the hall.&#39;, which word is redundant after &#39;gathered&#39;?&quot;, opts: [&quot;together&quot;, &quot;all&quot;, &quot;hall&quot;, &quot;in&quot;], ans: &quot;together&quot; }
    ];

    function renderPart1() {
        const container = document.getElementById(&quot;part1-container&quot;);
        p1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Answer --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 10 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;p1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;p1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkPart1() {
        let currentScore = 0;
        p1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`p1-${index}`);
            const fb = document.getElementById(`p1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.p1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: CONCISE REVISIONS (10 Marks) ---
    const p2Data = [
      { q: &quot;Choose the concise version of: &#39;Each and every student is brilliant.&#39;&quot;, opts: [&quot;Each student is brilliant.&quot;, &quot;Each and every students are brilliant.&quot;, &quot;Every student is each brilliant.&quot;, &quot;All each students are brilliant.&quot;], ans: &quot;Each student is brilliant.&quot; },
      { q: &quot;Choose the concise version of: &#39;My past experience will get priority.&#39;&quot;, opts: [&quot;My experience will get priority.&quot;, &quot;My past experiences will get priority.&quot;, &quot;My prior past experience gets priority.&quot;, &quot;My experience in the past will get priority.&quot;], ans: &quot;My experience will get priority.&quot; },
      { q: &quot;Choose the concise version of: &#39;He climbed up the tree.&#39;&quot;, opts: [&quot;He climbed the tree.&quot;, &quot;He climbed up on the tree.&quot;, &quot;He went climbing up the tree.&quot;, &quot;He climbed upward the tree.&quot;], ans: &quot;He climbed the tree.&quot; },
      { q: &quot;Choose the concise version of: &#39;The small tiny insect flew away.&#39;&quot;, opts: [&quot;The tiny insect flew away.&quot;, &quot;The small tiny insect flew.&quot;, &quot;The small insect that is tiny flew away.&quot;, &quot;The tiny small insect flew away.&quot;], ans: &quot;The tiny insect flew away.&quot; },
      { q: &quot;Choose the concise version of: &#39;The reason is because he was absent.&#39;&quot;, opts: [&quot;The reason is that he was absent.&quot;, &quot;The reason because he was absent.&quot;, &quot;The reason is why because he was absent.&quot;, &quot;Because the reason was he was absent.&quot;], ans: &quot;The reason is that he was absent.&quot; },
      { q: &quot;Choose the concise version of: &#39;The biography of his life is inspiring.&#39;&quot;, opts: [&quot;His biography is inspiring.&quot;, &quot;The biography of his life story is inspiring.&quot;, &quot;His life biography is inspiring.&quot;, &quot;The life biography of him is inspiring.&quot;], ans: &quot;His biography is inspiring.&quot; },
      { q: &quot;Choose the concise version of: &#39;The final conclusion was accepted.&#39;&quot;, opts: [&quot;The conclusion was accepted.&quot;, &quot;The final end conclusion was accepted.&quot;, &quot;The final conclusion was accepted by all.&quot;, &quot;The concluding final was accepted.&quot;], ans: &quot;The conclusion was accepted.&quot; },
      { q: &quot;Choose the concise version of: &#39;Please enter into the room quietly.&#39;&quot;, opts: [&quot;Please enter the room quietly.&quot;, &quot;Please enter into room quietly.&quot;, &quot;Please enter inside the room quietly.&quot;, &quot;Please enter inside into the room quietly.&quot;], ans: &quot;Please enter the room quietly.&quot; },
      { q: &quot;Choose the concise version of: &#39;The building was completely destroyed.&#39;&quot;, opts: [&quot;The building was destroyed.&quot;, &quot;The building was completely ruined and destroyed.&quot;, &quot;The building was totally completely destroyed.&quot;, &quot;The building destroyed completely.&quot;], ans: &quot;The building was destroyed.&quot; },
      { q: &quot;Choose the concise version of: &#39;She returned back home late at night.&#39;&quot;, opts: [&quot;She returned home late at night.&quot;, &quot;She returned back to home late at night.&quot;, &quot;She came returned back home late at night.&quot;, &quot;She returned back home at late night.&quot;], ans: &quot;She returned home late at night.&quot; }
    ];

    function renderPart2() {
        const container = document.getElementById(&quot;part2-container&quot;);
        p2Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Answer --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 10 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;p2-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;p2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkPart2() {
        let currentScore = 0;
        p2Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`p2-${index}`);
            const fb = document.getElementById(`p2-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.p2 = currentScore;
        updateScoreboard();
    }

    // Initialize module on page load
    window.onload = function() {
        renderPart1();
        renderPart2();
        updateScoreboard();
    };
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/7487981933961970306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/7487981933961970306?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/7487981933961970306'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/7487981933961970306'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-43-redundancy-exercises.html' title='Chapter 43: Redundancy Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-1559936944946617938</id><published>2026-08-08T00:02:08.788-07:00</published><updated>2026-08-08T00:02:08.788-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 42: Run-on Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty-Two Assessment · Run-on Sentences&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root {
    --bg: #ffffff;
    --panel: #ffffff;
    --panel-2: #f8f9fa;
    --ink: #222222;
    --ink-dim: #555555;
    --blue: #0d6efd;
    --blue-soft: #4a7bd8;
    --red: #d9534f;
    --green: #198754;
    --line: rgba(0, 0, 0, 0.12);
    --shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
    --gutter: 24px;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
  body {
    margin: 0;
    background: #fff;
    color: var(--ink);
    font-family: &#39;Source Serif 4&#39;, serif;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    width: 100%;
  }
  img, svg { max-width: 100%; }
  ::selection { background: var(--blue); color: #fff; }
  .wrap { max-width: 980px; margin: 0 auto; padding: 0 var(--gutter); width: 100%; }

  /* Header &amp; Scoreboard */
  header.hero {
    padding: clamp(20px, 4vw, 32px) 0 20px;
    border-bottom: 1px solid var(--line);
  }
  .eyebrow {
    font-family: &#39;Space Mono&#39;, monospace;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: 11px;
    color: var(--blue);
    display: flex; align-items: center; gap: 10px;
    flex-wrap: wrap;
  }
  .eyebrow::before { content: &quot;&quot;; width: 28px; height: 1px; background: var(--blue-soft); flex-shrink: 0; }
  h1 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(24px, 6vw, 46px);
    line-height: 1.15;
    margin: 12px 0 6px;
    word-wrap: break-word;
  }
  h1 em { font-style: italic; color: var(--blue); }
  .lede { max-width: 700px; font-size: clamp(13px, 2.6vw, 14px); color: var(--ink-dim); margin-top: 6px; line-height: 1.6; }

  /* Scoreboard Grid */
  .scoreboard {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 12px 14px;
    background: var(--panel-2);
    box-shadow: var(--shadow);
  }
  .score-item { text-align: center; padding: 4px; min-width: 0; }
  .score-item .num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: clamp(12px, 3vw, 14px);
    font-weight: 700;
    color: var(--blue);
    white-space: nowrap;
  }
  .score-item .lbl {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 8.5px;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--ink-dim);
    margin-top: 2px;
    line-height: 1.3;
  }
  .progress-outer {
    width: 100%;
    height: 6px;
    background: #e9ecef;
    border-radius: 4px;
    overflow: hidden;
    margin-top: 12px;
  }
  .progress-inner {
    height: 100%;
    width: 0%;
    background: var(--blue);
    transition: width .3s ease;
  }

  /* Navigation Tabs */
  nav.tabs {
    position: sticky; top: 0; z-index: 20;
    background: #fff;
    border-bottom: 1px solid var(--line);
    padding: 8px 0;
  }
  nav.tabs .wrap {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display: none; }

  .tab-btn {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 20px;
    background: #fff;
    color: var(--ink-dim);
    cursor: pointer;
    transition: all .2s ease;
    flex-shrink: 0;
    min-height: 40px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .tab-btn:hover { border-color: var(--blue-soft); color: var(--ink); }
  .tab-btn:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
  .tab-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }
  .tab-btn .count { opacity: .85; margin-left: 3px; font-weight: 700; }

  section.panel { padding: 24px 0 36px; display: none; }
  section.panel.active { display: block; }

  .kicker {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--blue);
    margin-bottom: 4px;
  }
  h2 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(20px, 4.5vw, 32px);
    margin: 0 0 4px;
    word-wrap: break-word;
  }
  .section-hint { color: var(--ink-dim); font-size: clamp(12px, 2.6vw, 13px); margin-bottom: 16px; }

  /* Question Cards */
  .q-card {
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: clamp(12px, 3vw, 16px);
    margin-bottom: 14px;
    background: #fff;
    transition: border-color .2s ease;
    overflow-wrap: break-word;
  }
  .q-card.correct { border-color: var(--green); background: rgba(25, 135, 84, 0.03); }
  .q-card.incorrect { border-color: var(--red); background: rgba(217, 83, 79, 0.03); }
  .q-num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    color: var(--blue);
    margin-bottom: 4px;
  }
  .q-text { font-size: clamp(14px, 3vw, 15px); color: var(--ink); margin-bottom: 10px; line-height: 1.7; overflow-wrap: break-word; }
  .feedback {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 12px;
    margin-top: 8px;
    display: none;
    word-break: break-word;
  }
  .feedback.show { display: block; }
  .feedback.correct { color: var(--green); }
  .feedback.incorrect { color: var(--red); }

  select {
    font-family: &#39;Source Serif 4&#39;, serif;
    font-size: 15px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 4px;
    background: var(--panel-2);
    color: var(--ink);
    margin: 4px 2px;
    max-width: 100%;
    min-height: 42px;
    vertical-align: middle;
    width: 100%;
  }
  select.correct-input { border-color: var(--green); background: rgba(25, 135, 84, 0.08); }
  select.incorrect-input { border-color: var(--red); background: rgba(217, 83, 79, 0.08); }

  .btn-check {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 12px 18px;
    border: 1px solid var(--blue);
    border-radius: 4px;
    background: var(--blue);
    color: #fff;
    cursor: pointer;
    transition: all .15s ease;
    margin-top: 12px;
    display: inline-block;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .btn-check:hover { background: var(--blue-soft); border-color: var(--blue-soft); }
  .btn-check:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

  footer {
    padding: 24px 0 32px;
    text-align: center;
    color: var(--ink-dim);
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 10px;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-top: 1px solid var(--line);
    padding-left: 16px;
    padding-right: 16px;
  }

  @media (max-width: 768px) {
    :root { --gutter: 16px; }
    .btn-check { width: 100%; text-align: center; padding: 12px 0; }
  }

  @media (max-width: 480px) {
    :root { --gutter: 12px; }
    .scoreboard { grid-template-columns: repeat(3, 1fr); gap: 6px; }
    .q-card { padding: 12px; }
    .tab-btn { font-size: 10px; padding: 9px 12px; }
    header.hero { padding-top: 18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty-Two Assessment&lt;/div&gt;
    &lt;h1&gt;20-Mark Exercises on &lt;em&gt;Run-on Sentences&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;An interactive assessment covering run-on sentences, fused sentences, comma splices, and correct methods of clause conjunction based on Chapter Forty-Two[cite: 16].&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-p1&quot;&gt;0/10&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (Identification)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-p2&quot;&gt;0/10&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Corrections)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/20&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Grand Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;p1&quot;&gt;Part 1: Identification &lt;span class=&quot;count&quot;&gt;[10m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;p2&quot;&gt;Part 2: Corrections &lt;span class=&quot;count&quot;&gt;[10m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Identifying Run-on Errors &amp; Concepts (10 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-p1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (10 Marks)&lt;/div&gt;
    &lt;h2&gt;Sentence Error Identification &amp; Concepts&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Identify error types and core concepts regarding run-ons, fused sentences, and comma splices (1 mark each)[cite: 16].&lt;/p&gt;

    &lt;div id=&quot;part1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkPart1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Selecting Correct Sentence Revisions (10 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-p2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (10 Marks)&lt;/div&gt;
    &lt;h2&gt;Selecting Valid Sentence Corrections&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Choose the properly corrected sentence for each run-on or comma splice error (1 mark each)[cite: 16].&lt;/p&gt;

    &lt;div id=&quot;part2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkPart2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Forty-Two Assessment · Run-on Sentences Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Switching Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior: &#39;smooth&#39;, inline: &#39;center&#39;, block: &#39;nearest&#39; });
      });
    });

    // Score Tracking Object (20 Marks Total)
    const scores = { p1: 0, p2: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-p1&#39;).textContent = scores.p1 + &#39;/10&#39;;
      document.getElementById(&#39;score-p2&#39;).textContent = scores.p2 + &#39;/10&#39;;

      const total = scores.p1 + scores.p2;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/20&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 20) * 100) + &#39;%&#39;;
    }

    // --- PART 1: IDENTIFICATION &amp; CONCEPTS (10 Marks) ---
    const p1Data = [
      { q: &quot;What defines a run-on sentence?&quot;, opts: [&quot;When two or more independent clauses are joined without proper punctuation or a suitable conjunction[cite: 16]&quot;, &quot;When a sentence contains a dependent clause followed by a period&quot;, &quot;When a sentence is excessively long but correctly punctuated&quot;, &quot;When a subject is missing from a main clause&quot;], ans: &quot;When two or more independent clauses are joined without proper punctuation or a suitable conjunction[cite: 16]&quot; },
      { q: &quot;What is a fused sentence?&quot;, opts: [&quot;When two independent clauses are joined without punctuation or a coordinating conjunction[cite: 16]&quot;, &quot;When two independent clauses are joined only by a comma[cite: 16]&quot;, &quot;When two clauses are connected using a semicolon&quot;, &quot;When a coordinating conjunction is preceded by a comma&quot;], ans: &quot;When two independent clauses are joined without punctuation or a coordinating conjunction[cite: 16]&quot; },
      { q: &quot;What type of error occurs in the example: &#39;Rahman is a teacher he is an ideal human&#39;?&quot;, opts: [&quot;Fused sentence[cite: 16]&quot;, &quot;Comma splice[cite: 16]&quot;, &quot;Fragment&quot;, &quot;Dangling modifier&quot;], ans: &quot;Fused sentence[cite: 16]&quot; },
      { q: &quot;What is a comma splice?&quot;, opts: [&quot;When two independent clauses are joined only by a comma[cite: 16]&quot;, &quot;When two independent clauses are joined without any punctuation[cite: 16]&quot;, &quot;When a comma is placed after a coordinating conjunction&quot;, &quot;When a semicolon is used instead of a period&quot;], ans: &quot;When two independent clauses are joined only by a comma[cite: 16]&quot; },
      { q: &quot;Identify the error structure: &#39;The rain started to fall, we ran inside for shelter.&#39;&quot;, opts: [&quot;Comma splice[cite: 16]&quot;, &quot;Fused sentence[cite: 16]&quot;, &quot;Correct sentence&quot;, &quot;Fragment&quot;], ans: &quot;Comma splice[cite: 16]&quot; },
      { q: &quot;Which of the following is NOT a legitimate rule/method to fix a run-on sentence according to the chapter?&quot;, opts: [&quot;Joining two clauses with a single comma without a conjunction[cite: 16]&quot;, &quot;Using a coordinating conjunction preceded by a comma[cite: 16]&quot;, &quot;Using a semicolon alone[cite: 16]&quot;, &quot;Using a transitional word (conjunctive adverb) preceded by a semicolon and followed by a comma[cite: 16]&quot;], ans: &quot;Joining two clauses with a single comma without a conjunction[cite: 16]&quot; },
      { q: &quot;When using a transitional word (conjunctive adverb) to connect two independent clauses, what is the proper punctuation?&quot;, opts: [&quot;Preceded by a semicolon and followed by a comma[cite: 16]&quot;, &quot;Preceded by a comma and followed by a semicolon&quot;, &quot;Preceded by a period and followed by a colon&quot;, &quot;No punctuation before or after&quot;], ans: &quot;Preceded by a semicolon and followed by a comma[cite: 16]&quot; },
      { q: &quot;Identify the sentence type: &#39;She wanted to pass the exam she studied every night.&#39;&quot;, opts: [&quot;Fused sentence[cite: 16]&quot;, &quot;Comma splice[cite: 16]&quot;, &quot;Correct compound sentence&quot;, &quot;Dependent clause&quot;], ans: &quot;Fused sentence[cite: 16]&quot; },
      { q: &quot;Can a run-on sentence be corrected by separating the independent clauses into two distinct sentences with a period?&quot;, opts: [&quot;Yes[cite: 16]&quot;, &quot;No&quot;, &quot;Only if a comma is also added&quot;, &quot;Only if a subordinating conjunction is removed&quot;], ans: &quot;Yes[cite: 16]&quot; },
      { q: &quot;Which conjunction pair is mentioned as a valid correlative conjunction option to join independent clauses?&quot;, opts: [&quot;&#39;not only...but also&#39;[cite: 16]&quot;, &quot;&#39;either...or else&#39;&quot;, &quot;[&#39;because...so&#39;]&quot;, &quot;&#39;although...yet still&#39;&quot;], ans: &quot;&#39;not only...but also&#39;[cite: 16]&quot; }
    ];

    function renderPart1() {
        const container = document.getElementById(&quot;part1-container&quot;);
        p1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Answer --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 10 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;p1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;p1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkPart1() {
        let currentScore = 0;
        p1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`p1-${index}`);
            const fb = document.getElementById(`p1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.p1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: CORRECTIONS &amp; REVISIONS (10 Marks) ---
    const p2Data = [
      { q: &quot;Correct the fused sentence: &#39;Rahman is a teacher he is an ideal human.&#39; using a coordinating conjunction.&quot;, opts: [&quot;Rahman is a teacher, and he is an ideal human.[cite: 16]&quot;, &quot;Rahman is a teacher and, he is an ideal human.&quot;, &quot;Rahman is a teacher, he is an ideal human.&quot;, &quot;Rahman is a teacher he, is an ideal human.&quot;], ans: &quot;Rahman is a teacher, and he is an ideal human.[cite: 16]&quot; },
      { q: &quot;Correct the sentence: &#39;Rahman is a teacher he is an ideal human.&#39; using a semicolon.&quot;, opts: [&quot;Rahman is a teacher; he is an ideal human.[cite: 16]&quot;, &quot;Rahman is a teacher; and he is an ideal human.&quot;, &quot;Rahman is a teacher,; he is an ideal human.&quot;, &quot;Rahman is a teacher; he, is an ideal human.&quot;], ans: &quot;Rahman is a teacher; he is an ideal human.[cite: 16]&quot; },
      { q: &quot;Correct the sentence: &#39;Rahman is a teacher he is an ideal human.&#39; using a correlative conjunction.&quot;, opts: [&quot;Rahman is not only a teacher but also an ideal human.[cite: 16]&quot;, &quot;Rahman is both a teacher, he is an ideal human.&quot;, &quot;Not only Rahman is a teacher, but he is an ideal human.&quot;, &quot;Rahman is either a teacher but also an ideal human.&quot;], ans: &quot;Rahman is not only a teacher but also an ideal human.[cite: 16]&quot; },
      { q: &quot;Correct the sentence: &#39;Rahman is a teacher he is an ideal human.&#39; using a conjunctive adverb / transitional word.&quot;, opts: [&quot;Rahman is a teacher; moreover, he is an ideal human.[cite: 16]&quot;, &quot;Rahman is a teacher, moreover, he is an ideal human.&quot;, &quot;Rahman is a teacher; moreover he is an ideal human.&quot;, &quot;Rahman is a teacher, moreover; he is an ideal human.&quot;], ans: &quot;Rahman is a teacher; moreover, he is an ideal human.[cite: 16]&quot; },
      { q: &quot;Fix the comma splice: &#39;The report is due today, I haven&#39;t finished it yet.&#39;&quot;, opts: [&quot;The report is due today, but I haven&#39;t finished it yet.[cite: 16]&quot;, &quot;The report is due today I haven&#39;t finished it yet.&quot;, &quot;The report is due today, however, I haven&#39;t finished it yet.&quot;, &quot;The report is due today, I haven&#39;t finished it yet.&quot;], ans: &quot;The report is due today, but I haven&#39;t finished it yet.[cite: 16]&quot; },
      { q: &quot;Which option correctly separates the run-on into two distinct independent sentences?&quot;, opts: [&quot;Rahman is a teacher. He is an ideal human.[cite: 16]&quot;, &quot;Rahman is a teacher, He is an ideal human.&quot;, &quot;Rahman is a teacher; He is an ideal human.&quot;, &quot;Rahman is a teacher and. He is an ideal human.&quot;], ans: &quot;Rahman is a teacher. He is an ideal human.[cite: 16]&quot; },
      { q: &quot;Choose the properly punctuated sentence containing a conjunctive adverb:&quot;, opts: [&quot;She studied hard; therefore, she passed the exam.[cite: 16]&quot;, &quot;She studied hard, therefore, she passed the exam.&quot;, &quot;She studied hard; therefore she passed the exam.&quot;, &quot;She studied hard, therefore; she passed the exam.&quot;], ans: &quot;She studied hard; therefore, she passed the exam.[cite: 16]&quot; },
      { q: &quot;Fix the fused sentence: &#39;The sun set behind the mountains darkness covered the valley.&#39;&quot;, opts: [&quot;The sun set behind the mountains; darkness covered the valley.[cite: 16]&quot;, &quot;The sun set behind the mountains, darkness covered the valley.&quot;, &quot;The sun set behind the mountains darkness, covered the valley.&quot;, &quot;The sun set behind the mountains, and, darkness covered the valley.&quot;], ans: &quot;The sun set behind the mountains; darkness covered the valley.[cite: 16]&quot; },
      { q: &quot;Which sentence correctly fixes a run-on using &#39;both...and&#39;?&quot;, opts: [&quot;Rahman is both a teacher and an ideal human.[cite: 16]&quot;, &quot;Rahman is both a teacher, and he is an ideal human.&quot;, &quot;Both Rahman is a teacher, and an ideal human.&quot;, &quot;Rahman both is a teacher, and an ideal human.&quot;], ans: &quot;Rahman is both a teacher and an ideal human.[cite: 16]&quot; },
      { q: &quot;Which of the following sentences is grammatically CORRECT (not a run-on or comma splice)?&quot;, opts: [&quot;Although it was raining, we decided to go for a walk.[cite: 16]&quot;, &quot;It was raining, we decided to go for a walk.&quot;, &quot;It was raining we decided to go for a walk.&quot;, &quot;It was raining, however, we decided to go for a walk.&quot;], ans: &quot;Although it was raining, we decided to go for a walk.[cite: 16]&quot; }
    ];

    function renderPart2() {
        const container = document.getElementById(&quot;part2-container&quot;);
        p2Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Answer --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 10 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;p2-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;p2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkPart2() {
        let currentScore = 0;
        p2Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`p2-${index}`);
            const fb = document.getElementById(`p2-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.p2 = currentScore;
        updateScoreboard();
    }

    // Initialize module on page load
    window.onload = function() {
        renderPart1();
        renderPart2();
        updateScoreboard();
    };
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/1559936944946617938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/1559936944946617938?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1559936944946617938'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1559936944946617938'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-42-run-on-exercises.html' title='Chapter 42: Run-on Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-9051824820047601111</id><published>2026-08-07T23:40:47.124-07:00</published><updated>2026-08-07T23:40:47.125-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 41: Articles Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty-One Assessment · Articles (A, An, and The)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root {
    --bg: #ffffff;
    --panel: #ffffff;
    --panel-2: #f8f9fa;
    --ink: #222222;
    --ink-dim: #555555;
    --blue: #0d6efd;
    --blue-soft: #4a7bd8;
    --red: #d9534f;
    --green: #198754;
    --line: rgba(0, 0, 0, 0.12);
    --shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
    --gutter: 24px;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
  body {
    margin: 0;
    background: #fff;
    color: var(--ink);
    font-family: &#39;Source Serif 4&#39;, serif;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    width: 100%;
  }
  img, svg { max-width: 100%; }
  ::selection { background: var(--blue); color: #fff; }
  .wrap { max-width: 980px; margin: 0 auto; padding: 0 var(--gutter); width: 100%; }

  /* Header &amp; Scoreboard */
  header.hero {
    padding: clamp(20px, 4vw, 32px) 0 20px;
    border-bottom: 1px solid var(--line);
  }
  .eyebrow {
    font-family: &#39;Space Mono&#39;, monospace;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: 11px;
    color: var(--blue);
    display: flex; align-items: center; gap: 10px;
    flex-wrap: wrap;
  }
  .eyebrow::before { content: &quot;&quot;; width: 28px; height: 1px; background: var(--blue-soft); flex-shrink: 0; }
  h1 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(24px, 6vw, 46px);
    line-height: 1.15;
    margin: 12px 0 6px;
    word-wrap: break-word;
  }
  h1 em { font-style: italic; color: var(--blue); }
  .lede { max-width: 700px; font-size: clamp(13px, 2.6vw, 14px); color: var(--ink-dim); margin-top: 6px; line-height: 1.6; }

  /* Scoreboard Grid */
  .scoreboard {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 12px 14px;
    background: var(--panel-2);
    box-shadow: var(--shadow);
  }
  .score-item { text-align: center; padding: 4px; min-width: 0; }
  .score-item .num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: clamp(12px, 3vw, 14px);
    font-weight: 700;
    color: var(--blue);
    white-space: nowrap;
  }
  .score-item .lbl {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 8.5px;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--ink-dim);
    margin-top: 2px;
    line-height: 1.3;
  }
  .progress-outer {
    width: 100%;
    height: 6px;
    background: #e9ecef;
    border-radius: 4px;
    overflow: hidden;
    margin-top: 12px;
  }
  .progress-inner {
    height: 100%;
    width: 0%;
    background: var(--blue);
    transition: width .3s ease;
  }

  /* Navigation Tabs */
  nav.tabs {
    position: sticky; top: 0; z-index: 20;
    background: #fff;
    border-bottom: 1px solid var(--line);
    padding: 8px 0;
  }
  nav.tabs .wrap {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display: none; }

  .tab-btn {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 20px;
    background: #fff;
    color: var(--ink-dim);
    cursor: pointer;
    transition: all .2s ease;
    flex-shrink: 0;
    min-height: 40px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .tab-btn:hover { border-color: var(--blue-soft); color: var(--ink); }
  .tab-btn:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
  .tab-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }
  .tab-btn .count { opacity: .85; margin-left: 3px; font-weight: 700; }

  section.panel { padding: 24px 0 36px; display: none; }
  section.panel.active { display: block; }

  .kicker {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--blue);
    margin-bottom: 4px;
  }
  h2 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(20px, 4.5vw, 32px);
    margin: 0 0 4px;
    word-wrap: break-word;
  }
  .section-hint { color: var(--ink-dim); font-size: clamp(12px, 2.6vw, 13px); margin-bottom: 16px; }

  /* Question Cards */
  .q-card {
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: clamp(12px, 3vw, 16px);
    margin-bottom: 14px;
    background: #fff;
    transition: border-color .2s ease;
    overflow-wrap: break-word;
  }
  .q-card.correct { border-color: var(--green); background: rgba(25, 135, 84, 0.03); }
  .q-card.incorrect { border-color: var(--red); background: rgba(217, 83, 79, 0.03); }
  .q-num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    color: var(--blue);
    margin-bottom: 4px;
  }
  .q-text { font-size: clamp(14px, 3vw, 15px); color: var(--ink); margin-bottom: 10px; line-height: 1.7; overflow-wrap: break-word; }
  .feedback {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 12px;
    margin-top: 8px;
    display: none;
    word-break: break-word;
  }
  .feedback.show { display: block; }
  .feedback.correct { color: var(--green); }
  .feedback.incorrect { color: var(--red); }

  select, input[type=&quot;text&quot;] {
    font-family: &#39;Source Serif 4&#39;, serif;
    font-size: 15px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 4px;
    background: var(--panel-2);
    color: var(--ink);
    margin: 4px 2px;
    max-width: 100%;
    min-height: 42px;
    vertical-align: middle;
  }
  select.correct-input, input.correct-input { border-color: var(--green); background: rgba(25, 135, 84, 0.08); }
  select.incorrect-input, input.incorrect-input { border-color: var(--red); background: rgba(217, 83, 79, 0.08); }

  .fib-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
  .fib-row input { flex: 1; min-width: 200px; width: 100%; }

  .btn-check {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 12px 18px;
    border: 1px solid var(--blue);
    border-radius: 4px;
    background: var(--blue);
    color: #fff;
    cursor: pointer;
    transition: all .15s ease;
    margin-top: 12px;
    display: inline-block;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .btn-check:hover { background: var(--blue-soft); border-color: var(--blue-soft); }
  .btn-check:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

  footer {
    padding: 24px 0 32px;
    text-align: center;
    color: var(--ink-dim);
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 10px;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-top: 1px solid var(--line);
    padding-left: 16px;
    padding-right: 16px;
  }

  @media (max-width: 768px) {
    :root { --gutter: 16px; }
    select, input[type=&quot;text&quot;] { width: 100%; margin: 4px 0; }
    .btn-check { width: 100%; text-align: center; padding: 12px 0; }
    .fib-row input { min-width: 0; }
  }

  @media (max-width: 480px) {
    :root { --gutter: 12px; }
    .scoreboard { grid-template-columns: repeat(2, 1fr); gap: 10px 6px; }
    .q-card { padding: 12px; }
    .tab-btn { font-size: 10px; padding: 9px 12px; }
    header.hero { padding-top: 18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty-One Assessment&lt;/div&gt;
    &lt;h1&gt;Grand Exercises on &lt;em&gt;Articles (A, An, and The)&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A comprehensive 50-mark interactive assessment covering article classification, sound rules, definite article contexts, omissions, repetition rules, and contextual gap-filling based on Chapter Forty-One[cite: 15].&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (Rules MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Single Gaps)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/20&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Context Passages)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/50&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Grand Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Rules &amp; MCQs &lt;span class=&quot;count&quot;&gt;[15m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Sentence Gaps &lt;span class=&quot;count&quot;&gt;[15m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Context Passages &lt;span class=&quot;count&quot;&gt;[20m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Rules &amp; Concepts MCQs (15 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (15 Marks)&lt;/div&gt;
    &lt;h2&gt;Grammatical Rules &amp; Article Identification&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct grammatical rule or article application based on Chapter Forty-One (1 mark each)[cite: 15].&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Guided Sentence Completion (15 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (15 Marks)&lt;/div&gt;
    &lt;h2&gt;Targeted Article Insertion&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Type the correct article (&#39;a&#39;, &#39;an&#39;, &#39;the&#39;) or &#39;x&#39; (or &#39;×&#39;) for no article to complete each sentence accurately (1 mark each)[cite: 15].&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Contextual Passages (20 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (20 Marks)&lt;/div&gt;
    &lt;h2&gt;Contextual Passage Completion&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Fill in the blanks across two complete passages by choosing the correct article (&#39;a&#39;, &#39;an&#39;, &#39;the&#39;, or &#39;×&#39;) for each gap (20 blanks, 1 mark each)[cite: 15].&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-num&quot;&gt;Passage A: Honesty and Moral Growth (Questions 1 to 10)&lt;/div&gt;
      &lt;div class=&quot;q-text&quot;&gt;
        Honesty is (1) 
        &lt;select id=&quot;m3-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; great virtue[cite: 15]. An honest man is respected by all because he never tells (2) 
        &lt;select id=&quot;m3-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; lie[cite: 15]. He always follows (3) 
        &lt;select id=&quot;m3-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; path of truth and justice[cite: 15]. In fact, honesty is (4) 
        &lt;select id=&quot;m3-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; quality that makes a man noble[cite: 15]. A dishonest person cannot earn (5) 
        &lt;select id=&quot;m3-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; respect of society[cite: 15]. Everybody hates (6) 
        &lt;select id=&quot;m3-6&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; liar because he deceives others[cite: 15]. So, every student should try to become (7) 
        &lt;select id=&quot;m3-7&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; honest person from childhood[cite: 15]. Only then can he become (8) 
        &lt;select id=&quot;m3-8&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; asset to the nation[cite: 15]. Truly speaking, honesty is (9) 
        &lt;select id=&quot;m3-9&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; best policy in life[cite: 15] and it leads a man to (10) 
        &lt;select id=&quot;m3-10&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; success[cite: 15].
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-num&quot;&gt;Passage B: Books and Knowledge (Questions 11 to 20)&lt;/div&gt;
      &lt;div class=&quot;q-text&quot;&gt;
        Books are (11) 
        &lt;select id=&quot;m3-11&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; best companions in our life[cite: 15]. They introduce us to (12) 
        &lt;select id=&quot;m3-12&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; world of knowledge and imagination[cite: 15]. A student should make (13) 
        &lt;select id=&quot;m3-13&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; habit of reading books regularly[cite: 15]. Reading is not only (14) 
        &lt;select id=&quot;m3-14&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; source of pleasure[cite: 15] but also enriches our mind. Sometimes we get (15) 
        &lt;select id=&quot;m3-15&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; opportunity to learn from the experiences of great writers[cite: 15]. A good book can play (16) 
        &lt;select id=&quot;m3-16&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; important role in shaping our character[cite: 15]. In fact, books help us become (17) 
        &lt;select id=&quot;m3-17&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; enlightened person[cite: 15]. Therefore, everyone should develop (18) 
        &lt;select id=&quot;m3-18&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; love for books from childhood[cite: 15]. Truly, books are (19) 
        &lt;select id=&quot;m3-19&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; storehouse of wisdom[cite: 15] and guide us to (20) 
        &lt;select id=&quot;m3-20&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;&lt;option value=&quot;an&quot;&gt;an&lt;/option&gt;&lt;option value=&quot;the&quot;&gt;the&lt;/option&gt;&lt;option value=&quot;×&quot;&gt;× (no article)&lt;/option&gt;&lt;/select&gt; right path[cite: 15].
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Forty-One Assessment · Articles (A, An, and The) Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Switching Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior: &#39;smooth&#39;, inline: &#39;center&#39;, block: &#39;nearest&#39; });
      });
    });

    // Score Tracking Object (50 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/15&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/15&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/20&#39;;

      const total = scores.m1 + scores.m2 + scores.m3;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/50&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 50) * 100) + &#39;%&#39;;
    }

    // --- PART 1: RULES &amp; CONCEPTS MCQS (15 Marks) ---
    const m1Data = [
      { q: &quot;How do modern grammar systems usually classify articles?&quot;, opts: [&quot;Determiners&quot;, &quot;Predicate Adjectives&quot;, &quot;Adverbs of Manner&quot;, &quot;Conjunctions&quot;], ans: &quot;Determiners&quot; },
      { q: &quot;Which article choice is correct before words starting with a vowel letter pronounced like &#39;u&#39; (e.g., &#39;university&#39;, &#39;European&#39;)?&quot;, opts: [&quot;a&quot;, &quot;an&quot;, &quot;the&quot;, &quot;No article needed&quot;], ans: &quot;a&quot; },
      { q: &quot;Which article is used before the word &#39;one&#39; in expressions like &#39;_____ one-taka note&#39; or &#39;_____ one-eyed man&#39;?&quot;, opts: [&quot;a&quot;, &quot;an&quot;, &quot;the&quot;, &quot;No article&quot;], ans: &quot;a&quot; },
      { q: &quot;If an abbreviation starts with a letter that produces a vowel sound (e.g., &#39;M.A.&#39;, &#39;F.R.C.S.&#39;), which article precedes it?&quot;, opts: [&quot;an&quot;, &quot;a&quot;, &quot;the&quot;, &quot;No article&quot;], ans: &quot;an&quot; },
      { q: &quot;When &#39;a&#39; is used in place of the preposition &#39;on&#39; (e.g., &#39;went a hunting&#39;), it is known as a:&quot;, opts: [&quot;Disguised preposition&quot;, &quot;Generalizing article&quot;, &quot;Possessive determiner&quot;, &quot;Epithet&quot;], ans: &quot;Disguised preposition&quot; },
      { q: &quot;In general, which article is placed before superlative adjectives (e.g., &#39;best&#39;, &#39;most beautiful&#39;)?&quot;, opts: [&quot;the&quot;, &quot;a&quot;, &quot;an&quot;, &quot;No article&quot;], ans: &quot;the&quot; },
      { q: &quot;Which of the following geographical features should NOT take &#39;the&#39; before its name?&quot;, opts: [&quot;A single mountain (e.g., Mount Everest)&quot;, &quot;A river (e.g., The Padma)&quot;, &quot;An ocean (e.g., The Pacific Ocean)&quot;, &quot;A desert (e.g., The Sahara)&quot;], ans: &quot;A single mountain (e.g., Mount Everest)&quot; },
      { q: &quot;What article rule applies to names of meals (breakfast, lunch, dinner) when no adjective precedes them?&quot;, opts: [&quot;No article is used&quot;, &quot;&#39;a&#39; is always used&quot;, &quot;&#39;the&#39; is required&quot;, &quot;&#39;an&#39; is used before breakfast&quot;], ans: &quot;No article is used&quot; },
      { q: &quot;When two singular nouns joined by &#39;and&#39; refer to two separate people (e.g., &#39;The headmaster and the secretary&#39;), how are articles applied?&quot;, opts: [&quot;Each noun takes &#39;the&#39;&quot;, &quot;Only the first noun takes &#39;the&#39;&quot;, &quot;Neither noun takes &#39;the&#39;&quot;, &quot;Only the second noun takes &#39;a&#39;&quot;], ans: &quot;Each noun takes &#39;the&#39;&quot; },
      { q: &quot;When the primary purpose of a institution/place is intended (e.g., going to school as a pupil), how is &#39;the&#39; used before &#39;school&#39; or &#39;hospital&#39;?&quot;, opts: [&quot;No article &#39;the&#39; is used&quot;, &quot;&#39;The&#39; is mandatory&quot;, &quot;&#39;A&#39; must be used&quot;, &quot;&#39;An&#39; is used&quot;], ans: &quot;No article &#39;the&#39; is used&quot; },
      { q: &quot;Which expression means &#39;almost none&#39; or &#39;a negligible amount&#39;?&quot;, opts: [&quot;few / little&quot;, &quot;a few / a little&quot;, &quot;the few / the little&quot;, &quot;many / much&quot;], ans: &quot;few / little&quot; },
      { q: &quot;Which article is used before an abstract noun when it is specified by a defining phrase (e.g., &#39;_____ courage of Richard&#39;)?&quot;, opts: [&quot;the&quot;, &quot;a&quot;, &quot;an&quot;, &quot;No article&quot;], ans: &quot;the&quot; },
      { q: &quot;Before the name of a language (e.g., &#39;English&#39;), when is &#39;the&#39; omitted?&quot;, opts: [&quot;When the word &#39;language&#39; does NOT follow it&quot;, &quot;When the word &#39;language&#39; follows it&quot;, &quot;Always&quot;, &quot;Never&quot;], ans: &quot;When the word &#39;language&#39; does NOT follow it&quot; },
      { q: &quot;Which article precedes numerical expressions like &#39;dozen&#39;, &#39;hundred&#39;, or &#39;thousand&#39;?&quot;, opts: [&quot;a&quot;, &quot;an&quot;, &quot;the&quot;, &quot;No article&quot;], ans: &quot;a&quot; },
      { q: &quot;What article is used before names of games (e.g., &#39;football&#39;, &#39;cricket&#39;)?&quot;, opts: [&quot;No article (Omission)&quot;, &quot;the&quot;, &quot;a&quot;, &quot;an&quot;], ans: &quot;No article (Omission)&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 15 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: GUIDED SENTENCE COMPLETION (15 Marks) ---
    const m2Data = [
      { q: &quot;He is _____ honest man who always tells the truth.&quot;, ans: &quot;an&quot; },
      { q: &quot;I saw _____ one-eyed man begging by the street.&quot;, ans: &quot;a&quot; },
      { q: &quot;Mr. Rahman is _____ M.A. in English literature.&quot;, ans: &quot;an&quot; },
      { q: &quot;Copper is _____ useful metal for electrical wiring.&quot;, ans: &quot;a&quot; },
      { q: &quot;_____ Pacific Ocean is the largest ocean on Earth.&quot;, ans: &quot;the&quot; },
      { q: &quot;Mount Everest is _____ highest peak in the world.&quot;, ans: &quot;the&quot; },
      { q: &quot;He plays _____ guitar exceptionally well.&quot;, ans: &quot;the&quot; },
      { q: &quot;We usually have _____ breakfast at 8:00 AM.&quot;, ans: &quot;x&quot; },
      { q: &quot;They elected him _____ chairman of the committee.&quot;, ans: &quot;x&quot; },
      { q: &quot;_____ English language is spoken across the world.&quot;, ans: &quot;the&quot; },
      { q: &quot;He has _____ red and white horse. (referring to a single horse)&quot;, ans: &quot;a&quot; },
      { q: &quot;The patient was taken to _____ hospital for emergency treatment.&quot;, ans: &quot;x&quot; },
      { q: &quot;What _____ pity you could not join the trip!&quot;, ans: &quot;a&quot; },
      { q: &quot;She bought _____ dozen apples from the market.&quot;, ans: &quot;a&quot; },
      { q: &quot;_____ virtue is its own reward.&quot;, ans: &quot;x&quot; }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 15 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Sentence:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type &#39;a&#39;, &#39;an&#39;, &#39;the&#39;, or &#39;x&#39;...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m2-in-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);

            const userClean = input.value.trim().toLowerCase();
            const targetClean = item.ans.trim().toLowerCase();

            // Support &#39;x&#39;, &#39;cross&#39;, &#39;×&#39;, or &#39;none&#39; for omission
            let isCorrect = userClean === targetClean;
            if (targetClean === &quot;x&quot; &amp;&amp; (userClean === &quot;×&quot; || userClean === &quot;cross&quot; || userClean === &quot;none&quot; || userClean === &quot;no article&quot;)) {
                isCorrect = true;
            }

            if (isCorrect) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = `Correct! (+1 Mark)`;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Expected answer: &quot;${item.ans}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: CONTEXTUAL PASSAGES (20 Marks) ---
    const passageKeys = {
      1: &quot;a&quot;, 2: &quot;a&quot;, 3: &quot;the&quot;, 4: &quot;a&quot;, 5: &quot;the&quot;,
      6: &quot;a&quot;, 7: &quot;an&quot;, 8: &quot;an&quot;, 9: &quot;the&quot;, 10: &quot;×&quot;,
      11: &quot;the&quot;, 12: &quot;the&quot;, 13: &quot;a&quot;, 14: &quot;a&quot;, 15: &quot;an&quot;,
      16: &quot;an&quot;, 17: &quot;an&quot;, 18: &quot;a&quot;, 19: &quot;a&quot;, 20: &quot;the&quot;
    };

    function checkModule3() {
        let currentScore = 0;
        for (let i = 1; i &lt;= 20; i++) {
            const select = document.getElementById(`m3-${i}`);
            if (select) {
                if (select.value === passageKeys[i]) {
                    select.className = &quot;correct-input&quot;;
                    currentScore += 1;
                } else {
                    select.className = &quot;incorrect-input&quot;;
                }
            }
        }
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // Initialize all modules on page load
    window.onload = function() {
        renderModule1();
        renderModule2();
        updateScoreboard();
    };
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/9051824820047601111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/9051824820047601111?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/9051824820047601111'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/9051824820047601111'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-41-articles-exercises.html' title='Chapter 41: Articles Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-4561621400692437210</id><published>2026-08-07T21:21:14.993-07:00</published><updated>2026-08-17T01:54:34.707-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 40: Right forms of Verbs Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Forty Assessment · Right Forms of the Verb (50 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root {
    --bg: #ffffff;
    --panel: #ffffff;
    --panel-2: #f8f9fa;
    --ink: #222222;
    --ink-dim: #555555;
    --blue: #0d6efd;
    --blue-soft: #4a7bd8;
    --red: #d9534f;
    --green: #198754;
    --line: rgba(0, 0, 0, 0.12);
    --shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
    --gutter: 24px;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
  body {
    margin: 0;
    background: #fff;
    color: var(--ink);
    font-family: &#39;Source Serif 4&#39;, serif;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    width: 100%;
  }
  img, svg { max-width: 100%; }
  ::selection { background: var(--blue); color: #fff; }
  .wrap { max-width: 980px; margin: 0 auto; padding: 0 var(--gutter); width: 100%; }

  /* Header &amp; Scoreboard */
  header.hero {
    padding: clamp(20px, 4vw, 32px) 0 20px;
    border-bottom: 1px solid var(--line);
  }
  .eyebrow {
    font-family: &#39;Space Mono&#39;, monospace;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: 11px;
    color: var(--blue);
    display: flex; align-items: center; gap: 10px;
    flex-wrap: wrap;
  }
  .eyebrow::before { content: &quot;&quot;; width: 28px; height: 1px; background: var(--blue-soft); flex-shrink: 0; }
  h1 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(24px, 6vw, 46px);
    line-height: 1.15;
    margin: 12px 0 6px;
    word-wrap: break-word;
  }
  h1 em { font-style: italic; color: var(--blue); }
  .lede { max-width: 700px; font-size: clamp(13px, 2.6vw, 14px); color: var(--ink-dim); margin-top: 6px; line-height: 1.6; }

  /* Scoreboard Grid */
  .scoreboard {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 12px 14px;
    background: var(--panel-2);
    box-shadow: var(--shadow);
  }
  .score-item { text-align: center; padding: 4px; min-width: 0; }
  .score-item .num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: clamp(12px, 3vw, 14px);
    font-weight: 700;
    color: var(--blue);
    white-space: nowrap;
  }
  .score-item .lbl {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 8.5px;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--ink-dim);
    margin-top: 2px;
    line-height: 1.3;
  }
  .progress-outer {
    width: 100%;
    height: 6px;
    background: #e9ecef;
    border-radius: 4px;
    overflow: hidden;
    margin-top: 12px;
  }
  .progress-inner {
    height: 100%;
    width: 0%;
    background: var(--blue);
    transition: width .3s ease;
  }

  /* Navigation Tabs */
  nav.tabs {
    position: sticky; top: 0; z-index: 20;
    background: #fff;
    border-bottom: 1px solid var(--line);
    padding: 8px 0;
  }
  nav.tabs .wrap {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display: none; }

  .tab-btn {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 20px;
    background: #fff;
    color: var(--ink-dim);
    cursor: pointer;
    transition: all .2s ease;
    flex-shrink: 0;
    min-height: 40px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .tab-btn:hover { border-color: var(--blue-soft); color: var(--ink); }
  .tab-btn:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
  .tab-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }
  .tab-btn .count { opacity: .85; margin-left: 3px; font-weight: 700; }

  section.panel { padding: 24px 0 36px; display: none; }
  section.panel.active { display: block; }

  .kicker {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--blue);
    margin-bottom: 4px;
  }
  h2 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(20px, 4.5vw, 32px);
    margin: 0 0 4px;
    word-wrap: break-word;
  }
  .section-hint { color: var(--ink-dim); font-size: clamp(12px, 2.6vw, 13px); margin-bottom: 16px; }

  /* Question Cards */
  .q-card {
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: clamp(12px, 3vw, 16px);
    margin-bottom: 14px;
    background: #fff;
    transition: border-color .2s ease;
    overflow-wrap: break-word;
  }
  .q-card.correct { border-color: var(--green); background: rgba(25, 135, 84, 0.03); }
  .q-card.incorrect { border-color: var(--red); background: rgba(217, 83, 79, 0.03); }
  .q-num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    color: var(--blue);
    margin-bottom: 4px;
  }
  .q-text { font-size: clamp(14px, 3vw, 15px); color: var(--ink); margin-bottom: 10px; line-height: 1.7; overflow-wrap: break-word; }
  .feedback {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 12px;
    margin-top: 8px;
    display: none;
    word-break: break-word;
  }
  .feedback.show { display: block; }
  .feedback.correct { color: var(--green); }
  .feedback.incorrect { color: var(--red); }

  select, input[type=&quot;text&quot;] {
    font-family: &#39;Source Serif 4&#39;, serif;
    font-size: 15px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 4px;
    background: var(--panel-2);
    color: var(--ink);
    margin: 4px 2px;
    max-width: 100%;
    min-height: 42px;
    vertical-align: middle;
  }
  select.correct-input, input.correct-input { border-color: var(--green); background: rgba(25, 135, 84, 0.08); }
  select.incorrect-input, input.incorrect-input { border-color: var(--red); background: rgba(217, 83, 79, 0.08); }

  .fib-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
  .fib-row input { flex: 1; min-width: 200px; width: 100%; }

  .btn-check {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 12px 18px;
    border: 1px solid var(--blue);
    border-radius: 4px;
    background: var(--blue);
    color: #fff;
    cursor: pointer;
    transition: all .15s ease;
    margin-top: 12px;
    display: inline-block;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .btn-check:hover { background: var(--blue-soft); border-color: var(--blue-soft); }
  .btn-check:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

  footer {
    padding: 24px 0 32px;
    text-align: center;
    color: var(--ink-dim);
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 10px;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-top: 1px solid var(--line);
    padding-left: 16px;
    padding-right: 16px;
  }

  @media (max-width: 768px) {
    :root { --gutter: 16px; }
    select, input[type=&quot;text&quot;] { width: 100%; margin: 4px 0; }
    .btn-check { width: 100%; text-align: center; padding: 12px 0; }
    .fib-row input { min-width: 0; }
  }

  @media (max-width: 480px) {
    :root { --gutter: 12px; }
    .scoreboard { grid-template-columns: repeat(2, 1fr); gap: 10px 6px; }
    .q-card { padding: 12px; }
    .tab-btn { font-size: 10px; padding: 9px 12px; }
    header.hero { padding-top: 18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Forty Assessment&lt;/div&gt;
    &lt;h1&gt;Grand Exercises on &lt;em&gt;Right Forms of the Verb&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A comprehensive 50-mark interactive assessment covering grammatical rules, verb transformations, conditional structures, infinitive/gerund usage, and contextual passage completion based on Chapter Forty[cite: 14].&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (Grammar MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Sentence Completion)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/20&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Context Passages)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/50&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Grand Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Rules &amp; MCQs &lt;span class=&quot;count&quot;&gt;[15m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Sentence Completion &lt;span class=&quot;count&quot;&gt;[15m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Context Passages &lt;span class=&quot;count&quot;&gt;[20m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Theoretical &amp; Rules MCQs (15 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (15 Marks)&lt;/div&gt;
    &lt;h2&gt;Grammatical Rules &amp; Structural Concepts&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct grammatical rule or verb application based on Chapter Forty (1 mark each)[cite: 14].&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Guided Sentence Completion (15 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (15 Marks)&lt;/div&gt;
    &lt;h2&gt;Targeted Verb Form Transformation&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Type the correct form of the verb given in parentheses to complete each sentence accurately (1 mark each)[cite: 14].&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Comprehensive Contextual Passages (20 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (20 Marks)&lt;/div&gt;
    &lt;h2&gt;Contextual Passage Completion&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Fill in the blanks across two complete contextual passages by choosing the correct verb form from the options (20 blanks, 1 mark each)[cite: 14].&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-num&quot;&gt;Passage A: Value of Reading and Personal Growth (Questions 1 to 10)&lt;/div&gt;
      &lt;div class=&quot;q-text&quot;&gt;
        Books (1) 
        &lt;select id=&quot;m3-1&quot; data-opts=&quot;are,is,was&quot;&gt;&lt;/select&gt; (be) our best friends[cite: 14]. They (2) 
        &lt;select id=&quot;m3-2&quot; data-opts=&quot;give,gives,given&quot;&gt;&lt;/select&gt; (give) us knowledge and wisdom[cite: 14]. A good book always (3) 
        &lt;select id=&quot;m3-3&quot; data-opts=&quot;inspires,inspire,inspiring&quot;&gt;&lt;/select&gt; (inspire) us to do noble deeds[cite: 14]. Students who regularly (4) 
        &lt;select id=&quot;m3-4&quot; data-opts=&quot;read,reads,reading&quot;&gt;&lt;/select&gt; (read) books usually (5) 
        &lt;select id=&quot;m3-5&quot; data-opts=&quot;perform,performs,performed&quot;&gt;&lt;/select&gt; (perform) well in examinations[cite: 14]. Reading books (6) 
        &lt;select id=&quot;m3-6&quot; data-opts=&quot;develops,develop,developing&quot;&gt;&lt;/select&gt; (develop) our imagination and creativity[cite: 14]. Nowadays many young people (7) 
        &lt;select id=&quot;m3-7&quot; data-opts=&quot;spend,spends,spent&quot;&gt;&lt;/select&gt; (spend) more time on mobile phones than on books[cite: 14]. As a result, they (8) 
        &lt;select id=&quot;m3-8&quot; data-opts=&quot;lose,loses,lost&quot;&gt;&lt;/select&gt; (lose) interest in reading[cite: 14]. We should (9) 
        &lt;select id=&quot;m3-9&quot; data-opts=&quot;encourage,encourages,encouraged&quot;&gt;&lt;/select&gt; (encourage) children to read books from an early age so that they may (10) 
        &lt;select id=&quot;m3-10&quot; data-opts=&quot;grow,grows,grew&quot;&gt;&lt;/select&gt; (grow) intellectually[cite: 14].
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-num&quot;&gt;Passage B: Environmental Protection and Civic Duty (Questions 11 to 20)&lt;/div&gt;
      &lt;div class=&quot;q-text&quot;&gt;
        It is high time we (11) 
        &lt;select id=&quot;m3-11&quot; data-opts=&quot;took,take,taken&quot;&gt;&lt;/select&gt; (take) steps to save the environment[cite: 14]. Many animals are in danger because people (12) 
        &lt;select id=&quot;m3-12&quot; data-opts=&quot;are destroying,destroys,destroyed&quot;&gt;&lt;/select&gt; (destroy) forests recklessly[cite: 14]. If immediate measures are (13) 
        &lt;select id=&quot;m3-13&quot; data-opts=&quot;not taken,not take,not taking&quot;&gt;&lt;/select&gt; (not take), many species will (14) 
        &lt;select id=&quot;m3-14&quot; data-opts=&quot;disappear,disappears,disappeared&quot;&gt;&lt;/select&gt; (disappear)[cite: 14]. Scientists have already (15) 
        &lt;select id=&quot;m3-15&quot; data-opts=&quot;warned,warn,warning&quot;&gt;&lt;/select&gt; (warn) us about climate change[cite: 14]. We should (16) 
        &lt;select id=&quot;m3-16&quot; data-opts=&quot;reduce,reduces,reduced&quot;&gt;&lt;/select&gt; (reduce) pollution immediately[cite: 14]. Some countries are trying (17) 
        &lt;select id=&quot;m3-17&quot; data-opts=&quot;to develop,developing,developed&quot;&gt;&lt;/select&gt; (develop) renewable energy sources[cite: 14]. By (18) 
        &lt;select id=&quot;m3-18&quot; data-opts=&quot;using,use,used&quot;&gt;&lt;/select&gt; (use) solar energy, we can (19) 
        &lt;select id=&quot;m3-19&quot; data-opts=&quot;protect,protects,protected&quot;&gt;&lt;/select&gt; (protect) nature better[cite: 14]. Everyone must (20) 
        &lt;select id=&quot;m3-20&quot; data-opts=&quot;be,is,been&quot;&gt;&lt;/select&gt; (be) aware of environmental issues[cite: 14].
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Forty Assessment · Right Forms of the Verb Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Switching Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior: &#39;smooth&#39;, inline: &#39;center&#39;, block: &#39;nearest&#39; });
      });
    });

    // Score Tracking Object (50 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/15&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/15&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/20&#39;;

      const total = scores.m1 + scores.m2 + scores.m3;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/50&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 50) * 100) + &#39;%&#39;;
    }

    // Fisher-Yates shuffle (keeps the correct-answer position from ever being predictable)
    function shuffleArray(arr) {
      const a = arr.slice();
      for (let i = a.length - 1; i &gt; 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [a[i], a[j]] = [a[j], a[i]];
      }
      return a;
    }

    // --- PART 1: THEORETICAL &amp; RULES MCQS (15 Marks) ---
    const m1Data = [
      { q: &quot;What form of the verb must be used after modal auxiliaries like &#39;can&#39;, &#39;could&#39;, &#39;may&#39;, and &#39;must&#39;?&quot;, opts: [&quot;Base Form&quot;, &quot;Past Participle&quot;, &quot;Present Participle&quot;, &quot;Gerund&quot;], ans: &quot;Base Form&quot; },
      { q: &quot;Which form follows expressions like &#39;look forward to&#39;, &#39;with a view to&#39;, and &#39;be accustomed to&#39;?&quot;, opts: [&quot;Gerund (-ing form)&quot;, &quot;Base Form&quot;, &quot;Past Form (V2)&quot;, &quot;Infinitive without to&quot;], ans: &quot;Gerund (-ing form)&quot; },
      { q: &quot;What verb form typically follows &#39;it is high time&#39; when introducing a subject clause?&quot;, opts: [&quot;Past Form (V2)&quot;, &quot;Present Simple&quot;, &quot;Future Simple&quot;, &quot;Present Perfect&quot;], ans: &quot;Past Form (V2)&quot; },
      { q: &quot;In a Third Conditional sentence, if the &#39;if&#39;-clause is in Past Perfect, what is the structure of the main clause?&quot;, opts: [&quot;would / could / might have + Past Participle&quot;, &quot;would + Base Form&quot;, &quot;will + Base Form&quot;, &quot;had + Past Participle&quot;], ans: &quot;would / could / might have + Past Participle&quot; },
      { q: &quot;Which verb form should follow expressions like &#39;had better&#39;, &#39;would rather&#39;, and &#39;let&#39;?&quot;, opts: [&quot;Base Form (Bare Infinitive)&quot;, &quot;Past Participle&quot;, &quot;To-infinitive&quot;, &quot;Gerund&quot;], ans: &quot;Base Form (Bare Infinitive)&quot; },
      { q: &quot;Indefinite pronoun expressions such as &#39;each&#39;, &#39;every&#39;, and &#39;one of&#39; are followed by:&quot;, opts: [&quot;A Singular Verb&quot;, &quot;A Plural Verb&quot;, &quot;A Gerund only&quot;, &quot;An Auxiliary Verb only&quot;], ans: &quot;A Singular Verb&quot; },
      { q: &quot;What is the inverted structure for a Third Conditional sentence?&quot;, opts: [&quot;Had + subject + past participle&quot;, &quot;Did + subject + base form&quot;, &quot;Were + subject + noun&quot;, &quot;Would + subject + have&quot;], ans: &quot;Had + subject + past participle&quot; },
      { q: &quot;Which type of verb form is required after &#39;having&#39;, &#39;got&#39;, or &#39;to be&#39;?&quot;, opts: [&quot;Past Participle (V3)&quot;, &quot;Present Participle&quot;, &quot;Base Form&quot;, &quot;Infinitive&quot;], ans: &quot;Past Participle (V3)&quot; },
      { q: &quot;Which of the following time indicators requires the Simple Past tense?&quot;, opts: [&quot;yesterday, last year, ago&quot;, &quot;already, recently, just&quot;, &quot;always, usually, everyday&quot;, &quot;tomorrow, next week&quot;], ans: &quot;yesterday, last year, ago&quot; },
      { q: &quot;What verb form follows &#39;would you mind&#39; or &#39;could not help&#39;?&quot;, opts: [&quot;Gerund (-ing form)&quot;, &quot;Base Form&quot;, &quot;To-Infinitive&quot;, &quot;Past Form&quot;], ans: &quot;Gerund (-ing form)&quot; },
      { q: &quot;What is the result clause structure in a Second Conditional sentence (&#39;if&#39; + Past Simple)?&quot;, opts: [&quot;would + Base Form&quot;, &quot;will + Base Form&quot;, &quot;would have + Past Participle&quot;, &quot;had + Past Participle&quot;], ans: &quot;would + Base Form&quot; },
      { q: &quot;For passive voice constructions, which form of the main verb is always used?&quot;, opts: [&quot;Past Participle (V3)&quot;, &quot;Base Form&quot;, &quot;Present Participle&quot;, &quot;Gerund&quot;], ans: &quot;Past Participle (V3)&quot; },
      { q: &quot;In the Present Simple tense, when do we add &#39;-s&#39; or &#39;-es&#39; to the main verb?&quot;, opts: [&quot;When the subject is Third-Person Singular&quot;, &quot;When the subject is First-Person Singular&quot;, &quot;When the subject is Plural&quot;, &quot;When the sentence is negative&quot;], ans: &quot;When the subject is Third-Person Singular&quot; },
      { q: &quot;Which auxiliary is used for negation in Present Simple when the subject is Third-Person Singular?&quot;, opts: [&quot;does not&quot;, &quot;do not&quot;, &quot;did not&quot;, &quot;has not&quot;], ans: &quot;does not&quot; },
      { q: &quot;Which verb form is used after verbs such as &#39;enjoy&#39;, &#39;avoid&#39;, &#39;finish&#39;, and &#39;practice&#39;?&quot;, opts: [&quot;Gerund (-ing form)&quot;, &quot;Bare Infinitive&quot;, &quot;To-Infinitive&quot;, &quot;Past Participle&quot;], ans: &quot;Gerund (-ing form)&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            const shuffledOpts = shuffleArray(item.opts);
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            shuffledOpts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 15 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: GUIDED SENTENCE COMPLETION (15 Marks) ---
    const m2Data = [
      { q: &quot;I am looking forward to _____ (receive) your reply.&quot;, ans: &quot;receiving&quot; },
      { q: &quot;It is high time we _____ (change) our bad habits.&quot;, ans: &quot;changed&quot; },
      { q: &quot;If he had invited me, I _____ (attend) the function.&quot;, ans: &quot;would have attended&quot; },
      { q: &quot;You had better _____ (consult) a doctor without delay.&quot;, ans: &quot;consult&quot; },
      { q: &quot;One of my friends _____ (be) a talented musician.&quot;, ans: &quot;is&quot; },
      { q: &quot;Would that I _____ (be) a king!&quot;, ans: &quot;were&quot; },
      { q: &quot;He speaks as if he _____ (know) everything.&quot;, ans: &quot;knew&quot; },
      { q: &quot;We cannot help _____ (laugh) at his funny jokes.&quot;, ans: &quot;laughing&quot; },
      { q: &quot;The work was _____ (do) by him yesterday.&quot;, ans: &quot;done&quot; },
      { q: &quot;She went to the market with a view to _____ (buy) a book.&quot;, ans: &quot;buying&quot; },
      { q: &quot;Had I seen him, I _____ (tell) him the news.&quot;, ans: &quot;would have told&quot; },
      { q: &quot;Every student _____ (have) a duty to respect teachers.&quot;, ans: &quot;has&quot; },
      { q: &quot;He made me _____ (drive) his car.&quot;, ans: &quot;drive&quot; },
      { q: &quot;While _____ (walk) in the garden, a snake bit him.&quot;, ans: &quot;walking&quot; },
      { q: &quot;He has recently _____ (complete) his project.&quot;, ans: &quot;completed&quot; }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 15 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type conjugated verb form...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m2-in-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);

            const userClean = input.value.trim().toLowerCase();
            const targetClean = item.ans.trim().toLowerCase();

            // Allow reasonable variations for conditionals (could have / might have)
            let isCorrect = userClean === targetClean;
            if (!isCorrect &amp;&amp; item.ans.includes(&quot;would have&quot;)) {
                const altCould = item.ans.replace(&quot;would have&quot;, &quot;could have&quot;).toLowerCase();
                const altMight = item.ans.replace(&quot;would have&quot;, &quot;might have&quot;).toLowerCase();
                if (userClean === altCould || userClean === altMight) isCorrect = true;
            }

            if (isCorrect) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = `Correct! (+1 Mark)`;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Expected answer: &quot;${item.ans}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: CONTEXTUAL PASSAGES (20 Marks) ---
    const passageKeys = {
      1: &quot;are&quot;, 2: &quot;give&quot;, 3: &quot;inspires&quot;, 4: &quot;read&quot;, 5: &quot;perform&quot;,
      6: &quot;develops&quot;, 7: &quot;spend&quot;, 8: &quot;lose&quot;, 9: &quot;encourage&quot;, 10: &quot;grow&quot;,
      11: &quot;took&quot;, 12: &quot;are destroying&quot;, 13: &quot;not taken&quot;, 14: &quot;disappear&quot;, 15: &quot;warned&quot;,
      16: &quot;reduce&quot;, 17: &quot;to develop&quot;, 18: &quot;using&quot;, 19: &quot;protect&quot;, 20: &quot;be&quot;
    };

    function renderModule3Options() {
        for (let i = 1; i &lt;= 20; i++) {
            const select = document.getElementById(`m3-${i}`);
            if (!select) continue;
            const opts = select.dataset.opts.split(&quot;,&quot;);
            const shuffledOpts = shuffleArray(opts);
            let html = `&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;`;
            shuffledOpts.forEach(opt =&gt; {
                html += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });
            select.innerHTML = html;
        }
    }

    function checkModule3() {
        let currentScore = 0;
        for (let i = 1; i &lt;= 20; i++) {
            const select = document.getElementById(`m3-${i}`);
            if (select) {
                if (select.value === passageKeys[i]) {
                    select.className = &quot;correct-input&quot;;
                    currentScore += 1;
                } else {
                    select.className = &quot;incorrect-input&quot;;
                }
            }
        }
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // Initialize all modules on page load
    window.onload = function() {
        renderModule1();
        renderModule2();
        renderModule3Options();
        updateScoreboard();
    };
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/4561621400692437210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/4561621400692437210?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/4561621400692437210'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/4561621400692437210'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-forty-right-forms-of-verbs.html' title='Chapter 40: Right forms of Verbs Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-1307064852216395638</id><published>2026-08-07T21:07:19.439-07:00</published><updated>2026-08-07T21:07:19.440-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Verb Conjugation Exercises </title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Ten Assessment · English Verb Conjugation (50 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root {
    --bg: #ffffff;
    --panel: #ffffff;
    --panel-2: #f8f9fa;
    --ink: #222222;
    --ink-dim: #555555;
    --blue: #0d6efd;
    --blue-soft: #4a7bd8;
    --red: #d9534f;
    --green: #198754;
    --line: rgba(0, 0, 0, 0.12);
    --shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
    --gutter: 24px;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
  body {
    margin: 0;
    background: #fff;
    color: var(--ink);
    font-family: &#39;Source Serif 4&#39;, serif;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    width: 100%;
  }
  img, svg { max-width: 100%; }
  ::selection { background: var(--blue); color: #fff; }
  .wrap { max-width: 980px; margin: 0 auto; padding: 0 var(--gutter); width: 100%; }

  /* Header &amp; Scoreboard */
  header.hero {
    padding: clamp(20px, 4vw, 32px) 0 20px;
    border-bottom: 1px solid var(--line);
  }
  .eyebrow {
    font-family: &#39;Space Mono&#39;, monospace;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: 11px;
    color: var(--blue);
    display: flex; align-items: center; gap: 10px;
    flex-wrap: wrap;
  }
  .eyebrow::before { content: &quot;&quot;; width: 28px; height: 1px; background: var(--blue-soft); flex-shrink: 0; }
  h1 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(24px, 6vw, 46px);
    line-height: 1.15;
    margin: 12px 0 6px;
    word-wrap: break-word;
  }
  h1 em { font-style: italic; color: var(--blue); }
  .lede { max-width: 700px; font-size: clamp(13px, 2.6vw, 14px); color: var(--ink-dim); margin-top: 6px; line-height: 1.6; }

  /* Scoreboard Grid */
  .scoreboard {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 12px 14px;
    background: var(--panel-2);
    box-shadow: var(--shadow);
  }
  .score-item { text-align: center; padding: 4px; min-width: 0; }
  .score-item .num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: clamp(12px, 3vw, 14px);
    font-weight: 700;
    color: var(--blue);
    white-space: nowrap;
  }
  .score-item .lbl {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 8.5px;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--ink-dim);
    margin-top: 2px;
    line-height: 1.3;
  }
  .progress-outer {
    width: 100%;
    height: 6px;
    background: #e9ecef;
    border-radius: 4px;
    overflow: hidden;
    margin-top: 12px;
  }
  .progress-inner {
    height: 100%;
    width: 0%;
    background: var(--blue);
    transition: width .3s ease;
  }

  /* Navigation Tabs */
  nav.tabs {
    position: sticky; top: 0; z-index: 20;
    background: #fff;
    border-bottom: 1px solid var(--line);
    padding: 8px 0;
  }
  nav.tabs .wrap {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display: none; }

  .tab-btn {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 20px;
    background: #fff;
    color: var(--ink-dim);
    cursor: pointer;
    transition: all .2s ease;
    flex-shrink: 0;
    min-height: 40px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .tab-btn:hover { border-color: var(--blue-soft); color: var(--ink); }
  .tab-btn:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
  .tab-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }
  .tab-btn .count { opacity: .85; margin-left: 3px; font-weight: 700; }

  section.panel { padding: 24px 0 36px; display: none; }
  section.panel.active { display: block; }

  .kicker {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--blue);
    margin-bottom: 4px;
  }
  h2 {
    font-family: &#39;Cormorant Garamond&#39;, serif;
    font-weight: 600;
    font-size: clamp(20px, 4.5vw, 32px);
    margin: 0 0 4px;
    word-wrap: break-word;
  }
  .section-hint { color: var(--ink-dim); font-size: clamp(12px, 2.6vw, 13px); margin-bottom: 16px; }

  /* Question Cards */
  .q-card {
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: clamp(12px, 3vw, 16px);
    margin-bottom: 14px;
    background: #fff;
    transition: border-color .2s ease;
    overflow-wrap: break-word;
  }
  .q-card.correct { border-color: var(--green); background: rgba(25, 135, 84, 0.03); }
  .q-card.incorrect { border-color: var(--red); background: rgba(217, 83, 79, 0.03); }
  .q-num {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    color: var(--blue);
    margin-bottom: 4px;
  }
  .q-text { font-size: clamp(14px, 3vw, 15px); color: var(--ink); margin-bottom: 10px; line-height: 1.7; overflow-wrap: break-word; }
  .feedback {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 12px;
    margin-top: 8px;
    display: none;
    word-break: break-word;
  }
  .feedback.show { display: block; }
  .feedback.correct { color: var(--green); }
  .feedback.incorrect { color: var(--red); }

  select, input[type=&quot;text&quot;] {
    font-family: &#39;Source Serif 4&#39;, serif;
    font-size: 15px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 4px;
    background: var(--panel-2);
    color: var(--ink);
    margin: 4px 2px;
    max-width: 100%;
    min-height: 42px;
    vertical-align: middle;
  }
  select.correct-input, input.correct-input { border-color: var(--green); background: rgba(25, 135, 84, 0.08); }
  select.incorrect-input, input.incorrect-input { border-color: var(--red); background: rgba(217, 83, 79, 0.08); }

  .fib-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
  .fib-row input { flex: 1; min-width: 200px; width: 100%; }

  .btn-check {
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 11px;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 12px 18px;
    border: 1px solid var(--blue);
    border-radius: 4px;
    background: var(--blue);
    color: #fff;
    cursor: pointer;
    transition: all .15s ease;
    margin-top: 12px;
    display: inline-block;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .btn-check:hover { background: var(--blue-soft); border-color: var(--blue-soft); }
  .btn-check:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

  footer {
    padding: 24px 0 32px;
    text-align: center;
    color: var(--ink-dim);
    font-family: &#39;Space Mono&#39;, monospace;
    font-size: 10px;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-top: 1px solid var(--line);
    padding-left: 16px;
    padding-right: 16px;
  }

  @media (max-width: 768px) {
    :root { --gutter: 16px; }
    select, input[type=&quot;text&quot;] { width: 100%; margin: 4px 0; }
    .btn-check { width: 100%; text-align: center; padding: 12px 0; }
    .fib-row input { min-width: 0; }
  }

  @media (max-width: 480px) {
    :root { --gutter: 12px; }
    .scoreboard { grid-template-columns: repeat(2, 1fr); gap: 10px 6px; }
    .q-card { padding: 12px; }
    .tab-btn { font-size: 10px; padding: 9px 12px; }
    header.hero { padding-top: 18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Ten Assessment&lt;/div&gt;
    &lt;h1&gt;Grand Exercises on &lt;em&gt;English Verb Conjugation&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A comprehensive 50-mark interactive assessment based on verb conjugation principles, five principal forms, auxiliary verb tables (&#39;be&#39;, &#39;have&#39;, &#39;do&#39;), regular and irregular verb rules, and contextual passages[cite: 13].&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (Theory MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Form Practice)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/20&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Context Passages)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/50&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Grand Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Rules &amp; MCQs &lt;span class=&quot;count&quot;&gt;[15m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Verb Form Practice &lt;span class=&quot;count&quot;&gt;[15m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Contextual Passages &lt;span class=&quot;count&quot;&gt;[20m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Theoretical &amp; Structural MCQs (15 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (15 Marks)&lt;/div&gt;
    &lt;h2&gt;Theoretical &amp; Categorical Foundations&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct concept, classification, or verb form corresponding to Chapter Ten verb conjugation rules (1 mark each)[cite: 13].&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Guided Sentence Completion (15 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (15 Marks)&lt;/div&gt;
    &lt;h2&gt;Sentence Completion &amp; Correct Conjugation&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Type the correct form of the verb given in parentheses to complete each sentence according to tense, subject, and verb classification (1 mark each)[cite: 13].&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Comprehensive Contextual Passages (20 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (20 Marks)&lt;/div&gt;
    &lt;h2&gt;Contextual Board Passages&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Fill in the blanks across two complete passages by conjugating primary auxiliaries (&#39;be&#39;, &#39;have&#39;, &#39;do&#39;) and regular/irregular main verbs (20 blanks, 1 mark each)[cite: 13].&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-num&quot;&gt;Passage A: Academic Journey and Dedication (Questions 1 to 10)&lt;/div&gt;
      &lt;div class=&quot;q-text&quot;&gt;
        Last year, Hasan (1) 
        &lt;select id=&quot;m3-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;began&quot;&gt;began&lt;/option&gt;&lt;option value=&quot;begun&quot;&gt;begun&lt;/option&gt;&lt;option value=&quot;begin&quot;&gt;begin&lt;/option&gt;&lt;/select&gt; (begin) his high school studies with great enthusiasm[cite: 13]. He (2) 
        &lt;select id=&quot;m3-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;was&quot;&gt;was&lt;/option&gt;&lt;option value=&quot;were&quot;&gt;were&lt;/option&gt;&lt;option value=&quot;is&quot;&gt;is&lt;/option&gt;&lt;/select&gt; (be) always attentive in class[cite: 13]. Every morning, he (3) 
        &lt;select id=&quot;m3-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;arrives&quot;&gt;arrives&lt;/option&gt;&lt;option value=&quot;arrived&quot;&gt;arrived&lt;/option&gt;&lt;option value=&quot;arriving&quot;&gt;arriving&lt;/option&gt;&lt;/select&gt; (arrive) at school early to prepare his lessons[cite: 13]. His teachers (4) 
        &lt;select id=&quot;m3-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;have&quot;&gt;have&lt;/option&gt;&lt;option value=&quot;has&quot;&gt;has&lt;/option&gt;&lt;option value=&quot;had&quot;&gt;had&lt;/option&gt;&lt;/select&gt; (have) repeatedly praised his sincere efforts[cite: 13]. Until now, he has (5) 
        &lt;select id=&quot;m3-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;achieved&quot;&gt;achieved&lt;/option&gt;&lt;option value=&quot;achieve&quot;&gt;achieve&lt;/option&gt;&lt;option value=&quot;achieves&quot;&gt;achieves&lt;/option&gt;&lt;/select&gt; (achieve) top marks in all terminal examinations[cite: 13]. Yesterday, he (6) 
        &lt;select id=&quot;m3-6&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;wrote&quot;&gt;wrote&lt;/option&gt;&lt;option value=&quot;written&quot;&gt;written&lt;/option&gt;&lt;option value=&quot;write&quot;&gt;write&lt;/option&gt;&lt;/select&gt; (write) an exemplary essay on environmental preservation[cite: 13]. The principal (7) 
        &lt;select id=&quot;m3-7&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;gave&quot;&gt;gave&lt;/option&gt;&lt;option value=&quot;given&quot;&gt;given&lt;/option&gt;&lt;option value=&quot;give&quot;&gt;give&lt;/option&gt;&lt;/select&gt; (give) him a prize during the special assembly[cite: 13]. Hasan (8) 
        &lt;select id=&quot;m3-8&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;does&quot;&gt;does&lt;/option&gt;&lt;option value=&quot;do&quot;&gt;do&lt;/option&gt;&lt;option value=&quot;did&quot;&gt;did&lt;/option&gt;&lt;/select&gt; (do) not waste his leisure time in idle activities[cite: 13]. Instead, he (9) 
        &lt;select id=&quot;m3-9&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;chooses&quot;&gt;chooses&lt;/option&gt;&lt;option value=&quot;chose&quot;&gt;chose&lt;/option&gt;&lt;option value=&quot;chosen&quot;&gt;chosen&lt;/option&gt;&lt;/select&gt; (choose) to read informative books in the library[cite: 13]. In the future, he (10) 
        &lt;select id=&quot;m3-10&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;will become&quot;&gt;will become&lt;/option&gt;&lt;option value=&quot;became&quot;&gt;became&lt;/option&gt;&lt;option value=&quot;becomes&quot;&gt;becomes&lt;/option&gt;&lt;/select&gt; (become) a renowned scholar[cite: 13].
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-num&quot;&gt;Passage B: Community Action and Environmental Duty (Questions 11 to 20)&lt;/div&gt;
      &lt;div class=&quot;q-text&quot;&gt;
        Human beings (11) 
        &lt;select id=&quot;m3-11&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;are&quot;&gt;are&lt;/option&gt;&lt;option value=&quot;is&quot;&gt;is&lt;/option&gt;&lt;option value=&quot;was&quot;&gt;was&lt;/option&gt;&lt;/select&gt; (be) responsible for maintaining ecological balance[cite: 13]. Unfortunately, improper actions have (12) 
        &lt;select id=&quot;m3-12&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;destroyed&quot;&gt;destroyed&lt;/option&gt;&lt;option value=&quot;destroy&quot;&gt;destroy&lt;/option&gt;&lt;option value=&quot;destroys&quot;&gt;destroys&lt;/option&gt;&lt;/select&gt; (destroy) many natural habitats[cite: 13]. Many young volunteers (13) 
        &lt;select id=&quot;m3-13&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;joined&quot;&gt;joined&lt;/option&gt;&lt;option value=&quot;joins&quot;&gt;joins&lt;/option&gt;&lt;option value=&quot;joining&quot;&gt;joining&lt;/option&gt;&lt;/select&gt; (join) the local cleanliness drive last weekend[cite: 13]. They (14) 
        &lt;select id=&quot;m3-14&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;collected&quot;&gt;collected&lt;/option&gt;&lt;option value=&quot;collects&quot;&gt;collects&lt;/option&gt;&lt;option value=&quot;collecting&quot;&gt;collecting&lt;/option&gt;&lt;/select&gt; (collect) plastic waste from the riverbank[cite: 13]. The team leader (15) 
        &lt;select id=&quot;m3-15&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;has&quot;&gt;has&lt;/option&gt;&lt;option value=&quot;have&quot;&gt;have&lt;/option&gt;&lt;option value=&quot;had&quot;&gt;had&lt;/option&gt;&lt;/select&gt; (have) organized several tree-planting campaigns this year[cite: 13]. Everyone (16) 
        &lt;select id=&quot;m3-16&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;understands&quot;&gt;understands&lt;/option&gt;&lt;option value=&quot;understand&quot;&gt;understand&lt;/option&gt;&lt;option value=&quot;understood&quot;&gt;understood&lt;/option&gt;&lt;/select&gt; (understand) the urgency of planting more trees[cite: 13]. Yesterday, they (17) 
        &lt;select id=&quot;m3-17&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;drew&quot;&gt;drew&lt;/option&gt;&lt;option value=&quot;drawn&quot;&gt;drawn&lt;/option&gt;&lt;option value=&quot;draws&quot;&gt;draws&lt;/option&gt;&lt;/select&gt; (draw) posters to spread public awareness[cite: 13]. The local council (18) 
        &lt;select id=&quot;m3-18&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;did&quot;&gt;did&lt;/option&gt;&lt;option value=&quot;do&quot;&gt;do&lt;/option&gt;&lt;option value=&quot;does&quot;&gt;does&lt;/option&gt;&lt;/select&gt; (do) support their noble initiative whole-heartedly[cite: 13]. If we all cooperate, we (19) 
        &lt;select id=&quot;m3-19&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;will build&quot;&gt;will build&lt;/option&gt;&lt;option value=&quot;built&quot;&gt;built&lt;/option&gt;&lt;option value=&quot;building&quot;&gt;building&lt;/option&gt;&lt;/select&gt; (build) a cleaner environment for tomorrow[cite: 13]. Nature (20) 
        &lt;select id=&quot;m3-20&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;gives&quot;&gt;gives&lt;/option&gt;&lt;option value=&quot;gave&quot;&gt;gave&lt;/option&gt;&lt;option value=&quot;given&quot;&gt;given&lt;/option&gt;&lt;/select&gt; (give) us life, so we must protect it[cite: 13].
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Ten Assessment · English Verb Conjugation Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Switching Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior: &#39;smooth&#39;, inline: &#39;center&#39;, block: &#39;nearest&#39; });
      });
    });

    // Score Tracking Object (50 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/15&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/15&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/20&#39;;

      const total = scores.m1 + scores.m2 + scores.m3;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/50&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 50) * 100) + &#39;%&#39;;
    }

    // --- PART 1: THEORY &amp; CATEGORY MCQS (15 Marks) ---
    const m1Data = [
      { q: &quot;What does verb conjugation mean according to Chapter Ten?&quot;, opts: [&quot;Changing a verb according to tense, person, number, mood, or voice&quot;, &quot;Adding prefixes to form new nouns&quot;, &quot;Converting verbs into adjectives only&quot;, &quot;Changing active sentences into passive without altering the verb&quot;], ans: &quot;Changing a verb according to tense, person, number, mood, or voice&quot; },
      { q: &quot;Which list correctly represents the five principal forms of an English verb?&quot;, opts: [&quot;Base Form, Third Person Singular, Past Form, Past Participle, Present Participle&quot;, &quot;Base Form, Comparative, Superlative, Past Form, Gerund&quot;, &quot;Infinitive, Subject, Object, Verb, Adverb&quot;, &quot;Present, Past, Future, Continuous, Perfect&quot;], ans: &quot;Base Form, Third Person Singular, Past Form, Past Participle, Present Participle&quot; },
      { q: &quot;What are the past forms (was/were) of the primary verb &#39;be&#39; in the past tense for first-person singular and plural?&quot;, opts: [&quot;I was / We were&quot;, &quot;I were / We was&quot;, &quot;I am / We are&quot;, &quot;I had been / We had been&quot;], ans: &quot;I was / We were&quot; },
      { q: &quot;How do regular verbs form their past tense and past participle forms?&quot;, opts: [&quot;By adding -d, -ed, or -ied to the base form&quot;, &quot;By changing internal vowels entirely&quot;, &quot;By remaining unchanged in all tenses&quot;, &quot;By dropping the final consonant always&quot;], ans: &quot;By adding -d, -ed, or -ied to the base form&quot; },
      { q: &quot;Which of the following contains the correct past and past participle forms of the irregular verb &#39;begin&#39;?&quot;, opts: [&quot;began / begun&quot;, &quot;begined / begined&quot;, &quot;begun / began&quot;, &quot;begins / beginning&quot;], ans: &quot;began / begun&quot; },
      { q: &quot;What is the third-person singular present form of the primary auxiliary &#39;do&#39;?&quot;, opts: [&quot;does&quot;, &quot;do&quot;, &quot;did&quot;, &quot;done&quot;], ans: &quot;does&quot; },
      { q: &quot;Which form of the verb &#39;write&#39; is &#39;written&#39;?&quot;, opts: [&quot;Past Participle&quot;, &quot;Past Form&quot;, &quot;Present Participle&quot;, &quot;Third Person Singular&quot;], ans: &quot;Past Participle&quot; },
      { q: &quot;Choose the correct past tense and past participle pair for the irregular verb &#39;choose&#39;:&quot;, opts: [&quot;chose / chosen&quot;, &quot;choosed / choosed&quot;, &quot;chosen / chose&quot;, &quot;chooses / choosing&quot;], ans: &quot;chose / chosen&quot; },
      { q: &quot;In the sentence &#39;I have a dog&#39;, what function does &#39;have&#39; serve?&quot;, opts: [&quot;Main verb (Present Simple Tense)&quot;, &quot;Auxiliary verb (Present Perfect Tense)&quot;, &quot;Modal verb&quot;, &quot;Present Participle&quot;], ans: &quot;Main verb (Present Simple Tense)&quot; },
      { q: &quot;What is the past form (V2) of the irregular verb &#39;fly&#39;?&quot;, opts: [&quot;flew&quot;, &quot;flown&quot;, &quot;flyed&quot;, &quot;flies&quot;], ans: &quot;flew&quot; },
      { q: &quot;Which of the following is a regular verb?&quot;, opts: [&quot;accept&quot;, &quot;break&quot;, &quot;drive&quot;, &quot;freeze&quot;], ans: &quot;accept&quot; },
      { q: &quot;What is the future form of the verb &#39;act&#39; for all persons?&quot;, opts: [&quot;will act&quot;, &quot;acted&quot;, &quot;acting&quot;, &quot;acts&quot;], ans: &quot;will act&quot; },
      { q: &quot;Which irregular verb has the exact same form across Base, Past Form, and Past Participle?&quot;, opts: [&quot;cut&quot;, &quot;go&quot;, &quot;take&quot;, &quot;write&quot;], ans: &quot;cut&quot; },
      { q: &quot;What is the present participle form of the verb &#39;eat&#39;?&quot;, opts: [&quot;eating&quot;, &quot;eats&quot;, &quot;ate&quot;, &quot;eaten&quot;], ans: &quot;eating&quot; },
      { q: &quot;How is the past form of the regular verb &#39;apply&#39; correctly spelled?&quot;, opts: [&quot;applied&quot;, &quot;applyed&quot;, &quot;applieded&quot;, &quot;applies&quot;], ans: &quot;applied&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 15 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: GUIDED SENTENCE COMPLETION (15 Marks) ---
    const m2Data = [
      { q: &quot;She _____ (achieve) her goal through hard work last year.&quot;, ans: &quot;achieved&quot; },
      { q: &quot;They _____ (be) ready to start the examination now.&quot;, ans: &quot;are&quot; },
      { q: &quot;He has already _____ (eat) his breakfast.&quot;, ans: &quot;eaten&quot; },
      { q: &quot;The birds _____ (fly) south every winter.&quot;, ans: &quot;fly&quot; },
      { q: &quot;Yesterday, the boy _____ (break) the glass window by mistake.&quot;, ans: &quot;broke&quot; },
      { q: &quot;She _____ (do) her homework regularly every evening.&quot;, ans: &quot;does&quot; },
      { q: &quot;We have _____ (decide) to participate in the competition.&quot;, ans: &quot;decided&quot; },
      { q: &quot;The teacher _____ (teach) us an important lesson yesterday.&quot;, ans: &quot;taught&quot; },
      { q: &quot;The sun _____ (shine) brightly in the sky right now.&quot;, ans: &quot;shines&quot; },
      { q: &quot;I _____ (receive) your letter two days ago.&quot;, ans: &quot;received&quot; },
      { q: &quot;He _____ (drive) his car carefully on the highway tomorrow.&quot;, ans: &quot;will drive&quot; },
      { q: &quot;The patient _____ (feel) better after taking the medicine.&quot;, ans: &quot;felt&quot; },
      { q: &quot;They have _____ (build) a new house in the town.&quot;, ans: &quot;built&quot; },
      { q: &quot;She _____ (dry) the clothes in the sun an hour ago.&quot;, ans: &quot;dried&quot; },
      { q: &quot;The river has _____ (freeze) during the cold night.&quot;, ans: &quot;frozen&quot; }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 15 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type conjugated verb form...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m2-in-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);

            const userClean = input.value.trim().toLowerCase();
            const targetClean = item.ans.trim().toLowerCase();

            if (userClean === targetClean) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = `Correct! (+1 Mark)`;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Expected answer: &quot;${item.ans}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: CONTEXTUAL PASSAGES (20 Marks) ---
    const passageKeys = {
      1: &quot;began&quot;, 2: &quot;was&quot;, 3: &quot;arrives&quot;, 4: &quot;have&quot;, 5: &quot;achieved&quot;,
      6: &quot;wrote&quot;, 7: &quot;gave&quot;, 8: &quot;does&quot;, 9: &quot;chooses&quot;, 10: &quot;will become&quot;,
      11: &quot;are&quot;, 12: &quot;destroyed&quot;, 13: &quot;joined&quot;, 14: &quot;collected&quot;, 15: &quot;has&quot;,
      16: &quot;understands&quot;, 17: &quot;drew&quot;, 18: &quot;does&quot;, 19: &quot;will build&quot;, 20: &quot;gives&quot;
    };

    function checkModule3() {
        let currentScore = 0;
        for (let i = 1; i &lt;= 20; i++) {
            const select = document.getElementById(`m3-${i}`);
            if (select) {
                if (select.value === passageKeys[i]) {
                    select.className = &quot;correct-input&quot;;
                    currentScore += 1;
                } else {
                    select.className = &quot;incorrect-input&quot;;
                }
            }
        }
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // Initialize all modules on page load
    window.onload = function() {
        renderModule1();
        renderModule2();
        updateScoreboard();
    };
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/1307064852216395638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/1307064852216395638?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1307064852216395638'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/1307064852216395638'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/verb-conjugation-exercises.html' title='Verb Conjugation Exercises '/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-809985467483246870.post-2797506154507506807</id><published>2026-08-07T20:33:54.549-07:00</published><updated>2026-08-07T20:33:54.549-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basic Grammar"/><title type='text'>Chapter 39: Subject Verb Agreement Exercises</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&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=5.0&quot;&gt;
&lt;title&gt;Chapter Thirty-Nine Assessment · Subject Verb Agreement (50 Marks)&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&amp;family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&amp;family=Space+Mono:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
  :root{
    --bg:#ffffff;
    --panel:#ffffff;
    --panel-2:#f8f9fa;
    --ink:#222222;
    --ink-dim:#555555;
    --blue:#0d6efd;
    --blue-soft:#4a7bd8;
    --red:#d9534f;
    --green:#198754;
    --line:rgba(0,0,0,.12);
    --shadow:0 6px 18px rgba(0,0,0,.08);
    --gutter:24px;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:#fff;
    color:var(--ink);
    font-family:&#39;Source Serif 4&#39;,serif;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    width:100%;
  }
  img, svg{ max-width:100%; }
  ::selection{ background:var(--blue); color:#fff; }
  .wrap{ max-width:980px; margin:0 auto; padding:0 var(--gutter); width:100%; }

  /* Header &amp; Scoreboard */
  header.hero{
    padding:clamp(20px,4vw,32px) 0 20px;
    border-bottom:1px solid var(--line);
  }
  .eyebrow{
    font-family:&#39;Space Mono&#39;,monospace;
    letter-spacing:.18em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--blue);
    display:flex; align-items:center; gap:10px;
    flex-wrap:wrap;
  }
  .eyebrow::before{ content:&quot;&quot;; width:28px; height:1px; background:var(--blue-soft); flex-shrink:0; }
  h1{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(24px,6vw,46px);
    line-height:1.15;
    margin:12px 0 6px;
    word-wrap:break-word;
  }
  h1 em{ font-style:italic; color:var(--blue); }
  .lede{ max-width:700px; font-size:clamp(13px,2.6vw,14px); color:var(--ink-dim); margin-top:6px; line-height:1.6; }

  /* Scoreboard Grid */
  .scoreboard{
    margin-top:20px;
    display:grid;
    grid-template-columns: repeat(4, 1fr);
    gap:8px;
    border:1px solid var(--line);
    border-radius:6px;
    padding:12px 14px;
    background:var(--panel-2);
    box-shadow:var(--shadow);
  }
  .score-item{ text-align:center; padding:4px; min-width:0; }
  .score-item .num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:clamp(12px,3vw,14px);
    font-weight:700;
    color:var(--blue);
    white-space:nowrap;
  }
  .score-item .lbl{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:8.5px;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:var(--ink-dim);
    margin-top:2px;
    line-height:1.3;
  }
  .progress-outer{
    width:100%;
    height:6px;
    background:#e9ecef;
    border-radius:4px;
    overflow:hidden;
    margin-top:12px;
  }
  .progress-inner{
    height:100%;
    width:0%;
    background:var(--blue);
    transition:width .3s ease;
  }

  /* Navigation Tabs */
  nav.tabs{
    position:sticky; top:0; z-index:20;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:8px 0;
  }
  nav.tabs .wrap{
    display:flex;
    gap:6px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  nav.tabs .wrap::-webkit-scrollbar { display:none; }

  .tab-btn{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.04em;
    text-transform:uppercase;
    padding:10px 14px;
    border:1px solid var(--line);
    border-radius:20px;
    background:#fff;
    color:var(--ink-dim);
    cursor:pointer;
    transition:all .2s ease;
    flex-shrink:0;
    min-height:40px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tab-btn:hover{ border-color:var(--blue-soft); color:var(--ink); }
  .tab-btn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
  .tab-btn.active{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .tab-btn .count{ opacity:.85; margin-left:3px; font-weight:700; }

  section.panel{ padding:24px 0 36px; display:none; }
  section.panel.active{ display:block; }

  .kicker{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:4px;
  }
  h2{
    font-family:&#39;Cormorant Garamond&#39;,serif;
    font-weight:600;
    font-size:clamp(20px,4.5vw,32px);
    margin:0 0 4px;
    word-wrap:break-word;
  }
  .section-hint{ color:var(--ink-dim); font-size:clamp(12px,2.6vw,13px); margin-bottom:16px; }

  /* Question Cards */
  .q-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:clamp(12px,3vw,16px);
    margin-bottom:14px;
    background:#fff;
    transition:border-color .2s ease;
    overflow-wrap:break-word;
  }
  .q-card.correct{ border-color:var(--green); background:rgba(25,135,84,0.03); }
  .q-card.incorrect{ border-color:var(--red); background:rgba(217,83,79,0.03); }
  .q-num{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    color:var(--blue);
    margin-bottom:4px;
  }
  .q-text{ font-size:clamp(14px,3vw,15px); color:var(--ink); margin-bottom:10px; line-height:1.7; overflow-wrap:break-word; }
  .feedback{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:12px;
    margin-top:8px;
    display:none;
    word-break:break-word;
  }
  .feedback.show{ display:block; }
  .feedback.correct{ color:var(--green); }
  .feedback.incorrect{ color:var(--red); }

  select, input[type=&quot;text&quot;]{
    font-family:&#39;Source Serif 4&#39;,serif;
    font-size:15px;
    padding:8px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--panel-2);
    color:var(--ink);
    margin:4px 2px;
    max-width:100%;
    min-height:42px;
    vertical-align:middle;
  }
  select.correct-input, input.correct-input{ border-color:var(--green); background:rgba(25,135,84,0.08); }
  select.incorrect-input, input.incorrect-input{ border-color:var(--red); background:rgba(217,83,79,0.08); }

  .fib-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:8px; }
  .fib-row input{ flex:1; min-width:200px; width:100%; }

  .btn-check{
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:12px 18px;
    border:1px solid var(--blue);
    border-radius:4px;
    background:var(--blue);
    color:#fff;
    cursor:pointer;
    transition:all .15s ease;
    margin-top:12px;
    display:inline-block;
    min-height:44px;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .btn-check:hover{ background:var(--blue-soft); border-color:var(--blue-soft); }
  .btn-check:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }

  footer{
    padding:24px 0 32px;
    text-align:center;
    color:var(--ink-dim);
    font-family:&#39;Space Mono&#39;,monospace;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
    border-top:1px solid var(--line);
    padding-left:16px;
    padding-right:16px;
  }

  @media (max-width: 768px) {
    :root{ --gutter:16px; }
    select, input[type=&quot;text&quot;]{ width:100%; margin:4px 0; }
    .btn-check{ width:100%; text-align:center; padding:12px 0; }
    .fib-row input{ min-width:0; }
  }

  @media (max-width: 480px) {
    :root{ --gutter:12px; }
    .scoreboard{ grid-template-columns: repeat(2, 1fr); gap:10px 6px; }
    .q-card{ padding:12px; }
    .tab-btn{ font-size:10px; padding:9px 12px; }
    header.hero{ padding-top:18px; }
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;header class=&quot;hero&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;eyebrow&quot;&gt;Chapter Thirty-Nine Assessment&lt;/div&gt;
    &lt;h1&gt;Grand Exercises on &lt;em&gt;Subject-Verb Agreement&lt;/em&gt;&lt;/h1&gt;
    &lt;p class=&quot;lede&quot;&gt;A comprehensive 50-mark interactive assessment based on rules covering subjects joined by conjunctions, quantifiers, relative clauses, irregular nouns, and contextual passages[cite: 13].&lt;/p&gt;

    &lt;div class=&quot;scoreboard&quot;&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m1&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 1 (Theory MCQs)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m2&quot;&gt;0/15&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 2 (Verb Fillers)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-m3&quot;&gt;0/20&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Part 3 (Board Passages)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;score-item&quot;&gt;&lt;div class=&quot;num&quot; id=&quot;score-total&quot; style=&quot;font-size: 16px;&quot;&gt;0/50&lt;/div&gt;&lt;div class=&quot;lbl&quot;&gt;Total Grand Score&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;progress-outer&quot;&gt;&lt;div class=&quot;progress-inner&quot; id=&quot;progress-bar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/header&gt;

&lt;nav class=&quot;tabs&quot;&gt;
  &lt;div class=&quot;wrap&quot;&gt;
    &lt;button class=&quot;tab-btn active&quot; data-panel=&quot;m1&quot;&gt;Part 1: Rules &amp; MCQs &lt;span class=&quot;count&quot;&gt;[15m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m2&quot;&gt;Part 2: Verb Form Practice &lt;span class=&quot;count&quot;&gt;[15m]&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tab-btn&quot; data-panel=&quot;m3&quot;&gt;Part 3: Contextual Passages &lt;span class=&quot;count&quot;&gt;[20m]&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/nav&gt;

&lt;div class=&quot;wrap&quot;&gt;
  &lt;!-- PART 1: Theoretical &amp; Structural MCQs (15 Marks) --&gt;
  &lt;section class=&quot;panel active&quot; id=&quot;panel-m1&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 1 (15 Marks)&lt;/div&gt;
    &lt;h2&gt;Theoretical &amp; Categorical Foundations&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Select the correct verb or structural choice corresponding to the Subject-Verb Agreement rules (1 mark each)[cite: 13].&lt;/p&gt;

    &lt;div id=&quot;module1-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule1()&quot;&gt;Verify Part 1&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 2: Guided Sentence Completion (15 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m2&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 2 (15 Marks)&lt;/div&gt;
    &lt;h2&gt;Sentence Completion &amp; Correct Verb Supply&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Type the correct form of the verb given in parentheses to complete each sentence (1 mark each)[cite: 13].&lt;/p&gt;

    &lt;div id=&quot;module2-container&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule2()&quot;&gt;Verify Part 2&lt;/button&gt;
  &lt;/section&gt;

  &lt;!-- PART 3: Comprehensive Contextual Passages (20 Marks) --&gt;
  &lt;section class=&quot;panel&quot; id=&quot;panel-m3&quot;&gt;
    &lt;div class=&quot;kicker&quot;&gt;Part 3 (20 Marks)&lt;/div&gt;
    &lt;h2&gt;Contextual Board Passages&lt;/h2&gt;
    &lt;p class=&quot;section-hint&quot;&gt;Fill in the blanks across two complete exam-style passages applying subject-verb agreement rules (20 blanks, 1 mark each)[cite: 13].&lt;/p&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-num&quot;&gt;Passage A: Academic Life and Institutional Governance (Questions 1 to 10)&lt;/div&gt;
      &lt;div class=&quot;q-text&quot;&gt;
        Slow and steady (1) 
        &lt;select id=&quot;m3-1&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;wins&quot;&gt;wins&lt;/option&gt;&lt;option value=&quot;win&quot;&gt;win&lt;/option&gt;&lt;/select&gt; (win) the race[cite: 13]. Neither the principal nor the teachers (2) 
        &lt;select id=&quot;m3-2&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;were&quot;&gt;were&lt;/option&gt;&lt;option value=&quot;was&quot;&gt;was&lt;/option&gt;&lt;/select&gt; (be) present at the morning assembly[cite: 13]. The chairman, along with his directors, (3) 
        &lt;select id=&quot;m3-3&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;has&quot;&gt;has&lt;/option&gt;&lt;option value=&quot;have&quot;&gt;have&lt;/option&gt;&lt;/select&gt; (have) signed the official document[cite: 13]. One of the greatest challenges in our education system (4) 
        &lt;select id=&quot;m3-4&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;is&quot;&gt;is&lt;/option&gt;&lt;option value=&quot;are&quot;&gt;are&lt;/option&gt;&lt;/select&gt; (be) maintaining quality teaching[cite: 13]. It (5) 
        &lt;select id=&quot;m3-5&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;is&quot;&gt;is&lt;/option&gt;&lt;option value=&quot;are&quot;&gt;are&lt;/option&gt;&lt;/select&gt; (be) the dedicated teachers who shape the future of our youth[cite: 13]. A large number of students (6) 
        &lt;select id=&quot;m3-6&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;have&quot;&gt;have&lt;/option&gt;&lt;option value=&quot;has&quot;&gt;has&lt;/option&gt;&lt;/select&gt; (have) participated in the national competition[cite: 13]. The news of their success (7) 
        &lt;select id=&quot;m3-7&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;was&quot;&gt;was&lt;/option&gt;&lt;option value=&quot;were&quot;&gt;were&lt;/option&gt;&lt;/select&gt; (be) published in all major newspapers[cite: 13]. Gulliver&#39;s Travels (8) 
        &lt;select id=&quot;m3-8&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;is&quot;&gt;is&lt;/option&gt;&lt;option value=&quot;are&quot;&gt;are&lt;/option&gt;&lt;/select&gt; (be) still read widely across the globe[cite: 13]. There (9) 
        &lt;select id=&quot;m3-9&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;are&quot;&gt;are&lt;/option&gt;&lt;option value=&quot;is&quot;&gt;is&lt;/option&gt;&lt;/select&gt; (be) many reasons behind student failure[cite: 13]. The committee (10) 
        &lt;select id=&quot;m3-10&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;has&quot;&gt;has&lt;/option&gt;&lt;option value=&quot;have&quot;&gt;have&lt;/option&gt;&lt;/select&gt; (have) reached a unanimous decision today[cite: 13].
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;q-card&quot;&gt;
      &lt;div class=&quot;q-num&quot;&gt;Passage B: Social Issues and Community Welfare (Questions 11 to 20)&lt;/div&gt;
      &lt;div class=&quot;q-text&quot;&gt;
        Every man and woman (11) 
        &lt;select id=&quot;m3-11&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;has&quot;&gt;has&lt;/option&gt;&lt;option value=&quot;have&quot;&gt;have&lt;/option&gt;&lt;/select&gt; (have) a duty toward society[cite: 13]. Cattle (12) 
        &lt;select id=&quot;m3-12&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;are&quot;&gt;are&lt;/option&gt;&lt;option value=&quot;is&quot;&gt;is&lt;/option&gt;&lt;/select&gt; (be) grazing peacefully in the green fields[cite: 13]. A majority of the public (13) 
        &lt;select id=&quot;m3-13&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;support&quot;&gt;support&lt;/option&gt;&lt;option value=&quot;supports&quot;&gt;supports&lt;/option&gt;&lt;/select&gt; (support) the new reform policy[cite: 13]. The wages of sin (14) 
        &lt;select id=&quot;m3-14&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;are&quot;&gt;are&lt;/option&gt;&lt;option value=&quot;is&quot;&gt;is&lt;/option&gt;&lt;/select&gt; (be) death according to the scripture[cite: 13]. More than one student (15) 
        &lt;select id=&quot;m3-15&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;has&quot;&gt;has&lt;/option&gt;&lt;option value=&quot;have&quot;&gt;have&lt;/option&gt;&lt;/select&gt; (have) submitted the assignment late[cite: 13]. Half of the work (16) 
        &lt;select id=&quot;m3-16&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;was&quot;&gt;was&lt;/option&gt;&lt;option value=&quot;were&quot;&gt;were&lt;/option&gt;&lt;/select&gt; (be) completed before noon[cite: 13]. My spectacles (17) 
        &lt;select id=&quot;m3-17&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;are&quot;&gt;are&lt;/option&gt;&lt;option value=&quot;is&quot;&gt;is&lt;/option&gt;&lt;/select&gt; (be) missing from my study table[cite: 13]. Each of the boys (18) 
        &lt;select id=&quot;m3-18&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;deserves&quot;&gt;deserves&lt;/option&gt;&lt;option value=&quot;deserve&quot;&gt;deserve&lt;/option&gt;&lt;/select&gt; (deserve) a prize for good performance[cite: 13]. Neither money nor power (19) 
        &lt;select id=&quot;m3-19&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;makes&quot;&gt;makes&lt;/option&gt;&lt;option value=&quot;make&quot;&gt;make&lt;/option&gt;&lt;/select&gt; (make) a man happy permanently[cite: 13]. The gallows (20) 
        &lt;select id=&quot;m3-20&quot;&gt;&lt;option value=&quot;&quot;&gt;--select--&lt;/option&gt;&lt;option value=&quot;was&quot;&gt;was&lt;/option&gt;&lt;option value=&quot;were&quot;&gt;were&lt;/option&gt;&lt;/select&gt; (be) erected in the courtyard of the prison[cite: 13].
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;button class=&quot;btn-check&quot; onclick=&quot;checkModule3()&quot;&gt;Verify Part 3&lt;/button&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;footer&gt;Chapter Thirty-Nine Assessment · Subject-Verb Agreement Module&lt;/footer&gt;

&lt;script&gt;
    // Tab Switching Navigation
    document.querySelectorAll(&#39;.tab-btn&#39;).forEach(btn =&gt; {
      btn.addEventListener(&#39;click&#39;, () =&gt; {
        document.querySelectorAll(&#39;.tab-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;section.panel&#39;).forEach(p =&gt; p.classList.remove(&#39;active&#39;));
        btn.classList.add(&#39;active&#39;);
        document.getElementById(&#39;panel-&#39; + btn.dataset.panel).classList.add(&#39;active&#39;);
        btn.scrollIntoView({ behavior:&#39;smooth&#39;, inline:&#39;center&#39;, block:&#39;nearest&#39; });
      });
    });

    // Score Tracking Object (50 Marks Total)
    const scores = { m1: 0, m2: 0, m3: 0 };

    function updateScoreboard() {
      document.getElementById(&#39;score-m1&#39;).textContent = scores.m1 + &#39;/15&#39;;
      document.getElementById(&#39;score-m2&#39;).textContent = scores.m2 + &#39;/15&#39;;
      document.getElementById(&#39;score-m3&#39;).textContent = scores.m3 + &#39;/20&#39;;

      const total = scores.m1 + scores.m2 + scores.m3;
      document.getElementById(&#39;score-total&#39;).textContent = total + &#39;/50&#39;;
      document.getElementById(&#39;progress-bar&#39;).style.width = ((total / 50) * 100) + &#39;%&#39;;
    }

    // --- PART 1: THEORY &amp; CATEGORY MCQS (15 Marks) ---
    const m1Data = [
      { q: &quot;When two singular subjects express the exact same idea or refer to the same person, which verb form is used?&quot;, opts: [&quot;Singular verb&quot;, &quot;Plural verb&quot;, &quot;Infinitive verb&quot;, &quot;Past participle&quot;], ans: &quot;Singular verb&quot; },
      { q: &quot;Choose the correct sentence involving subjects joined by &#39;as well as&#39;:&quot;, opts: [&quot;The manager as well as his assistants were present.&quot;, &quot;The manager as well as his assistants was present.&quot;, &quot;The manager as well as his assistants are present.&quot;, &quot;The manager as well as his assistants have present.&quot;], ans: &quot;The manager as well as his assistants was present.&quot; },
      { q: &quot;Which verb form does the expression &#39;More than one&#39; take?&quot;, opts: [&quot;Singular verb&quot;, &quot;Plural verb&quot;, &quot;Dual verb&quot;, &quot;Base verb without tense&quot;], ans: &quot;Singular verb&quot; },
      { q: &quot;What rule governs the verb when subjects are connected by &#39;either...or&#39; or &#39;neither...nor&#39;?&quot;, opts: [&quot;The verb agrees with the first subject.&quot;, &quot;The verb agrees with the nearest subject.&quot;, &quot;The verb is always plural.&quot;, &quot;The verb is always singular.&quot;], ans: &quot;The verb agrees with the nearest subject.&quot; },
      { q: &quot;In sentences beginning with introductory &#39;it&#39;, which verb form is strictly required?&quot;, opts: [&quot;Plural verb&quot;, &quot;Singular verb&quot;, &quot;Agrees with the following object&quot;, &quot;Modal verb&quot;], ans: &quot;Singular verb&quot; },
      { q: &quot;Which of the following nouns is plural in form and takes a plural verb?&quot;, opts: [&quot;News&quot;, &quot;Innings&quot;, &quot;Scissors&quot;, &quot;Gallows&quot;], ans: &quot;Scissors&quot; },
      { q: &quot;Nouns such as &#39;cattle&#39;, &#39;gentry&#39;, and &#39;clergy&#39; generally take which verb form?&quot;, opts: [&quot;Plural verbs&quot;, &quot;Singular verbs&quot;, &quot;Uncountable verbs&quot;, &quot;Passive verbs&quot;], ans: &quot;Plural verbs&quot; },
      { q: &quot;What is the correct agreement rule for the phrase &#39;One of&#39; followed by a plural noun?&quot;, opts: [&quot;Takes a singular verb&quot;, &quot;Takes a plural verb&quot;, &quot;Takes a gerund verb&quot;, &quot;Takes an imperative verb&quot;], ans: &quot;Takes a singular verb&quot; },
      { q: &quot;When a collective noun functions as an undivided whole, which verb does it require?&quot;, opts: [&quot;Singular verb&quot;, &quot;Plural verb&quot;, &quot;Auxiliary &#39;have&#39;&quot;, &quot;Base form verb&quot;], ans: &quot;Singular verb&quot; },
      { q: &quot;How is the verb determined in relative clauses?&quot;, opts: [&quot;It agrees with the antecedent of the relative pronoun.&quot;, &quot;It is always singular.&quot;, &quot;It agrees with the sentence object.&quot;, &quot;It is always plural.&quot;], ans: &quot;It agrees with the antecedent of the relative pronoun.&quot; },
      { q: &quot;Which of the following phrases ALWAYS takes a plural noun and a plural verb?&quot;, opts: [&quot;One of&quot;, &quot;Each of&quot;, &quot;Several of&quot;, &quot;Many a&quot;], ans: &quot;Several of&quot; },
      { q: &quot;Select the correct option for &#39;The news _____ true.&#39;&quot;, opts: [&quot;is&quot;, &quot;are&quot;, &quot;were&quot;, &quot;have been&quot;], ans: &quot;is&quot; },
      { q: &quot;What verb form does &#39;wages&#39; generally take in standard grammatical usage?&quot;, opts: [&quot;Plural verb&quot;, &quot;Singular verb&quot;, &quot;Auxiliary verb only&quot;, &quot;Past participle&quot;], ans: &quot;Plural verb&quot; },
      { q: &quot;In &#39;there&#39; sentences, what determines whether the verb is singular or plural?&quot;, opts: [&quot;The noun that follows the verb&quot;, &quot;The word &#39;there&#39; itself&quot;, &quot;The sentence adverb&quot;, &quot;The subject pronoun&quot;], ans: &quot;The noun that follows the verb&quot; },
      { q: &quot;Which verb is used with book or movie titles (e.g., &#39;The Arabian Nights&#39;)?&quot;, opts: [&quot;Singular verb&quot;, &quot;Plural verb&quot;, &quot;Compound verb&quot;, &quot;Present participle&quot;], ans: &quot;Singular verb&quot; }
    ];

    function renderModule1() {
        const container = document.getElementById(&quot;module1-container&quot;);
        m1Data.forEach((item, index) =&gt; {
            let optionsHTML = `&lt;option value=&quot;&quot;&gt;-- Select Option --&lt;/option&gt;`;
            item.opts.forEach(opt =&gt; {
                optionsHTML += `&lt;option value=&quot;${opt}&quot;&gt;${opt}&lt;/option&gt;`;
            });

            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 15 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;${item.q}&lt;/div&gt;
                    &lt;div&gt;
                      &lt;select id=&quot;m1-${index}&quot;&gt;${optionsHTML}&lt;/select&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m1-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule1() {
        let currentScore = 0;
        m1Data.forEach((item, index) =&gt; {
            const select = document.getElementById(`m1-${index}`);
            const fb = document.getElementById(`m1-fb-${index}`);
            if (select.value === item.ans) {
                select.className = &quot;correct-input&quot;;
                fb.textContent = &quot;Correct! (+1 Mark)&quot;;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                select.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Correct answer: ${item.ans}`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m1 = currentScore;
        updateScoreboard();
    }

    // --- PART 2: GUIDED SENTENCE COMPLETION (15 Marks) ---
    const m2Data = [
      { q: &quot;Bread and butter _____ (be) his favorite breakfast.&quot;, ans: &quot;is&quot; },
      { q: &quot;Every student and every teacher _____ (be) given a badge.&quot;, ans: &quot;was&quot; },
      { q: &quot;Neither you nor I _____ (be) responsible for this error.&quot;, ans: &quot;am&quot; },
      { q: &quot;The headmaster, along with the staff, _____ (have) attended the meeting.&quot;, ans: &quot;has&quot; },
      { q: &quot;Many a candidate _____ (have) tried and failed.&quot;, ans: &quot;has&quot; },
      { q: &quot;It _____ (be) I who am to blame for the mistake.&quot;, ans: &quot;is&quot; },
      { q: &quot;There _____ (be) five apples on the kitchen table.&quot;, ans: &quot;are&quot; },
      { q: &quot;The jury _____ (be) divided in their opinions.&quot;, ans: &quot;were&quot; },
      { q: &quot;Each of the participants _____ (receive) a certificate.&quot;, ans: &quot;receives&quot; },
      { q: &quot;A few of the apples _____ (be) rotten.&quot;, ans: &quot;are&quot; },
      { q: &quot;The news _____ (be) shocking to everyone.&quot;, ans: &quot;was&quot; },
      { q: &quot;Gentry _____ (live) in luxurious houses.&quot;, ans: &quot;live&quot; },
      { q: &quot;Half of the sugar _____ (be) spilled on the floor.&quot;, ans: &quot;was&quot; },
      { q: &quot;One of my friends _____ (be) an engineer in Canada.&quot;, ans: &quot;is&quot; },
      { q: &quot;The trousers _____ (be) washed and ironed yesterday.&quot;, ans: &quot;were&quot; }
    ];

    function renderModule2() {
        const container = document.getElementById(&quot;module2-container&quot;);
        m2Data.forEach((item, index) =&gt; {
            container.innerHTML += `
                &lt;div class=&quot;q-card&quot;&gt;
                    &lt;div class=&quot;q-num&quot;&gt;Question ${index + 1} of 15 [1 Mark]&lt;/div&gt;
                    &lt;div class=&quot;q-text&quot;&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; ${item.q}&lt;/div&gt;
                    &lt;div class=&quot;fib-row&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;m2-in-${index}&quot; placeholder=&quot;Type correct verb form...&quot;&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;m2-fb-${index}&quot; class=&quot;feedback&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
            `;
        });
    }

    function checkModule2() {
        let currentScore = 0;
        m2Data.forEach((item, index) =&gt; {
            const input = document.getElementById(`m2-in-${index}`);
            const fb = document.getElementById(`m2-fb-${index}`);

            const userClean = input.value.trim().toLowerCase();
            const targetClean = item.ans.trim().toLowerCase();

            if (userClean === targetClean) {
                input.className = &quot;correct-input&quot;;
                fb.textContent = `Correct! (+1 Mark)`;
                fb.className = &quot;feedback correct show&quot;;
                currentScore += 1;
            } else {
                input.className = &quot;incorrect-input&quot;;
                fb.textContent = `Incorrect. Expected answer: &quot;${item.ans}&quot;`;
                fb.className = &quot;feedback incorrect show&quot;;
            }
        });
        scores.m2 = currentScore;
        updateScoreboard();
    }

    // --- PART 3: CONTEXTUAL PASSAGES (20 Marks) ---
    const passageKeys = {
      1: &quot;wins&quot;, 2: &quot;were&quot;, 3: &quot;has&quot;, 4: &quot;is&quot;, 5: &quot;is&quot;,
      6: &quot;have&quot;, 7: &quot;was&quot;, 8: &quot;is&quot;, 9: &quot;are&quot;, 10: &quot;has&quot;,
      11: &quot;has&quot;, 12: &quot;are&quot;, 13: &quot;supports&quot;, 14: &quot;is&quot;, 15: &quot;has&quot;,
      16: &quot;was&quot;, 17: &quot;are&quot;, 18: &quot;deserves&quot;, 19: &quot;makes&quot;, 20: &quot;was&quot;
    };

    function checkModule3() {
        let currentScore = 0;
        for (let i = 1; i &lt;= 20; i++) {
            const select = document.getElementById(`m3-${i}`);
            if (select) {
                if (select.value === passageKeys[i]) {
                    select.className = &quot;correct-input&quot;;
                    currentScore += 1;
                } else {
                    select.className = &quot;incorrect-input&quot;;
                }
            }
        }
        scores.m3 = currentScore;
        updateScoreboard();
    }

    // Initialize all modules on page load
    window.onload = function() {
        renderModule1();
        renderModule2();
        updateScoreboard();
    };
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.ieldonline.com/feeds/2797506154507506807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/809985467483246870/2797506154507506807?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/2797506154507506807'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/809985467483246870/posts/default/2797506154507506807'/><link rel='alternate' type='text/html' href='https://www.ieldonline.com/2026/08/chapter-39-subject-verb-agreement.html' title='Chapter 39: Subject Verb Agreement Exercises'/><author><name>INSIGHT ENGLISH LEARNING DOMAIN</name><uri>http://www.blogger.com/profile/02506420255547946271</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihijN-WqBPJVqtyWrQ5WoxThKUZ9xNq3dugGUm0hGJ-YIfNlyAt5FekXw2XFz0zG9MBH6NqvWIMywutg7qhZdR1tHGNl6fz0ZlE5bWm6ht3JgOihIgBzrYiNZtSqVM7WQ/s115/123.jpg'/></author><thr:total>0</thr:total></entry></feed>