// strings-partner.jsx — i18n catalog for partner portal (partner-*.jsx).
// Each entry: { en, de }. Leave `de` "" until translated (English fallback at runtime).
// Formal register (Sie) only. Keys are namespaced by component id.
// Extraction tasks add registerStrings("ComponentId", { … }) calls below.

registerStrings("PartnerLogin", {
  title:         { en: "Partner Login", de: "Anmelden" },
  subtitle:      { en: "Welcome back — sign in to manage your leads and performance.", de: "Willkommen zurück. Melden Sie sich an und verwalten Sie Ihre Vermittlungen und Ihre Leistung." },
  emailLabel:    { en: "Email", de: "E-Mail" },
  emailPlaceholder: { en: "partner@example.com", de: "partner@example.com" },
  passwordLabel: { en: "Password", de: "Passwort" },
  forgot:        { en: "Forgot?", de: "Vergessen?" },
  submit:        { en: "Sign in", de: "Anmelden" },
  submitLoading: { en: "Signing in…", de: "Wird angemeldet…" },
  enterCode:     { en: "Enter activation code →", de: "Aktivierungscode eingeben →" },
  notPartner:    { en: "Not a partner yet?", de: "Noch kein Partner?" },
  join:          { en: "Join our network", de: "Unserem Netzwerk beitreten" },
  errEmptyCreds: { en: "Please enter your email and password.", de: "Bitte geben Sie Ihre E-Mail-Adresse und Ihr Passwort ein." },
  errFailed:     { en: "Sign in failed. Please try again.", de: "Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut." },
});

registerStrings("PartnerSignup", {
  title:               { en: "Create account", de: "Konto erstellen" },
  subtitle:            { en: "Join OttoKlar as a partner and start receiving qualified referrals.", de: "Werden Sie OttoKlar-Partner und erhalten Sie qualifizierte Vermittlungen." },
  iAmA:                { en: "I am a", de: "Ich bin" },
  typeGutachter:       { en: "KFZ Gutachter", de: "KFZ Gutachter" },
  typeWorkshop:        { en: "Workshop", de: "Werkstatt" },
  fullNameLabel:       { en: "Full name", de: "Vollständiger Name" },
  fullNamePlaceholder: { en: "Anna Müller", de: "Anna Müller" },
  companyLabel:        { en: "Business name", de: "Firmenname" },
  companyPlaceholderGutachter: { en: "Gutachterbüro Müller GmbH", de: "Gutachterbüro Müller GmbH" },
  companyPlaceholderWorkshop:  { en: "Autohaus Müller GmbH", de: "Autohaus Müller GmbH" },
  emailLabel:          { en: "Email", de: "E-Mail" },
  emailPlaceholder:    { en: "partner@example.com", de: "partner@example.com" },
  passwordLabel:       { en: "Password", de: "Passwort" },
  repeatPasswordLabel: { en: "Repeat password", de: "Passwort wiederholen" },
  submit:              { en: "Join OttoKlar network", de: "Dem OttoKlar-Netzwerk beitreten" },
  submitLoading:       { en: "Submitting…", de: "Wird gesendet…" },
  verifyNotice:        { en: "It may take up to 24 hours to verify your business before you are listed and start receiving referrals.", de: "Die Prüfung Ihres Unternehmens kann bis zu 24 Stunden dauern, bevor Sie gelistet werden und Vermittlungen erhalten." },
  alreadyHaveAccount:  { en: "Already have an account?", de: "Sie haben bereits ein Konto?" },
  signIn:              { en: "Sign in", de: "Anmelden" },
  errNoType:           { en: "Please select your partner type.", de: "Bitte wählen Sie Ihren Partnertyp aus." },
  errMissingFields:    { en: "Please fill in all fields.", de: "Bitte füllen Sie alle Felder aus." },
  errPasswordMismatch: { en: "Passwords do not match.", de: "Die Passwörter stimmen nicht überein." },
  errFailed:           { en: "Registration failed. Please try again.", de: "Registrierung fehlgeschlagen. Bitte versuchen Sie es erneut." },
});

