{
  "generatedAt": "2026-02-18T02:20:17.247Z",
  "app": {
    "name": "Deutsch Dossier",
    "description": "German learning cockpit from A2 to B2 with missions, grammar, writing, dictation, challenge, crew, and class mode.",
    "routes": [
      "/",
      "/session",
      "/path",
      "/explore",
      "/search",
      "/missions",
      "/grammar",
      "/write",
      "/dictation",
      "/challenge",
      "/endless",
      "/race",
      "/class",
      "/settings"
    ]
  },
  "content": {
    "counts": {
      "missions": 31,
      "grammarModules": 28,
      "writingTasks": 38,
      "dictationTasks": 33,
      "exams": 4,
      "deckCards": 241
    },
    "missions": [
      {
        "id": "case-00-cases",
        "code": "CASE 00",
        "title": "The Case Interrogation",
        "tagline": "A2 foundation: den/dem, mit/für, and the sentence that unlocks B1.",
        "domain": "education",
        "levelFrom": "A2",
        "levelTo": "A2",
        "estMin": 18,
        "skills": [
          "grammar",
          "writing",
          "speaking",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You can survive with broken grammar, but cases are a different beast: they decide who receives what, and what you are talking about. Today you build an A2 case core you will reuse in every email, phone call, and Goethe task.",
            "checklist": [
              "Learn: Wen/was? (Akk) vs Wem? (Dat)",
              "Drill: der→den→dem (masculine)",
              "Use prepositions as chunks (mit + Dat, für + Akk)"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: The Minimal Rule Set",
            "textDe": "Akkusativ = direktes Objekt (Wen/was?)\nDativ = indirektes Objekt (Wem?)\n\nBeispiele:\n- Ich sehe den Mann. (Wen sehe ich?)\n- Ich helfe dem Mann. (Wem helfe ich?)\n- Ich gebe dem Mann den Schlüssel. (Wem? / Was?)\n\nUnd: Präposition + Fall als Einheit lernen:\n- mit + Dativ: mit dem Bus\n- für + Akkusativ: für den Termin",
            "glossary": [
              {
                "de": "das Objekt",
                "en": "object (grammar role)"
              },
              {
                "de": "direkt",
                "en": "direct"
              },
              {
                "de": "indirekt",
                "en": "indirect"
              },
              {
                "de": "als Einheit",
                "en": "as one unit / chunk"
              }
            ],
            "xp": 12,
            "minutes": 5
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: The Unlock Sentence",
            "promptEn": "Tap the tokens to build a correct sentence (case order matters).",
            "tokens": [
              "dem",
              "Schlüssel",
              "Ich",
              "den",
              "Mann",
              "gebe",
              "."
            ],
            "answer": [
              "Ich",
              "gebe",
              "dem",
              "Mann",
              "den",
              "Schlüssel",
              "."
            ],
            "hintEn": "Receiver (Dativ) first, thing (Akkusativ) second.",
            "explanationEn": "geben has two objects: I give (something) to (someone). In German the Dativ receiver often comes before the Akkusativ thing: dem Mann den Schlüssel.",
            "xp": 16,
            "minutes": 4
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Case Drill: den vs dem",
            "promptEn": "Fill the blanks with the correct articles.",
            "textDe": "Ich sehe {1} Mann, und ich helfe {2} Mann. Danach gebe ich {3} Mann {4} Schlüssel.",
            "blanks": [
              {
                "id": "1",
                "answer": "den",
                "hintEn": "Akkusativ (direct object)"
              },
              {
                "id": "2",
                "answer": "dem",
                "hintEn": "Dativ (helfen)"
              },
              {
                "id": "3",
                "answer": "dem",
                "hintEn": "Dativ (receiver)"
              },
              {
                "id": "4",
                "answer": "den",
                "hintEn": "Akkusativ (thing)"
              }
            ],
            "explanationEn": "This is the pattern you need daily: sehen (Akk), helfen (Dat), geben (Dat + Akk). Drill it until it is automatic.",
            "xp": 18,
            "minutes": 5
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: 6 Micro-Sentences",
            "promptEn": "Write 6 short sentences in German. Use: sehen (Akk), helfen (Dat), geben (Dat+Akk), mit (Dat), für (Akk), zu (Dat).",
            "minWords": 55,
            "checklist": [
              "At least 2 Akkusativ examples (den/einen)",
              "At least 2 Dativ examples (dem/einem/der)",
              "Use mit + Dat and für + Akk at least once",
              "Keep sentences short and correct"
            ],
            "helpfulPhrasesDe": [
              "Ich sehe den ...",
              "Ich helfe dem ...",
              "Ich gebe dem ... den ...",
              "Ich fahre mit dem ...",
              "Das ist für den ...",
              "Ich gehe zu dem ... (zum ...)"
            ],
            "modelDe": "Ich sehe den Mann. Ich kaufe einen Kaffee. Ich helfe dem Nachbarn. Ich gebe dem Kind den Schlüssel. Ich fahre mit dem Bus. Das ist für den Termin. Ich gehe zum Arzt.",
            "xp": 28,
            "minutes": 8
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: Explain It Like a Rule",
            "promptEn": "Speak for 35 seconds: explain (in simple German) the difference between Akkusativ and Dativ and give 2 examples.",
            "timeSec": 35,
            "usefulFramesDe": [
              "Akkusativ ist für Wen/was?",
              "Dativ ist für Wem?",
              "Ich sehe den ...",
              "Ich helfe dem ...",
              "Ich gebe dem ... den ..."
            ],
            "xp": 16,
            "minutes": 4
          }
        ]
      },
      {
        "id": "case-00a-supermarkt",
        "code": "CASE 00A",
        "title": "Supermarket Mission: Ask Like a Local",
        "tagline": "A2 survival: where something is, how much, and polite help.",
        "domain": "daily",
        "levelFrom": "A2",
        "levelTo": "A2",
        "estMin": 16,
        "skills": [
          "listening",
          "speaking",
          "vocab",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You are in a German supermarket. You need to ask for help, understand the answer, and respond politely. Goal: clean A2 interaction, not perfection.",
            "checklist": [
              "Ask: Wo finde ich ...?",
              "Understand aisle/shelf words",
              "Close politely"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: Find the Item",
            "introEn": "Play, listen, answer. Replay as needed.",
            "scriptDe": "Entschuldigung, wo finde ich Reis?\n\nReis ist in Gang 4, ganz hinten rechts.\n\nDanke. Und haben Sie auch Sojamilch?\n\nJa. Die ist im Kuehlregal neben dem Joghurt.\n\nSuper. Wie viel kostet die?\n\n2 Euro 49.\n\nDanke schoen. Schoenen Tag!\n\nGern geschehen.",
            "questions": [
              {
                "id": "q1",
                "questionEn": "Where is the rice?",
                "options": [
                  "Aisle 4, back right",
                  "Aisle 2, front left",
                  "At the checkout",
                  "In the fridge"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: Gang 4, ganz hinten rechts."
              },
              {
                "id": "q2",
                "questionEn": "Where is the soy milk?",
                "options": [
                  "Next to yogurt in the fridge",
                  "In the bread section",
                  "In aisle 7",
                  "Outside"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: im Kuehlregal neben dem Joghurt."
              },
              {
                "id": "q3",
                "questionEn": "How much is it?",
                "options": [
                  "2,49 EUR",
                  "2,94 EUR",
                  "4,29 EUR",
                  "1,49 EUR"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: 2 Euro 49."
              }
            ],
            "xp": 26,
            "minutes": 8
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: Polite Help Question",
            "promptEn": "Build the sentence (punctuation included).",
            "tokens": [
              "bitte",
              "helfen",
              "?",
              "Koennen",
              "Sie",
              "mir"
            ],
            "answer": [
              "Koennen",
              "Sie",
              "mir",
              "bitte",
              "helfen",
              "?"
            ],
            "hintEn": "This is the universal A2 help question.",
            "explanationEn": "This is your universal tool. You can add the item after it: Koennen Sie mir bitte helfen? Wo finde ich ...?",
            "xp": 14,
            "minutes": 3
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Mini Drill: Where + Price",
            "promptEn": "Fill the blanks with the best words.",
            "textDe": "Entschuldigung, {1} finde ich {2}? {3} kostet das?",
            "blanks": [
              {
                "id": "1",
                "answer": "wo",
                "hintEn": "where"
              },
              {
                "id": "2",
                "answer": "Reis",
                "hintEn": "item"
              },
              {
                "id": "3",
                "answer": "Wie viel",
                "hintEn": "how much"
              }
            ],
            "explanationEn": "Three high-frequency questions: where is it, where do I find it, how much does it cost.",
            "xp": 16,
            "minutes": 4
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: Your Shopping Interaction",
            "promptEn": "Speak for 50 seconds: ask for 2 items, ask the price of one item, say thank you, and close politely.",
            "timeSec": 50,
            "role": "Customer",
            "usefulFramesDe": [
              "Entschuldigung, wo finde ich ...?",
              "Haben Sie auch ...?",
              "Wie viel kostet das?",
              "Danke schoen. Schoenen Tag!"
            ],
            "xp": 18,
            "minutes": 5
          }
        ]
      },
      {
        "id": "case-00b-arzt",
        "code": "CASE 00B",
        "title": "Doctor Appointment: The First Email",
        "tagline": "A2 writing: simple, polite, and clear.",
        "domain": "health",
        "levelFrom": "A2",
        "levelTo": "A2",
        "estMin": 18,
        "skills": [
          "reading",
          "writing",
          "vocab",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You need a doctor appointment. Your goal: write a short email that is polite and contains the key info (symptoms + availability).",
            "checklist": [
              "Polite greeting",
              "One clear request sentence",
              "2 time options",
              "Polite closing"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Short Reply Template",
            "textDe": "Guten Tag,\n\nvielen Dank fuer Ihre Nachricht. Bitte teilen Sie uns mit, wann Sie Zeit haben (Mo/Di/Mi) und ob es dringend ist.\n\nMit freundlichen Gruessen\nPraxis Team",
            "glossary": [
              {
                "de": "dringend",
                "en": "urgent"
              },
              {
                "de": "teilen Sie uns mit",
                "en": "let us know (formal)"
              },
              {
                "de": "die Praxis",
                "en": "medical practice"
              }
            ],
            "xp": 10,
            "minutes": 4
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Core Sentences",
            "promptEn": "Fill the blanks with the best words.",
            "textDe": "Guten Tag, ich {1} einen Termin. Ich habe seit {2} Tagen Schmerzen. Ich kann am {3} oder am {4}.",
            "blanks": [
              {
                "id": "1",
                "answer": "brauche",
                "hintEn": "need"
              },
              {
                "id": "2",
                "answer": "zwei",
                "hintEn": "number"
              },
              {
                "id": "3",
                "answer": "Montag",
                "hintEn": "day"
              },
              {
                "id": "4",
                "answer": "Dienstag",
                "hintEn": "day"
              }
            ],
            "explanationEn": "Keep the email short. One request sentence + one symptom sentence + one availability sentence.",
            "xp": 16,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Appointment Email",
            "promptEn": "Write 70–100 words. Include: you need an appointment, your symptom (simple), and 2 availability options. Ask for confirmation.",
            "minWords": 70,
            "checklist": [
              "Guten Tag + one-line request",
              "One symptom sentence",
              "Two time options",
              "Ask: Koennen Sie mir bitte bestaetigen ...?",
              "Mit freundlichen Gruessen"
            ],
            "helpfulPhrasesDe": [
              "Ich brauche einen Termin.",
              "Ich habe seit ... Tagen ...",
              "Ich kann am ... oder am ...",
              "Koennen Sie mir bitte den Termin bestaetigen?",
              "Mit freundlichen Gruessen"
            ],
            "modelDe": "Guten Tag,\n\nich brauche einen Termin, weil ich seit zwei Tagen Schmerzen habe. Ich kann am Montag oder am Dienstag am Vormittag. Koennen Sie mir bitte kurz bestaetigen, wann ein Termin moeglich ist?\n\nVielen Dank.\nMit freundlichen Gruessen\n[Name]",
            "xp": 32,
            "minutes": 10
          }
        ]
      },
      {
        "id": "case-07-cafe",
        "code": "CASE 07",
        "title": "Café Order: The Polite Version",
        "tagline": "A2→B1 speaking: orders, questions, and “Ich hätte gern …”.",
        "domain": "daily",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 18,
        "skills": [
          "listening",
          "speaking",
          "vocab",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You’re in a German café. You want to order politely, ask one question, and pay. The goal is not perfect grammar; it is clean, polite A2/B1 interaction.",
            "checklist": [
              "Use “Ich hätte gern …”",
              "Ask one follow-up question",
              "Close politely"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: The Order",
            "introEn": "Play the audio and answer. Replay as needed.",
            "scriptDe": "Guten Tag. Was darf es sein?\n\nIch hätte gern einen Cappuccino, bitte.\n\nMöchten Sie den hier trinken oder zum Mitnehmen?\n\nHier, bitte. Und haben Sie auch Kuchen?\n\nJa, wir haben Käsekuchen und Apfelkuchen.\n\nDann nehme ich ein Stück Käsekuchen. Kann ich mit Karte zahlen?\n\nJa, natürlich. Das macht zusammen 6 Euro 80.\n\nDanke. Stimmt so.\n\nVielen Dank. Schönen Tag noch!",
            "questions": [
              {
                "id": "q1",
                "questionEn": "Where will the customer drink the coffee?",
                "options": [
                  "To go",
                  "Here",
                  "At home",
                  "Outside only"
                ],
                "answerIndex": 1,
                "explanationEn": "They say: \"Hier, bitte.\""
              },
              {
                "id": "q2",
                "questionEn": "Which cake do they choose?",
                "options": [
                  "Apple cake",
                  "Cheesecake",
                  "No cake",
                  "Chocolate cake"
                ],
                "answerIndex": 1,
                "explanationEn": "They choose: \"ein Stück Käsekuchen\"."
              },
              {
                "id": "q3",
                "questionEn": "How much is the total?",
                "options": [
                  "6,80 EUR",
                  "8,60 EUR",
                  "6,08 EUR",
                  "16,80 EUR"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: \"6 Euro 80\"."
              }
            ],
            "xp": 28,
            "minutes": 9
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: Polite Order",
            "promptEn": "Build the sentence exactly (punctuation included).",
            "tokens": [
              "bitte",
              "einen",
              ".",
              "Ich",
              "Cappuccino",
              "hätte",
              "gern",
              ","
            ],
            "answer": [
              "Ich",
              "hätte",
              "gern",
              "einen",
              "Cappuccino",
              ",",
              "bitte",
              "."
            ],
            "hintEn": "“Ich hätte gern …, bitte.” is a classic polite frame.",
            "explanationEn": "This frame is gold for A2/B1. You can swap the item and stay polite: Ich hätte gern einen Tee, bitte.",
            "xp": 14,
            "minutes": 3
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: Your Order",
            "promptEn": "Speak for 45 seconds: order a drink, ask for a cake option, and ask if you can pay by card.",
            "timeSec": 45,
            "role": "Customer",
            "usefulFramesDe": [
              "Ich hätte gern ...",
              "Haben Sie auch ...?",
              "Dann nehme ich ...",
              "Kann ich mit Karte zahlen?",
              "Danke, schönen Tag noch!"
            ],
            "xp": 18,
            "minutes": 4
          }
        ]
      },
      {
        "id": "case-08-bahnhof",
        "code": "CASE 08",
        "title": "Bahnhof Chaos: Rebooking Fast",
        "tagline": "Travel German under stress: Verspätung, Umsteigen, Ausfall.",
        "domain": "travel",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 22,
        "skills": [
          "reading",
          "speaking",
          "vocab",
          "listening"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your train is delayed, then cancelled. You need to understand the announcement and ask the info desk what to do next.",
            "checklist": [
              "Catch key words (Ausfall, Verspätung, Gleis)",
              "Ask a clear question",
              "Confirm the new plan"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Announcement",
            "textDe": "Achtung, bitte. Der ICE 612 nach Köln hat heute circa 35 Minuten Verspätung. Aufgrund einer technischen Störung fällt der Zug anschließend aus.\n\nReisende nach Köln nutzen bitte den nächsten RE um 15:42 Uhr von Gleis 8. In Köln ist ein Umstieg in Richtung Düsseldorf möglich.\n\nWir bitten um Ihr Verständnis.",
            "glossary": [
              {
                "de": "Achtung, bitte",
                "en": "attention, please"
              },
              {
                "de": "circa",
                "en": "approximately"
              },
              {
                "de": "aufgrund",
                "en": "due to (formal)"
              },
              {
                "de": "fällt aus",
                "en": "is cancelled"
              },
              {
                "de": "Reisende",
                "en": "travelers (formal)"
              },
              {
                "de": "der Umstieg",
                "en": "transfer / change"
              },
              {
                "de": "das Gleis",
                "en": "platform (track)"
              }
            ],
            "xp": 12,
            "minutes": 5
          },
          {
            "id": "mcq-1",
            "type": "mcq",
            "title": "Comprehension Check",
            "questionEn": "What should travelers to Köln do?",
            "options": [
              "Wait for the ICE on the same platform",
              "Take the next regional train (RE) at 15:42 from platform 8",
              "Buy a new ticket at the airport",
              "Take a taxi directly to Düsseldorf"
            ],
            "answerIndex": 1,
            "explanationEn": "The announcement says: use the next RE at 15:42 from Gleis 8.",
            "xp": 10,
            "minutes": 2
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Key Phrases",
            "promptEn": "Fill the blanks with the correct word.",
            "textDe": "Der Zug hat {1} Minuten Verspätung. Danach {2} der ICE aus. Ich muss in Köln {3}.",
            "blanks": [
              {
                "id": "1",
                "answer": "35",
                "hintEn": "number"
              },
              {
                "id": "2",
                "answer": "fällt",
                "hintEn": "is cancelled"
              },
              {
                "id": "3",
                "answer": "umsteigen",
                "hintEn": "to change trains"
              }
            ],
            "explanationEn": "These three are the core: Verspätung (delay), ausfallen (cancel), umsteigen (transfer).",
            "xp": 16,
            "minutes": 4
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: Info Desk",
            "promptEn": "Speak for 50 seconds: explain your situation and ask what to do next. Mention destination + platform + transfer.",
            "timeSec": 50,
            "role": "Traveler at DB Info",
            "usefulFramesDe": [
              "Entschuldigung, ich habe eine Frage.",
              "Mein Zug nach ... hat Verspätung / fällt aus.",
              "Von welchem Gleis fährt der nächste Zug?",
              "Muss ich in ... umsteigen?",
              "Vielen Dank für die Hilfe."
            ],
            "xp": 18,
            "minutes": 5
          }
        ]
      },
      {
        "id": "case-09-wg",
        "code": "CASE 09",
        "title": "WG Message: Get the Viewing",
        "tagline": "A2→B1 writing: short, polite, and specific.",
        "domain": "society",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 24,
        "skills": [
          "reading",
          "writing",
          "speaking",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You found a WG room online. To get a viewing, you must write a short message: who you are, when you can come, and why you fit.",
            "checklist": [
              "Be short (no essay)",
              "Include 2 facts (job/study + move-in date)",
              "Ask for a viewing time"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Listing Snippet",
            "textDe": "Zimmer in 3er-WG, 18 m², möbliert. Warmmiete: 520 €. Lage: 5 Min zur U-Bahn.\n\nEinzug ab 01.03. Nichtraucher-WG. Wir suchen eine ruhige Person, die zuverlässig ist.\n\nSchreib uns kurz: Wer bist du? Was machst du? Wann kannst du zur Besichtigung kommen?",
            "glossary": [
              {
                "de": "möbliert",
                "en": "furnished"
              },
              {
                "de": "die Warmmiete",
                "en": "rent incl. utilities"
              },
              {
                "de": "der Einzug",
                "en": "move-in"
              },
              {
                "de": "zuverlässig",
                "en": "reliable"
              },
              {
                "de": "die Besichtigung",
                "en": "viewing"
              }
            ],
            "xp": 10,
            "minutes": 4
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: Key Sentence",
            "promptEn": "Build the sentence (preposition + case matters).",
            "tokens": [
              "Zimmer",
              "mich",
              "für",
              "Ich",
              "interessiere",
              "das",
              "."
            ],
            "answer": [
              "Ich",
              "interessiere",
              "mich",
              "für",
              "das",
              "Zimmer",
              "."
            ],
            "hintEn": "sich interessieren für + Akk.",
            "explanationEn": "sich interessieren für + Akkusativ is a super common application phrase. Learn it as one chunk.",
            "xp": 14,
            "minutes": 3
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: The Message",
            "promptEn": "Write 8–10 sentences to the WG. Include: who you are, what you do, move-in date, and 2 time options for a viewing.",
            "minWords": 110,
            "checklist": [
              "Polite opening (Hallo ...)",
              "Name + what you do (Job/Study)",
              "Move-in date (Einzug ab ...)",
              "2 viewing options (z.B. Dienstag 18 Uhr / Donnerstag 19 Uhr)",
              "One line why you fit (ruhig/zuverlässig)",
              "Polite closing"
            ],
            "helpfulPhrasesDe": [
              "Ich interessiere mich für das Zimmer.",
              "Ich arbeite als ... / Ich studiere ...",
              "Einzug ab ... wäre für mich möglich.",
              "Ich könnte am ... um ... oder am ... um ...",
              "Ich bin ruhig und zuverlässig."
            ],
            "modelDe": "Hallo,\n\nich interessiere mich für das Zimmer in eurer WG. Ich heiße [Name] und arbeite als [Job] in [Stadt]. Einzug ab 01.03. wäre für mich möglich.\n\nIch bin Nichtraucher und eher ruhig. In einer WG ist mir ein respektvoller Umgang wichtig.\n\nFür eine Besichtigung könnte ich am Dienstag um 18 Uhr oder am Donnerstag um 19 Uhr. Passt einer der Termine?\n\nViele Grüße\n[Name]",
            "xp": 36,
            "minutes": 10
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 45s Self-Intro",
            "promptEn": "Speak for 45 seconds: introduce yourself for a WG viewing. Mention job/study, hobbies, and one house rule you respect.",
            "timeSec": 45,
            "usefulFramesDe": [
              "Ich heiße ... und ich komme aus ...",
              "Ich arbeite als ... / Ich studiere ...",
              "In meiner Freizeit ...",
              "Mir ist wichtig, dass ..."
            ],
            "xp": 18,
            "minutes": 4
          }
        ]
      },
      {
        "id": "case-10-gym",
        "code": "CASE 10",
        "title": "Gym Contract: Cancel Cleanly",
        "tagline": "A2→B1 formal basics: Kündigung, Frist, Bestätigung.",
        "domain": "health",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 20,
        "skills": [
          "reading",
          "writing",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You want to cancel a gym contract. You need a short, correct email: cancel, mention the deadline, ask for written confirmation.",
            "checklist": [
              "Use a clear subject line",
              "Mention Kündigungsfrist",
              "Ask for confirmation"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Contract Email",
            "textDe": "Vielen Dank für Ihre Mitgliedschaft.\n\nHinweis: Die Kündigungsfrist beträgt vier Wochen zum Monatsende. Bitte senden Sie Ihre Kündigung schriftlich.\n\nMit freundlichen Grüßen\nFitPlus Team",
            "glossary": [
              {
                "de": "die Mitgliedschaft",
                "en": "membership"
              },
              {
                "de": "der Hinweis",
                "en": "note; information"
              },
              {
                "de": "die Kündigungsfrist",
                "en": "notice period (cancellation)"
              },
              {
                "de": "zum Monatsende",
                "en": "by the end of the month"
              },
              {
                "de": "schriftlich",
                "en": "in writing"
              }
            ],
            "xp": 10,
            "minutes": 4
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Key Phrases",
            "promptEn": "Fill the blanks with the best word.",
            "textDe": "Hiermit {1} ich meine Mitgliedschaft. Bitte {2} Sie mir die Kündigung schriftlich.",
            "blanks": [
              {
                "id": "1",
                "answer": "kündige",
                "hintEn": "I cancel"
              },
              {
                "id": "2",
                "answer": "bestätigen",
                "hintEn": "confirm"
              }
            ],
            "explanationEn": "The verbs are your core tools: kündigen (to cancel) and bestätigen (to confirm).",
            "xp": 14,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Cancellation Email",
            "promptEn": "Write a short formal email (6–9 sentences). Include: membership number (invent one), cancellation date, and request confirmation.",
            "minWords": 95,
            "checklist": [
              "Formal greeting (Sehr geehrte Damen und Herren,)",
              "Clear cancellation sentence",
              "Reference Kündigungsfrist / date",
              "Request written confirmation",
              "Formal closing"
            ],
            "helpfulPhrasesDe": [
              "Hiermit kündige ich meine Mitgliedschaft.",
              "Mitgliedsnummer: ...",
              "Bitte bestätigen Sie mir die Kündigung schriftlich.",
              "Mit freundlichen Grüßen"
            ],
            "modelDe": "Sehr geehrte Damen und Herren,\n\nhiermit kündige ich meine Mitgliedschaft (Mitgliedsnummer: 45721) fristgerecht zum 31.03.\n\nBitte bestätigen Sie mir die Kündigung schriftlich und teilen Sie mir kurz mit, ab wann die Kündigung wirksam ist.\n\nMit freundlichen Grüßen\n[Name]",
            "xp": 34,
            "minutes": 10
          }
        ]
      },
      {
        "id": "case-11-course",
        "code": "CASE 11",
        "title": "Language Course: Reserve a Spot",
        "tagline": "A2→B1: phone info + follow-up email.",
        "domain": "education",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 25,
        "skills": [
          "listening",
          "writing",
          "speaking"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You call a language school. You need schedule + price info, then you write a short email to reserve a spot.",
            "checklist": [
              "Catch time + price",
              "Ask one clarification question",
              "Write a short follow-up"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: Course Info Call",
            "introEn": "Play, listen, answer. Focus on times + price.",
            "scriptDe": "Guten Tag, Sprachschule Mitte.\n\nGuten Tag. Ich interessiere mich für einen A2-Kurs. Wann findet der Kurs statt?\n\nDer Kurs ist montags und mittwochs von 18:00 bis 19:30.\n\nUnd was kostet er?\n\nDer Kurs kostet 260 Euro für acht Wochen.\n\nGibt es noch freie Plätze?\n\nJa, aber nur noch zwei. Möchten Sie einen Platz reservieren?\n\nJa, bitte. Können Sie mir eine E-Mail mit den Infos schicken?\n\nNatürlich. Wie ist Ihre E-Mail-Adresse?",
            "questions": [
              {
                "id": "q1",
                "questionEn": "On which days is the course?",
                "options": [
                  "Monday and Wednesday",
                  "Tuesday and Thursday",
                  "Only Saturday",
                  "Every day"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: montags und mittwochs."
              },
              {
                "id": "q2",
                "questionEn": "What time is it?",
                "options": [
                  "18:00–19:30",
                  "19:30–21:00",
                  "08:00–09:30",
                  "17:00–18:00"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: von 18:00 bis 19:30."
              },
              {
                "id": "q3",
                "questionEn": "How much does it cost?",
                "options": [
                  "260 EUR for 8 weeks",
                  "260 EUR per week",
                  "360 EUR for 8 weeks",
                  "200 EUR total"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: 260 Euro für acht Wochen."
              }
            ],
            "xp": 28,
            "minutes": 10
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: Polite Request",
            "promptEn": "Build the sentence (polite question).",
            "tokens": [
              "bitte",
              "einen",
              "Platz",
              "reservieren",
              "Könnte",
              "ich",
              "?"
            ],
            "answer": [
              "Könnte",
              "ich",
              "bitte",
              "einen",
              "Platz",
              "reservieren",
              "?"
            ],
            "hintEn": "Konjunktiv II = polite request (B1/B2 habit).",
            "explanationEn": "Even at A2/B1, “Könnte ich bitte …?” makes you sound polite and adult.",
            "xp": 14,
            "minutes": 3
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Reservation Email",
            "promptEn": "Write an email to reserve a spot. Include: course level (A2), days, time, and ask what you need to bring.",
            "minWords": 110,
            "checklist": [
              "Polite greeting",
              "Reference the phone call",
              "Repeat schedule + price",
              "Ask one question (materials / placement test)",
              "Polite closing"
            ],
            "helpfulPhrasesDe": [
              "Ich nehme Bezug auf unser Telefongespräch.",
              "Ich interessiere mich für den A2-Kurs.",
              "Könnten Sie mir bitte ...?",
              "Mit freundlichen Grüßen"
            ],
            "xp": 36,
            "minutes": 10
          }
        ]
      },
      {
        "id": "case-12-neighbor",
        "code": "CASE 12",
        "title": "Noisy Neighbor: The Formal Complaint",
        "tagline": "B1→B2 writing: calm tone, facts, and Konjunktiv II.",
        "domain": "society",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 30,
        "skills": [
          "reading",
          "writing",
          "speaking",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your neighbor is loud late at night. You want results, not drama. You will write a formal note to the landlord: facts, dates, and a concrete request.",
            "checklist": [
              "Neutral tone",
              "Concrete dates/times",
              "Polite request (würde / könnte)"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: House Rules Excerpt",
            "textDe": "Hausordnung (Auszug):\n- Ruhezeiten: 22:00–07:00 Uhr.\n- Musik und laute Gespräche sind in dieser Zeit zu vermeiden.\n- Bei wiederholten Verstößen kann die Hausverwaltung eine Abmahnung aussprechen.",
            "glossary": [
              {
                "de": "die Ruhezeit",
                "en": "quiet hours"
              },
              {
                "de": "vermeiden",
                "en": "to avoid"
              },
              {
                "de": "der Verstoß",
                "en": "violation"
              },
              {
                "de": "die Hausverwaltung",
                "en": "property management"
              },
              {
                "de": "die Abmahnung",
                "en": "formal warning"
              }
            ],
            "xp": 12,
            "minutes": 4
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Polite Register",
            "promptEn": "Fill the blanks with the best formal phrases.",
            "textDe": "Ich {1} Sie bitten, die Situation zu prüfen. {2} Sie mir bitte schriftlich bestätigen, wie wir weiter vorgehen.",
            "blanks": [
              {
                "id": "1",
                "answer": "würde",
                "hintEn": "Konjunktiv II"
              },
              {
                "id": "2",
                "answer": "Könnten",
                "hintEn": "polite question"
              }
            ],
            "explanationEn": "B2 writing loves indirect, polite language. It sounds calm and professional and gets better results.",
            "xp": 16,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Landlord Email",
            "promptEn": "Write 170–210 words. Include: 2 specific incidents (date/time), impact, and your request (e.g., warning, reminder of quiet hours).",
            "minWords": 170,
            "checklist": [
              "Formal opening",
              "2 concrete incidents",
              "Neutral language (no insults)",
              "Konjunktiv II request",
              "Request a written response",
              "Formal closing"
            ],
            "helpfulPhrasesDe": [
              "Ich nehme Bezug auf die Hausordnung.",
              "In den letzten Wochen ist es wiederholt zu Lärm gekommen.",
              "Dies hat Auswirkungen auf ...",
              "Ich würde Sie bitten, ...",
              "Über eine Rückmeldung würde ich mich freuen."
            ],
            "xp": 48,
            "minutes": 14
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: Calm Summary",
            "promptEn": "Speak for 60 seconds: summarize the problem calmly, give one example, and propose a solution.",
            "timeSec": 60,
            "usefulFramesDe": [
              "Es geht darum, dass ...",
              "Zum Beispiel am ... um ...",
              "Meines Erachtens wäre es sinnvoll, ...",
              "Daher schlage ich vor, ..."
            ],
            "xp": 20,
            "minutes": 5
          }
        ]
      },
      {
        "id": "case-13-museum",
        "code": "CASE 13",
        "title": "Museum Feedback: Professional Tone",
        "tagline": "B1→B2: praise + critique + suggestion (without sounding rude).",
        "domain": "culture",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 26,
        "skills": [
          "reading",
          "writing",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You visited an exhibition. You want to give feedback: one positive point, one problem, one improvement. The skill: B2 politeness + structure.",
            "checklist": [
              "One positive point",
              "One concrete problem",
              "One realistic suggestion"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Visitor Info",
            "textDe": "Vielen Dank für Ihren Besuch.\n\nWir freuen uns über Ihr Feedback. Bitte nennen Sie konkret, was gut war und was wir verbessern können.\n\nHinweis: Im Eingangsbereich kommt es an Wochenenden häufig zu langen Wartezeiten.",
            "glossary": [
              {
                "de": "konkret",
                "en": "concrete; specific"
              },
              {
                "de": "verbessern",
                "en": "to improve"
              },
              {
                "de": "der Hinweis",
                "en": "note"
              },
              {
                "de": "der Eingangsbereich",
                "en": "entrance area"
              },
              {
                "de": "die Wartezeit",
                "en": "waiting time"
              }
            ],
            "xp": 10,
            "minutes": 4
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: Soft Critique",
            "promptEn": "Build a polite, indirect sentence.",
            "tokens": [
              "wäre",
              "Meines",
              "Erachtens",
              "es",
              "sinnvoll",
              ",",
              "die",
              "Wartezeiten",
              "zu",
              "reduzieren",
              "."
            ],
            "answer": [
              "Meines",
              "Erachtens",
              "wäre",
              "es",
              "sinnvoll",
              ",",
              "die",
              "Wartezeiten",
              "zu",
              "reduzieren",
              "."
            ],
            "hintEn": "B2: Meines Erachtens + wäre es sinnvoll, ...",
            "explanationEn": "This is a B2-style soft recommendation. It sounds less aggressive than “Sie müssen …”.",
            "xp": 14,
            "minutes": 3
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Feedback Email",
            "promptEn": "Write 140–180 words to the museum. Include: 1 praise, 1 concrete issue, 1 improvement suggestion. Keep it polite.",
            "minWords": 140,
            "checklist": [
              "Greeting + context",
              "One positive point",
              "One concrete problem (when/where)",
              "Suggestion (wäre es sinnvoll, ...)",
              "Friendly closing"
            ],
            "helpfulPhrasesDe": [
              "Vielen Dank für ...",
              "Besonders gut gefallen hat mir ...",
              "Allerdings ist mir aufgefallen, dass ...",
              "Meines Erachtens wäre es sinnvoll, ...",
              "Mit freundlichen Grüßen"
            ],
            "xp": 42,
            "minutes": 12
          }
        ]
      },
      {
        "id": "case-14-interview",
        "code": "CASE 14",
        "title": "Interview Follow-up: Impress Without Overdoing It",
        "tagline": "B1→B2: confirmation, gratitude, and one sharp detail.",
        "domain": "work",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 28,
        "skills": [
          "reading",
          "writing",
          "speaking"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You had an interview in German. Now you send a follow-up email: thank them, confirm interest, and reference one concrete point.",
            "checklist": [
              "Short and professional",
              "Reference one detail",
              "Polite closing"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Interview Invite",
            "textDe": "Vielen Dank für Ihre Bewerbung.\n\nWir möchten Sie gern zu einem Gespräch einladen. Termin: Dienstag, 10:00 Uhr. Ort: Musterstraße 12.\n\nBitte bringen Sie, wenn möglich, Arbeitsproben mit.\n\nMit freundlichen Grüßen\nHR Team",
            "glossary": [
              {
                "de": "die Bewerbung",
                "en": "application"
              },
              {
                "de": "einladen",
                "en": "to invite"
              },
              {
                "de": "wenn möglich",
                "en": "if possible"
              },
              {
                "de": "die Arbeitsprobe",
                "en": "work sample"
              }
            ],
            "xp": 10,
            "minutes": 4
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: The Follow-up Opener",
            "promptEn": "Build the sentence (classic B2 opener).",
            "tokens": [
              "für",
              "Gespräch",
              "das",
              "Vielen",
              "Dank",
              "."
            ],
            "answer": [
              "Vielen",
              "Dank",
              "für",
              "das",
              "Gespräch",
              "."
            ],
            "hintEn": "Short, clean, professional.",
            "explanationEn": "This opener is enough. Then add one detail and your next step.",
            "xp": 12,
            "minutes": 2
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Follow-up Email",
            "promptEn": "Write 120–160 words. Thank them, confirm your interest, and reference one topic (e.g., projects, onboarding, team culture).",
            "minWords": 120,
            "checklist": [
              "Subject + greeting",
              "Thank them",
              "Confirm interest",
              "One concrete reference",
              "Polite closing"
            ],
            "helpfulPhrasesDe": [
              "Vielen Dank für das Gespräch.",
              "Ich habe mich über den Austausch sehr gefreut.",
              "Ich bin weiterhin sehr interessiert an der Position.",
              "Besonders spannend fand ich ...",
              "Mit freundlichen Grüßen"
            ],
            "xp": 38,
            "minutes": 10
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 60s Self-Pitch",
            "promptEn": "Speak for 60 seconds: who you are, what you do well, and one example (STAR style: Situation–Task–Action–Result).",
            "timeSec": 60,
            "usefulFramesDe": [
              "Ich habe Erfahrung mit ...",
              "Ein konkretes Beispiel: ...",
              "Daher kann ich ...",
              "Zusammenfassend ..."
            ],
            "xp": 20,
            "minutes": 5
          }
        ]
      },
      {
        "id": "case-15-school-policy",
        "code": "CASE 15",
        "title": "School Policy Debate: Smartphone Ban?",
        "tagline": "B1→B2 argumentation: pros/cons, conditions, recommendation.",
        "domain": "politics",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 32,
        "skills": [
          "reading",
          "writing",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "A school considers banning smartphones during classes. You read a short text, then write your own structured opinion with B2 connectors.",
            "checklist": [
              "Present both sides",
              "Use connectors",
              "End with a conditional recommendation"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Short Article",
            "textDe": "Viele Schulen diskutieren über ein Smartphone-Verbot im Unterricht. Befürworter argumentieren, dass Handys ablenken und Konflikte verursachen. Außerdem könne ein Verbot die Konzentration verbessern.\n\nKritiker betonen jedoch, dass digitale Kompetenz wichtig ist. Zudem nutzen manche Schüler das Smartphone für Übersetzungen oder Lern-Apps. Entscheidend ist daher die Frage: Verbieten wir pauschal, oder schaffen wir klare Regeln?\n\nMeines Erachtens braucht es einen Mittelweg: klare Zeiten ohne Handy, aber sinnvolle Nutzung für Lernzwecke.",
            "glossary": [
              {
                "de": "die Befürworter",
                "en": "supporters"
              },
              {
                "de": "ablenken",
                "en": "to distract"
              },
              {
                "de": "betonen",
                "en": "to emphasize"
              },
              {
                "de": "pauschal",
                "en": "blanket; across the board"
              },
              {
                "de": "der Mittelweg",
                "en": "middle way / compromise"
              }
            ],
            "xp": 14,
            "minutes": 5
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Argumentation Connectors",
            "promptEn": "Fill the blanks with connectors that fit the logic.",
            "textDe": "Einerseits lenken Handys ab, {1} sind digitale Fähigkeiten wichtig. {2} braucht es klare Regeln, {3} ein komplettes Verbot.",
            "blanks": [
              {
                "id": "1",
                "answer": "andererseits",
                "hintEn": "on the other hand"
              },
              {
                "id": "2",
                "answer": "Daher",
                "hintEn": "therefore"
              },
              {
                "id": "3",
                "answer": "statt",
                "hintEn": "instead of"
              }
            ],
            "explanationEn": "B2 writing is logic management: contrast, conclusion, and a clean alternative.",
            "xp": 18,
            "minutes": 5
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Opinion Text",
            "promptEn": "Write 180–220 words. Structure: intro, pros/cons, recommendation with conditions. Use at least 5 connectors.",
            "minWords": 180,
            "checklist": [
              "Intro with context",
              "2 pros + 2 cons",
              "At least 5 connectors",
              "Recommendation with conditions (wenn/sofern)",
              "Conclusion"
            ],
            "helpfulPhrasesDe": [
              "Einerseits ..., andererseits ...",
              "Zwar ..., aber ...",
              "Daher ...",
              "Zusammenfassend ...",
              "Wenn ..., dann ..."
            ],
            "xp": 52,
            "minutes": 14
          }
        ]
      },
      {
        "id": "case-16-volunteer",
        "code": "CASE 16",
        "title": "Volunteer Role: Apply and Ask Smart Questions",
        "tagline": "B1→B2: friendly tone, structure, and reliability signals.",
        "domain": "society",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 26,
        "skills": [
          "listening",
          "writing",
          "speaking"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You want to volunteer. You listen to info, then write an application message and introduce yourself.",
            "checklist": [
              "Mention availability",
              "Ask one practical question",
              "Sound reliable"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: Volunteer Info",
            "introEn": "Play the audio and answer.",
            "scriptDe": "Guten Tag und danke für Ihr Interesse. Wir suchen Helferinnen und Helfer für ein Nachbarschaftsprojekt. Die Aufgaben sind: Einkäufe für ältere Menschen, Begleitung zu Terminen und Unterstützung bei kleinen Formularen.\n\nWir treffen uns einmal pro Woche, meistens am Samstagvormittag. Wichtig ist Zuverlässigkeit. Erfahrung ist nicht nötig, aber gute Deutschkenntnisse sind hilfreich.\n\nWenn Sie mitmachen möchten, schreiben Sie uns kurz: wer Sie sind, wann Sie Zeit haben und welche Aufgaben für Sie passen.",
            "questions": [
              {
                "id": "q1",
                "questionEn": "When do they usually meet?",
                "options": [
                  "Saturday morning",
                  "Every evening",
                  "Sunday night",
                  "Only online"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: meistens am Samstagvormittag."
              },
              {
                "id": "q2",
                "questionEn": "What is especially important?",
                "options": [
                  "A driver’s license",
                  "Reliability",
                  "Perfect German",
                  "A university degree"
                ],
                "answerIndex": 1,
                "explanationEn": "They say: Wichtig ist Zuverlässigkeit."
              }
            ],
            "xp": 24,
            "minutes": 8
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Application Message",
            "promptEn": "Write 120–160 words: who you are, your availability, which tasks fit you, and one question.",
            "minWords": 120,
            "checklist": [
              "Short intro",
              "Availability (e.g., Saturdays + one weekday)",
              "Preferred tasks",
              "One practical question",
              "Friendly closing"
            ],
            "helpfulPhrasesDe": [
              "Ich hätte Interesse, mitzumachen.",
              "Ich hätte Zeit am ...",
              "Besonders gut passen würde für mich ...",
              "Könnten Sie mir bitte sagen, ...?",
              "Viele Grüße"
            ],
            "xp": 38,
            "minutes": 10
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 50s Intro",
            "promptEn": "Speak for 50 seconds: introduce yourself, say why you want to help, and mention your availability.",
            "timeSec": 50,
            "usefulFramesDe": [
              "Ich würde gern helfen, weil ...",
              "Ich habe Zeit am ...",
              "Ich kann gut ...",
              "Ich freue mich auf ..."
            ],
            "xp": 18,
            "minutes": 5
          }
        ]
      },
      {
        "id": "case-17-sicknote",
        "code": "CASE 17",
        "title": "Sick Note: HR Email Without Panic",
        "tagline": "B1→B2: clear info, Perfekt, and the right attachments.",
        "domain": "work",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 24,
        "skills": [
          "reading",
          "writing",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You are sick and need to inform your employer in German. You will write a short email: status, timeframe, and next step.",
            "checklist": [
              "State: krank / arbeitsunfähig",
              "Timeframe",
              "Attachment / doctor note if needed"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Company Policy",
            "textDe": "Hinweis (HR): Bitte melden Sie sich am ersten Krankheitstag bei Ihrer Führungskraft. Ab dem dritten Krankheitstag benötigen wir eine Arbeitsunfähigkeitsbescheinigung (AU).\n\nVielen Dank.",
            "glossary": [
              {
                "de": "sich melden",
                "en": "to report / inform"
              },
              {
                "de": "der Krankheitstag",
                "en": "day of sickness"
              },
              {
                "de": "benötigen",
                "en": "to require"
              },
              {
                "de": "die Arbeitsunfähigkeitsbescheinigung (AU)",
                "en": "doctor’s note (sick note)"
              },
              {
                "de": "die Führungskraft",
                "en": "manager / supervisor"
              }
            ],
            "xp": 10,
            "minutes": 4
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Email Template",
            "promptEn": "Fill the blanks with the best words.",
            "textDe": "Guten Morgen, ich bin heute {1} und kann {2} nicht arbeiten. Voraussichtlich bin ich ab {3} wieder da.",
            "blanks": [
              {
                "id": "1",
                "answer": "krank",
                "hintEn": "sick"
              },
              {
                "id": "2",
                "answer": "leider",
                "hintEn": "unfortunately"
              },
              {
                "id": "3",
                "answer": "Donnerstag",
                "hintEn": "day (example)"
              }
            ],
            "explanationEn": "Short is good. State the status, the impact, and the expected return date.",
            "xp": 14,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Email to Manager",
            "promptEn": "Write 90–130 words. Include: you are sick today, expected return date, and that you will send an AU if needed.",
            "minWords": 90,
            "checklist": [
              "Greeting",
              "Status + timeframe",
              "AU mention (ab dem 3. Tag)",
              "Offer a next step (handover / urgent items)",
              "Closing"
            ],
            "helpfulPhrasesDe": [
              "Ich bin heute leider krank.",
              "Voraussichtlich bin ich ab ... wieder da.",
              "Falls nötig, reiche ich die AU nach.",
              "Bei dringenden Themen erreichen Sie mich ..."
            ],
            "xp": 34,
            "minutes": 10
          }
        ]
      },
      {
        "id": "case-18-eco-letter",
        "code": "CASE 18",
        "title": "Recycling Rules: Write to the City",
        "tagline": "B2: argumentation + formal tone + realistic proposal.",
        "domain": "environment",
        "levelFrom": "B2",
        "levelTo": "B2",
        "estMin": 34,
        "skills": [
          "reading",
          "writing",
          "speaking",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your city changes recycling rules. You want to comment: support the goal, point out a problem, and propose a practical improvement.",
            "checklist": [
              "Formal tone",
              "One concrete problem",
              "One realistic proposal",
              "Clear connectors"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: City Notice",
            "textDe": "Die Stadt führt neue Regeln für die Mülltrennung ein. Ab April werden zusätzliche Behälter für Bioabfälle bereitgestellt. Ziel ist es, die Recyclingquote zu erhöhen.\n\nKritik gibt es vor allem in dicht bebauten Vierteln: Dort fehlt Platz für weitere Tonnen. Die Stadt prüft daher Sammelstellen und flexiblere Abholzeiten.\n\nWir freuen uns über Anregungen aus der Bevölkerung.",
            "glossary": [
              {
                "de": "die Mülltrennung",
                "en": "waste separation"
              },
              {
                "de": "bereitstellen",
                "en": "to provide"
              },
              {
                "de": "die Recyclingquote",
                "en": "recycling rate"
              },
              {
                "de": "dicht bebaut",
                "en": "densely built-up"
              },
              {
                "de": "die Sammelstelle",
                "en": "collection point"
              },
              {
                "de": "die Anregung",
                "en": "suggestion (formal)"
              }
            ],
            "xp": 14,
            "minutes": 5
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Formal Email",
            "promptEn": "Write 180–220 words to the city office. Include: your position, one problem, and one improvement proposal. Use B2 connectors.",
            "minWords": 180,
            "checklist": [
              "Formal opening",
              "Clear position",
              "One concrete problem (space, logistics)",
              "One proposal (Sammelstellen, schedule, info campaign)",
              "Connectors + conclusion"
            ],
            "helpfulPhrasesDe": [
              "Ich nehme Bezug auf ...",
              "Meines Erachtens ...",
              "Zwar ..., aber ...",
              "Daher schlage ich vor, ...",
              "Zusammenfassend ..."
            ],
            "xp": 54,
            "minutes": 15
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 75s Position",
            "promptEn": "Speak for 75 seconds: summarize the new rules, state your position, and propose one improvement.",
            "timeSec": 75,
            "usefulFramesDe": [
              "Es geht darum, dass ...",
              "Einerseits ..., andererseits ...",
              "Daher schlage ich vor, ...",
              "Zusammenfassend ..."
            ],
            "xp": 22,
            "minutes": 6
          }
        ]
      },
      {
        "id": "case-01-parcel",
        "code": "CASE 01",
        "title": "The Vanishing Parcel",
        "tagline": "A delivery status, a missing box, and a polite-but-firm complaint.",
        "domain": "daily",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 20,
        "skills": [
          "reading",
          "writing",
          "speaking",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your package says delivered. Your door says: no. You need to contact customer support in German, clearly and politely.",
            "checklist": [
              "Use polite openings and closings",
              "Give facts: date, address, tracking number",
              "Ask for a concrete next step"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Delivery Email",
            "textDe": "Betreff: Zustellung Ihrer Sendung\n\nGuten Tag,\n\nlaut System wurde Ihre Sendung am Dienstag um 14:20 Uhr zugestellt. Falls Sie das Paket nicht erhalten haben, prüfen Sie bitte zuerst, ob es bei Nachbarn abgegeben wurde.\n\nSollte das nicht der Fall sein, antworten Sie bitte auf diese E-Mail und nennen Sie Ihre vollständige Adresse sowie die Sendungsnummer.\n\nMit freundlichen Grüßen\nIhr Kundenservice",
            "glossary": [
              {
                "de": "laut System",
                "en": "according to the system"
              },
              {
                "de": "die Sendung",
                "en": "shipment / parcel"
              },
              {
                "de": "abgeben",
                "en": "to hand over / drop off"
              },
              {
                "de": "der Fall",
                "en": "case; situation"
              },
              {
                "de": "nennen",
                "en": "to name; to state"
              }
            ],
            "xp": 10,
            "minutes": 4
          },
          {
            "id": "mcq-1",
            "type": "mcq",
            "title": "Comprehension Check",
            "questionEn": "What does the customer service ask you to do first?",
            "options": [
              "Call the police immediately",
              "Check if a neighbor received the parcel",
              "Go to the warehouse and pick it up yourself",
              "Write a public complaint on social media"
            ],
            "answerIndex": 1,
            "explanationEn": "They say: first check whether it was left with neighbors (\"bei Nachbarn abgegeben\").",
            "xp": 10,
            "minutes": 2
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Connector Upgrade",
            "promptEn": "Fill the blanks with the best connector/phrase.",
            "textDe": "Ich habe bei den Nachbarn nachgefragt, {1} konnte niemand das Paket annehmen. {2} bitte ich Sie, eine Nachforschung einzuleiten.",
            "blanks": [
              {
                "id": "1",
                "answer": "aber",
                "hintEn": "contrast (but)"
              },
              {
                "id": "2",
                "answer": "Daher",
                "hintEn": "therefore"
              }
            ],
            "explanationEn": "\"aber\" contrasts the result; \"Daher\" introduces the consequence. In B1/B2 writing, clean connectors matter a lot.",
            "xp": 14,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: A Short Complaint Email",
            "promptEn": "Write 5–8 sentences to customer service. Include: tracking number, what you already checked, and what you want them to do next.",
            "minWords": 60,
            "checklist": [
              "Polite opening (Guten Tag ...)",
              "State the problem in 1 sentence",
              "Mention what you checked (neighbors / building)",
              "Ask for a concrete action (Nachforschung / replacement / refund)",
              "Polite closing"
            ],
            "helpfulPhrasesDe": [
              "Ich möchte mich über ... beschweren.",
              "Ich habe bei den Nachbarn nachgefragt, aber ...",
              "Ich würde Sie bitten, ...",
              "Könnten Sie bitte ...?",
              "Mit freundlichen Grüßen"
            ],
            "modelDe": "Guten Tag,\n\nich wende mich an Sie wegen meiner Sendung (Sendungsnummer: 123456). Laut System wurde das Paket am Dienstag um 14:20 Uhr zugestellt, aber ich habe es nicht erhalten. Ich habe bereits bei den Nachbarn nachgefragt und im Hausflur gesucht, ohne Erfolg.\n\nIch würde Sie bitten, eine Nachforschung einzuleiten und mir kurz mitzuteilen, wie wir weiter vorgehen.\n\nMit freundlichen Grüßen\n[Name]",
            "xp": 28,
            "minutes": 8
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: Phone Call Summary",
            "promptEn": "Imagine you call support. Speak for ~45 seconds: what happened, what you checked, and what you need from them.",
            "timeSec": 45,
            "role": "Customer to support agent",
            "usefulFramesDe": [
              "Guten Tag, ich rufe an, weil ...",
              "Laut System wurde ..., aber ...",
              "Ich habe schon ..., trotzdem ...",
              "Könnten Sie bitte ...?"
            ],
            "xp": 18,
            "minutes": 4
          }
        ]
      },
      {
        "id": "case-02-minutes",
        "code": "CASE 02",
        "title": "Office Politics: The Minutes",
        "tagline": "Turn messy meeting notes into clear German decisions and next steps.",
        "domain": "work",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 25,
        "skills": [
          "reading",
          "writing",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You attended a German meeting. Now you must write a short, professional summary email with decisions and actions.",
            "checklist": [
              "Use neutral tone",
              "Use connectors to structure",
              "Be specific with dates/tasks"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Raw Notes",
            "textDe": "Notizen (intern):\n- Einerseits wollen wir schneller releasen, andererseits fehlt QA-Kapazität.\n- Vorschlag: Feature-Flags + kleineres Release.\n- Frist: Freitag 16:00 für Testplan.\n- Während des Meetings kamen neue Infos vom Vertrieb: Kunde X erwartet ein Update bis Ende der Woche.\n- Entscheidung: Release am Dienstag, sofern Tests grün sind.",
            "glossary": [
              {
                "de": "die Kapazität",
                "en": "capacity"
              },
              {
                "de": "der Vertrieb",
                "en": "sales department"
              },
              {
                "de": "sofern",
                "en": "provided that; if"
              },
              {
                "de": "grün sein (Tests)",
                "en": "to be green / passing"
              }
            ],
            "xp": 12,
            "minutes": 4
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Word Order Drill",
            "promptEn": "Fill the blanks with the correct form.",
            "textDe": "Wir releasen am Dienstag, {1} die Tests grün sind. {2} des Meetings kamen neue Infos.",
            "blanks": [
              {
                "id": "1",
                "answer": "sofern",
                "hintEn": "provided that"
              },
              {
                "id": "2",
                "answer": "Während",
                "hintEn": "during"
              }
            ],
            "explanationEn": "\"sofern\" introduces a condition; \"Während\" can be used as a preposition (Während des Meetings ...) or as a conjunction (Während wir ...).",
            "xp": 14,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Summary Email",
            "promptEn": "Write a concise internal email (8–12 sentences): decisions, deadlines, and who does what. Keep it neutral and professional.",
            "minWords": 120,
            "checklist": [
              "Opening + context (kurze Zusammenfassung ...)",
              "One paragraph for decisions",
              "One paragraph for action items + deadlines",
              "Use at least 3 connectors (zwar/aber, daher, darüber hinaus ...)",
              "Professional closing"
            ],
            "helpfulPhrasesDe": [
              "Hier eine kurze Zusammenfassung unseres Meetings.",
              "Wir haben beschlossen, ...",
              "Die Frist endet am ...",
              "Darüber hinaus sollten wir ...",
              "Zusammenfassend lässt sich sagen, dass ..."
            ],
            "xp": 34,
            "minutes": 10
          }
        ]
      },
      {
        "id": "case-03-rent",
        "code": "CASE 03",
        "title": "Rising Rent: Negotiation",
        "tagline": "Formal tone, Konjunktiv II, and a letter that gets results.",
        "domain": "society",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 30,
        "skills": [
          "reading",
          "writing",
          "speaking",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your landlord announces a rent increase. You want to negotiate: politely, clearly, and with arguments.",
            "checklist": [
              "Use formal register (Sie)",
              "Reference dates/amounts",
              "Ask for a written response"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Notice",
            "textDe": "Sehr geehrte Mieterin, sehr geehrter Mieter,\n\nwir informieren Sie hiermit, dass die monatliche Kaltmiete ab dem 01.04. um 60 Euro erhöht wird. Die Anpassung erfolgt aufgrund gestiegener Instandhaltungskosten.\n\nBitte überweisen Sie den neuen Betrag ab dem genannten Datum.\n\nMit freundlichen Grüßen\nHausverwaltung",
            "glossary": [
              {
                "de": "hiermit",
                "en": "hereby"
              },
              {
                "de": "die Kaltmiete",
                "en": "rent excluding utilities"
              },
              {
                "de": "die Anpassung",
                "en": "adjustment"
              },
              {
                "de": "die Instandhaltungskosten",
                "en": "maintenance costs"
              }
            ],
            "xp": 12,
            "minutes": 4
          },
          {
            "id": "mcq-1",
            "type": "mcq",
            "title": "Register Check",
            "questionEn": "Which sentence fits a formal negotiation letter best?",
            "options": [
              "Ey, das ist zu viel. Mach mal weniger!",
              "Ich würde Sie bitten, mir die Begründung schriftlich zu bestätigen.",
              "Keine Ahnung, aber das ist nicht fair.",
              "Du musst die Miete reduzieren."
            ],
            "answerIndex": 1,
            "explanationEn": "Konjunktiv II (\"würde ... bitten\") is a classic polite, formal structure for B2 writing.",
            "xp": 10,
            "minutes": 3
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Formal Letter",
            "promptEn": "Write a formal letter to the Hausverwaltung. Ask for the justification, propose an alternative (smaller increase or phased), and request a response.",
            "minWords": 160,
            "checklist": [
              "Formal opening (Sehr geehrte Damen und Herren, ...)",
              "Reference the notice date and amount",
              "Use at least 2 arguments (e.g., apartment condition, market comparison, your situation)",
              "Use Konjunktiv II for polite requests",
              "Formal closing"
            ],
            "helpfulPhrasesDe": [
              "Ich nehme Bezug auf Ihr Schreiben vom ...",
              "Meines Erachtens ist die Erhöhung ...",
              "Ich würde Sie bitten, ...",
              "Könnten Sie mir bitte ...",
              "Über eine zeitnahe Rückmeldung würde ich mich freuen."
            ],
            "xp": 40,
            "minutes": 12
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: Negotiation Pitch",
            "promptEn": "Speak for 60 seconds as if you meet the landlord: state your position, give 2 reasons, offer a compromise.",
            "timeSec": 60,
            "role": "Tenant negotiating",
            "usefulFramesDe": [
              "Ich verstehe, dass ..., allerdings ...",
              "Einerseits ..., andererseits ...",
              "Im Zweifel könnten wir ...",
              "Wäre es möglich, ...?"
            ],
            "xp": 20,
            "minutes": 5
          }
        ]
      },
      {
        "id": "case-04-clinic",
        "code": "CASE 04",
        "title": "The Clinic Puzzle",
        "tagline": "Listening under pressure: symptoms, schedules, and the right questions.",
        "domain": "health",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 20,
        "skills": [
          "listening",
          "speaking",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You call a clinic. You must explain symptoms, understand the appointment options, and confirm what to bring.",
            "checklist": [
              "Catch dates and times",
              "Ask follow-up questions",
              "Use simple past (hatte, war)"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: Appointment Call",
            "introEn": "Press play and listen (use the voice button). Then answer the questions. You can replay as needed.",
            "scriptDe": "Praxis am Park, guten Tag.\n\nGuten Tag, ich hätte gern einen Termin. Ich habe seit zwei Tagen starke Halsschmerzen und Fieber.\n\nHaben Sie auch Husten?\n\nEin bisschen, aber nicht ständig.\n\nOkay. Wir hätten morgen um 9:30 oder am Donnerstag um 16:10 einen Termin.\n\nMorgen um 9:30 passt. Muss ich etwas mitbringen?\n\nBitte bringen Sie Ihre Versicherungskarte mit. Und wenn möglich: eine Maske.\n\nAlles klar, vielen Dank.\n\nGern. Auf Wiederhören.",
            "questions": [
              {
                "id": "q1",
                "questionEn": "How long has the caller had symptoms?",
                "options": [
                  "Since two days",
                  "Since two weeks",
                  "Since this morning",
                  "Since yesterday evening"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: \"seit zwei Tagen\"."
              },
              {
                "id": "q2",
                "questionEn": "Which appointment does the caller choose?",
                "options": [
                  "Tomorrow 9:30",
                  "Tomorrow 16:10",
                  "Thursday 9:30",
                  "Thursday 16:10"
                ],
                "answerIndex": 0,
                "explanationEn": "They choose: \"Morgen um 9:30\"."
              },
              {
                "id": "q3",
                "questionEn": "What do they need to bring?",
                "options": [
                  "Passport",
                  "Insurance card (and ideally a mask)",
                  "A blood test result",
                  "Cash only"
                ],
                "answerIndex": 1,
                "explanationEn": "They ask for the insurance card, and if possible: a mask."
              }
            ],
            "xp": 28,
            "minutes": 10
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: Describe Symptoms",
            "promptEn": "Speak for 40 seconds: describe your symptoms, how long, and ask for an appointment. Keep it simple and clear.",
            "timeSec": 40,
            "usefulFramesDe": [
              "Ich habe seit ...",
              "Ich fühle mich ...",
              "Haben Sie einen Termin ...?",
              "Muss ich etwas mitbringen?"
            ],
            "xp": 18,
            "minutes": 4
          }
        ]
      },
      {
        "id": "case-05-council",
        "code": "CASE 05",
        "title": "Council Debate: Traffic Plan",
        "tagline": "B2 argumentation: structure, nuance, and a sharp opinion text.",
        "domain": "politics",
        "levelFrom": "B2",
        "levelTo": "B2",
        "estMin": 35,
        "skills": [
          "reading",
          "writing",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You read an editorial about a new traffic measure. Then you write your own opinion text with clear structure and connectors.",
            "checklist": [
              "Use at least 5 connectors",
              "Present both sides",
              "End with a recommendation"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Editorial",
            "textDe": "Die Stadt plant eine neue Maßnahme: Eine Gebühr für Autos in der Innenstadt. Ziel ist es, den Verkehr zu reduzieren und die Luftqualität zu verbessern. Kritiker warnen jedoch vor sozialen Folgen. Wer außerhalb wohnt, sei auf das Auto angewiesen.\n\nBefürworter betonen, dass der öffentliche Nahverkehr ausgebaut werden soll. Außerdem könnten Lieferzeiten besser geregelt werden. Langfristig würde die Stadt attraktiver: weniger Lärm, mehr Platz für Fahrräder und Fußgänger.\n\nDie entscheidende Frage lautet: Wird die Gebühr wirklich zu weniger Verkehr führen, oder belastet sie nur bestimmte Gruppen? Ohne klare Alternativen droht Frust. Mit guter Planung kann die Maßnahme jedoch ein Schritt zu einer gesünderen Stadt sein.",
            "glossary": [
              {
                "de": "die Gebühr",
                "en": "fee"
              },
              {
                "de": "die Befürworter",
                "en": "supporters"
              },
              {
                "de": "belasten",
                "en": "to burden"
              },
              {
                "de": "drohen",
                "en": "to threaten; to loom"
              }
            ],
            "xp": 14,
            "minutes": 5
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Argumentation Connectors",
            "promptEn": "Fill the blanks with connectors that fit the logic.",
            "textDe": "Einerseits kann eine Gebühr den Verkehr senken, {1} braucht es Alternativen. {2} der Nahverkehr verbessert wird, kann die Maßnahme fairer sein. {3} sollte die Stadt soziale Ausnahmen prüfen.",
            "blanks": [
              {
                "id": "1",
                "answer": "andererseits",
                "hintEn": "on the other hand"
              },
              {
                "id": "2",
                "answer": "Wenn",
                "hintEn": "if"
              },
              {
                "id": "3",
                "answer": "Daher",
                "hintEn": "therefore"
              }
            ],
            "explanationEn": "B2 writing needs precise logic: present both sides, state the condition, then draw a conclusion.",
            "xp": 18,
            "minutes": 5
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Opinion Text",
            "promptEn": "Write 180–220 words: your opinion about the fee. Structure: intro, pros/cons, recommendation. Use formal/neutral style.",
            "minWords": 180,
            "checklist": [
              "Clear intro (Thema + Kontext)",
              "At least 2 pros and 2 cons",
              "Use B2 connectors (einerseits/andererseits, obwohl, daher, darüber hinaus, zusammenfassend)",
              "Recommendation with conditions"
            ],
            "helpfulPhrasesDe": [
              "Meines Erachtens ...",
              "Zwar ..., aber ...",
              "Obwohl ..., sollte ...",
              "Darüber hinaus ...",
              "Zusammenfassend lässt sich sagen, dass ..."
            ],
            "xp": 48,
            "minutes": 14
          }
        ]
      },
      {
        "id": "case-06-green",
        "code": "CASE 06",
        "title": "Green Weekend: Convenience vs Sustainability",
        "tagline": "B2 compromise language: clear recommendation without sounding extreme.",
        "domain": "environment",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 25,
        "skills": [
          "listening",
          "writing",
          "speaking"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You listen to a short podcast snippet about travel choices, then write a forum post and summarize it out loud.",
            "checklist": [
              "Use nuanced language",
              "Give concrete examples",
              "End with a practical recommendation"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: Podcast Snippet",
            "introEn": "Play the audio (TTS) and answer. Focus on main idea + one detail.",
            "scriptDe": "Viele Menschen wollen umweltfreundlich reisen, aber im Alltag ist das nicht immer einfach. Einerseits ist der Zug oft die nachhaltigere Option. Andererseits sind Tickets manchmal teuer oder Verbindungen dauern lange.\n\nMeines Erachtens hilft es, realistisch zu planen: Für kurze Strecken lohnt es sich, den Zug früh zu buchen. Wenn man doch fliegen muss, kann man zumindest weniger oft fliegen und länger bleiben. Darüber hinaus kann man vor Ort viel tun: zu Fuß gehen, Fahrrad fahren oder öffentliche Verkehrsmittel nutzen.",
            "questions": [
              {
                "id": "q1",
                "questionEn": "What is the speaker’s main point?",
                "options": [
                  "Only flying is acceptable",
                  "Sustainable travel requires realistic planning and compromises",
                  "Trains are always cheaper than planes",
                  "People should never travel"
                ],
                "answerIndex": 1,
                "explanationEn": "They argue for realistic planning and compromise: not extreme, but practical."
              },
              {
                "id": "q2",
                "questionEn": "What concrete tip is mentioned?",
                "options": [
                  "Book train tickets early for short distances",
                  "Always rent a car",
                  "Avoid public transport",
                  "Only travel in winter"
                ],
                "answerIndex": 0,
                "explanationEn": "They say: \"den Zug früh zu buchen\"."
              }
            ],
            "xp": 26,
            "minutes": 9
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Forum Post",
            "promptEn": "Write a short forum post (120–160 words): your travel habits + 2 realistic changes you can commit to.",
            "minWords": 120,
            "checklist": [
              "Personal angle + concrete example",
              "2 realistic changes",
              "At least 4 connectors (einerseits/andererseits, daher, trotzdem, darüber hinaus ...)",
              "End with a friendly question to others"
            ],
            "helpfulPhrasesDe": [
              "Einerseits ..., andererseits ...",
              "Im Zweifel ...",
              "Trotzdem ...",
              "Darüber hinaus ..."
            ],
            "xp": 36,
            "minutes": 10
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 30s Summary",
            "promptEn": "Speak for 30 seconds summarizing the podcast: problem, compromise, and one concrete tip.",
            "timeSec": 30,
            "usefulFramesDe": [
              "Es geht darum, dass ...",
              "Einerseits ..., andererseits ...",
              "Zusammenfassend ..."
            ],
            "xp": 16,
            "minutes": 4
          }
        ]
      },
      {
        "id": "case-19-buergeramt",
        "code": "CASE 19",
        "title": "Bürgeramt Blitz: Anmeldung",
        "tagline": "A2→B1 survival: appointment, documents, and polite questions.",
        "domain": "daily",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 22,
        "skills": [
          "listening",
          "writing",
          "speaking",
          "grammar",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You moved. Now Germany wants paperwork. Your goal: book an appointment, know the documents, and ask 2 clean questions in German.",
            "checklist": [
              "Ask for a Termin",
              "Know: Ausweis + Wohnungsgeberbestätigung",
              "Confirm date/time politely"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: What You Need",
            "textDe": "Hinweis: Anmeldung nur mit Termin.\n\nBitte bringen Sie mit:\n- Personalausweis oder Reisepass\n- Wohnungsgeberbestätigung (vom Vermieter)\n- ggf. Geburtsurkunden der Kinder\n\nZum Termin:\n- Bitte kommen Sie pünktlich.\n- Terminbestätigung ausgedruckt oder auf dem Handy.\n\nÖffnungszeiten:\nMo–Fr 08:00–12:00\nDo zusätzlich 14:00–18:00",
            "glossary": [
              {
                "de": "die Anmeldung",
                "en": "registration (address registration)"
              },
              {
                "de": "der Termin",
                "en": "appointment"
              },
              {
                "de": "die Wohnungsgeberbestätigung",
                "en": "landlord confirmation of residence"
              },
              {
                "de": "ggf.",
                "en": "if applicable"
              },
              {
                "de": "pünktlich",
                "en": "on time"
              }
            ],
            "xp": 12,
            "minutes": 5
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: Appointment Call",
            "introEn": "Play the audio (TTS) and answer. Replay as needed.",
            "scriptDe": "Bürgeramt Mitte, guten Tag.\n\nGuten Tag, ich möchte mich anmelden. Brauche ich einen Termin?\n\nJa, Anmeldung nur mit Termin. Haben Sie schon einen?\n\nNein.\n\nWir hätten nächste Woche Dienstag um 10:20 oder Donnerstag um 17:10. Was passt Ihnen?\n\nDonnerstag um 17:10 passt.\n\nAlles klar. Bitte bringen Sie Ihren Ausweis und die Wohnungsgeberbestätigung mit. Haben Sie Kinder?\n\nNein.\n\nGut. Dann reicht das. Ich schicke Ihnen die Bestätigung per E-Mail.\n\nVielen Dank. Auf Wiederhören.\n\nGern. Auf Wiederhören.",
            "questions": [
              {
                "id": "q1",
                "questionEn": "Does the caller need an appointment?",
                "options": [
                  "No, walk-ins only",
                  "Yes, registration is only with an appointment",
                  "Only on weekends",
                  "Only by letter"
                ],
                "answerIndex": 1,
                "explanationEn": "They say: Anmeldung nur mit Termin."
              },
              {
                "id": "q2",
                "questionEn": "Which time does the caller choose?",
                "options": [
                  "Tuesday 10:20",
                  "Thursday 17:10",
                  "Friday 08:00",
                  "Thursday 10:20"
                ],
                "answerIndex": 1,
                "explanationEn": "They choose Thursday 17:10."
              },
              {
                "id": "q3",
                "questionEn": "Which documents are required?",
                "options": [
                  "Driver’s license only",
                  "ID + landlord confirmation (Wohnungsgeberbestätigung)",
                  "Bank statement",
                  "Insurance card"
                ],
                "answerIndex": 1,
                "explanationEn": "They ask for Ausweis and Wohnungsgeberbestätigung."
              }
            ],
            "xp": 26,
            "minutes": 8
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: The Key Sentence",
            "promptEn": "Build a polite sentence to request an appointment.",
            "tokens": [
              "Könnten",
              "Sie",
              "mir",
              "bitte",
              "einen",
              "Termin",
              "geben",
              "?"
            ],
            "answer": [
              "Könnten",
              "Sie",
              "mir",
              "bitte",
              "einen",
              "Termin",
              "geben",
              "?"
            ],
            "hintEn": "Akkusativ: einen Termin.",
            "explanationEn": "This is a universal A2→B1 sentence. Keep it as a chunk: “Könnten Sie mir bitte …?”",
            "xp": 16,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Short Email",
            "promptEn": "Write a short email (6–9 sentences) to confirm the appointment. Include: your name, address, date/time, and 2 questions.",
            "minWords": 90,
            "checklist": [
              "Mention Termin (date + time)",
              "Mention documents (Ausweis + Wohnungsgeberbestätigung)",
              "Ask 2 questions (e.g., language, confirmation, what to bring)",
              "Polite closing"
            ],
            "helpfulPhrasesDe": [
              "Vielen Dank für den Termin am ... um ...",
              "Ich bringe meinen Ausweis und die Wohnungsgeberbestätigung mit.",
              "Könnten Sie mir bitte bestätigen, dass ...?",
              "Brauche ich außerdem ...?",
              "Mit freundlichen Grüßen"
            ],
            "modelDe": "Guten Tag,\n\nvielen Dank für den Termin zur Anmeldung am Donnerstag um 17:10 Uhr. Mein Name ist [Name] und meine neue Adresse ist [Adresse]. Ich bringe meinen Ausweis und die Wohnungsgeberbestätigung mit.\n\nKönnten Sie mir bitte kurz bestätigen, dass die Unterlagen ausreichen? Und ist es möglich, den Termin auf Englisch zu machen, falls ich etwas nicht verstehe?\n\nMit freundlichen Grüßen\n[Name]",
            "xp": 28,
            "minutes": 8
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: At the Counter",
            "promptEn": "Speak for 50 seconds: introduce yourself, say what you need, confirm your address, and ask one polite question.",
            "timeSec": 50,
            "usefulFramesDe": [
              "Guten Tag, ich habe einen Termin zur Anmeldung.",
              "Ich heiße ...",
              "Meine Adresse ist ...",
              "Hier ist mein Ausweis.",
              "Könnten Sie mir bitte sagen, ob ...?"
            ],
            "xp": 18,
            "minutes": 5
          }
        ]
      },
      {
        "id": "case-20-hotel",
        "code": "CASE 20",
        "title": "Hotel Problem: Zimmer zu laut",
        "tagline": "A2→B1: complain politely, ask for a solution, confirm details.",
        "domain": "travel",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 20,
        "skills": [
          "listening",
          "speaking",
          "writing",
          "vocab",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your room is too noisy. You must complain politely (not aggressive), ask for options, and confirm the solution.",
            "checklist": [
              "Use “leider” + facts",
              "Ask for a change/refund politely",
              "Confirm next steps"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: Reception Desk",
            "introEn": "Play and answer. Listen for offers and conditions.",
            "scriptDe": "Guten Abend. Ich habe ein Problem mit meinem Zimmer.\n\nGuten Abend. Was genau ist los?\n\nLeider ist es sehr laut. Draußen ist eine Baustelle, und ich kann kaum schlafen.\n\nDas tut mir leid. Wir können Ihnen ein anderes Zimmer anbieten, aber erst ab morgen. Für heute könnten wir Ihnen Ohrstöpsel geben.\n\nGibt es ein ruhigeres Zimmer im Innenhof?\n\nJa, ab morgen wäre Zimmer 312 frei. Möchten Sie umziehen?\n\nJa, bitte. Und könnten Sie mir das schriftlich bestätigen?\n\nNatürlich. Ich schicke Ihnen eine kurze Bestätigung per E-Mail.\n\nVielen Dank.\n\nGern.",
            "questions": [
              {
                "id": "q1",
                "questionEn": "What is the problem?",
                "options": [
                  "The bed is broken",
                  "It is very noisy because of construction",
                  "The room is too cold",
                  "No towels"
                ],
                "answerIndex": 1,
                "explanationEn": "They mention Baustelle and loud noise."
              },
              {
                "id": "q2",
                "questionEn": "What can the hotel offer for tonight?",
                "options": [
                  "A new room immediately",
                  "Earplugs",
                  "A free taxi",
                  "Breakfast only"
                ],
                "answerIndex": 1,
                "explanationEn": "They offer Ohrstöpsel for tonight."
              },
              {
                "id": "q3",
                "questionEn": "When can the guest change rooms?",
                "options": [
                  "Today",
                  "Tomorrow",
                  "Next week",
                  "Never"
                ],
                "answerIndex": 1,
                "explanationEn": "They say: erst ab morgen."
              }
            ],
            "xp": 24,
            "minutes": 8
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Polite Logic: Cause → Request",
            "promptEn": "Fill the blanks with the best words.",
            "textDe": "Leider ist es {1} laut. {2} ich kaum schlafen kann, bitte ich Sie {3} ein ruhigeres Zimmer.",
            "blanks": [
              {
                "id": "1",
                "answer": "sehr",
                "hintEn": "very"
              },
              {
                "id": "2",
                "answer": "Weil",
                "hintEn": "because"
              },
              {
                "id": "3",
                "answer": "um",
                "hintEn": "ask for (um + Akk.)"
              }
            ],
            "explanationEn": "B1 complaint structure: state the fact, give the reason, then make a clear request.",
            "xp": 16,
            "minutes": 5
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: The Polite Request",
            "promptEn": "Build a polite request sentence.",
            "tokens": [
              "Könnten",
              "Sie",
              "mir",
              "bitte",
              "ein",
              "anderes",
              "Zimmer",
              "geben",
              "?"
            ],
            "answer": [
              "Könnten",
              "Sie",
              "mir",
              "bitte",
              "ein",
              "anderes",
              "Zimmer",
              "geben",
              "?"
            ],
            "hintEn": "Keep “Könnten Sie mir bitte …?” as a chunk.",
            "explanationEn": "This sentence is more useful than “Ich will …”. It works in hotels, offices, Bürgeramt, anywhere.",
            "xp": 16,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Short Message to the Hotel",
            "promptEn": "Write 6–10 sentences: describe the noise, mention the agreed solution, and ask for written confirmation.",
            "minWords": 90,
            "checklist": [
              "Problem (noise + when)",
              "Solution (room change tomorrow / earplugs tonight)",
              "Request written confirmation",
              "Polite closing"
            ],
            "helpfulPhrasesDe": [
              "Leider ist es in meinem Zimmer sehr laut, weil ...",
              "Wir haben vereinbart, dass ...",
              "Könnten Sie mir das bitte schriftlich bestätigen?",
              "Vielen Dank im Voraus."
            ],
            "xp": 28,
            "minutes": 8
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 45s Negotiation",
            "promptEn": "Speak for 45 seconds at the reception: problem, one request, and one polite follow-up question.",
            "timeSec": 45,
            "usefulFramesDe": [
              "Guten Abend, ich habe ein Problem ...",
              "Leider ist es ...",
              "Könnten Sie mir bitte ...?",
              "Gibt es eine Alternative ...?",
              "Vielen Dank."
            ],
            "xp": 18,
            "minutes": 4
          }
        ]
      },
      {
        "id": "case-21-schedule",
        "code": "CASE 21",
        "title": "Meeting Scheduling: Find a Slot",
        "tagline": "A2→B1 work: propose times, confirm, and sound calm.",
        "domain": "work",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 22,
        "skills": [
          "reading",
          "writing",
          "speaking",
          "grammar",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You need a 30-minute meeting. The skill here is not “perfect German”, but clear structure: propose 2 slots and confirm the decision.",
            "checklist": [
              "Propose 2 time slots",
              "Ask for confirmation",
              "Use polite workplace tone"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Constraints (Chat)",
            "textDe": "Chat (intern):\n- Ich kann heute erst ab 15 Uhr.\n- Morgen Vormittag bin ich in einem Workshop.\n- Donnerstag geht bei mir nur zwischen 10 und 12.\n- Bitte nur 30 Minuten.\n- Thema: Übergabe der Aufgaben.",
            "glossary": [
              {
                "de": "die Übergabe",
                "en": "handover"
              },
              {
                "de": "die Aufgaben",
                "en": "tasks"
              },
              {
                "de": "der Workshop",
                "en": "workshop"
              },
              {
                "de": "Vormittag",
                "en": "morning (before noon)"
              }
            ],
            "xp": 12,
            "minutes": 4
          },
          {
            "id": "mcq-1",
            "type": "mcq",
            "title": "Tone Check",
            "questionEn": "Which opener fits a professional scheduling email best?",
            "options": [
              "Ey, wann hast du Zeit?",
              "Könnten wir kurz einen Termin zur Übergabe abstimmen?",
              "Du musst morgen kommen.",
              "Ich will jetzt sofort reden."
            ],
            "answerIndex": 1,
            "explanationEn": "“Könnten wir … abstimmen?” is calm, polite, and typical workplace German.",
            "xp": 10,
            "minutes": 3
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: Propose a Time",
            "promptEn": "Build a correct sentence to propose a time slot.",
            "tokens": [
              "Passt",
              "es",
              "Ihnen",
              "am",
              "Donnerstag",
              "um",
              "10:30",
              "?"
            ],
            "answer": [
              "Passt",
              "es",
              "Ihnen",
              "am",
              "Donnerstag",
              "um",
              "10:30",
              "?"
            ],
            "hintEn": "Workplace polite: Passt es Ihnen …?",
            "explanationEn": "This is clean B1 scheduling language. Short, polite, and precise.",
            "xp": 14,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Scheduling Email",
            "promptEn": "Write a short email (8–12 sentences). Propose 2 slots (one today after 15:00, one Thursday 10–12), ask for confirmation, and mention 30 minutes.",
            "minWords": 120,
            "checklist": [
              "Clear subject + purpose",
              "2 concrete slots (date + time)",
              "Mention duration (30 Minuten)",
              "Ask for confirmation",
              "Polite closing"
            ],
            "helpfulPhrasesDe": [
              "Könnten wir kurz einen Termin zur ... abstimmen?",
              "Dauer: ca. 30 Minuten.",
              "Passt es Ihnen ...?",
              "Alternativ wäre ... möglich.",
              "Bitte geben Sie mir kurz Bescheid."
            ],
            "xp": 34,
            "minutes": 10
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: Voicemail (30s)",
            "promptEn": "Speak for 30 seconds as a voicemail: who you are, what you need, and 2 time slots.",
            "timeSec": 30,
            "usefulFramesDe": [
              "Hallo, hier ist ...",
              "Ich rufe an wegen ...",
              "Ich hätte zwei Vorschläge: ...",
              "Bitte rufen Sie mich kurz zurück / schreiben Sie mir."
            ],
            "xp": 14,
            "minutes": 3
          }
        ]
      },
      {
        "id": "case-22-library",
        "code": "CASE 22",
        "title": "Library Card: Register + Reserve",
        "tagline": "A2→B1: documents, fees, and a clean request with cases.",
        "domain": "education",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 20,
        "skills": [
          "reading",
          "listening",
          "writing",
          "speaking",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You want a library card and you want to reserve a book. The goal: ask clearly and use the right case in 2 key sentences.",
            "checklist": [
              "Ask what you need to bring",
              "Ask to reserve a book",
              "Confirm fee / opening hours"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Library Info",
            "textDe": "Stadtbibliothek – Anmeldung\n\nFür einen Bibliotheksausweis brauchen Sie:\n- Personalausweis oder Reisepass\n- eine aktuelle Meldebescheinigung (falls die Adresse nicht im Ausweis steht)\n\nGebühr:\n- Erwachsene: 10 Euro pro Jahr\n- Studierende: 5 Euro pro Jahr\n\nAusleihe:\n- Leihfrist: 4 Wochen\n- Verlängerung online möglich",
            "glossary": [
              {
                "de": "die Gebühr",
                "en": "fee"
              },
              {
                "de": "die Meldebescheinigung",
                "en": "registration certificate"
              },
              {
                "de": "die Leihfrist",
                "en": "loan period"
              },
              {
                "de": "verlängern",
                "en": "to extend"
              }
            ],
            "xp": 12,
            "minutes": 5
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: At the Desk",
            "introEn": "Listen for price, documents, and one small detail.",
            "scriptDe": "Guten Tag. Ich hätte gern einen Bibliotheksausweis.\n\nGern. Haben Sie Ihren Ausweis dabei?\n\nJa.\n\nSuper. Wenn die Adresse nicht im Ausweis steht, brauchen wir auch eine Meldebescheinigung.\n\nOkay. Was kostet das?\n\nFür Erwachsene sind es 10 Euro pro Jahr. Studierende zahlen 5 Euro.\n\nKann ich auch Bücher reservieren?\n\nJa, online oder direkt hier. Die Leihfrist ist vier Wochen.\n\nDanke.",
            "questions": [
              {
                "id": "q1",
                "questionEn": "How much is the fee for adults?",
                "options": [
                  "5 Euro per year",
                  "10 Euro per year",
                  "10 Euro per month",
                  "Free"
                ],
                "answerIndex": 1,
                "explanationEn": "They say: Erwachsene 10 Euro pro Jahr."
              },
              {
                "id": "q2",
                "questionEn": "When do you need a Meldebescheinigung?",
                "options": [
                  "Always",
                  "Only if the address is not on the ID",
                  "Only for students",
                  "Never"
                ],
                "answerIndex": 1,
                "explanationEn": "Only if the address is not in the Ausweis."
              },
              {
                "id": "q3",
                "questionEn": "How long is the loan period?",
                "options": [
                  "1 week",
                  "2 weeks",
                  "4 weeks",
                  "8 weeks"
                ],
                "answerIndex": 2,
                "explanationEn": "They say: vier Wochen."
              }
            ],
            "xp": 22,
            "minutes": 7
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Case Drill (Library)",
            "promptEn": "Fill the blanks with the correct words.",
            "textDe": "Ich suche {1} Buch. Können Sie {2} Buch bitte reservieren? Ich brauche {3} Ausweis.",
            "blanks": [
              {
                "id": "1",
                "answer": "ein",
                "hintEn": "Akkusativ: a book (neuter)"
              },
              {
                "id": "2",
                "answer": "das",
                "hintEn": "Akkusativ: the book (neuter)"
              },
              {
                "id": "3",
                "answer": "meinen",
                "hintEn": "Akkusativ: my ID (masc.)"
              }
            ],
            "explanationEn": "These are high-frequency patterns: suchen/reservieren/bringen need Akkusativ.",
            "xp": 18,
            "minutes": 6
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Reservation Message",
            "promptEn": "Write a short message (6–9 sentences): you want a library card and you want to reserve one book. Ask one question.",
            "minWords": 90,
            "checklist": [
              "Polite opening",
              "Request card + reservation",
              "Ask one question (fee, documents, pickup)",
              "Polite closing"
            ],
            "helpfulPhrasesDe": [
              "Ich hätte gern einen Bibliotheksausweis.",
              "Ich würde gern das Buch ... reservieren.",
              "Könnten Sie mir bitte sagen, ob ...?",
              "Vielen Dank im Voraus."
            ],
            "xp": 26,
            "minutes": 8
          }
        ]
      },
      {
        "id": "case-23-internet",
        "code": "CASE 23",
        "title": "Internet Down: Router + Technician",
        "tagline": "A2→B1: describe a problem, follow instructions, and book a visit.",
        "domain": "daily",
        "levelFrom": "A2",
        "levelTo": "B1",
        "estMin": 20,
        "skills": [
          "listening",
          "speaking",
          "writing",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your internet is down. You call support, follow 3 steps, and book a technician appointment.",
            "checklist": [
              "Say since when it’s broken",
              "Follow instructions",
              "Confirm appointment clearly"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: Support Call",
            "introEn": "Listen for steps and the appointment time.",
            "scriptDe": "Technischer Support, guten Tag.\n\nGuten Tag, ich habe seit gestern kein Internet mehr.\n\nOkay. Haben Sie den Router schon neu gestartet?\n\nJa.\n\nBitte prüfen Sie auch das Kabel. Ist das DSL-Licht an?\n\nNein, es blinkt.\n\nDann liegt vermutlich eine Störung vor. Wir können einen Techniker schicken. Wir hätten am Mittwoch zwischen 8 und 10 Uhr oder am Donnerstag zwischen 16 und 18 Uhr.\n\nDonnerstag 16 bis 18 passt.\n\nAlles klar. Sie bekommen eine SMS-Bestätigung. Bitte sorgen Sie dafür, dass jemand zu Hause ist.\n\nDanke.",
            "questions": [
              {
                "id": "q1",
                "questionEn": "Since when is the internet down?",
                "options": [
                  "Since last week",
                  "Since yesterday",
                  "Since this morning",
                  "Since two months"
                ],
                "answerIndex": 1,
                "explanationEn": "They say: seit gestern."
              },
              {
                "id": "q2",
                "questionEn": "What should the caller check?",
                "options": [
                  "The TV remote",
                  "The cable and the DSL light",
                  "The fridge",
                  "The bank app"
                ],
                "answerIndex": 1,
                "explanationEn": "They ask to check the cable and DSL light."
              },
              {
                "id": "q3",
                "questionEn": "Which appointment is chosen?",
                "options": [
                  "Wednesday 8–10",
                  "Thursday 16–18",
                  "Friday 10–12",
                  "No technician"
                ],
                "answerIndex": 1,
                "explanationEn": "They choose Thursday 16–18."
              }
            ],
            "xp": 24,
            "minutes": 8
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: The Problem Sentence",
            "promptEn": "Build a clean sentence for support.",
            "tokens": [
              "Ich",
              "habe",
              "seit",
              "gestern",
              "kein",
              "Internet",
              "mehr",
              "."
            ],
            "answer": [
              "Ich",
              "habe",
              "seit",
              "gestern",
              "kein",
              "Internet",
              "mehr",
              "."
            ],
            "hintEn": "seit + time = since.",
            "explanationEn": "This sentence is a perfect opener for almost any issue call in Germany.",
            "xp": 12,
            "minutes": 3
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Ticket Message",
            "promptEn": "Write 6–9 sentences to support chat/email. Include: since when, what you tried, and your availability for a technician.",
            "minWords": 90,
            "checklist": [
              "Since when (seit ...)",
              "What you tried (neu gestartet / Kabel geprüft)",
              "Availability (Zeitfenster)",
              "Polite closing"
            ],
            "helpfulPhrasesDe": [
              "Ich habe seit ... kein Internet mehr.",
              "Ich habe den Router neu gestartet.",
              "Das DSL-Licht blinkt.",
              "Ein Termin wäre ... möglich."
            ],
            "xp": 26,
            "minutes": 8
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 45s Call",
            "promptEn": "Speak for 45 seconds: describe the issue, what you tried, and confirm a technician time window.",
            "timeSec": 45,
            "usefulFramesDe": [
              "Guten Tag, ich habe ein Problem ...",
              "Seit ...",
              "Ich habe schon ...",
              "Könnten Sie bitte ...?",
              "Donnerstag zwischen ... passt."
            ],
            "xp": 16,
            "minutes": 4
          }
        ]
      },
      {
        "id": "case-24-delay",
        "code": "CASE 24",
        "title": "Project Delay: Status Update That Works",
        "tagline": "B1→B2: explain the issue, reduce panic, propose a plan.",
        "domain": "work",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 25,
        "skills": [
          "reading",
          "writing",
          "speaking",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your project is slipping. You must write a calm status update: what happened, what you do next, and what you need from others.",
            "checklist": [
              "Neutral tone",
              "Clear next steps",
              "One realistic ask"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Raw Notes",
            "textDe": "Notizen:\n- Bug in Zahlungsflow gefunden (reproduzierbar).\n- Fix dauert vermutlich 1–2 Tage.\n- Risiko: Release am Freitag.\n- Vorschlag: Scope reduzieren + Feature-Flag.\n- Abhängigkeit: QA braucht bis Donnerstag 12:00 einen Build.\n- Kommunikation: Stakeholder wollen ein kurzes Update heute.",
            "glossary": [
              {
                "de": "reproduzierbar",
                "en": "reproducible"
              },
              {
                "de": "vermutlich",
                "en": "probably"
              },
              {
                "de": "das Risiko",
                "en": "risk"
              },
              {
                "de": "die Abhängigkeit",
                "en": "dependency"
              },
              {
                "de": "der Stakeholder",
                "en": "stakeholder"
              }
            ],
            "xp": 12,
            "minutes": 5
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Connector Logic (B2)",
            "promptEn": "Fill the blanks with connectors that match the logic.",
            "textDe": "Wir haben einen Bug gefunden, {1} verschieben wir den Release nicht sofort. {2} reduzieren wir den Scope und releasen mit Feature-Flag. {3} QA rechtzeitig testen kann, brauchen wir bis Donnerstag 12:00 einen Build.",
            "blanks": [
              {
                "id": "1",
                "answer": "deshalb",
                "hintEn": "therefore"
              },
              {
                "id": "2",
                "answer": "Stattdessen",
                "hintEn": "instead"
              },
              {
                "id": "3",
                "answer": "Damit",
                "hintEn": "so that"
              }
            ],
            "explanationEn": "B2 writing = logic clarity. Your connectors should tell the reader what the sentence does: reason, alternative, goal.",
            "xp": 20,
            "minutes": 7
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Status Update",
            "promptEn": "Write 140–180 words to stakeholders: issue, impact, plan, and one ask. Use a calm, professional tone.",
            "minWords": 140,
            "checklist": [
              "Issue + impact in 2–3 sentences",
              "Plan (2 steps) + timeline",
              "One ask (e.g., QA, approval, decision)",
              "At least 4 connectors (deshalb, stattdessen, damit, obwohl, zusammenfassend)",
              "Neutral closing"
            ],
            "helpfulPhrasesDe": [
              "Kurz ein Update zum Stand ...",
              "Aktuell gibt es ...",
              "Wir planen daher ...",
              "Stattdessen ...",
              "Damit ...",
              "Zusammenfassend ..."
            ],
            "xp": 44,
            "minutes": 12
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 60s Update",
            "promptEn": "Speak for 60 seconds: explain the problem, the mitigation plan, and what you need from others.",
            "timeSec": 60,
            "usefulFramesDe": [
              "Kurzes Update: ...",
              "Das Problem ist, dass ...",
              "Wir schlagen vor, ...",
              "Damit ...",
              "Ich brauche von euch ..."
            ],
            "xp": 18,
            "minutes": 5
          }
        ]
      },
      {
        "id": "case-25-review",
        "code": "CASE 25",
        "title": "Culture Review: Recommend Without Hype",
        "tagline": "B1→B2: structured review with nuance and a clear recommendation.",
        "domain": "culture",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 22,
        "skills": [
          "reading",
          "writing",
          "speaking",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You write a review (forum/blog style). B2 means: not hype, not hate, but balanced evaluation + recommendation.",
            "checklist": [
              "1–2 strengths",
              "1 weakness",
              "Clear recommendation for a target audience"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Mini Reviews",
            "textDe": "Review A:\n\"Die Ausstellung war spannend, aber teilweise zu voll. Die Texte an den Wänden waren informativ, allerdings etwas lang. Insgesamt hat es sich trotzdem gelohnt.\"\n\nReview B:\n\"Die Führung war gut organisiert. Besonders gefallen hat mir, dass man viele Fragen stellen konnte. Ein Nachteil: Die Gruppe war groß, daher war es manchmal laut.\"",
            "glossary": [
              {
                "de": "teilweise",
                "en": "partly"
              },
              {
                "de": "informativ",
                "en": "informative"
              },
              {
                "de": "insgesamt",
                "en": "overall"
              },
              {
                "de": "der Nachteil",
                "en": "disadvantage"
              },
              {
                "de": "die Führung",
                "en": "guided tour"
              }
            ],
            "xp": 12,
            "minutes": 5
          },
          {
            "id": "mcq-1",
            "type": "mcq",
            "title": "Register Check",
            "questionEn": "Which sentence sounds most “B2 adult” for a recommendation?",
            "options": [
              "Das war mega geil, ihr müsst da hin!!!",
              "Meines Erachtens lohnt es sich, wenn man sich für das Thema interessiert.",
              "Keine Ahnung, war ok.",
              "Das ist das Beste auf der Welt."
            ],
            "answerIndex": 1,
            "explanationEn": "B2 recommendation = condition + target audience: “wenn man sich für … interessiert”.",
            "xp": 10,
            "minutes": 3
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Your Review",
            "promptEn": "Write 160–200 words: describe the event, give pros/cons, and recommend it to a specific type of person.",
            "minWords": 160,
            "checklist": [
              "Short intro (what/where/when)",
              "At least 2 pros and 1 con",
              "At least 4 connectors (insgesamt, allerdings, daher, trotzdem, zusammenfassend)",
              "Clear recommendation with condition"
            ],
            "helpfulPhrasesDe": [
              "Insgesamt ...",
              "Besonders gefallen hat mir, dass ...",
              "Allerdings ...",
              "Daher ...",
              "Trotzdem ...",
              "Meines Erachtens lohnt es sich, wenn ..."
            ],
            "xp": 44,
            "minutes": 12
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 50s Recommendation",
            "promptEn": "Speak for 50 seconds: 2 positives, 1 negative, and who you would recommend it to.",
            "timeSec": 50,
            "usefulFramesDe": [
              "Ich war letzte Woche bei ...",
              "Mir hat gefallen, dass ...",
              "Ein Nachteil war ...",
              "Ich würde es empfehlen, wenn ..."
            ],
            "xp": 16,
            "minutes": 4
          }
        ]
      },
      {
        "id": "case-26-insurance",
        "code": "CASE 26",
        "title": "Insurance Reply: Missing Documents",
        "tagline": "B1→B2: formal reply with attachments and clear questions.",
        "domain": "health",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 24,
        "skills": [
          "reading",
          "writing",
          "grammar",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your insurance says your reimbursement can’t be processed because documents are missing. You reply formally, attach what they need, and ask for a timeline.",
            "checklist": [
              "Formal tone",
              "List attachments",
              "Ask for status/timeline"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Insurance Letter",
            "textDe": "Sehr geehrte Damen und Herren,\n\nvielen Dank für Ihren Antrag. Leider können wir die Erstattung derzeit nicht bearbeiten, da folgende Unterlagen fehlen:\n\n- Originalrechnung\n- Zahlungsnachweis\n\nBitte reichen Sie die Unterlagen innerhalb von 14 Tagen nach.\n\nMit freundlichen Grüßen\nIhre Krankenkasse",
            "glossary": [
              {
                "de": "die Erstattung",
                "en": "reimbursement"
              },
              {
                "de": "bearbeiten",
                "en": "to process"
              },
              {
                "de": "die Unterlagen",
                "en": "documents"
              },
              {
                "de": "die Originalrechnung",
                "en": "original invoice"
              },
              {
                "de": "der Zahlungsnachweis",
                "en": "proof of payment"
              },
              {
                "de": "nachreichen",
                "en": "to submit later / provide additionally"
              }
            ],
            "xp": 12,
            "minutes": 5
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "Formal Phrases (B2)",
            "promptEn": "Fill the blanks with the best formal phrases.",
            "textDe": "Ich nehme {1} auf Ihr Schreiben. {2} sende ich Ihnen die fehlenden Unterlagen. {3} bitte ich um eine kurze Rückmeldung zum Bearbeitungsstand.",
            "blanks": [
              {
                "id": "1",
                "answer": "Bezug",
                "hintEn": "take reference: Bezug"
              },
              {
                "id": "2",
                "answer": "Anbei",
                "hintEn": "attached: Anbei"
              },
              {
                "id": "3",
                "answer": "Zudem",
                "hintEn": "in addition: Zudem"
              }
            ],
            "explanationEn": "These phrases are classic B2 writing tools for formal emails/letters.",
            "xp": 18,
            "minutes": 6
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Formal Reply",
            "promptEn": "Write 120–160 words: reference the letter, list attachments, and ask when the reimbursement will be processed.",
            "minWords": 120,
            "checklist": [
              "Formal greeting",
              "Reference letter (Bezug auf ...)",
              "List attachments (Rechnung, Zahlungsnachweis)",
              "Ask for timeline/status",
              "Formal closing"
            ],
            "helpfulPhrasesDe": [
              "Ich nehme Bezug auf Ihr Schreiben vom ...",
              "Anbei sende ich Ihnen ...",
              "Könnten Sie mir bitte mitteilen, ...?",
              "Zudem bitte ich um ...",
              "Mit freundlichen Grüßen"
            ],
            "xp": 40,
            "minutes": 11
          }
        ]
      },
      {
        "id": "case-27-wind",
        "code": "CASE 27",
        "title": "Public Hearing: Wind Turbines",
        "tagline": "B2 argumentation: balance, conditions, and a sharp conclusion.",
        "domain": "politics",
        "levelFrom": "B2",
        "levelTo": "B2",
        "estMin": 28,
        "skills": [
          "reading",
          "writing",
          "speaking",
          "grammar"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "You prepare a short statement for a public hearing. B2 means: balance, conditions, and one concrete proposal.",
            "checklist": [
              "Present both sides",
              "Use precise connectors",
              "Propose one rule/condition"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "read-1",
            "type": "read",
            "title": "Evidence: Two Positions",
            "textDe": "Position 1 (pro):\n\"Windkraft reduziert CO₂ und macht uns unabhängiger. Wenn Standorte gut geplant sind, profitieren alle langfristig.\"\n\nPosition 2 (kritisch):\n\"Anwohner leiden unter Lärm und der veränderten Landschaft. Außerdem müssen Naturschutz und Abstände ernst genommen werden.\"",
            "glossary": [
              {
                "de": "unabhängig",
                "en": "independent"
              },
              {
                "de": "die Landschaft",
                "en": "landscape"
              },
              {
                "de": "der Naturschutz",
                "en": "nature conservation"
              },
              {
                "de": "der Abstand",
                "en": "distance"
              },
              {
                "de": "ernst nehmen",
                "en": "to take seriously"
              }
            ],
            "xp": 12,
            "minutes": 5
          },
          {
            "id": "cloze-1",
            "type": "cloze",
            "title": "B2 Connector Pattern",
            "promptEn": "Fill the blanks to create balanced argumentation.",
            "textDe": "Einerseits kann Windkraft CO₂ reduzieren, {1} müssen Anwohner geschützt werden. {2} klare Abstände gelten, kann das Projekt akzeptabler sein. {3} schlage ich transparente Messungen und regelmäßige Bürgerinfos vor.",
            "blanks": [
              {
                "id": "1",
                "answer": "andererseits",
                "hintEn": "on the other hand"
              },
              {
                "id": "2",
                "answer": "Wenn",
                "hintEn": "if"
              },
              {
                "id": "3",
                "answer": "Daher",
                "hintEn": "therefore"
              }
            ],
            "explanationEn": "B2 writing is scored on logic. This pattern is a reliable backbone: pro/contra → condition → proposal.",
            "xp": 20,
            "minutes": 7
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Public Statement (200 words)",
            "promptEn": "Write 180–220 words: your position on wind turbines. Include pros/cons, one condition, and one concrete proposal.",
            "minWords": 180,
            "checklist": [
              "Clear structure (intro, pros/cons, proposal)",
              "At least 5 connectors (einerseits/andererseits, wenn, daher, obwohl, zusammenfassend)",
              "One condition (e.g., distances, nature protection)",
              "One concrete proposal (monitoring, communication, compensation)"
            ],
            "helpfulPhrasesDe": [
              "Meines Erachtens ...",
              "Einerseits ..., andererseits ...",
              "Wenn ..., dann ...",
              "Daher schlage ich vor, ...",
              "Zusammenfassend ..."
            ],
            "xp": 50,
            "minutes": 14
          },
          {
            "id": "speak-1",
            "type": "speak",
            "title": "Speak: 90s Hearing Statement",
            "promptEn": "Speak for 90 seconds: balanced opinion + one condition + one proposal. Stay calm and structured.",
            "timeSec": 90,
            "usefulFramesDe": [
              "Ich möchte kurz Stellung nehmen.",
              "Einerseits ..., andererseits ...",
              "Entscheidend ist, dass ...",
              "Daher schlage ich vor, ...",
              "Zusammenfassend ..."
            ],
            "xp": 26,
            "minutes": 7
          }
        ]
      },
      {
        "id": "case-28-energy-bill",
        "code": "CASE 28",
        "title": "Energy Bill: Dispute and Correction",
        "tagline": "B2 formal complaint: facts, evidence, and a clean ask.",
        "domain": "environment",
        "levelFrom": "B1",
        "levelTo": "B2",
        "estMin": 26,
        "skills": [
          "listening",
          "writing",
          "speaking",
          "vocab"
        ],
        "steps": [
          {
            "id": "brief",
            "type": "brief",
            "title": "Briefing",
            "body": "Your energy bill looks wrong. You call, ask the right questions, and write a formal complaint asking for correction.",
            "checklist": [
              "State facts (dates, meter reading)",
              "Ask what happens next",
              "Request written confirmation"
            ],
            "xp": 6,
            "minutes": 2
          },
          {
            "id": "listen-1",
            "type": "listen_mcq",
            "title": "Audio: Utility Company Call",
            "introEn": "Listen for what they ask you to do and what they promise.",
            "scriptDe": "Energie-Service, guten Tag.\n\nGuten Tag, ich habe eine Frage zu meiner Rechnung. Der Betrag ist viel höher als sonst.\n\nHaben Sie einen aktuellen Zählerstand?\n\nJa, ich habe gestern abgelesen.\n\nOkay. Dann senden Sie uns bitte den Zählerstand per E-Mail. Wir prüfen das und korrigieren die Rechnung, falls ein Fehler vorliegt.\n\nWie lange dauert das ungefähr?\n\nNormalerweise drei bis fünf Werktage. Sie bekommen dann eine schriftliche Bestätigung.\n\nDanke.",
            "questions": [
              {
                "id": "q1",
                "questionEn": "What does the company ask for?",
                "options": [
                  "A passport scan",
                  "A current meter reading (Zählerstand)",
                  "A bank password",
                  "A new contract"
                ],
                "answerIndex": 1,
                "explanationEn": "They ask: Haben Sie einen aktuellen Zählerstand?"
              },
              {
                "id": "q2",
                "questionEn": "What will they do?",
                "options": [
                  "Ignore it",
                  "Check and correct the bill if there is an error",
                  "Send police",
                  "Cancel service"
                ],
                "answerIndex": 1,
                "explanationEn": "They say they will prüfen and korrigieren if needed."
              },
              {
                "id": "q3",
                "questionEn": "How long does it usually take?",
                "options": [
                  "1 day",
                  "3–5 business days",
                  "2 weeks",
                  "No timeframe"
                ],
                "answerIndex": 1,
                "explanationEn": "They say: drei bis fünf Werktage."
              }
            ],
            "xp": 22,
            "minutes": 7
          },
          {
            "id": "arrange-1",
            "type": "arrange",
            "title": "Arrange: The Formal Ask",
            "promptEn": "Build a clean request sentence.",
            "tokens": [
              "Ich",
              "bitte",
              "um",
              "eine",
              "Korrektur",
              "der",
              "Rechnung",
              "."
            ],
            "answer": [
              "Ich",
              "bitte",
              "um",
              "eine",
              "Korrektur",
              "der",
              "Rechnung",
              "."
            ],
            "hintEn": "um + Akkusativ: um eine Korrektur.",
            "explanationEn": "This is the core of formal complaint writing: one short sentence that states exactly what you want.",
            "xp": 14,
            "minutes": 4
          },
          {
            "id": "write-1",
            "type": "write",
            "title": "Write: Formal Complaint Email",
            "promptEn": "Write 160–200 words: explain why the bill seems wrong, include your meter reading, and ask for correction + written confirmation.",
            "minWords": 160,
            "checklist": [
              "Formal greeting",
              "Reference invoice number + date",
              "State your meter reading (Zählerstand) and date",
              "Clear ask: review + correction + confirmation",
              "Formal closing"
            ],
            "helpfulPhrasesDe": [
              "Ich nehme Bezug auf die Rechnung Nr. ...",
              "Der Betrag ist deutlich höher als ...",
              "Der aktuelle Zählerstand vom ... beträgt ...",
              "Ich bitte um Prüfung und Korrektur.",
              "Über eine schriftliche Bestätigung würde ich mich freuen."
            ],
            "xp": 46,
            "minutes": 13
          }
        ]
      }
    ],
    "grammarModules": [
      {
        "id": "g-a2-cases-101",
        "title": "Cases 101: Akkusativ vs Dativ",
        "level": "A2",
        "tagline": "Stop guessing den/dem. Learn the logic in 10 minutes.",
        "explainEn": "If you feel lost with Akkusativ and Dativ, you are not alone. This module gives you the minimal rules that unlock 80% of real German: direct object (Akkusativ), indirect object (Dativ), and the most common article changes.",
        "cheatDe": [
          "Fragen: Wen/was? = Akk. · Wem? = Dat.",
          "Maskulin: der → den → dem",
          "Feminin: die → die → der",
          "Neutrum: das → das → dem",
          "Plural: die → die → den (+n am Nomen: mit den Leuten)",
          "Pronomen: ich→mich→mir · du→dich→dir · er→ihn→ihm · sie→sie→ihr · wir→uns→uns"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct article (direct object).",
            "stemDe": "Ich sehe ___ Mann.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 1,
            "whyEn": "Direct object = Akkusativ: den Mann."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct article (indirect object).",
            "stemDe": "Ich helfe ___ Mann.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 2,
            "whyEn": "helfen takes Dativ: dem Mann."
          },
          {
            "id": "q3",
            "promptEn": "Choose the correct pronoun.",
            "stemDe": "Kannst du ___ helfen?",
            "options": [
              "ich",
              "mich",
              "mir",
              "mein"
            ],
            "answerIndex": 2,
            "whyEn": "helfen = Dativ, so: mir."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct form.",
            "stemDe": "Wir geben ___ Kind ein Geschenk.",
            "options": [
              "das",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 2,
            "whyEn": "The receiver (to the child) is Dativ: dem Kind."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct article.",
            "stemDe": "Ich kaufe ___ Kaffee.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 1,
            "whyEn": "Direct object = Akkusativ: den Kaffee."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct article.",
            "stemDe": "Ich antworte ___ Kollegin.",
            "options": [
              "die",
              "der",
              "den",
              "dem"
            ],
            "answerIndex": 1,
            "whyEn": "antworten takes Dativ: der Kollegin."
          },
          {
            "id": "q7",
            "promptEn": "Pick the correct pronoun.",
            "stemDe": "Ich sehe ___ morgen.",
            "options": [
              "du",
              "dich",
              "dir",
              "dein"
            ],
            "answerIndex": 1,
            "whyEn": "sehen = Akkusativ: dich."
          },
          {
            "id": "q8",
            "promptEn": "Pick the correct article (plural Dativ).",
            "stemDe": "Ich spreche mit ___ Leuten.",
            "options": [
              "die",
              "den",
              "der",
              "dem"
            ],
            "answerIndex": 1,
            "whyEn": "mit + Dativ plural: mit den Leuten."
          }
        ]
      },
      {
        "id": "g-a2-akk-preps",
        "title": "Akkusativ Prepositions: für, durch, ohne, gegen",
        "level": "A2",
        "tagline": "Four prepositions that always force Akkusativ.",
        "explainEn": "Some prepositions always demand Akkusativ. If you learn these four, your emails and speaking get instantly cleaner. The trick: learn the preposition + case as one unit.",
        "cheatDe": [
          "für + Akk. (for)",
          "durch + Akk. (through)",
          "ohne + Akk. (without)",
          "gegen + Akk. (against)",
          "Merksatz: f.d.o.g. = für/durch/ohne/gegen"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct form.",
            "stemDe": "Das ist für ___ Mann.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 1,
            "whyEn": "für always takes Akkusativ: für den Mann."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct form.",
            "stemDe": "Wir gehen durch ___ Park.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 1,
            "whyEn": "durch + Akkusativ: durch den Park."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ich komme ohne ___ Laptop.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 1,
            "whyEn": "ohne + Akkusativ: ohne den Laptop."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct form.",
            "stemDe": "Sie ist gegen ___ Plan.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 1,
            "whyEn": "gegen + Akkusativ: gegen den Plan."
          },
          {
            "id": "q5",
            "promptEn": "Choose the correct preposition.",
            "stemDe": "Ich fahre ___ Ticket (it’s free today).",
            "options": [
              "ohne",
              "mit",
              "bei",
              "zu"
            ],
            "answerIndex": 0,
            "whyEn": "Without a ticket = ohne Ticket."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ich habe nichts gegen ___ Idee.",
            "options": [
              "die",
              "der",
              "den",
              "dem"
            ],
            "answerIndex": 0,
            "whyEn": "gegen + Akkusativ; feminine stays die: gegen die Idee."
          }
        ]
      },
      {
        "id": "g-a2-dat-preps",
        "title": "Dativ Prepositions: mit, bei, von, zu, aus",
        "level": "A2",
        "tagline": "The “everyday” prepositions that require Dativ.",
        "explainEn": "A2/B1 German is full of Dativ prepositions. If you want to sound natural fast, learn these as chunks: mit + Dat, zu + Dat, aus + Dat, von + Dat, bei + Dat.",
        "cheatDe": [
          "mit + Dat. (with)",
          "bei + Dat. (at; at someone’s place / at work)",
          "von + Dat. (from; of)",
          "zu + Dat. (to; to someone / to the doctor)",
          "aus + Dat. (out of; from a country/city)"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ich fahre mit ___ Bus.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 2,
            "whyEn": "mit + Dativ: mit dem Bus."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ich gehe zu ___ Arzt.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 2,
            "whyEn": "zu + Dativ: zu dem Arzt (zum Arzt)."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ich komme aus ___ Schweiz.",
            "options": [
              "die",
              "der",
              "den",
              "dem"
            ],
            "answerIndex": 1,
            "whyEn": "aus + Dativ: aus der Schweiz."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct form.",
            "stemDe": "Er arbeitet bei ___ Firma.",
            "options": [
              "die",
              "der",
              "den",
              "dem"
            ],
            "answerIndex": 1,
            "whyEn": "bei + Dativ: bei der Firma."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ein Anruf von ___ Chef.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 2,
            "whyEn": "von + Dativ: von dem Chef (vom Chef)."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct contraction.",
            "stemDe": "Ich gehe zum Bahnhof. (= zu ___ Bahnhof)",
            "options": [
              "dem",
              "den",
              "der",
              "des"
            ],
            "answerIndex": 0,
            "whyEn": "zum = zu dem (Dativ)."
          }
        ]
      },
      {
        "id": "g-a2-dativ-plural-n",
        "title": "Plural Dativ: den Leuten (+n)",
        "level": "A2",
        "tagline": "One tiny detail that instantly makes you sound cleaner.",
        "explainEn": "In Dativ plural, the article is \"den\" and the noun often gets an extra -n: mit den Leuten, bei den Freunden. This shows up everywhere in real German and is easy points on exams.",
        "cheatDe": [
          "Dativ Plural: die → den",
          "Oft: +n am Nomen: mit den Leuten, bei den Freunden",
          "Nicht wenn schon -n/-s: mit den Frauen, bei den Autos",
          "Chunks: mit den Leuten · bei den Freunden · zu den Eltern"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the correct phrase.",
            "stemDe": "Ich spreche mit ___ (Leute).",
            "options": [
              "die Leute",
              "den Leuten",
              "der Leuten",
              "dem Leute"
            ],
            "answerIndex": 1,
            "whyEn": "mit + Dativ plural: mit den Leuten."
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct phrase.",
            "stemDe": "Ich bin bei ___ (Freunde).",
            "options": [
              "die Freunde",
              "den Freunden",
              "dem Freunden",
              "der Freunde"
            ],
            "answerIndex": 1,
            "whyEn": "bei + Dativ plural: bei den Freunden (+n)."
          },
          {
            "id": "q3",
            "promptEn": "Choose the correct article.",
            "stemDe": "Ich gehe zu ___ Eltern.",
            "options": [
              "die",
              "den",
              "dem",
              "der"
            ],
            "answerIndex": 1,
            "whyEn": "zu + Dativ plural: zu den Eltern."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct form.",
            "stemDe": "Wir fahren mit ___ (Auto).",
            "options": [
              "die Autos",
              "den Autos",
              "den Auton",
              "dem Autos"
            ],
            "answerIndex": 1,
            "whyEn": "Dativ plural: den Autos (no extra -n; already ends with -s)."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct phrase.",
            "stemDe": "Er arbeitet mit ___ (Kollege).",
            "options": [
              "die Kollegen",
              "den Kollegen",
              "den Kollegenn",
              "dem Kollegen"
            ],
            "answerIndex": 1,
            "whyEn": "Dativ plural: mit den Kollegen (already ends with -n)."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Ich wohne in die Stadt mit den Freunden.",
              "Ich wohne in der Stadt mit die Freunde.",
              "Ich wohne in der Stadt mit den Freunden.",
              "Ich wohne im Stadt mit den Freunden."
            ],
            "answerIndex": 2,
            "whyEn": "Location: in der Stadt; with friends: mit den Freunden."
          },
          {
            "id": "q7",
            "promptEn": "Choose the correct phrase.",
            "stemDe": "Ich rede oft mit ___ (Nachbar).",
            "options": [
              "den Nachbarn",
              "die Nachbarn",
              "dem Nachbarn",
              "der Nachbarn"
            ],
            "answerIndex": 0,
            "whyEn": "Plural Dativ: mit den Nachbarn (already ends with -n)."
          },
          {
            "id": "q8",
            "promptEn": "Pick the correct phrase.",
            "stemDe": "Ich helfe ___ (Leute).",
            "options": [
              "den Leuten",
              "die Leute",
              "dem Leute",
              "der Leuten"
            ],
            "answerIndex": 0,
            "whyEn": "helfen takes Dativ: den Leuten."
          }
        ]
      },
      {
        "id": "g-b1-two-way-preps",
        "title": "Two-way Preps: in/auf/an (Wo? vs Wohin?)",
        "level": "B1",
        "tagline": "Location = Dativ. Movement = Akkusativ.",
        "explainEn": "This is a classic A2/B1 pain point. Two-way prepositions switch case based on meaning: Where (location) uses Dativ, where to (movement/goal) uses Akkusativ.",
        "cheatDe": [
          "Wo? (location) → Dativ: im Park, auf dem Tisch, an der Wand",
          "Wohin? (movement/goal) → Akkusativ: in den Park, auf den Tisch, an die Wand",
          "in + Dat: im = in dem · in + Akk: in den"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the correct form (movement).",
            "stemDe": "Ich gehe in ___ Park.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 1,
            "whyEn": "Wohin? (goal) → Akkusativ: in den Park."
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct form (location).",
            "stemDe": "Ich bin in ___ Park.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 2,
            "whyEn": "Wo? (location) → Dativ: in dem Park (im Park)."
          },
          {
            "id": "q3",
            "promptEn": "Choose the correct form (movement).",
            "stemDe": "Leg das Buch auf ___ Tisch.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 1,
            "whyEn": "Wohin? (put onto) → Akkusativ: auf den Tisch."
          },
          {
            "id": "q4",
            "promptEn": "Choose the correct form (location).",
            "stemDe": "Das Buch liegt auf ___ Tisch.",
            "options": [
              "der",
              "den",
              "dem",
              "des"
            ],
            "answerIndex": 2,
            "whyEn": "Wo? (lies on) → Dativ: auf dem Tisch."
          },
          {
            "id": "q5",
            "promptEn": "Choose the correct form (movement).",
            "stemDe": "Häng das Bild an ___ Wand.",
            "options": [
              "die",
              "der",
              "den",
              "dem"
            ],
            "answerIndex": 0,
            "whyEn": "Wohin? (hang onto) → Akkusativ: an die Wand."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct form (location).",
            "stemDe": "Das Bild hängt an ___ Wand.",
            "options": [
              "die",
              "der",
              "den",
              "dem"
            ],
            "answerIndex": 1,
            "whyEn": "Wo? (hangs on) → Dativ: an der Wand."
          }
        ]
      },
      {
        "id": "g-b1-n-deklination",
        "title": "N-Deklination: der Student → den Studenten",
        "level": "B1",
        "tagline": "A small rule with huge payoff in writing.",
        "explainEn": "Some masculine nouns take -n (or -en) in all cases except Nominativ: den Studenten, dem Studenten, des Studenten. This is a classic “looks small but costs points” error in B1/B2 writing.",
        "cheatDe": [
          "Nominativ: der Student",
          "Akkusativ: den Studenten",
          "Dativ: dem Studenten",
          "Genitiv: des Studenten",
          "Common N-nouns: der Student, der Junge, der Mensch, der Kunde, der Kollege, der Name, der Herr",
          "Merksatz: Maskulin + -e / Person-Woerter → oft N-Deklination (nicht immer, aber sehr oft)."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the correct Akkusativ form.",
            "stemDe": "Ich sehe den ___. (Student)",
            "options": [
              "Student",
              "Studenten",
              "Studente",
              "Studentin"
            ],
            "answerIndex": 1,
            "whyEn": "Akkusativ: den Studenten."
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct Dativ form.",
            "stemDe": "Ich helfe dem ___. (Junge)",
            "options": [
              "Junge",
              "Jungen",
              "Jung",
              "Jungenen"
            ],
            "answerIndex": 1,
            "whyEn": "Dativ: dem Jungen."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct phrase.",
            "stemDe": "Mit dem ___ spreche ich später. (Kollege)",
            "options": [
              "Kollege",
              "Kollegen",
              "Kolleg",
              "Kollegin"
            ],
            "answerIndex": 1,
            "whyEn": "mit + Dativ; N-Deklination: dem Kollegen."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct phrase.",
            "stemDe": "Ich kenne den ___. (Mensch)",
            "options": [
              "Mensch",
              "Menschen",
              "Menschs",
              "Menschenen"
            ],
            "answerIndex": 1,
            "whyEn": "Akkusativ: den Menschen."
          },
          {
            "id": "q5",
            "promptEn": "Choose the correct form.",
            "stemDe": "Ich gebe dem ___ die Unterlagen. (Kunde)",
            "options": [
              "Kunde",
              "Kunden",
              "Kund",
              "Kundin"
            ],
            "answerIndex": 1,
            "whyEn": "Dativ: dem Kunden."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct phrase.",
            "stemDe": "Das ist der Name des ___. (Student)",
            "options": [
              "Student",
              "Studenten",
              "Studentes",
              "Studentem"
            ],
            "answerIndex": 1,
            "whyEn": "Genitiv: des Studenten."
          },
          {
            "id": "q7",
            "promptEn": "Choose the correct form.",
            "stemDe": "Ich sehe den ___. (Herr)",
            "options": [
              "Herr",
              "Herren",
              "Herrn",
              "Hers"
            ],
            "answerIndex": 2,
            "whyEn": "Special case: den Herrn."
          },
          {
            "id": "q8",
            "promptEn": "Choose the correct Dativ form.",
            "stemDe": "Ich spreche mit dem ___. (Name)",
            "options": [
              "Name",
              "Namen",
              "Nam",
              "Names"
            ],
            "answerIndex": 1,
            "whyEn": "mit + Dativ; N-Deklination: dem Namen."
          }
        ]
      },
      {
        "id": "g-a2-word-order-core",
        "title": "Word Order Core: V2 + weil/dass",
        "level": "A2",
        "tagline": "Main clause: verb is 2nd. Subordinate clause: verb goes to the end.",
        "explainEn": "German word order is a skill, not a rule to memorize. If you control V2 in main clauses and verb-final in weil/dass clauses, your speaking instantly becomes clearer.",
        "cheatDe": [
          "Hauptsatz (main clause): Verb auf Position 2: Heute habe ich keine Zeit.",
          "Nebensatz mit weil/dass: Verb am Ende: ..., weil ich keine Zeit habe.",
          "Komma vor Nebensatz: Ich bleibe zu Hause, weil ..."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct verb form.",
            "stemDe": "Heute ___ ich keine Zeit.",
            "options": [
              "habe",
              "haben",
              "hat",
              "bin"
            ],
            "answerIndex": 0,
            "whyEn": "Main clause: Heute habe ich ..."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct word order (weil-clause).",
            "stemDe": "Ich bleibe zu Hause, weil ich keine Zeit ___.",
            "options": [
              "habe",
              "haben",
              "hat",
              "bin"
            ],
            "answerIndex": 0,
            "whyEn": "weil-clause: verb at the end: ... weil ich keine Zeit habe."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct word order (dass-clause).",
            "stemDe": "Ich glaube, dass er morgen ___.",
            "options": [
              "kommt",
              "kommen",
              "kommt morgen",
              "ist kommt"
            ],
            "answerIndex": 0,
            "whyEn": "dass-clause: ... dass er morgen kommt."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct structure.",
            "stemDe": "Weil ich müde bin, ___ ich früher nach Hause.",
            "options": [
              "gehe",
              "gehen",
              "ging",
              "bin"
            ],
            "answerIndex": 0,
            "whyEn": "After a subordinate clause first, the verb still must be position 2: ... gehe ich ..."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the correct version.",
            "options": [
              "Ich komme heute nicht, weil ich habe keine Zeit.",
              "Ich komme heute nicht, weil ich keine Zeit habe.",
              "Ich komme heute nicht, weil keine Zeit ich habe.",
              "Ich komme heute nicht, weil ich keine Zeit."
            ],
            "answerIndex": 1,
            "whyEn": "weil-clause: verb at the end: ... weil ich keine Zeit habe."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct structure.",
            "stemDe": "Ich bleibe zu Hause. ___ bin ich krank.",
            "options": [
              "Daher",
              "Weil",
              "Dass",
              "Wenn"
            ],
            "answerIndex": 0,
            "whyEn": "Daher starts a new main clause (therefore)."
          }
        ]
      },
      {
        "id": "g-a2-perfekt",
        "title": "Perfekt: haben vs sein",
        "level": "A2",
        "tagline": "Past tense you’ll use daily in Germany.",
        "explainEn": "In real life you mostly speak in Perfekt. The key is choosing the right auxiliary: movement/change of state often uses sein; most other verbs use haben.",
        "cheatDe": [
          "Perfekt = haben/sein + Partizip II",
          "sein: gehen/fahren/kommen/werden/bleiben/sein (movement/change)",
          "haben: machen/arbeiten/kaufen/lernen/sagen ...",
          "Beispiel: Ich bin nach Berlin gefahren. · Ich habe viel gearbeitet."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the correct auxiliary.",
            "stemDe": "Ich ___ nach Berlin gefahren.",
            "options": [
              "bin",
              "habe",
              "war",
              "hat"
            ],
            "answerIndex": 0,
            "whyEn": "fahren (movement) usually uses sein: bin gefahren."
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct auxiliary.",
            "stemDe": "Wir ___ gestern lange gearbeitet.",
            "options": [
              "sind",
              "haben",
              "waren",
              "hatten"
            ],
            "answerIndex": 1,
            "whyEn": "arbeiten uses haben: haben gearbeitet."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct form.",
            "stemDe": "Er ___ spät gekommen.",
            "options": [
              "ist",
              "hat",
              "war",
              "wird"
            ],
            "answerIndex": 0,
            "whyEn": "kommen uses sein: ist gekommen."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Ich habe nach Hause gegangen.",
              "Ich bin nach Hause gegangen.",
              "Ich bin nach Hause gehen.",
              "Ich habe nach Hause gegangen bin."
            ],
            "answerIndex": 1,
            "whyEn": "gehen uses sein: bin gegangen."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ich ___ das Problem schnell gelöst.",
            "options": [
              "habe",
              "bin",
              "war",
              "werde"
            ],
            "answerIndex": 0,
            "whyEn": "lösen uses haben: habe gelöst."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct form.",
            "stemDe": "Sie ___ zwei Stunden geblieben.",
            "options": [
              "ist",
              "hat",
              "war",
              "wird"
            ],
            "answerIndex": 0,
            "whyEn": "bleiben uses sein: ist geblieben."
          }
        ]
      },
      {
        "id": "g-a2-modal",
        "title": "Modal Verbs + Infinitive at the End",
        "level": "A2",
        "tagline": "können, müssen, wollen… with clean word order.",
        "explainEn": "Modal verbs are high ROI for A2: they help you ask, negotiate, and set boundaries. The structure is simple: modal in position 2, the action (infinitive) at the end.",
        "cheatDe": [
          "Ich kann heute nicht kommen.",
          "Du musst morgen früh aufstehen.",
          "Wir wollen mehr üben.",
          "Modal = Position 2 · Infinitiv = am Ende"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct infinitive.",
            "stemDe": "Ich kann heute nicht ___.",
            "options": [
              "kommen",
              "komme",
              "kommt",
              "kam"
            ],
            "answerIndex": 0,
            "whyEn": "Modal + infinitive: kommen."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct modal form.",
            "stemDe": "Du ___ heute nicht rauchen. (not allowed)",
            "options": [
              "darfst",
              "musst",
              "willst",
              "kannst"
            ],
            "answerIndex": 0,
            "whyEn": "darfst = allowed/not allowed."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct structure.",
            "stemDe": "Wir ___ morgen früher anfangen.",
            "options": [
              "müssen",
              "muss",
              "musst",
              "müsst"
            ],
            "answerIndex": 0,
            "whyEn": "wir = müssen."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct infinitive.",
            "stemDe": "Ich will heute Abend ___ lernen.",
            "options": [
              "Deutsch",
              "deutsch",
              "deutsche",
              "deutscher"
            ],
            "answerIndex": 0,
            "whyEn": "Noun language: Deutsch."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Ich muss gehe jetzt.",
              "Ich muss jetzt gehen.",
              "Ich jetzt muss gehen.",
              "Ich gehen muss jetzt."
            ],
            "answerIndex": 1,
            "whyEn": "Modal + infinitive at end: Ich muss jetzt gehen."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct modal.",
            "stemDe": "___ wir einen Termin machen? (polite: can we?)",
            "options": [
              "Können",
              "Müssen",
              "Wollen",
              "Dürfen"
            ],
            "answerIndex": 0,
            "whyEn": "Können wir ...? is the standard."
          }
        ]
      },
      {
        "id": "g-a2-separable",
        "title": "Separable Verbs: anrufen, aufstehen, mitnehmen",
        "level": "A2",
        "tagline": "The particle goes to the end in main clauses.",
        "explainEn": "Separable verbs are everywhere in daily German. The core pattern: the verb stem is in position 2, and the separable particle goes to the end of the sentence.",
        "cheatDe": [
          "anrufen: Ich rufe dich an.",
          "aufstehen: Ich stehe um 7 Uhr auf.",
          "mitnehmen: Nimm bitte deinen Ausweis mit.",
          "Im Nebensatz bleibt alles zusammen: ..., weil ich dich anrufe."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct particle.",
            "stemDe": "Ich rufe dich später ___.",
            "options": [
              "an",
              "auf",
              "mit",
              "zu"
            ],
            "answerIndex": 0,
            "whyEn": "anrufen → ... an."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct verb form.",
            "stemDe": "Ich ___ um 7 Uhr auf.",
            "options": [
              "stehe",
              "steht",
              "stehst",
              "stehen"
            ],
            "answerIndex": 0,
            "whyEn": "ich = stehe."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct particle.",
            "stemDe": "Nimm bitte deinen Ausweis ___.",
            "options": [
              "mit",
              "an",
              "auf",
              "ab"
            ],
            "answerIndex": 0,
            "whyEn": "mitnehmen → ... mit."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Weil ich rufe dich an, bleibe ich kurz.",
              "Weil ich dich anrufe, bleibe ich kurz.",
              "Weil ich dich an rufe, bleibe ich kurz.",
              "Weil ich dich rufe an, bleibe ich kurz."
            ],
            "answerIndex": 1,
            "whyEn": "In a subordinate clause the separable verb stays together: anrufe."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct particle.",
            "stemDe": "Der Kurs fängt um 9 Uhr ___.",
            "options": [
              "an",
              "auf",
              "mit",
              "zu"
            ],
            "answerIndex": 0,
            "whyEn": "anfangen → ... an."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Ich mache morgen mit.",
              "Ich mache mit morgen.",
              "Ich mitmache morgen.",
              "Ich mit mache morgen."
            ],
            "answerIndex": 0,
            "whyEn": "mitmachen → mache ... mit (particle at the end)."
          }
        ]
      },
      {
        "id": "g-b1-zu-infinitiv",
        "title": "zu + Infinitiv",
        "level": "B1",
        "tagline": "A clean way to express goals, plans, and opinions.",
        "explainEn": "You will see and use zu + Infinitiv a lot from B1 onward: It is important to…, It is possible to…, I plan to… It also helps your writing sound more structured.",
        "cheatDe": [
          "Es ist wichtig, Deutsch zu lernen.",
          "Ich habe vor, mehr zu lesen.",
          "Es ist schwer, ohne Fehler zu schreiben.",
          "zu + Infinitiv usually at the end of the clause."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct form.",
            "stemDe": "Es ist wichtig, Deutsch ___.",
            "options": [
              "zu lernen",
              "lernen",
              "lerne",
              "lernst"
            ],
            "answerIndex": 0,
            "whyEn": "Pattern: wichtig, ... zu lernen."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ich habe vor, mehr ___.",
            "options": [
              "zu üben",
              "übe",
              "üben zu",
              "geübt"
            ],
            "answerIndex": 0,
            "whyEn": "Ich habe vor, ... zu üben."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct form.",
            "stemDe": "Es ist möglich, die Frist ___.",
            "options": [
              "zu verlängern",
              "verlängern",
              "verlängere",
              "verlängert"
            ],
            "answerIndex": 0,
            "whyEn": "möglich, ... zu verlängern."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Es ist schwer, schreiben ohne Fehler.",
              "Es ist schwer, ohne Fehler zu schreiben.",
              "Es ist schwer, zu schreiben ohne Fehler.",
              "Es ist schwer, ohne Fehler schreiben zu."
            ],
            "answerIndex": 1,
            "whyEn": "ohne Fehler + zu schreiben."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ich versuche, weniger Kaffee ___.",
            "options": [
              "zu trinken",
              "trinke",
              "getrunken",
              "trinken"
            ],
            "answerIndex": 0,
            "whyEn": "versuchen, ... zu trinken."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct structure.",
            "stemDe": "Es lohnt sich, jeden Tag kurz ___.",
            "options": [
              "zu wiederholen",
              "wiederhole",
              "wiederholen",
              "wiederholt"
            ],
            "answerIndex": 0,
            "whyEn": "Es lohnt sich, ... zu wiederholen."
          }
        ]
      },
      {
        "id": "g-b1-contrast-although",
        "title": "Contrast: obwohl / trotzdem / dennoch",
        "level": "B1",
        "tagline": "Say “although” correctly (and sound adult).",
        "explainEn": "This is a classic B1/B2 upgrade. “obwohl” creates a subordinate clause (verb at the end). “trotzdem/dennoch” goes in the main clause. Use them together for clean structure.",
        "cheatDe": [
          "Obwohl + Nebensatz: Obwohl ich krank bin, gehe ich zur Arbeit.",
          "Trotzdem/dennoch + Hauptsatz: Ich bin krank. Trotzdem gehe ich zur Arbeit.",
          "Combo (B2-clean): Obwohl ich krank bin, gehe ich trotzdem zur Arbeit.",
          "Verb am Ende: obwohl ich keine Zeit habe."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct word order.",
            "stemDe": "Obwohl ich muede ___, gehe ich laufen.",
            "options": [
              "bin",
              "habe",
              "ist",
              "seid"
            ],
            "answerIndex": 0,
            "whyEn": "obwohl-clause: verb at the end: obwohl ich muede bin."
          },
          {
            "id": "q2",
            "promptEn": "Choose the best connector for the main clause.",
            "stemDe": "Ich habe keine Zeit. ___ mache ich das heute.",
            "options": [
              "Obwohl",
              "Trotzdem",
              "Dass",
              "Wegen"
            ],
            "answerIndex": 1,
            "whyEn": "Main clause contrast: Trotzdem (or Dennoch)."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best option.",
            "options": [
              "Obwohl ich habe keine Zeit, komme ich.",
              "Obwohl ich keine Zeit habe, komme ich.",
              "Obwohl ich keine Zeit, habe komme ich.",
              "Obwohl ich keine Zeit habe, ich komme."
            ],
            "answerIndex": 1,
            "whyEn": "obwohl-clause verb-final: ... obwohl ich keine Zeit habe."
          },
          {
            "id": "q4",
            "promptEn": "Pick the clean combo sentence.",
            "stemDe": "Choose the best option.",
            "options": [
              "Obwohl es regnet, trotzdem wir gehen raus.",
              "Obwohl es regnet, gehen wir trotzdem raus.",
              "Obwohl es regnet, wir gehen trotzdem raus.",
              "Obwohl es regnet, gehen wir raus trotzdem."
            ],
            "answerIndex": 1,
            "whyEn": "Main clause V2: gehen wir; trotzdem can follow the verb."
          },
          {
            "id": "q5",
            "promptEn": "Choose the correct connector.",
            "stemDe": "Es war teuer, ___.",
            "options": [
              "trotzdem",
              "obwohl",
              "dass",
              "wodurch"
            ],
            "answerIndex": 0,
            "whyEn": "Standalone contrast in a main clause: trotzdem."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct option.",
            "stemDe": "Obwohl ___, hat er nicht angerufen.",
            "options": [
              "er Zeit hat",
              "er Zeit hatte",
              "hat er Zeit",
              "er hat Zeit"
            ],
            "answerIndex": 1,
            "whyEn": "Subordinate clause: obwohl er Zeit hatte (verb at end)."
          },
          {
            "id": "q7",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best option.",
            "options": [
              "Ich war krank. Dennoch ich bin zur Arbeit gegangen.",
              "Ich war krank. Dennoch bin ich zur Arbeit gegangen.",
              "Ich war krank. Dennoch gegangen bin ich zur Arbeit.",
              "Ich war krank. Dennoch zur Arbeit ich gegangen bin."
            ],
            "answerIndex": 1,
            "whyEn": "Main clause V2: Dennoch bin ich ..."
          },
          {
            "id": "q8",
            "promptEn": "Pick the correct phrase.",
            "stemDe": "Obwohl er wenig Geld ___, kauft er ein neues Handy.",
            "options": [
              "hat",
              "haben",
              "ist",
              "war"
            ],
            "answerIndex": 0,
            "whyEn": "obwohl-clause verb at end: obwohl er wenig Geld hat."
          }
        ]
      },
      {
        "id": "g-b1-relative",
        "title": "Relative Clauses (der/die/das)",
        "level": "B1",
        "tagline": "Make your writing precise without adding many words.",
        "explainEn": "Relative clauses let you connect information cleanly: the person who…, the thing that… At B1/B2, this is a key tool for clear writing.",
        "cheatDe": [
          "Das ist der Mann, der hier arbeitet. (Nominativ)",
          "Das ist der Mann, den ich gestern gesehen habe. (Akkusativ)",
          "Das ist der Mann, dem ich geholfen habe. (Dativ)",
          "Relativsatz = comma + verb at the end"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct relative pronoun.",
            "stemDe": "Das ist der Mann, ___ hier arbeitet.",
            "options": [
              "der",
              "den",
              "dem",
              "dessen"
            ],
            "answerIndex": 0,
            "whyEn": "He is the subject in the relative clause → Nominativ: der."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct relative pronoun.",
            "stemDe": "Das ist der Mann, ___ ich gestern gesehen habe.",
            "options": [
              "der",
              "den",
              "dem",
              "dessen"
            ],
            "answerIndex": 1,
            "whyEn": "Direct object in the clause → Akkusativ: den."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct relative pronoun.",
            "stemDe": "Das ist der Mann, ___ ich geholfen habe.",
            "options": [
              "der",
              "den",
              "dem",
              "dessen"
            ],
            "answerIndex": 2,
            "whyEn": "helfen takes Dativ → dem."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct structure.",
            "stemDe": "Das ist die Frau, ___ in Berlin wohnt.",
            "options": [
              "die",
              "der",
              "den",
              "dem"
            ],
            "answerIndex": 0,
            "whyEn": "Subject (feminine) → die."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Das ist der Kurs, der ich mag.",
              "Das ist der Kurs, den ich mag.",
              "Das ist der Kurs, dem ich mag.",
              "Das ist der Kurs, dessen ich mag."
            ],
            "answerIndex": 1,
            "whyEn": "mag takes Akkusativ: den."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct word order.",
            "stemDe": "Das ist der Mann, der hier ___.",
            "options": [
              "arbeitet",
              "arbeitet hier",
              "hier arbeitet",
              "ist arbeitet"
            ],
            "answerIndex": 0,
            "whyEn": "Relative clause verb goes to the end: ... der hier arbeitet."
          }
        ]
      },
      {
        "id": "g-b1-adj-endings",
        "title": "Adjective Endings (Practical Mini-Version)",
        "level": "B1",
        "tagline": "Enough endings to sound clean in B1/B2 writing.",
        "explainEn": "Full adjective declension is big. This module focuses on the patterns that appear constantly in real texts: after \"ein-\" articles and in common prepositional phrases.",
        "cheatDe": [
          "ein + mask. Akk: einen guten Job",
          "ein + neut. Nom/Akk: ein gutes Buch",
          "ein + Dat: einem guten Freund / einer guten Idee",
          "mit + Dat: mit dem neuen Chef"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct adjective ending.",
            "stemDe": "Ich habe einen ___ Job.",
            "options": [
              "gut",
              "gute",
              "guten",
              "gutes"
            ],
            "answerIndex": 2,
            "whyEn": "einen (mask. Akk) → guten."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct adjective ending.",
            "stemDe": "Das ist ein ___ Buch.",
            "options": [
              "gut",
              "gute",
              "guten",
              "gutes"
            ],
            "answerIndex": 3,
            "whyEn": "ein (neutrum) → gutes."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct ending.",
            "stemDe": "Ich spreche mit einem ___ Kollegen.",
            "options": [
              "nett",
              "nette",
              "netten",
              "nettes"
            ],
            "answerIndex": 2,
            "whyEn": "einem (Dativ) → netten."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct ending.",
            "stemDe": "Wir brauchen eine ___ Lösung.",
            "options": [
              "praktisch",
              "praktische",
              "praktischen",
              "praktisches"
            ],
            "answerIndex": 1,
            "whyEn": "eine (feminine) → praktische."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct ending.",
            "stemDe": "Ich arbeite mit dem ___ Chef.",
            "options": [
              "neu",
              "neue",
              "neuen",
              "neues"
            ],
            "answerIndex": 2,
            "whyEn": "dem (Dativ) → neuen."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct ending.",
            "stemDe": "Ich habe keine ___ Zeit.",
            "options": [
              "frei",
              "freie",
              "freien",
              "freies"
            ],
            "answerIndex": 1,
            "whyEn": "keine (feminine) → freie."
          }
        ]
      },
      {
        "id": "g-b2-da-words",
        "title": "da-words: daran, darüber, damit",
        "level": "B2",
        "tagline": "The B2 trick for verb + preposition patterns.",
        "explainEn": "At B2, you’ll hear and read a lot of da-words (darauf, damit, darüber…). They replace “preposition + it/that” and make your German sound natural and compact.",
        "cheatDe": [
          "Ich freue mich über das Ergebnis. → Ich freue mich darüber.",
          "Ich erinnere mich an das Gespräch. → Ich erinnere mich daran.",
          "Ich bin damit einverstanden. (= mit dem)",
          "Frageformen: Woran? Worüber? Womit?"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct da-word.",
            "stemDe": "Ich freue mich ___.",
            "options": [
              "darüber",
              "daran",
              "damit",
              "dazu"
            ],
            "answerIndex": 0,
            "whyEn": "freuen über → darüber."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct da-word.",
            "stemDe": "Kannst du dich ___ erinnern?",
            "options": [
              "darüber",
              "daran",
              "damit",
              "dazu"
            ],
            "answerIndex": 1,
            "whyEn": "sich erinnern an → daran."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct meaning.",
            "stemDe": "Ich bin damit einverstanden.",
            "options": [
              "I disagree.",
              "I agree with that.",
              "I am tired.",
              "I will do it later."
            ],
            "answerIndex": 1,
            "whyEn": "damit = mit dem/mit dieser Sache."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct question word.",
            "stemDe": "___ freust du dich? (über die Nachricht)",
            "options": [
              "Woran",
              "Worüber",
              "Womit",
              "Wofür"
            ],
            "answerIndex": 1,
            "whyEn": "über + Akk → Worüber?"
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct da-word.",
            "stemDe": "Ich kann ___ nichts anfangen. (with that)",
            "options": [
              "damit",
              "darüber",
              "daran",
              "dazu"
            ],
            "answerIndex": 0,
            "whyEn": "mit + Dat → damit."
          },
          {
            "id": "q6",
            "promptEn": "Pick the best sentence.",
            "stemDe": "Choose the natural version.",
            "options": [
              "Ich denke an es oft.",
              "Ich denke oft daran.",
              "Ich daran denke oft.",
              "Ich denke daran oft ich."
            ],
            "answerIndex": 1,
            "whyEn": "da-words are the natural option: oft daran."
          }
        ]
      },
      {
        "id": "g-connectors-order",
        "title": "Connectors + Word Order",
        "level": "B1",
        "tagline": "Make your logic obvious: connectors that sound adult, not textbook.",
        "explainEn": "At B1/B2, mistakes in articles are tolerated more than unclear logic. This module trains connectors and subordinate clause word order so your writing feels structured.",
        "cheatDe": [
          "weil / obwohl / während: Verb am Ende (..., weil ich keine Zeit hatte.)",
          "trotzdem / daher / außerdem: new main clause (..., trotzdem gehe ich.)",
          "einerseits ... andererseits: balance pros/cons",
          "zwar ... aber: nuanced contrast"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the best connector.",
            "stemDe": "Ich war müde, ___ bin ich mitgegangen.",
            "options": [
              "trotzdem",
              "weil",
              "dass",
              "wenn"
            ],
            "answerIndex": 0,
            "whyEn": "You need a contrast in a new main clause: trotzdem."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct word order.",
            "stemDe": "Obwohl ich keine Zeit ___, habe ich geholfen.",
            "options": [
              "hatte",
              "habe",
              "hat",
              "haben"
            ],
            "answerIndex": 0,
            "whyEn": "In the subordinate clause: \"ich ... hatte\" (verb at the end)."
          },
          {
            "id": "q3",
            "promptEn": "Choose the correct pair.",
            "stemDe": "___ ist die Wohnung klein, ___ liegt sie zentral.",
            "options": [
              "Zwar / aber",
              "Weil / deshalb",
              "Wenn / dann",
              "Dass / trotzdem"
            ],
            "answerIndex": 0,
            "whyEn": "The classic nuanced contrast is \"zwar ... aber\"."
          },
          {
            "id": "q4",
            "promptEn": "Pick the best connector.",
            "stemDe": "Es hat stark geregnet, ___ bleiben wir zu Hause.",
            "options": [
              "daher",
              "während",
              "obwohl",
              "trotzdem"
            ],
            "answerIndex": 0,
            "whyEn": "daher introduces the consequence (therefore)."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct form.",
            "stemDe": "Während ___ Meetings kamen neue Infos.",
            "options": [
              "des",
              "den",
              "dem",
              "das"
            ],
            "answerIndex": 0,
            "whyEn": "As a preposition here: \"während\" + genitive (formal)."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct logic.",
            "stemDe": "Einerseits spart Homeoffice Zeit, andererseits ___ der Austausch.",
            "options": [
              "fehlt",
              "fehlte",
              "fehlen",
              "fehlst"
            ],
            "answerIndex": 0,
            "whyEn": "Singular subject: \"der Austausch fehlt\"."
          },
          {
            "id": "q7",
            "promptEn": "Pick the connector that adds a point.",
            "stemDe": "Wir sollten die Kosten prüfen. ___ brauchen wir einen Plan B.",
            "options": [
              "Darüber hinaus",
              "Obwohl",
              "Weil",
              "Wegen"
            ],
            "answerIndex": 0,
            "whyEn": "Darüber hinaus adds an additional point."
          },
          {
            "id": "q8",
            "promptEn": "Pick the correct word order.",
            "stemDe": "Wenn die Tests grün ___, releasen wir am Dienstag.",
            "options": [
              "sind",
              "sein",
              "ist",
              "war"
            ],
            "answerIndex": 0,
            "whyEn": "Subordinate clause: verb at the end; plural: sind."
          }
        ]
      },
      {
        "id": "g-konjunktiv2",
        "title": "Konjunktiv II for Polite Requests",
        "level": "B2",
        "tagline": "Sound professional without sounding cold.",
        "explainEn": "Goethe B2 writing and speaking heavily reward polite, indirect language. Konjunktiv II helps you negotiate, complain, and ask for information like a native professional.",
        "cheatDe": [
          "Ich würde Sie bitten, ... (formal request)",
          "Könnten Sie bitte ...? (polite question)",
          "Wäre es möglich, ...? (soft proposal)",
          "Ich hätte gern ... (polite desire)"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the most formal version.",
            "stemDe": "___ Sie mir die Unterlagen schicken?",
            "options": [
              "Könnten",
              "Kannst",
              "Schickst",
              "Musst"
            ],
            "answerIndex": 0,
            "whyEn": "Könnten Sie ... is polite and formal."
          },
          {
            "id": "q2",
            "promptEn": "Choose the best phrase for a complaint email.",
            "stemDe": "Ich ___ Sie bitten, eine Nachforschung einzuleiten.",
            "options": [
              "würde",
              "wurde",
              "werde",
              "bin"
            ],
            "answerIndex": 0,
            "whyEn": "\"Ich würde Sie bitten\" is Konjunktiv II."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct soft proposal.",
            "stemDe": "___ es möglich, die Frist zu verlängern?",
            "options": [
              "Wäre",
              "War",
              "Ist",
              "Sei"
            ],
            "answerIndex": 0,
            "whyEn": "Wäre es möglich ... is a polite suggestion."
          },
          {
            "id": "q4",
            "promptEn": "Choose the best opening on the phone.",
            "stemDe": "Guten Tag, ich ___ gern einen Termin.",
            "options": [
              "hätte",
              "habe",
              "hatte",
              "bin"
            ],
            "answerIndex": 0,
            "whyEn": "Ich hätte gern ... is polite (Konjunktiv II)."
          },
          {
            "id": "q5",
            "promptEn": "Pick the best phrase to request a written response.",
            "stemDe": "Über eine schriftliche Rückmeldung ___ ich mich freuen.",
            "options": [
              "würde",
              "werde",
              "wurde",
              "bin"
            ],
            "answerIndex": 0,
            "whyEn": "würde ... freuen is polite and standard in formal writing."
          },
          {
            "id": "q6",
            "promptEn": "Choose the most neutral, professional tone.",
            "stemDe": "Meines Erachtens ___ klare Regeln hilfreich.",
            "options": [
              "wären",
              "sind",
              "waren",
              "sein"
            ],
            "answerIndex": 0,
            "whyEn": "wären is a soft, non-absolute opinion."
          }
        ]
      },
      {
        "id": "g-passive-nominal",
        "title": "Passive Voice + Nominal Style",
        "level": "B2",
        "tagline": "German admin language: useful for letters, reports, and exams.",
        "explainEn": "B2 exam texts often use passive and nominal expressions. You do not need to overuse them, but you should recognize and produce them when the situation is formal (letters, reports, complaints).",
        "cheatDe": [
          "Aktiv: Die Stadt plant eine Maßnahme.",
          "Passiv: Eine Maßnahme wird geplant.",
          "Nominal: die Erhöhung / die Anpassung / die Begründung",
          "Formal: Hiermit informieren wir Sie, dass ..."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the passive form.",
            "stemDe": "Die Maßnahme ___ nächste Woche eingeführt.",
            "options": [
              "wird",
              "ist",
              "hat",
              "war"
            ],
            "answerIndex": 0,
            "whyEn": "Passive present: wird eingeführt."
          },
          {
            "id": "q2",
            "promptEn": "Pick the best nominal form.",
            "stemDe": "Wir möchten eine kurze ___ erhalten.",
            "options": [
              "Begründung",
              "begründen",
              "begründet",
              "begründlich"
            ],
            "answerIndex": 0,
            "whyEn": "Begründung is the noun you need."
          },
          {
            "id": "q3",
            "promptEn": "Pick the passive perfect.",
            "stemDe": "Der Beschluss ___ gestern gefasst worden.",
            "options": [
              "ist",
              "hat",
              "wird",
              "war"
            ],
            "answerIndex": 0,
            "whyEn": "Passive perfect: ist ... worden."
          },
          {
            "id": "q4",
            "promptEn": "Choose the best formal opener.",
            "stemDe": "___ informieren wir Sie, dass die Miete erhöht wird.",
            "options": [
              "Hiermit",
              "Dadurch",
              "Jetzt",
              "Trotzdem"
            ],
            "answerIndex": 0,
            "whyEn": "Hiermit is standard formal register."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct statement (meaning: because of).",
            "stemDe": "Die Anpassung erfolgt ___ gestiegener Kosten.",
            "options": [
              "aufgrund",
              "trotzdem",
              "während",
              "obwohl"
            ],
            "answerIndex": 0,
            "whyEn": "aufgrund + Genitiv expresses cause in a formal way."
          }
        ]
      },
      {
        "id": "g-a2-pronouns-akk-dat",
        "title": "Pronouns: mich/mir, dich/dir, ihn/ihm",
        "level": "A2",
        "tagline": "Stop guessing. Pronouns make cases visible.",
        "explainEn": "Articles are hard to hear, but pronouns are loud. This drill makes Akkusativ vs Dativ automatic for the most common pronouns.",
        "cheatDe": [
          "Akk: mich, dich, ihn, sie, uns, euch, sie",
          "Dat: mir, dir, ihm, ihr, uns, euch, ihnen",
          "helfen/danken/gehören/antworten → Dativ",
          "sehen/kaufen/haben → Akkusativ"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the correct pronoun (Dativ).",
            "stemDe": "Kannst du ___ helfen?",
            "options": [
              "ich",
              "mich",
              "mir",
              "mein"
            ],
            "answerIndex": 2,
            "whyEn": "helfen takes Dativ: mir."
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct pronoun (Akkusativ).",
            "stemDe": "Ich sehe ___ morgen.",
            "options": [
              "du",
              "dich",
              "dir",
              "dein"
            ],
            "answerIndex": 1,
            "whyEn": "sehen takes Akkusativ: dich."
          },
          {
            "id": "q3",
            "promptEn": "Choose the correct pronoun (Dativ receiver).",
            "stemDe": "Wir geben ___ den Schlüssel.",
            "options": [
              "dich",
              "dir",
              "du",
              "dein"
            ],
            "answerIndex": 1,
            "whyEn": "geben: receiver = Dativ: dir."
          },
          {
            "id": "q4",
            "promptEn": "Choose the correct pronoun (Akkusativ).",
            "stemDe": "Er ruft ___ an.",
            "options": [
              "ich",
              "mich",
              "mir",
              "mein"
            ],
            "answerIndex": 1,
            "whyEn": "anrufen uses Akkusativ: mich."
          },
          {
            "id": "q5",
            "promptEn": "Choose the correct pronoun (Dativ).",
            "stemDe": "Sie schreibt ___ eine E-Mail.",
            "options": [
              "mich",
              "mir",
              "mein",
              "ich"
            ],
            "answerIndex": 1,
            "whyEn": "Receiver = Dativ: mir."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct pronoun (Dativ).",
            "stemDe": "Ich danke ___.",
            "options": [
              "dich",
              "dir",
              "du",
              "dein"
            ],
            "answerIndex": 1,
            "whyEn": "danken takes Dativ: dir."
          },
          {
            "id": "q7",
            "promptEn": "Choose the correct pronoun.",
            "stemDe": "Das gehört ___.",
            "options": [
              "mich",
              "mir",
              "mein",
              "ich"
            ],
            "answerIndex": 1,
            "whyEn": "gehören takes Dativ: mir."
          },
          {
            "id": "q8",
            "promptEn": "Choose the correct pronoun.",
            "stemDe": "Kannst du ___ das erklären?",
            "options": [
              "mich",
              "mir",
              "mein",
              "ich"
            ],
            "answerIndex": 1,
            "whyEn": "explain to me → Dativ: mir."
          }
        ]
      },
      {
        "id": "g-a2-negation",
        "title": "Negation: nicht vs kein",
        "level": "A2",
        "tagline": "One decision that fixes many A2 sentences.",
        "explainEn": "Use \"kein\" to negate a noun (like “not a…”). Use \"nicht\" to negate a verb/adjective/whole idea. This is a frequent Goethe scoring detail.",
        "cheatDe": [
          "kein = not a / no (negates nouns): Ich habe keine Zeit. Wir haben kein Auto.",
          "nicht = not (negates verbs/adjectives/phrases): Ich komme nicht. Das ist nicht teuer.",
          "kein behaves like ein- articles: kein / keine / keinen / keinem ..."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the best negation.",
            "stemDe": "Ich habe ___ Zeit.",
            "options": [
              "nicht",
              "kein",
              "keine",
              "keinen"
            ],
            "answerIndex": 2,
            "whyEn": "Zeit is a noun (feminine) → keine Zeit."
          },
          {
            "id": "q2",
            "promptEn": "Choose the best negation.",
            "stemDe": "Ich komme heute ___.",
            "options": [
              "nicht",
              "kein",
              "keine",
              "keinen"
            ],
            "answerIndex": 0,
            "whyEn": "Negating the verb “kommen” → nicht."
          },
          {
            "id": "q3",
            "promptEn": "Choose the correct negation.",
            "stemDe": "Wir haben ___ Auto.",
            "options": [
              "nicht",
              "kein",
              "keine",
              "keinen"
            ],
            "answerIndex": 1,
            "whyEn": "Auto is a noun (neuter) → kein Auto."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct form.",
            "stemDe": "Er trinkt ___ Kaffee.",
            "options": [
              "nicht",
              "kein",
              "keine",
              "keinen"
            ],
            "answerIndex": 3,
            "whyEn": "Kaffee is masculine Akkusativ → keinen Kaffee."
          },
          {
            "id": "q5",
            "promptEn": "Choose the best option.",
            "stemDe": "Das ist ___ mein Handy.",
            "options": [
              "nicht",
              "kein",
              "keine",
              "keinen"
            ],
            "answerIndex": 0,
            "whyEn": "Negating a possessive phrase → nicht mein Handy."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct negation.",
            "stemDe": "Ich bin heute ___ müde.",
            "options": [
              "nicht",
              "kein",
              "keine",
              "keinen"
            ],
            "answerIndex": 0,
            "whyEn": "Negating an adjective → nicht müde."
          },
          {
            "id": "q7",
            "promptEn": "Pick the correct form.",
            "stemDe": "Sie hat ___ Termin.",
            "options": [
              "nicht",
              "kein",
              "keinen",
              "keine"
            ],
            "answerIndex": 2,
            "whyEn": "Termin is masculine → keinen Termin."
          },
          {
            "id": "q8",
            "promptEn": "Choose the best negation.",
            "stemDe": "Das Problem ist ___ groß.",
            "options": [
              "nicht",
              "kein",
              "keine",
              "keinen"
            ],
            "answerIndex": 0,
            "whyEn": "Negating an adjective (groß) → nicht."
          }
        ]
      },
      {
        "id": "g-a2-time-order",
        "title": "Time + Word Order (A2): “Morgen gehe ich …”",
        "level": "A2",
        "tagline": "Verb still stays 2nd, even when time comes first.",
        "explainEn": "Time phrases are everywhere (morgen, am Montag, um 10 Uhr). If time comes first, the verb still must be position 2.",
        "cheatDe": [
          "Morgen gehe ich zum Arzt. (Verb = 2nd)",
          "Um 10 Uhr habe ich einen Termin.",
          "Time usually before place: Ich gehe morgen zum Bahnhof.",
          "If you move time to the front: “Morgen …”, then verb comes next."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct sentence (time first).",
            "stemDe": "Choose the best version.",
            "options": [
              "Morgen gehe ich zum Arzt.",
              "Morgen ich gehe zum Arzt.",
              "Morgen gehe zum Arzt ich.",
              "Morgen zum Arzt gehe ich."
            ],
            "answerIndex": 0,
            "whyEn": "Verb must be 2nd: Morgen gehe ich ..."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Um 10 Uhr habe ich einen Termin.",
              "Um 10 Uhr ich habe einen Termin.",
              "Um 10 Uhr habe einen Termin ich.",
              "Um 10 Uhr einen Termin habe ich."
            ],
            "answerIndex": 0,
            "whyEn": "Verb 2nd: Um 10 Uhr habe ich ..."
          },
          {
            "id": "q3",
            "promptEn": "Pick the most natural order.",
            "stemDe": "Choose the best version.",
            "options": [
              "Ich gehe morgen zum Bahnhof.",
              "Ich gehe zum Bahnhof morgen.",
              "Ich morgen gehe zum Bahnhof.",
              "Gehe ich morgen zum Bahnhof."
            ],
            "answerIndex": 0,
            "whyEn": "Common order: time before place."
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct sentence (time phrase).",
            "stemDe": "Choose the best version.",
            "options": [
              "Am Montag arbeite ich von zu Hause.",
              "Am Montag ich arbeite von zu Hause.",
              "Am Montag arbeite von zu Hause ich.",
              "Am Montag von zu Hause arbeite ich."
            ],
            "answerIndex": 0,
            "whyEn": "Verb 2nd: Am Montag arbeite ich ..."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Heute kann ich leider nicht.",
              "Heute ich kann leider nicht.",
              "Heute kann ich nicht leider.",
              "Heute kann leider ich nicht."
            ],
            "answerIndex": 0,
            "whyEn": "Verb 2nd; “leider” can sit mid-sentence."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "In zwei Wochen mache ich Urlaub.",
              "In zwei Wochen ich mache Urlaub.",
              "In zwei Wochen mache Urlaub ich.",
              "In zwei Wochen Urlaub mache ich."
            ],
            "answerIndex": 0,
            "whyEn": "Verb 2nd: In zwei Wochen mache ich ..."
          }
        ]
      },
      {
        "id": "g-a2-questions",
        "title": "Questions (A2): wer/was/wo/wann/wie/wie viel",
        "level": "A2",
        "tagline": "Asking the right question makes speaking easy.",
        "explainEn": "A2 is mostly questions. If you can ask cleanly, you can survive and get what you need.",
        "cheatDe": [
          "Wer? = who · Was? = what",
          "Wo? = where (location) · Wohin? = where to",
          "Wann? = when · Wie? = how",
          "Wie viel? = how much",
          "Question: Verb comes right after the question word: Wo ist ...?"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the correct question word.",
            "stemDe": "___ kostet der Eintritt?",
            "options": [
              "Wo",
              "Wann",
              "Wie viel",
              "Warum"
            ],
            "answerIndex": 2,
            "whyEn": "Price → Wie viel?"
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct question word.",
            "stemDe": "___ ist der Bahnhof?",
            "options": [
              "Wo",
              "Wie",
              "Wann",
              "Was"
            ],
            "answerIndex": 0,
            "whyEn": "Location → Wo?"
          },
          {
            "id": "q3",
            "promptEn": "Choose the correct question word.",
            "stemDe": "___ heißt du?",
            "options": [
              "Wer",
              "Wie",
              "Wo",
              "Was"
            ],
            "answerIndex": 1,
            "whyEn": "Name → Wie heißt du?"
          },
          {
            "id": "q4",
            "promptEn": "Choose the correct question word.",
            "stemDe": "___ brauchst du?",
            "options": [
              "Was",
              "Wer",
              "Wann",
              "Wie viel"
            ],
            "answerIndex": 0,
            "whyEn": "Object → Was?"
          },
          {
            "id": "q5",
            "promptEn": "Choose the correct question word.",
            "stemDe": "___ kommst du?",
            "options": [
              "Woher",
              "Wohin",
              "Wo",
              "Wann"
            ],
            "answerIndex": 0,
            "whyEn": "Origin → Woher?"
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct question word.",
            "stemDe": "___ ist der Termin?",
            "options": [
              "Wann",
              "Wo",
              "Was",
              "Wer"
            ],
            "answerIndex": 0,
            "whyEn": "Time → Wann?"
          }
        ]
      },
      {
        "id": "g-b2-indirect-questions",
        "title": "Indirect Questions: ob / warum / wann",
        "level": "B2",
        "tagline": "B2 polite: “Könnten Sie mir sagen, ob …?”",
        "explainEn": "Indirect questions are everywhere in professional German. The key: comma + verb at the end, and “ob” for yes/no.",
        "cheatDe": [
          "Könnten Sie mir sagen, ob der Termin morgen ist?",
          "Ich würde gern wissen, wann Sie Zeit haben.",
          "Ich frage mich, warum das so lange dauert.",
          "Indirect question = subordinate clause → verb at the end."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct word order.",
            "stemDe": "Könnten Sie mir sagen, ob der Termin morgen ___?",
            "options": [
              "ist",
              "sein",
              "war",
              "wird"
            ],
            "answerIndex": 0,
            "whyEn": "Verb at the end: ... ob der Termin morgen ist."
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct connector (yes/no).",
            "stemDe": "Ich weiß nicht, ___ er kommt.",
            "options": [
              "ob",
              "dass",
              "weil",
              "trotzdem"
            ],
            "answerIndex": 0,
            "whyEn": "Yes/no indirect question uses ob."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct word order.",
            "stemDe": "Ich frage mich, warum das so lange ___.",
            "options": [
              "dauert",
              "dauere",
              "dauerst",
              "dauer"
            ],
            "answerIndex": 0,
            "whyEn": "Verb at the end: ... warum das so lange dauert."
          },
          {
            "id": "q4",
            "promptEn": "Choose the correct question word.",
            "stemDe": "Ich würde gern wissen, ___ Sie Zeit haben.",
            "options": [
              "wann",
              "dass",
              "weil",
              "trotzdem"
            ],
            "answerIndex": 0,
            "whyEn": "Time question → wann."
          },
          {
            "id": "q5",
            "promptEn": "Pick the best polite sentence.",
            "stemDe": "Choose the best version.",
            "options": [
              "Sagen Sie, ob ich soll warten.",
              "Könnten Sie mir sagen, ob ich warten soll?",
              "Ob ich warten soll, sagen Sie.",
              "Sagen Sie mir ich warten soll ob."
            ],
            "answerIndex": 1,
            "whyEn": "Polite frame + correct word order."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct word order.",
            "stemDe": "Könnten Sie mir erklären, wie das System ___?",
            "options": [
              "funktioniert",
              "funktionieren",
              "funktioniere",
              "funktioniert es"
            ],
            "answerIndex": 0,
            "whyEn": "Indirect question: ... wie das System funktioniert."
          }
        ]
      },
      {
        "id": "g-b2-genitive-preps",
        "title": "Formal Genitive Preps: wegen, trotz, während",
        "level": "B2",
        "tagline": "Admin German that shows up in letters and exams.",
        "explainEn": "In formal writing you’ll often see genitive prepositions (wegen, trotz, während). Even if spoken German sometimes uses Dativ, the exam-friendly form is Genitiv.",
        "cheatDe": [
          "wegen + Genitiv: wegen des Wetters",
          "trotz + Genitiv: trotz des Problems",
          "während + Genitiv: während des Meetings",
          "Formal pattern: aufgrund + Genitiv"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Pick the correct article (Genitiv).",
            "stemDe": "Wegen ___ Wetters bleiben wir zu Hause.",
            "options": [
              "des",
              "dem",
              "den",
              "das"
            ],
            "answerIndex": 0,
            "whyEn": "Genitiv masculine/neuter: des Wetters."
          },
          {
            "id": "q2",
            "promptEn": "Pick the correct article (Genitiv).",
            "stemDe": "Trotz ___ Problems machen wir weiter.",
            "options": [
              "des",
              "dem",
              "den",
              "das"
            ],
            "answerIndex": 0,
            "whyEn": "Genitiv: trotz des Problems."
          },
          {
            "id": "q3",
            "promptEn": "Pick the correct article (Genitiv).",
            "stemDe": "Während ___ Meetings kamen neue Infos.",
            "options": [
              "des",
              "dem",
              "den",
              "das"
            ],
            "answerIndex": 0,
            "whyEn": "Formal: während des Meetings."
          },
          {
            "id": "q4",
            "promptEn": "Pick the best formal connector (meaning: because of).",
            "stemDe": "Die Anpassung erfolgt ___ gestiegener Kosten.",
            "options": [
              "aufgrund",
              "trotzdem",
              "während",
              "obwohl"
            ],
            "answerIndex": 0,
            "whyEn": "aufgrund + Genitiv is a formal cause phrase."
          },
          {
            "id": "q5",
            "promptEn": "Pick the correct form.",
            "stemDe": "Wegen ___ Baustelle ist es laut.",
            "options": [
              "der",
              "die",
              "den",
              "dem"
            ],
            "answerIndex": 0,
            "whyEn": "Genitiv feminine: wegen der Baustelle."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct form.",
            "stemDe": "Trotz ___ Verspätung hat er geholfen.",
            "options": [
              "der",
              "die",
              "den",
              "dem"
            ],
            "answerIndex": 0,
            "whyEn": "Genitiv feminine: trotz der Verspätung."
          }
        ]
      },
      {
        "id": "g-a2-commands-polite",
        "title": "A2 Everyday Commands: Imperativ + polite requests",
        "level": "A2",
        "tagline": "Useful for class, work, and daily life without sounding rude.",
        "explainEn": "You need commands all the time: waiting, paying, asking someone to do something. This module trains basic Imperativ and the polite \"Sie\" form with clear, practical examples.",
        "cheatDe": [
          "du-Form often drops -st: du kommst -> Komm!",
          "ihr-Form = verb stem + t: Kommt!",
          "Sie-Form: infinitive + Sie: Kommen Sie bitte.",
          "Polite softeners: bitte, doch, mal"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the best polite command.",
            "stemDe": "___ bitte einen Moment.",
            "options": [
              "Warte",
              "Warten Sie",
              "Wartet",
              "Wartest"
            ],
            "answerIndex": 1,
            "whyEn": "Formal/polite request: Warten Sie bitte."
          },
          {
            "id": "q2",
            "promptEn": "Choose the du-imperative.",
            "stemDe": "Du kommst spaeter. -> ___ spaeter!",
            "options": [
              "Komm",
              "Kommst",
              "Kommen",
              "Kommt"
            ],
            "answerIndex": 0,
            "whyEn": "du-imperative: Komm!"
          },
          {
            "id": "q3",
            "promptEn": "Choose the ihr-imperative.",
            "stemDe": "Ihr seid ruhig. -> ___ ruhig!",
            "options": [
              "Sei",
              "Seid",
              "Seien",
              "Sein"
            ],
            "answerIndex": 1,
            "whyEn": "ihr-imperative: Seid ruhig!"
          },
          {
            "id": "q4",
            "promptEn": "Pick the most natural sentence.",
            "stemDe": "At a station information desk:",
            "options": [
              "Gib mir Information.",
              "Geben Sie mir bitte eine Auskunft.",
              "Gebt mir Information.",
              "Geben mir Auskunft bitte."
            ],
            "answerIndex": 1,
            "whyEn": "Polite formal request: Geben Sie mir bitte ..."
          },
          {
            "id": "q5",
            "promptEn": "Choose the best soft polite form.",
            "stemDe": "___ Sie bitte kurz die E-Mail.",
            "options": [
              "Les",
              "Lest",
              "Lesen",
              "Liest"
            ],
            "answerIndex": 2,
            "whyEn": "Polite Sie command: Lesen Sie bitte ..."
          },
          {
            "id": "q6",
            "promptEn": "Pick the correct command.",
            "stemDe": "You ask a friend to call you:",
            "options": [
              "Ruf mich bitte an.",
              "Rufen Sie mich an.",
              "Ruft mich an Sie.",
              "Anruf mich bitte."
            ],
            "answerIndex": 0,
            "whyEn": "Informal singular command with separable verb: Ruf ... an."
          }
        ]
      },
      {
        "id": "g-b1-relative-clauses",
        "title": "B1 Relative Clauses: der/die/das + case",
        "level": "B1",
        "tagline": "Link ideas naturally and stop writing in short disconnected sentences.",
        "explainEn": "Relative clauses are high-impact for B1 writing. You can describe people/things with precision and improve flow. Core rule: relative pronoun matches gender/number, case depends on function in the relative clause.",
        "cheatDe": [
          "Der Mann, der hier wohnt, ... (Nominativ)",
          "Der Mann, den ich kenne, ... (Akkusativ)",
          "Der Mann, dem ich helfe, ... (Dativ)",
          "Das Buch, das ich lese, ..."
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the correct relative pronoun.",
            "stemDe": "Das ist der Kollege, ___ in Berlin arbeitet.",
            "options": [
              "der",
              "den",
              "dem",
              "dessen"
            ],
            "answerIndex": 0,
            "whyEn": "Subject in relative clause -> Nominativ: der."
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct relative pronoun.",
            "stemDe": "Das ist der Kollege, ___ ich gestern angerufen habe.",
            "options": [
              "der",
              "den",
              "dem",
              "dessen"
            ],
            "answerIndex": 1,
            "whyEn": "Direct object -> Akkusativ: den."
          },
          {
            "id": "q3",
            "promptEn": "Choose the correct relative pronoun.",
            "stemDe": "Das ist die Kollegin, ___ ich geholfen habe.",
            "options": [
              "die",
              "der",
              "den",
              "dem"
            ],
            "answerIndex": 1,
            "whyEn": "helfen takes Dativ; feminine singular -> der."
          },
          {
            "id": "q4",
            "promptEn": "Choose the correct pronoun.",
            "stemDe": "Das ist das Buch, ___ ich empfehlen kann.",
            "options": [
              "der",
              "die",
              "das",
              "dem"
            ],
            "answerIndex": 2,
            "whyEn": "Neuter singular, Akkusativ = das."
          },
          {
            "id": "q5",
            "promptEn": "Choose the best sentence.",
            "stemDe": "Combine two ideas.",
            "options": [
              "Ich kenne eine Frau. Sie arbeitet bei Siemens.",
              "Ich kenne eine Frau, die bei Siemens arbeitet.",
              "Ich kenne eine Frau, der bei Siemens arbeitet.",
              "Ich kenne eine Frau, den bei Siemens arbeitet."
            ],
            "answerIndex": 1,
            "whyEn": "Feminine subject in relative clause: die."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct pronoun.",
            "stemDe": "Das sind die Leute, ___ wir gestern getroffen haben.",
            "options": [
              "die",
              "den",
              "deren",
              "denen"
            ],
            "answerIndex": 0,
            "whyEn": "Plural Akkusativ relative pronoun = die."
          }
        ]
      },
      {
        "id": "g-b1-konjunktiv2-polite",
        "title": "B1 Polite Requests: Konjunktiv II",
        "level": "B1",
        "tagline": "Sound professional and polite in emails and spoken requests.",
        "explainEn": "Konjunktiv II is essential for polite B1/B2 communication: koennten, waeren, haetten. You use it in requests, suggestions, and soft disagreement.",
        "cheatDe": [
          "koennen -> koennte / koennten",
          "haben -> haette / haetten",
          "sein -> waere / waeren",
          "Polite frames: Koennten Sie ...? Waere es moeglich, ...?"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the polite request.",
            "stemDe": "___ Sie mir bitte helfen?",
            "options": [
              "Konnen",
              "Koennen",
              "Koennten",
              "Kann"
            ],
            "answerIndex": 2,
            "whyEn": "Polite request commonly uses Konjunktiv II: Koennten Sie ...?"
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct form.",
            "stemDe": "Es ___ gut, wenn wir frueher anfangen.",
            "options": [
              "ist",
              "waere",
              "war",
              "sei"
            ],
            "answerIndex": 1,
            "whyEn": "Hypothetical/polite suggestion: waere."
          },
          {
            "id": "q3",
            "promptEn": "Choose the best sentence.",
            "stemDe": "You ask for a date change:",
            "options": [
              "Aendern Sie den Termin.",
              "Koennten wir den Termin verschieben?",
              "Wir verschieben den Termin jetzt.",
              "Verschieben den Termin wir."
            ],
            "answerIndex": 1,
            "whyEn": "Best polite form: Koennten wir ...?"
          },
          {
            "id": "q4",
            "promptEn": "Pick the correct form.",
            "stemDe": "Ich ___ gern einen frueheren Termin.",
            "options": [
              "haette",
              "hatte",
              "habe",
              "haben"
            ],
            "answerIndex": 0,
            "whyEn": "Polite wish: Ich haette gern ..."
          },
          {
            "id": "q5",
            "promptEn": "Choose the polite written opener.",
            "stemDe": "Email opening:",
            "options": [
              "Ich will Information.",
              "Ich moechte Informationen erhalten.",
              "Geben Sie mir Information.",
              "Ich brauche sofort Information."
            ],
            "answerIndex": 1,
            "whyEn": "moechte + noun phrase is polite and neutral."
          },
          {
            "id": "q6",
            "promptEn": "Choose the correct phrase.",
            "stemDe": "___ es moeglich, den Termin auf Freitag zu legen?",
            "options": [
              "Ist",
              "Waere",
              "War",
              "Sei"
            ],
            "answerIndex": 1,
            "whyEn": "Polite hypothetical frame: Waere es moeglich ...?"
          }
        ]
      },
      {
        "id": "g-b2-passive-formal",
        "title": "B2 Formal Passive: wird / wurde / worden",
        "level": "B2",
        "tagline": "Critical for reports, formal emails, and exam register.",
        "explainEn": "B2 writing often uses passive constructions to emphasize process rather than person. This module focuses on practical passive forms in formal contexts.",
        "cheatDe": [
          "Praesens: Der Antrag wird geprueft.",
          "Praeteritum: Der Antrag wurde geprueft.",
          "Perfekt: Der Antrag ist geprueft worden.",
          "Passive + von/ durch when needed"
        ],
        "quiz": [
          {
            "id": "q1",
            "promptEn": "Choose the correct passive form (present).",
            "stemDe": "Der Bericht ___ morgen versendet.",
            "options": [
              "wird",
              "ist",
              "hat",
              "war"
            ],
            "answerIndex": 0,
            "whyEn": "Present passive: wird + Partizip II."
          },
          {
            "id": "q2",
            "promptEn": "Choose the correct passive form (past).",
            "stemDe": "Die Daten ___ gestern aktualisiert.",
            "options": [
              "werden",
              "wurden",
              "sind",
              "waren"
            ],
            "answerIndex": 1,
            "whyEn": "Past passive: wurden + Partizip II."
          },
          {
            "id": "q3",
            "promptEn": "Choose the correct Perfekt passive.",
            "stemDe": "Der Vertrag ___ unterschrieben ___ .",
            "options": [
              "hat ... worden",
              "ist ... worden",
              "wurde ... sein",
              "war ... geworden"
            ],
            "answerIndex": 1,
            "whyEn": "Perfekt passive: ist ... worden."
          },
          {
            "id": "q4",
            "promptEn": "Pick the best formal sentence.",
            "stemDe": "Announcement style:",
            "options": [
              "Wir haben die Unterlagen geprueft.",
              "Die Unterlagen sind geprueft worden.",
              "Die Unterlagen wurden gepruefen.",
              "Die Unterlagen ist geprueft werden."
            ],
            "answerIndex": 1,
            "whyEn": "Formal passive phrasing is correct in option 2."
          },
          {
            "id": "q5",
            "promptEn": "Choose the correct helper.",
            "stemDe": "Die Ergebnisse ___ derzeit intern bewertet.",
            "options": [
              "werden",
              "wird",
              "ist",
              "hat"
            ],
            "answerIndex": 0,
            "whyEn": "Plural subject -> werden bewertet."
          },
          {
            "id": "q6",
            "promptEn": "Choose the best option.",
            "stemDe": "The issue was solved quickly:",
            "options": [
              "Das Problem wurde schnell geloest.",
              "Das Problem ist schnell geloest worden wird.",
              "Das Problem hat schnell geloest.",
              "Das Problem war schnell geloest wurde."
            ],
            "answerIndex": 0,
            "whyEn": "Simple and correct passive in past: wurde geloest."
          }
        ]
      }
    ],
    "writingTasks": [
      {
        "id": "w-a2-01-late-message",
        "level": "A2",
        "domain": "daily",
        "kind": "message",
        "title": "Quick message: you are late",
        "promptEn": "Write a short message to a friend: you will be 20 minutes late.",
        "requirements": [
          "2–4 short sentences",
          "Give a reason (train, traffic, work)",
          "Propose a new time",
          "Keep it friendly and simple"
        ],
        "helpfulPhrasesDe": [
          "Sorry, ich komme spaeter.",
          "Ich bin in 20 Minuten da.",
          "Der Zug hat Verspaetung.",
          "Es gibt viel Verkehr.",
          "Koennen wir uns um 18:20 treffen?",
          "Bis gleich!"
        ],
        "connectorBankDe": [
          "weil",
          "deshalb",
          "dann",
          "aber",
          "und"
        ],
        "minWords": 25,
        "timeMin": 6,
        "mustIncludeDe": [
          "spaeter"
        ],
        "modelDe": "Hey! Sorry, ich komme spaeter. Der Zug hat Verspaetung, deshalb bin ich erst in etwa 20 Minuten da. Koennen wir uns um 18:20 vor dem Cafe treffen? Bis gleich!"
      },
      {
        "id": "w-a2-02-appointment-email",
        "level": "A2",
        "domain": "health",
        "kind": "email",
        "title": "Simple email: doctor appointment",
        "promptEn": "Write a short email to a doctor’s office to ask for an appointment.",
        "requirements": [
          "Use a polite greeting",
          "Say what you need (appointment) and when you are available",
          "Ask for confirmation",
          "Add a polite closing"
        ],
        "helpfulPhrasesDe": [
          "Guten Tag,",
          "Ich brauche einen Termin.",
          "Ich habe seit zwei Tagen Schmerzen.",
          "Ich kann am Montag oder Dienstag.",
          "Haben Sie einen freien Termin?",
          "Vielen Dank im Voraus.",
          "Mit freundlichen Gruessen"
        ],
        "connectorBankDe": [
          "und",
          "oder",
          "weil",
          "deshalb"
        ],
        "minWords": 60,
        "timeMin": 12,
        "mustIncludeDe": [
          "Termin"
        ],
        "modelDe": "Guten Tag,\n\nich brauche einen Termin, weil ich seit zwei Tagen Schmerzen habe. Ich kann am Montag oder Dienstag am Vormittag. Haben Sie einen freien Termin und koennen Sie mir bitte kurz bestaetigen, wann ich kommen kann?\n\nVielen Dank im Voraus.\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-a2-03-flat-description",
        "level": "A2",
        "domain": "daily",
        "kind": "report",
        "title": "Describe your apartment (A2)",
        "promptEn": "Write a short description of your apartment for a friend who may visit.",
        "requirements": [
          "6–8 sentences",
          "Mention rooms, location, and one thing you like",
          "Use at least 2 prepositions (mit, in, auf, bei, zu)",
          "End with an invitation"
        ],
        "helpfulPhrasesDe": [
          "Ich wohne in ...",
          "Meine Wohnung hat ... Zimmer.",
          "In der Kueche gibt es ...",
          "Ich wohne nahe bei ...",
          "Am Wochenende koche ich oft.",
          "Du kannst gerne vorbeikommen."
        ],
        "connectorBankDe": [
          "und",
          "aber",
          "weil",
          "dann",
          "auch"
        ],
        "minWords": 80,
        "timeMin": 14,
        "modelDe": "Ich wohne in einer kleinen Wohnung in der Naehe vom Zentrum. Meine Wohnung hat zwei Zimmer und eine Kueche. In der Kueche gibt es einen grossen Tisch, und ich koche dort oft am Wochenende. Das Wohnzimmer ist hell, aber nicht sehr gross. Ich wohne nahe bei einer U-Bahn-Station, deshalb komme ich schnell zur Arbeit. Auf dem Balkon trinke ich gern Kaffee. Wenn du in der Stadt bist, kannst du gerne vorbeikommen!"
      },
      {
        "id": "w-a2-04-perfekt-mini-story",
        "level": "A2",
        "domain": "travel",
        "kind": "report",
        "title": "Mini story in Perfekt",
        "promptEn": "Write about a small trip you took (or invent one) using Perfekt.",
        "requirements": [
          "8–10 sentences",
          "Use Perfekt at least 6 times",
          "Include time words (gestern, letzte Woche, dann, zuerst)"
        ],
        "helpfulPhrasesDe": [
          "Letzte Woche habe ich ... besucht.",
          "Ich bin mit dem Zug gefahren.",
          "Zuerst habe ich ... gemacht.",
          "Dann habe ich ... gesehen.",
          "Am Abend habe ich ... gegessen.",
          "Es hat mir gut gefallen."
        ],
        "connectorBankDe": [
          "zuerst",
          "dann",
          "danach",
          "und",
          "aber"
        ],
        "minWords": 110,
        "timeMin": 16,
        "modelDe": "Letzte Woche habe ich einen kurzen Ausflug nach Hamburg gemacht. Ich bin am Samstagmorgen mit dem Zug gefahren. Zuerst habe ich am Hafen einen Spaziergang gemacht und viele Schiffe gesehen. Dann habe ich ein kleines Museum besucht. Am Mittag habe ich Fisch gegessen und Kaffee getrunken. Danach bin ich durch die Altstadt gelaufen und habe Fotos gemacht. Am Abend habe ich meine Freunde getroffen, und wir haben lange geredet. Es hat ein bisschen geregnet, aber die Stadt hat mir trotzdem gut gefallen. Am Sonntag bin ich wieder nach Hause gefahren."
      },
      {
        "id": "w-a2-05-reschedule",
        "level": "A2",
        "domain": "daily",
        "kind": "email",
        "title": "Reschedule an appointment (simple)",
        "promptEn": "Write a short email to reschedule an appointment to another day.",
        "requirements": [
          "Polite greeting",
          "Say you cannot come on the original date",
          "Suggest 2 new options",
          "Ask for confirmation"
        ],
        "helpfulPhrasesDe": [
          "Guten Tag,",
          "Leider kann ich am ... nicht kommen.",
          "Koennen wir den Termin verschieben?",
          "Ich kann am Dienstag oder Donnerstag.",
          "Bitte bestaetigen Sie mir den neuen Termin.",
          "Mit freundlichen Gruessen"
        ],
        "connectorBankDe": [
          "leider",
          "deshalb",
          "oder",
          "bitte"
        ],
        "minWords": 75,
        "timeMin": 12,
        "modelDe": "Guten Tag,\n\nleider kann ich am 14.03. nicht zu meinem Termin kommen, weil ich arbeiten muss. Koennen wir den Termin bitte verschieben? Ich kann am Dienstag, den 16.03., oder am Donnerstag, den 18.03., jeweils am Vormittag.\n\nBitte bestaetigen Sie mir kurz, welcher Termin moeglich ist.\n\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-a2-06-hotel-request",
        "level": "A2",
        "domain": "travel",
        "kind": "email",
        "title": "Hotel email: simple request",
        "promptEn": "Write a short email to a hotel: ask about availability and price.",
        "requirements": [
          "Dates + number of people",
          "Ask for price and breakfast",
          "Ask how to book"
        ],
        "helpfulPhrasesDe": [
          "Ich moechte ein Zimmer reservieren.",
          "Haben Sie noch freie Zimmer?",
          "Was kostet das pro Nacht?",
          "Ist Fruehstueck inklusive?",
          "Wie kann ich buchen?",
          "Vielen Dank."
        ],
        "connectorBankDe": [
          "und",
          "oder",
          "bitte"
        ],
        "minWords": 80,
        "timeMin": 12,
        "modelDe": "Guten Tag,\n\nich moechte ein Doppelzimmer fuer zwei Personen vom 10.04. bis 12.04. reservieren. Haben Sie in dieser Zeit noch freie Zimmer? Was kostet das pro Nacht und ist Fruehstueck inklusive?\n\nWie kann ich buchen und welche Informationen brauchen Sie von mir?\n\nVielen Dank.\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-a2-07-neighbor-note",
        "level": "A2",
        "domain": "daily",
        "kind": "message",
        "title": "Note to a neighbor",
        "promptEn": "Write a short note to a neighbor: there is noise, ask politely.",
        "requirements": [
          "Be polite",
          "Say what the problem is",
          "Ask for a small change (lower volume / later time)"
        ],
        "helpfulPhrasesDe": [
          "Entschuldigung,",
          "Es ist gerade sehr laut.",
          "Koennten Sie bitte leiser sein?",
          "Ich muss morgen frueh aufstehen.",
          "Vielen Dank!"
        ],
        "connectorBankDe": [
          "bitte",
          "weil",
          "deshalb"
        ],
        "minWords": 45,
        "timeMin": 8,
        "modelDe": "Entschuldigung, es ist gerade sehr laut in Ihrer Wohnung. Koennten Sie bitte die Musik etwas leiser machen? Ich muss morgen frueh aufstehen. Vielen Dank!"
      },
      {
        "id": "w-b1-01-vacation-email",
        "level": "B1",
        "domain": "work",
        "kind": "email",
        "title": "Formal email: request vacation",
        "promptEn": "Write a formal email to your manager requesting vacation days.",
        "requirements": [
          "Mention dates and reason",
          "Offer a solution for your tasks",
          "Ask for approval",
          "Polite closing"
        ],
        "helpfulPhrasesDe": [
          "Sehr geehrte/r ... ,",
          "hiermit moechte ich Urlaub beantragen.",
          "vom 12.05. bis zum 19.05.",
          "Ich kann meine Aufgaben vorher abschliessen.",
          "Falls etwas dringend ist, bin ich per E-Mail erreichbar.",
          "Ich freue mich ueber Ihre Rueckmeldung.",
          "Mit freundlichen Gruessen"
        ],
        "connectorBankDe": [
          "ausserdem",
          "deshalb",
          "falls",
          "weil",
          "trotzdem"
        ],
        "minWords": 140,
        "timeMin": 20,
        "mustIncludeDe": [
          "Urlaub"
        ],
        "modelDe": "Sehr geehrte Frau Mueller,\n\nhiermit moechte ich Urlaub vom 12.05. bis zum 19.05. beantragen, weil ich eine Familienfeier im Ausland habe. Ich kann meine aktuellen Aufgaben bis dahin abschliessen und die Uebergabe fuer das Projekt vorbereiten. Falls in der Zeit etwas dringend ist, bin ich per E-Mail erreichbar und antworte so schnell wie moeglich.\n\nKoennen Sie mir bitte kurz bestaetigen, ob der Urlaub genehmigt ist?\n\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-b1-02-complaint-internet",
        "level": "B1",
        "domain": "daily",
        "kind": "complaint",
        "title": "Complaint email: internet problems",
        "promptEn": "Write a complaint to your internet provider about repeated outages.",
        "requirements": [
          "Describe the problem with dates/frequency",
          "Say what you already tried",
          "Request a fix and/or a refund",
          "Keep it firm but polite"
        ],
        "helpfulPhrasesDe": [
          "Ich wende mich an Sie, weil ...",
          "In den letzten zwei Wochen ist das Internet mehrmals ausgefallen.",
          "Ich habe den Router neu gestartet.",
          "Bitte pruefen Sie die Leitung.",
          "Ich bitte um eine schnelle Loesung.",
          "Ausserdem bitte ich um eine Gutschrift."
        ],
        "connectorBankDe": [
          "weil",
          "deshalb",
          "ausserdem",
          "obwohl",
          "trotzdem"
        ],
        "minWords": 160,
        "timeMin": 22,
        "modelDe": "Guten Tag,\n\nich wende mich an Sie, weil mein Internet in den letzten zwei Wochen mehrfach ausgefallen ist. Am 03.02., 06.02. und 10.02. hatte ich jeweils mehrere Stunden keine Verbindung. Ich arbeite im Homeoffice, deshalb ist das fuer mich ein grosses Problem.\n\nIch habe den Router bereits neu gestartet und die Kabel ueberprueft, aber das Problem kommt trotzdem wieder. Bitte pruefen Sie die Leitung und geben Sie mir eine Rueckmeldung, wann die Stoerung endgueltig behoben wird. Ausserdem bitte ich um eine Gutschrift fuer die Tage ohne Leistung.\n\nVielen Dank.\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-b1-03-forum-opinion",
        "level": "B1",
        "domain": "society",
        "kind": "opinion",
        "title": "Forum post: working from home",
        "promptEn": "Write a forum post: Is working from home good or bad?",
        "requirements": [
          "Give your opinion",
          "Give 2 reasons and 1 counterargument",
          "End with a question to others"
        ],
        "helpfulPhrasesDe": [
          "Meiner Meinung nach ...",
          "Ein Vorteil ist, dass ...",
          "Ausserdem ...",
          "Allerdings ...",
          "Auf der anderen Seite ...",
          "Was denkt ihr?"
        ],
        "connectorBankDe": [
          "weil",
          "dass",
          "ausserdem",
          "allerdings",
          "auf der anderen Seite",
          "deshalb"
        ],
        "minWords": 170,
        "timeMin": 20,
        "modelDe": "Meiner Meinung nach ist Homeoffice meistens positiv. Ein grosser Vorteil ist, dass man Zeit spart, weil man nicht pendeln muss. Ausserdem kann ich mich zu Hause oft besser konzentrieren und meine Arbeit ruhiger erledigen. Allerdings fehlt manchmal der direkte Kontakt zu Kolleginnen und Kollegen, und Missverstaendnisse passieren schneller.\n\nAuf der anderen Seite ist Homeoffice nicht fuer alle Berufe moeglich, und manche Menschen fuehlen sich allein. Fuer mich ueberwiegen trotzdem die Vorteile, deshalb moechte ich es weiterhin mindestens zwei Tage pro Woche machen.\n\nWas denkt ihr: wuerdet ihr lieber im Buero arbeiten oder zu Hause?"
      },
      {
        "id": "w-b1-04-invitation-email",
        "level": "B1",
        "domain": "culture",
        "kind": "email",
        "title": "Email: invite a friend (with details)",
        "promptEn": "Invite a friend to an event. Include details and ask for confirmation.",
        "requirements": [
          "Explain what/where/when",
          "Give 2 options (time or place)",
          "Ask them to reply"
        ],
        "helpfulPhrasesDe": [
          "Hast du Lust auf ...?",
          "Wir koennen uns am ... treffen.",
          "Entweder ... oder ...",
          "Sag mir bitte Bescheid, ob es klappt."
        ],
        "connectorBankDe": [
          "entweder ... oder",
          "weil",
          "und",
          "aber",
          "dann"
        ],
        "minWords": 130,
        "timeMin": 16,
        "modelDe": "Hi Sofia,\n\nhast du Lust, am Wochenende ins Konzert zu gehen? Es ist am Samstag um 19:00 in der Innenstadt. Wir koennen uns entweder um 18:15 an der U-Bahn treffen oder direkt vor dem Eingang um 18:45. Danach koennen wir noch etwas trinken gehen, wenn du willst.\n\nSag mir bitte Bescheid, ob es klappt, dann kaufe ich die Tickets.\n\nLiebe Gruesse\nAlex"
      },
      {
        "id": "w-b1-05-meeting-schedule",
        "level": "B1",
        "domain": "work",
        "kind": "email",
        "title": "Email: schedule a meeting",
        "promptEn": "Write an email to schedule a short meeting with a colleague.",
        "requirements": [
          "Say the topic",
          "Offer 2 time options",
          "Ask for confirmation"
        ],
        "helpfulPhrasesDe": [
          "Ich wuerde gern ein kurzes Meeting vereinbaren.",
          "Es geht um ...",
          "Haetten Sie am Mittwoch um 14 Uhr Zeit?",
          "Alternativ kann ich am Donnerstag um 10 Uhr.",
          "Bitte geben Sie mir kurz Bescheid."
        ],
        "connectorBankDe": [
          "es geht um",
          "alternativ",
          "falls",
          "bitte"
        ],
        "minWords": 130,
        "timeMin": 16,
        "modelDe": "Hallo Daniel,\n\nich wuerde gern ein kurzes Meeting vereinbaren, um die naechsten Schritte im Projekt zu klaeren. Haettest du am Mittwoch um 14:00 Zeit? Alternativ kann ich am Donnerstag um 10:00.\n\nFalls keiner der Termine passt, schlag bitte einen anderen Zeitpunkt vor.\n\nViele Gruesse\nAlex"
      },
      {
        "id": "w-b1-06-problem-apartment",
        "level": "B1",
        "domain": "daily",
        "kind": "complaint",
        "title": "Complaint: problem in the apartment",
        "promptEn": "Write a complaint to your landlord: something is broken in your apartment.",
        "requirements": [
          "Describe the issue clearly",
          "Say since when",
          "Request repair + propose availability"
        ],
        "helpfulPhrasesDe": [
          "Seit einer Woche funktioniert ... nicht.",
          "Ich bitte Sie, das Problem zu beheben.",
          "Koennen Sie einen Handwerker schicken?",
          "Ich bin am ... zu Hause.",
          "Vielen Dank im Voraus."
        ],
        "connectorBankDe": [
          "seit",
          "deshalb",
          "bitte",
          "koennen Sie"
        ],
        "minWords": 160,
        "timeMin": 20,
        "modelDe": "Guten Tag,\n\nseit einer Woche funktioniert die Heizung in meiner Wohnung nicht richtig. Die Heizkoerper bleiben kalt, obwohl ich sie aufdrehe. Deshalb ist es in den Zimmern sehr kuehl.\n\nIch bitte Sie, das Problem moeglichst bald zu beheben. Koennen Sie bitte einen Handwerker schicken? Ich bin am Dienstag und Donnerstag ab 17 Uhr zu Hause.\n\nVielen Dank im Voraus.\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-b1-07-course-request",
        "level": "B1",
        "domain": "education",
        "kind": "email",
        "title": "Email: ask about a course",
        "promptEn": "Write an email to a language school asking about a course.",
        "requirements": [
          "Ask about level, schedule, price",
          "Mention your current level (A2/B1)",
          "Ask how to register"
        ],
        "helpfulPhrasesDe": [
          "Ich interessiere mich fuer ...",
          "Ich bin derzeit auf dem Niveau A2.",
          "Wann findet der Kurs statt?",
          "Wie viel kostet der Kurs?",
          "Wie kann ich mich anmelden?"
        ],
        "connectorBankDe": [
          "derzeit",
          "ausserdem",
          "bitte"
        ],
        "minWords": 150,
        "timeMin": 18,
        "modelDe": "Guten Tag,\n\nich interessiere mich fuer Ihren Deutschkurs. Ich bin derzeit auf dem Niveau A2 und moechte mich verbessern. Koennen Sie mir bitte sagen, welcher Kurs fuer mich passt und wann er stattfindet?\n\nAusserdem wuerde mich interessieren, wie viel der Kurs kostet und wie ich mich anmelden kann.\n\nVielen Dank.\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-b2-01-formal-complaint-hotel",
        "level": "B2",
        "domain": "travel",
        "kind": "complaint",
        "title": "Formal complaint: hotel stay",
        "promptEn": "Write a formal complaint to a hotel about problems during your stay.",
        "requirements": [
          "Describe 2 concrete problems",
          "Explain impact (sleep, work, health)",
          "Request compensation",
          "Professional tone (no slang)"
        ],
        "helpfulPhrasesDe": [
          "Hiermit moechte ich eine Beschwerde einreichen.",
          "Leider entsprach der Aufenthalt nicht meinen Erwartungen.",
          "Trotz mehrfacher Nachfrage wurde das Problem nicht behoben.",
          "Ich bitte um eine angemessene Entschaedigung.",
          "Bitte teilen Sie mir mit, wie Sie weiter vorgehen."
        ],
        "connectorBankDe": [
          "trotz",
          "dennoch",
          "darueber hinaus",
          "infolgedessen",
          "sowohl ... als auch"
        ],
        "minWords": 220,
        "timeMin": 25,
        "modelDe": "Sehr geehrte Damen und Herren,\n\nhiermit moechte ich eine Beschwerde zu meinem Aufenthalt vom 05.02. bis 08.02. einreichen. Leider entsprach das Zimmer nicht den zugesicherten Standards. Zum einen funktionierte die Heizung an zwei Naechten nicht, sodass die Temperatur deutlich zu niedrig war. Zum anderen war das Zimmer bereits bei der Anreise nicht ausreichend sauber (Bad und Bettwaesche).\n\nTrotz mehrfacher Nachfrage an der Rezeption wurde das Problem mit der Heizung nicht dauerhaft behoben. Infolgedessen habe ich schlecht geschlafen und konnte meine Termine am naechsten Tag nur eingeschraenkt wahrnehmen. Darueber hinaus ist Sauberkeit fuer mich ein zentrales Kriterium bei der Buchung.\n\nIch bitte daher um eine angemessene Entschaedigung, beispielsweise in Form einer Rueckerstattung von 30% des Gesamtpreises. Bitte teilen Sie mir innerhalb von 10 Tagen mit, wie Sie weiter vorgehen.\n\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-b2-02-argument-uni-fees",
        "level": "B2",
        "domain": "education",
        "kind": "opinion",
        "title": "Argumentation: university should be free?",
        "promptEn": "Write a structured argumentation: Should universities be free for everyone?",
        "requirements": [
          "Clear structure: introduction, arguments, counterargument, conclusion",
          "Use at least 4 B2 connectors",
          "Neutral, exam-friendly style"
        ],
        "helpfulPhrasesDe": [
          "In der heutigen Zeit wird haeufig diskutiert, ob ...",
          "Ein wesentliches Argument dafuer ist, dass ...",
          "Gegner dieser Auffassung betonen, dass ...",
          "Nichtsdestotrotz ...",
          "Abschliessend laesst sich festhalten, dass ..."
        ],
        "connectorBankDe": [
          "darueber hinaus",
          "hingegen",
          "nichtsdestotrotz",
          "insofern",
          "folglich",
          "zum einen ... zum anderen"
        ],
        "minWords": 260,
        "timeMin": 30,
        "modelDe": "In der heutigen Zeit wird haeufig diskutiert, ob Hochschulbildung kostenlos sein sollte. Aus meiner Sicht sprechen gewichtige Gruende dafuer, wenngleich Einwaende ernst zu nehmen sind.\n\nEin wesentliches Argument dafuer ist, dass Bildung Chancengleichheit foerdert. Wenn Studiengebuehren hoch sind, entscheiden sich manche Menschen gegen ein Studium, obwohl sie geeignet waeren. Darueber hinaus profitiert die Gesellschaft insgesamt von gut ausgebildeten Fachkraeften, etwa im Gesundheitswesen oder in der Technik.\n\nGegner dieser Auffassung betonen hingegen, dass Universitaeten finanziert werden muessen und dass Studierende durch Gebuehren verantwortungsbewusster handeln koennten. Dieser Punkt ist nachvollziehbar. Nichtsdestotrotz erscheint es problematisch, wenn der Zugang zur Bildung vom Einkommen der Eltern abhaengt. Insofern waere ein Modell sinnvoll, das kostenlose Grundbildung garantiert und zusaetzliche Finanzierung ueber Steuern oder einkommensabhaengige Beitraege regelt.\n\nAbschliessend laesst sich festhalten, dass kostenlose Universitaeten die soziale Mobilitaet staerken koennen. Folglich sollte der Zugang moeglichst niedrigschwellig gestaltet werden, ohne die Qualitaet der Lehre zu gefaehrden."
      },
      {
        "id": "w-b2-03-proposal-city",
        "level": "B2",
        "domain": "environment",
        "kind": "report",
        "title": "Proposal: improve public transport",
        "promptEn": "Write a proposal to your city: how to improve public transport.",
        "requirements": [
          "3 concrete measures",
          "Explain benefits for residents",
          "Mention costs/feasibility briefly",
          "Professional tone"
        ],
        "helpfulPhrasesDe": [
          "Ich moechte Ihnen folgenden Vorschlag unterbreiten:",
          "Erstens ...",
          "Zweitens ...",
          "Drittens ...",
          "Langfristig wuerde dies ...",
          "Meiner Einschaetzung nach ist dies realistisch, weil ..."
        ],
        "connectorBankDe": [
          "erstens",
          "zweitens",
          "drittens",
          "darueber hinaus",
          "somit",
          "wodurch"
        ],
        "minWords": 240,
        "timeMin": 28,
        "modelDe": "Sehr geehrte Damen und Herren,\n\nich moechte Ihnen folgenden Vorschlag zur Verbesserung des oeffentlichen Nahverkehrs unterbreiten. Erstens sollten in den Hauptverkehrszeiten mehr Busse und Bahnen eingesetzt werden, wodurch Ueberfuellung reduziert und die Puenktlichkeit verbessert wird. Zweitens waere ein einheitliches, digitales Ticket sinnvoll, das auch fuer Besucher leicht verstaendlich ist. Drittens koennten Nachtlinien am Wochenende ausgebaut werden, damit Menschen sicher und ohne Auto nach Hause kommen.\n\nDarueber hinaus wuerde ein besserer Takt den Autoverkehr verringern und somit Laerm sowie Emissionen senken. Gleichzeitig steigt die Lebensqualitaet, weil Pendler weniger Zeit verlieren.\n\nMir ist bewusst, dass dies Kosten verursacht. Meiner Einschaetzung nach ist es dennoch realistisch, wenn man Massnahmen stufenweise einfuehrt und stark nachgefragte Linien priorisiert.\n\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-b2-04-formal-email-follow-up",
        "level": "B2",
        "domain": "work",
        "kind": "email",
        "title": "Formal follow-up email (polite but firm)",
        "promptEn": "Write a follow-up email: you are waiting for an answer about an application or request.",
        "requirements": [
          "Refer to your previous message",
          "Ask for an update and a timeframe",
          "Stay professional, not passive-aggressive"
        ],
        "helpfulPhrasesDe": [
          "Ich beziehe mich auf meine E-Mail vom ...",
          "Bisher habe ich keine Rueckmeldung erhalten.",
          "Koennen Sie mir bitte mitteilen, wie der aktuelle Stand ist?",
          "Ich waere dankbar fuer eine kurze Rueckmeldung bis ..."
        ],
        "connectorBankDe": [
          "da",
          "inzwischen",
          "daher",
          "sobald",
          "falls"
        ],
        "minWords": 180,
        "timeMin": 18,
        "modelDe": "Sehr geehrte Damen und Herren,\n\nich beziehe mich auf meine E-Mail vom 02.02. bezueglich meiner Bewerbung. Inzwischen habe ich leider noch keine Rueckmeldung erhalten, daher moechte ich freundlich nach dem aktuellen Stand fragen.\n\nKoennen Sie mir bitte mitteilen, wie der weitere Zeitplan aussieht und bis wann ich mit einer Entscheidung rechnen kann? Falls Sie noch Unterlagen von mir benoetigen, sende ich diese jederzeit gern zu.\n\nVielen Dank im Voraus.\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-b2-05-letter-editor",
        "level": "B2",
        "domain": "society",
        "kind": "opinion",
        "title": "Letter to the editor (structured opinion)",
        "promptEn": "Write a letter to the editor reacting to an article about social media and young people.",
        "requirements": [
          "Reference the article briefly",
          "Give your position with 2 arguments",
          "Include 1 counterargument and respond to it",
          "Professional tone"
        ],
        "helpfulPhrasesDe": [
          "Mit Interesse habe ich Ihren Artikel gelesen.",
          "Meines Erachtens ...",
          "Ein zentraler Punkt ist, dass ...",
          "Gleichzeitig sollte man beruecksichtigen, dass ...",
          "Dennoch bin ich der Meinung, dass ..."
        ],
        "connectorBankDe": [
          "meines Erachtens",
          "gleichzeitig",
          "dennoch",
          "darueber hinaus",
          "hingegen"
        ],
        "minWords": 260,
        "timeMin": 30,
        "modelDe": "Sehr geehrte Redaktion,\n\nmit Interesse habe ich Ihren Artikel ueber soziale Medien und junge Menschen gelesen. Meines Erachtens ist die Diskussion wichtig, allerdings sollte sie differenziert gefuehrt werden.\n\nEin zentraler Punkt ist, dass soziale Medien nicht nur Zeit rauben, sondern auch neue Formen der Information und Teilhabe ermoeglichen. Viele Jugendliche informieren sich dort ueber Nachrichten und gesellschaftliche Themen. Darueber hinaus koennen Plattformen Gemeinschaft schaffen, beispielsweise fuer Menschen mit seltenen Interessen oder in kleinen Staedten.\n\nGleichzeitig sollte man beruecksichtigen, dass exzessive Nutzung Risiken birgt, etwa fuer Konzentration und Schlaf. Gegner betonen daher, dass strengere Regeln notwendig seien. Dieser Einwand ist nachvollziehbar. Dennoch bin ich der Meinung, dass Medienkompetenz und klare Grenzen im Alltag wirksamer sind als pauschale Verbote.\n\nAbschliessend wuensche ich mir eine Debatte, die Chancen und Risiken gleichermaassen ernst nimmt.\n\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-a2-08-pharmacy-question",
        "level": "A2",
        "domain": "health",
        "kind": "message",
        "title": "Pharmacy note: ask for advice",
        "promptEn": "Write a short message asking a pharmacy for simple advice.",
        "requirements": [
          "Say your symptom in simple words",
          "Ask for one recommendation",
          "Ask about dosage/time"
        ],
        "helpfulPhrasesDe": [
          "Guten Tag, ich habe seit gestern Halsschmerzen.",
          "Koennen Sie mir etwas empfehlen?",
          "Wie oft soll ich das nehmen?",
          "Vielen Dank fuer Ihre Hilfe."
        ],
        "connectorBankDe": [
          "weil",
          "und",
          "deshalb"
        ],
        "minWords": 55,
        "timeMin": 10,
        "modelDe": "Guten Tag, ich habe seit gestern Halsschmerzen und einen leichten Husten. Koennen Sie mir bitte ein Medikament empfehlen? Ich muss morgen arbeiten, deshalb moechte ich heute etwas kaufen. Wie oft soll ich das nehmen?\n\nVielen Dank fuer Ihre Hilfe.\nAlex"
      },
      {
        "id": "w-a2-09-course-absence",
        "level": "A2",
        "domain": "education",
        "kind": "email",
        "title": "Email: cannot attend class",
        "promptEn": "Write to your teacher: you cannot attend class and ask what to prepare.",
        "requirements": [
          "Polite greeting",
          "State reason for absence",
          "Ask what homework to do"
        ],
        "helpfulPhrasesDe": [
          "Leider kann ich heute nicht zum Kurs kommen.",
          "Ich bin krank.",
          "Was soll ich bitte zu Hause vorbereiten?",
          "Vielen Dank."
        ],
        "connectorBankDe": [
          "leider",
          "weil",
          "bitte",
          "und"
        ],
        "minWords": 70,
        "timeMin": 11,
        "modelDe": "Guten Tag Frau Becker,\n\nleider kann ich heute nicht zum Deutschkurs kommen, weil ich krank bin. Koennen Sie mir bitte sagen, was wir heute im Kurs machen und was ich zu Hause vorbereiten soll?\n\nVielen Dank und bis naechste Woche.\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-a2-10-lost-found",
        "level": "A2",
        "domain": "travel",
        "kind": "message",
        "title": "Lost item message",
        "promptEn": "Write a short lost-and-found message for a station office.",
        "requirements": [
          "Describe the item",
          "Say where/when you lost it",
          "Leave contact line"
        ],
        "helpfulPhrasesDe": [
          "Ich habe meine Tasche verloren.",
          "Sie ist schwarz und klein.",
          "Ich habe sie am Bahnhof vergessen.",
          "Bitte melden Sie sich bei mir."
        ],
        "connectorBankDe": [
          "und",
          "am",
          "bitte"
        ],
        "minWords": 60,
        "timeMin": 10,
        "modelDe": "Guten Tag,\n\nich habe heute gegen 17 Uhr meine schwarze Tasche am Hauptbahnhof verloren. In der Tasche sind ein Buch und ein roter Schluessel. Vielleicht habe ich sie im Zug oder auf Gleis 4 vergessen.\n\nBitte melden Sie sich bei mir, wenn Sie die Tasche gefunden haben.\nVielen Dank.\nAlex"
      },
      {
        "id": "w-a2-11-weekend-plan",
        "level": "A2",
        "domain": "culture",
        "kind": "message",
        "title": "Weekend plan with two options",
        "promptEn": "Write to a friend and propose two weekend activity options.",
        "requirements": [
          "Give two options",
          "Say your preference",
          "Ask your friend to decide"
        ],
        "helpfulPhrasesDe": [
          "Hast du am Samstag Zeit?",
          "Wir koennen entweder ins Kino gehen oder ins Museum.",
          "Ich finde das Museum interessanter.",
          "Was meinst du?"
        ],
        "connectorBankDe": [
          "entweder ... oder",
          "aber",
          "dann"
        ],
        "minWords": 75,
        "timeMin": 12,
        "modelDe": "Hi Maria,\n\nhast du am Samstag Zeit? Wir koennen entweder ins Kino gehen oder ins neue Museum in der Innenstadt. Ich finde das Museum interessanter, aber das Kino waere auch gut, wenn das Wetter schlecht ist. Danach koennen wir noch einen Kaffee trinken.\n\nWas meinst du?\nLiebe Gruesse\nAlex"
      },
      {
        "id": "w-a2-12-shift-swap",
        "level": "A2",
        "domain": "work",
        "kind": "message",
        "title": "Simple shift swap request",
        "promptEn": "Write a short message to a colleague asking to swap shifts.",
        "requirements": [
          "Say the original shift",
          "Explain why",
          "Offer another shift in return"
        ],
        "helpfulPhrasesDe": [
          "Kannst du bitte meine Schicht am Freitag uebernehmen?",
          "Ich habe einen wichtigen Termin.",
          "Ich kann dafuer deine Schicht am Montag machen.",
          "Danke fuer deine Hilfe."
        ],
        "connectorBankDe": [
          "weil",
          "dafuer",
          "bitte"
        ],
        "minWords": 65,
        "timeMin": 10,
        "modelDe": "Hallo Jonas,\n\nkannst du bitte meine Schicht am Freitag von 14 bis 20 Uhr uebernehmen? Ich habe an diesem Tag einen wichtigen Termin beim Arzt. Dafuer kann ich gern deine Schicht am Montag machen.\n\nDanke fuer deine Hilfe und gib mir bitte kurz Bescheid.\nAlex"
      },
      {
        "id": "w-b1-08-return-request",
        "level": "B1",
        "domain": "daily",
        "kind": "email",
        "title": "Customer email: return request",
        "promptEn": "Write to an online shop asking for return and refund.",
        "requirements": [
          "Mention order number and issue",
          "Request return label",
          "Ask about refund timeline"
        ],
        "helpfulPhrasesDe": [
          "Ich moechte den Artikel zuruecksenden.",
          "Die Bestellung hat die Nummer ...",
          "Bitte senden Sie mir ein Ruecksendeetikett.",
          "Wann erfolgt die Rueckerstattung?"
        ],
        "connectorBankDe": [
          "ausserdem",
          "weil",
          "daher"
        ],
        "minWords": 155,
        "timeMin": 18,
        "modelDe": "Guten Tag,\n\nich moechte den Artikel aus meiner Bestellung Nr. 78431 zuruecksenden, weil die Groesse nicht passt. Das Paket ist in gutem Zustand, und ich habe den Artikel nur kurz anprobiert.\n\nBitte senden Sie mir ein Ruecksendeetikett und teilen Sie mir mit, bis wann die Rueckerstattung erfolgt. Ausserdem waere ich dankbar, wenn Sie bestaetigen, an welche Adresse die Ruecksendung gehen soll.\n\nVielen Dank.\nMit freundlichen Gruessen\nAlex"
      },
      {
        "id": "w-b1-09-volunteer-motivation",
        "level": "B1",
        "domain": "society",
        "kind": "email",
        "title": "Motivation email for volunteering",
        "promptEn": "Write to a local organization and say why you want to volunteer.",
        "requirements": [
          "Introduce yourself briefly",
          "Give 2 motivations",
          "Mention available time"
        ],
        "helpfulPhrasesDe": [
          "Ich moechte mich ehrenamtlich engagieren.",
          "Ich interessiere mich besonders fuer ...",
          "Ich kann zweimal pro Woche helfen.",
          "Ich freue mich auf Ihre Rueckmeldung."
        ],
        "connectorBankDe": [
          "weil",
          "ausserdem",
          "daher"
        ],
        "minWords": 165,
        "timeMin": 20,
        "modelDe": "Guten Tag,\n\nmein Name ist Alex Weber, und ich moechte mich ehrenamtlich engagieren. Ich interessiere mich besonders fuer Ihre Arbeit mit Jugendlichen, weil Bildung und Unterstuetzung fuer mich wichtige Themen sind. Ausserdem moechte ich mein Deutsch im echten Alltag weiter verbessern und gleichzeitig etwas Sinnvolles tun.\n\nIch kann in der Regel zweimal pro Woche am Nachmittag helfen, besonders am Dienstag und Donnerstag. Koennen Sie mir bitte sagen, welche Aufgaben derzeit moeglich sind?\n\nIch freue mich auf Ihre Rueckmeldung.\nMit freundlichen Gruessen\nAlex Weber"
      },
      {
        "id": "w-b1-10-team-conflict",
        "level": "B1",
        "domain": "work",
        "kind": "email",
        "title": "Work email: solve team conflict",
        "promptEn": "Write to your manager about a small team conflict and propose a constructive solution.",
        "requirements": [
          "Describe issue neutrally",
          "Avoid blaming language",
          "Suggest 2 concrete actions"
        ],
        "helpfulPhrasesDe": [
          "Ich moechte ein kurzes Thema ansprechen.",
          "In den letzten Wochen gab es Missverstaendnisse.",
          "Ich schlage vor, dass wir ...",
          "So koennen wir kuenftig effizienter arbeiten."
        ],
        "connectorBankDe": [
          "allerdings",
          "deshalb",
          "damit"
        ],
        "minWords": 175,
        "timeMin": 21,
        "modelDe": "Hallo Frau Schmitt,\n\nich moechte ein kurzes Thema ansprechen. In den letzten Wochen gab es im Team bei der Aufgabenverteilung einige Missverstaendnisse, wodurch Termine teilweise doppelt geplant wurden. Das hat bei mehreren Kolleginnen und Kollegen zu Unsicherheit gefuehrt.\n\nIch schlage vor, dass wir erstens einmal pro Woche ein 15-minuetiges Abstimmungsmeeting machen und zweitens die Verantwortlichkeiten im Projektboard klar markieren. Damit koennen wir kuenftig effizienter arbeiten und Missverstaendnisse reduzieren.\n\nVielen Dank fuer Ihre Unterstuetzung.\nViele Gruesse\nAlex"
      },
      {
        "id": "w-b1-11-event-review",
        "level": "B1",
        "domain": "culture",
        "kind": "opinion",
        "title": "Short review: event experience",
        "promptEn": "Write a review after visiting an event. Mention positives and negatives.",
        "requirements": [
          "Brief intro",
          "2 positives + 1 negative",
          "Final recommendation"
        ],
        "helpfulPhrasesDe": [
          "Am Wochenende habe ich ... besucht.",
          "Besonders gut fand ich ...",
          "Verbesserungsbedarf gab es bei ...",
          "Insgesamt kann ich die Veranstaltung empfehlen."
        ],
        "connectorBankDe": [
          "zunaechst",
          "ausserdem",
          "allerdings",
          "insgesamt"
        ],
        "minWords": 160,
        "timeMin": 19,
        "modelDe": "Am Wochenende habe ich das Stadtfestival besucht und moechte kurz meine Eindruecke teilen. Zunaechst hat mir die Organisation gut gefallen: Der Einlass war schnell, und die Informationen waren klar. Ausserdem war das Programm sehr abwechslungsreich, besonders die Live-Musik am Abend.\n\nAllerdings gab es bei den Essensstaenden lange Wartezeiten, was etwas anstrengend war. Hier koennte man naechstes Jahr besser planen.\n\nInsgesamt war die Veranstaltung trotzdem gelungen, und ich kann sie weiterempfehlen."
      },
      {
        "id": "w-b1-12-rental-application",
        "level": "B1",
        "domain": "daily",
        "kind": "email",
        "title": "Rental inquiry email",
        "promptEn": "Write to a landlord to apply for an apartment viewing.",
        "requirements": [
          "Introduce yourself",
          "Mention job/stability",
          "Ask for viewing appointment"
        ],
        "helpfulPhrasesDe": [
          "Ich interessiere mich fuer Ihre Wohnung.",
          "Ich arbeite seit ... als ...",
          "Ich bin Nichtraucher/in und habe keine Haustiere.",
          "Koennen wir einen Besichtigungstermin vereinbaren?"
        ],
        "connectorBankDe": [
          "ausserdem",
          "daher",
          "gerne"
        ],
        "minWords": 170,
        "timeMin": 20,
        "modelDe": "Guten Tag,\n\nich interessiere mich fuer Ihre Wohnung in der Lindenstrasse und moechte mich gerne kurz vorstellen. Ich arbeite seit drei Jahren als Projektassistent in einem IT-Unternehmen und habe ein stabiles Einkommen. Ausserdem bin ich Nichtraucher und habe keine Haustiere.\n\nDie Lage und der Grundriss passen sehr gut zu meinen Beduerfnissen. Koennen wir daher einen Besichtigungstermin in den naechsten Tagen vereinbaren? Ich bin am Dienstag und Donnerstag ab 17 Uhr verfuegbar.\n\nVielen Dank und freundliche Gruesse\nAlex Weber"
      },
      {
        "id": "w-b1-13-insurance-incident",
        "level": "B1",
        "domain": "daily",
        "kind": "report",
        "title": "Incident report for insurance",
        "promptEn": "Write a factual report to your insurance after a small accident.",
        "requirements": [
          "What happened",
          "When and where",
          "What damage occurred"
        ],
        "helpfulPhrasesDe": [
          "Hiermit melde ich einen Schaden.",
          "Der Vorfall ereignete sich am ... um ...",
          "Dabei wurde ... beschaedigt.",
          "Ich bitte um eine kurze Rueckmeldung zum weiteren Vorgehen."
        ],
        "connectorBankDe": [
          "waehrend",
          "dabei",
          "anschliessend"
        ],
        "minWords": 170,
        "timeMin": 20,
        "modelDe": "Sehr geehrte Damen und Herren,\n\nhiermit melde ich einen Schaden an meinem Fahrrad. Der Vorfall ereignete sich am 12.04. gegen 18:30 Uhr in der Gartenstrasse in Berlin. Waehren ich das Fahrrad vor dem Supermarkt abgestellt hatte, wurde es vermutlich von einem anderen Fahrrad umgestossen.\n\nDabei wurden das Vorderlicht und der Lenker beschaedigt. Anschliessend habe ich Fotos gemacht und den Schaden dokumentiert. Die Reparaturkosten laut Werkstatt betragen voraussichtlich 95 Euro.\n\nIch bitte um eine kurze Rueckmeldung zum weiteren Vorgehen.\nMit freundlichen Gruessen\nAlex Weber"
      },
      {
        "id": "w-b1-14-follow-up-health",
        "level": "B1",
        "domain": "health",
        "kind": "email",
        "title": "Follow-up email after medical visit",
        "promptEn": "Write a follow-up email to confirm next steps after a medical consultation.",
        "requirements": [
          "Thank for appointment",
          "Summarize recommendation",
          "Ask one follow-up question"
        ],
        "helpfulPhrasesDe": [
          "Vielen Dank fuer den Termin gestern.",
          "Sie haben mir empfohlen, ...",
          "Ich moechte kurz nachfragen, ob ...",
          "Ich freue mich auf Ihre Antwort."
        ],
        "connectorBankDe": [
          "ausserdem",
          "falls",
          "daher"
        ],
        "minWords": 155,
        "timeMin": 18,
        "modelDe": "Guten Tag Frau Dr. Klein,\n\nvielen Dank fuer den Termin gestern. Sie haben mir empfohlen, das neue Medikament fuer zwei Wochen regelmaessig zu nehmen und danach die Werte erneut zu kontrollieren. Ausserdem soll ich auf ausreichend Schlaf und weniger Kaffee achten.\n\nIch moechte kurz nachfragen, ob ich in dieser Zeit weiterhin Sport machen kann oder ob ich die Belastung besser reduzieren sollte. Falls sinnvoll, kann ich auch frueher zu einer kurzen Kontrolle kommen.\n\nVielen Dank und freundliche Gruesse\nAlex"
      },
      {
        "id": "w-b2-06-policy-memo-hybrid",
        "level": "B2",
        "domain": "work",
        "kind": "report",
        "title": "Policy memo: hybrid work model",
        "promptEn": "Write a concise policy memo proposing a hybrid work model.",
        "requirements": [
          "State objective",
          "List 3 practical rules",
          "Mention risks and mitigation"
        ],
        "helpfulPhrasesDe": [
          "Ziel dieses Vorschlags ist ...",
          "Vorgeschlagen wird ein Modell mit ...",
          "Ein moegliches Risiko besteht darin, dass ...",
          "Zur Begrenzung dieses Risikos sollte ..."
        ],
        "connectorBankDe": [
          "zunaechst",
          "darueber hinaus",
          "gleichzeitig",
          "folglich"
        ],
        "minWords": 250,
        "timeMin": 28,
        "modelDe": "Ziel dieses Vorschlags ist die Einfuehrung eines hybriden Arbeitsmodells, das Produktivitaet und Teamzusammenhalt gleichermassen unterstuetzt. Vorgeschlagen wird ein Modell mit drei Praesenztagen pro Woche auf Teamebene, waehrend zwei Tage flexibel im Homeoffice geleistet werden koennen.\n\nZunaechst sollten alle Teams feste Praesenztage definieren, damit Abstimmungen planbar bleiben. Darueber hinaus wird ein einheitliches Meeting-Fenster empfohlen, um Erreichbarkeit zu sichern. Gleichzeitig sollten klare Ergebnisziele statt reiner Anwesenheitszeiten vereinbart werden, um Leistung transparent zu bewerten.\n\nEin moegliches Risiko besteht darin, dass die Zusammenarbeit zwischen Teams leidet, wenn Praesenztage nicht abgestimmt sind. Zur Begrenzung dieses Risikos sollte monatlich ein teamuebergreifender Praesenztag eingefuehrt werden. Folglich kann das Unternehmen Flexibilitaet bieten, ohne die Qualitaet der Zusammenarbeit zu gefaehrden."
      },
      {
        "id": "w-b2-07-airline-complaint",
        "level": "B2",
        "domain": "travel",
        "kind": "complaint",
        "title": "Formal airline complaint",
        "promptEn": "Write a formal complaint about a flight cancellation and missing support.",
        "requirements": [
          "Timeline of events",
          "What support was missing",
          "Specific compensation request"
        ],
        "helpfulPhrasesDe": [
          "Hiermit erhebe ich Beschwerde wegen ...",
          "Trotz mehrfacher Nachfrage erhielt ich keine Unterstuetzung.",
          "Ich fordere daher ...",
          "Bitte bestaetigen Sie den Eingang dieses Schreibens."
        ],
        "connectorBankDe": [
          "zudem",
          "infolgedessen",
          "dennoch",
          "daher"
        ],
        "minWords": 250,
        "timeMin": 28,
        "modelDe": "Sehr geehrte Damen und Herren,\n\nhiermit erhebe ich Beschwerde wegen der kurzfristigen Annullierung meines Fluges AB123 am 03.06. von Berlin nach Madrid. Die Information erhielt ich erst 40 Minuten vor dem geplanten Abflug. Zudem waren die Schalter ueber einen laengeren Zeitraum nicht besetzt, sodass eine Umbuchung vor Ort nicht moeglich war.\n\nTrotz mehrfacher Nachfrage erhielt ich keine konkrete Unterstuetzung hinsichtlich Hotel, Verpflegung oder alternativer Verbindung. Infolgedessen musste ich auf eigene Kosten eine Uebernachtung sowie ein Ersatzticket fuer den Folgetag buchen. Dadurch entstanden mir nachweisbare Mehrkosten in Hoehe von 286 Euro.\n\nIch fordere daher die Erstattung der angefallenen Zusatzkosten sowie die gesetzlich vorgesehene Ausgleichszahlung. Bitte bestaetigen Sie den Eingang dieses Schreibens und teilen Sie mir innerhalb von 14 Tagen mit, wie Sie weiter verfahren.\n\nMit freundlichen Gruessen\nAlex Weber"
      },
      {
        "id": "w-b2-08-ai-school-debate",
        "level": "B2",
        "domain": "education",
        "kind": "opinion",
        "title": "Debate text: AI tools in schools",
        "promptEn": "Write a balanced argument: Should AI tools be widely allowed in schools?",
        "requirements": [
          "Clear thesis",
          "2 pro + 2 contra points",
          "Reasoned conclusion"
        ],
        "helpfulPhrasesDe": [
          "Befuerworter argumentieren, dass ...",
          "Kritiker wenden ein, dass ...",
          "Entscheidend ist aus meiner Sicht ...",
          "Insgesamt erscheint daher ..."
        ],
        "connectorBankDe": [
          "einerseits",
          "andererseits",
          "nichtsdestotrotz",
          "folglich"
        ],
        "minWords": 270,
        "timeMin": 32,
        "modelDe": "Die Frage, ob KI-Werkzeuge im schulischen Kontext breit zugelassen werden sollten, wird derzeit intensiv diskutiert. Befuerworter argumentieren, dass solche Systeme individualisiertes Lernen ermoeglichen und Lehrkraefte bei Routineaufgaben entlasten koennen. Einerseits kann dadurch mehr Zeit fuer Erklaerung, Feedback und Foerderung frei werden.\n\nAndererseits bestehen berechtigte Bedenken. Kritiker wenden ein, dass bei unreflektierter Nutzung eigenstaendiges Denken und Schreibkompetenz leiden koennten. Zudem stellt sich die Frage nach Datenschutz und Transparenz der genutzten Systeme.\n\nEntscheidend ist aus meiner Sicht nicht ein pauschales Verbot oder eine uneingeschraenkte Freigabe, sondern ein klarer Rahmen: verbindliche Regeln, Kompetenztraining und didaktisch sinnvolle Einsatzszenarien. Nichtsdestotrotz bleibt die Verantwortung bei Schule und Politik, faire Bedingungen fuer alle Lernenden sicherzustellen. Insgesamt erscheint daher ein kontrollierter, verantwortungsvoller Einsatz am sinnvollsten."
      },
      {
        "id": "w-b2-09-risk-update",
        "level": "B2",
        "domain": "work",
        "kind": "email",
        "title": "Project risk update email",
        "promptEn": "Write a concise management update about project risks and mitigation plan.",
        "requirements": [
          "Summarize risk clearly",
          "State impact and probability",
          "Give mitigation timeline"
        ],
        "helpfulPhrasesDe": [
          "Im aktuellen Projektstand zeichnet sich folgendes Risiko ab:",
          "Die Wahrscheinlichkeit wird derzeit als ... eingeschaetzt.",
          "Zur Risikoreduzierung sind folgende Schritte vorgesehen:",
          "Ein aktualisiertes Status-Update folgt bis ..."
        ],
        "connectorBankDe": [
          "derzeit",
          "infolgedessen",
          "parallel dazu",
          "abschliessend"
        ],
        "minWords": 220,
        "timeMin": 24,
        "modelDe": "Sehr geehrte Frau Neumann,\n\nim aktuellen Projektstand zeichnet sich folgendes Risiko ab: Die externe Schnittstelle fuer den Datenaustausch wird voraussichtlich spaeter bereitgestellt als geplant. Die Wahrscheinlichkeit wird derzeit als mittel bis hoch eingeschaetzt, da auf Seiten des Partners noch technische Rueckfragen offen sind.\n\nInfolgedessen koennte sich der Integrationstest um bis zu zwei Wochen verschieben. Zur Risikoreduzierung sind folgende Schritte vorgesehen: erstens taegliche Abstimmung mit dem Partner, zweitens parallele Vorbereitung von Testfaellen mit Mock-Daten und drittens Priorisierung der kritischen Kernfunktionen.\n\nEin aktualisiertes Status-Update folgt bis kommenden Mittwoch. Parallel dazu informieren wir das Team ueber moegliche Anpassungen im Zeitplan.\n\nMit freundlichen Gruessen\nAlex Weber"
      },
      {
        "id": "w-b2-10-community-proposal",
        "level": "B2",
        "domain": "society",
        "kind": "report",
        "title": "Proposal: community center program",
        "promptEn": "Write a proposal to launch a community center program for new residents.",
        "requirements": [
          "Define objective and target group",
          "3 concrete measures",
          "Expected social impact"
        ],
        "helpfulPhrasesDe": [
          "Der vorliegende Vorschlag richtet sich an ...",
          "Kernziel ist es, ...",
          "Zur Umsetzung werden folgende Massnahmen empfohlen:",
          "Langfristig ist mit ... zu rechnen."
        ],
        "connectorBankDe": [
          "zunaechst",
          "darueber hinaus",
          "gleichzeitig",
          "somit"
        ],
        "minWords": 250,
        "timeMin": 28,
        "modelDe": "Der vorliegende Vorschlag richtet sich an neu zugezogene Bewohnerinnen und Bewohner des Stadtteils. Kernziel ist es, soziale Teilhabe zu foerdern und den Zugang zu lokalen Angeboten zu erleichtern.\n\nZur Umsetzung werden folgende Massnahmen empfohlen: Zunaechst sollten monatliche Orientierungstage im Gemeindezentrum stattfinden, bei denen Vereine, Beratungsstellen und ehrenamtliche Initiativen ihre Angebote vorstellen. Darueber hinaus wird ein Tandemprogramm vorgeschlagen, das neue und bereits etablierte Bewohnerinnen und Bewohner zusammenbringt. Gleichzeitig sollten mehrsprachige Informationsmaterialien entwickelt werden, um sprachliche Huerden zu reduzieren.\n\nLangfristig ist mit einer staerkeren lokalen Vernetzung, geringeren sozialen Barrieren und einer hoeheren Beteiligung am Gemeinwesen zu rechnen. Somit kann der Stadtteil sowohl sozial als auch organisatorisch nachhaltig profitieren."
      },
      {
        "id": "w-b2-11-traffic-mediation",
        "level": "B2",
        "domain": "environment",
        "kind": "opinion",
        "title": "Mediation statement: neighborhood traffic conflict",
        "promptEn": "Write a mediation-oriented statement balancing residents and commuters.",
        "requirements": [
          "Acknowledge both sides",
          "Offer compromise package",
          "Use neutral tone"
        ],
        "helpfulPhrasesDe": [
          "Die Anliegen beider Seiten sind nachvollziehbar.",
          "Eine tragfaehige Loesung sollte ...",
          "Als Kompromiss wird vorgeschlagen, ...",
          "Damit koennte ein Ausgleich erreicht werden."
        ],
        "connectorBankDe": [
          "einerseits",
          "andererseits",
          "zugleich",
          "dadurch"
        ],
        "minWords": 245,
        "timeMin": 27,
        "modelDe": "Im aktuellen Konflikt um den Durchgangsverkehr im Wohngebiet sind die Anliegen beider Seiten nachvollziehbar. Einerseits benoetigen Pendler verlaessliche Routen zur Arbeit. Andererseits leiden Anwohner unter Laerm, unsicheren Querungen und schlechter Luftqualitaet.\n\nEine tragfaehige Loesung sollte deshalb weder einseitig noch kurzfristig sein. Als Kompromiss wird vorgeschlagen, in den Hauptzeiten eine Geschwindigkeitsreduzierung sowie zeitlich begrenzte Durchfahrtsregelungen einzufuehren. Zugleich koennten Umleitungsinformationen verbessert und der oeffentliche Nahverkehr in Stoßzeiten ausgebaut werden.\n\nDadurch wuerde die Belastung fuer Anwohner sinken, ohne die Erreichbarkeit des Viertels vollstaendig einzuschraenken. Ein begleitendes Monitoring ueber sechs Monate koennte anschliessend zeigen, welche Massnahmen dauerhaft sinnvoll sind."
      },
      {
        "id": "w-b2-12-response-rejection",
        "level": "B2",
        "domain": "work",
        "kind": "email",
        "title": "Professional response after rejection",
        "promptEn": "Write a professional response after your application was rejected.",
        "requirements": [
          "Thank politely",
          "Ask for constructive feedback",
          "Keep networking door open"
        ],
        "helpfulPhrasesDe": [
          "Vielen Dank fuer Ihre Rueckmeldung.",
          "Ich bedauere die Entscheidung, respektiere sie jedoch.",
          "Ueber ein kurzes Feedback zu meinem Profil wuerde ich mich freuen.",
          "Gerne bleibe ich fuer kuenftige Positionen in Kontakt."
        ],
        "connectorBankDe": [
          "dennoch",
          "zugleich",
          "sofern",
          "abschliessend"
        ],
        "minWords": 205,
        "timeMin": 22,
        "modelDe": "Sehr geehrte Frau Hoffmann,\n\nvielen Dank fuer Ihre Rueckmeldung zu meiner Bewerbung und fuer den insgesamt professionellen Auswahlprozess. Ich bedauere die Entscheidung, respektiere sie jedoch selbstverstaendlich.\n\nDennoch wuerde ich mich ueber ein kurzes Feedback zu meinem Profil freuen, sofern dies zeitlich moeglich ist. Besonders interessieren mich Hinweise dazu, welche Kompetenzen fuer vergleichbare Positionen in Ihrem Unternehmen noch staerker gewichtet werden.\n\nAbschliessend moechte ich mich fuer den angenehmen Austausch bedanken. Gerne bleibe ich fuer kuenftige Vakanzen in Kontakt.\n\nMit freundlichen Gruessen\nAlex Weber"
      }
    ],
    "dictationTasks": [
      {
        "id": "d:case-00-cases:read-1",
        "level": "A2",
        "domain": "education",
        "title": "CASE 00: The Case Interrogation · Evidence: The Minimal Rule Set",
        "textDe": "Akkusativ = direktes Objekt (Wen/was?)\nDativ = indirektes Objekt (Wem?)\n\nBeispiele:\n- Ich sehe den Mann. (Wen sehe ich?)\n- Ich helfe dem Mann. (Wem helfe ich?)\n- Ich gebe dem Mann den Schlüssel. (Wem? / Was?)\n\nUnd: Präposition + Fall als Einheit lernen:\n- mit + Dativ: mit dem Bus\n- für + Akkusativ: für den Termin",
        "missionId": "case-00-cases",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-00a-supermarkt:listen-1",
        "level": "A2",
        "domain": "daily",
        "title": "CASE 00A: Supermarket Mission: Ask Like a Local · Audio: Find the Item",
        "textDe": "Entschuldigung, wo finde ich Reis?\n\nReis ist in Gang 4, ganz hinten rechts.\n\nDanke. Und haben Sie auch Sojamilch?\n\nJa. Die ist im Kuehlregal neben dem Joghurt.\n\nSuper. Wie viel kostet die?\n\n2 Euro 49.\n\nDanke schoen. Schoenen Tag!\n\nGern geschehen.",
        "missionId": "case-00a-supermarkt",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 7
      },
      {
        "id": "d:case-00b-arzt:read-1",
        "level": "A2",
        "domain": "health",
        "title": "CASE 00B: Doctor Appointment: The First Email · Evidence: Short Reply Template",
        "textDe": "Guten Tag,\n\nvielen Dank fuer Ihre Nachricht. Bitte teilen Sie uns mit, wann Sie Zeit haben (Mo/Di/Mi) und ob es dringend ist.\n\nMit freundlichen Gruessen\nPraxis Team",
        "missionId": "case-00b-arzt",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 7
      },
      {
        "id": "d:case-01-parcel:read-1",
        "level": "B1",
        "domain": "daily",
        "title": "CASE 01: The Vanishing Parcel · Evidence: Delivery Email",
        "textDe": "Betreff: Zustellung Ihrer Sendung\n\nGuten Tag,\n\nlaut System wurde Ihre Sendung am Dienstag um 14:20 Uhr zugestellt. Falls Sie das Paket nicht erhalten haben, prüfen Sie bitte zuerst, ob es bei Nachbarn abgegeben wurde.\n\nSollte das nicht der Fall sein, antworten Sie bitte auf diese E-Mail und nennen Sie Ihre vollständige Adresse sowie die Sendungsnummer.\n\nMit freundlichen Grüßen\nIhr Kundenservice",
        "missionId": "case-01-parcel",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-04-clinic:listen-1",
        "level": "B1",
        "domain": "health",
        "title": "CASE 04: The Clinic Puzzle · Audio: Appointment Call",
        "textDe": "Praxis am Park, guten Tag.\n\nGuten Tag, ich hätte gern einen Termin. Ich habe seit zwei Tagen starke Halsschmerzen und Fieber.\n\nHaben Sie auch Husten?\n\nEin bisschen, aber nicht ständig.\n\nOkay. Wir hätten morgen um 9:30 oder am Donnerstag um 16:10 einen Termin.\n\nMorgen um 9:30 passt. Muss ich etwas mitbringen?\n\nBitte bringen Sie Ihre Versicherungskarte mit. Und wenn möglich: eine Maske.\n\nAlles klar, vielen Dank.\n\nGern. Auf Wiederhören.",
        "missionId": "case-04-clinic",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 8
      },
      {
        "id": "d:case-07-cafe:listen-1",
        "level": "B1",
        "domain": "daily",
        "title": "CASE 07: Café Order: The Polite Version · Audio: The Order",
        "textDe": "Guten Tag. Was darf es sein?\n\nIch hätte gern einen Cappuccino, bitte.\n\nMöchten Sie den hier trinken oder zum Mitnehmen?\n\nHier, bitte. Und haben Sie auch Kuchen?\n\nJa, wir haben Käsekuchen und Apfelkuchen.\n\nDann nehme ich ein Stück Käsekuchen. Kann ich mit Karte zahlen?\n\nJa, natürlich. Das macht zusammen 6 Euro 80.\n\nDanke. Stimmt so.\n\nVielen Dank. Schönen Tag noch!",
        "missionId": "case-07-cafe",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 8
      },
      {
        "id": "d:case-08-bahnhof:read-1",
        "level": "B1",
        "domain": "travel",
        "title": "CASE 08: Bahnhof Chaos: Rebooking Fast · Evidence: Announcement",
        "textDe": "Achtung, bitte. Der ICE 612 nach Köln hat heute circa 35 Minuten Verspätung. Aufgrund einer technischen Störung fällt der Zug anschließend aus.\n\nReisende nach Köln nutzen bitte den nächsten RE um 15:42 Uhr von Gleis 8. In Köln ist ein Umstieg in Richtung Düsseldorf möglich.\n\nWir bitten um Ihr Verständnis.",
        "missionId": "case-08-bahnhof",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-09-wg:read-1",
        "level": "B1",
        "domain": "society",
        "title": "CASE 09: WG Message: Get the Viewing · Evidence: Listing Snippet",
        "textDe": "Zimmer in 3er-WG, 18 m², möbliert. Warmmiete: 520 €. Lage: 5 Min zur U-Bahn.\n\nEinzug ab 01.03. Nichtraucher-WG. Wir suchen eine ruhige Person, die zuverlässig ist.\n\nSchreib uns kurz: Wer bist du? Was machst du? Wann kannst du zur Besichtigung kommen?",
        "missionId": "case-09-wg",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 7
      },
      {
        "id": "d:case-10-gym:read-1",
        "level": "B1",
        "domain": "health",
        "title": "CASE 10: Gym Contract: Cancel Cleanly · Evidence: Contract Email",
        "textDe": "Vielen Dank für Ihre Mitgliedschaft.\n\nHinweis: Die Kündigungsfrist beträgt vier Wochen zum Monatsende. Bitte senden Sie Ihre Kündigung schriftlich.\n\nMit freundlichen Grüßen\nFitPlus Team",
        "missionId": "case-10-gym",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 7
      },
      {
        "id": "d:case-11-course:listen-1",
        "level": "B1",
        "domain": "education",
        "title": "CASE 11: Language Course: Reserve a Spot · Audio: Course Info Call",
        "textDe": "Guten Tag, Sprachschule Mitte.\n\nGuten Tag. Ich interessiere mich für einen A2-Kurs. Wann findet der Kurs statt?\n\nDer Kurs ist montags und mittwochs von 18:00 bis 19:30.\n\nUnd was kostet er?\n\nDer Kurs kostet 260 Euro für acht Wochen.\n\nGibt es noch freie Plätze?\n\nJa, aber nur noch zwei. Möchten Sie einen Platz reservieren?\n\nJa, bitte. Können Sie mir eine E-Mail mit den Infos schicken?\n\nNatürlich. Wie ist Ihre E-Mail-Adresse?",
        "missionId": "case-11-course",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 8
      },
      {
        "id": "d:case-19-buergeramt:listen-1",
        "level": "B1",
        "domain": "daily",
        "title": "CASE 19: Bürgeramt Blitz: Anmeldung · Audio: Appointment Call",
        "textDe": "Bürgeramt Mitte, guten Tag.\n\nGuten Tag, ich möchte mich anmelden. Brauche ich einen Termin?\n\nJa, Anmeldung nur mit Termin. Haben Sie schon einen?\n\nNein.\n\nWir hätten nächste Woche Dienstag um 10:20 oder Donnerstag um 17:10. Was passt Ihnen?\n\nDonnerstag um 17:10 passt.\n\nAlles klar. Bitte bringen Sie Ihren Ausweis und die Wohnungsgeberbestätigung mit. Haben Sie Kinder?\n\nNein.\n\nGut. Dann reicht das. Ich schicke Ihnen die Bestätigung per E-Mail.\n\nVielen Dank. Auf Wiederhören.\n\nGern. Auf Wiederhören.",
        "missionId": "case-19-buergeramt",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 9
      },
      {
        "id": "d:case-19-buergeramt:read-1",
        "level": "B1",
        "domain": "daily",
        "title": "CASE 19: Bürgeramt Blitz: Anmeldung · Evidence: What You Need",
        "textDe": "Hinweis: Anmeldung nur mit Termin.\n\nBitte bringen Sie mit:\n- Personalausweis oder Reisepass\n- Wohnungsgeberbestätigung (vom Vermieter)\n- ggf. Geburtsurkunden der Kinder\n\nZum Termin:\n- Bitte kommen Sie pünktlich.\n- Terminbestätigung ausgedruckt oder auf dem Handy.\n\nÖffnungszeiten:\nMo–Fr 08:00–12:00\nDo zusätzlich 14:00–18:00",
        "missionId": "case-19-buergeramt",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-20-hotel:listen-1",
        "level": "B1",
        "domain": "travel",
        "title": "CASE 20: Hotel Problem: Zimmer zu laut · Audio: Reception Desk",
        "textDe": "Guten Abend. Ich habe ein Problem mit meinem Zimmer.\n\nGuten Abend. Was genau ist los?\n\nLeider ist es sehr laut. Draußen ist eine Baustelle, und ich kann kaum schlafen.\n\nDas tut mir leid. Wir können Ihnen ein anderes Zimmer anbieten, aber erst ab morgen. Für heute könnten wir Ihnen Ohrstöpsel geben.\n\nGibt es ein ruhigeres Zimmer im Innenhof?\n\nJa, ab morgen wäre Zimmer 312 frei. Möchten Sie umziehen?\n\nJa, bitte. Und könnten Sie mir das schriftlich bestätigen?\n\nNatürlich. Ich schicke Ihnen eine kurze Bestätigung per E-Mail.\n\nVielen Dank.\n\nGern.",
        "missionId": "case-20-hotel",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 9
      },
      {
        "id": "d:case-21-schedule:read-1",
        "level": "B1",
        "domain": "work",
        "title": "CASE 21: Meeting Scheduling: Find a Slot · Evidence: Constraints (Chat)",
        "textDe": "Chat (intern):\n- Ich kann heute erst ab 15 Uhr.\n- Morgen Vormittag bin ich in einem Workshop.\n- Donnerstag geht bei mir nur zwischen 10 und 12.\n- Bitte nur 30 Minuten.\n- Thema: Übergabe der Aufgaben.",
        "missionId": "case-21-schedule",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 7
      },
      {
        "id": "d:case-22-library:listen-1",
        "level": "B1",
        "domain": "education",
        "title": "CASE 22: Library Card: Register + Reserve · Audio: At the Desk",
        "textDe": "Guten Tag. Ich hätte gern einen Bibliotheksausweis.\n\nGern. Haben Sie Ihren Ausweis dabei?\n\nJa.\n\nSuper. Wenn die Adresse nicht im Ausweis steht, brauchen wir auch eine Meldebescheinigung.\n\nOkay. Was kostet das?\n\nFür Erwachsene sind es 10 Euro pro Jahr. Studierende zahlen 5 Euro.\n\nKann ich auch Bücher reservieren?\n\nJa, online oder direkt hier. Die Leihfrist ist vier Wochen.\n\nDanke.",
        "missionId": "case-22-library",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 8
      },
      {
        "id": "d:case-22-library:read-1",
        "level": "B1",
        "domain": "education",
        "title": "CASE 22: Library Card: Register + Reserve · Evidence: Library Info",
        "textDe": "Stadtbibliothek – Anmeldung\n\nFür einen Bibliotheksausweis brauchen Sie:\n- Personalausweis oder Reisepass\n- eine aktuelle Meldebescheinigung (falls die Adresse nicht im Ausweis steht)\n\nGebühr:\n- Erwachsene: 10 Euro pro Jahr\n- Studierende: 5 Euro pro Jahr\n\nAusleihe:\n- Leihfrist: 4 Wochen\n- Verlängerung online möglich",
        "missionId": "case-22-library",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-23-internet:listen-1",
        "level": "B1",
        "domain": "daily",
        "title": "CASE 23: Internet Down: Router + Technician · Audio: Support Call",
        "textDe": "Technischer Support, guten Tag.\n\nGuten Tag, ich habe seit gestern kein Internet mehr.\n\nOkay. Haben Sie den Router schon neu gestartet?\n\nJa.\n\nBitte prüfen Sie auch das Kabel. Ist das DSL-Licht an?\n\nNein, es blinkt.\n\nDann liegt vermutlich eine Störung vor. Wir können einen Techniker schicken. Wir hätten am Mittwoch zwischen 8 und 10 Uhr oder am Donnerstag zwischen 16 und 18 Uhr.\n\nDonnerstag 16 bis 18 passt.\n\nAlles klar. Sie bekommen eine SMS-Bestätigung. Bitte sorgen Sie dafür, dass jemand zu Hause ist.\n\nDanke.",
        "missionId": "case-23-internet",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 9
      },
      {
        "id": "d:case-02-minutes:read-1",
        "level": "B2",
        "domain": "work",
        "title": "CASE 02: Office Politics: The Minutes · Evidence: Raw Notes",
        "textDe": "Notizen (intern):\n- Einerseits wollen wir schneller releasen, andererseits fehlt QA-Kapazität.\n- Vorschlag: Feature-Flags + kleineres Release.\n- Frist: Freitag 16:00 für Testplan.\n- Während des Meetings kamen neue Infos vom Vertrieb: Kunde X erwartet ein Update bis Ende der Woche.\n- Entscheidung: Release am Dienstag, sofern Tests grün sind.",
        "missionId": "case-02-minutes",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-03-rent:read-1",
        "level": "B2",
        "domain": "society",
        "title": "CASE 03: Rising Rent: Negotiation · Evidence: Notice",
        "textDe": "Sehr geehrte Mieterin, sehr geehrter Mieter,\n\nwir informieren Sie hiermit, dass die monatliche Kaltmiete ab dem 01.04. um 60 Euro erhöht wird. Die Anpassung erfolgt aufgrund gestiegener Instandhaltungskosten.\n\nBitte überweisen Sie den neuen Betrag ab dem genannten Datum.\n\nMit freundlichen Grüßen\nHausverwaltung",
        "missionId": "case-03-rent",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-05-council:read-1",
        "level": "B2",
        "domain": "politics",
        "title": "CASE 05: Council Debate: Traffic Plan · Evidence: Editorial",
        "textDe": "Die Stadt plant eine neue Maßnahme: Eine Gebühr für Autos in der Innenstadt. Ziel ist es, den Verkehr zu reduzieren und die Luftqualität zu verbessern. Kritiker warnen jedoch vor sozialen Folgen. Wer außerhalb wohnt, sei auf das Auto angewiesen.\n\nBefürworter betonen, dass der öffentliche Nahverkehr ausgebaut werden soll. Außerdem könnten Lieferzeiten besser geregelt werden. Langfristig würde die Stadt attraktiver: weniger Lärm, mehr Platz für Fahrräder und Fußgänger.\n\nDie entscheidende Frage lautet: Wird die Gebühr wirklich zu weniger Verkehr führen, oder belastet sie nur bestimmte Gruppen? Ohne klare Alternativen droht Frust. Mit guter Planung kann die Maßnahme jedoch ein Schritt zu einer gesünderen Stadt sein.",
        "missionId": "case-05-council",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 10
      },
      {
        "id": "d:case-06-green:listen-1",
        "level": "B2",
        "domain": "environment",
        "title": "CASE 06: Green Weekend: Convenience vs Sustainability · Audio: Podcast Snippet",
        "textDe": "Viele Menschen wollen umweltfreundlich reisen, aber im Alltag ist das nicht immer einfach. Einerseits ist der Zug oft die nachhaltigere Option. Andererseits sind Tickets manchmal teuer oder Verbindungen dauern lange.\n\nMeines Erachtens hilft es, realistisch zu planen: Für kurze Strecken lohnt es sich, den Zug früh zu buchen. Wenn man doch fliegen muss, kann man zumindest weniger oft fliegen und länger bleiben. Darüber hinaus kann man vor Ort viel tun: zu Fuß gehen, Fahrrad fahren oder öffentliche Verkehrsmittel nutzen.",
        "missionId": "case-06-green",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 9
      },
      {
        "id": "d:case-12-neighbor:read-1",
        "level": "B2",
        "domain": "society",
        "title": "CASE 12: Noisy Neighbor: The Formal Complaint · Evidence: House Rules Excerpt",
        "textDe": "Hausordnung (Auszug):\n- Ruhezeiten: 22:00–07:00 Uhr.\n- Musik und laute Gespräche sind in dieser Zeit zu vermeiden.\n- Bei wiederholten Verstößen kann die Hausverwaltung eine Abmahnung aussprechen.",
        "missionId": "case-12-neighbor",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 7
      },
      {
        "id": "d:case-13-museum:read-1",
        "level": "B2",
        "domain": "culture",
        "title": "CASE 13: Museum Feedback: Professional Tone · Evidence: Visitor Info",
        "textDe": "Vielen Dank für Ihren Besuch.\n\nWir freuen uns über Ihr Feedback. Bitte nennen Sie konkret, was gut war und was wir verbessern können.\n\nHinweis: Im Eingangsbereich kommt es an Wochenenden häufig zu langen Wartezeiten.",
        "missionId": "case-13-museum",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 7
      },
      {
        "id": "d:case-14-interview:read-1",
        "level": "B2",
        "domain": "work",
        "title": "CASE 14: Interview Follow-up: Impress Without Overdoing It · Evidence: Interview Invite",
        "textDe": "Vielen Dank für Ihre Bewerbung.\n\nWir möchten Sie gern zu einem Gespräch einladen. Termin: Dienstag, 10:00 Uhr. Ort: Musterstraße 12.\n\nBitte bringen Sie, wenn möglich, Arbeitsproben mit.\n\nMit freundlichen Grüßen\nHR Team",
        "missionId": "case-14-interview",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 7
      },
      {
        "id": "d:case-15-school-policy:read-1",
        "level": "B2",
        "domain": "politics",
        "title": "CASE 15: School Policy Debate: Smartphone Ban? · Evidence: Short Article",
        "textDe": "Viele Schulen diskutieren über ein Smartphone-Verbot im Unterricht. Befürworter argumentieren, dass Handys ablenken und Konflikte verursachen. Außerdem könne ein Verbot die Konzentration verbessern.\n\nKritiker betonen jedoch, dass digitale Kompetenz wichtig ist. Zudem nutzen manche Schüler das Smartphone für Übersetzungen oder Lern-Apps. Entscheidend ist daher die Frage: Verbieten wir pauschal, oder schaffen wir klare Regeln?\n\nMeines Erachtens braucht es einen Mittelweg: klare Zeiten ohne Handy, aber sinnvolle Nutzung für Lernzwecke.",
        "missionId": "case-15-school-policy",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 9
      },
      {
        "id": "d:case-16-volunteer:listen-1",
        "level": "B2",
        "domain": "society",
        "title": "CASE 16: Volunteer Role: Apply and Ask Smart Questions · Audio: Volunteer Info",
        "textDe": "Guten Tag und danke für Ihr Interesse. Wir suchen Helferinnen und Helfer für ein Nachbarschaftsprojekt. Die Aufgaben sind: Einkäufe für ältere Menschen, Begleitung zu Terminen und Unterstützung bei kleinen Formularen.\n\nWir treffen uns einmal pro Woche, meistens am Samstagvormittag. Wichtig ist Zuverlässigkeit. Erfahrung ist nicht nötig, aber gute Deutschkenntnisse sind hilfreich.\n\nWenn Sie mitmachen möchten, schreiben Sie uns kurz: wer Sie sind, wann Sie Zeit haben und welche Aufgaben für Sie passen.",
        "missionId": "case-16-volunteer",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 9
      },
      {
        "id": "d:case-17-sicknote:read-1",
        "level": "B2",
        "domain": "work",
        "title": "CASE 17: Sick Note: HR Email Without Panic · Evidence: Company Policy",
        "textDe": "Hinweis (HR): Bitte melden Sie sich am ersten Krankheitstag bei Ihrer Führungskraft. Ab dem dritten Krankheitstag benötigen wir eine Arbeitsunfähigkeitsbescheinigung (AU).\n\nVielen Dank.",
        "missionId": "case-17-sicknote",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 7
      },
      {
        "id": "d:case-18-eco-letter:read-1",
        "level": "B2",
        "domain": "environment",
        "title": "CASE 18: Recycling Rules: Write to the City · Evidence: City Notice",
        "textDe": "Die Stadt führt neue Regeln für die Mülltrennung ein. Ab April werden zusätzliche Behälter für Bioabfälle bereitgestellt. Ziel ist es, die Recyclingquote zu erhöhen.\n\nKritik gibt es vor allem in dicht bebauten Vierteln: Dort fehlt Platz für weitere Tonnen. Die Stadt prüft daher Sammelstellen und flexiblere Abholzeiten.\n\nWir freuen uns über Anregungen aus der Bevölkerung.",
        "missionId": "case-18-eco-letter",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-24-delay:read-1",
        "level": "B2",
        "domain": "work",
        "title": "CASE 24: Project Delay: Status Update That Works · Evidence: Raw Notes",
        "textDe": "Notizen:\n- Bug in Zahlungsflow gefunden (reproduzierbar).\n- Fix dauert vermutlich 1–2 Tage.\n- Risiko: Release am Freitag.\n- Vorschlag: Scope reduzieren + Feature-Flag.\n- Abhängigkeit: QA braucht bis Donnerstag 12:00 einen Build.\n- Kommunikation: Stakeholder wollen ein kurzes Update heute.",
        "missionId": "case-24-delay",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-25-review:read-1",
        "level": "B2",
        "domain": "culture",
        "title": "CASE 25: Culture Review: Recommend Without Hype · Evidence: Mini Reviews",
        "textDe": "Review A:\n\"Die Ausstellung war spannend, aber teilweise zu voll. Die Texte an den Wänden waren informativ, allerdings etwas lang. Insgesamt hat es sich trotzdem gelohnt.\"\n\nReview B:\n\"Die Führung war gut organisiert. Besonders gefallen hat mir, dass man viele Fragen stellen konnte. Ein Nachteil: Die Gruppe war groß, daher war es manchmal laut.\"",
        "missionId": "case-25-review",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-26-insurance:read-1",
        "level": "B2",
        "domain": "health",
        "title": "CASE 26: Insurance Reply: Missing Documents · Evidence: Insurance Letter",
        "textDe": "Sehr geehrte Damen und Herren,\n\nvielen Dank für Ihren Antrag. Leider können wir die Erstattung derzeit nicht bearbeiten, da folgende Unterlagen fehlen:\n\n- Originalrechnung\n- Zahlungsnachweis\n\nBitte reichen Sie die Unterlagen innerhalb von 14 Tagen nach.\n\nMit freundlichen Grüßen\nIhre Krankenkasse",
        "missionId": "case-26-insurance",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-27-wind:read-1",
        "level": "B2",
        "domain": "politics",
        "title": "CASE 27: Public Hearing: Wind Turbines · Evidence: Two Positions",
        "textDe": "Position 1 (pro):\n\"Windkraft reduziert CO₂ und macht uns unabhängiger. Wenn Standorte gut geplant sind, profitieren alle langfristig.\"\n\nPosition 2 (kritisch):\n\"Anwohner leiden unter Lärm und der veränderten Landschaft. Außerdem müssen Naturschutz und Abstände ernst genommen werden.\"",
        "missionId": "case-27-wind",
        "stepId": "read-1",
        "kind": "read",
        "estMin": 8
      },
      {
        "id": "d:case-28-energy-bill:listen-1",
        "level": "B2",
        "domain": "environment",
        "title": "CASE 28: Energy Bill: Dispute and Correction · Audio: Utility Company Call",
        "textDe": "Energie-Service, guten Tag.\n\nGuten Tag, ich habe eine Frage zu meiner Rechnung. Der Betrag ist viel höher als sonst.\n\nHaben Sie einen aktuellen Zählerstand?\n\nJa, ich habe gestern abgelesen.\n\nOkay. Dann senden Sie uns bitte den Zählerstand per E-Mail. Wir prüfen das und korrigieren die Rechnung, falls ein Fehler vorliegt.\n\nWie lange dauert das ungefähr?\n\nNormalerweise drei bis fünf Werktage. Sie bekommen dann eine schriftliche Bestätigung.\n\nDanke.",
        "missionId": "case-28-energy-bill",
        "stepId": "listen-1",
        "kind": "listen",
        "estMin": 9
      }
    ],
    "exams": [
      {
        "id": "mini-goethe-b2-01",
        "title": "Mini Goethe B2 Simulation",
        "tagline": "Home office, city rules, and structured argumentation.",
        "noteEn": "This is not an official exam. It is a compact drill that targets B2 habits: structured reading, focused listening, formal writing, and clear speaking frames.",
        "sections": [
          {
            "type": "reading",
            "title": "Lesen (Reading)",
            "textDe": "Homeoffice hat viele Unternehmen verändert. Einerseits spart man Pendelzeit und kann konzentrierter arbeiten. Andererseits klagen manche über fehlenden Austausch und ein Gefühl der Isolation.\n\nFür Städte bedeutet die Entwicklung ebenfalls Wandel: Wenn weniger Menschen täglich ins Zentrum fahren, sinkt der Verkehr. Gleichzeitig verlieren Cafés und kleine Läden Kundschaft. Einige Kommunen reagieren mit neuen Konzepten, zum Beispiel mit mehr Kulturangeboten oder mit flexibleren Nutzungsmöglichkeiten für Büroflächen.\n\nMeines Erachtens ist entscheidend, dass Arbeit und Gemeinschaft nicht gegeneinander ausgespielt werden. Wer zu Hause arbeitet, braucht klare Grenzen und soziale Kontakte. Unternehmen wiederum sollten Regeln schaffen, damit Teams regelmäßig zusammenkommen. Zusammenfassend lässt sich sagen: Homeoffice ist eine Chance, aber nur mit guter Organisation.",
            "questions": [
              {
                "id": "r1",
                "questionEn": "What is presented as a disadvantage of home office?",
                "options": [
                  "More commuting time",
                  "Less social exchange / isolation",
                  "Higher rent prices",
                  "Less internet access"
                ],
                "answerIndex": 1,
                "explanationEn": "The text mentions fehlenden Austausch and Isolation."
              },
              {
                "id": "r2",
                "questionEn": "What effect can fewer commuters have on cities?",
                "options": [
                  "Traffic decreases",
                  "Traffic increases",
                  "More office buildings are built",
                  "Public transport disappears"
                ],
                "answerIndex": 0,
                "explanationEn": "It says: sinkt der Verkehr."
              },
              {
                "id": "r3",
                "questionEn": "What problem do cafés and small shops face?",
                "options": [
                  "They pay less tax",
                  "They lose customers",
                  "They get too many customers",
                  "They move to villages"
                ],
                "answerIndex": 1,
                "explanationEn": "They lose Kundschaft (customers)."
              },
              {
                "id": "r4",
                "questionEn": "Which solution is mentioned for cities?",
                "options": [
                  "Ban home office",
                  "Offer more culture or flexible use of offices",
                  "Close all cafés",
                  "Raise parking fees only"
                ],
                "answerIndex": 1,
                "explanationEn": "The text mentions more culture offers and flexible office use."
              },
              {
                "id": "r5",
                "questionEn": "What does the author think is crucial?",
                "options": [
                  "That work and community are balanced, not played against each other",
                  "That everyone works from home",
                  "That cities become smaller",
                  "That cafés are closed"
                ],
                "answerIndex": 0,
                "explanationEn": "They say work and community should not be opposed."
              }
            ]
          },
          {
            "type": "listening",
            "title": "Hören (Listening)",
            "scriptDe": "Guten Abend und willkommen zum Stadtmagazin. Heute geht es um neue Regeln für Lieferverkehr in der Innenstadt. Viele Anwohner beschweren sich über Lärm am frühen Morgen. Die Stadt plant daher Zeitfenster: Lieferungen sollen nur zwischen 8 und 18 Uhr erlaubt sein.\n\nGeschäfte befürchten allerdings Probleme. Sie sagen, dass bestimmte Waren morgens frisch geliefert werden müssen. Die Stadt reagiert mit Ausnahmen für Bäckereien und Apotheken. Außerdem soll es mehr Sammelstellen geben, damit weniger Fahrzeuge direkt ins Zentrum fahren.\n\nOb die Maßnahme funktioniert, hängt auch davon ab, ob die Kontrollen konsequent sind. Im Zweifel braucht es zusätzlich bessere Fahrradwege für Lieferdienste.",
            "questions": [
              {
                "id": "l1",
                "questionEn": "Why do residents complain?",
                "options": [
                  "Traffic at night",
                  "Noise early in the morning",
                  "High prices",
                  "Lack of parks"
                ],
                "answerIndex": 1,
                "explanationEn": "They complain about Lärm am frühen Morgen."
              },
              {
                "id": "l2",
                "questionEn": "What is the proposed rule?",
                "options": [
                  "No deliveries at all",
                  "Deliveries only between 8 and 18",
                  "Deliveries only before 8",
                  "Deliveries only on weekends"
                ],
                "answerIndex": 1,
                "explanationEn": "Time windows 8–18 are mentioned."
              },
              {
                "id": "l3",
                "questionEn": "Which businesses can get exceptions?",
                "options": [
                  "Bookshops",
                  "Bakeries and pharmacies",
                  "Bars",
                  "Museums"
                ],
                "answerIndex": 1,
                "explanationEn": "Ausnahmen für Bäckereien und Apotheken."
              },
              {
                "id": "l4",
                "questionEn": "What else should reduce vehicles in the center?",
                "options": [
                  "More parking spots",
                  "More collection points",
                  "Higher taxes",
                  "More highways"
                ],
                "answerIndex": 1,
                "explanationEn": "They mention Sammelstellen."
              }
            ]
          },
          {
            "type": "writing",
            "title": "Schreiben (Writing)",
            "promptEn": "You read about the delivery-traffic rule. Write a formal email to the city office: briefly state your opinion, give 2 reasons, and propose one realistic improvement.",
            "checklist": [
              "Formal greeting (Sehr geehrte Damen und Herren,)",
              "Clear position (Meines Erachtens ...)",
              "2 reasons (noise, health, business needs, fairness)",
              "Use at least 4 connectors (zwar/aber, daher, obwohl, darüber hinaus)",
              "Concrete proposal (e.g., better controls, clear exceptions, bike lanes)",
              "Formal closing"
            ],
            "usefulPhrasesDe": [
              "Ich nehme Bezug auf ...",
              "Meines Erachtens ist die Maßnahme sinnvoll, weil ...",
              "Zwar ..., aber ...",
              "Obwohl ..., sollte ...",
              "Zusammenfassend ..."
            ],
            "modelDe": "Sehr geehrte Damen und Herren,\n\nich nehme Bezug auf die geplanten Zeitfenster für Lieferungen in der Innenstadt. Meines Erachtens ist die Maßnahme grundsätzlich sinnvoll, weil sie den Lärm am frühen Morgen reduziert und damit die Lebensqualität vieler Anwohner verbessert. Zwar müssen Geschäfte frische Waren erhalten, aber durch klare Ausnahmen und gute Planung kann beides berücksichtigt werden.\n\nObwohl Regeln allein nicht alles lösen, sollte die Kontrolle konsequent erfolgen. Darüber hinaus schlage ich vor, sichere Fahrradwege für Lieferdienste auszubauen und Sammelstellen am Rand des Zentrums zu schaffen.\n\nZusammenfassend lässt sich sagen, dass die Maßnahme ein guter Schritt ist, wenn sie fair umgesetzt wird.\n\nMit freundlichen Grüßen\n[Name]"
          },
          {
            "type": "speaking",
            "title": "Sprechen (Speaking)",
            "tasks": [
              {
                "id": "s1",
                "promptEn": "Task 1 (60s): Summarize the problem and the city’s solution in your own words. Mention one concern.",
                "timeSec": 60,
                "framesDe": [
                  "Es geht um ...",
                  "Die Stadt plant ...",
                  "Kritisch ist dabei, dass ..."
                ]
              },
              {
                "id": "s2",
                "promptEn": "Task 2 (75s): Give your opinion and propose one improvement. Use at least 2 connectors (einerseits/andererseits, daher, trotzdem).",
                "timeSec": 75,
                "framesDe": [
                  "Meines Erachtens ...",
                  "Einerseits ..., andererseits ...",
                  "Daher schlage ich vor, ...",
                  "Trotzdem sollte man ..."
                ]
              }
            ]
          }
        ]
      },
      {
        "id": "mini-goethe-b2-02",
        "title": "Mini Goethe B2 Simulation",
        "tagline": "Housing, renovation, and a formal complaint that gets action.",
        "noteEn": "Not official. This simulation targets B2 “adult” German: precise problem description, polite pressure, and clear structure.",
        "sections": [
          {
            "type": "reading",
            "title": "Lesen (Reading)",
            "textDe": "Energetische Sanierungen gelten als wichtiger Baustein der Klimapolitik. Viele Vermieter dämmen Fassaden, tauschen Fenster aus und modernisieren Heizungen. Befürworter argumentieren, dass dadurch Energie gespart und die Luftqualität verbessert wird. Langfristig könnten sogar die Nebenkosten sinken.\n\nFür Mieter ist die Situation jedoch oft ambivalent. Während der Bauarbeiten kommt es zu Lärm, Staub und Einschränkungen. Außerdem steigen in manchen Fällen die Mieten, weil ein Teil der Kosten umgelegt wird. Kritiker befürchten daher soziale Folgen: Wer ohnehin knapp kalkuliert, kann sich die Wohnung nach der Modernisierung möglicherweise nicht mehr leisten.\n\nExperten fordern deshalb klare Regeln und transparente Kommunikation. Zeitpläne, Ansprechpartner und nachvollziehbare Kostenaufstellungen seien entscheidend. Zusammenfassend lässt sich sagen: Sanierungen sind sinnvoll, wenn sie fair geplant und sozial abgefedert werden.",
            "questions": [
              {
                "id": "r1",
                "questionEn": "What is a long-term benefit mentioned?",
                "options": [
                  "More parking spaces",
                  "Lower utility costs (Nebenkosten) may decrease",
                  "Fewer building permits",
                  "Cheaper public transport"
                ],
                "answerIndex": 1,
                "explanationEn": "The text says Nebenkosten could sink in the long term."
              },
              {
                "id": "r2",
                "questionEn": "Why is the situation “ambivalent” for tenants?",
                "options": [
                  "Because they always get free rent",
                  "Because they face construction disruption and possible rent increases",
                  "Because they can choose any apartment",
                  "Because renovations are illegal"
                ],
                "answerIndex": 1,
                "explanationEn": "The text mentions noise/dust/restrictions and rising rents."
              },
              {
                "id": "r3",
                "questionEn": "What do critics fear?",
                "options": [
                  "Social consequences and displacement",
                  "Too much sunshine",
                  "More tourists",
                  "More empty offices"
                ],
                "answerIndex": 0,
                "explanationEn": "They fear social consequences: some may not afford the apartment anymore."
              },
              {
                "id": "r4",
                "questionEn": "What do experts demand?",
                "options": [
                  "Cancel all renovations",
                  "Clear rules and transparent communication (plans, contacts, costs)",
                  "Move tenants to hotels",
                  "Only renovate in winter"
                ],
                "answerIndex": 1,
                "explanationEn": "They demand clear rules and transparency (time plans, contacts, costs)."
              },
              {
                "id": "r5",
                "questionEn": "What is the conclusion?",
                "options": [
                  "Renovations are always bad",
                  "Renovations are useful if planned fairly and socially supported",
                  "Renovations should be done without communication",
                  "Renovations are only for big cities"
                ],
                "answerIndex": 1,
                "explanationEn": "The conclusion: useful if fair and socially cushioned."
              }
            ]
          },
          {
            "type": "listening",
            "title": "Hören (Listening)",
            "scriptDe": "Hausverwaltung Sonnenschein, guten Tag.\n\nGuten Tag, hier spricht Frau Novak. Ich habe seit etwa einer Woche Schimmel im Schlafzimmer. Ich habe schon regelmäßig gelüftet und geheizt, aber es wird nicht besser.\n\nDas tut mir leid. Können Sie mir bitte Ihre Adresse nennen?\n\nJa, Musterstraße 12, 3. Stock links.\n\nDanke. Wir schicken einen Techniker vorbei. Wir hätten am Mittwoch zwischen 10 und 12 Uhr oder am Freitag um 15 Uhr einen Termin. Was passt Ihnen besser?\n\nFreitag um 15 Uhr wäre gut.\n\nAlles klar. Bitte sorgen Sie dafür, dass der Zugang zum Schlafzimmer frei ist. Und wenn möglich, schicken Sie uns zwei Fotos per E-Mail, damit der Techniker vorbereitet ist.\n\nMache ich. Bekomme ich eine Bestätigung?\n\nJa, ich sende Ihnen gleich eine kurze Terminbestätigung.\n\nVielen Dank. Auf Wiederhören.\n\nGern. Auf Wiederhören.",
            "questions": [
              {
                "id": "l1",
                "questionEn": "What problem does the caller report?",
                "options": [
                  "A broken elevator",
                  "Mold in the bedroom",
                  "A lost parcel",
                  "No heating at all"
                ],
                "answerIndex": 1,
                "explanationEn": "She says she has Schimmel im Schlafzimmer."
              },
              {
                "id": "l2",
                "questionEn": "What has the caller already tried?",
                "options": [
                  "Painting the wall",
                  "Ventilating and heating regularly",
                  "Moving out",
                  "Calling the police"
                ],
                "answerIndex": 1,
                "explanationEn": "She says she has lüftet und geheizt."
              },
              {
                "id": "l3",
                "questionEn": "Which appointment does she choose?",
                "options": [
                  "Wednesday 10–12",
                  "Friday 15:00",
                  "Tuesday 9:00",
                  "Saturday 16:00"
                ],
                "answerIndex": 1,
                "explanationEn": "She chooses Friday at 15:00."
              },
              {
                "id": "l4",
                "questionEn": "What does the office ask her to do?",
                "options": [
                  "Pay cash",
                  "Send two photos by email and keep access free",
                  "Buy new windows",
                  "Contact neighbors"
                ],
                "answerIndex": 1,
                "explanationEn": "They ask for photos and clear access."
              }
            ]
          },
          {
            "type": "writing",
            "title": "Schreiben (Writing)",
            "promptEn": "Write a formal email to the Hausverwaltung about mold in your bedroom. Describe the situation, mention what you already tried, ask for inspection, and request a written confirmation of the appointment.",
            "checklist": [
              "Formal greeting",
              "Clear problem description + timeframe",
              "Mention what you tried (lüften/heizen)",
              "Request: inspection/technician + 2 time options",
              "Polite pressure (würde Sie bitten / wäre es möglich)",
              "Formal closing"
            ],
            "usefulPhrasesDe": [
              "Ich nehme Bezug auf ...",
              "Seit etwa ... kommt es zu ...",
              "Ich habe bereits ...; dennoch ...",
              "Ich würde Sie bitten, ...",
              "Wäre es möglich, ...?",
              "Über eine schriftliche Bestätigung würde ich mich freuen."
            ],
            "modelDe": "Sehr geehrte Damen und Herren,\n\nich wende mich an Sie, weil es seit etwa einer Woche in meinem Schlafzimmer (Musterstraße 12, 3. Stock links) zu Schimmelbildung kommt. Ich habe bereits regelmäßig gelüftet und geheizt; dennoch wird das Problem nicht besser.\n\nIch würde Sie bitten, kurzfristig einen Techniker zur Prüfung vorbeizuschicken. Wäre es möglich, einen Termin entweder am Mittwoch zwischen 10 und 12 Uhr oder alternativ am Freitag um 15 Uhr zu vereinbaren?\n\nÜber eine schriftliche Terminbestätigung sowie eine kurze Information zum weiteren Vorgehen würde ich mich freuen.\n\nMit freundlichen Grüßen\n[Name]"
          },
          {
            "type": "speaking",
            "title": "Sprechen (Speaking)",
            "tasks": [
              {
                "id": "s1",
                "promptEn": "Task 1 (60s): Summarize the reading text: benefit, problem for tenants, and the proposed solution.",
                "timeSec": 60,
                "framesDe": [
                  "Im Text geht es um ...",
                  "Einerseits ..., andererseits ...",
                  "Zusammenfassend ..."
                ]
              },
              {
                "id": "s2",
                "promptEn": "Task 2 (75s): Explain your situation (mold) and what you want from the Hausverwaltung. Propose a clear next step.",
                "timeSec": 75,
                "framesDe": [
                  "Seit ... habe ich ...",
                  "Ich habe bereits ..., dennoch ...",
                  "Daher würde ich Sie bitten, ...",
                  "Wäre es möglich, ...?"
                ]
              }
            ]
          }
        ]
      },
      {
        "id": "mini-goethe-b2-03",
        "title": "Mini Goethe B2 Simulation",
        "tagline": "Work, training, and explaining decisions like a professional.",
        "noteEn": "Not official. This one rewards structure, connectors, and pragmatic proposals (B2 “office German”).",
        "sections": [
          {
            "type": "reading",
            "title": "Lesen (Reading)",
            "textDe": "Viele Unternehmen investieren inzwischen stärker in Weiterbildung. Der Grund ist klar: Technologien ändern sich schnell, und Fachkräfte sind knapp. Gleichzeitig berichten Mitarbeiter, dass sie kaum Zeit für zusätzliche Kurse finden. Wer Vollzeit arbeitet, Familie hat oder pendelt, muss Prioritäten setzen.\n\nEinige Firmen reagieren mit neuen Formaten. Statt langer Seminare werden kurze Lernmodule angeboten, die man flexibel in den Alltag integrieren kann. Außerdem wird Weiterbildung zunehmend als Teil der Arbeitszeit betrachtet, nicht als private Aufgabe. Kritiker warnen jedoch vor Symbolpolitik: Wenn Lernziele zwar formuliert werden, aber im Alltag keine Kapazitäten entstehen, bleibt Weiterbildung ein gutes Schlagwort.\n\nMeines Erachtens kommt es darauf an, realistische Ziele zu setzen. Besser ein klarer Plan mit zwei Stunden pro Woche als ein ambitioniertes Programm, das niemand durchhält.",
            "questions": [
              {
                "id": "r1",
                "questionEn": "Why do companies invest more in training?",
                "options": [
                  "Because offices are empty",
                  "Because technology changes quickly and skilled workers are scarce",
                  "Because taxes are higher",
                  "Because products are simpler"
                ],
                "answerIndex": 1,
                "explanationEn": "The text mentions rapid tech change and shortage of skilled workers."
              },
              {
                "id": "r2",
                "questionEn": "What is a common problem for employees?",
                "options": [
                  "Too much free time",
                  "Not enough time for additional courses",
                  "No internet access",
                  "No interest in work"
                ],
                "answerIndex": 1,
                "explanationEn": "They say many have hardly any time for extra courses."
              },
              {
                "id": "r3",
                "questionEn": "Which solution is mentioned?",
                "options": [
                  "Longer seminars only",
                  "Short flexible learning modules and training during work time",
                  "Training only on weekends",
                  "Cancel all training"
                ],
                "answerIndex": 1,
                "explanationEn": "Short modules + training as part of work time are mentioned."
              },
              {
                "id": "r4",
                "questionEn": "What do critics warn about?",
                "options": [
                  "Symbolic policies without real capacity",
                  "Too much vacation",
                  "Higher rent",
                  "More traffic"
                ],
                "answerIndex": 0,
                "explanationEn": "They warn about Symbolpolitik if there is no real capacity."
              },
              {
                "id": "r5",
                "questionEn": "What is the author’s recommendation?",
                "options": [
                  "Set unrealistic goals to motivate",
                  "Set realistic goals and a small weekly plan",
                  "Stop learning completely",
                  "Only learn alone at night"
                ],
                "answerIndex": 1,
                "explanationEn": "They prefer a realistic plan (two hours a week)."
              }
            ]
          },
          {
            "type": "listening",
            "title": "Hören (Listening)",
            "scriptDe": "Guten Morgen zusammen. Ich möchte kurz unser neues Weiterbildungsbudget erklären. Ab diesem Quartal bekommt jedes Team ein festes Kontingent. Wichtig ist: Die Kurse sollen zu unseren Projekten passen.\n\nBitte stimmt euch im Team ab und schickt bis Ende des Monats eine kurze Liste: Kursname, Dauer, und warum der Kurs relevant ist. Wir versuchen, die Teilnahme während der Arbeitszeit zu ermöglichen. Allerdings müssen wir Release-Phasen berücksichtigen, damit es keine Engpässe gibt.\n\nFalls ihr unsicher seid, kommt gern auf mich zu. Wir wollen Weiterbildung fördern, aber realistisch planen.",
            "questions": [
              {
                "id": "l1",
                "questionEn": "What changes this quarter?",
                "options": [
                  "Teams get a fixed training budget",
                  "All training is canceled",
                  "Only managers can learn",
                  "Work hours are reduced"
                ],
                "answerIndex": 0,
                "explanationEn": "They say each team gets a fixed contingent/budget."
              },
              {
                "id": "l2",
                "questionEn": "What should teams submit?",
                "options": [
                  "A long essay",
                  "A short list with course name, duration, and relevance",
                  "A phone recording",
                  "A budget for rent"
                ],
                "answerIndex": 1,
                "explanationEn": "They request a short list with course name/duration/why relevant."
              },
              {
                "id": "l3",
                "questionEn": "When is the deadline?",
                "options": [
                  "By end of the week",
                  "By end of the month",
                  "Next year",
                  "No deadline"
                ],
                "answerIndex": 1,
                "explanationEn": "They say: bis Ende des Monats."
              },
              {
                "id": "l4",
                "questionEn": "What constraint is mentioned?",
                "options": [
                  "No internet",
                  "Release phases must be considered to avoid bottlenecks",
                  "Only night courses allowed",
                  "Only offline courses allowed"
                ],
                "answerIndex": 1,
                "explanationEn": "They mention release phases and avoiding capacity bottlenecks."
              }
            ]
          },
          {
            "type": "writing",
            "title": "Schreiben (Writing)",
            "promptEn": "Write a professional email to your manager: propose one course you want to take. Explain why it is relevant, suggest a realistic schedule, and ask for approval.",
            "checklist": [
              "Formal-ish workplace greeting",
              "Course + relevance to your project",
              "Realistic schedule (e.g., 2h/week, avoid release week)",
              "At least 4 connectors (zwar/aber, daher, obwohl, darüber hinaus, zusammenfassend)",
              "Clear request for approval",
              "Polite closing"
            ],
            "usefulPhrasesDe": [
              "Ich würde gern ... vorschlagen.",
              "Der Kurs ist relevant, weil ...",
              "Zwar ..., aber ...",
              "Daher halte ich ... für sinnvoll.",
              "Wäre es möglich, ...?",
              "Über eine kurze Rückmeldung würde ich mich freuen."
            ],
            "modelDe": "Guten Tag Frau/Herr [Name],\n\nich würde gern den Kurs „[Kursname]“ (Dauer: [x] Stunden) vorschlagen. Der Kurs ist relevant, weil wir im aktuellen Projekt [Thema] einsetzen und ich dadurch Aufgaben schneller und sicherer umsetzen könnte. Zwar ist die Woche vor dem Release meist sehr voll, aber wir könnten die Teilnahme so planen, dass sie in ruhigere Phasen fällt.\n\nDaher halte ich es für sinnvoll, den Kurs in zwei Einheiten pro Woche zu absolvieren. Darüber hinaus kann ich die wichtigsten Punkte anschließend im Team kurz zusammenfassen.\n\nWäre es möglich, dass Sie die Teilnahme genehmigen?\n\nMit freundlichen Grüßen\n[Name]"
          },
          {
            "type": "speaking",
            "title": "Sprechen (Speaking)",
            "tasks": [
              {
                "id": "s1",
                "promptEn": "Task 1 (60s): Summarize the reading text and name one challenge for employees.",
                "timeSec": 60,
                "framesDe": [
                  "Im Text wird beschrieben, dass ...",
                  "Ein Problem ist, dass ...",
                  "Zusammenfassend ..."
                ]
              },
              {
                "id": "s2",
                "promptEn": "Task 2 (75s): Present your proposal for one course and defend it briefly: benefit, schedule, and one compromise.",
                "timeSec": 75,
                "framesDe": [
                  "Meines Erachtens lohnt es sich, ...",
                  "Der Vorteil ist, dass ...",
                  "Daher schlage ich vor, ...",
                  "Falls es Engpässe gibt, könnte man ..."
                ]
              }
            ]
          }
        ]
      },
      {
        "id": "mini-goethe-b2-04",
        "title": "Mini Goethe B2 Simulation",
        "tagline": "Digital health, data concerns, and a balanced opinion.",
        "noteEn": "Not official. This simulation trains nuance: advantages, risks, and concrete proposals (typical B2 writing).",
        "sections": [
          {
            "type": "reading",
            "title": "Lesen (Reading)",
            "textDe": "Digitale Sprechstunden werden immer beliebter. Für viele Patienten ist es praktisch: Man spart Anfahrtswege, bekommt schneller einen Termin und kann einfache Fragen per Video klären. Gerade auf dem Land kann Telemedizin die Versorgung verbessern.\n\nGleichzeitig gibt es Kritik. Manche befürchten, dass digitale Angebote persönliche Gespräche ersetzen und Diagnosen oberflächlicher werden. Außerdem steht der Datenschutz im Fokus: Gesundheitsdaten sind sensibel, und nicht jeder vertraut Videoplattformen. Experten betonen daher, dass klare Standards nötig sind. Technik allein reicht nicht; Ärzte brauchen Zeit, und Patienten müssen verständlich informiert werden.\n\nMeines Erachtens kann Telemedizin sinnvoll sein, wenn sie als Ergänzung genutzt wird. Für akute oder komplexe Fälle bleibt der persönliche Termin entscheidend. Wichtig ist, dass Datenschutz und Qualität transparent geprüft werden.",
            "questions": [
              {
                "id": "r1",
                "questionEn": "What is one practical advantage mentioned?",
                "options": [
                  "You always get free medicine",
                  "You save travel time and get faster appointments",
                  "Doctors work less",
                  "Hospitals close"
                ],
                "answerIndex": 1,
                "explanationEn": "They mention saving travel time and faster appointments."
              },
              {
                "id": "r2",
                "questionEn": "Where can telemedicine be especially helpful?",
                "options": [
                  "Only in big cities",
                  "In rural areas (on the countryside)",
                  "Only abroad",
                  "Only in schools"
                ],
                "answerIndex": 1,
                "explanationEn": "They say: Gerade auf dem Land."
              },
              {
                "id": "r3",
                "questionEn": "What is one criticism?",
                "options": [
                  "Appointments are too slow",
                  "Personal talks may be replaced and diagnoses more superficial",
                  "There are too many parks",
                  "Rent is too high"
                ],
                "answerIndex": 1,
                "explanationEn": "They fear replacing personal talks and superficial diagnoses."
              },
              {
                "id": "r4",
                "questionEn": "What do experts emphasize?",
                "options": [
                  "No standards are needed",
                  "Clear standards and transparent information are necessary",
                  "Only technology matters",
                  "Only patients decide"
                ],
                "answerIndex": 1,
                "explanationEn": "They emphasize standards and clear information."
              },
              {
                "id": "r5",
                "questionEn": "What is the author’s position?",
                "options": [
                  "Telemedicine should replace all visits",
                  "Telemedicine is useful as an addition, but personal visits remain crucial for complex cases",
                  "Telemedicine is useless",
                  "Telemedicine is only for young people"
                ],
                "answerIndex": 1,
                "explanationEn": "They view it as an addition; personal visits remain important."
              }
            ]
          },
          {
            "type": "listening",
            "title": "Hören (Listening)",
            "scriptDe": "Guten Abend. Heute sprechen wir über die elektronische Patientenakte. Befürworter sagen: Wenn Ärzte schneller Zugriff auf relevante Informationen haben, können sie besser behandeln. Außerdem lassen sich doppelte Untersuchungen vermeiden.\n\nKritiker warnen jedoch vor Sicherheitslücken. Zwar gibt es technische Schutzmaßnahmen, aber hundertprozentige Sicherheit existiert nicht. Entscheidend ist daher, dass Patienten verstehen, wer Zugriff hat und welche Daten gespeichert werden. Transparente Einstellungen und einfache Widerspruchsmöglichkeiten sind wichtig.\n\nZusammenfassend: Die Patientenakte kann die Versorgung verbessern, aber nur mit hohen Standards und klarer Kontrolle.",
            "questions": [
              {
                "id": "l1",
                "questionEn": "What is a benefit mentioned?",
                "options": [
                  "More paper documents",
                  "Faster access to information for better treatment",
                  "Higher rent prices",
                  "Fewer doctors"
                ],
                "answerIndex": 1,
                "explanationEn": "They mention faster access to relevant info."
              },
              {
                "id": "l2",
                "questionEn": "What can be avoided?",
                "options": [
                  "Train delays",
                  "Duplicate examinations",
                  "Recycling rules",
                  "Phone calls"
                ],
                "answerIndex": 1,
                "explanationEn": "They say doppelte Untersuchungen can be avoided."
              },
              {
                "id": "l3",
                "questionEn": "What do critics warn about?",
                "options": [
                  "Security gaps",
                  "Too many nurses",
                  "Too much sunshine",
                  "Too many parks"
                ],
                "answerIndex": 0,
                "explanationEn": "They warn about Sicherheitslücken."
              },
              {
                "id": "l4",
                "questionEn": "What is considered crucial?",
                "options": [
                  "Patients understand access and data, with transparent settings and easy opt-out",
                  "No one should know anything",
                  "Only doctors decide",
                  "Only technology matters"
                ],
                "answerIndex": 0,
                "explanationEn": "They emphasize understanding, transparency, and easy opposition options."
              }
            ]
          },
          {
            "type": "writing",
            "title": "Schreiben (Writing)",
            "promptEn": "Write a formal email to your health insurance provider: express your opinion about digital health records and ask 2 concrete questions about privacy and access.",
            "checklist": [
              "Formal greeting",
              "Clear position (balanced)",
              "2 concrete questions (who has access, opt-out, security)",
              "At least 4 connectors (zwar/aber, daher, obwohl, darüber hinaus)",
              "Formal closing"
            ],
            "usefulPhrasesDe": [
              "Ich nehme Bezug auf ...",
              "Meines Erachtens ist ... sinnvoll, weil ...",
              "Zwar ..., aber ...",
              "Daher würde ich gern wissen, ...",
              "Könnten Sie mir bitte mitteilen, ...?"
            ],
            "modelDe": "Sehr geehrte Damen und Herren,\n\nich nehme Bezug auf die elektronische Patientenakte und die damit verbundenen digitalen Angebote. Meines Erachtens kann die Akte grundsätzlich sinnvoll sein, weil relevante Informationen schneller verfügbar sind. Zwar sehe ich die Vorteile, aber der Datenschutz ist für mich entscheidend.\n\nDaher hätte ich zwei Fragen: Wer genau hat Zugriff auf welche Daten, und wie kann ich die Zugriffsrechte transparent einstellen? Außerdem würde ich gern wissen, welche Möglichkeiten zum Widerspruch bzw. zur Einschränkung der Datenspeicherung bestehen.\n\nÜber eine kurze Rückmeldung würde ich mich freuen.\n\nMit freundlichen Grüßen\n[Name]"
          },
          {
            "type": "speaking",
            "title": "Sprechen (Speaking)",
            "tasks": [
              {
                "id": "s1",
                "promptEn": "Task 1 (60s): Summarize the reading: benefits and concerns of digital consultations.",
                "timeSec": 60,
                "framesDe": [
                  "Im Text geht es um ...",
                  "Ein Vorteil ist, dass ...",
                  "Kritisch ist, dass ..."
                ]
              },
              {
                "id": "s2",
                "promptEn": "Task 2 (75s): Give your opinion about the electronic patient record and propose one practical rule/standard.",
                "timeSec": 75,
                "framesDe": [
                  "Meines Erachtens ...",
                  "Einerseits ..., andererseits ...",
                  "Daher sollte ...",
                  "Zusammenfassend ..."
                ]
              }
            ]
          }
        ]
      }
    ],
    "deckCards": [
      {
        "frontDe": "Entschuldigung, ich habe eine Frage.",
        "backEn": "Excuse me, I have a question.",
        "exampleDe": "Entschuldigung, ich habe eine Frage: Wo ist Gleis 8?",
        "exampleEn": "Excuse me, I have a question: where is platform 8?",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-entschuldigung-ich-habe-eine-frage"
      },
      {
        "frontDe": "Ich hätte gern ..., bitte.",
        "backEn": "I would like ..., please. (polite order)",
        "exampleDe": "Ich hätte gern einen Cappuccino, bitte.",
        "exampleEn": "I would like a cappuccino, please.",
        "tags": [
          "speaking",
          "polite"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-ich-haette-gern-bitte"
      },
      {
        "frontDe": "Zum Mitnehmen, bitte.",
        "backEn": "To go, please.",
        "exampleDe": "Zum Mitnehmen, bitte.",
        "exampleEn": "To go, please.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-zum-mitnehmen-bitte"
      },
      {
        "frontDe": "Kann ich mit Karte zahlen?",
        "backEn": "Can I pay by card?",
        "exampleDe": "Kann ich mit Karte zahlen?",
        "exampleEn": "Can I pay by card?",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-kann-ich-mit-karte-zahlen"
      },
      {
        "frontDe": "Können Sie das bitte wiederholen?",
        "backEn": "Could you repeat that, please?",
        "exampleDe": "Können Sie das bitte wiederholen? Ich habe es nicht verstanden.",
        "exampleEn": "Could you repeat that please? I didn’t understand it.",
        "tags": [
          "speaking",
          "polite"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-koennen-sie-das-bitte-wiederholen"
      },
      {
        "frontDe": "Das macht zusammen ...",
        "backEn": "That comes to ... (total price)",
        "exampleDe": "Das macht zusammen 6 Euro 80.",
        "exampleEn": "That comes to 6 euros 80.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-das-macht-zusammen"
      },
      {
        "frontDe": "Stimmt so.",
        "backEn": "Keep the change. (lit. that’s correct)",
        "exampleDe": "Danke. Stimmt so.",
        "exampleEn": "Thanks. Keep the change.",
        "tags": [
          "speaking"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-phrase-stimmt-so"
      },
      {
        "frontDe": "Ich interessiere mich für ...",
        "backEn": "I am interested in ...",
        "exampleDe": "Ich interessiere mich für das Zimmer.",
        "exampleEn": "I am interested in the room.",
        "tags": [
          "verb-prep"
        ],
        "level": "A2",
        "domain": "society",
        "id": "dd-a2-phrase-ich-interessiere-mich-fuer"
      },
      {
        "frontDe": "Ich nehme Bezug auf ...",
        "backEn": "I am referring to ... (formal)",
        "exampleDe": "Ich nehme Bezug auf Ihr Schreiben vom 10.02.",
        "exampleEn": "I am referring to your letter from Feb 10.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-a2-phrase-ich-nehme-bezug-auf"
      },
      {
        "frontDe": "Könnte ich bitte ...?",
        "backEn": "Could I please ...? (polite request)",
        "exampleDe": "Könnte ich bitte einen Platz reservieren?",
        "exampleEn": "Could I reserve a spot, please?",
        "tags": [
          "speaking",
          "konjunktiv2"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-a2-phrase-koennte-ich-bitte"
      },
      {
        "frontDe": "Über eine Rückmeldung würde ich mich freuen.",
        "backEn": "I would appreciate a reply.",
        "exampleDe": "Über eine zeitnahe Rückmeldung würde ich mich freuen.",
        "exampleEn": "I would appreciate a timely reply.",
        "tags": [
          "writing",
          "formal",
          "konjunktiv2"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-a2-phrase-ueber-eine-rueckmeldung-wuerde-ich-mich-freuen"
      },
      {
        "frontDe": "Vielen Dank im Voraus.",
        "backEn": "Thank you in advance.",
        "exampleDe": "Vielen Dank im Voraus.",
        "exampleEn": "Thank you in advance.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B1",
        "domain": "exam",
        "id": "dd-a2-phrase-vielen-dank-im-voraus"
      },
      {
        "frontDe": "Anbei erhalten Sie ...",
        "backEn": "Attached you will find ... (formal)",
        "exampleDe": "Anbei erhalten Sie die Unterlagen.",
        "exampleEn": "Attached you will find the documents.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-a2-phrase-anbei-erhalten-sie"
      },
      {
        "frontDe": "Gern stehe ich für Rückfragen zur Verfügung.",
        "backEn": "I am happy to answer any questions.",
        "exampleDe": "Gern stehe ich für Rückfragen zur Verfügung.",
        "exampleEn": "I am happy to answer any questions.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-phrase-gern-stehe-ich-fuer-rueckfragen-zur-verfuegung"
      },
      {
        "frontDe": "Von welchem Gleis fährt der Zug?",
        "backEn": "From which platform does the train depart?",
        "exampleDe": "Entschuldigung, von welchem Gleis fährt der RE?",
        "exampleEn": "Excuse me, from which platform does the regional train depart?",
        "tags": [
          "speaking",
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-phrase-von-welchem-gleis-faehrt-der-zug"
      },
      {
        "frontDe": "Muss ich umsteigen?",
        "backEn": "Do I have to change trains?",
        "exampleDe": "Muss ich in Köln umsteigen?",
        "exampleEn": "Do I have to change trains in Cologne?",
        "tags": [
          "speaking",
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-phrase-muss-ich-umsteigen"
      },
      {
        "frontDe": "Der Zug fällt aus.",
        "backEn": "The train is cancelled.",
        "exampleDe": "Aufgrund einer Störung fällt der Zug aus.",
        "exampleEn": "Due to a disruption, the train is cancelled.",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-phrase-der-zug-faellt-aus"
      },
      {
        "frontDe": "Der Zug hat Verspätung.",
        "backEn": "The train is delayed.",
        "exampleDe": "Der ICE hat heute 35 Minuten Verspätung.",
        "exampleEn": "The ICE is delayed by 35 minutes today.",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-phrase-der-zug-hat-verspaetung"
      },
      {
        "frontDe": "Ich habe einen Termin um ...",
        "backEn": "I have an appointment at ...",
        "exampleDe": "Ich habe einen Termin um 9:30.",
        "exampleEn": "I have an appointment at 9:30.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "health",
        "id": "dd-a2-phrase-ich-habe-einen-termin-um"
      },
      {
        "frontDe": "Ich hätte gern einen Termin.",
        "backEn": "I would like an appointment. (polite)",
        "exampleDe": "Guten Tag, ich hätte gern einen Termin.",
        "exampleEn": "Hello, I would like an appointment.",
        "tags": [
          "speaking",
          "polite"
        ],
        "level": "B1",
        "domain": "health",
        "id": "dd-a2-phrase-ich-haette-gern-einen-termin"
      },
      {
        "frontDe": "Muss ich etwas mitbringen?",
        "backEn": "Do I need to bring something?",
        "exampleDe": "Muss ich etwas mitbringen? Meine Versicherungskarte?",
        "exampleEn": "Do I need to bring something? My insurance card?",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "health",
        "id": "dd-a2-phrase-muss-ich-etwas-mitbringen"
      },
      {
        "frontDe": "Ich bin heute krank.",
        "backEn": "I am sick today.",
        "exampleDe": "Ich bin heute krank und kann nicht arbeiten.",
        "exampleEn": "I am sick today and cannot work.",
        "tags": [
          "work",
          "health"
        ],
        "level": "A2",
        "domain": "work",
        "id": "dd-a2-phrase-ich-bin-heute-krank"
      },
      {
        "frontDe": "Ich brauche Hilfe.",
        "backEn": "I need help.",
        "exampleDe": "Entschuldigung, ich brauche Hilfe.",
        "exampleEn": "Excuse me, I need help.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-ich-brauche-hilfe"
      },
      {
        "frontDe": "Ich habe das nicht verstanden.",
        "backEn": "I didn’t understand that.",
        "exampleDe": "Sorry, ich habe das nicht verstanden.",
        "exampleEn": "Sorry, I didn’t understand that.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-ich-habe-das-nicht-verstanden"
      },
      {
        "frontDe": "Könnten Sie mir bitte helfen?",
        "backEn": "Could you please help me?",
        "exampleDe": "Könnten Sie mir bitte helfen? Ich finde die Abteilung nicht.",
        "exampleEn": "Could you please help me? I can’t find the department.",
        "tags": [
          "speaking",
          "polite",
          "konjunktiv2"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-phrase-koennten-sie-mir-bitte-helfen"
      },
      {
        "frontDe": "Wie bereits besprochen, ...",
        "backEn": "As discussed, ...",
        "exampleDe": "Wie bereits besprochen, sende ich Ihnen die Unterlagen.",
        "exampleEn": "As discussed, I am sending you the documents.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-phrase-wie-bereits-besprochen"
      },
      {
        "frontDe": "Im Anhang finden Sie ...",
        "backEn": "In the attachment you will find ...",
        "exampleDe": "Im Anhang finden Sie den Vertrag.",
        "exampleEn": "In the attachment you will find the contract.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-phrase-im-anhang-finden-sie"
      },
      {
        "frontDe": "Ich bedanke mich für Ihre Zeit.",
        "backEn": "Thank you for your time. (formal)",
        "exampleDe": "Ich bedanke mich für Ihre Zeit und das Gespräch.",
        "exampleEn": "Thank you for your time and the conversation.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-a2-phrase-ich-bedanke-mich-fuer-ihre-zeit"
      },
      {
        "frontDe": "Ich freue mich auf Ihre Antwort.",
        "backEn": "I look forward to your reply.",
        "exampleDe": "Ich freue mich auf Ihre Antwort.",
        "exampleEn": "I look forward to your reply.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B1",
        "domain": "exam",
        "id": "dd-a2-phrase-ich-freue-mich-auf-ihre-antwort"
      },
      {
        "frontDe": "Mit freundlichen Grüßen",
        "backEn": "Kind regards (formal closing)",
        "exampleDe": "Mit freundlichen Grüßen\n[Name]",
        "exampleEn": "Kind regards, [Name]",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "A2",
        "domain": "exam",
        "id": "dd-a2-phrase-mit-freundlichen-gruessen"
      },
      {
        "frontDe": "Viele Grüße",
        "backEn": "Best regards (friendly closing)",
        "exampleDe": "Viele Grüße\n[Name]",
        "exampleEn": "Best regards, [Name]",
        "tags": [
          "writing"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-viele-gruesse"
      },
      {
        "frontDe": "Ich bin damit einverstanden.",
        "backEn": "I agree with that.",
        "exampleDe": "Ich bin damit einverstanden, wenn wir klare Regeln haben.",
        "exampleEn": "I agree with that if we have clear rules.",
        "tags": [
          "speaking",
          "da-words"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-phrase-ich-bin-damit-einverstanden"
      },
      {
        "frontDe": "Das wäre super.",
        "backEn": "That would be great.",
        "exampleDe": "Das wäre super, danke!",
        "exampleEn": "That would be great, thanks!",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-phrase-das-waere-super"
      },
      {
        "frontDe": "Wäre es möglich, ...?",
        "backEn": "Would it be possible to ...? (very polite)",
        "exampleDe": "Wäre es möglich, die Frist zu verlängern?",
        "exampleEn": "Would it be possible to extend the deadline?",
        "tags": [
          "speaking",
          "writing",
          "konjunktiv2"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-phrase-waere-es-moeglich"
      },
      {
        "frontDe": "Ich hätte gern eine schriftliche Bestätigung.",
        "backEn": "I would like a written confirmation.",
        "exampleDe": "Ich hätte gern eine schriftliche Bestätigung der Kündigung.",
        "exampleEn": "I would like a written confirmation of the cancellation.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-a2-phrase-ich-haette-gern-eine-schriftliche-bestaetigung"
      },
      {
        "frontDe": "helfen (+ Dat.)",
        "backEn": "to help (dative)",
        "exampleDe": "Ich helfe dem Nachbarn.",
        "exampleEn": "I help the neighbor.",
        "tags": [
          "case",
          "dativ"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-verb-helfen-dat"
      },
      {
        "frontDe": "danken (+ Dat.)",
        "backEn": "to thank (someone) (dative)",
        "exampleDe": "Ich danke Ihnen für Ihre Hilfe.",
        "exampleEn": "I thank you for your help.",
        "tags": [
          "case",
          "dativ",
          "formal"
        ],
        "level": "B1",
        "domain": "exam",
        "id": "dd-a2-verb-danken-dat"
      },
      {
        "frontDe": "gehören (+ Dat.)",
        "backEn": "to belong to (dative)",
        "exampleDe": "Das gehört mir.",
        "exampleEn": "That belongs to me.",
        "tags": [
          "case",
          "dativ"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-verb-gehoeren-dat"
      },
      {
        "frontDe": "warten (auf + Akk.)",
        "backEn": "to wait (for)",
        "exampleDe": "Ich warte auf den Zug.",
        "exampleEn": "I am waiting for the train.",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-verb-warten-auf-akk"
      },
      {
        "frontDe": "denken (an + Akk.)",
        "backEn": "to think (about/of)",
        "exampleDe": "Ich denke an dich.",
        "exampleEn": "I am thinking of you.",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-verb-denken-an-akk"
      },
      {
        "frontDe": "sich erinnern (an + Akk.)",
        "backEn": "to remember",
        "exampleDe": "Kannst du dich an das Gespräch erinnern?",
        "exampleEn": "Can you remember the conversation?",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-a2-verb-sich-erinnern-an-akk"
      },
      {
        "frontDe": "sich freuen (auf + Akk.)",
        "backEn": "to look forward (to)",
        "exampleDe": "Ich freue mich auf den Termin.",
        "exampleEn": "I look forward to the appointment.",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-verb-sich-freuen-auf-akk"
      },
      {
        "frontDe": "sich freuen (über + Akk.)",
        "backEn": "to be happy (about)",
        "exampleDe": "Ich freue mich über die Nachricht.",
        "exampleEn": "I am happy about the news.",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-verb-sich-freuen-ueber-akk"
      },
      {
        "frontDe": "sich kümmern (um + Akk.)",
        "backEn": "to take care (of)",
        "exampleDe": "Ich kümmere mich um das Formular.",
        "exampleEn": "I take care of the form.",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-a2-verb-sich-kuemmern-um-akk"
      },
      {
        "frontDe": "abhängen (von + Dat.)",
        "backEn": "to depend (on)",
        "exampleDe": "Es hängt vom Wetter ab.",
        "exampleEn": "It depends on the weather.",
        "tags": [
          "verb-prep",
          "dativ"
        ],
        "level": "B2",
        "domain": "daily",
        "id": "dd-a2-verb-abhaengen-von-dat"
      },
      {
        "frontDe": "sich informieren (über + Akk.)",
        "backEn": "to inform oneself (about)",
        "exampleDe": "Ich informiere mich über die Bedingungen.",
        "exampleEn": "I’m informing myself about the conditions.",
        "tags": [
          "verb-prep",
          "exam"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-a2-verb-sich-informieren-ueber-akk"
      },
      {
        "frontDe": "verzichten (auf + Akk.)",
        "backEn": "to do without; to refrain from",
        "exampleDe": "Viele Menschen verzichten auf Plastik.",
        "exampleEn": "Many people refrain from plastic.",
        "tags": [
          "verb-prep"
        ],
        "level": "B2",
        "domain": "environment",
        "id": "dd-a2-verb-verzichten-auf-akk"
      },
      {
        "frontDe": "passen (+ Dat.)",
        "backEn": "to suit; to fit (dative)",
        "exampleDe": "Das passt mir nicht.",
        "exampleEn": "That doesn’t suit me.",
        "tags": [
          "case",
          "dativ"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-verb-passen-dat"
      },
      {
        "frontDe": "gefallen (+ Dat.)",
        "backEn": "to please; to like (dative)",
        "exampleDe": "Das gefällt mir.",
        "exampleEn": "I like that. (lit. That pleases me.)",
        "tags": [
          "case",
          "dativ"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-verb-gefallen-dat"
      },
      {
        "frontDe": "weh tun (+ Dat.)",
        "backEn": "to hurt (dative)",
        "exampleDe": "Der Kopf tut mir weh.",
        "exampleEn": "My head hurts. (lit. The head hurts me.)",
        "tags": [
          "health",
          "dativ"
        ],
        "level": "A2",
        "domain": "health",
        "id": "dd-a2-verb-weh-tun-dat"
      },
      {
        "frontDe": "schmecken (+ Dat.)",
        "backEn": "to taste good to (dative)",
        "exampleDe": "Das schmeckt mir.",
        "exampleEn": "I like the taste of that.",
        "tags": [
          "dativ",
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-verb-schmecken-dat"
      },
      {
        "frontDe": "gratulieren (zu + Dat.)",
        "backEn": "to congratulate (on)",
        "exampleDe": "Ich gratuliere dir zum Geburtstag.",
        "exampleEn": "I congratulate you on your birthday.",
        "tags": [
          "verb-prep",
          "dativ"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-verb-gratulieren-zu-dat"
      },
      {
        "frontDe": "sich anmelden (für + Akk.)",
        "backEn": "to register (for)",
        "exampleDe": "Ich melde mich für den Kurs an.",
        "exampleEn": "I am registering for the course.",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-a2-verb-sich-anmelden-fuer-akk"
      },
      {
        "frontDe": "sich entschuldigen (bei + Dat.) (für + Akk.)",
        "backEn": "to apologize (to/for)",
        "exampleDe": "Ich entschuldige mich bei Ihnen für die Verspätung.",
        "exampleEn": "I apologize to you for the delay.",
        "tags": [
          "verb-prep",
          "formal"
        ],
        "level": "B1",
        "domain": "exam",
        "id": "dd-a2-verb-sich-entschuldigen-bei-dat-fuer-akk"
      },
      {
        "frontDe": "sich bedanken (bei + Dat.) (für + Akk.)",
        "backEn": "to thank (someone for something)",
        "exampleDe": "Ich bedanke mich bei Ihnen für Ihre Zeit.",
        "exampleEn": "I thank you for your time.",
        "tags": [
          "verb-prep",
          "formal"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-verb-sich-bedanken-bei-dat-fuer-akk"
      },
      {
        "frontDe": "bitten (um + Akk.)",
        "backEn": "to ask (for)",
        "exampleDe": "Ich bitte um eine kurze Rückmeldung.",
        "exampleEn": "I ask for a brief reply.",
        "tags": [
          "verb-prep",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-a2-verb-bitten-um-akk"
      },
      {
        "frontDe": "sich vorbereiten (auf + Akk.)",
        "backEn": "to prepare (for)",
        "exampleDe": "Ich bereite mich auf die Prüfung vor.",
        "exampleEn": "I am preparing for the exam.",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-a2-verb-sich-vorbereiten-auf-akk"
      },
      {
        "frontDe": "sich konzentrieren (auf + Akk.)",
        "backEn": "to concentrate (on)",
        "exampleDe": "Ich konzentriere mich auf die Aufgabe.",
        "exampleEn": "I concentrate on the task.",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-a2-verb-sich-konzentrieren-auf-akk"
      },
      {
        "frontDe": "sprechen (mit + Dat.)",
        "backEn": "to speak (with)",
        "exampleDe": "Ich spreche mit dem Kunden.",
        "exampleEn": "I speak with the customer.",
        "tags": [
          "dativ"
        ],
        "level": "A2",
        "domain": "work",
        "id": "dd-a2-verb-sprechen-mit-dat"
      },
      {
        "frontDe": "bestehen (aus + Dat.)",
        "backEn": "to consist (of)",
        "exampleDe": "Der Kurs besteht aus acht Terminen.",
        "exampleEn": "The course consists of eight sessions.",
        "tags": [
          "verb-prep",
          "dativ"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-a2-verb-bestehen-aus-dat"
      },
      {
        "frontDe": "rechnen (mit + Dat.)",
        "backEn": "to expect; to count on",
        "exampleDe": "Wir rechnen mit einer Antwort bis Freitag.",
        "exampleEn": "We expect an answer by Friday.",
        "tags": [
          "verb-prep",
          "dativ"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-verb-rechnen-mit-dat"
      },
      {
        "frontDe": "sich verlassen (auf + Akk.)",
        "backEn": "to rely (on)",
        "exampleDe": "Man kann sich nicht immer auf das System verlassen.",
        "exampleEn": "You can’t always rely on the system.",
        "tags": [
          "verb-prep",
          "akkusativ"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-verb-sich-verlassen-auf-akk"
      },
      {
        "frontDe": "das Gleis",
        "backEn": "platform (track)",
        "exampleDe": "Von welchem Gleis fährt der Zug?",
        "exampleEn": "From which platform does the train depart?",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-noun-das-gleis"
      },
      {
        "frontDe": "die Verspätung",
        "backEn": "delay",
        "exampleDe": "Der Zug hat Verspätung.",
        "exampleEn": "The train is delayed.",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-noun-die-verspaetung"
      },
      {
        "frontDe": "der Umstieg",
        "backEn": "transfer (change trains)",
        "exampleDe": "In Köln ist ein Umstieg nötig.",
        "exampleEn": "In Cologne a transfer is needed.",
        "tags": [
          "travel"
        ],
        "level": "B1",
        "domain": "travel",
        "id": "dd-a2-noun-der-umstieg"
      },
      {
        "frontDe": "die Besichtigung",
        "backEn": "viewing (apartment/WG)",
        "exampleDe": "Wann können wir zur Besichtigung kommen?",
        "exampleEn": "When can we come for the viewing?",
        "tags": [
          "housing"
        ],
        "level": "A2",
        "domain": "society",
        "id": "dd-a2-noun-die-besichtigung"
      },
      {
        "frontDe": "die Warmmiete",
        "backEn": "rent incl. utilities",
        "exampleDe": "Wie hoch ist die Warmmiete?",
        "exampleEn": "How much is the rent including utilities?",
        "tags": [
          "housing"
        ],
        "level": "B1",
        "domain": "society",
        "id": "dd-a2-noun-die-warmmiete"
      },
      {
        "frontDe": "die Kündigungsfrist",
        "backEn": "notice period (cancellation)",
        "exampleDe": "Die Kündigungsfrist beträgt vier Wochen.",
        "exampleEn": "The notice period is four weeks.",
        "tags": [
          "formal"
        ],
        "level": "B1",
        "domain": "exam",
        "id": "dd-a2-noun-die-kuendigungsfrist"
      },
      {
        "frontDe": "die Mitgliedschaft",
        "backEn": "membership",
        "exampleDe": "Ich möchte meine Mitgliedschaft kündigen.",
        "exampleEn": "I want to cancel my membership.",
        "tags": [
          "daily"
        ],
        "level": "A2",
        "domain": "health",
        "id": "dd-a2-noun-die-mitgliedschaft"
      },
      {
        "frontDe": "die Bewerbung",
        "backEn": "job application",
        "exampleDe": "Vielen Dank für Ihre Bewerbung.",
        "exampleEn": "Thank you for your application.",
        "tags": [
          "work",
          "formal"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-a2-noun-die-bewerbung"
      },
      {
        "frontDe": "das Vorstellungsgespräch",
        "backEn": "job interview",
        "exampleDe": "Ich hatte gestern ein Vorstellungsgespräch.",
        "exampleEn": "I had a job interview yesterday.",
        "tags": [
          "work"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-a2-noun-das-vorstellungsgespraech"
      },
      {
        "frontDe": "die Hausordnung",
        "backEn": "house rules",
        "exampleDe": "Ich nehme Bezug auf die Hausordnung.",
        "exampleEn": "I am referring to the house rules.",
        "tags": [
          "formal"
        ],
        "level": "B2",
        "domain": "society",
        "id": "dd-a2-noun-die-hausordnung"
      },
      {
        "frontDe": "die Rückmeldung",
        "backEn": "reply; feedback (formal)",
        "exampleDe": "Über eine Rückmeldung würde ich mich freuen.",
        "exampleEn": "I would appreciate a reply.",
        "tags": [
          "formal",
          "writing"
        ],
        "level": "B1",
        "domain": "exam",
        "id": "dd-a2-noun-die-rueckmeldung"
      },
      {
        "frontDe": "die Anregung",
        "backEn": "suggestion (formal)",
        "exampleDe": "Wir freuen uns über Ihre Anregungen.",
        "exampleEn": "We appreciate your suggestions.",
        "tags": [
          "formal"
        ],
        "level": "B2",
        "domain": "politics",
        "id": "dd-a2-noun-die-anregung"
      },
      {
        "frontDe": "die Mülltrennung",
        "backEn": "waste separation",
        "exampleDe": "Mülltrennung ist in Deutschland wichtig.",
        "exampleEn": "Waste separation is important in Germany.",
        "tags": [
          "environment"
        ],
        "level": "B1",
        "domain": "environment",
        "id": "dd-a2-noun-die-muelltrennung"
      },
      {
        "frontDe": "die Sammelstelle",
        "backEn": "collection point",
        "exampleDe": "Die Stadt plant neue Sammelstellen.",
        "exampleEn": "The city plans new collection points.",
        "tags": [
          "politics"
        ],
        "level": "B2",
        "domain": "politics",
        "id": "dd-a2-noun-die-sammelstelle"
      },
      {
        "frontDe": "die Durchsage",
        "backEn": "announcement (train station)",
        "exampleDe": "Die Durchsage war schwer zu verstehen.",
        "exampleEn": "The announcement was hard to understand.",
        "tags": [
          "travel"
        ],
        "level": "B1",
        "domain": "travel",
        "id": "dd-a2-noun-die-durchsage"
      },
      {
        "frontDe": "der Anschluss",
        "backEn": "connection (train/bus)",
        "exampleDe": "Ich habe den Anschluss verpasst.",
        "exampleEn": "I missed the connection.",
        "tags": [
          "travel"
        ],
        "level": "B1",
        "domain": "travel",
        "id": "dd-a2-noun-der-anschluss"
      },
      {
        "frontDe": "die Fahrkarte",
        "backEn": "ticket",
        "exampleDe": "Haben Sie eine Fahrkarte?",
        "exampleEn": "Do you have a ticket?",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-noun-die-fahrkarte"
      },
      {
        "frontDe": "die Reservierung",
        "backEn": "reservation",
        "exampleDe": "Ich habe eine Reservierung für zwei Personen.",
        "exampleEn": "I have a reservation for two people.",
        "tags": [
          "travel",
          "daily"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-noun-die-reservierung"
      },
      {
        "frontDe": "die Störung",
        "backEn": "disruption; technical problem",
        "exampleDe": "Aufgrund einer technischen Störung fällt der Zug aus.",
        "exampleEn": "Due to a technical problem, the train is cancelled.",
        "tags": [
          "travel"
        ],
        "level": "B1",
        "domain": "travel",
        "id": "dd-a2-noun-die-stoerung"
      },
      {
        "frontDe": "die Abfahrt",
        "backEn": "departure",
        "exampleDe": "Die Abfahrt ist um 15:42.",
        "exampleEn": "Departure is at 15:42.",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-noun-die-abfahrt"
      },
      {
        "frontDe": "die Ankunft",
        "backEn": "arrival",
        "exampleDe": "Die Ankunft ist um 18:10.",
        "exampleEn": "Arrival is at 18:10.",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-noun-die-ankunft"
      },
      {
        "frontDe": "der Fahrplan",
        "backEn": "timetable; schedule",
        "exampleDe": "Im Fahrplan steht die Abfahrtzeit.",
        "exampleEn": "The departure time is in the timetable.",
        "tags": [
          "travel"
        ],
        "level": "B1",
        "domain": "travel",
        "id": "dd-a2-noun-der-fahrplan"
      },
      {
        "frontDe": "das Gepäck",
        "backEn": "luggage",
        "exampleDe": "Wo kann ich mein Gepäck abstellen?",
        "exampleEn": "Where can I put my luggage?",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-noun-das-gepaeck"
      },
      {
        "frontDe": "der Schalter",
        "backEn": "counter (service desk)",
        "exampleDe": "Der Schalter ist dort drüben.",
        "exampleEn": "The counter is over there.",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-noun-der-schalter"
      },
      {
        "frontDe": "die Versicherungskarte",
        "backEn": "insurance card",
        "exampleDe": "Bitte bringen Sie Ihre Versicherungskarte mit.",
        "exampleEn": "Please bring your insurance card.",
        "tags": [
          "health"
        ],
        "level": "A2",
        "domain": "health",
        "id": "dd-a2-noun-die-versicherungskarte"
      },
      {
        "frontDe": "das Fieber",
        "backEn": "fever",
        "exampleDe": "Ich habe Fieber.",
        "exampleEn": "I have a fever.",
        "tags": [
          "health"
        ],
        "level": "A2",
        "domain": "health",
        "id": "dd-a2-noun-das-fieber"
      },
      {
        "frontDe": "die Halsschmerzen (Pl.)",
        "backEn": "sore throat",
        "exampleDe": "Ich habe starke Halsschmerzen.",
        "exampleEn": "I have a bad sore throat.",
        "tags": [
          "health"
        ],
        "level": "A2",
        "domain": "health",
        "id": "dd-a2-noun-die-halsschmerzen-pl"
      },
      {
        "frontDe": "der Husten",
        "backEn": "cough",
        "exampleDe": "Haben Sie auch Husten?",
        "exampleEn": "Do you also have a cough?",
        "tags": [
          "health"
        ],
        "level": "A2",
        "domain": "health",
        "id": "dd-a2-noun-der-husten"
      },
      {
        "frontDe": "die Praxis",
        "backEn": "doctor’s office; clinic",
        "exampleDe": "Ich habe einen Termin in der Praxis.",
        "exampleEn": "I have an appointment at the clinic.",
        "tags": [
          "health"
        ],
        "level": "A2",
        "domain": "health",
        "id": "dd-a2-noun-die-praxis"
      },
      {
        "frontDe": "das Rezept",
        "backEn": "prescription",
        "exampleDe": "Brauche ich ein Rezept?",
        "exampleEn": "Do I need a prescription?",
        "tags": [
          "health"
        ],
        "level": "B1",
        "domain": "health",
        "id": "dd-a2-noun-das-rezept"
      },
      {
        "frontDe": "die Krankschreibung (AU)",
        "backEn": "sick note (doctor’s note)",
        "exampleDe": "Ich schicke die AU an die Personalabteilung.",
        "exampleEn": "I’ll send the sick note to HR.",
        "tags": [
          "work",
          "health"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-a2-noun-die-krankschreibung-au"
      },
      {
        "frontDe": "die Nebenwirkung",
        "backEn": "side effect",
        "exampleDe": "Gibt es Nebenwirkungen?",
        "exampleEn": "Are there side effects?",
        "tags": [
          "health"
        ],
        "level": "B2",
        "domain": "health",
        "id": "dd-a2-noun-die-nebenwirkung"
      },
      {
        "frontDe": "der Notfall",
        "backEn": "emergency",
        "exampleDe": "Das ist ein Notfall.",
        "exampleEn": "This is an emergency.",
        "tags": [
          "health"
        ],
        "level": "B1",
        "domain": "health",
        "id": "dd-a2-noun-der-notfall"
      },
      {
        "frontDe": "die Anmeldung",
        "backEn": "registration; sign-up",
        "exampleDe": "Die Anmeldung ist online möglich.",
        "exampleEn": "Registration is possible online.",
        "tags": [
          "education"
        ],
        "level": "A2",
        "domain": "education",
        "id": "dd-a2-noun-die-anmeldung"
      },
      {
        "frontDe": "die Gebühr",
        "backEn": "fee",
        "exampleDe": "Die Gebühr beträgt 20 Euro.",
        "exampleEn": "The fee is 20 euros.",
        "tags": [
          "education",
          "politics"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-a2-noun-die-gebuehr"
      },
      {
        "frontDe": "die Teilnahme",
        "backEn": "participation",
        "exampleDe": "Die Teilnahme ist kostenlos.",
        "exampleEn": "Participation is free.",
        "tags": [
          "education"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-a2-noun-die-teilnahme"
      },
      {
        "frontDe": "die Hausaufgabe",
        "backEn": "homework",
        "exampleDe": "Ich habe meine Hausaufgaben gemacht.",
        "exampleEn": "I did my homework.",
        "tags": [
          "education"
        ],
        "level": "A2",
        "domain": "education",
        "id": "dd-a2-noun-die-hausaufgabe"
      },
      {
        "frontDe": "die Prüfung",
        "backEn": "exam",
        "exampleDe": "Die Prüfung ist nächste Woche.",
        "exampleEn": "The exam is next week.",
        "tags": [
          "education"
        ],
        "level": "A2",
        "domain": "education",
        "id": "dd-a2-noun-die-pruefung"
      },
      {
        "frontDe": "der Anhang",
        "backEn": "attachment (email)",
        "exampleDe": "Im Anhang finden Sie die Unterlagen.",
        "exampleEn": "In the attachment you will find the documents.",
        "tags": [
          "work",
          "writing"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-a2-noun-der-anhang"
      },
      {
        "frontDe": "die Unterlagen (Pl.)",
        "backEn": "documents; papers",
        "exampleDe": "Bitte schicken Sie mir die Unterlagen.",
        "exampleEn": "Please send me the documents.",
        "tags": [
          "work",
          "formal"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-a2-noun-die-unterlagen-pl"
      },
      {
        "frontDe": "die Abteilung",
        "backEn": "department",
        "exampleDe": "Ich arbeite in der IT-Abteilung.",
        "exampleEn": "I work in the IT department.",
        "tags": [
          "work"
        ],
        "level": "A2",
        "domain": "work",
        "id": "dd-a2-noun-die-abteilung"
      },
      {
        "frontDe": "die Führungskraft",
        "backEn": "manager; supervisor",
        "exampleDe": "Bitte melden Sie sich bei Ihrer Führungskraft.",
        "exampleEn": "Please report to your manager.",
        "tags": [
          "work",
          "formal"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-noun-die-fuehrungskraft"
      },
      {
        "frontDe": "die Rückfrage",
        "backEn": "follow-up question",
        "exampleDe": "Ich hätte noch eine Rückfrage.",
        "exampleEn": "I have one more follow-up question.",
        "tags": [
          "work"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-a2-noun-die-rueckfrage"
      },
      {
        "frontDe": "der Mietvertrag",
        "backEn": "rental contract",
        "exampleDe": "Wann unterschreiben wir den Mietvertrag?",
        "exampleEn": "When do we sign the rental contract?",
        "tags": [
          "housing"
        ],
        "level": "B1",
        "domain": "society",
        "id": "dd-a2-noun-der-mietvertrag"
      },
      {
        "frontDe": "die Kaution",
        "backEn": "deposit (rental)",
        "exampleDe": "Die Kaution beträgt zwei Monatsmieten.",
        "exampleEn": "The deposit is two months’ rent.",
        "tags": [
          "housing"
        ],
        "level": "B1",
        "domain": "society",
        "id": "dd-a2-noun-die-kaution"
      },
      {
        "frontDe": "die Nebenkosten (Pl.)",
        "backEn": "utilities / additional costs",
        "exampleDe": "Sind die Nebenkosten in der Warmmiete enthalten?",
        "exampleEn": "Are utilities included in the warm rent?",
        "tags": [
          "housing"
        ],
        "level": "B2",
        "domain": "society",
        "id": "dd-a2-noun-die-nebenkosten-pl"
      },
      {
        "frontDe": "die Hausverwaltung",
        "backEn": "property management",
        "exampleDe": "Die Hausverwaltung hat geantwortet.",
        "exampleEn": "The property management replied.",
        "tags": [
          "housing",
          "formal"
        ],
        "level": "B2",
        "domain": "society",
        "id": "dd-a2-noun-die-hausverwaltung"
      },
      {
        "frontDe": "die Mieterhöhung",
        "backEn": "rent increase",
        "exampleDe": "Wir informieren Sie über eine Mieterhöhung.",
        "exampleEn": "We inform you about a rent increase.",
        "tags": [
          "housing",
          "formal"
        ],
        "level": "B2",
        "domain": "society",
        "id": "dd-a2-noun-die-mieterhoehung"
      },
      {
        "frontDe": "der Lärm",
        "backEn": "noise",
        "exampleDe": "Ich möchte mich über den Lärm beschweren.",
        "exampleEn": "I would like to complain about the noise.",
        "tags": [
          "society"
        ],
        "level": "B1",
        "domain": "society",
        "id": "dd-a2-noun-der-laerm"
      },
      {
        "frontDe": "die Ruhezeit",
        "backEn": "quiet hours",
        "exampleDe": "Die Ruhezeit beginnt um 22 Uhr.",
        "exampleEn": "Quiet hours start at 10 pm.",
        "tags": [
          "society"
        ],
        "level": "B2",
        "domain": "society",
        "id": "dd-a2-noun-die-ruhezeit"
      },
      {
        "frontDe": "die Abmahnung",
        "backEn": "formal warning",
        "exampleDe": "Bei Verstößen kann es eine Abmahnung geben.",
        "exampleEn": "In case of violations, there can be a formal warning.",
        "tags": [
          "formal"
        ],
        "level": "B2",
        "domain": "society",
        "id": "dd-a2-noun-die-abmahnung"
      },
      {
        "frontDe": "die Warteschlange",
        "backEn": "queue; line",
        "exampleDe": "Im Eingangsbereich war eine lange Warteschlange.",
        "exampleEn": "There was a long line at the entrance.",
        "tags": [
          "daily"
        ],
        "level": "B1",
        "domain": "culture",
        "id": "dd-a2-noun-die-warteschlange"
      },
      {
        "frontDe": "die Öffnungszeiten (Pl.)",
        "backEn": "opening hours",
        "exampleDe": "Wie sind die Öffnungszeiten?",
        "exampleEn": "What are the opening hours?",
        "tags": [
          "daily"
        ],
        "level": "A2",
        "domain": "culture",
        "id": "dd-a2-noun-die-oeffnungszeiten-pl"
      },
      {
        "frontDe": "der Eintritt",
        "backEn": "admission; entry fee",
        "exampleDe": "Wie viel kostet der Eintritt?",
        "exampleEn": "How much is admission?",
        "tags": [
          "daily"
        ],
        "level": "A2",
        "domain": "culture",
        "id": "dd-a2-noun-der-eintritt"
      },
      {
        "frontDe": "die Ausnahme",
        "backEn": "exception",
        "exampleDe": "Es gibt Ausnahmen für bestimmte Gruppen.",
        "exampleEn": "There are exceptions for certain groups.",
        "tags": [
          "politics"
        ],
        "level": "B2",
        "domain": "politics",
        "id": "dd-a2-noun-die-ausnahme"
      },
      {
        "frontDe": "die Kontrolle",
        "backEn": "inspection; control",
        "exampleDe": "Wichtig sind konsequente Kontrollen.",
        "exampleEn": "Consistent inspections are important.",
        "tags": [
          "politics"
        ],
        "level": "B2",
        "domain": "politics",
        "id": "dd-a2-noun-die-kontrolle"
      },
      {
        "frontDe": "die Regel",
        "backEn": "rule",
        "exampleDe": "Wir brauchen klare Regeln.",
        "exampleEn": "We need clear rules.",
        "tags": [
          "politics"
        ],
        "level": "A2",
        "domain": "politics",
        "id": "dd-a2-noun-die-regel"
      },
      {
        "frontDe": "deshalb",
        "backEn": "therefore; that’s why",
        "exampleDe": "Ich bin krank, deshalb bleibe ich zu Hause.",
        "exampleEn": "I’m sick, that’s why I stay home.",
        "tags": [
          "connector"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-b1-conn-deshalb"
      },
      {
        "frontDe": "allerdings",
        "backEn": "however; though",
        "exampleDe": "Das klingt gut, allerdings ist es teuer.",
        "exampleEn": "That sounds good, however it’s expensive.",
        "tags": [
          "connector",
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b1-conn-allerdings"
      },
      {
        "frontDe": "zudem",
        "backEn": "moreover; additionally",
        "exampleDe": "Zudem sollten wir einen Plan B vorbereiten.",
        "exampleEn": "Moreover, we should prepare a plan B.",
        "tags": [
          "connector",
          "writing"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-b1-conn-zudem"
      },
      {
        "frontDe": "insbesondere",
        "backEn": "especially; in particular",
        "exampleDe": "Insbesondere am Wochenende ist es voll.",
        "exampleEn": "Especially on weekends it is crowded.",
        "tags": [
          "writing"
        ],
        "level": "B2",
        "domain": "daily",
        "id": "dd-b1-conn-insbesondere"
      },
      {
        "frontDe": "statt",
        "backEn": "instead of",
        "exampleDe": "Wir brauchen Regeln statt ein komplettes Verbot.",
        "exampleEn": "We need rules instead of a complete ban.",
        "tags": [
          "connector"
        ],
        "level": "B1",
        "domain": "politics",
        "id": "dd-b1-conn-statt"
      },
      {
        "frontDe": "sofern",
        "backEn": "provided that; if",
        "exampleDe": "Wir releasen am Dienstag, sofern die Tests grün sind.",
        "exampleEn": "We release on Tuesday provided the tests are green.",
        "tags": [
          "connector",
          "exam"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b1-conn-sofern"
      },
      {
        "frontDe": "zum Beispiel",
        "backEn": "for example",
        "exampleDe": "Zum Beispiel könnten wir die Regeln klarer machen.",
        "exampleEn": "For example, we could make the rules clearer.",
        "tags": [
          "connector"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-b1-conn-zum-beispiel"
      },
      {
        "frontDe": "außerdem",
        "backEn": "besides; furthermore",
        "exampleDe": "Außerdem sollten wir die Kosten prüfen.",
        "exampleEn": "Besides, we should check the costs.",
        "tags": [
          "connector"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-b1-conn-ausserdem"
      },
      {
        "frontDe": "dennoch",
        "backEn": "nevertheless",
        "exampleDe": "Dennoch halte ich den Vorschlag für sinnvoll.",
        "exampleEn": "Nevertheless, I consider the proposal sensible.",
        "tags": [
          "connector",
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b1-conn-dennoch"
      },
      {
        "frontDe": "hingegen",
        "backEn": "in contrast; whereas",
        "exampleDe": "Die Idee ist gut, die Umsetzung hingegen ist schwierig.",
        "exampleEn": "The idea is good; the implementation, in contrast, is difficult.",
        "tags": [
          "connector",
          "writing"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b1-conn-hingegen"
      },
      {
        "frontDe": "folglich",
        "backEn": "consequently; as a result",
        "exampleDe": "Die Frist ist abgelaufen, folglich brauchen wir einen neuen Plan.",
        "exampleEn": "The deadline has passed; consequently we need a new plan.",
        "tags": [
          "connector",
          "writing"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b1-conn-folglich"
      },
      {
        "frontDe": "unter anderem",
        "backEn": "among other things",
        "exampleDe": "Unter anderem geht es um Kosten und Qualität.",
        "exampleEn": "Among other things, it is about costs and quality.",
        "tags": [
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b1-conn-unter-anderem"
      },
      {
        "frontDe": "im Gegensatz dazu",
        "backEn": "in contrast to that",
        "exampleDe": "Im Gegensatz dazu ist die zweite Option günstiger.",
        "exampleEn": "In contrast to that, the second option is cheaper.",
        "tags": [
          "connector",
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b1-conn-im-gegensatz-dazu"
      },
      {
        "frontDe": "damit (+ Nebensatz)",
        "backEn": "so that; in order that",
        "exampleDe": "Ich erkläre es langsam, damit du alles verstehst.",
        "exampleEn": "I explain it slowly so that you understand everything.",
        "tags": [
          "connector",
          "grammar"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-b1-conn-damit-nebensatz"
      },
      {
        "frontDe": "falls",
        "backEn": "in case; if",
        "exampleDe": "Falls du Fragen hast, schreib mir.",
        "exampleEn": "In case you have questions, write to me.",
        "tags": [
          "connector"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-b1-conn-falls"
      },
      {
        "frontDe": "sobald",
        "backEn": "as soon as",
        "exampleDe": "Sobald ich Zeit habe, melde ich mich.",
        "exampleEn": "As soon as I have time, I’ll get back to you.",
        "tags": [
          "connector"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-b1-conn-sobald"
      },
      {
        "frontDe": "währenddessen",
        "backEn": "meanwhile",
        "exampleDe": "Ich telefoniere, währenddessen kannst du schon anfangen.",
        "exampleEn": "I’m on the phone; meanwhile you can already start.",
        "tags": [
          "connector"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b1-conn-waehrenddessen"
      },
      {
        "frontDe": "zum einen ... zum anderen",
        "backEn": "for one thing ... for another",
        "exampleDe": "Zum einen spart es Zeit, zum anderen ist es flexibler.",
        "exampleEn": "For one thing it saves time; for another it is more flexible.",
        "tags": [
          "connector",
          "argumentation"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b1-conn-zum-einen-zum-anderen"
      },
      {
        "frontDe": "tatsächlich",
        "backEn": "actually; in fact",
        "exampleDe": "Tatsächlich ist das Problem größer als gedacht.",
        "exampleEn": "In fact, the problem is bigger than expected.",
        "tags": [
          "speaking",
          "writing"
        ],
        "level": "B2",
        "domain": "daily",
        "id": "dd-b1-conn-tatsaechlich"
      },
      {
        "frontDe": "Ich bin umgezogen.",
        "backEn": "I moved.",
        "exampleDe": "Ich bin umgezogen und muss mich anmelden.",
        "exampleEn": "I moved and need to register.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-ich-bin-umgezogen"
      },
      {
        "frontDe": "Ich möchte mich anmelden.",
        "backEn": "I would like to register (my address).",
        "exampleDe": "Ich möchte mich beim Bürgeramt anmelden.",
        "exampleEn": "I would like to register at the citizens’ office.",
        "tags": [
          "speaking",
          "formal"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-ich-moechte-mich-anmelden"
      },
      {
        "frontDe": "Ich brauche einen Termin.",
        "backEn": "I need an appointment.",
        "exampleDe": "Ich brauche einen Termin zur Anmeldung.",
        "exampleEn": "I need an appointment for registration.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-ich-brauche-einen-termin"
      },
      {
        "frontDe": "Ich hätte gern einen Termin zur Anmeldung.",
        "backEn": "I would like an appointment for registration.",
        "exampleDe": "Ich hätte gern einen Termin zur Anmeldung, bitte.",
        "exampleEn": "I would like an appointment for registration, please.",
        "tags": [
          "speaking",
          "polite"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-ich-haette-gern-einen-termin-zur-anmeldung"
      },
      {
        "frontDe": "Welche Unterlagen brauche ich?",
        "backEn": "Which documents do I need?",
        "exampleDe": "Welche Unterlagen brauche ich für den Termin?",
        "exampleEn": "Which documents do I need for the appointment?",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-welche-unterlagen-brauche-ich"
      },
      {
        "frontDe": "Ich habe die Wohnungsgeberbestätigung dabei.",
        "backEn": "I have the landlord confirmation with me.",
        "exampleDe": "Ich habe die Wohnungsgeberbestätigung dabei.",
        "exampleEn": "I have the landlord confirmation with me.",
        "tags": [
          "speaking",
          "admin"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-admin-ich-habe-die-wohnungsgeberbestaetigung-dabei"
      },
      {
        "frontDe": "Hier ist mein Ausweis.",
        "backEn": "Here is my ID.",
        "exampleDe": "Hier ist mein Ausweis.",
        "exampleEn": "Here is my ID.",
        "tags": [
          "speaking",
          "admin"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-hier-ist-mein-ausweis"
      },
      {
        "frontDe": "Meine Adresse ist ...",
        "backEn": "My address is ...",
        "exampleDe": "Meine Adresse ist Musterstraße 12.",
        "exampleEn": "My address is 12 Example Street.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-meine-adresse-ist"
      },
      {
        "frontDe": "Könnten Sie mir das schriftlich bestätigen?",
        "backEn": "Could you confirm that in writing?",
        "exampleDe": "Könnten Sie mir den Termin bitte schriftlich bestätigen?",
        "exampleEn": "Could you confirm the appointment in writing?",
        "tags": [
          "writing",
          "polite",
          "formal"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-admin-koennten-sie-mir-das-schriftlich-bestaetigen"
      },
      {
        "frontDe": "Ich habe eine Frage zur Rechnung.",
        "backEn": "I have a question about the bill/invoice.",
        "exampleDe": "Ich habe eine Frage zur Rechnung Nr. 1234.",
        "exampleEn": "I have a question about invoice no. 1234.",
        "tags": [
          "speaking",
          "writing",
          "formal"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-ich-habe-eine-frage-zur-rechnung"
      },
      {
        "frontDe": "Der Betrag ist höher als sonst.",
        "backEn": "The amount is higher than usual.",
        "exampleDe": "Der Betrag ist deutlich höher als sonst.",
        "exampleEn": "The amount is significantly higher than usual.",
        "tags": [
          "writing"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-admin-der-betrag-ist-hoeher-als-sonst"
      },
      {
        "frontDe": "Ich bitte um eine Korrektur der Rechnung.",
        "backEn": "I request a correction of the bill.",
        "exampleDe": "Ich bitte um eine Korrektur der Rechnung.",
        "exampleEn": "I request a correction of the bill.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-a2-admin-ich-bitte-um-eine-korrektur-der-rechnung"
      },
      {
        "frontDe": "Haben Sie einen aktuellen Zählerstand?",
        "backEn": "Do you have a current meter reading?",
        "exampleDe": "Haben Sie einen aktuellen Zählerstand?",
        "exampleEn": "Do you have a current meter reading?",
        "tags": [
          "speaking",
          "formal"
        ],
        "level": "B1",
        "domain": "environment",
        "id": "dd-a2-admin-haben-sie-einen-aktuellen-zaehlerstand"
      },
      {
        "frontDe": "Der Zählerstand beträgt ...",
        "backEn": "The meter reading is ...",
        "exampleDe": "Der Zählerstand beträgt 18452.",
        "exampleEn": "The meter reading is 18452.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B1",
        "domain": "environment",
        "id": "dd-a2-admin-der-zaehlerstand-betraegt"
      },
      {
        "frontDe": "Wie lange dauert das ungefähr?",
        "backEn": "How long does that take approximately?",
        "exampleDe": "Wie lange dauert das ungefähr?",
        "exampleEn": "How long does that take approximately?",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-wie-lange-dauert-das-ungefaehr"
      },
      {
        "frontDe": "Ich habe seit gestern kein Internet mehr.",
        "backEn": "I have had no internet since yesterday.",
        "exampleDe": "Ich habe seit gestern kein Internet mehr.",
        "exampleEn": "I have had no internet since yesterday.",
        "tags": [
          "speaking",
          "tech"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-ich-habe-seit-gestern-kein-internet-mehr"
      },
      {
        "frontDe": "Ich habe den Router neu gestartet.",
        "backEn": "I restarted the router.",
        "exampleDe": "Ich habe den Router neu gestartet, aber es funktioniert nicht.",
        "exampleEn": "I restarted the router, but it does not work.",
        "tags": [
          "speaking",
          "tech"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-ich-habe-den-router-neu-gestartet"
      },
      {
        "frontDe": "Das DSL-Licht blinkt.",
        "backEn": "The DSL light is blinking.",
        "exampleDe": "Das DSL-Licht blinkt die ganze Zeit.",
        "exampleEn": "The DSL light keeps blinking.",
        "tags": [
          "speaking",
          "tech"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-admin-das-dsl-licht-blinkt"
      },
      {
        "frontDe": "Können Sie einen Techniker schicken?",
        "backEn": "Can you send a technician?",
        "exampleDe": "Können Sie bitte einen Techniker schicken?",
        "exampleEn": "Can you please send a technician?",
        "tags": [
          "speaking",
          "polite"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-koennen-sie-einen-techniker-schicken"
      },
      {
        "frontDe": "Donnerstag zwischen 16 und 18 Uhr passt mir.",
        "backEn": "Thursday between 4 and 6 pm works for me.",
        "exampleDe": "Donnerstag zwischen 16 und 18 Uhr passt mir gut.",
        "exampleEn": "Thursday between 4 and 6 pm works well for me.",
        "tags": [
          "speaking"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-admin-donnerstag-zwischen-16-und-18-uhr-passt-mir"
      },
      {
        "frontDe": "Ich hätte gern einen Bibliotheksausweis.",
        "backEn": "I would like a library card.",
        "exampleDe": "Ich hätte gern einen Bibliotheksausweis.",
        "exampleEn": "I would like a library card.",
        "tags": [
          "speaking",
          "polite"
        ],
        "level": "A2",
        "domain": "education",
        "id": "dd-a2-admin-ich-haette-gern-einen-bibliotheksausweis"
      },
      {
        "frontDe": "Ich würde gern das Buch reservieren.",
        "backEn": "I would like to reserve the book.",
        "exampleDe": "Ich würde gern das Buch reservieren, bitte.",
        "exampleEn": "I would like to reserve the book, please.",
        "tags": [
          "speaking",
          "writing",
          "polite"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-a2-admin-ich-wuerde-gern-das-buch-reservieren"
      },
      {
        "frontDe": "Wie hoch ist die Gebühr?",
        "backEn": "How high is the fee?",
        "exampleDe": "Wie hoch ist die Gebühr pro Jahr?",
        "exampleEn": "How high is the fee per year?",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "daily",
        "id": "dd-a2-admin-wie-hoch-ist-die-gebuehr"
      },
      {
        "frontDe": "Kann ich die Leihfrist online verlängern?",
        "backEn": "Can I extend the loan period online?",
        "exampleDe": "Kann ich die Leihfrist online verlängern?",
        "exampleEn": "Can I extend the loan period online?",
        "tags": [
          "speaking"
        ],
        "level": "B1",
        "domain": "education",
        "id": "dd-a2-admin-kann-ich-die-leihfrist-online-verlaengern"
      },
      {
        "frontDe": "Leider ist es sehr laut.",
        "backEn": "Unfortunately it is very loud.",
        "exampleDe": "Leider ist es hier sehr laut.",
        "exampleEn": "Unfortunately it is very loud here.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-admin-leider-ist-es-sehr-laut"
      },
      {
        "frontDe": "Ich kann kaum schlafen.",
        "backEn": "I can hardly sleep.",
        "exampleDe": "Ich kann kaum schlafen.",
        "exampleEn": "I can hardly sleep.",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-admin-ich-kann-kaum-schlafen"
      },
      {
        "frontDe": "Gibt es ein ruhigeres Zimmer?",
        "backEn": "Is there a quieter room?",
        "exampleDe": "Gibt es ein ruhigeres Zimmer im Innenhof?",
        "exampleEn": "Is there a quieter room in the courtyard?",
        "tags": [
          "speaking"
        ],
        "level": "A2",
        "domain": "travel",
        "id": "dd-a2-admin-gibt-es-ein-ruhigeres-zimmer"
      },
      {
        "frontDe": "Wir haben vereinbart, dass ...",
        "backEn": "We agreed that ...",
        "exampleDe": "Wir haben vereinbart, dass ich morgen umziehe.",
        "exampleEn": "We agreed that I will move tomorrow.",
        "tags": [
          "writing",
          "work"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-a2-admin-wir-haben-vereinbart-dass"
      },
      {
        "frontDe": "Ich möchte einen Termin verschieben.",
        "backEn": "I would like to reschedule an appointment.",
        "exampleDe": "Ich möchte meinen Termin verschieben.",
        "exampleEn": "I would like to reschedule my appointment.",
        "tags": [
          "speaking",
          "polite"
        ],
        "level": "B1",
        "domain": "daily",
        "id": "dd-a2-admin-ich-moechte-einen-termin-verschieben"
      },
      {
        "frontDe": "Ich nehme Bezug auf Ihr Schreiben vom ...",
        "backEn": "I refer to your letter/email dated ...",
        "exampleDe": "Ich nehme Bezug auf Ihr Schreiben vom 12.03.",
        "exampleEn": "I refer to your letter of March 12.",
        "tags": [
          "writing",
          "formal",
          "exam"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-ich-nehme-bezug-auf-ihr-schreiben-vom"
      },
      {
        "frontDe": "Anbei sende ich Ihnen die fehlenden Unterlagen.",
        "backEn": "Attached I am sending you the missing documents.",
        "exampleDe": "Anbei sende ich Ihnen die fehlenden Unterlagen.",
        "exampleEn": "Attached I am sending you the missing documents.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-anbei-sende-ich-ihnen-die-fehlenden-unterlagen"
      },
      {
        "frontDe": "Im Anhang finden Sie ...",
        "backEn": "In the attachment you will find ...",
        "exampleDe": "Im Anhang finden Sie die Rechnung und den Zahlungsnachweis.",
        "exampleEn": "In the attachment you will find the invoice and proof of payment.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-im-anhang-finden-sie"
      },
      {
        "frontDe": "Ich bitte um Prüfung und Korrektur.",
        "backEn": "I request a review and correction.",
        "exampleDe": "Ich bitte um Prüfung und Korrektur der Rechnung.",
        "exampleEn": "I request a review and correction of the bill.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-ich-bitte-um-pruefung-und-korrektur"
      },
      {
        "frontDe": "Über eine zeitnahe Rückmeldung würde ich mich freuen.",
        "backEn": "I would appreciate a prompt response.",
        "exampleDe": "Über eine zeitnahe Rückmeldung würde ich mich freuen.",
        "exampleEn": "I would appreciate a prompt response.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-ueber-eine-zeitnahe-rueckmeldung-wuerde-ich-mich-freuen"
      },
      {
        "frontDe": "Bitte bestätigen Sie mir den Eingang.",
        "backEn": "Please confirm receipt.",
        "exampleDe": "Bitte bestätigen Sie mir kurz den Eingang der Unterlagen.",
        "exampleEn": "Please briefly confirm receipt of the documents.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b2-formal-bitte-bestaetigen-sie-mir-den-eingang"
      },
      {
        "frontDe": "Ich möchte die Situation kurz erläutern.",
        "backEn": "I would like to briefly explain the situation.",
        "exampleDe": "Ich möchte die Situation kurz erläutern.",
        "exampleEn": "I would like to briefly explain the situation.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-ich-moechte-die-situation-kurz-erlaeutern"
      },
      {
        "frontDe": "Unter diesen Umständen halte ich ... für sinnvoll.",
        "backEn": "Under these circumstances, I consider ... sensible.",
        "exampleDe": "Unter diesen Umständen halte ich eine Verschiebung für sinnvoll.",
        "exampleEn": "Under these circumstances, I consider a postponement sensible.",
        "tags": [
          "writing",
          "argumentation"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b2-formal-unter-diesen-umstaenden-halte-ich-fuer-sinnvoll"
      },
      {
        "frontDe": "Aus meiner Sicht ist entscheidend, dass ...",
        "backEn": "From my perspective it is crucial that ...",
        "exampleDe": "Aus meiner Sicht ist entscheidend, dass wir klare Regeln haben.",
        "exampleEn": "From my perspective it is crucial that we have clear rules.",
        "tags": [
          "writing",
          "argumentation"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b2-formal-aus-meiner-sicht-ist-entscheidend-dass"
      },
      {
        "frontDe": "Es wäre hilfreich, wenn ...",
        "backEn": "It would be helpful if ...",
        "exampleDe": "Es wäre hilfreich, wenn Sie mir den Termin bestätigen könnten.",
        "exampleEn": "It would be helpful if you could confirm the appointment.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-es-waere-hilfreich-wenn"
      },
      {
        "frontDe": "Ich schlage folgenden Ablauf vor:",
        "backEn": "I suggest the following procedure:",
        "exampleDe": "Ich schlage folgenden Ablauf vor: zuerst prüfen, dann entscheiden.",
        "exampleEn": "I suggest the following procedure: first check, then decide.",
        "tags": [
          "writing",
          "work"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b2-formal-ich-schlage-folgenden-ablauf-vor"
      },
      {
        "frontDe": "Ich bedauere die Unannehmlichkeiten.",
        "backEn": "I regret the inconvenience.",
        "exampleDe": "Ich bedauere die Unannehmlichkeiten und danke für Ihr Verständnis.",
        "exampleEn": "I regret the inconvenience and thank you for your understanding.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-ich-bedauere-die-unannehmlichkeiten"
      },
      {
        "frontDe": "Vielen Dank im Voraus.",
        "backEn": "Thank you in advance.",
        "exampleDe": "Vielen Dank im Voraus.",
        "exampleEn": "Thank you in advance.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B1",
        "domain": "work",
        "id": "dd-b2-formal-vielen-dank-im-voraus"
      },
      {
        "frontDe": "Könnten Sie mir bitte mitteilen, wie wir weiter vorgehen?",
        "backEn": "Could you let me know how we should proceed?",
        "exampleDe": "Könnten Sie mir bitte mitteilen, wie wir weiter vorgehen?",
        "exampleEn": "Could you let me know how we should proceed?",
        "tags": [
          "writing",
          "formal",
          "konjunktiv2"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-koennten-sie-mir-bitte-mitteilen-wie-wir-weiter-vorgehen"
      },
      {
        "frontDe": "Ich möchte Sie darauf hinweisen, dass ...",
        "backEn": "I would like to point out that ...",
        "exampleDe": "Ich möchte Sie darauf hinweisen, dass der Betrag nicht stimmt.",
        "exampleEn": "I would like to point out that the amount is incorrect.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-ich-moechte-sie-darauf-hinweisen-dass"
      },
      {
        "frontDe": "Ich gehe davon aus, dass ...",
        "backEn": "I assume that ...",
        "exampleDe": "Ich gehe davon aus, dass das Problem in wenigen Tagen gelöst ist.",
        "exampleEn": "I assume the problem will be solved in a few days.",
        "tags": [
          "writing"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b2-formal-ich-gehe-davon-aus-dass"
      },
      {
        "frontDe": "Sollten Sie Rückfragen haben, stehe ich gern zur Verfügung.",
        "backEn": "If you have questions, I am available.",
        "exampleDe": "Sollten Sie Rückfragen haben, stehe ich gern zur Verfügung.",
        "exampleEn": "If you have questions, I am available.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-sollten-sie-rueckfragen-haben-stehe-ich-gern-zur-verfuegung"
      },
      {
        "frontDe": "Ich würde mich über eine kurze Bestätigung freuen.",
        "backEn": "I would appreciate a short confirmation.",
        "exampleDe": "Ich würde mich über eine kurze Bestätigung freuen.",
        "exampleEn": "I would appreciate a short confirmation.",
        "tags": [
          "writing",
          "formal"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-formal-ich-wuerde-mich-ueber-eine-kurze-bestaetigung-freuen"
      },
      {
        "frontDe": "Es spricht einiges dafür, dass ...",
        "backEn": "There is much to be said for the idea that ...",
        "exampleDe": "Es spricht einiges dafür, dass klare Regeln helfen.",
        "exampleEn": "There is much to be said for the idea that clear rules help.",
        "tags": [
          "argumentation",
          "writing",
          "exam"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-arg-es-spricht-einiges-dafuer-dass"
      },
      {
        "frontDe": "Gegen diesen Vorschlag spricht jedoch, dass ...",
        "backEn": "Against this proposal, however, speaks the fact that ...",
        "exampleDe": "Gegen diesen Vorschlag spricht jedoch, dass er teuer ist.",
        "exampleEn": "Against this proposal, however, is the fact that it is expensive.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b2-arg-gegen-diesen-vorschlag-spricht-jedoch-dass"
      },
      {
        "frontDe": "Ein wesentlicher Punkt ist, dass ...",
        "backEn": "A key point is that ...",
        "exampleDe": "Ein wesentlicher Punkt ist, dass wir Alternativen brauchen.",
        "exampleEn": "A key point is that we need alternatives.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-arg-ein-wesentlicher-punkt-ist-dass"
      },
      {
        "frontDe": "Man darf nicht vergessen, dass ...",
        "backEn": "One must not forget that ...",
        "exampleDe": "Man darf nicht vergessen, dass es auch Nachteile gibt.",
        "exampleEn": "One must not forget that there are also disadvantages.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "politics",
        "id": "dd-b2-arg-man-darf-nicht-vergessen-dass"
      },
      {
        "frontDe": "Es ist nachvollziehbar, dass ...",
        "backEn": "It is understandable that ...",
        "exampleDe": "Es ist nachvollziehbar, dass Anwohner skeptisch sind.",
        "exampleEn": "It is understandable that residents are skeptical.",
        "tags": [
          "argumentation",
          "speaking"
        ],
        "level": "B2",
        "domain": "politics",
        "id": "dd-b2-arg-es-ist-nachvollziehbar-dass"
      },
      {
        "frontDe": "Kurzfristig ... langfristig ...",
        "backEn": "In the short term ... in the long term ...",
        "exampleDe": "Kurzfristig ist es anstrengend, langfristig lohnt es sich.",
        "exampleEn": "In the short term it is exhausting, in the long term it is worth it.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-arg-kurzfristig-langfristig"
      },
      {
        "frontDe": "Unter dem Strich ...",
        "backEn": "All in all; bottom line ...",
        "exampleDe": "Unter dem Strich überwiegen die Vorteile.",
        "exampleEn": "All in all, the advantages outweigh the disadvantages.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-arg-unter-dem-strich"
      },
      {
        "frontDe": "Ich bin der Auffassung, dass ...",
        "backEn": "I am of the opinion that ...",
        "exampleDe": "Ich bin der Auffassung, dass wir anders planen sollten.",
        "exampleEn": "I am of the opinion that we should plan differently.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "work",
        "id": "dd-b2-arg-ich-bin-der-auffassung-dass"
      },
      {
        "frontDe": "Es kommt darauf an, ob ...",
        "backEn": "It depends on whether ...",
        "exampleDe": "Es kommt darauf an, ob es gute Alternativen gibt.",
        "exampleEn": "It depends on whether there are good alternatives.",
        "tags": [
          "argumentation",
          "speaking"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-arg-es-kommt-darauf-an-ob"
      },
      {
        "frontDe": "Nicht zuletzt ...",
        "backEn": "Not least ...",
        "exampleDe": "Nicht zuletzt geht es um Fairness.",
        "exampleEn": "Not least, it is about fairness.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-arg-nicht-zuletzt"
      },
      {
        "frontDe": "Daraus ergibt sich, dass ...",
        "backEn": "It follows from this that ...",
        "exampleDe": "Daraus ergibt sich, dass wir handeln müssen.",
        "exampleEn": "It follows from this that we must act.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-arg-daraus-ergibt-sich-dass"
      },
      {
        "frontDe": "Das setzt voraus, dass ...",
        "backEn": "This requires that ...",
        "exampleDe": "Das setzt voraus, dass die Regeln klar sind.",
        "exampleEn": "This requires that the rules are clear.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "exam",
        "id": "dd-b2-arg-das-setzt-voraus-dass"
      },
      {
        "frontDe": "Ein Kompromiss wäre, ...",
        "backEn": "A compromise would be to ...",
        "exampleDe": "Ein Kompromiss wäre, die Regel zuerst zu testen.",
        "exampleEn": "A compromise would be to test the rule first.",
        "tags": [
          "argumentation",
          "speaking"
        ],
        "level": "B2",
        "domain": "politics",
        "id": "dd-b2-arg-ein-kompromiss-waere"
      },
      {
        "frontDe": "Ich plädiere dafür, ...",
        "backEn": "I advocate for ...",
        "exampleDe": "Ich plädiere dafür, transparente Kontrollen einzuführen.",
        "exampleEn": "I advocate for introducing transparent controls.",
        "tags": [
          "argumentation",
          "writing"
        ],
        "level": "B2",
        "domain": "politics",
        "id": "dd-b2-arg-ich-plaediere-dafuer"
      },
      {
        "id": "dd-conn-daher",
        "frontDe": "daher",
        "backEn": "therefore; for that reason",
        "exampleDe": "Es hat stark geregnet, daher bleiben wir zu Hause.",
        "exampleEn": "It rained heavily, therefore we are staying home.",
        "tags": [
          "connector"
        ],
        "level": "B1",
        "domain": "exam"
      },
      {
        "id": "dd-conn-trotzdem",
        "frontDe": "trotzdem",
        "backEn": "nevertheless; still",
        "exampleDe": "Ich war müde, trotzdem bin ich mitgegangen.",
        "exampleEn": "I was tired, but I still went along.",
        "tags": [
          "connector"
        ],
        "level": "B1",
        "domain": "exam"
      },
      {
        "id": "dd-conn-einerseits",
        "frontDe": "einerseits ... andererseits",
        "backEn": "on the one hand ... on the other hand",
        "exampleDe": "Einerseits spart Homeoffice Zeit, andererseits fehlt der Austausch.",
        "exampleEn": "On the one hand, working from home saves time; on the other hand, you miss the exchange.",
        "tags": [
          "argumentation"
        ],
        "level": "B2",
        "domain": "work"
      },
      {
        "id": "dd-conn-zwar",
        "frontDe": "zwar ... aber",
        "backEn": "indeed ... but",
        "exampleDe": "Zwar ist die Wohnung klein, aber sie liegt zentral.",
        "exampleEn": "The apartment is small indeed, but it is centrally located.",
        "tags": [
          "connector"
        ],
        "level": "B1",
        "domain": "daily"
      },
      {
        "id": "dd-conn-sowohl",
        "frontDe": "sowohl ... als auch",
        "backEn": "both ... and",
        "exampleDe": "Wir brauchen sowohl Zeit als auch Geld für das Projekt.",
        "exampleEn": "We need both time and money for the project.",
        "tags": [
          "connector"
        ],
        "level": "B1",
        "domain": "work"
      },
      {
        "id": "dd-conn-nicht-nur",
        "frontDe": "nicht nur ... sondern auch",
        "backEn": "not only ... but also",
        "exampleDe": "Das ist nicht nur praktisch, sondern auch günstig.",
        "exampleEn": "That is not only practical, but also affordable.",
        "tags": [
          "connector"
        ],
        "level": "B1",
        "domain": "daily"
      },
      {
        "id": "dd-verb-sich-bewerben",
        "frontDe": "sich bewerben (um + Akk.)",
        "backEn": "to apply (for)",
        "exampleDe": "Ich bewerbe mich um die Stelle als Projektmanager.",
        "exampleEn": "I am applying for the position of project manager.",
        "tags": [
          "verb-prep"
        ],
        "level": "B1",
        "domain": "work"
      },
      {
        "id": "dd-verb-sich-entscheiden",
        "frontDe": "sich entscheiden (für/gegen + Akk.)",
        "backEn": "to decide (for/against)",
        "exampleDe": "Wir haben uns für die günstigere Option entschieden.",
        "exampleEn": "We decided for the cheaper option.",
        "tags": [
          "verb-prep"
        ],
        "level": "B1",
        "domain": "daily"
      },
      {
        "id": "dd-verb-sich-beschweren",
        "frontDe": "sich beschweren (über + Akk.)",
        "backEn": "to complain (about)",
        "exampleDe": "Ich möchte mich über den Lärm im Treppenhaus beschweren.",
        "exampleEn": "I would like to complain about the noise in the stairwell.",
        "tags": [
          "exam",
          "formal"
        ],
        "level": "B2",
        "domain": "exam"
      },
      {
        "id": "dd-verb-teilnehmen",
        "frontDe": "teilnehmen (an + Dat.)",
        "backEn": "to participate (in)",
        "exampleDe": "Nimmst du an der Fortbildung teil?",
        "exampleEn": "Are you taking part in the training?",
        "tags": [
          "verb-prep"
        ],
        "level": "B1",
        "domain": "education"
      },
      {
        "id": "dd-verb-sich-gewoehnen",
        "frontDe": "sich gewöhnen (an + Akk.)",
        "backEn": "to get used to",
        "exampleDe": "Ich habe mich an das Tempo im Kurs gewöhnt.",
        "exampleEn": "I got used to the pace of the course.",
        "tags": [
          "verb-prep"
        ],
        "level": "B1",
        "domain": "education"
      },
      {
        "id": "dd-phrase-es-kommt-darauf-an",
        "frontDe": "Es kommt darauf an.",
        "backEn": "It depends.",
        "exampleDe": "Ob wir fahren, kommt darauf an, wie das Wetter wird.",
        "exampleEn": "Whether we go depends on how the weather will be.",
        "tags": [
          "speaking"
        ],
        "level": "B1",
        "domain": "daily"
      },
      {
        "id": "dd-phrase-im-grunde",
        "frontDe": "im Grunde (genommen)",
        "backEn": "basically; fundamentally",
        "exampleDe": "Im Grunde genommen bin ich einverstanden.",
        "exampleEn": "Basically, I agree.",
        "tags": [
          "speaking"
        ],
        "level": "B2",
        "domain": "society"
      },
      {
        "id": "dd-phrase-meines-erachtens",
        "frontDe": "meines Erachtens",
        "backEn": "in my opinion (formal)",
        "exampleDe": "Meines Erachtens braucht es klare Regeln.",
        "exampleEn": "In my opinion, clear rules are needed.",
        "tags": [
          "writing",
          "exam"
        ],
        "level": "B2",
        "domain": "exam"
      },
      {
        "id": "dd-phrase-sich-lohnen",
        "frontDe": "Es lohnt sich, ...",
        "backEn": "It is worth (doing)...",
        "exampleDe": "Es lohnt sich, jeden Tag kurz zu wiederholen.",
        "exampleEn": "It is worth reviewing briefly every day.",
        "tags": [
          "daily"
        ],
        "level": "B1",
        "domain": "education"
      },
      {
        "id": "dd-noun-die-absage",
        "frontDe": "die Absage",
        "backEn": "cancellation; rejection",
        "exampleDe": "Leider habe ich eine Absage bekommen.",
        "exampleEn": "Unfortunately, I received a rejection.",
        "tags": [
          "work"
        ],
        "level": "B1",
        "domain": "work"
      },
      {
        "id": "dd-noun-die-begruendung",
        "frontDe": "die Begründung",
        "backEn": "justification; reasoning",
        "exampleDe": "Bitte geben Sie eine kurze Begründung an.",
        "exampleEn": "Please provide a brief justification.",
        "tags": [
          "formal"
        ],
        "level": "B2",
        "domain": "exam"
      },
      {
        "id": "dd-noun-der-umgang",
        "frontDe": "der Umgang (mit + Dat.)",
        "backEn": "dealing/handling (with)",
        "exampleDe": "Der Umgang mit Stress ist ein wichtiges Thema.",
        "exampleEn": "Dealing with stress is an important topic.",
        "tags": [
          "health"
        ],
        "level": "B2",
        "domain": "health"
      },
      {
        "id": "dd-noun-die-auswirkung",
        "frontDe": "die Auswirkung (auf + Akk.)",
        "backEn": "impact (on)",
        "exampleDe": "Das hat große Auswirkungen auf den Alltag.",
        "exampleEn": "That has a big impact on daily life.",
        "tags": [
          "exam"
        ],
        "level": "B2",
        "domain": "society"
      },
      {
        "id": "dd-word-die-umweltfreundlich",
        "frontDe": "umweltfreundlich",
        "backEn": "environmentally friendly",
        "exampleDe": "Wir versuchen, umweltfreundlicher zu reisen.",
        "exampleEn": "We try to travel more environmentally friendly.",
        "tags": [
          "environment"
        ],
        "level": "B1",
        "domain": "environment"
      },
      {
        "id": "dd-word-die-nachhaltig",
        "frontDe": "nachhaltig",
        "backEn": "sustainable",
        "exampleDe": "Nachhaltige Lösungen sind oft am Anfang teurer.",
        "exampleEn": "Sustainable solutions are often more expensive at first.",
        "tags": [
          "environment",
          "argumentation"
        ],
        "level": "B2",
        "domain": "environment"
      },
      {
        "id": "dd-word-die-erholung",
        "frontDe": "die Erholung",
        "backEn": "recovery; rest",
        "exampleDe": "Nach der Arbeit brauche ich etwas Erholung.",
        "exampleEn": "After work I need some rest.",
        "tags": [
          "health"
        ],
        "level": "B1",
        "domain": "health"
      },
      {
        "id": "dd-phrase-darueber-hinaus",
        "frontDe": "darüber hinaus",
        "backEn": "in addition; beyond that",
        "exampleDe": "Darüber hinaus sollten wir die Kosten prüfen.",
        "exampleEn": "In addition, we should check the costs.",
        "tags": [
          "writing"
        ],
        "level": "B2",
        "domain": "work"
      },
      {
        "id": "dd-phrase-auf-jeden-fall",
        "frontDe": "auf jeden Fall",
        "backEn": "definitely; in any case",
        "exampleDe": "Auf jeden Fall musst du das Formular ausfüllen.",
        "exampleEn": "In any case you must fill out the form.",
        "tags": [
          "speaking"
        ],
        "level": "B1",
        "domain": "daily"
      },
      {
        "id": "dd-phrase-im-zweifel",
        "frontDe": "im Zweifel",
        "backEn": "if in doubt",
        "exampleDe": "Im Zweifel frage ich lieber noch einmal nach.",
        "exampleEn": "If in doubt, I prefer to ask again.",
        "tags": [
          "speaking"
        ],
        "level": "B2",
        "domain": "work"
      },
      {
        "id": "dd-conn-obwohl",
        "frontDe": "obwohl (+ Verb am Ende)",
        "backEn": "although",
        "exampleDe": "Obwohl ich keine Zeit hatte, habe ich geholfen.",
        "exampleEn": "Although I had no time, I helped.",
        "tags": [
          "grammar"
        ],
        "level": "B1",
        "domain": "exam"
      },
      {
        "id": "dd-conn-während",
        "frontDe": "während (+ Gen./Dat.) / während (+ Nebensatz)",
        "backEn": "during / while",
        "exampleDe": "Während des Meetings kamen neue Infos.",
        "exampleEn": "During the meeting, new info came up.",
        "tags": [
          "grammar"
        ],
        "level": "B2",
        "domain": "work"
      },
      {
        "id": "dd-work-der-vorschlag",
        "frontDe": "der Vorschlag",
        "backEn": "proposal; suggestion",
        "exampleDe": "Ich habe einen Vorschlag: Wir teilen die Aufgaben auf.",
        "exampleEn": "I have a suggestion: we split the tasks.",
        "tags": [
          "work"
        ],
        "level": "B1",
        "domain": "work"
      },
      {
        "id": "dd-work-die-frist",
        "frontDe": "die Frist",
        "backEn": "deadline; time limit",
        "exampleDe": "Die Frist endet am Freitag.",
        "exampleEn": "The deadline ends on Friday.",
        "tags": [
          "work",
          "formal"
        ],
        "level": "B1",
        "domain": "work"
      },
      {
        "id": "dd-work-der-ablauf",
        "frontDe": "der Ablauf",
        "backEn": "process; sequence",
        "exampleDe": "Der Ablauf ist klar: erst Analyse, dann Umsetzung.",
        "exampleEn": "The process is clear: first analysis, then implementation.",
        "tags": [
          "work"
        ],
        "level": "B2",
        "domain": "work"
      },
      {
        "id": "dd-society-die-gleichberechtigung",
        "frontDe": "die Gleichberechtigung",
        "backEn": "equality (of rights)",
        "exampleDe": "Gleichberechtigung ist ein zentrales Ziel.",
        "exampleEn": "Equality is a central goal.",
        "tags": [
          "society"
        ],
        "level": "B2",
        "domain": "society"
      },
      {
        "id": "dd-society-die-ehrenamtlich",
        "frontDe": "ehrenamtlich",
        "backEn": "voluntary (unpaid)",
        "exampleDe": "Sie arbeitet ehrenamtlich in einem Verein.",
        "exampleEn": "She volunteers in an association.",
        "tags": [
          "society"
        ],
        "level": "B1",
        "domain": "society"
      },
      {
        "id": "dd-politics-die-massnahme",
        "frontDe": "die Maßnahme",
        "backEn": "measure; action (policy)",
        "exampleDe": "Die Maßnahme soll den Verkehr reduzieren.",
        "exampleEn": "The measure is intended to reduce traffic.",
        "tags": [
          "politics"
        ],
        "level": "B2",
        "domain": "politics"
      },
      {
        "id": "dd-politics-der-beschluss",
        "frontDe": "der Beschluss",
        "backEn": "decision; resolution",
        "exampleDe": "Der Beschluss wurde gestern gefasst.",
        "exampleEn": "The decision was made yesterday.",
        "tags": [
          "politics",
          "formal"
        ],
        "level": "B2",
        "domain": "politics"
      },
      {
        "id": "dd-education-die-fortbildung",
        "frontDe": "die Fortbildung",
        "backEn": "further training; professional development",
        "exampleDe": "Ich mache eine Fortbildung im Bereich Kommunikation.",
        "exampleEn": "I am doing further training in communication.",
        "tags": [
          "education"
        ],
        "level": "B1",
        "domain": "education"
      },
      {
        "id": "dd-education-die-voraussetzung",
        "frontDe": "die Voraussetzung",
        "backEn": "requirement; prerequisite",
        "exampleDe": "Deutschkenntnisse sind eine wichtige Voraussetzung.",
        "exampleEn": "German skills are an important prerequisite.",
        "tags": [
          "education"
        ],
        "level": "B2",
        "domain": "education"
      },
      {
        "id": "dd-culture-die-ausstellung",
        "frontDe": "die Ausstellung",
        "backEn": "exhibition",
        "exampleDe": "Die Ausstellung läuft noch bis Ende Mai.",
        "exampleEn": "The exhibition runs until the end of May.",
        "tags": [
          "culture"
        ],
        "level": "A2",
        "domain": "culture"
      },
      {
        "id": "dd-culture-der-eindruck",
        "frontDe": "der Eindruck",
        "backEn": "impression",
        "exampleDe": "Mein Eindruck ist, dass es gut funktioniert.",
        "exampleEn": "My impression is that it works well.",
        "tags": [
          "speaking"
        ],
        "level": "B1",
        "domain": "culture"
      },
      {
        "id": "dd-travel-umsteigen",
        "frontDe": "umsteigen (in + Akk.)",
        "backEn": "to change (trains/lines)",
        "exampleDe": "Sie müssen in Köln umsteigen.",
        "exampleEn": "You have to change in Cologne.",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel"
      },
      {
        "id": "dd-travel-die-verspaetung",
        "frontDe": "die Verspätung",
        "backEn": "delay",
        "exampleDe": "Der Zug hat heute zehn Minuten Verspätung.",
        "exampleEn": "The train is delayed by ten minutes today.",
        "tags": [
          "travel"
        ],
        "level": "A2",
        "domain": "travel"
      },
      {
        "id": "dd-exam-formell",
        "frontDe": "Ich würde Sie bitten, ...",
        "backEn": "I would ask you to ... (formal)",
        "exampleDe": "Ich würde Sie bitten, mir die Unterlagen zuzuschicken.",
        "exampleEn": "I would ask you to send me the documents.",
        "tags": [
          "writing",
          "formal",
          "konjunktiv2"
        ],
        "level": "B2",
        "domain": "exam"
      },
      {
        "id": "dd-exam-zusammenfassen",
        "frontDe": "zusammenfassend",
        "backEn": "in summary; to sum up",
        "exampleDe": "Zusammenfassend lässt sich sagen, dass wir handeln müssen.",
        "exampleEn": "To sum up, we have to act.",
        "tags": [
          "writing",
          "exam"
        ],
        "level": "B2",
        "domain": "exam"
      }
    ]
  },
  "aiAccess": {
    "manifest": "/api/ai/manifest",
    "auth": {
      "cookieSession": "Use /api/auth/login then browser cookies",
      "bearerToken": "Create token in /settings or POST /api/tokens/create and send Authorization: Bearer dd_pat_..."
    }
  }
}