{"id":443,"date":"2025-12-31T13:29:25","date_gmt":"2025-12-31T13:29:25","guid":{"rendered":"https:\/\/i-cte.org\/robot\/?p=443"},"modified":"2026-01-10T03:40:52","modified_gmt":"2026-01-10T03:40:52","slug":"ielts-cork","status":"publish","type":"post","link":"https:\/\/i-cte.org\/robot\/ielts-cork\/","title":{"rendered":"IELTs &#8211; Cork"},"content":{"rendered":"\n<div class=\"icte-menu\">\n  <a href=\"https:\/\/i-cte.org\/robot\/ielts-cork\/\">Passage 1<\/a>\n  <a href=\"https:\/\/i-cte.org\/robot\/ielts-hobby\/\">Passage 2<\/a>\n  <a href=\"https:\/\/i-cte.org\/robot\/ielts-knowledge\/\">Passage 3<\/a>\n<a href=\"https:\/\/i-cte.org\/robot\/ielts-reading-test-2\/\">Test 2<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-reading-test-3\/\">Test 3<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-reading-test-4\/\">Test 4<\/a>\n  <a href=\"https:\/\/i-cte.org\/robot\/ielts-speaking-overview\/\">Speaking<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-listening-overview\/\">Listening<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-overview\/\">Writing<\/a>\n<\/div>\n\n<section class=\"icte-ielts\" aria-label=\"IELTS Reading - Cork\">\n  <header class=\"icte-ielts__intro\">\n    <h2 class=\"icte-ielts__title\">IELTS Reading Passage 1: Cork<\/h2>\n    <p class=\"icte-ielts__sub\">\n      Read the passage below. Then answer Questions 1\u201313. Use the buttons to check or show answers.\n    <\/p>\n  <\/header>\n\n  <!-- Reading -->\n  <section class=\"icte-ielts__panel\" aria-label=\"Reading passage\">\n    <div class=\"icte-ielts__panelHead\">\n      <h3 class=\"icte-ielts__h3\">Reading<\/h3>\n      <div class=\"icte-ielts__headRight\">\n        <button id=\"toggle-reading\" class=\"icte-btn icte-btn--ghost\" type=\"button\">Hide<\/button>\n        <span class=\"icte-loader\" id=\"synthesis-loader\" aria-hidden=\"true\"><\/span>\n      <\/div>\n    <\/div>\n\n    <div id=\"reading-area\" class=\"icte-ielts__reading\" role=\"region\" aria-label=\"Passage text\"><\/div>\n\n    <div class=\"icte-ielts__btnRow icte-ielts__btnRow--tight\">\n      <button id=\"play-passage\" class=\"icte-btn icte-btn--info\" type=\"button\">\ud83d\udd0a Read Passage<\/button>\n      <button id=\"stop-btn\" class=\"icte-btn icte-btn--danger\" type=\"button\">\u23f9 Stop Audio<\/button>\n      <a class=\"icte-link\" href=\"#icte-questions\">Jump to questions \u2193<\/a>\n    <\/div>\n  <\/section>\n\n  <!-- Controls -->\n  <section class=\"icte-ielts__panel\" aria-label=\"Controls\">\n    <div class=\"icte-ielts__row\">\n      <div class=\"icte-ielts__control\">\n        <label for=\"voice-select\"><strong>Choose Voice<\/strong><\/label>\n        <select id=\"voice-select\" aria-label=\"Select Voice\">\n          <option value=\"\">Loading voices&#8230;<\/option>\n        <\/select>\n      <\/div>\n\n      <div id=\"scoreBox\" class=\"icte-ielts__score\" aria-live=\"polite\"><\/div>\n    <\/div>\n\n    <div class=\"icte-ielts__btnGrid\" aria-label=\"Action buttons\">\n      <button id=\"play-instructions\" class=\"icte-btn icte-btn--info\" type=\"button\">\ud83d\udd0a Read Instructions<\/button>\n      <button id=\"play-questions\" class=\"icte-btn icte-btn--info\" type=\"button\">\ud83d\udd0a Read Questions<\/button>\n      <button id=\"check-btn\" class=\"icte-btn icte-btn--primary\" type=\"button\">Check Answers<\/button>\n      <button id=\"show-btn\" class=\"icte-btn icte-btn--dark\" type=\"button\">\ud83d\udc40 Show Answers<\/button>\n      <button id=\"summary-btn\" class=\"icte-btn icte-btn--dark\" type=\"button\">\ud83e\udde0 Summary<\/button>\n      <button id=\"main-ideas-btn\" class=\"icte-btn icte-btn--dark\" type=\"button\">\ud83d\udccc Main ideas<\/button>\n      <button id=\"reset-btn\" class=\"icte-btn icte-btn--ghost\" type=\"button\">Reset<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- Support (moved OUTSIDE buttons; fixed layout) -->\n  <section class=\"icte-ielts__panel\" aria-label=\"Learning support\">\n    <div class=\"icte-ielts__panelHead\">\n      <h3 class=\"icte-ielts__h3\">Support<\/h3>\n      <div class=\"icte-ielts__headRight\">\n        <button id=\"clear-support\" class=\"icte-btn icte-btn--ghost\" type=\"button\">Clear<\/button>\n      <\/div>\n    <\/div>\n\n    <div id=\"helper-area\" class=\"icte-ielts__helper\" role=\"region\" aria-live=\"polite\">\n      Click <strong>Summary<\/strong> or <strong>Main ideas<\/strong>.\n    <\/div>\n  <\/section>\n\n  <!-- Questions -->\n  <section class=\"icte-ielts__panel\" id=\"icte-questions\" aria-label=\"Questions\">\n    <div class=\"icte-ielts__panelHead\">\n      <h3 class=\"icte-ielts__h3\">Questions 1\u20135 (TRUE \/ FALSE \/ NOT GIVEN)<\/h3>\n    <\/div>\n    <div id=\"tfng-area\" class=\"icte-ielts__qArea\"><\/div>\n\n    <div class=\"icte-ielts__panelHead icte-ielts__panelHead--sub\">\n      <h3 class=\"icte-ielts__h3\">Questions 6\u201313 (ONE WORD ONLY)<\/h3>\n    <\/div>\n    <div id=\"note-area\" class=\"icte-ielts__qArea\"><\/div>\n  <\/section>\n\n  <style>\n    \/* Top green menu bar (WordPress-safe, full width) *\/\n.icte-menu{\n  width: 100%;\n  max-width: 100%;\n  box-sizing: border-box;\n  display: flex;\n  flex-wrap: wrap;\n  gap: .5rem;\n  justify-content: center;\n  align-items: center;\n  padding: .75rem .9rem;\n  margin: 0 0 1rem 0;\n\n  background: #16a34a;\n  border-radius: 14px;\n  box-shadow: 0 2px 8px rgba(0,0,0,.10);\n}\n\n\/* Menu links *\/\n.icte-menu a{\n  display: inline-block;\n  text-decoration: none;\n  font-weight: 900;\n  font-size: .95rem;\n  color: #ffffff;\n  padding: .55rem .85rem;\n  border-radius: 999px;\n  border: 1px solid rgba(255,255,255,.35);\n  background: rgba(255,255,255,.12);\n  transition: background .2s ease, transform .05s ease;\n}\n\n.icte-menu a:hover{\n  background: rgba(255,255,255,.22);\n}\n\n.icte-menu a:active{\n  transform: translateY(1px);\n}\n\n\/* Highlight current page automatically (when link matches current URL) *\/\n.icte-menu a.is-current{\n  background: #ffffff;\n  color: #16a34a;\n  border-color: #ffffff;\n}\n\n\/* Mobile-friendly *\/\n@media (max-width: 600px){\n  .icte-menu{\n    justify-content: flex-start;\n  }\n  .icte-menu a{\n    width: 100%;\n    text-align: center;\n  }\n}\n\n    .icte-ielts{ width:100%; margin:1rem 0; }\n    .icte-ielts__intro{\n      padding:.9rem 1rem; border:1px solid rgba(0,0,0,.10); border-radius:14px;\n      background:rgba(255,255,255,.7); margin-bottom:1rem;\n    }\n    .icte-ielts__title{ margin:0 0 .35rem; font-size:1.2rem; font-weight:900; }\n    .icte-ielts__sub{ margin:0; opacity:.85; }\n\n    .icte-ielts__panel{\n      border:1px solid rgba(0,0,0,.10); border-radius:14px; background:rgba(255,255,255,.85);\n      overflow:hidden; margin-bottom:1rem;\n    }\n    .icte-ielts__panelHead{\n      display:flex; align-items:center; justify-content:space-between; gap:.75rem;\n      padding:.85rem 1rem; border-bottom:1px solid rgba(0,0,0,.08); background:rgba(0,0,0,.03);\n    }\n    .icte-ielts__panelHead--sub{ margin-top:10px; border-top:1px solid rgba(0,0,0,.08); }\n    .icte-ielts__h3{ margin:0; font-size:1.03rem; font-weight:900; }\n    .icte-ielts__headRight{ display:flex; gap:.55rem; align-items:center; }\n\n    .icte-ielts__reading{\n      padding:.95rem 1rem 1.05rem;\n      line-height:1.75;\n      max-height:520px;\n      overflow:auto;\n      scroll-behavior:smooth;\n    }\n    .icte-ielts__reading p{ margin:0 0 .9rem; }\n    .icte-ielts__reading p:last-child{ margin-bottom:0; }\n\n    .icte-ielts__row{\n      display:flex; align-items:flex-end; justify-content:space-between; gap:.75rem;\n      padding:.85rem 1rem .25rem;\n    }\n    .icte-ielts__control label{ display:block; margin-bottom:.35rem; }\n    .icte-ielts__control select{\n      width:100%; max-width:520px; padding:.6rem .7rem; border-radius:12px;\n      border:1px solid rgba(0,0,0,.18); background:#fff; font:inherit;\n    }\n    .icte-ielts__score{\n      font-weight:900; font-size:.95rem; opacity:.9; white-space:nowrap; margin-bottom:.25rem;\n    }\n\n    .icte-ielts__btnRow{\n      padding:.75rem 1rem 1rem; display:flex; gap:.6rem; flex-wrap:wrap; align-items:center;\n    }\n    .icte-ielts__btnRow--tight{ padding-top:0; }\n    .icte-ielts__btnGrid{\n      padding:.75rem 1rem 1rem;\n      display:grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap:.6rem;\n    }\n\n    .icte-link{\n      font-weight:900;\n      text-decoration:none;\n      border:1px solid rgba(0,0,0,.14);\n      border-radius:12px;\n      padding:.55rem .75rem;\n      color:inherit;\n      background:rgba(255,255,255,.6);\n    }\n\n    .icte-ielts__qArea{ padding:.9rem 1rem 1rem; }\n\n    .icte-q{\n      padding:.75rem .8rem; border:1px solid rgba(0,0,0,.10); border-radius:12px;\n      background:rgba(255,255,255,.75); margin:0 0 .75rem;\n    }\n    .icte-q__label{ font-weight:900; display:block; margin-bottom:.4rem; }\n    .icte-q__controls{ display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; }\n    .icte-q input[type=\"text\"]{\n      width:100%; max-width:520px; padding:.6rem .7rem; border-radius:12px;\n      border:1px solid rgba(0,0,0,.18); font:inherit;\n    }\n    .icte-q select{\n      padding:.55rem .65rem; border-radius:12px; border:1px solid rgba(0,0,0,.18);\n      background:#fff; font:inherit;\n    }\n    .icte-q__fb{ margin-top:.45rem; font-size:.95rem; font-weight:800; }\n\n    .icte-btn{\n      appearance:none; border:1px solid transparent; border-radius:12px;\n      padding:.65rem .85rem; font-weight:900; cursor:pointer; font:inherit;\n    }\n    .icte-btn--primary{ background:#16a34a; color:#fff; }\n    .icte-btn--info{ background:#0ea5e9; color:#fff; }\n    .icte-btn--danger{ background:#dc2626; color:#fff; }\n    .icte-btn--dark{ background:#334155; color:#fff; }\n    .icte-btn--ghost{ background:transparent; border-color:rgba(0,0,0,.20); color:inherit; }\n\n    .icte-loader{\n      width:18px; height:18px; border-radius:999px;\n      border:3px solid rgba(0,0,0,.15); border-top-color:#0ea5e9;\n      display:none; animation: icteSpin 1s linear infinite;\n    }\n    @keyframes icteSpin{ to{ transform: rotate(360deg); } }\n\n    .icte-ielts__helper{\n      padding:.95rem 1rem 1.05rem;\n      line-height:1.7;\n      overflow-wrap:anywhere;\n      word-break:break-word;\n    }\n    .icte-ielts__helper ul{ margin:.4rem 0 0 1.1rem; }\n    .icte-ielts__helper li{ margin:.35rem 0; }\n    .icte-ielts__helper .tag{\n      display:inline-block;\n      padding:.15rem .5rem;\n      border-radius:999px;\n      border:1px solid rgba(0,0,0,.12);\n      background:rgba(255,255,255,.7);\n      font-weight:900;\n      font-size:.85rem;\n      margin-right:.4rem;\n    }\n\n    @media (max-width: 900px){\n      .icte-ielts__btnGrid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }\n    }\n    @media (max-width: 600px){\n      .icte-ielts__row{ align-items:stretch; flex-direction:column; }\n      .icte-ielts__score{ white-space: normal; }\n      .icte-ielts__btnGrid{ grid-template-columns: 1fr; }\n    }\n  <\/style>\n\n  <script>\n    \/* ===== Reading text ===== *\/\n    const readingText = `Cork \u2014 the thick bark of the cork oak tree (Quercus suber) \u2014 is a remarkable material. It is tough, elastic, buoyant, and fire-resistant, and suitable for a wide range of purposes. It has also been used for millennia: the ancient Egyptians sealed their sarcophagi (stone coffins) with cork, while the ancient Greeks and Romans used it for anything from beehives to sandals.\n\nAnd the cork oak itself is an extraordinary tree. Its bark grows up to 20 cm in thickness, insulating the tree like a coat wrapped around the trunk and branches and keeping the inside at a constant 20\u00b0C all year round. Developed most probably as a defence against forest fires, the bark of the cork oak has a particular cellular structure \u2014 with about 40 million cells per cubic centimetre \u2014 that technology has never succeeded in replicating. The cells are filled with air, which is why cork is so buoyant. It also has an elasticity that means you can squash it and watch it spring back to its original size and shape when you release the pressure.\n\nCork oaks grow in a number of Mediterranean countries, including Portugal, Spain, Italy, Greece and Morocco. They flourish in warm, sunny climates where there is a minimum of 400 millimetres of rain per year, and not more than 800 millimetres. Like grape vines, the trees thrive in poor soil, putting down deep roots in search of moisture and nutrients. Southern Portugal's Alentejo region meets all of these requirements, which explains why, by the early 20th century, this region had become the world's largest producer of cork, and why today it accounts for roughly half of all cork production around the world.\n\nMost cork forests are family-owned. Many of these family businesses, and indeed many of the trees themselves, are around 200 years old. Cork production is, above all, an exercise in patience. From the planting of a cork sapling to the first harvest takes 25 years, and a gap of approximately a decade must separate harvests from an individual tree. And for top-quality cork, it's necessary to wait a further 15 or 20 years. You even have to wait for the right kind of summer's day to harvest cork. If the bark is stripped on a day when it's too cold \u2014 or when the air is damp \u2014 the tree will be damaged.\n\nCork harvesting is a very specialised profession. No mechanical means of stripping cork bark has been invented, so the job is done by teams of highly skilled workers. First, they make vertical cuts down the bark using small sharp axes, then lever it away in pieces as large as they can manage. The most skilful cork-strippers prise away a semi-circular husk that runs the length of the trunk from just above ground level to the first branches.\n\nIt is then dried on the ground for about four months, before being taken to factories, where it is boiled to kill any insects that might remain in the cork. Over 60% of cork then goes on to be made into traditional bottle stoppers, with most of the remainder being used in the construction trade. Corkboard and cork tiles are ideal for thermal and acoustic insulation, while granules of cork are used in the manufacture of concrete.\n\nRecent years have seen the end of the virtual monopoly of cork as the material for bottle stoppers, due to concerns about the effect it may have on the contents of the bottle. This is caused by a chemical compound called 2,4,6-trichloroanisole (TCA), which forms through the interaction of plant phenols, chlorine and mould. The tiniest concentrations \u2014 as little as three or four parts to a trillion \u2014 can spoil the taste of the product contained in the bottle. The result has been a gradual yet steady move first towards plastic stoppers and, more recently, to aluminium screw caps. These substitutes are cheaper to manufacture and, in the case of screw caps, more convenient for the user.\n\nThe classic cork stopper does have several advantages, however. Firstly, its traditional image is more in keeping with that of the type of high quality goods with which it has long been associated. Secondly \u2014 and very importantly \u2014 cork is a sustainable product that can be recycled without difficulty. Moreover, cork forests are a resource which support local biodiversity, and prevent desertification in the regions where they are planted. So, given the current concerns about environmental issues, the future of this ancient material once again looks promising.`;\n\n    \/* ===== Questions + answer key ===== *\/\n    const tfngQuestions = [\n      { id: 1, text: \"The cork oak has the thickest bark of any living tree.\", answer: \"NOT GIVEN\" },\n      { id: 2, text: \"Scientists have developed a synthetic cork with the same cellular structure as natural cork.\", answer: \"FALSE\" },\n      { id: 3, text: \"Individual cork oak trees must be left for 25 years between the first and second harvest.\", answer: \"FALSE\" },\n      { id: 4, text: \"Cork bark should be stripped in dry atmospheric conditions.\", answer: \"TRUE\" },\n      { id: 5, text: \"The only way to remove the bark from cork oak trees is by hand.\", answer: \"TRUE\" }\n    ];\n\n    const noteQuestions = [\n      { id: 6, prompt: \"do not affect the ________ of the bottle contents\", answer: \"taste\" },\n      { id: 7, prompt: \"are ________ to produce\", answer: \"cheaper\" },\n      { id: 8, prompt: \"are ________ to use\", answer: \"convenient\" },\n      { id: 9, prompt: \"suit the ________ of quality products\", answer: \"image\" },\n      { id: 10, prompt: \"made from a ________ material\", answer: \"sustainable\" },\n      { id: 11, prompt: \"easily ________\", answer: \"recycled\" },\n      { id: 12, prompt: \"cork forests aid ________\", answer: \"biodiversity\" },\n      { id: 13, prompt: \"cork forests stop ________ happening\", answer: \"desertification\" }\n    ];\n\n    \/* ===== Speech ===== *\/\n    const speechSynthesisSupported = (\"speechSynthesis\" in window);\n    let voices = [];\n    let selectedVoice = null;\n\n    function showSynthesisLoader(show){\n      const loader = document.getElementById(\"synthesis-loader\");\n      if (!loader) return;\n      loader.style.display = show ? \"inline-block\" : \"none\";\n    }\n\n    function stopSpeaking(){\n      if (speechSynthesisSupported) {\n        window.speechSynthesis.cancel();\n        showSynthesisLoader(false);\n      }\n    }\n\n    function sayText(text, lang){\n      return new Promise((resolve) => {\n        if (!speechSynthesisSupported) return resolve();\n        const u = new SpeechSynthesisUtterance(String(text || \"\"));\n        u.lang = lang || \"en-US\";\n        u.rate = 1.0;\n        u.pitch = 1.0;\n        if (selectedVoice) u.voice = selectedVoice;\n        u.onend = resolve;\n        u.onerror = resolve;\n        window.speechSynthesis.speak(u);\n      });\n    }\n\n    function loadVoices(){\n      if (!speechSynthesisSupported) return;\n      voices = window.speechSynthesis.getVoices();\n      if (voices.length === 0) {\n        window.speechSynthesis.onvoiceschanged = () => {\n          voices = window.speechSynthesis.getVoices();\n          populateVoiceList();\n        };\n      } else {\n        populateVoiceList();\n      }\n    }\n\n    function populateVoiceList(){\n      const voiceSelect = document.getElementById(\"voice-select\");\n      if (!voiceSelect) return;\n\n      voiceSelect.innerHTML = \"\";\n      const en = voices.filter(v => (v.lang || \"\").toLowerCase().startsWith(\"en\"));\n      const usable = en.length ? en : voices;\n\n      usable.forEach((v, idx) => {\n        const opt = document.createElement(\"option\");\n        opt.value = String(idx);\n        opt.textContent = `${v.name} (${v.lang})`;\n        voiceSelect.appendChild(opt);\n      });\n\n      selectedVoice = usable[0] || null;\n      voiceSelect.onchange = () => {\n        selectedVoice = usable[Number(voiceSelect.value)] || usable[0] || null;\n      };\n    }\n\n    \/* ===== Reading render ===== *\/\n    function renderReading(){\n      const area = document.getElementById(\"reading-area\");\n      if (!area) return;\n      area.innerHTML = \"\";\n      readingText.split(\/\\n\\s*\\n\/g).map(p => p.trim()).filter(Boolean).forEach(p => {\n        const el = document.createElement(\"p\");\n        el.textContent = p;\n        area.appendChild(el);\n      });\n    }\n\n    \/* ===== Questions render ===== *\/\n    function renderTFNG(){\n      const area = document.getElementById(\"tfng-area\");\n      if (!area) return;\n      area.innerHTML = \"\";\n\n      tfngQuestions.forEach(q => {\n        const box = document.createElement(\"div\");\n        box.className = \"icte-q\";\n\n        const label = document.createElement(\"label\");\n        label.className = \"icte-q__label\";\n        label.htmlFor = `tfng-${q.id}`;\n        label.textContent = `${q.id}. ${q.text}`;\n        box.appendChild(label);\n\n        const controls = document.createElement(\"div\");\n        controls.className = \"icte-q__controls\";\n\n        const sel = document.createElement(\"select\");\n        sel.id = `tfng-${q.id}`;\n        sel.innerHTML = `\n          <option value=\"\">Choose\u2026<\/option>\n          <option value=\"TRUE\">TRUE<\/option>\n          <option value=\"FALSE\">FALSE<\/option>\n          <option value=\"NOT GIVEN\">NOT GIVEN<\/option>\n        `;\n        controls.appendChild(sel);\n\n        box.appendChild(controls);\n\n        const fb = document.createElement(\"div\");\n        fb.className = \"icte-q__fb\";\n        fb.id = `fb-${q.id}`;\n        box.appendChild(fb);\n\n        area.appendChild(box);\n      });\n    }\n\n    function renderNotes(){\n      const area = document.getElementById(\"note-area\");\n      if (!area) return;\n      area.innerHTML = \"\";\n\n      noteQuestions.forEach(q => {\n        const box = document.createElement(\"div\");\n        box.className = \"icte-q\";\n\n        const label = document.createElement(\"label\");\n        label.className = \"icte-q__label\";\n        label.htmlFor = `note-${q.id}`;\n        label.textContent = `${q.id}. ${q.prompt}`;\n        box.appendChild(label);\n\n        const controls = document.createElement(\"div\");\n        controls.className = \"icte-q__controls\";\n\n        const input = document.createElement(\"input\");\n        input.type = \"text\";\n        input.id = `note-${q.id}`;\n        input.placeholder = \"ONE WORD ONLY\";\n        controls.appendChild(input);\n\n        box.appendChild(controls);\n\n        const fb = document.createElement(\"div\");\n        fb.className = \"icte-q__fb\";\n        fb.id = `fb-${q.id}`;\n        box.appendChild(fb);\n\n        area.appendChild(box);\n      });\n    }\n\n    \/* ===== Scoring\/checking ===== *\/\n    function setScore(text){\n      const scoreBox = document.getElementById(\"scoreBox\");\n      if (scoreBox) scoreBox.textContent = text || \"\";\n    }\n\n    function normChoice(x){ return String(x || \"\").trim().toUpperCase(); }\n    function normWord(x){ return String(x || \"\").trim().toLowerCase().replace(\/[.,!?;:()\"']\/g, \"\"); }\n    function isOneWord(x){ const t = String(x || \"\").trim(); return !!t && t.split(\/\\s+\/).length === 1; }\n\n    function checkAnswers(){\n      const total = tfngQuestions.length + noteQuestions.length;\n      let correct = 0, attempted = 0;\n\n      tfngQuestions.forEach(q => {\n        const sel = document.getElementById(`tfng-${q.id}`);\n        const fb = document.getElementById(`fb-${q.id}`);\n        if (!sel || !fb) return;\n\n        const user = normChoice(sel.value);\n        if (!user) { fb.textContent = \"Please choose TRUE \/ FALSE \/ NOT GIVEN.\"; fb.style.color = \"#8a5a00\"; return; }\n        attempted++;\n        if (user === q.answer) { correct++; fb.textContent = `\u2705 Correct (${q.answer})`; fb.style.color = \"#065f46\"; }\n        else { fb.textContent = `\u274c Not correct. Correct answer: ${q.answer}`; fb.style.color = \"#991b1b\"; }\n      });\n\n      noteQuestions.forEach(q => {\n        const input = document.getElementById(`note-${q.id}`);\n        const fb = document.getElementById(`fb-${q.id}`);\n        if (!input || !fb) return;\n\n        const raw = String(input.value || \"\").trim();\n        if (!raw) { fb.textContent = \"Please write ONE WORD.\"; fb.style.color = \"#8a5a00\"; return; }\n        attempted++;\n\n        if (!isOneWord(raw)) { fb.textContent = `\u26a0\ufe0f ONE WORD ONLY. Correct answer: ${q.answer}`; fb.style.color = \"#8a5a00\"; return; }\n\n        if (normWord(raw) === normWord(q.answer)) { correct++; fb.textContent = `\u2705 Correct (${q.answer})`; fb.style.color = \"#065f46\"; }\n        else { fb.textContent = `\u274c Not correct. Correct answer: ${q.answer}`; fb.style.color = \"#991b1b\"; }\n      });\n\n      setScore(`Score: ${correct}\/${total} (attempted: ${attempted}\/${total})`);\n\n      if (speechSynthesisSupported) {\n        showSynthesisLoader(true);\n        sayText(`Your score is ${correct} out of ${total}.`, \"en-US\").then(() => showSynthesisLoader(false));\n      }\n    }\n\n    function showAllCorrectAnswers(){\n      [...tfngQuestions, ...noteQuestions].forEach(q => {\n        const fb = document.getElementById(`fb-${q.id}`);\n        if (!fb) return;\n        fb.textContent = `Correct answer: ${q.answer}`;\n        fb.style.color = \"#0f172a\";\n      });\n      setScore(\"Correct answers are shown.\");\n    }\n\n    function resetAll(){\n      tfngQuestions.forEach(q => {\n        const sel = document.getElementById(`tfng-${q.id}`);\n        const fb = document.getElementById(`fb-${q.id}`);\n        if (sel) sel.value = \"\";\n        if (fb) fb.textContent = \"\";\n      });\n      noteQuestions.forEach(q => {\n        const input = document.getElementById(`note-${q.id}`);\n        const fb = document.getElementById(`fb-${q.id}`);\n        if (input) input.value = \"\";\n        if (fb) fb.textContent = \"\";\n      });\n      setScore(\"\");\n      stopSpeaking();\n    }\n\n    \/* ===== Support: Summary + Main Ideas (ONE definition each) ===== *\/\n    function setHelperContent(nodesBuilder){\n      const area = document.getElementById(\"helper-area\");\n      if (!area) return;\n      area.innerHTML = \"\";\n      nodesBuilder(area);\n      area.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n    }\n\n    function getSummaryText(){\n      return [\n        \"Cork is the thick bark of the cork oak and has unusual properties: it is tough, elastic, buoyant, and fire-resistant.\",\n        \"Its cellular structure contains millions of air-filled cells, which explains cork\u2019s lightness and ability to spring back after pressure.\",\n        \"Cork oaks grow in Mediterranean climates, and southern Portugal\u2019s Alentejo region became the world\u2019s leading producer.\",\n        \"Harvesting cork requires patience and skill: trees need many years before the first harvest, and bark is stripped by hand under suitable dry conditions.\",\n        \"Although plastic stoppers and aluminium screw caps became popular due to concerns about cork taint (TCA), natural cork still has advantages such as tradition, sustainability, recyclability, and environmental benefits like biodiversity and preventing desertification.\"\n      ].join(\" \");\n    }\n\n    function showSummary(){\n      const summaryText = getSummaryText();\n\n      \/\/ \u2705 Display EXACTLY what audio reads\n      setHelperContent((area) => {\n        const p = document.createElement(\"p\");\n        const tag = document.createElement(\"span\");\n        tag.className = \"tag\";\n        tag.textContent = \"Summary\";\n        p.appendChild(tag);\n        p.append(\" \" + summaryText);\n        area.appendChild(p);\n      });\n\n      if (speechSynthesisSupported) {\n        stopSpeaking();\n        showSynthesisLoader(true);\n        sayText(\"Summary. \" + summaryText, \"en-US\").then(() => showSynthesisLoader(false));\n      }\n    }\n\n    function getMainIdeasForQuestions(){\n      return [\n        { tag: \"Q1\u20135 TF\/NG\", text: \"Only TRUE\/FALSE if the passage clearly says so; if it does not say it, choose NOT GIVEN.\" },\n        { tag: \"Bark facts\", text: \"Bark up to ~20 cm; insulates the tree; ~40 million cells per cubic cm; not replicated by technology; air-filled cells = buoyant.\" },\n        { tag: \"Where it grows\", text: \"Mediterranean climates; 400\u2013800 mm rain; poor soil; Alentejo (Portugal) produces roughly half of world cork.\" },\n        { tag: \"Harvest timing\", text: \"First harvest 25 years; about a decade between harvests; top quality needs 15\u201320 more years; avoid cold\/damp stripping.\" },\n        { tag: \"How harvested\", text: \"No machine; skilled workers use axes and strip by hand.\" },\n        { tag: \"Processing & uses\", text: \"Dried ~4 months; boiled; >60% for bottle stoppers; others for insulation\/tiles\/granules in concrete.\" },\n        { tag: \"Why alternatives\", text: \"TCA can spoil taste \u2192 shift to plastic and screw caps (cheaper; screw caps convenient).\" },\n        { tag: \"Why cork remains\", text: \"Traditional quality image; sustainable; recyclable; supports biodiversity; prevents desertification.\" },\n        { tag: \"One word only\", text: \"For Q6\u201313: ONE WORD only (no 'a\/the', no extra words).\" }\n      ];\n    }\n\n    function showMainIdeas(){\n      const items = getMainIdeasForQuestions();\n\n      setHelperContent((area) => {\n        const p = document.createElement(\"p\");\n        const tag = document.createElement(\"span\");\n        tag.className = \"tag\";\n        tag.textContent = \"Main ideas\";\n        p.appendChild(tag);\n        p.append(\" Important points to remember for answering the questions:\");\n        area.appendChild(p);\n\n        const ul = document.createElement(\"ul\");\n        items.forEach(i => {\n          const li = document.createElement(\"li\");\n          const t = document.createElement(\"span\");\n          t.className = \"tag\";\n          t.textContent = i.tag;\n          li.appendChild(t);\n          li.append(i.text);\n          ul.appendChild(li);\n        });\n        area.appendChild(ul);\n      });\n\n      if (speechSynthesisSupported) {\n        stopSpeaking();\n        showSynthesisLoader(true);\n        const speakText = \"Main ideas. \" + items.map(i => `${i.tag}. ${i.text}`).join(\" \");\n        sayText(speakText, \"en-US\").then(() => showSynthesisLoader(false));\n      }\n    }\n\n    \/* ===== Audio buttons ===== *\/\n    async function playInstructions(){\n      if (!speechSynthesisSupported) return;\n      stopSpeaking();\n      showSynthesisLoader(true);\n      const msg =\n        \"Read the passage. Then answer questions one to five using true, false, or not given. \" +\n        \"For questions six to thirteen, write one word only.\";\n      await sayText(msg, \"en-US\");\n      showSynthesisLoader(false);\n    }\n\n    async function playQuestions(){\n      if (!speechSynthesisSupported) return;\n      stopSpeaking();\n      showSynthesisLoader(true);\n\n      await sayText(\"Questions one to five. Choose true, false, or not given.\", \"en-US\");\n      for (const q of tfngQuestions) await sayText(`Question ${q.id}. ${q.text}`, \"en-US\");\n\n      await sayText(\"Questions six to thirteen. Write one word only.\", \"en-US\");\n      for (const q of noteQuestions) await sayText(`Question ${q.id}. ${q.prompt}`, \"en-US\");\n\n      showSynthesisLoader(false);\n    }\n\n    async function playPassage(){\n      if (!speechSynthesisSupported) return;\n      stopSpeaking();\n      showSynthesisLoader(true);\n      await sayText(\"Now, listen to the reading passage about cork.\", \"en-US\");\n      await sayText(readingText.replace(\/\\n\\s*\\n\/g, \"  \"), \"en-US\");\n      showSynthesisLoader(false);\n    }\n\n    function wireUI(){\n      const playIns = document.getElementById(\"play-instructions\");\n      const playQs = document.getElementById(\"play-questions\");\n      const playPass = document.getElementById(\"play-passage\");\n      const checkBtn = document.getElementById(\"check-btn\");\n      const showBtn = document.getElementById(\"show-btn\");\n      const resetBtn = document.getElementById(\"reset-btn\");\n      const stopBtn = document.getElementById(\"stop-btn\");\n      const toggleReading = document.getElementById(\"toggle-reading\");\n      const readingArea = document.getElementById(\"reading-area\");\n      const summaryBtn = document.getElementById(\"summary-btn\");\n      const mainIdeasBtn = document.getElementById(\"main-ideas-btn\");\n      const clearSupport = document.getElementById(\"clear-support\");\n\n      if (playIns) playIns.onclick = playInstructions;\n      if (playQs) playQs.onclick = playQuestions;\n      if (playPass) playPass.onclick = playPassage;\n      if (checkBtn) checkBtn.onclick = checkAnswers;\n      if (showBtn) showBtn.onclick = showAllCorrectAnswers;\n      if (resetBtn) resetBtn.onclick = resetAll;\n      if (stopBtn) stopBtn.onclick = stopSpeaking;\n      if (summaryBtn) summaryBtn.onclick = showSummary;\n      if (mainIdeasBtn) mainIdeasBtn.onclick = showMainIdeas;\n\n      if (clearSupport) clearSupport.onclick = () => {\n        const area = document.getElementById(\"helper-area\");\n        if (area) area.innerHTML = 'Click <strong>Summary<\/strong> or <strong>Main ideas<\/strong>.';\n      };\n\n      if (toggleReading && readingArea) {\n        toggleReading.onclick = () => {\n          const hidden = readingArea.style.display === \"none\";\n          readingArea.style.display = hidden ? \"block\" : \"none\";\n          toggleReading.textContent = hidden ? \"Hide\" : \"Show\";\n        };\n      }\n    }\n\n    function initialize(){\n      loadVoices();\n      renderReading();\n      renderTFNG();\n      renderNotes();\n      wireUI();\n    }\n\n    document.addEventListener(\"DOMContentLoaded\", initialize);\n      (function markCurrentMenu(){\n  const here = (location.href || \"\").replace(\/\\\/$\/, \"\");\n  document.querySelectorAll(\".icte-menu a\").forEach(a => {\n    const href = (a.href || \"\").replace(\/\\\/$\/, \"\");\n    if (href && here.includes(href)) a.classList.add(\"is-current\");\n  });\n})();\n  <\/script>\n\n\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Passage 1 Passage 2 Passage 3 Test 2 Test 3 Test 4 Speaking Listening Writing IELTS Reading Passage 1: Cork<\/p>\n","protected":false},"author":1,"featured_media":444,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","footnotes":""},"categories":[25,26,27],"tags":[],"class_list":["post-443","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ielts","category-reading","category-test-1"],"_links":{"self":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/comments?post=443"}],"version-history":[{"count":3,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/443\/revisions"}],"predecessor-version":[{"id":610,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/443\/revisions\/610"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/media\/444"}],"wp:attachment":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/media?parent=443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/categories?post=443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/tags?post=443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}