registerStrings("PartnerActivate", {
  title:              { en: "Check your inbox", de: "Prüfen Sie Ihr Postfach" },
  subtitleWithEmail:  { en: "We sent a 6-digit activation code to", de: "Wir haben einen 6-stelligen Aktivierungscode gesendet an" },
  subtitleSuffix:     { en: "Enter it below to activate your partner account.", de: "Geben Sie ihn unten ein, um Ihr Partnerkonto zu aktivieren." },
  subtitleNoEmail:    { en: "your email", de: "Ihre E-Mail-Adresse" },
  emailLabel:         { en: "Email", de: "E-Mail" },
  emailPlaceholder:   { en: "partner@example.com", de: "partner@example.com" },
  codeLabel:          { en: "Activation code", de: "Aktivierungscode" },
  submit:             { en: "Activate account", de: "Konto aktivieren" },
  submitLoading:      { en: "Activating…", de: "Wird aktiviert…" },
  activated:          { en: "Account activated — taking you to your dashboard…", de: "Konto aktiviert. Sie werden zu Ihrer Übersicht weitergeleitet…" },
  didntGetCode:       { en: "Didn't get the code?", de: "Keinen Code erhalten?" },
  resendIn:           { en: "Resend in {cooldown}s", de: "Erneut senden in {cooldown}s" },
  resending:          { en: "Sending…", de: "Wird gesendet…" },
  resend:             { en: "Resend code", de: "Code erneut senden" },
  resentConfirm:      { en: "✓ A new code is on its way", de: "✓ Ein neuer Code ist unterwegs" },
  alreadyActivated:   { en: "Already activated?", de: "Bereits aktiviert?" },
  signIn:             { en: "Sign in", de: "Anmelden" },
  errNoEmail:         { en: "Please enter your email address.", de: "Bitte geben Sie Ihre E-Mail-Adresse ein." },
  errNoCode:          { en: "Please enter the 6-digit code from your email.", de: "Bitte geben Sie den 6-stelligen Code aus Ihrer E-Mail ein." },
  errNoEmailResend:   { en: "Enter your email first so we know where to send the code.", de: "Geben Sie zuerst Ihre E-Mail-Adresse ein, damit wir wissen, wohin wir den Code senden sollen." },
  errFailed:          { en: "Activation failed. Check the code and try again.", de: "Aktivierung fehlgeschlagen. Bitte prüfen Sie den Code und versuchen Sie es erneut." },
});

registerStrings("PartnerForgot", {
  sentTitle:          { en: "Check your inbox", de: "Prüfen Sie Ihr Postfach" },
  sentSubtitleBefore: { en: "We sent a password reset link to", de: "Wir haben einen Link zum Zurücksetzen des Passworts gesendet an" },
  sentSubtitleAfter:  { en: "Open it to choose a new password.", de: "Öffnen Sie ihn, um ein neues Passwort zu wählen." },
  sentBadge:          { en: "Reset link on its way", de: "Link zum Zurücksetzen ist unterwegs" },
  didntGetIt:         { en: "Didn't get it? Check your spam folder, or", de: "Nichts erhalten? Prüfen Sie Ihren Spam-Ordner oder" },
  tryDifferentEmail:  { en: "try a different email", de: "versuchen Sie eine andere E-Mail-Adresse" },
  title:              { en: "Reset your password", de: "Passwort zurücksetzen" },
  subtitle:           { en: "Enter your account email and we'll send you a link to set a new password.", de: "Geben Sie die E-Mail-Adresse Ihres Kontos ein und wir senden Ihnen einen Link, um ein neues Passwort festzulegen." },
  emailLabel:         { en: "Email", de: "E-Mail" },
  emailPlaceholder:   { en: "partner@example.com", de: "partner@example.com" },
  submit:             { en: "Send reset link", de: "Link zum Zurücksetzen senden" },
  submitLoading:      { en: "Sending…", de: "Wird gesendet…" },
  rememberedIt:       { en: "Remembered it?", de: "Wieder eingefallen?" },
  backToSignIn:       { en: "Back to sign in", de: "Zurück zur Anmeldung" },
  errNoEmail:         { en: "Please enter your email address.", de: "Bitte geben Sie Ihre E-Mail-Adresse ein." },
  errFailed:          { en: "Couldn't send the reset link. Please try again.", de: "Der Link zum Zurücksetzen konnte nicht gesendet werden. Bitte versuchen Sie es erneut." },
});

registerStrings("PartnerReset", {
  invalidTitle:       { en: "Invalid reset link", de: "Ungültiger Link" },
  invalidSubtitle:    { en: "This password reset link is invalid or has expired. Please request a new one from the sign-in page.", de: "Dieser Link zum Zurücksetzen des Passworts ist ungültig oder abgelaufen. Bitte fordern Sie auf der Anmeldeseite einen neuen an." },
  successTitle:       { en: "Password updated", de: "Passwort aktualisiert" },
  successBadge:       { en: "Your password has been reset — taking you to sign in…", de: "Ihr Passwort wurde zurückgesetzt. Sie werden zur Anmeldung weitergeleitet…" },
  title:              { en: "Set a new password", de: "Neues Passwort festlegen" },
  subtitle:           { en: "Choose a new password for your partner account.", de: "Wählen Sie ein neues Passwort für Ihr Partnerkonto." },
  newPasswordLabel:   { en: "New password", de: "Neues Passwort" },
  repeatPasswordLabel:{ en: "Repeat new password", de: "Neues Passwort wiederholen" },
  submit:             { en: "Update password", de: "Passwort aktualisieren" },
  submitLoading:      { en: "Updating…", de: "Wird aktualisiert…" },
  backToSignIn:       { en: "Back to sign in", de: "Zurück zur Anmeldung" },
  errMissingFields:   { en: "Please enter and confirm your new password.", de: "Bitte geben Sie Ihr neues Passwort ein und bestätigen Sie es." },
  errPasswordMismatch:{ en: "Passwords do not match.", de: "Die Passwörter stimmen nicht überein." },
  errFailed:          { en: "Couldn't reset your password. The link may have expired — request a new one.", de: "Ihr Passwort konnte nicht zurückgesetzt werden. Möglicherweise ist der Link abgelaufen. Bitte fordern Sie einen neuen an." },
});

