Leesvaardigheid A2 - 100 Reading Exams :root{--bg:#f5f7fb;--card:#fff;--text:#111827;--muted:#64748b;--line:#e2e8f0;--blue:#2563eb;--blue2:#eff6ff;--dark:#0f172a;--green:#059669;--red:#dc2626;--amber:#d97706;--soft:#f8fafc;--shadow:0 18px 45px rgba(15,23,42,.08)} *{box-sizing:border-box} body{margin:0;font-family:Arial,"Tahoma",sans-serif;background:var(--bg);color:var(--text)} button,input{font-family:inherit}.hidden{display:none!important}.rtl{direction:rtl;text-align:right}.ltr{direction:ltr;text-align:left} .topbar{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)} .top-inner{max-width:1180px;margin:auto;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px}.logo{width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,#1d4ed8,#60a5fa);display:grid;place-items:center;color:#fff;font-weight:900;font-size:22px}.brand h1{margin:0;font-size:24px}.brand p{margin:3px 0 0;color:var(--muted);font-size:14px}.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#fff;color:#334155;border-radius:14px;padding:10px 14px;font-weight:800;cursor:pointer;transition:.15s;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:hover{transform:translateY(-1px);box-shadow:0 10px 18px rgba(15,23,42,.08)}.btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.btn.dark{background:var(--dark);color:#fff;border-color:var(--dark)}.btn.danger{background:#fff1f2;color:#be123c;border-color:#fecdd3}.btn.green{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.timer{font-weight:900;color:#be123c;background:#fff1f2;border:1px solid #fecdd3;border-radius:14px;padding:10px 14px} .qbar-wrap{position:sticky;top:73px;z-index:40;background:#eef4ff;border-bottom:1px solid #dbeafe;padding:9px 10px}.qbar{max-width:1180px;margin:auto;display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.qnum{min-width:42px;height:38px;border-radius:12px;border:1px solid #d4dbe8;background:#fff;color:#334155;font-weight:900;cursor:pointer}.qnum.active{background:var(--blue);border-color:var(--blue);color:#fff}.qnum.answered{box-shadow:inset 0 -4px 0 #22c55e}.container{max-width:1180px;margin:auto;padding:28px 18px}.hero{background:linear-gradient(135deg,#172554,#2563eb);color:#fff;border-radius:26px;padding:28px;box-shadow:var(--shadow);margin-bottom:20px}.hero h2{margin:0 0 10px;font-size:30px}.hero p{max-width:900px;margin:0;line-height:1.75;color:#dbeafe}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.stat{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px;box-shadow:0 5px 20px rgba(15,23,42,.04)}.stat b{display:block;font-size:26px;color:var(--blue)}.stat span{font-size:13px;color:var(--muted);font-weight:700}.toolbar{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}.search{flex:1;min-width:220px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;font-size:15px;outline:none}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.exam-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}.badges{display:flex;gap:8px;flex-wrap:wrap}.badge{font-size:12px;font-weight:900;border-radius:999px;padding:7px 10px}.badge.blue{background:var(--blue2);color:#1d4ed8}.badge.green{background:#ecfdf5;color:#047857}.badge.amber{background:#fffbeb;color:#b45309}.exam-card h3{margin:0;font-size:19px}.small{font-size:13px;color:var(--muted);font-weight:700}.progress{height:9px;background:#e5eaf3;border-radius:99px;overflow:hidden}.progress i{display:block;height:100%;background:linear-gradient(90deg,#2563eb,#22c55e)} .exam-layout{max-width:980px;margin:auto;padding:28px 18px}.exam-head{background:#fff;border:1px solid var(--line);border-radius:24px 24px 0 0;padding:22px 26px;display:flex;justify-content:space-between;gap:12px;align-items:center}.exam-head h2{margin:5px 0 0;font-size:17px;color:var(--muted)}.exam-head h3{margin:0;font-size:28px}.panel{background:#fff;border:1px solid var(--line);border-top:0;border-radius:0 0 24px 24px;box-shadow:var(--shadow)}.panel-body{padding:26px}.section-title{font-size:14px;text-transform:uppercase;letter-spacing:.05em;font-weight:900;color:#047857;margin-bottom:8px}.reading-text{background:#f8fafc;border-left:5px solid var(--blue);border-radius:16px;padding:18px;line-height:1.8;font-size:18px}.translation{margin-top:12px;border:1px solid #fed7aa;background:#fff7ed;color:#7c2d12;border-radius:14px;padding:13px;line-height:1.8;font-size:16px}.translation.en{background:#eff6ff;color:#1e3a8a;border-color:#bfdbfe}.question-box{margin-top:20px;border-top:1px solid var(--line);padding-top:18px}.question-text{font-size:21px;font-weight:900;margin-bottom:10px}.options{display:grid;gap:10px;margin-top:16px}.option{display:flex;gap:12px;border:1px solid var(--line);border-radius:16px;padding:14px;cursor:pointer;background:#fff;transition:.15s}.option:hover{border-color:#93c5fd;background:#f8fbff}.option.selected{border-color:#2563eb;background:#eff6ff}.option.correct{border-color:#16a34a;background:#ecfdf5}.option.wrong{border-color:#dc2626;background:#fef2f2}.option input{margin-top:4px}.option-main{font-size:16px;font-weight:800}.option-sub{font-size:14px;color:var(--muted);margin-top:4px;line-height:1.5}.nav-row{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:18px}.model{margin-top:16px;background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:16px;line-height:1.7}.model h4{margin:0 0 8px;color:#047857}.result-card{text-align:center;background:#fff;border:1px solid var(--line);border-radius:24px;padding:34px;box-shadow:var(--shadow)}.score{font-size:52px;font-weight:900;color:var(--blue);margin:16px 0}.footer-note{text-align:center;color:var(--muted);font-size:13px;margin:24px 0} @media(max-width:900px){.grid{grid-template-columns:repeat(2,1fr)}.stats{grid-template-columns:repeat(2,1fr)}.brand h1{font-size:20px}.qbar-wrap{top:96px}.exam-head{align-items:flex-start;flex-direction:column}.exam-head h3{font-size:24px}} @media(max-width:560px){.grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr}.top-inner{align-items:flex-start}.top-actions{width:100%}.btn,.timer{padding:9px 11px;font-size:14px}.qbar-wrap{top:142px}.container,.exam-layout{padding:16px 12px}.panel-body{padding:18px}.hero{padding:22px}.hero h2{font-size:24px}.reading-text{font-size:16px}.question-text{font-size:18px}} 📖Leesvaardigheid A2Reading Exam List⌂ الصفحة الرئيسيةالعربيةEnglishNederlands40:00 var TOTAL_EXAMS=100; var QUESTIONS_PER_EXAM=20; var TEMPLATES = [{"category": "Gemeente", "title": "Afval ophalen", "titleAr": "جمع النفايات", "titleEn": "Waste collection", "passage": "Bericht van de gemeente {city}: Deze week wordt het restafval niet op {oldDay} opgehaald door werkzaamheden in de straat. Zet uw container op {newDay} vóór {time} uur buiten. Papier wordt wel volgens de normale planning opgehaald.", "passageAr": "رسالة من بلدية {city}: هذا الأسبوع لن يتم جمع النفايات العادية يوم {oldDay} بسبب أعمال في الشارع. ضع الحاوية خارج المنزل يوم {newDay} قبل الساعة {time}. أما الورق فسيتم جمعه حسب الجدول المعتاد.", "passageEn": "Message from the municipality of {city}: This week residual waste will not be collected on {oldDay} because of road works. Put your bin outside on {newDay} before {time}. Paper will be collected according to the normal schedule.", "question": "Wanneer moet de container buiten staan?", "questionAr": "متى يجب وضع الحاوية خارج المنزل؟", "questionEn": "When should the bin be outside?", "options": ["Op {oldDay} na 12.00 uur.", "Op {newDay} vóór {time} uur.", "Elke dag van deze week.", "Alleen volgende maand."], "optionsAr": ["يوم {oldDay} بعد الساعة 12:00.", "يوم {newDay} قبل الساعة {time}.", "كل يوم هذا الأسبوع.", "فقط في الشهر القادم."], "optionsEn": ["On {oldDay} after 12:00.", "On {newDay} before {time}.", "Every day this week.", "Only next month."], "correct": 1, "explanation": "In de tekst staat dat de container op {newDay} vóór {time} uur buiten moet staan.", "explanationAr": "ورد في النص أن الحاوية يجب أن تكون خارج المنزل يوم {newDay} قبل الساعة {time}.", "explanationEn": "The text says the bin must be outside on {newDay} before {time}."}, {"category": "Gezondheid", "title": "Afspraakbevestiging", "titleAr": "تأكيد موعد", "titleEn": "Appointment confirmation", "passage": "Afspraakbevestiging voor {name}: U heeft een afspraak bij de huisarts op {day} om {time} uur. Neem uw identiteitsbewijs en medicijnlijst mee. Bent u te laat? Bel dan de praktijk.", "passageAr": "تأكيد موعد لـ {name}: لديك موعد عند طبيب الأسرة يوم {day} الساعة {time}. أحضر بطاقة الهوية وقائمة الأدوية. إذا تأخرت، فاتصل بالعيادة.", "passageEn": "Appointment confirmation for {name}: You have an appointment with the GP on {day} at {time}. Bring your ID and medicine list. If you are late, call the practice.", "question": "Wat moet u meenemen naar de afspraak?", "questionAr": "ماذا يجب أن تأخذ معك إلى الموعد؟", "questionEn": "What should you bring to the appointment?", "options": ["Alleen contant geld.", "Een pasfoto en een formulier.", "Uw identiteitsbewijs en medicijnlijst.", "Een treinkaartje."], "optionsAr": ["نقود فقط.", "صورة شخصية ونموذج.", "بطاقة الهوية وقائمة الأدوية.", "تذكرة قطار."], "optionsEn": ["Only cash.", "A passport photo and a form.", "Your ID and medicine list.", "A train ticket."], "correct": 2, "explanation": "De bevestiging zegt dat u een identiteitsbewijs en medicijnlijst moet meenemen.", "explanationAr": "رسالة التأكيد تقول إن عليك إحضار بطاقة الهوية وقائمة الأدوية.", "explanationEn": "The confirmation says you must bring an ID and a medicine list."}, {"category": "Openbaar vervoer", "title": "Treininformatie", "titleAr": "معلومات القطار", "titleEn": "Train information", "passage": "Reisinformatie: De trein van {city} naar {city2} vertrekt vandaag vanaf spoor {track}. Door een technisch probleem is er ongeveer {delay} minuten vertraging. Reizigers kunnen in de trein blijven zitten.", "passageAr": "معلومات السفر: القطار من {city} إلى {city2} يغادر اليوم من الرصيف رقم {track}. بسبب مشكلة فنية يوجد تأخير حوالي {delay} دقيقة. يمكن للمسافرين البقاء في القطار.", "passageEn": "Travel information: The train from {city} to {city2} leaves today from platform {track}. Because of a technical problem there is a delay of about {delay} minutes. Passengers can stay on the train.", "question": "Hoeveel vertraging heeft de trein?", "questionAr": "كم مدة تأخير القطار؟", "questionEn": "How much delay does the train have?", "options": ["Er is geen vertraging.", "Ongeveer {delay} minuten.", "Twee uur.", "Alle treinen zijn geannuleerd."], "optionsAr": ["لا يوجد تأخير.", "حوالي {delay} دقيقة.", "ساعتان.", "تم إلغاء كل القطارات."], "optionsEn": ["There is no delay.", "About {delay} minutes.", "Two hours.", "All trains are cancelled."], "correct": 1, "explanation": "In de reisinformatie staat: ongeveer {delay} minuten vertraging.", "explanationAr": "ورد في معلومات السفر: تأخير حوالي {delay} دقيقة.", "explanationEn": "The travel information says there is about {delay} minutes delay."}, {"category": "Bibliotheek", "title": "Boeken lenen", "titleAr": "استعارة الكتب", "titleEn": "Borrowing books", "passage": "Bibliotheekbericht: De bibliotheek is op {day} open tot {time} uur. Boeken mogen {weeks} weken thuis blijven. Brengt u een boek te laat terug? Dan betaalt u € {fee} per boek.", "passageAr": "رسالة المكتبة: المكتبة مفتوحة يوم {day} حتى الساعة {time}. يمكن الاحتفاظ بالكتب في البيت لمدة {weeks} أسابيع. إذا أرجعت كتابًا متأخرًا، تدفع € {fee} عن كل كتاب.", "passageEn": "Library notice: The library is open on {day} until {time}. Books may be kept at home for {weeks} weeks. If you return a book late, you pay € {fee} per book.", "question": "Hoe lang mag u de boeken thuis houden?", "questionAr": "كم مدة الاحتفاظ بالكتب في البيت؟", "questionEn": "How long may you keep the books at home?", "options": ["Eén dag.", "Tot sluitingstijd.", "{weeks} weken.", "Zes maanden."], "optionsAr": ["يوم واحد.", "حتى وقت الإغلاق.", "{weeks} أسابيع.", "ستة أشهر."], "optionsEn": ["One day.", "Until closing time.", "{weeks} weeks.", "Six months."], "correct": 2, "explanation": "In de tekst staat dat boeken {weeks} weken thuis mogen blijven.", "explanationAr": "ورد في النص أن الكتب يمكن أن تبقى في البيت لمدة {weeks} أسابيع.", "explanationEn": "The text says books may be kept at home for {weeks} weeks."}, {"category": "School", "title": "Leswijziging", "titleAr": "تغيير موعد الدرس", "titleEn": "Lesson change", "passage": "Beste cursist, de les Nederlands van {name} is deze week verplaatst. De les is nu op {day} in lokaal {room}. Neem uw boek en pen mee. De docent begint precies op tijd.", "passageAr": "عزيزي الطالب، تم تغيير موعد درس اللغة الهولندية الخاص بـ {name} هذا الأسبوع. الدرس الآن يوم {day} في القاعة {room}. أحضر كتابك وقلمك. يبدأ المدرّس في الوقت المحدد تمامًا.", "passageEn": "Dear student, {name}'s Dutch lesson has been moved this week. The lesson is now on {day} in room {room}. Bring your book and pen. The teacher starts exactly on time.", "question": "Waar is de les nu?", "questionAr": "أين الدرس الآن؟", "questionEn": "Where is the lesson now?", "options": ["In de kantine.", "In lokaal {room}.", "Online thuis.", "Bij de gemeente."], "optionsAr": ["في الكافتيريا.", "في القاعة {room}.", "على الإنترنت من البيت.", "في البلدية."], "optionsEn": ["In the cafeteria.", "In room {room}.", "Online at home.", "At the municipality."], "correct": 1, "explanation": "Volgens het bericht is de les in lokaal {room}.", "explanationAr": "حسب الرسالة، الدرس في القاعة {room}.", "explanationEn": "According to the message, the lesson is in room {room}."}, {"category": "Winkel", "title": "Supermarktaanbieding", "titleAr": "عرض في السوبرماركت", "titleEn": "Supermarket offer", "passage": "Aanbieding bij Supermarkt Nova: deze week krijgt u {discount}% korting op {product}. De aanbieding geldt tot en met {day}. De korting wordt automatisch bij de kassa berekend.", "passageAr": "عرض في سوبرماركت نوفا: هذا الأسبوع تحصل على خصم {discount}% على {product}. العرض صالح حتى يوم {day} ضمنًا. يتم حساب الخصم تلقائيًا عند صندوق الدفع.", "passageEn": "Offer at Nova Supermarket: this week you get {discount}% discount on {product}. The offer is valid through {day}. The discount is calculated automatically at the checkout.", "question": "Wat is de aanbieding?", "questionAr": "ما هو العرض؟", "questionEn": "What is the offer?", "options": ["Gratis bezorging.", "{discount}% korting op {product}.", "Twee producten voor één euro.", "Korting op alle producten."], "optionsAr": ["توصيل مجاني.", "خصم {discount}% على {product}.", "منتجان مقابل يورو واحد.", "خصم على كل المنتجات."], "optionsEn": ["Free delivery.", "{discount}% discount on {product}.", "Two products for one euro.", "Discount on all products."], "correct": 1, "explanation": "De tekst noemt {discount}% korting op {product}.", "explanationAr": "النص يذكر خصم {discount}% على {product}.", "explanationEn": "The text mentions {discount}% discount on {product}."}, {"category": "Wonen", "title": "Reparatieafspraak", "titleAr": "موعد إصلاح", "titleEn": "Repair appointment", "passage": "Bericht van de woningcorporatie: De monteur komt op {day} tussen {time} en {time2} uur om de {item} te repareren. Zorg dat er iemand thuis is. De reparatie is gratis voor huurders.", "passageAr": "رسالة من شركة السكن: سيأتي الفني يوم {day} بين الساعة {time} و {time2} لإصلاح {item}. احرص على وجود شخص في المنزل. الإصلاح مجاني للمستأجرين.", "passageEn": "Message from the housing corporation: The mechanic will come on {day} between {time} and {time2} to repair the {item}. Make sure someone is at home. The repair is free for tenants.", "question": "Wanneer komt de monteur?", "questionAr": "متى سيأتي الفني؟", "questionEn": "When will the mechanic come?", "options": ["Op {day} tussen {time} en {time2} uur.", "Vandaag om 20.00 uur.", "Alleen in het weekend.", "De datum staat niet in het bericht."], "optionsAr": ["يوم {day} بين الساعة {time} و {time2}.", "اليوم الساعة 20:00.", "فقط في عطلة نهاية الأسبوع.", "التاريخ غير مذكور في الرسالة."], "optionsEn": ["On {day} between {time} and {time2}.", "Today at 20:00.", "Only on the weekend.", "The date is not in the message."], "correct": 0, "explanation": "De afspraak staat duidelijk in de eerste zin van het bericht.", "explanationAr": "الموعد مذكور بوضوح في الجملة الأولى من الرسالة.", "explanationEn": "The appointment is clearly stated in the first sentence of the message."}, {"category": "Buurt", "title": "Uitnodiging", "titleAr": "دعوة", "titleEn": "Invitation", "passage": "Uitnodiging van {name}: Kom naar de koffieochtend op {day} in de bibliotheek. Het programma begint om {time} uur. Neem iets te drinken mee. Aanmelden is niet nodig.", "passageAr": "دعوة من {name}: تعال إلى صباح القهوة يوم {day} في المكتبة. يبدأ البرنامج الساعة {time}. أحضر شيئًا للشرب. لا حاجة للتسجيل.", "passageEn": "Invitation from {name}: Come to the coffee morning on {day} in the library. The program starts at {time}. Bring something to drink. Registration is not necessary.", "question": "Moet u zich aanmelden?", "questionAr": "هل يجب عليك التسجيل؟", "questionEn": "Do you need to register?", "options": ["Ja, via internet.", "Ja, telefonisch.", "Nee, aanmelden is niet nodig.", "Alleen als u te laat komt."], "optionsAr": ["نعم، عبر الإنترنت.", "نعم، بالهاتف.", "لا، التسجيل غير ضروري.", "فقط إذا حضرت متأخرًا."], "optionsEn": ["Yes, online.", "Yes, by phone.", "No, registration is not necessary.", "Only if you arrive late."], "correct": 2, "explanation": "De laatste zin zegt dat aanmelden niet nodig is.", "explanationAr": "الجملة الأخيرة تقول إن التسجيل غير ضروري.", "explanationEn": "The last sentence says registration is not necessary."}, {"category": "Apotheek", "title": "Medicijn ophalen", "titleAr": "استلام دواء", "titleEn": "Picking up medicine", "passage": "Sms van Apotheek Zorg: Uw medicijn ligt klaar vanaf {day} na {time} uur. Neem uw zorgpas mee. De apotheek sluit om {time2} uur.", "passageAr": "رسالة من صيدلية Zorg: دواؤك جاهز للاستلام ابتداءً من يوم {day} بعد الساعة {time}. أحضر بطاقة التأمين الصحي. الصيدلية تغلق الساعة {time2}.", "passageEn": "Text message from Zorg Pharmacy: Your medicine is ready from {day} after {time}. Bring your health insurance card. The pharmacy closes at {time2}.", "question": "Wat moet u meenemen?", "questionAr": "ماذا يجب أن تأخذ معك؟", "questionEn": "What should you bring?", "options": ["Uw zorgpas.", "Een bibliotheekpas.", "Een fietskaart.", "Een schoolboek."], "optionsAr": ["بطاقة التأمين الصحي.", "بطاقة المكتبة.", "بطاقة دراجة.", "كتاب مدرسي."], "optionsEn": ["Your health insurance card.", "A library card.", "A bike card.", "A schoolbook."], "correct": 0, "explanation": "In de sms staat dat u uw zorgpas moet meenemen.", "explanationAr": "ورد في الرسالة أن عليك إحضار بطاقة التأمين الصحي.", "explanationEn": "The text message says you must bring your health insurance card."}, {"category": "Werk", "title": "Werkrooster", "titleAr": "جدول العمل", "titleEn": "Work schedule", "passage": "Werkrooster van Restaurant De Brug: {name} werkt deze week op {day} van {time} tot {time2} uur. Op zondag is het restaurant gesloten. Ruilen kan alleen met toestemming van de manager.", "passageAr": "جدول العمل في مطعم De Brug: يعمل {name} هذا الأسبوع يوم {day} من الساعة {time} حتى {time2}. يوم الأحد المطعم مغلق. تبديل الوردية ممكن فقط بموافقة المدير.", "passageEn": "Work schedule of Restaurant De Brug: {name} works this week on {day} from {time} to {time2}. On Sunday the restaurant is closed. Swapping shifts is only possible with the manager's permission.", "question": "Wanneer werkt {name}?", "questionAr": "متى يعمل {name}؟", "questionEn": "When does {name} work?", "options": ["Op zondag.", "Op {day} van {time} tot {time2} uur.", "Elke ochtend.", "Alleen na toestemming."], "optionsAr": ["يوم الأحد.", "يوم {day} من الساعة {time} حتى {time2}.", "كل صباح.", "فقط بعد الموافقة."], "optionsEn": ["On Sunday.", "On {day} from {time} to {time2}.", "Every morning.", "Only after permission."], "correct": 1, "explanation": "Het rooster noemt {day} van {time} tot {time2} uur.", "explanationAr": "الجدول يذكر يوم {day} من الساعة {time} حتى {time2}.", "explanationEn": "The schedule mentions {day} from {time} to {time2}."}, {"category": "Restaurant", "title": "Reservering", "titleAr": "حجز مطعم", "titleEn": "Reservation", "passage": "Bevestiging: Uw tafel bij Restaurant Luna is gereserveerd voor {people} personen op {day} om {time} uur. Wilt u annuleren? Bel dan vóór 12.00 uur op dezelfde dag.", "passageAr": "تأكيد: تم حجز طاولتك في مطعم Luna لعدد {people} أشخاص يوم {day} الساعة {time}. إذا أردت الإلغاء، اتصل قبل الساعة 12:00 في نفس اليوم.", "passageEn": "Confirmation: Your table at Restaurant Luna is reserved for {people} people on {day} at {time}. If you want to cancel, call before 12:00 on the same day.", "question": "Voor hoeveel personen is de tafel gereserveerd?", "questionAr": "لِكم شخصًا تم حجز الطاولة؟", "questionEn": "For how many people is the table reserved?", "options": ["Voor {people} personen.", "Voor één persoon.", "Voor tien personen.", "Dat staat niet in de tekst."], "optionsAr": ["لعدد {people} أشخاص.", "لشخص واحد.", "لعشرة أشخاص.", "هذا غير مذكور في النص."], "optionsEn": ["For {people} people.", "For one person.", "For ten people.", "That is not in the text."], "correct": 0, "explanation": "De bevestiging zegt dat de tafel voor {people} personen is gereserveerd.", "explanationAr": "التأكيد يقول إن الطاولة محجوزة لعدد {people} أشخاص.", "explanationEn": "The confirmation says the table is reserved for {people} people."}, {"category": "Sport", "title": "Sportschoolbericht", "titleAr": "رسالة النادي الرياضي", "titleEn": "Gym message", "passage": "Bericht van FitPlus: De groepsles yoga van {day} gaat niet door omdat de docent ziek is. Leden mogen gratis meedoen met de les op {newDay} om {time} uur.", "passageAr": "رسالة من FitPlus: حصة اليوغا الجماعية يوم {day} لن تقام لأن المدرب مريض. يمكن للأعضاء المشاركة مجانًا في الحصة يوم {newDay} الساعة {time}.", "passageEn": "Message from FitPlus: The group yoga lesson on {day} is cancelled because the teacher is ill. Members may join the lesson on {newDay} at {time} for free.", "question": "Waarom gaat de yogales niet door?", "questionAr": "لماذا لن تقام حصة اليوغا؟", "questionEn": "Why is the yoga lesson cancelled?", "options": ["Omdat de zaal te klein is.", "Omdat de docent ziek is.", "Omdat er geen leden zijn.", "Omdat het weekend is."], "optionsAr": ["لأن القاعة صغيرة جدًا.", "لأن المدرب مريض.", "لأنه لا يوجد أعضاء.", "لأنه يوم عطلة نهاية الأسبوع."], "optionsEn": ["Because the room is too small.", "Because the teacher is ill.", "Because there are no members.", "Because it is the weekend."], "correct": 1, "explanation": "In het bericht staat dat de docent ziek is.", "explanationAr": "ورد في الرسالة أن المدرب مريض.", "explanationEn": "The message says the teacher is ill."}, {"category": "Post", "title": "Pakketbezorging", "titleAr": "توصيل طرد", "titleEn": "Parcel delivery", "passage": "Pakketbericht: Uw pakket is vandaag niet bezorgd omdat niemand thuis was. U kunt het pakket vanaf morgen ophalen bij het afhaalpunt aan de {street}. Neem uw legitimatie mee.", "passageAr": "رسالة طرد: لم يتم تسليم طردك اليوم لأنه لم يكن أحد في المنزل. يمكنك استلام الطرد ابتداءً من الغد من نقطة الاستلام في {street}. أحضر بطاقة الهوية.", "passageEn": "Parcel message: Your parcel was not delivered today because nobody was home. You can pick up the parcel from tomorrow at the pickup point on {street}. Bring your ID.", "question": "Waar kunt u het pakket ophalen?", "questionAr": "أين يمكنك استلام الطرد؟", "questionEn": "Where can you pick up the parcel?", "options": ["Bij het afhaalpunt aan de {street}.", "In de trein.", "Bij de huisarts.", "Alleen thuis."], "optionsAr": ["في نقطة الاستلام في {street}.", "في القطار.", "عند طبيب الأسرة.", "فقط في البيت."], "optionsEn": ["At the pickup point on {street}.", "On the train.", "At the GP practice.", "Only at home."], "correct": 0, "explanation": "De tekst zegt dat het pakket bij het afhaalpunt aan de {street} ligt.", "explanationAr": "النص يقول إن الطرد في نقطة الاستلام في {street}.", "explanationEn": "The text says the parcel is at the pickup point on {street}."}, {"category": "Gevonden voorwerp", "title": "Verloren tas", "titleAr": "حقيبة مفقودة", "titleEn": "Lost bag", "passage": "Melding op school: Er is een zwarte tas gevonden in lokaal {room}. In de tas zit een agenda met de naam {name}. De eigenaar kan de tas ophalen bij de receptie vóór {time} uur.", "passageAr": "إعلان في المدرسة: تم العثور على حقيبة سوداء في القاعة {room}. داخل الحقيبة توجد مفكرة باسم {name}. يمكن لصاحب الحقيبة استلامها من الاستقبال قبل الساعة {time}.", "passageEn": "Notice at school: A black bag was found in room {room}. In the bag there is a diary with the name {name}. The owner can pick up the bag at reception before {time}.", "question": "Waar kan de eigenaar de tas ophalen?", "questionAr": "أين يمكن لصاحب الحقيبة استلامها؟", "questionEn": "Where can the owner pick up the bag?", "options": ["In lokaal {room}.", "Bij de receptie.", "In de bibliotheek.", "Bij de supermarkt."], "optionsAr": ["في القاعة {room}.", "عند الاستقبال.", "في المكتبة.", "في السوبرماركت."], "optionsEn": ["In room {room}.", "At reception.", "In the library.", "At the supermarket."], "correct": 1, "explanation": "De tas kan bij de receptie worden opgehaald.", "explanationAr": "يمكن استلام الحقيبة من الاستقبال.", "explanationEn": "The bag can be picked up at reception."}, {"category": "Cursus", "title": "Inschrijving cursus", "titleAr": "التسجيل في دورة", "titleEn": "Course registration", "passage": "ROC {city}: De cursus Nederlands A2 start op {day}. De lessen zijn van {time} tot {time2} uur. Inschrijven kan tot vrijdag via de website of bij de balie.", "passageAr": "ROC {city}: تبدأ دورة اللغة الهولندية A2 يوم {day}. الدروس من الساعة {time} حتى {time2}. يمكن التسجيل حتى يوم الجمعة عبر الموقع أو عند المكتب.", "passageEn": "ROC {city}: The Dutch A2 course starts on {day}. The lessons are from {time} to {time2}. You can register until Friday via the website or at the desk.", "question": "Wanneer start de cursus?", "questionAr": "متى تبدأ الدورة؟", "questionEn": "When does the course start?", "options": ["Op vrijdag.", "Op {day}.", "Volgend jaar.", "Dat staat niet in de tekst."], "optionsAr": ["يوم الجمعة.", "يوم {day}.", "في السنة القادمة.", "هذا غير مذكور في النص."], "optionsEn": ["On Friday.", "On {day}.", "Next year.", "That is not in the text."], "correct": 1, "explanation": "In de eerste zin staat dat de cursus op {day} start.", "explanationAr": "في الجملة الأولى ورد أن الدورة تبدأ يوم {day}.", "explanationEn": "The first sentence says the course starts on {day}."}, {"category": "Weer", "title": "Weerwaarschuwing", "titleAr": "تحذير الطقس", "titleEn": "Weather warning", "passage": "Weerbericht: Morgen is er veel wind in {city}. Fietsers moeten extra opletten. De gemeente adviseert om losse spullen uit de tuin binnen te zetten.", "passageAr": "نشرة الطقس: غدًا ستكون هناك رياح قوية في {city}. يجب على راكبي الدراجات الانتباه جيدًا. تنصح البلدية بإدخال الأشياء غير المثبتة من الحديقة إلى الداخل.", "passageEn": "Weather report: Tomorrow there will be strong wind in {city}. Cyclists must be extra careful. The municipality advises people to bring loose items from the garden inside.", "question": "Wat adviseert de gemeente?", "questionAr": "بماذا تنصح البلدية؟", "questionEn": "What does the municipality advise?", "options": ["Losse spullen uit de tuin binnen zetten.", "Alle scholen sluiten.", "Met de trein reizen is gratis.", "Niet naar de supermarkt gaan."], "optionsAr": ["إدخال الأشياء غير المثبتة من الحديقة إلى الداخل.", "إغلاق كل المدارس.", "السفر بالقطار مجاني.", "عدم الذهاب إلى السوبرماركت."], "optionsEn": ["Bring loose items from the garden inside.", "Close all schools.", "Travel by train for free.", "Do not go to the supermarket."], "correct": 0, "explanation": "De gemeente adviseert om losse spullen uit de tuin binnen te zetten.", "explanationAr": "تنصح البلدية بإدخال الأشياء غير المثبتة من الحديقة إلى الداخل.", "explanationEn": "The municipality advises bringing loose items from the garden inside."}, {"category": "Gemeente", "title": "Afspraak stadskantoor", "titleAr": "موعد في مكتب البلدية", "titleEn": "City office appointment", "passage": "Afspraak gemeente {city}: U heeft op {day} om {time} uur een afspraak voor uw paspoort. Kom tien minuten eerder en neem een pasfoto en uw oude paspoort mee.", "passageAr": "موعد بلدية {city}: لديك يوم {day} الساعة {time} موعد بخصوص جواز السفر. تعال قبل الموعد بعشر دقائق وأحضر صورة شخصية وجواز سفرك القديم.", "passageEn": "Municipality {city} appointment: You have an appointment for your passport on {day} at {time}. Come ten minutes earlier and bring a passport photo and your old passport.", "question": "Waarvoor is de afspraak?", "questionAr": "بخصوص ماذا الموعد؟", "questionEn": "What is the appointment for?", "options": ["Voor een paspoort.", "Voor een sportles.", "Voor een pakket.", "Voor een restaurant."], "optionsAr": ["بخصوص جواز سفر.", "بخصوص حصة رياضة.", "بخصوص طرد.", "بخصوص مطعم."], "optionsEn": ["For a passport.", "For a sports lesson.", "For a parcel.", "For a restaurant."], "correct": 0, "explanation": "De afspraak is volgens de tekst voor een paspoort.", "explanationAr": "حسب النص، الموعد بخصوص جواز السفر.", "explanationEn": "According to the text, the appointment is for a passport."}, {"category": "Bank", "title": "Nieuwe pinpas", "titleAr": "بطاقة بنكية جديدة", "titleEn": "New debit card", "passage": "Bericht van de bank: Uw nieuwe pinpas wordt binnen drie werkdagen verstuurd. De oude pas kunt u gebruiken tot {day}. Activeer de nieuwe pas eerst in de app.", "passageAr": "رسالة من البنك: سيتم إرسال بطاقتك البنكية الجديدة خلال ثلاثة أيام عمل. يمكنك استخدام البطاقة القديمة حتى يوم {day}. فعّل البطاقة الجديدة أولًا في التطبيق.", "passageEn": "Message from the bank: Your new debit card will be sent within three working days. You can use the old card until {day}. First activate the new card in the app.", "question": "Wat moet u eerst doen met de nieuwe pas?", "questionAr": "ماذا يجب أن تفعل أولًا بالبطاقة الجديدة؟", "questionEn": "What must you do first with the new card?", "options": ["Weggooien.", "Activeren in de app.", "Naar de bibliotheek brengen.", "Aan een vriend geven."], "optionsAr": ["رميها.", "تفعيلها في التطبيق.", "إحضارها إلى المكتبة.", "إعطاؤها لصديق."], "optionsEn": ["Throw it away.", "Activate it in the app.", "Bring it to the library.", "Give it to a friend."], "correct": 1, "explanation": "De tekst zegt: activeer de nieuwe pas eerst in de app.", "explanationAr": "النص يقول: فعّل البطاقة الجديدة أولًا في التطبيق.", "explanationEn": "The text says: first activate the new card in the app."}, {"category": "Fiets", "title": "Fietsreparatie", "titleAr": "إصلاح الدراجة", "titleEn": "Bicycle repair", "passage": "Fietsenmaker De Snel: Uw fiets is klaar. De remmen zijn gemaakt en de lamp werkt weer. U kunt de fiets ophalen op {day} tussen {time} en {time2} uur. Betalen kan met pin.", "passageAr": "محل إصلاح الدراجات De Snel: دراجتك جاهزة. تم إصلاح الفرامل والضوء يعمل من جديد. يمكنك استلام الدراجة يوم {day} بين الساعة {time} و {time2}. الدفع ممكن بالبطاقة البنكية.", "passageEn": "Bike repair shop De Snel: Your bike is ready. The brakes have been repaired and the light works again. You can pick up the bike on {day} between {time} and {time2}. You can pay by debit card.", "question": "Wat is er gerepareerd?", "questionAr": "ما الذي تم إصلاحه؟", "questionEn": "What has been repaired?", "options": ["De remmen en de lamp.", "Alleen het zadel.", "De bel van de fiets.", "Niets."], "optionsAr": ["الفرامل والضوء.", "المقعد فقط.", "جرس الدراجة.", "لا شيء."], "optionsEn": ["The brakes and the light.", "Only the saddle.", "The bike bell.", "Nothing."], "correct": 0, "explanation": "De tekst zegt dat de remmen gemaakt zijn en de lamp weer werkt.", "explanationAr": "النص يقول إن الفرامل تم إصلاحها والضوء يعمل من جديد.", "explanationEn": "The text says the brakes are repaired and the light works again."}, {"category": "School", "title": "Schooluitje", "titleAr": "رحلة مدرسية", "titleEn": "School trip", "passage": "Schoolbericht: De klas gaat op {day} naar het museum in {city}. We vertrekken om {time} uur vanaf school. Neem lunch, water en een OV-chipkaart mee.", "passageAr": "رسالة من المدرسة: سيذهب الصف يوم {day} إلى المتحف في {city}. سننطلق من المدرسة الساعة {time}. أحضر غداءً وماءً وبطاقة المواصلات OV-chipkaart.", "passageEn": "School message: The class is going to the museum in {city} on {day}. We leave school at {time}. Bring lunch, water and an OV-chipkaart.", "question": "Wat moet u meenemen?", "questionAr": "ماذا يجب أن تأخذ معك؟", "questionEn": "What should you bring?", "options": ["Lunch, water en een OV-chipkaart.", "Een fiets en gereedschap.", "Alleen geld.", "Een nieuw paspoort."], "optionsAr": ["غداء، ماء وبطاقة المواصلات.", "دراجة وأدوات.", "نقود فقط.", "جواز سفر جديد."], "optionsEn": ["Lunch, water and an OV-chipkaart.", "A bike and tools.", "Only money.", "A new passport."], "correct": 0, "explanation": "De laatste zin noemt lunch, water en een OV-chipkaart.", "explanationAr": "الجملة الأخيرة تذكر الغداء والماء وبطاقة المواصلات.", "explanationEn": "The last sentence mentions lunch, water and an OV-chipkaart."}, {"category": "Zorg", "title": "Tandartsbericht", "titleAr": "رسالة طبيب الأسنان", "titleEn": "Dentist message", "passage": "Bericht van Tandartspraktijk Smile: Uw controleafspraak is verplaatst naar {day} om {time} uur. Heeft u pijn? Bel dan direct met de praktijk. Poets uw tanden vóór de afspraak.", "passageAr": "رسالة من عيادة الأسنان Smile: تم نقل موعد الفحص إلى يوم {day} الساعة {time}. إذا كان لديك ألم، فاتصل مباشرة بالعيادة. نظّف أسنانك قبل الموعد.", "passageEn": "Message from Smile Dental Practice: Your check-up appointment has been moved to {day} at {time}. If you have pain, call the practice immediately. Brush your teeth before the appointment.", "question": "Wat moet u doen als u pijn heeft?", "questionAr": "ماذا يجب أن تفعل إذا كان لديك ألم؟", "questionEn": "What should you do if you have pain?", "options": ["Wachten tot volgend jaar.", "Direct de praktijk bellen.", "Naar de bibliotheek gaan.", "De afspraak vergeten."], "optionsAr": ["الانتظار حتى السنة القادمة.", "الاتصال مباشرة بالعيادة.", "الذهاب إلى المكتبة.", "نسيان الموعد."], "optionsEn": ["Wait until next year.", "Call the practice immediately.", "Go to the library.", "Forget the appointment."], "correct": 1, "explanation": "In de tekst staat dat u direct moet bellen als u pijn heeft.", "explanationAr": "ورد في النص أنه يجب الاتصال مباشرة إذا كان لديك ألم.", "explanationEn": "The text says you should call immediately if you have pain."}, {"category": "Werk", "title": "Sollicitatiebericht", "titleAr": "رسالة مقابلة عمل", "titleEn": "Job interview message", "passage": "Beste {name}, bedankt voor uw sollicitatie. Wij nodigen u uit voor een gesprek op {day} om {time} uur in onze winkel aan de {street}. Neem uw cv mee.", "passageAr": "عزيزي {name}، شكرًا على طلب التوظيف. ندعوك إلى مقابلة يوم {day} الساعة {time} في متجرنا في {street}. أحضر سيرتك الذاتية.", "passageEn": "Dear {name}, thank you for your application. We invite you for an interview on {day} at {time} in our shop on {street}. Bring your CV.", "question": "Wat moet {name} meenemen?", "questionAr": "ماذا يجب أن يأخذ {name} معه؟", "questionEn": "What should {name} bring?", "options": ["Een cv.", "Een fietshelm.", "Een bibliotheekboek.", "Een oude pinpas."], "optionsAr": ["سيرة ذاتية.", "خوذة دراجة.", "كتاب مكتبة.", "بطاقة بنكية قديمة."], "optionsEn": ["A CV.", "A bike helmet.", "A library book.", "An old debit card."], "correct": 0, "explanation": "De laatste zin zegt dat {name} een cv moet meenemen.", "explanationAr": "الجملة الأخيرة تقول إن على {name} إحضار سيرة ذاتية.", "explanationEn": "The last sentence says {name} must bring a CV."}]; var names=['Jan','Fatima','Ahmed','Lisa','Mohammed','Sanne','Thomas','Anna','Bilal','Laura','Mehmet','Sara']; var cities=['Amsterdam','Rotterdam','Utrecht','Den Haag','Eindhoven','Tilburg','Leiden','Almere','Groningen','Breda']; var streets=['Kerkstraat','Stationsweg','Parklaan','Dorpsstraat','Schoolstraat','Lindelaan','Marktplein','Molenweg']; var days=['maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag','zondag']; var products=['pasta','rijst','kaas','brood','koffie','groente']; var items=['kraan','verwarming','deurbel','lamp','douche','brievenbus']; var lang='ar', currentExamId=null, currentQuestion=0, secondsLeft=2400, timerInterval=null; var memoryStore={}; function $(id){return document.getElementById(id)} function safeGet(k){try{return localStorage.getItem(k)}catch(e){return memoryStore[k]||null}} function safeSet(k,v){try{localStorage.setItem(k,v)}catch(e){memoryStore[k]=v}} function safeRemove(k){try{localStorage.removeItem(k)}catch(e){delete memoryStore[k]}} function keyAnswers(examId){return 'READ_A2_FIXED_EXAM_'+examId} function getAnswers(examId){var raw=safeGet(keyAnswers(examId)); if(!raw){return {}}; try{return JSON.parse(raw)||{}}catch(e){return {}}} function setAnswer(examId,qId,answer){var a=getAnswers(examId); a[qId]=answer; safeSet(keyAnswers(examId),JSON.stringify(a))} function getAnswer(examId,qId){var a=getAnswers(examId); return a.hasOwnProperty(qId)?a[qId]:undefined} function answeredCount(examId){var a=getAnswers(examId), n=0; var qs=getQuestions(examId); for(var i=0;i0){currentQuestion--;renderExam();scrollTop()}} function nextQ(){if(currentQuestion