{"id":464,"date":"2026-01-06T03:10:29","date_gmt":"2026-01-06T03:10:29","guid":{"rendered":"https:\/\/i-cte.org\/robot\/?p=464"},"modified":"2026-01-06T15:28:25","modified_gmt":"2026-01-06T15:28:25","slug":"ielts-listening-section-2","status":"publish","type":"post","link":"https:\/\/i-cte.org\/robot\/ielts-listening-section-2\/","title":{"rendered":"IELTs &#8211; Listening &#8211; Section 2"},"content":{"rendered":"\n<div id=\"icte-listening-s2\">\n\n  <!-- Top green menu bar -->\n  <div class=\"icte-menu\">\n<a href=\"https:\/\/i-cte.org\/robot\/ielts-listening-overview\/\">Overview<\/a>\n      <a href=\"https:\/\/i-cte.org\/robot\/ielts-listening-section-1\/\">Section 1<\/a>\n      <a href=\"https:\/\/i-cte.org\/robot\/ielts-listening-section-2\/\">Section 2<\/a>\n      <a href=\"https:\/\/i-cte.org\/robot\/ielts-listening-section-3\/\">Section 3<\/a>\n      <a href=\"https:\/\/i-cte.org\/robot\/ielts-listening-section-4\/\">Section 4<\/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      <a href=\"https:\/\/i-cte.org\/robot\/ielts-writing-overview\/\">Writing<\/a>\n  <\/div>\n\n  <section class=\"icte-ielts\" aria-label=\"IELTS Listening Section 2 - Kitchen Assistant Orientation\">\n    <header class=\"icte-ielts__intro\">\n      <h2 class=\"icte-ielts__title\">IELTS Listening \u2013 Section 2 (Questions 11\u201320): Kitchen Assistant Orientation<\/h2>\n      <p class=\"icte-ielts__sub\">\n        Answer Questions <strong>11\u201320<\/strong>. Use the buttons to play the talk, check answers, or show answers.\n      <\/p>\n    <\/header>\n\n    <!-- Transcript (hidden by default) -->\n    <section class=\"icte-ielts__panel\" aria-label=\"Transcript\">\n      <div class=\"icte-ielts__panelHead\">\n        <h3 class=\"icte-ielts__h3\">Transcript (for practice)<\/h3>\n        <div class=\"icte-ielts__headRight\">\n          <button class=\"icte-btn icte-btn--dark\" type=\"button\" data-action=\"toggle-transcript\">Show Transcript<\/button>\n          <span class=\"icte-loader\" data-el=\"synthesis-loader\" aria-hidden=\"true\"><\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"icte-ielts__reading\" data-el=\"transcript-area\" role=\"region\" aria-label=\"Transcript text\" style=\"display:none;\"><\/div>\n\n      <div class=\"icte-ielts__btnRow icte-ielts__btnRow--tight\">\n        <button class=\"icte-btn icte-btn--info\" type=\"button\" data-action=\"play-talk\">\ud83d\udd0a Listen to the Talk<\/button>\n        <button class=\"icte-btn icte-btn--danger\" type=\"button\" data-action=\"stop-audio\">\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\" style=\"align-items:flex-start;\">\n        <div class=\"icte-ielts__control\" style=\"flex:1; min-width:240px;\">\n          <label><strong>Joy Parkins Voice<\/strong><\/label>\n          <select data-el=\"voice-joy\" aria-label=\"Select Joy Parkins Voice\">\n            <option value=\"\">Loading voices&#8230;<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"icte-ielts__control\" style=\"flex:1; min-width:240px;\">\n          <label><strong>Narrator Voice<\/strong><\/label>\n          <select data-el=\"voice-narrator\" aria-label=\"Select Narrator Voice\">\n            <option value=\"\">Loading voices&#8230;<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"icte-ielts__score\" data-el=\"scoreBox\" aria-live=\"polite\"><\/div>\n      <\/div>\n\n      <div class=\"icte-ielts__btnGrid\" aria-label=\"Action buttons\">\n        <button class=\"icte-btn icte-btn--info\" type=\"button\" data-action=\"play-instructions\">\ud83d\udd0a Read Instructions<\/button>\n        <button class=\"icte-btn icte-btn--info\" type=\"button\" data-action=\"read-questions\">\ud83d\udd0a Read Questions<\/button>\n        <button class=\"icte-btn icte-btn--primary\" type=\"button\" data-action=\"check\">Check Answers<\/button>\n        <button class=\"icte-btn icte-btn--dark\" type=\"button\" data-action=\"show\">\ud83d\udc40 Show Answers<\/button>\n        <button class=\"icte-btn icte-btn--dark\" type=\"button\" data-action=\"summary\">\ud83e\udde0 Summary<\/button>\n        <button class=\"icte-btn icte-btn--dark\" type=\"button\" data-action=\"main-ideas\">\ud83d\udccc Main ideas<\/button>\n        <button class=\"icte-btn icte-btn--ghost\" type=\"button\" data-action=\"reset\">Reset<\/button>\n      <\/div>\n    <\/section>\n\n    <!-- Support -->\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 class=\"icte-btn icte-btn--ghost\" type=\"button\" data-action=\"clear-support\">Clear<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"icte-ielts__helper\" data-el=\"helper-area\" 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 11 to 20\">\n      <div class=\"icte-ielts__panelHead\">\n        <h3 class=\"icte-ielts__h3\">Section 2 \u2013 Questions 11\u201320<\/h3>\n      <\/div>\n\n      <div class=\"icte-ielts__qArea\">\n\n        <!-- Q11-14 -->\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">Questions 11\u201314<\/div>\n          <div style=\"opacity:.9; line-height:1.65;\">Choose the correct letter, <strong>A<\/strong>, <strong>B<\/strong>, or <strong>C<\/strong>.<\/div>\n        <\/div>\n\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">11. According to the manager, what do most people like about the job of kitchen assistant?<\/div>\n          <div class=\"icte-q__controls icte-opts\" data-q=\"11\">\n            <label><input type=\"radio\" name=\"q11\" value=\"A\"> A. the variety of work<\/label>\n            <label><input type=\"radio\" name=\"q11\" value=\"B\"> B. the friendly atmosphere<\/label>\n            <label><input type=\"radio\" name=\"q11\" value=\"C\"> C. the opportunities for promotion<\/label>\n          <\/div>\n          <div class=\"icte-q__fb\" data-fb=\"11\"><\/div>\n        <\/div>\n\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">12. The manager is concerned about some of the new staff\u2019s<\/div>\n          <div class=\"icte-q__controls icte-opts\" data-q=\"12\">\n            <label><input type=\"radio\" name=\"q12\" value=\"A\"> A. jewellery<\/label>\n            <label><input type=\"radio\" name=\"q12\" value=\"B\"> B. hair styles<\/label>\n            <label><input type=\"radio\" name=\"q12\" value=\"C\"> C. shoes<\/label>\n          <\/div>\n          <div class=\"icte-q__fb\" data-fb=\"12\"><\/div>\n        <\/div>\n\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">13. The manager says that the day is likely to be busy for kitchen staff because<\/div>\n          <div class=\"icte-q__controls icte-opts\" data-q=\"13\">\n            <label><input type=\"radio\" name=\"q13\" value=\"A\"> A. it is a public holiday.<\/label>\n            <label><input type=\"radio\" name=\"q13\" value=\"B\"> B. the head chef is absent.<\/label>\n            <label><input type=\"radio\" name=\"q13\" value=\"C\"> C. the restaurant is almost fully booked.<\/label>\n          <\/div>\n          <div class=\"icte-q__fb\" data-fb=\"13\"><\/div>\n        <\/div>\n\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">14. Only kitchen staff who are 18 or older are allowed to use<\/div>\n          <div class=\"icte-q__controls icte-opts\" data-q=\"14\">\n            <label><input type=\"radio\" name=\"q14\" value=\"A\"> A. the waste disposal unit.<\/label>\n            <label><input type=\"radio\" name=\"q14\" value=\"B\"> B. the electric mixer.<\/label>\n            <label><input type=\"radio\" name=\"q14\" value=\"C\"> C. the meat slicer.<\/label>\n          <\/div>\n          <div class=\"icte-q__fb\" data-fb=\"14\"><\/div>\n        <\/div>\n\n        <!-- Q15-16 -->\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">Questions 15 and 16<\/div>\n          <div style=\"opacity:.9; line-height:1.65;\">\n            Choose <strong>TWO<\/strong> letters, <strong>A\u2013E<\/strong>.<br>\n            According to the manager, which <strong>TWO<\/strong> things can make the job of kitchen assistant stressful?\n          <\/div>\n\n          <div class=\"icte-q__controls icte-opts\" data-q=\"15-16\">\n            <label><input type=\"checkbox\" value=\"A\" data-chk=\"1516\"> A. They have to follow orders immediately.<\/label>\n            <label><input type=\"checkbox\" value=\"B\" data-chk=\"1516\"> B. The kitchen gets very hot.<\/label>\n            <label><input type=\"checkbox\" value=\"C\" data-chk=\"1516\"> C. They may not be able to take a break.<\/label>\n            <label><input type=\"checkbox\" value=\"D\" data-chk=\"1516\"> D. They have to do overtime.<\/label>\n            <label><input type=\"checkbox\" value=\"E\" data-chk=\"1516\"> E. The work is physically demanding.<\/label>\n          <\/div>\n\n          <div class=\"icte-q__fb\" data-fb=\"15\"><\/div>\n          <div class=\"icte-q__fb\" data-fb=\"16\"><\/div>\n        <\/div>\n\n        <!-- Q17-20 -->\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">Questions 17\u201320<\/div>\n          <div style=\"opacity:.9; line-height:1.65;\">\n            What is the responsibility of each of the following restaurant staff?<br>\n            Choose <strong>FOUR<\/strong> answers from the box and write the correct letter, <strong>A\u2013F<\/strong>, next to Questions 17\u201320.\n          <\/div>\n\n          <div class=\"icte-box\">\n            <div class=\"icte-box__title\">Responsibilities<\/div>\n            <ul class=\"icte-box__list\">\n              <li><strong>A<\/strong>. training courses<\/li>\n              <li><strong>B<\/strong>. food stocks<\/li>\n              <li><strong>C<\/strong>. first aid<\/li>\n              <li><strong>D<\/strong>. breakages<\/li>\n              <li><strong>E<\/strong>. staff discounts<\/li>\n              <li><strong>F<\/strong>. timetables<\/li>\n            <\/ul>\n          <\/div>\n        <\/div>\n\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">17. Joy Parkins<\/div>\n          <div class=\"icte-q__controls\">\n            <select data-qsel=\"17\">\n              <option value=\"\">Choose\u2026<\/option>\n              <option value=\"A\">A<\/option><option value=\"B\">B<\/option><option value=\"C\">C<\/option>\n              <option value=\"D\">D<\/option><option value=\"E\">E<\/option><option value=\"F\">F<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"icte-q__fb\" data-fb=\"17\"><\/div>\n        <\/div>\n\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">18. David Field<\/div>\n          <div class=\"icte-q__controls\">\n            <select data-qsel=\"18\">\n              <option value=\"\">Choose\u2026<\/option>\n              <option value=\"A\">A<\/option><option value=\"B\">B<\/option><option value=\"C\">C<\/option>\n              <option value=\"D\">D<\/option><option value=\"E\">E<\/option><option value=\"F\">F<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"icte-q__fb\" data-fb=\"18\"><\/div>\n        <\/div>\n\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">19. Dexter Wills<\/div>\n          <div class=\"icte-q__controls\">\n            <select data-qsel=\"19\">\n              <option value=\"\">Choose\u2026<\/option>\n              <option value=\"A\">A<\/option><option value=\"B\">B<\/option><option value=\"C\">C<\/option>\n              <option value=\"D\">D<\/option><option value=\"E\">E<\/option><option value=\"F\">F<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"icte-q__fb\" data-fb=\"19\"><\/div>\n        <\/div>\n\n        <div class=\"icte-q\">\n          <div class=\"icte-q__label\">20. Mike Smith<\/div>\n          <div class=\"icte-q__controls\">\n            <select data-qsel=\"20\">\n              <option value=\"\">Choose\u2026<\/option>\n              <option value=\"A\">A<\/option><option value=\"B\">B<\/option><option value=\"C\">C<\/option>\n              <option value=\"D\">D<\/option><option value=\"E\">E<\/option><option value=\"F\">F<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"icte-q__fb\" data-fb=\"20\"><\/div>\n        <\/div>\n\n      <\/div>\n    <\/section>\n\n    <style>\n      \/* Menu *\/\n      #icte-listening-s2 .icte-menu{\n        width:100%; max-width:100%; box-sizing:border-box;\n        display:flex; flex-wrap:wrap; gap:.5rem; justify-content:center; align-items:center;\n        padding:.75rem .9rem; margin:0 0 1rem 0;\n        background:#16a34a; border-radius:14px; box-shadow:0 2px 8px rgba(0,0,0,.10);\n      }\n      #icte-listening-s2 .icte-menu a{\n        display:inline-block; text-decoration:none; font-weight:900; font-size:.95rem; color:#fff;\n        padding:.55rem .85rem; border-radius:999px; border:1px solid rgba(255,255,255,.35);\n        background:rgba(255,255,255,.12);\n      }\n      #icte-listening-s2 .icte-menu a.is-current{ background:#fff; color:#16a34a; border-color:#fff; }\n      @media (max-width:600px){\n        #icte-listening-s2 .icte-menu{ justify-content:flex-start; }\n        #icte-listening-s2 .icte-menu a{ width:100%; text-align:center; }\n      }\n\n      \/* Shared styling *\/\n      #icte-listening-s2 .icte-ielts{ width:100%; margin:1rem 0; }\n      #icte-listening-s2 .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-listening-s2 .icte-ielts__title{ margin:0 0 .35rem; font-size:1.2rem; font-weight:900; }\n      #icte-listening-s2 .icte-ielts__sub{ margin:0; opacity:.85; }\n\n      #icte-listening-s2 .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-listening-s2 .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-listening-s2 .icte-ielts__h3{ margin:0; font-size:1.03rem; font-weight:900; }\n      #icte-listening-s2 .icte-ielts__headRight{ display:flex; gap:.55rem; align-items:center; }\n\n      #icte-listening-s2 .icte-ielts__reading{\n        padding:.95rem 1rem 1.05rem; line-height:1.75; max-height:420px; overflow:auto;\n        white-space:pre-wrap;\n      }\n\n      #icte-listening-s2 .icte-ielts__row{\n        display:flex; justify-content:space-between; gap:.75rem;\n        padding:.85rem 1rem .25rem;\n      }\n      #icte-listening-s2 .icte-ielts__control label{ display:block; margin-bottom:.35rem; }\n      #icte-listening-s2 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-listening-s2 .icte-ielts__score{\n        font-weight:900; font-size:.95rem; opacity:.9; white-space:nowrap;\n        margin-top:.25rem;\n      }\n\n      #icte-listening-s2 .icte-ielts__btnRow{\n        padding:.75rem 1rem 1rem; display:flex; gap:.6rem; flex-wrap:wrap; align-items:center;\n      }\n      #icte-listening-s2 .icte-ielts__btnRow--tight{ padding-top:0; }\n      #icte-listening-s2 .icte-ielts__btnGrid{\n        padding:.75rem 1rem 1rem;\n        display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap:.6rem;\n      }\n\n      #icte-listening-s2 .icte-link{\n        font-weight:900; text-decoration:none; border:1px solid rgba(0,0,0,.14);\n        border-radius:12px; padding:.55rem .75rem; color:inherit; background:rgba(255,255,255,.6);\n      }\n\n      #icte-listening-s2 .icte-ielts__qArea{ padding:.9rem 1rem 1rem; }\n      #icte-listening-s2 .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-listening-s2 .icte-q__label{ font-weight:900; display:block; margin-bottom:.4rem; }\n\n      #icte-listening-s2 .icte-q__fb{ margin-top:.35rem; font-size:.95rem; font-weight:800; }\n\n      #icte-listening-s2 .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-listening-s2 .icte-btn--primary{ background:#16a34a; color:#fff; }\n      #icte-listening-s2 .icte-btn--info{ background:#0ea5e9; color:#fff; }\n      #icte-listening-s2 .icte-btn--danger{ background:#dc2626; color:#fff; }\n      #icte-listening-s2 .icte-btn--dark{ background:#334155; color:#fff; }\n      #icte-listening-s2 .icte-btn--ghost{ background:transparent; border-color:rgba(0,0,0,.20); color:inherit; }\n\n      #icte-listening-s2 .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      \/* Options *\/\n      #icte-listening-s2 .icte-opts{\n        display:flex; flex-direction:column; gap:.35rem;\n      }\n      #icte-listening-s2 .icte-opts label{\n        display:flex; gap:.55rem; align-items:flex-start;\n        padding:.25rem .35rem; border-radius:10px;\n      }\n      #icte-listening-s2 .icte-opts input{ margin-top:.25rem; }\n\n      \/* Box *\/\n      #icte-listening-s2 .icte-box{\n        margin-top:.75rem;\n        border:1px solid rgba(0,0,0,.12);\n        border-radius:12px;\n        background:rgba(255,255,255,.7);\n        padding:.65rem .8rem;\n      }\n      #icte-listening-s2 .icte-box__title{\n        font-weight:1000; margin-bottom:.35rem;\n      }\n      #icte-listening-s2 .icte-box__list{\n        margin:.35rem 0 0 1.1rem;\n      }\n      #icte-listening-s2 .icte-box__list li{ margin:.25rem 0; }\n\n      \/* Support *\/\n      #icte-listening-s2 .icte-ielts__helper{\n        padding:.95rem 1rem 1.05rem; line-height:1.7; overflow-wrap:anywhere; word-break:break-word;\n      }\n      #icte-listening-s2 .icte-ielts__helper ul{ margin:.4rem 0 0 1.1rem; }\n      #icte-listening-s2 .icte-ielts__helper li{ margin:.35rem 0; }\n      #icte-listening-s2 .icte-ielts__helper .tag{\n        display:inline-block; padding:.15rem .5rem; border-radius:999px;\n        border:1px solid rgba(0,0,0,.12); background:rgba(255,255,255,.7);\n        font-weight:900; font-size:.85rem; margin-right:.4rem;\n      }\n\n      @media (max-width: 900px){\n        #icte-listening-s2 .icte-ielts__btnGrid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }\n      }\n      @media (max-width: 600px){\n        #icte-listening-s2 .icte-ielts__row{ flex-direction:column; align-items:stretch; }\n        #icte-listening-s2 .icte-ielts__btnGrid{ grid-template-columns: 1fr; }\n      }\n    <\/style>\n\n    <script>\n      (function(){\n        const root = document.getElementById(\"icte-listening-s2\");\n        if (!root) return;\n\n        \/\/ ===== Transcript (Joy Parkins \u2013 single speaker) =====\n        const transcript = [\n          \"Good morning everyone. My name's Joy Parkins and I'm the restaurant manager.\",\n          \"And I understand that none of you've had any previous experience as kitchen assistants? Well, you might be feeling a bit nervous now, but most of our kitchen assistants say they enjoy the work.\",\n          \"OK, they might get shouted at sometimes, but it's nothing personal, and they're pleased that they have so many different things to do, which means they never get bored.\",\n          \"And I'll tell you straightaway that if you do well, we might think about moving you up and giving you some more responsibility.\",\n          \"Right, well, you've all shown up on time, which is an excellent start.\",\n          \"Now I'm glad to see none of you have unsuitable footwear, so that's good\u2014you need to be careful as the floors can get very wet and slippery.\",\n          \"Those of you with long hair have got it well out of the way, but some of you'll need to remove your rings and bracelets\u2014just put them somewhere safe for today, and remember to leave them at home tomorrow, as they can be a safety hazard.\",\n          \"Now it's going to be a busy day for you all today\u2014we don't have any tables free for this evening, and only a few for lunch.\",\n          \"Fortunately we've got our Head Chef back\u2014he was away on holiday all last week which meant the other chefs had extra work.\",\n          \"Now, I'll tell you a bit more about the job in a minute but first, some general regulations.\",\n          \"For all of you, whatever your age, there's some equipment you mustn't use until you've been properly trained, like the waste disposal system for example, for health and safety reasons.\",\n          \"Then I think there are two of you here who are under 18\u2014that's Emma and Jake, isn't it? Right, so for you two, the meat slicer is out of bounds.\",\n          \"And of course none of you are allowed to use the electric mixer until you've been shown how it works.\",\n          \"Now you may have heard that this can be a stressful job, and I have to say that can be true.\",\n          \"You'll be working an eight-hour day for the first week, though you'll have the chance to do overtime after that as well if you want to.\",\n          \"But however long the hours are, you'll get a break in the middle.\",\n          \"What you will find is that you're on your feet all day long, lifting and carrying, so if you're not fit now you soon will be!\",\n          \"You'll find you don't have much chance to take it easy\u2014when someone tells you to do something you need to do it straightaway\u2014but at least we do have a very efficient air conditioning system compared with some kitchens.\",\n          \"Now let me tell you about some of the people you need to know.\",\n          \"So as I said, I'm Joy Parkins and I decide who does what during the day and how long they work for.\",\n          \"One person whose name you must remember is David Field. If you injure yourself at all, even if it's really minor, you must report to him and he'll make sure the incident is recorded and you get the appropriate treatment.\",\n          \"Then there's Dexter Wills\u2014he's the person you need to see if you smash a plate or something like that.\",\n          \"And finally, there's Mike Smith. He's the member of staff who takes care of all the stores of perishables, so if you notice we're getting low in flour or sugar or something, make sure you let him know so he can put in an order.\"\n        ].join(\"\\n\\n\");\n\n        \/\/ ===== Answers (from your answer key) =====\n        const answers = {\n          11: \"A\",\n          12: \"A\",\n          13: \"C\",\n          14: \"C\",\n          \/\/ Q15-16 are TWO letters, in either order\n          1516: [\"A\", \"E\"],\n          17: \"F\",\n          18: \"C\",\n          19: \"D\",\n          20: \"B\"\n        };\n\n        const $ = (sel) => root.querySelector(sel);\n        const $$ = (sel) => Array.from(root.querySelectorAll(sel));\n\n        function showLoader(show){\n          const el = $('[data-el=\"synthesis-loader\"]');\n          if (el) el.style.display = show ? \"inline-block\" : \"none\";\n        }\n\n        \/\/ ===== Speech synthesis (robust Stop) =====\n        const speechOk = (\"speechSynthesis\" in window);\n        let voicesAll = [];\n        let voiceJoy = null;\n        let voiceNarr = null;\n        let playRunId = 0;\n\n        function stopSpeaking(){\n          if (!speechOk) return;\n          playRunId++;\n          window.speechSynthesis.cancel();\n          showLoader(false);\n        }\n\n        function sayWithVoice(text, voice, opts){\n          const myRun = playRunId;\n          const options = opts || {};\n          return new Promise((resolve) => {\n            if (!speechOk) return resolve();\n\n            const u = new SpeechSynthesisUtterance(String(text || \"\"));\n            u.lang  = options.lang  || (voice && voice.lang) || \"en-US\";\n            u.rate  = (typeof options.rate === \"number\") ? options.rate : 1.0;\n            u.pitch = (typeof options.pitch === \"number\") ? options.pitch : 1.0;\n            if (voice) u.voice = voice;\n\n            let done = false;\n            const finish = () => {\n              if (done) return;\n              done = true;\n              clearInterval(timer);\n              u.onend = null;\n              u.onerror = null;\n              resolve();\n            };\n\n            u.onend = finish;\n            u.onerror = finish;\n\n            const timer = setInterval(() => {\n              if (done) return;\n              if (playRunId !== myRun) return finish();\n              const speaking = window.speechSynthesis.speaking;\n              const pending  = window.speechSynthesis.pending;\n              if (!speaking && !pending) finish();\n            }, 120);\n\n            window.speechSynthesis.speak(u);\n          });\n        }\n\n        function pickDefaults(usable){\n          const a = usable[0] || null;\n          let b = usable.find(v => v.name !== (a && a.name)) || null;\n          if (!b) b = usable[0] || null;\n          voiceJoy = a;\n          voiceNarr = b;\n        }\n\n        function populateVoiceSelects(){\n          if (!speechOk) return;\n\n          voicesAll = window.speechSynthesis.getVoices() || [];\n          const en = voicesAll.filter(v => (v.lang || \"\").toLowerCase().startsWith(\"en\"));\n          const usable = en.length ? en : voicesAll;\n\n          const selJoy = $('[data-el=\"voice-joy\"]');\n          const selNar = $('[data-el=\"voice-narrator\"]');\n          if (!selJoy || !selNar) return;\n\n          selJoy.innerHTML = \"\";\n          selNar.innerHTML = \"\";\n\n          usable.forEach((v, idx) => {\n            const o1 = document.createElement(\"option\");\n            o1.value = String(idx);\n            o1.textContent = `${v.name} (${v.lang})`;\n            selJoy.appendChild(o1);\n\n            const o2 = document.createElement(\"option\");\n            o2.value = String(idx);\n            o2.textContent = `${v.name} (${v.lang})`;\n            selNar.appendChild(o2);\n          });\n\n          pickDefaults(usable);\n\n          if (voiceJoy){\n            const idx = usable.findIndex(v => v.name === voiceJoy.name && v.lang === voiceJoy.lang);\n            if (idx >= 0) selJoy.value = String(idx);\n          }\n          if (voiceNarr){\n            const idx = usable.findIndex(v => v.name === voiceNarr.name && v.lang === voiceNarr.lang);\n            if (idx >= 0) selNar.value = String(idx);\n          }\n\n          selJoy.onchange = () => { voiceJoy = usable[Number(selJoy.value)] || usable[0] || null; };\n          selNar.onchange = () => { voiceNarr = usable[Number(selNar.value)] || usable[0] || null; };\n        }\n\n        function loadVoices(){\n          if (!speechOk) return;\n          const got = window.speechSynthesis.getVoices();\n          if (got && got.length) populateVoiceSelects();\n          else window.speechSynthesis.onvoiceschanged = populateVoiceSelects;\n        }\n\n        \/\/ ===== Helpers =====\n        function setScore(msg){\n          const box = $('[data-el=\"scoreBox\"]');\n          if (box) box.textContent = msg || \"\";\n        }\n        function setFB(q, msg, color){\n          const fb = root.querySelector(`[data-fb=\"${q}\"]`);\n          if (!fb) return;\n          fb.textContent = msg || \"\";\n          fb.style.color = color || \"#0f172a\";\n        }\n        function getRadioAnswer(q){\n          const el = root.querySelector(`input[name=\"q${q}\"]:checked`);\n          return el ? String(el.value || \"\").trim().toUpperCase() : \"\";\n        }\n        function getSelected1516(){\n          return $$('input[data-chk=\"1516\"]:checked').map(x => String(x.value || \"\").trim().toUpperCase());\n        }\n\n        \/\/ Enforce max 2 checks for Q15-16\n        function wire1516Limit(){\n          $$('input[data-chk=\"1516\"]').forEach(chk => {\n            chk.addEventListener(\"change\", () => {\n              const chosen = getSelected1516();\n              if (chosen.length > 2){\n                chk.checked = false;\n              }\n            });\n          });\n        }\n\n        \/\/ ===== Transcript toggle =====\n        function renderTranscript(){\n          const area = $('[data-el=\"transcript-area\"]');\n          if (area) area.textContent = transcript;\n        }\n\n        function toggleTranscript(){\n          const area = $('[data-el=\"transcript-area\"]');\n          const btn = root.querySelector('[data-action=\"toggle-transcript\"]');\n          if (!area || !btn) return;\n\n          const hidden = area.style.display === \"none\";\n          area.style.display = hidden ? \"block\" : \"none\";\n          btn.textContent = hidden ? \"Hide Transcript\" : \"Show Transcript\";\n          if (hidden) area.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n        }\n\n        \/\/ ===== Support (Summary\/Main ideas) =====\n        function setHelperContent(nodesBuilder){\n          const area = $('[data-el=\"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            \"Joy Parkins introduces herself as the restaurant manager and reassures new kitchen assistants that the work is varied and can lead to more responsibility.\",\n            \"She reminds staff about safety: suitable footwear, hair tied back, and removing jewellery.\",\n            \"She explains that some equipment requires training, and under-18s cannot use the meat slicer.\",\n            \"The job can be stressful because it is physically demanding and staff must follow instructions immediately.\",\n            \"She introduces key staff: Joy manages timetables, David Field handles first aid, Dexter Wills records breakages, and Mike Smith manages food stocks.\"\n          ].join(\" \");\n        }\n\n        function getMainIdeas(){\n          return [\n            { tag: \"MCQ (11\u201314)\", text: \"Listen for the manager\u2019s direct statements (e.g., what people like, what she is concerned about).\" },\n            { tag: \"Two answers (15\u201316)\", text: \"Choose exactly TWO letters. Don\u2019t choose distractors (she says they DO get a break; air conditioning is good).\" },\n            { tag: \"Matching (17\u201320)\", text: \"Focus on each person\u2019s role: who schedules work, who handles injuries, who records breakages, who orders supplies.\" },\n            { tag: \"Keywords\", text: \"Footwear, jewellery, fully booked, meat slicer, physically demanding, follow orders immediately.\" }\n          ];\n        }\n\n        async function showSummary(){\n          const s = getSummaryText();\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(\" \" + s);\n            area.appendChild(p);\n          });\n\n          if (speechOk){\n            stopSpeaking();\n            showLoader(true);\n            await sayWithVoice(\"Summary. \" + s, voiceNarr || voiceJoy || null, { lang:\"en-US\" });\n            showLoader(false);\n          }\n        }\n\n        async function showMainIdeas(){\n          const items = getMainIdeas();\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(\" Tips for answering these 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 (speechOk){\n            stopSpeaking();\n            showLoader(true);\n            const speakText = \"Main ideas. \" + items.map(i => `${i.tag}. ${i.text}`).join(\" \");\n            await sayWithVoice(speakText, voiceNarr || voiceJoy || null, { lang:\"en-US\" });\n            showLoader(false);\n          }\n        }\n\n        function clearSupport(){\n          const area = $('[data-el=\"helper-area\"]');\n          if (area) area.innerHTML = 'Click <strong>Summary<\/strong> or <strong>Main ideas<\/strong>.';\n        }\n\n        \/\/ ===== Audio buttons =====\n        async function playInstructions(){\n          if (!speechOk) return;\n          stopSpeaking();\n          showLoader(true);\n          const msg =\n            \"Listening Section 2. Questions eleven to fourteen: choose the correct letter A, B, or C. \" +\n            \"Questions fifteen and sixteen: choose two letters A to E. \" +\n            \"Questions seventeen to twenty: match each restaurant staff member with the correct responsibility A to F.\";\n          await sayWithVoice(msg, voiceNarr || voiceJoy || null, { lang:\"en-US\" });\n          showLoader(false);\n        }\n\n        async function readQuestions(){\n          if (!speechOk) return;\n          stopSpeaking();\n          showLoader(true);\n\n          const msg =\n            \"Questions eleven to fourteen. Choose the correct letter A, B, or C. \" +\n            \"Question eleven: what do most people like about the job? \" +\n            \"Question twelve: the manager is concerned about some of the new staff's what? \" +\n            \"Question thirteen: why is the day likely to be busy? \" +\n            \"Question fourteen: only staff who are eighteen or older are allowed to use what? \" +\n            \"Questions fifteen and sixteen: choose two letters A to E. Which two things can make the job stressful? \" +\n            \"Questions seventeen to twenty: match staff with responsibilities. \" +\n            \"Seventeen: Joy Parkins. Eighteen: David Field. Nineteen: Dexter Wills. Twenty: Mike Smith.\";\n          await sayWithVoice(msg, voiceNarr || voiceJoy || null, { lang:\"en-US\" });\n          showLoader(false);\n        }\n\n        async function playTalk(){\n          if (!speechOk) return;\n\n          stopSpeaking();\n          const myRun = playRunId; \/\/ after stop\n\n          \/\/ ensure voices loaded\n          if (!voiceJoy || !voiceNarr) populateVoiceSelects();\n\n          showLoader(true);\n\n          await sayWithVoice(\"Now listen to the talk.\", voiceNarr || voiceJoy || null, { lang:\"en-US\" });\n          if (playRunId !== myRun) { showLoader(false); return; }\n\n          \/\/ Speak the transcript in paragraphs (natural)\n          const parts = transcript.split(\/\\n\\s*\\n\/g).filter(Boolean);\n          for (const p of parts){\n            if (playRunId !== myRun) { showLoader(false); return; }\n            await sayWithVoice(p, voiceJoy || null, { lang:\"en-US\", rate:1.0, pitch:1.0 });\n          }\n\n          showLoader(false);\n        }\n\n        \/\/ ===== Checking =====\n        function check(){\n          \/\/ total marks: Q11-14 (4) + Q15-16 (2 marks) + Q17-20 (4) = 10\n          const total = 10;\n          let correct = 0;\n          let attempted = 0;\n\n          \/\/ clear fb\n          for (let q=11; q<=20; q++) setFB(q, \"\", \"\");\n          setFB(15, \"\", \"\");\n          setFB(16, \"\", \"\");\n\n          \/\/ Q11-14\n          [11,12,13,14].forEach(q => {\n            const user = getRadioAnswer(q);\n            if (!user){\n              setFB(q, \"Please choose A, B, or C.\", \"#8a5a00\");\n              return;\n            }\n            attempted++;\n            if (user === answers[q]){\n              correct++;\n              setFB(q, `\u2705 Correct (${answers[q]})`, \"#065f46\");\n            } else {\n              setFB(q, `\u274c Not correct. Correct answer: ${answers[q]}`, \"#991b1b\");\n            }\n          });\n\n          \/\/ Q15-16 (two answers)\n          const chosen = getSelected1516();\n          if (chosen.length === 0){\n            setFB(15, \"Please choose TWO letters (A\u2013E).\", \"#8a5a00\");\n            setFB(16, \"Please choose TWO letters (A\u2013E).\", \"#8a5a00\");\n          } else if (chosen.length !== 2){\n            setFB(15, \"\u26a0\ufe0f Choose exactly TWO letters (A\u2013E).\", \"#8a5a00\");\n            setFB(16, \"\u26a0\ufe0f Choose exactly TWO letters (A\u2013E).\", \"#8a5a00\");\n            attempted += 1; \/\/ partial attempt\n          } else {\n            attempted += 2; \/\/ treat as two questions\n            const target = answers[1516].slice().sort().join(\",\");\n            const got = chosen.slice().sort().join(\",\");\n            const targetSet = new Set(answers[1516]);\n\n            \/\/ score per correct option (max 2)\n            const score1516 = chosen.reduce((sum, c) => sum + (targetSet.has(c) ? 1 : 0), 0);\n            correct += score1516;\n\n            if (got === target){\n              setFB(15, `\u2705 Correct (${answers[1516][0]})`, \"#065f46\");\n              setFB(16, `\u2705 Correct (${answers[1516][1]})`, \"#065f46\");\n            } else {\n              setFB(15, `\u274c Not fully correct. Correct letters: ${answers[1516].join(\" and \")}`, \"#991b1b\");\n              setFB(16, `\u274c Not fully correct. Correct letters: ${answers[1516].join(\" and \")}`, \"#991b1b\");\n            }\n          }\n\n          \/\/ Q17-20\n          [17,18,19,20].forEach(q => {\n            const sel = root.querySelector(`select[data-qsel=\"${q}\"]`);\n            const user = sel ? String(sel.value || \"\").trim().toUpperCase() : \"\";\n            if (!user){\n              setFB(q, \"Please choose a letter (A\u2013F).\", \"#8a5a00\");\n              return;\n            }\n            attempted++;\n            if (user === answers[q]){\n              correct++;\n              setFB(q, `\u2705 Correct (${answers[q]})`, \"#065f46\");\n            } else {\n              setFB(q, `\u274c Not correct. Correct answer: ${answers[q]}`, \"#991b1b\");\n            }\n          });\n\n          setScore(`Score: ${correct}\/${total} (attempted: ${attempted}\/${total})`);\n\n          if (speechOk){\n            showLoader(true);\n            sayWithVoice(`Your score is ${correct} out of ${total}.`, voiceNarr || voiceJoy || null, { lang:\"en-US\" })\n              .then(() => showLoader(false));\n          }\n        }\n\n        function showAll(){\n          [11,12,13,14].forEach(q => setFB(q, `Correct answer: ${answers[q]}`, \"#0f172a\"));\n          setFB(15, `Correct letters: ${answers[1516].join(\" and \")}`, \"#0f172a\");\n          setFB(16, `Correct letters: ${answers[1516].join(\" and \")}`, \"#0f172a\");\n          [17,18,19,20].forEach(q => setFB(q, `Correct answer: ${answers[q]}`, \"#0f172a\"));\n          setScore(\"Correct answers are shown.\");\n        }\n\n        function reset(){\n          \/\/ radios\n          [11,12,13,14].forEach(q => {\n            $$(`input[name=\"q${q}\"]`).forEach(r => r.checked = false);\n            setFB(q, \"\", \"\");\n          });\n\n          \/\/ checkboxes\n          $$('input[data-chk=\"1516\"]').forEach(c => c.checked = false);\n          setFB(15, \"\", \"\");\n          setFB(16, \"\", \"\");\n\n          \/\/ selects\n          [17,18,19,20].forEach(q => {\n            const sel = root.querySelector(`select[data-qsel=\"${q}\"]`);\n            if (sel) sel.value = \"\";\n            setFB(q, \"\", \"\");\n          });\n\n          setScore(\"\");\n          clearSupport();\n          stopSpeaking();\n        }\n\n        function markCurrentMenu(){\n          const here = (location.href || \"\").replace(\/\\\/$\/, \"\");\n          root.querySelectorAll(\".icte-menu a\").forEach(a => {\n            const href = (a.href || \"\").replace(\/\\\/$\/, \"\");\n            if (href && (here === href || here.startsWith(href + \"\/\"))) a.classList.add(\"is-current\");\n          });\n        }\n\n        function wire(){\n          const bind = (action, fn) => {\n            const el = root.querySelector(`[data-action=\"${action}\"]`);\n            if (el) el.addEventListener(\"click\", fn);\n          };\n\n          bind(\"toggle-transcript\", toggleTranscript);\n          bind(\"play-talk\", playTalk);\n          bind(\"stop-audio\", stopSpeaking);\n          bind(\"play-instructions\", playInstructions);\n          bind(\"read-questions\", readQuestions);\n\n          bind(\"check\", check);\n          bind(\"show\", showAll);\n          bind(\"reset\", reset);\n\n          bind(\"summary\", showSummary);\n          bind(\"main-ideas\", showMainIdeas);\n          bind(\"clear-support\", clearSupport);\n\n          wire1516Limit();\n        }\n\n        function init(){\n          renderTranscript();\n          loadVoices();\n          wire();\n          markCurrentMenu();\n          clearSupport();\n        }\n\n        if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", init);\n        else init();\n\n      })();\n    <\/script>\n\n  <\/section>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Overview Section 1 Section 2 Section 3 Section 4 Reading Speaking Writing IELTS Listening \u2013 Section 2 (Questions 11\u201320): Kitchen<\/p>\n","protected":false},"author":1,"featured_media":172,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","footnotes":""},"categories":[25,28,27],"tags":[],"class_list":["post-464","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ielts","category-listening","category-test-1"],"_links":{"self":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/464","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=464"}],"version-history":[{"count":2,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/464\/revisions"}],"predecessor-version":[{"id":492,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/posts\/464\/revisions\/492"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/media\/172"}],"wp:attachment":[{"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/media?parent=464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/categories?post=464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i-cte.org\/robot\/wp-json\/wp\/v2\/tags?post=464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}