registerStrings("PartnerDash", {
  // Status badges
  status_new:        { en: "New",        de: "Neu" },
  status_reviewed:   { en: "Reviewed",   de: "Geprüft" },
  status_offersent:  { en: "Offer Sent", de: "Angebot gesendet" },
  status_expired:    { en: "Expired",    de: "Abgelaufen" },
  status_declined:   { en: "Declined",   de: "Abgelehnt" },

  // Referral table headers
  colRefNumber:  { en: "Ref. Number",  de: "Ref.-Nr." },
  colVehicle:    { en: "Vehicle",      de: "Fahrzeug" },
  colDamage:     { en: "Damage",       de: "Schaden" },
  colDate:       { en: "Date",         de: "Datum" },
  colEstValue:   { en: "Est. value",   de: "Gesch. Wert" },
  colStatus:     { en: "Status",       de: "Status" },
  colCountdown:  { en: "Countdown",    de: "Restzeit" },

  // Pager
  pagerShowing: { en: "Showing", de: "Angezeigt" },
  pagerOf:      { en: "of",      de: "von" },
  pagerPrev: { en: "‹ Prev", de: "‹ Zurück" },
  pagerNext: { en: "Next ›", de: "Weiter ›" },

  // Countdown
  countdownExpired: { en: "Expired", de: "Abgelaufen" },

  // Back button
  backToReferrals: { en: "Referrals", de: "Vermittlungen" },

  // Decline modal shared
  cancel:    { en: "Cancel",     de: "Abbrechen" },
  declining: { en: "Declining…", de: "Wird abgelehnt…" },

  // Damage list
  loadingInspection: { en: "Loading inspection…",                              de: "Analyse wird geladen…" },
  inspectionError:   { en: "Couldn't load inspection details ({error}).",      de: "Analysedetails konnten nicht geladen werden ({error})." },

  // DamageItemCard (Workshop)
  damageDetectedWorkshop: { en: "{type} detected on the {part} in the {location} area. AI inspection confidence is {confidence}%.", de: "{type} an {part} im Bereich {location} erkannt. Die KI-Analyse hat eine Konfidenz von {confidence} %." },
  labelPart:          { en: "PART",             de: "TEIL" },
  labelLocation:      { en: "LOCATION",         de: "BEREICH" },
  labelEstLaborTime:  { en: "EST. LABOR TIME",  de: "GESCH. ARBEITSZEIT" },
  labelEstimate:      { en: "ESTIMATE",         de: "SCHÄTZUNG" },
  labelOperations:    { en: "Operations",       de: "Arbeitsschritte" },

  // GutachtenDamageCard
  damageDetectedGutachten: { en: "{type} detected on the {part} in the {location} area.", de: "{type} an {part} im Bereich {location} erkannt." },
  labelAffectedPart:       { en: "Affected part", de: "Betroffenes Teil" },

  // Workshop referral detail
  offerTitle:               { en: "Make an offer",                                                                  de: "Angebot abgeben" },
  offerValueLabel:          { en: "Offer value",                                                                    de: "Angebotswert" },
  offerMin:                 { en: "Minimum",                                                                        de: "Minimum" },
  offerMax:                 { en: "Maximum",                                                                        de: "Maximum" },
  offerInspectionRequired:  { en: "Close vehicle inspection required",                                              de: "Persönliche Begutachtung erforderlich" },
  offerInspectionHint:      { en: "A hands-on inspection is needed before a final quote can be confirmed.",         de: "Vor einem verbindlichen Angebot ist eine Untersuchung vor Ort erforderlich." },
  offerWorkingDays:         { en: "Estimated working days",                                                         de: "Geschätzte Arbeitstage" },
  offerDropoffDate:         { en: "Earliest drop-off date",                                                         de: "Frühester Abgabetermin" },
  offerUploadQuote:         { en: "Upload quote",                                                                   de: "Angebot hochladen" },
  optional:                 { en: "Optional",                                                                       de: "Optional" },
  clickToReplace:           { en: "Click to replace",                                                               de: "Zum Ersetzen klicken" },
  dropAFile:                { en: "Drop a file or",                                                                 de: "Datei hierher ziehen oder" },
  browse:                   { en: "browse",                                                                         de: "durchsuchen" },
  offerTipText:             { en: "A non-binding quote showing your cost breakdown increases your chance of being selected by 34%. It signals professionalism and helps customers make a confident decision.", de: "Ein unverbindliches Angebot mit Ihrer Kostenaufstellung erhöht Ihre Chance, ausgewählt zu werden, um 34 %. Es zeigt Professionalität und hilft Kunden, sich sicher zu entscheiden." },
  submitting:               { en: "Submitting…",                                                                    de: "Wird gesendet…" },
  submitOffer:              { en: "Submit offer",                                                                   de: "Angebot absenden" },
  errSubmitOffer:           { en: "Couldn't submit your offer. Please try again.",                                  de: "Ihr Angebot konnte nicht gesendet werden. Bitte versuchen Sie es erneut." },
  errDeclineReferral:       { en: "Couldn't decline this referral. Please try again.",                              de: "Diese Vermittlung konnte nicht abgelehnt werden. Bitte versuchen Sie es erneut." },
  declineReferralTitle:     { en: "Decline this referral?",                                                         de: "Diese Vermittlung ablehnen?" },
  declineReferralConfirm:   { en: "Yes, decline referral",                                                         de: "Ja, Vermittlung ablehnen" },
  declineReferralBody:      { en: "By declining, you are indicating that you are not interested in taking on this repair case.", de: "Mit der Ablehnung erklären Sie, dass Sie diesen Reparaturauftrag nicht übernehmen möchten." },
  cannotBeUndone:           { en: "This action cannot be undone",                                                   de: "Diese Aktion kann nicht rückgängig gemacht werden" },
  referralWillBeDeclined:   { en: " — the referral will be marked as declined.",                                    de: " – die Vermittlung wird als abgelehnt markiert." },

  // Detail page labels (shared workshop+gutachten)
  labelReferralId:        { en: "Referral ID",        de: "Vermittlungs-ID" },
  labelInspection:        { en: "Inspection",          de: "Analyse" },
  labelVehicle:           { en: "Vehicle",             de: "Fahrzeug" },
  labelVin:               { en: "VIN",                 de: "FIN" },
  labelReceived:          { en: "Received",             de: "Erhalten" },
  labelRespondBy:         { en: "Respond by",          de: "Antwort bis" },
  labelParts:             { en: "Parts",               de: "Teile" },
  labelDamages:           { en: "Damages",             de: "Schäden" },
  labelDamageDescription: { en: "Damage description",  de: "Schadensbeschreibung" },
  statLaborHours:         { en: "Est. labor hours",    de: "Gesch. Arbeitsstunden" },
  statRepairCost:         { en: "Est. repair cost",    de: "Gesch. Reparaturkosten" },
  btnMakeOffer:           { en: "Make an offer",       de: "Angebot abgeben" },
  btnDecline:             { en: "Decline",             de: "Ablehnen" },
  referralStatus:         { en: "Referral Status",     de: "Vermittlungsstatus" },

  // Gutachten referral detail
  declineCaseTitle:         { en: "Decline this case?",                                                     de: "Diesen Fall ablehnen?" },
  declineCaseConfirm:       { en: "Decline case",                                                           de: "Fall ablehnen" },
  declineCaseBody:          { en: "By declining, you indicate you are unable to conduct the assessment for this case.", de: "Mit der Ablehnung erklären Sie, dass Sie die Begutachtung für diesen Fall nicht durchführen können." },
  cannotBeUndoneShort:      { en: "This cannot be undone.",                                                  de: "Dies kann nicht rückgängig gemacht werden." },
  acceptCaseTitle:          { en: "Accept assessment case",                                                  de: "Begutachtungsfall annehmen" },
  acceptCaseSubtitle:       { en: "Confirm you will conduct the Gutachten for {vehicle}.",                   de: "Bestätigen Sie, dass Sie das Gutachten für {vehicle} durchführen." },
  estimatedTimeDays:        { en: "Estimated time (days)",                                                   de: "Geschätzte Dauer (Tage)" },
  availableAppointmentTimes:{ en: "Available appointment times",                                             de: "Verfügbare Termine" },
  to:                       { en: "to",                                                                      de: "bis" },
  notesLabel:               { en: "Notes",                                                                   de: "Notizen" },
  optionalParens:           { en: "(optional)",                                                              de: "(optional)" },
  notesPlaceholder:         { en: "Any preliminary remarks for the customer…",                               de: "Vorab-Anmerkungen für den Kunden…" },
  notifyCustomer:           { en: "We will notify the customer to book an appointment with you.",            de: "Wir benachrichtigen den Kunden, damit er einen Termin bei Ihnen bucht." },
  confirm:                  { en: "Confirm",                                                                 de: "Bestätigen" },
  errAcceptCase:            { en: "Couldn't accept this case. Please try again.",                            de: "Dieser Fall konnte nicht angenommen werden. Bitte versuchen Sie es erneut." },
  errDeclineCase:           { en: "Couldn't decline this case. Please try again.",                          de: "Dieser Fall konnte nicht abgelehnt werden. Bitte versuchen Sie es erneut." },
  labelCaseId:              { en: "Case ID",                                                                 de: "Fall-ID" },
  btnAcceptCase:            { en: "Accept case",                                                             de: "Fall annehmen" },
  caseStatus:               { en: "Case Status",                                                             de: "Fallstatus" },

  // DashReferrals tab
  tabReferrals:            { en: "Referrals",                    de: "Vermittlungen" },
  statNewReferrals:        { en: "New referrals",               de: "Neue Vermittlungen" },
  statNewReferralsSub:     { en: "In the last 48 hours",        de: "In den letzten 48 Stunden" },
  statOpenReferrals:       { en: "Open referrals",              de: "Offene Vermittlungen" },
  statOpenReferralsSub:    { en: "In progress",                 de: "In Bearbeitung" },
  statAvgJob:              { en: "Avg. job",                    de: "Ø Auftrag" },
  statAvgJobSub:           { en: "Across referrals",            de: "Über alle Vermittlungen" },
  statTotalReferrals:      { en: "Total referrals",             de: "Vermittlungen gesamt" },
  statTotalReferralsSub:   { en: "All time",                    de: "Seit Beginn" },
  errLoadReferrals:        { en: "Couldn't load your referrals ({error}).", de: "Ihre Vermittlungen konnten nicht geladen werden ({error})." },
  profileUnderReview:      { en: "Your profile is under review.",           de: "Ihr Profil wird derzeit geprüft." },
  profileUnderReviewSub:   { en: "We'll email you once your account is verified — usually within 24 hours.", de: "Wir benachrichtigen Sie per E-Mail, sobald Ihr Konto verifiziert ist – in der Regel innerhalb von 24 Stunden." },
  finishSetup:             { en: "Finish setting up your account.",          de: "Schließen Sie die Einrichtung Ihres Kontos ab." },
  finishSetupNeed:         { en: "We still need {list} before you can receive referrals.", de: "Wir benötigen noch {list}, bevor Sie Vermittlungen erhalten können." },
  missingBusinessDetails:  { en: "your business details",     de: "Ihre Unternehmensdaten" },
  missingBusinessReg:      { en: "a business registration",   de: "eine Gewerbeanmeldung" },
  missingCertifications:   { en: "your certifications",       de: "Ihre Zertifikate" },
  missingPaymentMethod:    { en: "a payment method",          de: "eine Zahlungsmethode" },
  completeInSettings:      { en: "Complete in Settings",      de: "In den Einstellungen vervollständigen" },
  addPaymentMethod:        { en: "Add payment method",        de: "Zahlungsmethode hinzufügen" },
  responseWindowTitle:     { en: "48-hour response window.",  de: "48-Stunden-Frist." },
  responseWindowBody:      { en: "New referrals are exclusively yours for 48 hours. Accept to claim the lead — once the window closes, the referral will be reassigned to another partner.", de: "Neue Vermittlungen gehören 48 Stunden exklusiv Ihnen. Nehmen Sie an, um die Vermittlung zu sichern. Läuft das Fenster ab, wird sie an einen anderen Partner weitergegeben." },
  filterAll:               { en: "All",                       de: "Alle" },
  loadingReferrals:        { en: "Loading your referrals…",   de: "Ihre Vermittlungen werden geladen…" },
  noReferrals:             { en: "No referrals match this filter.", de: "Keine Vermittlungen entsprechen diesem Filter." },
  loadingReferral:         { en: "Loading referral…",         de: "Vermittlung wird geladen…" },
  referralNotFound:        { en: "Referral not found",        de: "Vermittlung nicht gefunden" },
  referralNotFoundBody:    { en: "We couldn't find a referral with this reference.", de: "Zu dieser Referenz konnten wir keine Vermittlung finden." },
  backToReferralsList:     { en: "Back to referrals",         de: "Zurück zu den Vermittlungen" },

  // Sidebar
  sidebarTitle:       { en: "Partner Portal", de: "Partner-Portal" },
  tabPayments:        { en: "Payments",       de: "Zahlungen" },
  tabSettings:        { en: "Settings",       de: "Einstellungen" },
  signOut:            { en: "Sign out",       de: "Abmelden" },
  viewModeWorkshop:   { en: "Workshop",       de: "Werkstatt" },
  viewModeGutachten:  { en: "Gutachten",      de: "Gutachten" },

  // DashPayments
  payPerReferral:         { en: "Pay-per-referral",       de: "Bezahlung pro Vermittlung" },
  tagNoSubscription:      { en: "No subscription",        de: "Kein Abo" },
  tagNoUpfrontCost:       { en: "No upfront cost",        de: "Keine Vorabkosten" },
  tagPayOnly:             { en: "Pay only for referrals made", de: "Sie zahlen nur für vermittelte Aufträge" },
  tagCancelAnytime:       { en: "Cancel anytime",         de: "Jederzeit kündbar" },
  tagNoHiddenFees:        { en: "No hidden fees",         de: "Keine versteckten Gebühren" },
  perReferral:            { en: "per referral",           de: "pro Vermittlung" },
  billingCard:            { en: "Billing card",           de: "Abrechnungskarte" },
  sessionOpening:         { en: "Opening…",               de: "Wird geöffnet…" },
  managePaymentMethods:   { en: "Manage Payment Methods", de: "Zahlungsmethoden verwalten" },
  addPaymentMethodBtn:    { en: "Add Payment Method",     de: "Zahlungsmethode hinzufügen" },
  loadingPaymentMethod:   { en: "Loading payment method…", de: "Zahlungsmethode wird geladen…" },
  noPaymentMethod:        { en: "No payment method has been added yet — add a card, wallet, or Link email, or grant SEPA Direct Debit authorisation to start receiving referrals.", de: "Es wurde noch keine Zahlungsmethode hinzugefügt. Fügen Sie eine Karte, ein Wallet oder eine Link-E-Mail hinzu oder erteilen Sie ein SEPA-Lastschriftmandat, um Vermittlungen zu erhalten." },
  nextCharge:             { en: "Next charge",            de: "Nächste Abbuchung" },
  autoBilledOn:           { en: "Auto-billed on {date}",  de: "Automatische Abbuchung am {date}" },
  invoiceHistory:         { en: "Invoice history",        de: "Rechnungsverlauf" },
  invoiceColInvoice:      { en: "Invoice",                de: "Rechnung" },
  invoiceColDate:         { en: "Date",                   de: "Datum" },
  invoiceColAmount:       { en: "Amount",                 de: "Betrag" },
  loadingInvoices:        { en: "Loading invoices…",      de: "Rechnungen werden geladen…" },
  billingNotSetUp:        { en: "Billing isn't set up yet — invoices will appear once your first charge is issued.", de: "Die Abrechnung ist noch nicht eingerichtet. Rechnungen erscheinen, sobald Ihre erste Abbuchung erfolgt." },
  errLoadInvoices:        { en: "Couldn't load invoices ({error}).", de: "Rechnungen konnten nicht geladen werden ({error})." },
  noInvoices:             { en: "No invoices yet.",       de: "Noch keine Rechnungen." },
  cardExpires:            { en: "Expires {exp}",          de: "Gültig bis {exp}" },

  // DashSettings
  settingsSubtitle:        { en: "Manage your partner profile and preferences", de: "Verwalten Sie Ihr Partnerprofil und Ihre Einstellungen" },
  businessInfo:            { en: "Business information",    de: "Unternehmensdaten" },
  fieldContactName:        { en: "Contact name",            de: "Ansprechpartner" },
  fieldBusinessName:       { en: "Business name",           de: "Firmenname" },
  fieldContactEmail:       { en: "Contact email",           de: "Kontakt-E-Mail" },
  emailVerified:           { en: "Verified",                de: "Verifiziert" },
  emailUnverified:         { en: "Unverified",              de: "Nicht verifiziert" },
  fieldStreet:             { en: "Street",                  de: "Straße" },
  fieldHouseNumber:        { en: "House number",            de: "Hausnummer" },
  fieldPostcode:           { en: "Postcode",                de: "Postleitzahl" },
  fieldCity:               { en: "City",                    de: "Stadt" },
  fieldServicesOffered:    { en: "Services offered",        de: "Angebotene Leistungen" },
  saving:                  { en: "Saving…",                 de: "Wird gespeichert…" },
  saveChanges:             { en: "Save changes",            de: "Änderungen speichern" },
  saved:                   { en: "✓ Saved",                 de: "✓ Gespeichert" },
  documentsSection:        { en: "Documents",               de: "Dokumente" },
  changePassword:          { en: "Change password",         de: "Passwort ändern" },
  fieldCurrentPassword:    { en: "Current password",        de: "Aktuelles Passwort" },
  fieldNewPassword:        { en: "New password",            de: "Neues Passwort" },
  fieldConfirmNewPassword: { en: "Confirm new password",    de: "Neues Passwort bestätigen" },
  updating:                { en: "Updating…",               de: "Wird aktualisiert…" },
  updatePassword:          { en: "Update password",         de: "Passwort aktualisieren" },
  passwordUpdated:         { en: "Password updated",        de: "Passwort aktualisiert" },
  errNoCurrentPw:          { en: "Enter your current password.",                    de: "Geben Sie Ihr aktuelles Passwort ein." },
  errPwTooShort:           { en: "New password must be at least 8 characters.",     de: "Das neue Passwort muss mindestens 8 Zeichen lang sein." },
  errPwMismatch:           { en: "Passwords don't match.",                          de: "Die Passwörter stimmen nicht überein." },
  errUpdatePw:             { en: "Couldn't update your password. Please try again.", de: "Ihr Passwort konnte nicht aktualisiert werden. Bitte versuchen Sie es erneut." },
  errSaveSettings:         { en: "Couldn't save your changes. Please try again.",   de: "Ihre Änderungen konnten nicht gespeichert werden. Bitte versuchen Sie es erneut." },
  accountSection:          { en: "Account",                                         de: "Konto" },
  signOutDescription:      { en: "Sign out of the partner portal on this device.",  de: "Melden Sie sich auf diesem Gerät vom Partner-Portal ab." },

  // DocumentsSection
  businessRegistration: { en: "Business registration", de: "Gewerbeanmeldung" },
  certifications:       { en: "Certifications",         de: "Zertifikate" },
  replaceDocument:      { en: "Replace document",       de: "Dokument ersetzen" },
  uploadDocument:       { en: "Upload document",        de: "Dokument hochladen" },
  uploadFiles:          { en: { one: "Upload {count} file", other: "Upload {count} files" }, de: { one: "{count} Datei hochladen", other: "{count} Dateien hochladen" } },
  errDownloadDoc:       { en: "Couldn't download the document. Please try again.",  de: "Das Dokument konnte nicht heruntergeladen werden. Bitte versuchen Sie es erneut." },
  errDeleteDoc:         { en: "Couldn't delete the document. Please try again.",    de: "Das Dokument konnte nicht gelöscht werden. Bitte versuchen Sie es erneut." },
  errUploadDoc:         { en: "Couldn't upload the document. Please try again.",    de: "Das Dokument konnte nicht hochgeladen werden. Bitte versuchen Sie es erneut." },
  errUploadDocs:        { en: "Couldn't upload the documents. Please try again.",   de: "Die Dokumente konnten nicht hochgeladen werden. Bitte versuchen Sie es erneut." },

  // PendingRow
  readyToUpload: { en: "Ready to upload", de: "Bereit zum Hochladen" },

  // DropZone
  dropZoneMultiple:      { en: "Choose files or drag & drop them here",   de: "Dateien auswählen oder hierher ziehen" },
  dropZoneSingle:        { en: "Choose a file or drag & drop it here",    de: "Datei auswählen oder hierher ziehen" },
  dropZoneClickToReplace:{ en: "{size} KB · Click browse to replace",     de: "{size} KB · Zum Ersetzen durchsuchen" },
  browseFiles:           { en: "Browse files", de: "Dateien durchsuchen" },
  browseFile:            { en: "Browse file",  de: "Datei durchsuchen" },

  // OnboardingModal
  onboardStep1Title:    { en: "Complete your profile",   de: "Profil vervollständigen" },
  onboardStep2Title:    { en: "Add payment method",      de: "Zahlungsmethode hinzufügen" },
  onboardStep1Subtitle: { en: "Tell us about your business so customers can find and trust you.", de: "Erzählen Sie uns von Ihrem Unternehmen, damit Kunden Sie finden und Ihnen vertrauen können." },
  onboardStep2Subtitle: { en: "Securely add a card to pay for referrals. You're only charged when you receive a lead.", de: "Fügen Sie sicher eine Karte hinzu, um für Vermittlungen zu zahlen. Eine Abbuchung erfolgt nur, wenn Sie eine Vermittlung erhalten." },
  sectionPaymentMethod: { en: "Payment method",          de: "Zahlungsmethode" },
  fieldYourName:        { en: "Your name",               de: "Ihr Name" },
  fieldPhoneNumber:     { en: "Phone number",            de: "Telefonnummer" },
  stripeSetupTitle:     { en: "Secure card setup via Stripe", de: "Sichere Karteneinrichtung über Stripe" },
  stripeSetupBody:      { en: "You'll be redirected to Stripe to add your card. OttoKlar never sees or stores your card details.", de: "Sie werden zu Stripe weitergeleitet, um Ihre Karte hinzuzufügen. OttoKlar sieht oder speichert Ihre Kartendaten zu keinem Zeitpunkt." },
  benefitNoCharge:      { en: "No referral, no charge — you only pay when you receive a lead", de: "Keine Vermittlung, keine Kosten – Sie zahlen nur, wenn Sie eine erhalten" },
  benefitFreeToJoin:    { en: "Free to join — no subscription, no hidden fees",                 de: "Kostenlos teilnehmen – kein Abo, keine versteckten Gebühren" },
  benefitNoCommission:  { en: "No platform commission — the customer relationship is yours",    de: "Keine Plattform-Provision – die Kundenbeziehung gehört Ihnen" },
  back:                 { en: "Back",                    de: "Zurück" },
  continue:             { en: "Continue",                de: "Weiter" },
  listYourBusiness:     { en: "List your business & receive referrals", de: "Unternehmen listen & Vermittlungen erhalten" },
  redirecting:          { en: "Redirecting…",            de: "Weiterleitung…" },
  legalAgree:           { en: "By listing your business you agree to our", de: "Mit der Listung Ihres Unternehmens akzeptieren Sie unsere" },
  legalTerms:           { en: "terms and conditions",   de: "AGB" },
  legalAnd:             { en: "and",                    de: "und" },
  legalPrivacy:         { en: "privacy policy",         de: "Datenschutzerklärung" },
  errSaveDetails:       { en: "Could not save your details. Please try again.",    de: "Ihre Angaben konnten nicht gespeichert werden. Bitte versuchen Sie es erneut." },
  errCardSetup:         { en: "Could not start card setup. Please try again.",     de: "Die Karteneinrichtung konnte nicht gestartet werden. Bitte versuchen Sie es erneut." },

  // Damage count pluralization
  damageCount: { en: { one: "{count} damage", other: "{count} damages" }, de: { one: "{count} Schaden", other: "{count} Schäden" } },

  // DashUserChip
  partnerTypeLabel: { en: "{type} Partner", de: "{type}-Partner" },
  partnerLabel:     { en: "Partner",        de: "Partner" },

  // Photo alt text
  inspectionPhotoAlt: { en: "Inspection photo",       de: "Analysefoto" },
  vehicleDiagramAlt:  { en: "Vehicle damage diagram", de: "Fahrzeug-Schadensdiagramm" },

  // useInspection hook — catch error fallback (short, no detail suffix)
  inspectionLoadError: { en: "Couldn't load inspection", de: "Analyse konnte nicht geladen werden" },

  // PARTNER_SERVICES labels (rendered at call sites)
  service_Paintwork:               { en: "Paintwork",                de: "Lackierarbeiten" },
  service_BodyAndStructuralRepair: { en: "Body & Structural Repair", de: "Karosserie- & Strukturreparatur" },
  service_WindscreenAndGlass:      { en: "Windscreen & Glass",       de: "Windschutzscheibe & Glas" },
  service_WheelAlignmentAndTyres:  { en: "Wheel Alignment & Tyres",  de: "Achsvermessung & Reifen" },
  service_MechanicalRepair:        { en: "Mechanical Repair",        de: "Mechanische Reparatur" },
  service_ElectricalAndDiagnostics:{ en: "Electrical & Diagnostics", de: "Elektrik & Diagnose" },
  service_TrimAndCustomization:    { en: "Trim & Customization",     de: "Innenausstattung & Individualisierung" },

  // Detail page — "Location" label (title-case; distinct from uppercase "LOCATION" damage-card label)
  labelLocationDetail: { en: "Location", de: "Bereich" },

  // Workshop offer modal subtitle
  offerSubtitle: { en: "Submit your offer for {id} — {vehicle}", de: "Geben Sie Ihr Angebot für {id} ab – {vehicle}" },

  // Tip prefix in offer modal
  tipLabel: { en: "Tip:", de: "Tipp:" },

  // Straggler cleanup (controller pass): billing errors, dropzone hints, icon tooltips, onboarding placeholders
  errBillingPortal: { en: "Could not open the billing portal.", de: "Das Abrechnungsportal konnte nicht geöffnet werden." },
  errPaymentSetup:  { en: "Could not start payment setup.", de: "Die Zahlungseinrichtung konnte nicht gestartet werden." },
  dropHintDoc:      { en: "PDF, JPG or PNG · max 10 MB", de: "PDF, JPG oder PNG · max. 10 MB" },
  dropHintCert:     { en: "Meisterbetrieb, TÜV, OEM cert. · PDF or image · add several at once", de: "Meisterbetrieb, TÜV, OEM-Zert. · PDF oder Bild · mehrere auf einmal hinzufügen" },
  tipDownload:      { en: "Download", de: "Herunterladen" },
  tipDelete:        { en: "Delete", de: "Löschen" },
  tipRemove:        { en: "Remove", de: "Entfernen" },
  tipClose:         { en: "Close", de: "Schließen" },
  phName:           { en: "Anna Müller", de: "Anna Müller" },
  phBizName:        { en: "Autohaus Müller GmbH", de: "Autohaus Müller GmbH" },
  phStreet:         { en: "Musterstraße", de: "Musterstraße" },
  phCity:           { en: "München", de: "München" },
  phMinChars:       { en: "min. 8 characters", de: "mind. 8 Zeichen" },
  uploading:        { en: "Uploading…", de: "Wird hochgeladen…" },
  phWorkingDays:    { en: "e.g. 3", de: "z. B. 3" },
  phEstDays:        { en: "e.g. 2", de: "z. B. 2" },
});
