{"id":673,"date":"2026-01-14T06:03:07","date_gmt":"2026-01-14T06:03:07","guid":{"rendered":"https:\/\/i-cte.org\/robot\/?p=673"},"modified":"2026-01-14T06:03:07","modified_gmt":"2026-01-14T06:03:07","slug":"ielts-writing-overview","status":"publish","type":"post","link":"https:\/\/i-cte.org\/robot\/ielts-writing-overview\/","title":{"rendered":"IELTs &#8211; Writing &#8211; Overview"},"content":{"rendered":"\n<!-- \u2705 IELTS WRITING \u2013 OVERVIEW + VOICE CHATBOT (WP-SAFE SINGLE BLOCK) -->\n<div id=\"icte-writing-overview-voice\">\n\n  <!-- \u2705 TOP NAV MENU (GREEN) -->\n  <nav class=\"icte-menu\" aria-label=\"IELTS practice navigation\">\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-overview\/\" class=\"is-current\">Writing<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-1\/\">Test 1<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-2\/\">Test 2<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-3\/\">Test 3<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-4\/\">Test 4<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-listening-overview\/\">Listening<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-reading-overview\/\">Reading<\/a>\n    <a href=\"https:\/\/i-cte.org\/robot\/ielts-speaking-overview\/\">Speaking<\/a>\n  <\/nav>\n\n  <section class=\"icte-wrap\" aria-label=\"IELTS Writing Overview\">\n\n    <!-- \u2705 HERO -->\n    <section class=\"icte-hero\" aria-label=\"Writing overview header\">\n      <div class=\"icte-heroCard\">\n        <div class=\"icte-badges\">\n          <span class=\"icte-badge\">IELTS Writing<\/span>\n          <span class=\"icte-badge icte-badge--blue\">Overview + Coach<\/span>\n        <\/div>\n\n        <h1 class=\"icte-h1\">IELTS Writing Practice (Task 1 + Task 2)<\/h1>\n        <p class=\"icte-sub\">\n          Choose a test below. Each test includes <strong>Task 1 (20 mins, 150+ words)<\/strong> and\n          <strong>Task 2 (40 mins, 250+ words)<\/strong>.\n        <\/p>\n\n        <div class=\"icte-tip\">\n          <strong>Fast rule:<\/strong>\n          Task 1 = <strong>overview + comparisons<\/strong>. Task 2 = <strong>clear position + reasons + examples<\/strong>.\n        <\/div>\n\n        <div class=\"icte-ctaRow\" aria-label=\"Quick actions\">\n          <a class=\"icte-cta icte-cta--green\" href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-1\/\">Start Test 1<\/a>\n          <a class=\"icte-cta icte-cta--blue\" href=\"#icte-writing-tests\">See all tests<\/a>\n        <\/div>\n<div class=\"icte-ctaRow\" style=\"margin-top:10px;\">\n  <button class=\"icte-cta icte-cta--blue\" type=\"button\" id=\"icteListenStrategies\">\n    \ud83d\udd0a Listen to Writing Strategies\n  <\/button>\n<\/div>\n\n        <div class=\"icte-miniNote\" role=\"note\">\n          \u2705 New: Click the <strong>Coach<\/strong> button (bottom-right) for voice guidance and writing strategies.\n        <\/div>\n      <\/div>\n\n      <div class=\"icte-heroImg\" aria-label=\"Writing banner\">\n        <img decoding=\"async\"\n          src=\"https:\/\/i-cte.org\/robot\/wp-content\/uploads\/2026\/01\/2-1.webp\"\n          alt=\"IELTS Writing practice banner\"\n        \/>\n        <div class=\"icte-heroImgOverlay\">\n          <div class=\"t1\">Writing Coach<\/div>\n          <div class=\"t2\">Voice \u2022 Strategy \u2022 Checklists \u2022 Time plans<\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- \u2705 QUICK LINKS BAR -->\n    <section class=\"icte-quick\" aria-label=\"Quick links\">\n      <div class=\"icte-quickLeft\">Quick access:<\/div>\n      <div class=\"icte-quickLinks\">\n        <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-1\/\">Test 1<\/a>\n        <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-2\/\">Test 2<\/a>\n        <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-3\/\">Test 3<\/a>\n        <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-4\/\">Test 4<\/a>\n      <\/div>\n    <\/section>\n\n    <!-- \u2705 WRITING STRATEGY GUIDELINES -->\n    <section class=\"icte-tips\" aria-label=\"Writing strategies\">\n      <h2 class=\"icte-h2\">Writing Strategies (What to do to score higher)<\/h2>\n\n      <details open>\n        <summary>Task 1 Strategy (Academic): 4-paragraph \u201cOVERVIEW FIRST\u201d method<\/summary>\n        <div class=\"icte-grid2\">\n          <div class=\"icte-box\">\n            <h3 class=\"icte-h3\">\u2705 Structure (recommended)<\/h3>\n            <ol class=\"icte-ol\">\n              <li><strong>Introduction (1 sentence):<\/strong> paraphrase the prompt (no numbers).<\/li>\n              <li><strong>Overview (2 sentences):<\/strong> the <em>main trends \/ key differences<\/em> (no data).<\/li>\n              <li><strong>Body 1:<\/strong> group and compare the most important features with 2\u20134 key numbers.<\/li>\n              <li><strong>Body 2:<\/strong> finish remaining features with 2\u20134 key numbers.<\/li>\n            <\/ol>\n          <\/div>\n\n          <div class=\"icte-box\">\n            <h3 class=\"icte-h3\">\ud83c\udfaf What examiners want<\/h3>\n            <ul class=\"icte-ul\">\n              <li><strong>Overview is essential<\/strong> (missing overview limits score).<\/li>\n              <li><strong>Comparisons<\/strong> (bigger\/smaller, higher\/lower, increase\/decrease).<\/li>\n              <li><strong>Grouping<\/strong> (don\u2019t list every number).<\/li>\n              <li><strong>Accurate language<\/strong> (units, time, percentages).<\/li>\n            <\/ul>\n          <\/div>\n        <\/div>\n\n        <div class=\"icte-checklist\">\n          <strong>Task 1 Checklist (30 seconds before submit):<\/strong>\n          <ul>\n            <li>Do I have an <strong>overview<\/strong>?<\/li>\n            <li>Did I make <strong>comparisons<\/strong> (not just descriptions)?<\/li>\n            <li>Did I use <strong>2\u20136 key numbers<\/strong> only (not too many)?<\/li>\n            <li>Did I avoid opinions and reasons?<\/li>\n          <\/ul>\n        <\/div>\n      <\/details>\n\n      <details>\n        <summary>Task 2 Strategy: Plan \u2192 Position \u2192 Paragraph Power<\/summary>\n        <div class=\"icte-grid2\">\n          <div class=\"icte-box\">\n            <h3 class=\"icte-h3\">\u2705 Structure (Band-friendly)<\/h3>\n            <ol class=\"icte-ol\">\n              <li><strong>Introduction:<\/strong> paraphrase + clear position (agree\/disagree \/ discuss \/ advantages).<\/li>\n              <li><strong>Body 1:<\/strong> main idea \u2192 explain \u2192 example.<\/li>\n              <li><strong>Body 2:<\/strong> second idea (or other view) \u2192 explain \u2192 example.<\/li>\n              <li><strong>Conclusion:<\/strong> restate position + 1-sentence summary (no new ideas).<\/li>\n            <\/ol>\n          <\/div>\n\n          <div class=\"icte-box\">\n            <h3 class=\"icte-h3\">\ud83d\udd25 Paragraph Power formula<\/h3>\n            <ul class=\"icte-ul\">\n              <li><strong>Topic sentence:<\/strong> one clear claim.<\/li>\n              <li><strong>Because:<\/strong> 1\u20132 reasons (logic).<\/li>\n              <li><strong>Example:<\/strong> real, specific (country, school, workplace, personal but formal).<\/li>\n              <li><strong>Link back:<\/strong> connect to the question.<\/li>\n            <\/ul>\n          <\/div>\n        <\/div>\n\n        <div class=\"icte-checklist\">\n          <strong>Task 2 Checklist (45 seconds before submit):<\/strong>\n          <ul>\n            <li>Is my <strong>position clear<\/strong> from the introduction?<\/li>\n            <li>Does each body paragraph have a <strong>topic sentence + example<\/strong>?<\/li>\n            <li>Did I use linking words naturally (However, Therefore, As a result)?<\/li>\n            <li>Did I avoid memorised phrases that sound unnatural?<\/li>\n          <\/ul>\n        <\/div>\n      <\/details>\n\n      <details>\n        <summary>Time Management Plan (simple + effective)<\/summary>\n        <ul class=\"icte-ul\">\n          <li><strong>Task 1 (20 mins):<\/strong> 3 plan \u2192 14 write \u2192 3 check<\/li>\n          <li><strong>Task 2 (40 mins):<\/strong> 5 plan \u2192 30 write \u2192 5 check<\/li>\n          <li><strong>Always check:<\/strong> S-V agreement, articles (a\/the), plural -s, punctuation, spelling.<\/li>\n        <\/ul>\n      <\/details>\n\n      <details>\n        <summary>High-impact language moves (safe for Band 6\u20137+)<\/summary>\n        <ul class=\"icte-ul\">\n          <li><strong>Task 1:<\/strong> \u201cOverall, \u2026\u201d \/ \u201cIn contrast, \u2026\u201d \/ \u201cA similar pattern is seen in \u2026\u201d<\/li>\n          <li><strong>Task 2:<\/strong> \u201cThis is because \u2026\u201d \/ \u201cA clear example of this is \u2026\u201d \/ \u201cAs a result, \u2026\u201d<\/li>\n          <li>Use a mix of <strong>simple + complex<\/strong> sentences (don\u2019t force long ones).<\/li>\n        <\/ul>\n      <\/details>\n    <\/section>\n\n    <hr class=\"icte-divider\" \/>\n\n    <!-- \u2705 TEST CARDS -->\n    <section id=\"icte-writing-tests\" aria-label=\"Writing tests\">\n      <div class=\"icte-sectionTitle\">\n        <h2 class=\"icte-h2\" style=\"margin:0;\">Choose a Writing Test<\/h2>\n        <p class=\"icte-muted\" style=\"margin:0;\">Open a test to practice Task 1 + Task 2 with tools.<\/p>\n      <\/div>\n\n      <div class=\"icte-cards\">\n        <article class=\"icte-card\">\n          <span class=\"icte-tag\">IELTS Writing<\/span>\n          <h3>Test 1<\/h3>\n          <p>Practice Task 1 (overview + comparisons) and Task 2 (clear opinion + examples).<\/p>\n          <a class=\"icte-open\" href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-1\/\">Open Test 1<\/a>\n        <\/article>\n\n        <article class=\"icte-card\">\n          <span class=\"icte-tag\">IELTS Writing<\/span>\n          <h3>Test 2<\/h3>\n          <p>Build stronger topic sentences and develop ideas clearly.<\/p>\n          <a class=\"icte-open\" href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-2\/\">Open Test 2<\/a>\n        <\/article>\n\n        <article class=\"icte-card\">\n          <span class=\"icte-tag\">IELTS Writing<\/span>\n          <h3>Test 3<\/h3>\n          <p>Improve cohesion, grammar variety, and vocabulary accuracy.<\/p>\n          <a class=\"icte-open\" href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-3\/\">Open Test 3<\/a>\n        <\/article>\n\n        <article class=\"icte-card\">\n          <span class=\"icte-tag\">IELTS Writing<\/span>\n          <h3>Test 4<\/h3>\n          <p>Timed practice: plan fast, write clear, and proofread smart.<\/p>\n          <a class=\"icte-open\" href=\"https:\/\/i-cte.org\/robot\/ielts-writing-test-4\/\">Open Test 4<\/a>\n        <\/article>\n      <\/div>\n\n      <div class=\"icte-footer\" role=\"note\">\n        Tip: Use the Coach for strategy, then open a test to write under time pressure.\n      <\/div>\n    <\/section>\n\n  <\/section>\n\n  <!-- \u2705 VOICE CHATBOT (BOTTOM-RIGHT) -->\n  <button class=\"icte-fab\" id=\"icteCoachOpen\" aria-label=\"Open writing coach\">Coach<\/button>\n\n  <aside class=\"icte-coach\" id=\"icteCoach\" aria-label=\"IELTS Writing Coach\" aria-hidden=\"true\">\n    <header class=\"icte-coachHead\">\n      <div class=\"icte-coachTitle\">\n        <div class=\"icte-dot\"><\/div>\n        <div>\n          <div class=\"t1\">IELTS Writing Coach<\/div>\n          <div class=\"t2\">Voice + strategies<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"icte-coachBtns\">\n        <button class=\"icte-btn icte-btn--ghost\" id=\"icteCoachClose\" aria-label=\"Close coach\">\u2715<\/button>\n      <\/div>\n    <\/header>\n\n    <div class=\"icte-coachBody\" id=\"icteCoachBody\" role=\"log\" aria-live=\"polite\"><\/div>\n\n    <div class=\"icte-coachControls\">\n      <div class=\"icte-row\">\n        <button class=\"icte-btn icte-btn--green\" id=\"icteVoiceStart\">Start Voice<\/button>\n        <button class=\"icte-btn icte-btn--blue\" id=\"icteVoiceToggle\" aria-pressed=\"false\">Voice: Off<\/button>\n      <\/div>\n\n      <div class=\"icte-row\">\n        <select class=\"icte-select\" id=\"icteVoiceSelect\" aria-label=\"Choose voice\">\n          <option value=\"\">Auto-select voice<\/option>\n        <\/select>\n        <button class=\"icte-btn\" id=\"icteReplay\">Replay<\/button>\n      <\/div>\n\n      <div class=\"icte-pills\" aria-label=\"Quick questions\">\n        <button class=\"icte-pill\" data-intent=\"greet\">Greeting<\/button>\n        <button class=\"icte-pill\" data-intent=\"task1\">How to do Task 1<\/button>\n        <button class=\"icte-pill\" data-intent=\"task2\">How to do Task 2<\/button>\n        <button class=\"icte-pill\" data-intent=\"time\">Time plan<\/button>\n        <button class=\"icte-pill\" data-intent=\"band7\">Band 7 tips<\/button>\n      <\/div>\n    <\/div>\n  <\/aside>\n\n  <!-- \u2705 CSS (SCOPED) -->\n  <style>\n\n    #icte-writing-overview-voice button.icte-cta{\n  border:0;\n  cursor:pointer;\n}\n\n    #icte-writing-overview-voice, #icte-writing-overview-voice *{ box-sizing:border-box; }\n    #icte-writing-overview-voice{\n      font-family: Arial, sans-serif;\n      font-size:14px;\n      line-height:1.65;\n      color:#0f172a;\n      width:100%;\n      max-width:100%;\n    }\n\n    \/* Menu *\/\n    #icte-writing-overview-voice .icte-menu{\n      width:100%;\n      display:flex;\n      flex-wrap:wrap;\n      gap:.5rem;\n      justify-content:center;\n      align-items:center;\n      padding:.8rem .95rem;\n      margin:0 0 1rem 0;\n      background:#16a34a;\n      border-radius:14px;\n      box-shadow:0 2px 8px rgba(0,0,0,.10);\n      position:sticky;\n      top:0;\n      z-index:999;\n    }\n    #icte-writing-overview-voice .icte-menu a{\n      display:inline-block;\n      text-decoration:none;\n      font-weight:900;\n      font-size:1rem;\n      color:#fff;\n      padding:.6rem .9rem;\n      border-radius:999px;\n      border:1px solid rgba(255,255,255,.35);\n      background:rgba(255,255,255,.12);\n    }\n    #icte-writing-overview-voice .icte-menu a.is-current{\n      background:#fff; color:#16a34a; border-color:#fff;\n    }\n    @media (max-width:600px){\n      #icte-writing-overview-voice .icte-menu{ justify-content:flex-start; overflow-x:auto; white-space:nowrap; }\n      #icte-writing-overview-voice .icte-menu a{ font-size:.95rem; }\n    }\n\n    \/* Wrap *\/\n    #icte-writing-overview-voice .icte-wrap{\n      max-width:1100px;\n      margin:0 auto;\n      padding:0 12px 18px;\n    }\n\n    \/* Hero *\/\n    #icte-writing-overview-voice .icte-hero{\n      display:grid;\n      grid-template-columns: 1.2fr .8fr;\n      gap:14px;\n      align-items:stretch;\n      border:1px solid rgba(0,0,0,.10);\n      border-radius:16px;\n      padding:14px;\n      background:\n        radial-gradient(900px 300px at 20% -10%, rgba(34,197,94,.18), transparent 60%),\n        radial-gradient(900px 300px at 100% 0%, rgba(14,165,233,.14), transparent 55%),\n        rgba(255,255,255,.90);\n      box-shadow:0 10px 24px rgba(0,0,0,.06);\n      margin-bottom:14px;\n    }\n    @media (max-width:980px){ #icte-writing-overview-voice .icte-hero{ grid-template-columns:1fr; } }\n    #icte-writing-overview-voice .icte-heroCard{\n      border:1px solid rgba(0,0,0,.08);\n      border-radius:14px;\n      background:#fff;\n      padding:14px;\n      box-shadow:0 2px 10px rgba(0,0,0,.05);\n    }\n    #icte-writing-overview-voice .icte-badges{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:10px; }\n    #icte-writing-overview-voice .icte-badge{\n      display:inline-block; padding:.35rem .7rem; border-radius:999px;\n      font-weight:1000; color:#064e3b; background:rgba(34,197,94,.14);\n      border:1px solid rgba(34,197,94,.25); font-size:12px;\n    }\n    #icte-writing-overview-voice .icte-badge--blue{\n      color:#1e3a8a; background:rgba(14,165,233,.12); border-color:rgba(14,165,233,.20);\n    }\n    #icte-writing-overview-voice .icte-h1{ margin:0 0 6px; font-size:1.45rem; font-weight:1000; color:#0f5132; }\n    #icte-writing-overview-voice .icte-sub{ margin:0; color:#334155; }\n    #icte-writing-overview-voice .icte-tip{\n      margin-top:10px; border:1px solid rgba(34,197,94,.22);\n      background:rgba(240,253,244,.90); border-radius:14px;\n      padding:.75rem .85rem; color:#0f5132; font-weight:800;\n    }\n    #icte-writing-overview-voice .icte-ctaRow{ display:flex; gap:10px; flex-wrap:wrap; margin-top:12px; }\n    #icte-writing-overview-voice .icte-cta{\n      display:inline-block; text-decoration:none; font-weight:1000;\n      padding:10px 12px; border-radius:12px; color:#fff;\n    }\n    #icte-writing-overview-voice .icte-cta--green{ background:#16a34a; }\n    #icte-writing-overview-voice .icte-cta--blue{ background:#0b5ed7; }\n    #icte-writing-overview-voice .icte-miniNote{\n      margin-top:10px; padding:10px 12px; border-radius:12px;\n      border:1px solid rgba(2,6,23,.10); background:#f8fafc; color:#334155; font-weight:800;\n    }\n\n    #icte-writing-overview-voice .icte-heroImg{\n      position:relative; border-radius:16px; overflow:hidden;\n      border:1px solid rgba(0,0,0,.10); background:#f8fafc;\n      box-shadow:0 12px 22px rgba(0,0,0,.08); min-height: 220px;\n    }\n    #icte-writing-overview-voice .icte-heroImg img{ width:100%; height:100%; object-fit:cover; display:block; }\n    #icte-writing-overview-voice .icte-heroImgOverlay{\n      position:absolute; left:0; right:0; bottom:0; padding:12px 14px;\n      background: linear-gradient(180deg, transparent, rgba(2,6,23,.65)); color:#fff;\n    }\n    #icte-writing-overview-voice .icte-heroImgOverlay .t1{ font-weight:1000; font-size:1.05rem; }\n    #icte-writing-overview-voice .icte-heroImgOverlay .t2{ font-size:.95rem; opacity:.92; }\n\n    \/* Quick links *\/\n    #icte-writing-overview-voice .icte-quick{\n      margin-top:10px; padding:12px; border-radius:14px;\n      background:#f8fbff; border:1px solid #dbeafe;\n      display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:space-between;\n    }\n    #icte-writing-overview-voice .icte-quickLeft{ font-weight:1000; color:#0b5ed7; }\n    #icte-writing-overview-voice .icte-quickLinks{ display:flex; flex-wrap:wrap; gap:8px; }\n    #icte-writing-overview-voice .icte-quickLinks a{\n      display:inline-block; padding:8px 10px; border-radius:10px;\n      background:#0b5ed7; color:#fff; text-decoration:none; font-weight:1000; font-size:13px;\n    }\n\n    \/* Tips *\/\n    #icte-writing-overview-voice .icte-tips{\n      margin-top:14px;\n      background:#f4fff6;\n      border:2px solid #16a34a;\n      border-left:8px solid #16a34a;\n      border-radius:12px;\n      padding:14px 16px;\n      box-shadow:0 2px 8px rgba(0,0,0,.06);\n    }\n    #icte-writing-overview-voice .icte-h2{ margin:0 0 10px; color:#1f7a35; font-size:1.2rem; font-weight:1000; }\n    #icte-writing-overview-voice .icte-h3{ margin:0 0 8px; font-size:1.02rem; color:#0f5132; font-weight:1000; }\n    #icte-writing-overview-voice details{ margin-top:10px; }\n    #icte-writing-overview-voice summary{\n      cursor:pointer; font-weight:1000; color:#1f7a35;\n      list-style:none; user-select:none; outline:none;\n    }\n    #icte-writing-overview-voice summary::-webkit-details-marker{ display:none; }\n    #icte-writing-overview-voice summary:before{ content:\"\u25b6 \"; margin-right:6px; }\n    #icte-writing-overview-voice details[open] summary:before{ content:\"\u25bc \"; }\n    #icte-writing-overview-voice .icte-ul{ margin:10px 0 0 18px; }\n    #icte-writing-overview-voice .icte-ol{ margin:10px 0 0 18px; }\n    #icte-writing-overview-voice .icte-ul li, #icte-writing-overview-voice .icte-ol li{ margin:7px 0; }\n\n    #icte-writing-overview-voice .icte-grid2{\n      display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:10px;\n    }\n    @media (max-width:980px){ #icte-writing-overview-voice .icte-grid2{ grid-template-columns:1fr; } }\n    #icte-writing-overview-voice .icte-box{\n      background:#fff; border:1px solid rgba(0,0,0,.08);\n      border-radius:12px; padding:12px; box-shadow:0 2px 10px rgba(0,0,0,.04);\n    }\n    #icte-writing-overview-voice .icte-checklist{\n      margin-top:12px; padding:12px;\n      border-radius:12px; background:#fff;\n      border:1px dashed rgba(22,163,74,.55);\n      font-weight:800; color:#0f5132;\n    }\n    #icte-writing-overview-voice .icte-checklist ul{ margin:8px 0 0 18px; font-weight:700; color:#334155; }\n\n    \/* Cards *\/\n    #icte-writing-overview-voice .icte-divider{\n      margin:18px 0; border:0; height:1px; background:#e5e7eb;\n    }\n    #icte-writing-overview-voice .icte-sectionTitle{\n      display:flex; align-items:baseline; justify-content:space-between; gap:10px;\n    }\n    #icte-writing-overview-voice .icte-muted{ color:#555; font-size:14px; }\n    #icte-writing-overview-voice .icte-cards{\n      display:grid; grid-template-columns: repeat(3, 1fr);\n      gap:14px; margin-top:12px;\n    }\n    @media (max-width:980px){ #icte-writing-overview-voice .icte-cards{ grid-template-columns:1fr; } }\n    #icte-writing-overview-voice .icte-card{\n      border:1px solid #e5e7eb; border-radius:14px; padding:14px;\n      background:#fff; box-shadow:0 2px 10px rgba(0,0,0,.05);\n      display:flex; flex-direction:column; gap:10px; min-height: 170px;\n    }\n    #icte-writing-overview-voice .icte-tag{\n      display:inline-block; width:max-content; font-size:12px; font-weight:1000;\n      padding:5px 10px; border-radius:999px; border:1px solid #bfe9c9;\n      background:#e7f7eb; color:#1f7a35;\n    }\n    #icte-writing-overview-voice .icte-card h3{ margin:0; font-size:18px; color:#0f5132; }\n    #icte-writing-overview-voice .icte-card p{ margin:0; color:#444; font-size:14px; }\n    #icte-writing-overview-voice .icte-open{\n      text-decoration:none; font-weight:1000; color:#fff; background:#16a34a;\n      padding:10px 12px; border-radius:12px; display:inline-block; width:max-content; margin-top:auto;\n    }\n    #icte-writing-overview-voice .icte-footer{\n      text-align:center; color:#64748b; font-size:13px; margin-top:14px;\n    }\n\n    \/* \u2705 Floating Coach UI *\/\n    #icte-writing-overview-voice .icte-fab{\n      position:fixed; right:16px; bottom:18px;\n      z-index:9999;\n      border:0; border-radius:999px;\n      padding:12px 14px;\n      font-weight:1000;\n      background:#16a34a; color:#fff;\n      box-shadow:0 12px 28px rgba(0,0,0,.18);\n      cursor:pointer;\n    }\n    #icte-writing-overview-voice .icte-coach{\n      position:fixed; right:16px; bottom:72px;\n      width:330px; max-width: calc(100vw - 32px);\n      height:460px; max-height: calc(100vh - 120px);\n      background:#fff;\n      border:1px solid rgba(0,0,0,.12);\n      border-radius:16px;\n      box-shadow:0 16px 40px rgba(0,0,0,.22);\n      z-index:9999;\n      display:none;\n      overflow:hidden;\n    }\n    #icte-writing-overview-voice .icte-coach.is-open{ display:flex; flex-direction:column; }\n    #icte-writing-overview-voice .icte-coachHead{\n      display:flex; align-items:center; justify-content:space-between;\n      padding:12px 12px;\n      background: linear-gradient(90deg, rgba(22,163,74,.14), rgba(14,165,233,.12));\n      border-bottom:1px solid rgba(0,0,0,.08);\n    }\n    #icte-writing-overview-voice .icte-coachTitle{ display:flex; gap:10px; align-items:center; }\n    #icte-writing-overview-voice .icte-dot{\n      width:10px; height:10px; border-radius:50%;\n      background:#16a34a; box-shadow:0 0 0 4px rgba(22,163,74,.18);\n    }\n    #icte-writing-overview-voice .icte-coachTitle .t1{ font-weight:1000; color:#0f5132; }\n    #icte-writing-overview-voice .icte-coachTitle .t2{ font-size:12px; color:#334155; opacity:.9; }\n\n    #icte-writing-overview-voice .icte-btn{\n      border:1px solid rgba(0,0,0,.12);\n      background:#fff;\n      border-radius:12px;\n      padding:10px 10px;\n      font-weight:1000;\n      cursor:pointer;\n    }\n    #icte-writing-overview-voice .icte-btn--ghost{\n      padding:8px 10px;\n      border-radius:12px;\n      background:rgba(255,255,255,.65);\n    }\n    #icte-writing-overview-voice .icte-btn--green{ background:#16a34a; color:#fff; border-color:#16a34a; }\n    #icte-writing-overview-voice .icte-btn--blue{ background:#0b5ed7; color:#fff; border-color:#0b5ed7; }\n\n    #icte-writing-overview-voice .icte-coachBody{\n      padding:12px;\n      overflow:auto;\n      flex:1;\n      background:#fcfcfd;\n    }\n    #icte-writing-overview-voice .icte-msg{\n      margin:0 0 10px;\n      padding:10px 11px;\n      border-radius:14px;\n      border:1px solid rgba(0,0,0,.08);\n      box-shadow:0 2px 10px rgba(0,0,0,.04);\n      font-weight:800;\n      color:#0f172a;\n      background:#fff;\n    }\n    #icte-writing-overview-voice .icte-msg.bot{ border-left:6px solid #16a34a; }\n    #icte-writing-overview-voice .icte-msg.user{ border-left:6px solid #0b5ed7; background:#f8fbff; }\n\n    #icte-writing-overview-voice .icte-coachControls{\n      border-top:1px solid rgba(0,0,0,.08);\n      padding:12px;\n      background:#fff;\n    }\n    #icte-writing-overview-voice .icte-row{\n      display:flex; gap:8px; align-items:center; margin-bottom:8px;\n    }\n    #icte-writing-overview-voice .icte-select{\n      width:100%;\n      padding:10px 10px;\n      border-radius:12px;\n      border:1px solid rgba(0,0,0,.12);\n      background:#fff;\n      font-weight:800;\n    }\n    #icte-writing-overview-voice .icte-pills{\n      display:flex; flex-wrap:wrap; gap:8px; margin-top:6px;\n    }\n    #icte-writing-overview-voice .icte-pill{\n      border:1px solid rgba(0,0,0,.12);\n      background:#f8fafc;\n      border-radius:999px;\n      padding:8px 10px;\n      font-weight:1000;\n      cursor:pointer;\n    }\n    #icte-writing-overview-voice .icte-pill:hover{ opacity:.92; }\n\n    \/* \u2705 FORCE HIGH-CONTRAST TEXT ON COACH BUTTONS (fix faded words) *\/\n#icte-writing-overview-voice .icte-btn,\n#icte-writing-overview-voice .icte-pill{\n  color:#0f172a !important;            \/* dark text *\/\n  text-shadow:none !important;\n  opacity:1 !important;               \/* prevent theme fading *\/\n  filter:none !important;\n}\n\n\/* \u2705 Main control buttons *\/\n#icte-writing-overview-voice .icte-btn{\n  background:#ffffff !important;\n  border:1px solid rgba(2,6,23,.18) !important;\n}\n\n#icte-writing-overview-voice .icte-btn--green{\n  background:#16a34a !important;\n  border-color:#16a34a !important;\n  color:#ffffff !important;\n}\n\n#icte-writing-overview-voice .icte-btn--blue{\n  background:#0b5ed7 !important;\n  border-color:#0b5ed7 !important;\n  color:#ffffff !important;\n}\n\n\/* \u2705 Quick strategy buttons (the faded ones in your screenshot) *\/\n#icte-writing-overview-voice .icte-pill{\n  background:#ffffff !important;                 \/* white for clarity *\/\n  border:1.5px solid rgba(2,6,23,.18) !important;\n  font-weight:1000 !important;\n}\n\n\/* Hover\/focus states for better usability *\/\n#icte-writing-overview-voice .icte-pill:hover{\n  background:rgba(22,163,74,.10) !important;\n  border-color:#16a34a !important;\n}\n\n#icte-writing-overview-voice .icte-pill:focus{\n  outline:3px solid rgba(11,94,215,.25) !important;\n  outline-offset:2px !important;\n}\n\n\/* Optional: a \u201cselected\u201d look if you later add active state in JS *\/\n#icte-writing-overview-voice .icte-pill.is-active{\n  background:#16a34a !important;\n  border-color:#16a34a !important;\n  color:#ffffff !important;\n}\n\n  <\/style>\n\n  <!-- \u2705 JS (VOICE + CHATBOT) -->\n  <script>\n    (function(){\n      var root = document.getElementById(\"icte-writing-overview-voice\");\n      if(!root) return;\n\n      var btnOpen = document.getElementById(\"icteCoachOpen\");\n      var panel = document.getElementById(\"icteCoach\");\n      var btnClose = document.getElementById(\"icteCoachClose\");\n      var log = document.getElementById(\"icteCoachBody\");\n      var btnStartVoice = document.getElementById(\"icteVoiceStart\");\n      var btnToggleVoice = document.getElementById(\"icteVoiceToggle\");\n      var voiceSelect = document.getElementById(\"icteVoiceSelect\");\n      var btnReplay = document.getElementById(\"icteReplay\");\n\n      var voiceEnabled = false;\n      var lastBotText = \"\";\n      var hasUserGesture = false;\n\n      function addMsg(text, who){\n        var div = document.createElement(\"div\");\n        div.className = \"icte-msg \" + (who || \"bot\");\n        div.textContent = text;\n        log.appendChild(div);\n        log.scrollTop = log.scrollHeight;\n      }\n\n      function getBotScript(intent){\n        var scripts = {\n          greet:\n            \"Hello students! Welcome to IELTS Writing practice. Here is the best way to study: First, read the task carefully. Second, spend a few minutes planning. Third, write using a clear structure. Finally, proofread for grammar and spelling. Click Task 1 or Task 2 for step-by-step guidance.\",\n          task1:\n            \"Task 1: Use 4 paragraphs. Paragraph 1: paraphrase the question. Paragraph 2: write an overview with the main trends and comparisons, but no numbers. Paragraph 3 and 4: group key data and compare, using only important numbers. Avoid opinions and reasons. Focus on comparisons, not listing everything.\",\n          task2:\n            \"Task 2: Choose a clear position in the introduction. Use 2 strong body paragraphs. Each body paragraph should have a topic sentence, explanation, and one specific example. Use linking words naturally. Finish with a short conclusion that restates your position. Strong ideas plus examples are more important than fancy vocabulary.\",\n          time:\n            \"Time plan: Task 1 equals 3 minutes plan, 14 minutes write, 3 minutes check. Task 2 equals 5 minutes plan, 30 minutes write, 5 minutes check. In the final check, fix verb tense, subject verb agreement, articles like a and the, plural s, punctuation, and spelling.\",\n          band7:\n            \"Band 7 tips: Make your overview very clear in Task 1. In Task 2, develop ideas deeply with examples. Use accurate grammar with a mix of simple and complex sentences. Keep paragraphs focused. Use vocabulary precisely, not overly complicated. And always proofread.\"\n        };\n        return scripts[intent] || scripts.greet;\n      }\n\n      function safeCancelSpeech(){\n        try{\n          if(window.speechSynthesis) window.speechSynthesis.cancel();\n        }catch(e){}\n      }\n\n      function pickVoice(){\n        if(!window.speechSynthesis) return null;\n        var voices = window.speechSynthesis.getVoices() || [];\n        var wanted = voiceSelect && voiceSelect.value ? voiceSelect.value : \"\";\n        if(wanted){\n          for(var i=0;i<voices.length;i++){\n            if(voices[i].name === wanted) return voices[i];\n          }\n        }\n        \/\/ Auto: prefer English voice if available\n        for(var j=0;j<voices.length;j++){\n          if((voices[j].lang || \"\").toLowerCase().indexOf(\"en\") === 0) return voices[j];\n        }\n        return voices[0] || null;\n      }\n\n      function speak(text){\n        if(!voiceEnabled) return;\n        if(!hasUserGesture) return; \/\/ browser policy: require user interaction\n        if(!window.speechSynthesis || !window.SpeechSynthesisUtterance) return;\n\n        safeCancelSpeech();\n\n        var u = new SpeechSynthesisUtterance(text);\n        var v = pickVoice();\n        if(v) u.voice = v;\n\n        \/\/ comfortable classroom voice\n        u.rate = 1.0;\n        u.pitch = 1.0;\n        u.volume = 1.0;\n\n        window.speechSynthesis.speak(u);\n      }\n\n      function populateVoices(){\n        if(!window.speechSynthesis) return;\n\n        var voices = window.speechSynthesis.getVoices() || [];\n        \/\/ clear old\n        while(voiceSelect.options.length > 1) voiceSelect.remove(1);\n\n        for(var i=0;i<voices.length;i++){\n          var opt = document.createElement(\"option\");\n          opt.value = voices[i].name;\n          opt.textContent = voices[i].name + \" (\" + voices[i].lang + \")\";\n          voiceSelect.appendChild(opt);\n        }\n      }\n\n      function bot(intent){\n        var text = getBotScript(intent);\n        lastBotText = text;\n        addMsg(text, \"bot\");\n        speak(text);\n      }\n\n      \/\/ Open\/close\n      function openCoach(){\n        panel.classList.add(\"is-open\");\n        panel.setAttribute(\"aria-hidden\",\"false\");\n        \/\/ first message once per open if empty\n        if(!log.dataset.hasGreet){\n          log.dataset.hasGreet = \"1\";\n          bot(\"greet\");\n        }\n      }\n      function closeCoach(){\n        panel.classList.remove(\"is-open\");\n        panel.setAttribute(\"aria-hidden\",\"true\");\n      }\n\n      btnOpen.addEventListener(\"click\", function(){\n        hasUserGesture = true;\n        openCoach();\n      });\n      btnClose.addEventListener(\"click\", function(){\n        hasUserGesture = true;\n        closeCoach();\n      });\n\n      \/\/ Voice controls\n      btnStartVoice.addEventListener(\"click\", function(){\n        hasUserGesture = true;\n        \/\/ trigger voice loading + optional warm-up speak\n        populateVoices();\n        voiceEnabled = true;\n        btnToggleVoice.textContent = \"Voice: On\";\n        btnToggleVoice.setAttribute(\"aria-pressed\",\"true\");\n        addMsg(\"Voice is ready. Click a quick button like \u201cHow to do Task 1\u201d to hear guidance.\", \"bot\");\n        speak(\"Voice is ready. Click a quick button like How to do Task 1 to hear guidance.\");\n      });\n\n      btnToggleVoice.addEventListener(\"click\", function(){\n        hasUserGesture = true;\n        voiceEnabled = !voiceEnabled;\n        btnToggleVoice.textContent = voiceEnabled ? \"Voice: On\" : \"Voice: Off\";\n        btnToggleVoice.setAttribute(\"aria-pressed\", voiceEnabled ? \"true\" : \"false\");\n        if(!voiceEnabled) safeCancelSpeech();\n      });\n\n      btnReplay.addEventListener(\"click\", function(){\n        hasUserGesture = true;\n        if(lastBotText){\n          addMsg(\"Replaying the last advice.\", \"bot\");\n          speak(\"Replaying the last advice.\");\n          speak(lastBotText);\n        }else{\n          bot(\"greet\");\n        }\n      });\n\n      \/\/ Quick intents\n      root.addEventListener(\"click\", function(e){\n        var t = e.target;\n        if(!t || !t.classList) return;\n        if(t.classList.contains(\"icte-pill\")){\n          hasUserGesture = true;\n          var intent = t.getAttribute(\"data-intent\") || \"greet\";\n          addMsg(\"Student: \" + t.textContent, \"user\");\n          bot(intent);\n        }\n      });\n\n      \/\/ Voices load on some browsers async\n      if(window.speechSynthesis){\n        populateVoices();\n        window.speechSynthesis.onvoiceschanged = function(){\n          populateVoices();\n        };\n      }\nvar bigListenBtn = document.getElementById(\"icteListenStrategies\");\nif(bigListenBtn){\n  bigListenBtn.addEventListener(\"click\", function(){\n    hasUserGesture = true;\n    openCoach();\n    \/\/ start voice\n    populateVoices();\n    voiceEnabled = true;\n    btnToggleVoice.textContent = \"Voice: On\";\n    btnToggleVoice.setAttribute(\"aria-pressed\",\"true\");\n    addMsg(\"Voice is ON. Choose a strategy button below to listen.\", \"bot\");\n    speak(\"Voice is on. Choose a strategy button below to listen.\");\n  });\n}\n\n    })();\n  <\/script>\n\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Writing Test 1 Test 2 Test 3 Test 4 Listening Reading Speaking IELTS Writing Overview + Coach IELTS Writing Practice<\/p>\n","protected":false},"author":1,"featured_media":671,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","footnotes":""},"categories":[25,27,34],"tags":[],"class_list":["post-673","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ielts","category-test-1","category-writing"],"_links":{"self":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/673","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=673"}],"version-history":[{"count":4,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/673\/revisions"}],"predecessor-version":[{"id":697,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/673\/revisions\/697"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/media\/671"}],"wp:attachment":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/media?parent=673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/categories?post=673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/tags?post=673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}