// i18n — Client-side internationalization for paliad
// Supports DE (German) and EN (English)

import { FIRM } from "../branding";
import type { I18nKey } from "../i18n-keys";

export type { I18nKey };

export type Lang = "de" | "en";


const STORAGE_KEY = "paliad-lang";
const LEGACY_STORAGE_KEY = "patholo-lang";

let currentLang: Lang = "de";
const changeCallbacks: Array<() => void> = [];

const translations: Record<Lang, Record<string, string>> = {
  de: {
    // Navigation
    "nav.home": "Home",
    "nav.kostenrechner": "Kostenrechner",
    "nav.downloads": "Downloads",
    "nav.links": "Links",
    "nav.glossar": "Glossar",
    "nav.gebuehrentabellen": "Geb\u00fchrentabellen",
    "nav.checklisten": "Checklisten",
    "nav.submissions": "Schriftsätze",
    "nav.gerichte": "Gerichte",
    "nav.logout": "Abmelden",
    "nav.akten": "Akten",
    "nav.projekte": "Projekte",
    "nav.fristen": "Fristen",
    "nav.termine": "Termine",
    "nav.dashboard": "Dashboard",
    "nav.agenda": "Agenda",
    "nav.inbox": "Genehmigungen",
    "nav.paliadin": "Paliadin",
    "nav.team": "Team",
    "nav.group.uebersicht": "\u00dcbersicht",
    "nav.group.ansichten": "Ansichten",
    "nav.group.werkzeuge": "Werkzeuge",
    "nav.neuigkeiten": "Neuigkeiten",
    "nav.soon.tooltip": "Bald verf\u00fcgbar",

    // Theme toggle (m/paliad#2). The button cycles auto \u2192 light \u2192 dark
    // \u2192 auto. The "toggle.<pref>" keys show the *current* pref next to
    // the icon; the "cycle.<pref>" keys describe WHAT the next click will
    // do (read by aria-label / tooltip).
    "theme.toggle.auto": "Auto",
    "theme.toggle.light": "Hell",
    "theme.toggle.dark": "Dunkel",
    "theme.toggle.cycle.auto": "Auf Hell-Modus wechseln",
    "theme.toggle.cycle.light": "Auf Dunkel-Modus wechseln",
    "theme.toggle.cycle.dark": "Auf Auto wechseln (System)",

    // BottomNav (mobile)
    "bottomnav.add": "Anlegen",
    "bottomnav.menu": "Menü",
    "bottomnav.add.title": "Schnell anlegen",
    "bottomnav.add.deadline": "Frist anlegen",
    "bottomnav.add.deadline.sub": "Neue Frist mit Datum & Projekt",
    "bottomnav.add.appointment": "Termin anlegen",
    "bottomnav.add.appointment.sub": "Neuer Termin mit Uhrzeit & Ort",
    "bottomnav.add.project": "Projekt anlegen",
    "bottomnav.add.project.sub": "Neues Mandat / Verfahren / Patent",
    "bottomnav.add.cancel": "Abbrechen",
    "bottomnav.badge.deadlines": "{overdue} überfällig + {today} heute fällig",

    // Changelog (What's New) — t-paliad-027
    "changelog.title": "Neuigkeiten — Paliad",
    "changelog.heading": "Neuigkeiten",
    "changelog.subtitle": "Was sich in Paliad in letzter Zeit getan hat.",
    "changelog.empty": "Noch keine Eintr\u00e4ge.",
    "changelog.tag.feature": "Neu",
    "changelog.tag.content": "Inhalt",
    "changelog.tag.fix": "Fix",

    // Footer
    "footer.text": "\u00a9 2026 Paliad \u2014 by",

    // Landing page
    "index.title": `Paliad \u2014 Patent Litigation f\u00fcr ${FIRM}`,
    "index.hero.accent": `f\u00fcr ${FIRM}`,
    "index.hero.sub": `Administration, Knowledge und Tools f\u00fcr das ${FIRM} Patent-Team.`,
    "index.guides.title": "Leitf\u00e4den",
    "index.guides.desc": "Praxisleitf\u00e4den zu Verfahren vor dem EPA, BPatG und UPC. Schritt-f\u00fcr-Schritt-Anleitungen f\u00fcr typische Workflows.",
    "index.templates.title": "Vorlagen",
    "index.templates.desc": `Standardisierte Vorlagen f\u00fcr Schrifts\u00e4tze, Korrespondenz und interne Dokumente. ${FIRM} Patents Style Guide.`,
    "index.documents.title": "Dokumente",
    "index.documents.desc": "Referenzmaterialien, Checklisten und Arbeitshilfen f\u00fcr den Praxisalltag im Patentrecht.",
    "index.tools": "Werkzeuge",
    "index.cost.title": "Kostenrechner",
    "index.cost.desc": "Sch\u00e4tzung der Verfahrenskosten f\u00fcr DE-Gerichte, UPC und EPA-Verfahren. Gerichts- und Anwaltskosten auf einen Blick.",
    "index.deadline.title": "Fristenrechner",
    "index.deadline.desc": "Berechnung von Verfahrensfristen f\u00fcr UPC-, deutsche und EPA-Verfahren mit Feiertags-Anpassung.",
    "index.glossar.title": "Patentglossar",
    "index.glossar.desc": "Zweisprachiges DE/EN-Glossar der wichtigsten Begriffe im Patentrecht. Durchsuchbar nach Kategorien.",
    "index.downloads": "Downloads",
    "index.style.title": `${FIRM} Patents Style`,
    "index.style.desc": `Word-Vorlage im ${FIRM} Patents Style. Formatierung, Schriftarten und Makros f\u00fcr standardisierte Schrifts\u00e4tze.`,
    "index.offices": "Standorte",
    "index.office.munich": "M\u00fcnchen",
    "index.office.duesseldorf": "D\u00fcsseldorf",
    "index.office.hamburg": "Hamburg",
    "index.office.amsterdam": "Amsterdam",
    "index.office.london": "London",
    "index.office.paris": "Paris",
    "index.office.milan": "Mailand",

    // Login
    "login.title": "Anmelden \u2014 Paliad",
    "login.tab.login": "Anmelden",
    "login.tab.register": "Registrieren",
    "login.email": "E-Mail",
    "login.password": "Passwort",
    "login.password.placeholder": "Passwort",
    "login.submit": "Anmelden",
    "login.confirm": "Passwort best\u00e4tigen",
    "login.confirm.placeholder": "Passwort wiederholen",
    "login.minchars": "Mind. 8 Zeichen",
    "login.register.submit": "Registrieren",
    "login.hint": `Nur f\u00fcr autorisierte ${FIRM}-E-Mail-Adressen.`,
    "login.error.connection": "Verbindungsfehler. Bitte versuchen Sie es erneut.",
    "login.error.mismatch": "Passw\u00f6rter stimmen nicht \u00fcberein.",
    "login.error.minlength": "Passwort muss mindestens 8 Zeichen lang sein.",
    "login.success.created": "Account erstellt. Bitte melden Sie sich an.",

    // Kostenrechner
    "kosten.title": "Prozesskostenrechner \u2014 Paliad",
    "kosten.heading": "Prozesskostenrechner",
    "kosten.subtitle": "Sch\u00e4tzung der Verfahrenskosten f\u00fcr Patentverletzungs-, Nichtigkeits- und EPA-Verfahren.",
    "kosten.streitwert": "Streitwert",
    "kosten.vat": "MwSt",
    "kosten.vat.foreign": "0% (Ausland)",
    "kosten.de.infringement": "DE Verletzungsverfahren",
    "kosten.de.nullity": "DE Nichtigkeitsverfahren",
    "kosten.upc": "UPC",
    "kosten.epa": "EPA",
    "kosten.inst.lg": "LG (Verletzung 1. Instanz)",
    "kosten.inst.olg": "OLG (Berufung)",
    "kosten.inst.bgh_nzb": "BGH (Nichtzulassungsbeschwerde)",
    "kosten.inst.bgh_rev": "BGH (Revision)",
    "kosten.inst.bpatg": "BPatG (Nichtigkeitsverfahren)",
    "kosten.inst.bgh_nullity": "BGH (Nichtigkeitsberufung)",
    "kosten.inst.upc_first": "UPC (1. Instanz)",
    "kosten.inst.upc_appeal": "UPC (Berufung)",
    "kosten.inst.epa_opposition": "Einspruch",
    "kosten.inst.epa_appeal": "Einspruchsbeschwerde",
    "kosten.fee.version": "Geb\u00fchrenversion:",
    "kosten.fee.schedule": "Geb\u00fchrenordnung:",
    "kosten.fee.from2026": "Ab 2026",
    "kosten.fee.pre2026": "Vor 2026",
    "kosten.fee.current": "Aktuell (2025)",
    "kosten.attorneys": "Rechtsanw\u00e4lte:",
    "kosten.patent.attorneys": "Patentanw\u00e4lte:",
    "kosten.clients": "Mandanten:",
    "kosten.oral.hearing": "M\u00fcndl. Verhandlung",
    "kosten.revocation": "Widerklage auf Nichtigkeit",
    "kosten.total": "Gesamtkosten",
    "kosten.empty": "W\u00e4hlen Sie mindestens eine Instanz.",
    "kosten.print": "Drucken",
    "kosten.court.fees": "Gerichtskosten",
    "kosten.attorney.fees": "Anwaltskosten (RA)",
    "kosten.patent.attorney.fees": "Patentanwaltskosten (PA)",
    "kosten.epa.fees": "EPA-Geb\u00fchren",
    "kosten.attorney.label": "Rechtsanwalt",
    "kosten.patent.attorney.label": "Patentanwalt",
    "kosten.detail.procedure": "Verfahrensgeb.",
    "kosten.detail.increase": "Erh\u00f6hung",
    "kosten.detail.hearing": "Terminsgeb.",
    "kosten.detail.lump": "Pauschale",
    "kosten.detail.vat": "MwSt",
    "kosten.detail.total": "Gesamt",
    "kosten.upc.fixed": "Festgeb\u00fchr",
    "kosten.upc.value": "Streitwertabh. Geb\u00fchr",
    "kosten.upc.court.total": "Gerichtskosten gesamt",
    "kosten.upc.sme": "KMU-Reduzierung",
    "kosten.upc.recoverable": "Erstattungsf\u00e4hige Kosten (Obergrenze)",
    "kosten.epa.official": "Amtsgeb\u00fchr",
    "kosten.epa.note": "Anwaltskosten nach Zeitaufwand (nicht RVG-basiert).",
    "kosten.share": "Link kopieren",
    "kosten.share.copied": "Link kopiert!",
    "kosten.compare": "Vergleichen",
    "kosten.compare.exit": "Vergleich beenden",
    "kosten.scenario.a": "Szenario A",
    "kosten.scenario.b": "Szenario B",
    "kosten.scenario.diff": "Differenz",
    "kosten.print.title": "Kostenberechnung",
    "kosten.print.date": "Datum",
    "kosten.print.streitwert": "Streitwert",
    "kosten.print.vat": "MwSt-Satz",
    "kosten.print.instances": "Instanzen",
    "kosten.print.disclaimer": "Dieses Dokument dient ausschlie\u00dflich der internen Verwendung und stellt keine Rechtsberatung dar. Alle Angaben ohne Gew\u00e4hr.",

    // Fristenrechner
    "deadlines.title": "Fristenrechner \u2014 Paliad",
    "deadlines.heading": "Fristenrechner",
    "deadlines.subtitle": "Berechnung von Verfahrensfristen f\u00fcr UPC-, deutsche und EPA-Verfahren.",

    // Unified procedural-events tool (m/paliad#151)
    "procedures.title": "Verfahren & Fristen \u2014 Paliad",
    "procedures.heading": "Verfahren & Fristen",
    "procedures.subtitle": "Verfahrensablauf, Fristenrechner und gef\u00fchrte Suche in einem Tool.",
    "procedures.filter.search.placeholder": "Klageerhebung, Hinweisbeschluss, oral hearing\u2026",
    "procedures.filter.axis.forum": "Forum:",
    "procedures.filter.axis.proc": "Verfahren:",
    "procedures.filter.axis.kind": "Ereignisart:",
    "procedures.filter.axis.party": "Partei:",
    "procedures.tab.proceeding": "Verfahren w\u00e4hlen",
    "procedures.tab.search": "Direkt suchen",
    "procedures.tab.wizard": "Gef\u00fchrt",
    "procedures.tab.akte": "Aus Akte",
    "procedures.panel.akte.placeholder": "Akten-Einstieg folgt in einem sp\u00e4teren Slice.",
    "nav.procedures": "Verfahren & Fristen",

    // Litigation Builder (m/paliad#153 B1+B2)
    "builder.subtitle": "Litigation Builder \u2014 Szenarien bauen, Verfahren stapeln, Fristen behalten.",
    "builder.header.scenario": "Szenario:",
    "builder.header.akte": "Akte:",
    "builder.header.stichtag": "Stichtag:",
    "builder.header.search": "Suche:",
    "builder.akte.none": "\u2014 ohne \u2014",
    "builder.akte.banner.prefix": "Aus Akte:",
    "builder.search.placeholder": "Ereignis, Szenario, Akte \u2026",
    "builder.action.rename": "Benennen",
    "builder.action.rename.prompt": "Name f\u00fcr dieses Szenario:",
    "builder.action.share": "Teilen",
    "builder.action.promote": "Als Projekt anlegen",
    "builder.mode.cold": "\u00dcbersicht",
    "builder.mode.event": "Ereignis",
    "builder.mode.akte": "Aus Akte",
    "builder.panel.title": "Meine Szenarien",
    "builder.panel.new": "+ Neues Szenario",
    "builder.panel.empty": "Noch keine Szenarien.",
    "builder.bucket.active": "Aktiv",
    "builder.empty.headline": "Noch kein Szenario ge\u00f6ffnet.",
    "builder.empty.hint": "Starte ein neues Szenario, w\u00e4hle aus deiner Liste oder \u00fcbernimm eine Akte (B4).",
    "builder.empty.cta": "Neues Szenario starten",
    "builder.empty.recent": "Zuletzt bearbeitet",
    "builder.picker.placeholder": "\u2014 Szenario w\u00e4hlen \u2014",
    "builder.picker.title": "Verfahren hinzuf\u00fcgen",
    "builder.picker.close": "Schlie\u00dfen",
    "builder.picker.aria": "Verfahren ausw\u00e4hlen",
    "builder.picker.axis.forum": "Forum:",
    "builder.picker.axis.proc": "Verfahren:",
    "builder.picker.empty": "Keine Verfahren verf\u00fcgbar.",
    "builder.picker.future_jurisdiction": "Andere Foren folgen sp\u00e4ter.",
    "builder.canvas.add_proceeding": "+ Verfahren hinzuf\u00fcgen",
    "builder.triplet.loading": "Berechne Fristen \u2026",
    "builder.triplet.unknown_proceeding": "Unbekannter Verfahrenstyp.",
    "builder.triplet.side.claimant": "Kl\u00e4ger-Sicht",
    "builder.triplet.side.defendant": "Beklagten-Sicht",
    "builder.triplet.flags.label": "Optionen:",
    "builder.triplet.perspective.label": "Perspektive:",
    "builder.triplet.perspective.none": "keine",
    "builder.triplet.perspective.claimant": "Kl\u00e4ger",
    "builder.triplet.perspective.defendant": "Beklagter",
    "builder.triplet.detailgrad.label": "Detailgrad:",
    "builder.triplet.detailgrad.selected": "Gew\u00e4hlt",
    "builder.triplet.detailgrad.all_options": "Alle Optionen",
    "builder.triplet.remove": "Entfernen",
    "builder.triplet.collapse": "Einklappen",
    "builder.triplet.expand": "Ausklappen",
    "builder.triplet.no_flags": "(keine Flags f\u00fcr diesen Verfahrenstyp)",
    "builder.event.state.planned": "geplant",
    "builder.event.state.filed": "eingereicht",
    "builder.event.state.skipped": "ausgelassen",
    "builder.event.action.file": "Einreichen",
    "builder.event.action.skip": "Auslassen",
    "builder.event.action.reset": "Zur\u00fcck zu geplant",
    "builder.event.actual_date.prompt": "Datum der Einreichung:",
    "builder.event.skip_reason.prompt": "Grund (optional):",
    "builder.event.horizon.label": "+{n} Optionen \u25be",
    "builder.event.horizon.hide": "Optionen ausblenden",
    "builder.save.idle": "\u00a0",
    "builder.save.saving": "Speichert \u2026",
    "builder.save.saved": "Gespeichert \u2713",
    "builder.save.error": "Speichern fehlgeschlagen",
    "builder.search.hint.start": "Tippe \u2026 z.\u202fB. \u201eKlageerwiderung\u201c, \u201eHinweis\u201c, \u201eHL-2024\u201c",
    "builder.search.hint.short": "Mindestens 2 Zeichen.",
    "builder.search.hint.loading": "Suche \u2026",
    "builder.search.hint.empty": "Keine Treffer.",
    "builder.search.hint.error": "Suche fehlgeschlagen. Erneut versuchen.",
    "builder.search.hint.akte_b4": "Akten-Modus folgt in B4.",
    "builder.search.group.events": "Ereignisse",
    "builder.search.group.scenarios": "Szenarien",
    "builder.search.group.projects": "Akten",
    "builder.search.summary.events.one": "{n} Ereignis",
    "builder.search.summary.events.other": "{n} Ereignisse",
    "builder.search.summary.scenarios.one": "{n} Szenario",
    "builder.search.summary.scenarios.other": "{n} Szenarien",
    "builder.search.summary.projects.one": "{n} Akte",
    "builder.search.summary.projects.other": "{n} Akten",
    "builder.search.anchor.divider": "\u2501\u2501\u2501\u2501 DU BIST HIER \u2501\u2501\u2501\u2501",

    // B5 \u2014 side-panel buckets, sharing, promote-to-project wizard.
    "builder.bucket.shared": "Geteilt mit mir",
    "builder.bucket.promoted": "Als Projekt angelegt",
    "builder.bucket.archived": "Archiviert",
    "builder.bucket.empty": "\u2014",
    "builder.readonly.watermark": "Geteilt von {owner} \u00b7 schreibgesch\u00fctzt",
    "builder.readonly.blocked": "Schreibgesch\u00fctzt \u2014 Bearbeiten ist nur f\u00fcr die Eigent\u00fcmer:in m\u00f6glich.",
    "builder.share.title": "Szenario teilen",
    "builder.share.subtitle": "Schreibgesch\u00fctzt mit HLC-Kolleg:innen teilen. Du bleibst alleinige Bearbeiter:in.",
    "builder.share.search.placeholder": "Name oder E-Mail suchen \u2026",
    "builder.share.button": "Schreibgesch\u00fctzt teilen",
    "builder.share.current.title": "Bereits geteilt mit:",
    "builder.share.current.empty": "Noch mit niemandem geteilt.",
    "builder.share.revoke": "Entfernen",
    "builder.share.close": "Schlie\u00dfen",
    "builder.share.no_results": "Keine Nutzer:innen gefunden.",
    "builder.share.error": "Teilen fehlgeschlagen. Erneut versuchen.",
    "builder.promote.title": "Als Projekt anlegen",
    "builder.promote.step1": "Best\u00e4tigen",
    "builder.promote.step2": "Parteien erg\u00e4nzen",
    "builder.promote.step3": "Akte-Metadaten",
    "builder.promote.next": "Weiter",
    "builder.promote.back": "Zur\u00fcck",
    "builder.promote.commit": "Anlegen",
    "builder.promote.cancel": "Abbrechen",
    "builder.promote.summary.heading": "Das wird angelegt:",
    "builder.promote.summary.proceeding": "Hauptverfahren",
    "builder.promote.summary.events_filed": "eingereichte Ereignisse",
    "builder.promote.summary.events_planned": "geplante Ereignisse",
    "builder.promote.summary.flags": "aktive Optionen",
    "builder.promote.summary.note_extra": "{n} weitere(s) eigenst\u00e4ndige(s) Verfahren bleibt im Szenario und wird nicht automatisch \u00fcbernommen.",
    "builder.promote.parties.hint": "Trage die echten Parteinamen ein \u2014 oder erg\u00e4nze sie sp\u00e4ter in der Akte.",
    "builder.promote.parties.add": "+ Partei hinzuf\u00fcgen",
    "builder.promote.parties.name": "Name",
    "builder.promote.parties.role": "Rolle (z. B. Kl\u00e4ger)",
    "builder.promote.parties.representative": "Vertreter:in",
    "builder.promote.parties.remove": "Entfernen",
    "builder.promote.parties.empty": "Noch keine Parteien.",
    "builder.promote.meta.title": "Aktentitel / Mandat",
    "builder.promote.meta.title.placeholder": "z. B. Becker ./. X \u2014 UPC Verletzung",
    "builder.promote.meta.reference": "Referenz (optional)",
    "builder.promote.meta.case_number": "Aktenzeichen (optional)",
    "builder.promote.meta.client_number": "Mandantennummer (optional)",
    "builder.promote.meta.our_side": "Unsere Seite",
    "builder.promote.meta.our_side.claimant": "Kl\u00e4ger",
    "builder.promote.meta.our_side.defendant": "Beklagter",
    "builder.promote.meta.our_side.none": "\u2014 offen \u2014",
    "builder.promote.meta.parent": "\u00dcbergeordnetes Verfahren (optional)",
    "builder.promote.meta.parent.none": "\u2014 keines \u2014",
    "builder.promote.meta.team": "Team (optional)",
    "builder.promote.meta.team.hint": "Du wirst automatisch als Lead hinzugef\u00fcgt.",
    "builder.promote.error.title_required": "Bitte einen Aktentitel eingeben.",
    "builder.promote.error.generic": "Anlegen fehlgeschlagen. Erneut versuchen.",
    "builder.promote.success": "Akte angelegt \u2014 Weiterleitung \u2026",
    "builder.mobile.blocked": "Auf gr\u00f6\u00dferem Bildschirm \u00f6ffnen, um zu bearbeiten.",

    "deadlines.step1": "Verfahrensart w\u00e4hlen",
    "deadlines.step2": "Ausgangsdatum eingeben",
    "deadlines.step2.perspective": "Perspektive und Datum",
    "deadlines.step3": "Ergebnis",
    "deadlines.upc": "UPC",
    "deadlines.de": "Deutsche Gerichte",
    "deadlines.epa": "EPA",
    "deadlines.dpma": "DPMA",
    "deadlines.dpma.opp.dpma": "Einspruch DPMA",
    "deadlines.dpma.appeal.bpatg": "Beschwerde BPatG (DPMA)",
    "deadlines.dpma.appeal.bgh": "Rechtsbeschwerde BGH",
    "deadlines.trigger.event": "Ausl\u00f6sendes Ereignis:",
    "deadlines.trigger.date": "Datum:",
    "deadlines.trigger.label": "Ausgangsdatum",
    "deadlines.priority.date": "Priorit\u00e4tstag (optional):",
    "deadlines.court.label": "Gericht:",
    "deadlines.flag.ccr": "Mit Widerklage auf Nichtigkeit",
    "deadlines.flag.inf_amend": "Mit Antrag auf Patentänderung (R.30)",
    "deadlines.flag.rev_amend": "Mit Antrag auf Patentänderung (R.49.2.a)",
    "deadlines.flag.rev_cci": "Mit Verletzungswiderklage (R.49.2.b)",
    "deadlines.calculate": "Fristen berechnen",
    "deadlines.print": "Drucken",
    "deadlines.reset": "\u2190 Neu berechnen",
    "deadlines.upc.inf.cfi": "Verletzungsverfahren",
    "deadlines.upc.rev.cfi": "Nichtigkeitsklage",
    "deadlines.upc.ccr.cfi": "Widerklage auf Nichtigkeit",
    "deadlines.upc.pi.cfi": "Einstw. Ma\u00dfnahmen",
    "deadlines.upc.apl.merits": "Berufung",
    "deadlines.upc.dmgs.cfi": "Schadensbemessung",
    "deadlines.upc.disc.cfi": "Bucheinsicht",
    "deadlines.upc.apl.cost": "Berufung Kosten",
    "deadlines.upc.apl.order": "Berufung Anordnungen",
    "deadlines.upc.apl.unified": "Berufung",
    "deadlines.appeal_target.label": "Worauf richtet sich die Berufung?",
    "deadlines.appeal_target.endentscheidung": "Endentscheidung",
    "deadlines.appeal_target.kostenentscheidung": "Kostenentscheidung",
    "deadlines.appeal_target.anordnung": "Anordnung",
    "deadlines.appeal_target.schadensbemessung": "Schadensbemessung",
    "deadlines.appeal_target.bucheinsicht": "Bucheinsicht",
    "deadlines.de.group.inf": "Verletzungsverfahren",
    "deadlines.de.group.null": "Nichtigkeitsverfahren",
    "deadlines.de.inf.lg": "LG (1. Instanz)",
    "deadlines.de.inf.olg": "OLG (Berufung)",
    "deadlines.de.inf.bgh": "BGH (Revision / NZB)",
    "deadlines.de.null.bpatg": "BPatG (1. Instanz)",
    "deadlines.de.null.bgh": "BGH (Berufung)",
    "deadlines.epa.opp.opd": "Einspruchsverfahren",
    "deadlines.epa.opp.boa": "Beschwerdeverfahren",
    "deadlines.epa.grant.exa": "EP-Erteilungsverfahren",
    "deadlines.party.both.label": "beide Seiten",
    "deadlines.court.set": "vom Gericht bestimmt",
    "deadlines.court.indirect": "unbestimmt",
    "deadlines.conditional.depends_on": "abhängig von {parent}",
    "deadlines.conditional.unset": "abhängig von vorgelagertem Ereignis",
    "deadlines.optional.badge": "auf Antrag",
    "deadlines.priority.mandatory": "Pflicht",
    "deadlines.priority.recommended": "empfohlen",
    "deadlines.priority.optional": "Kann (auf Antrag)",
    "deadlines.priority.informational": "Zur Kenntnis",
    "deadlines.priority.informational.notice_label": "Hinweis",
    "project.instance_level.first": "Erste Instanz",
    "project.instance_level.appeal": "Berufung",
    "project.instance_level.cassation": "Revision",
    "project.instance_level.unset": "(nicht gesetzt)",
    "verlauf.spawn.chip": "Spawnt:",
    "verlauf.spawn.cycle_warning": "Einige proceeding-übergreifende Spawn-Regeln wurden wegen eines Zyklus übersprungen.",
    "deadlines.proceeding.selected": "Verfahren:",
    "deadlines.proceeding.reselect": "Anderes Verfahren wählen",
    "deadlines.step1.heading": "Schritt 1 — Welche Akte?",
    "deadlines.step1.search.placeholder": "Akte suchen…",
    "deadlines.step1.search.empty": "Keine passende Akte gefunden.",
    "deadlines.step1.divider.new": "oder eine neue Akte",
    "deadlines.step1.divider.adhoc": "oder ad-hoc, ohne Akte",
    "deadlines.step1.new.cta": "+ Neue Akte anlegen",
    "deadlines.step1.adhoc.upc": "UPC-Verfahren",
    "deadlines.step1.adhoc.de": "DE-Verfahren",
    "deadlines.step1.adhoc.epa": "EPA-Verfahren",
    "deadlines.step1.adhoc.dpma": "DPMA-Verfahren",
    "deadlines.step1.selected": "Akte:",
    "deadlines.step1.reselect": "Andere Akte",
    "deadlines.step1.summary.adhoc.suffix": "ohne Akte (Erkundung)",
    "deadlines.step2.heading": "Schritt 2 — Was möchten Sie tun?",
    "deadlines.step2.file.title": "Etwas einreichen",
    "deadlines.step2.file.desc": "Outgoing — eine Frist tritt aus eigener Handlung ein.",
    "deadlines.step2.happened.title": "Etwas ist passiert",
    "deadlines.step2.happened.desc": "Incoming — ein Ereignis hat eine Frist ausgelöst.",
    "deadlines.step2.browse.title": "Verfahrensablauf einsehen",
    "deadlines.step2.browse.desc": "Browse / Learn — sehen, was wann passiert. Keine Frist eintragen.",
    "deadlines.save.cta.adhoc.hint": "Ad-hoc — kein Projekt, kein Speichern",
    "deadlines.step3a.heading": "Was möchten Sie einreichen?",
    "deadlines.step3a.back": "zurück zur Auswahl",
    "deadlines.step3a.file.title": "Schriftsatz einreichen",
    "deadlines.step3a.file.desc": "Verfahrensablauf laden — Frist berechnen und zur Akte hinzufügen.",
    "deadlines.step3a.draft.title": "Schriftsatz entwerfen",
    "deadlines.step3a.draft.desc": "Vorbereitung — später mit Drafting-Surface verknüpft.",
    "deadlines.step3a.enter.title": "Frist manuell erfassen",
    "deadlines.step3a.enter.desc": "Direkt eintragen — bereits bekanntes Datum / bekannter Typ.",
    "deadlines.step3a.soon": "kommt bald",
    "deadlines.date.edit.hint": "Datum bearbeiten — Folgefristen werden neu berechnet",
    "deadlines.view.label": "Ansicht:",
    "deadlines.view.timeline": "Zeitstrahl",
    "deadlines.view.columns": "Spalten",
    "deadlines.notes.show": "Hinweise anzeigen",
    "deadlines.durations.show": "Dauern anzeigen",
    "deadlines.col.ours": "Unsere Seite",
    "deadlines.col.court": "Gericht",
    "deadlines.col.opponent": "Gegnerseite",
    "deadlines.col.both": "Beide Parteien",
    "deadlines.col.proactive": "Proaktiv",
    "deadlines.col.reactive": "Reaktiv",
    // t-paliad-265 — per-event-card choice popover (Verfahrensablauf timeline)
    "choices.caret.title": "Optionen für dieses Ereignis",
    "choices.appellant.title": "Berufung durch …",
    "choices.appellant.claimant": "Klägerseite",
    "choices.appellant.defendant": "Beklagtenseite",
    "choices.appellant.both": "beide Parteien",
    "choices.appellant.none": "keine Berufung",
    "choices.include_ccr.title": "Nichtigkeitswiderklage einbeziehen",
    "choices.include_ccr.true": "Ja",
    "choices.include_ccr.false": "Nein",
    "choices.skip.title": "Für diese Akte überspringen",
    "choices.skip.true": "Überspringen",
    "choices.skip.false": "Einbeziehen",
    "choices.skipped.chip": "übersprungen",
    "choices.appellant.chip": "Berufung:",
    "choices.include_ccr.chip": "mit Nichtigkeitswiderklage",
    "choices.reset": "Auswahl zurücksetzen",
    "choices.commit.error": "Konnte Auswahl nicht speichern",
    // t-paliad-290 (m/paliad#122) — re-surface hidden optional cards.
    "choices.show_hidden.label": "Ausgeblendete anzeigen",
    "choices.show_hidden.count": "Ausgeblendete ({n})",
    "choices.unhide.chip": "Wieder einblenden",
    // t-paliad-293 \u2014 iconified state markers on the Verfahrensablauf
    // event cards. Tooltip-only text; the glyph is the primary signal.
    "state.optional.tooltip": "Optionales Ereignis",
    "state.hidden.tooltip": "Ausgeblendet \u2014 \u00fcber Optionen-Men\u00fc wieder einblenden",
    // Trigger-event mode (PR-2 \u2014 youpc-parity)
    "deadlines.mode.procedure": "Verfahrensablauf",
    "deadlines.mode.event": "Was kommt nach\u2026",
    "deadlines.event.step1": "Trigger-Ereignis w\u00e4hlen",
    "deadlines.event.step1.hint": "Welches Ereignis ist eingetreten? (z.B. Klageerhebung, Entscheidung des EPA, Zustellung einer Verf\u00fcgung)",
    "deadlines.event.step2": "Datum des Ereignisses",
    "deadlines.event.step3": "Folgefristen",
    "deadlines.event.search.label": "Trigger-Ereignis suchen",
    "deadlines.event.search.placeholder": "Tippe, um zu suchen\u2026",
    "deadlines.event.empty": "Keine passenden Ereignisse",
    "deadlines.event.loading": "L\u00e4dt\u2026",
    "deadlines.event.error": "Konnte Ereignisse nicht laden",
    "deadlines.event.selected": "Gew\u00e4hltes Ereignis:",
    "deadlines.event.date": "Eintrittsdatum:",
    "deadlines.event.calculate": "Folgefristen berechnen",
    "deadlines.event.noresults": "Keine Folgefristen f\u00fcr dieses Ereignis hinterlegt.",
    "deadlines.event.results.trigger": "Trigger:",
    "deadlines.event.results.date": "Datum:",
    "deadlines.event.adjusted": "Verschoben von",
    "deadlines.search.label": "Frist suchen",
    "deadlines.search.placeholder": "Klageerwiderung, RoP 23, § 82, Wiedereinsetzung…",
    "deadlines.search.chips.label": "Schnellzugriff:",
    "deadlines.search.empty": "Tippe einen Begriff oder wähle einen Schnellzugriff.",
    "deadlines.search.loading": "Sucht…",
    "deadlines.search.no_hits": "Keine passenden Fristen gefunden.",
    "deadlines.search.aliases": "Auch bekannt als:",
    "deadlines.search.pills.heading": "In folgenden Verfahren:",
    "deadlines.search.pills.cross_cutting": "Verfahrensübergreifend:",
    "deadlines.search.pill.duration": "Dauer:",
    "deadlines.search.party.claimant": "Kläger",
    "deadlines.search.party.defendant": "Beklagte",
    "deadlines.search.party.both": "beide Seiten",
    "deadlines.search.party.court": "Gericht",
    "deadlines.search.results.count": "{n} Treffer",
    "deadlines.search.results.count_one": "1 Treffer",
    "deadlines.search.clear": "Suche leeren",
    // Fristenrechner — card-click → calc panel → add-to-project (t-paliad-136 Phase B)
    "deadlines.card.calc.expand_hint": "Frist berechnen oder zu Akte hinzufügen",
    "deadlines.card.calc.close": "schließen",
    "deadlines.card.calc.pill_picker.label": "Welcher Kontext?",
    "deadlines.card.calc.pill_picker.locked_label": "Kontext:",
    "deadlines.card.calc.pill_picker.change": "ändern",
    "deadlines.card.calc.trigger.label": "Datum des auslösenden Ereignisses",
    "deadlines.card.calc.flags.label": "Bedingungen:",
    "deadlines.card.calc.flag.with_ccr": "Mit Nichtigkeitswiderklage",
    "deadlines.card.calc.flag.with_amend": "Mit Antrag auf Patentänderung",
    "deadlines.card.calc.flag.with_cci": "Mit Verletzungswiderklage",
    "deadlines.card.calc.result.due": "Frist:",
    "deadlines.card.calc.result.original_from": "ab",
    "deadlines.card.calc.result.from_trigger": "ab",
    "deadlines.card.calc.result.shifted_from": "Verschoben vom",
    "deadlines.card.calc.result.shifted_because": "wegen",
    "deadlines.card.calc.result.court_set": "Gericht-bestimmt — kein berechenbares Datum.",
    "deadlines.card.calc.result.calculating": "Berechne…",
    "deadlines.card.calc.result.error": "Berechnung fehlgeschlagen.",
    "deadlines.card.calc.add_to_project": "Zu Akte hinzufügen",
    "deadlines.card.calc.add_to_project.disabled": "Gerichtsbestimmt — manuell anlegen",
    "deadlines.pathway.fork.heading": "Was möchten Sie tun?",
    "deadlines.pathway.a.title": "Verfahrensablauf",
    "deadlines.pathway.a.desc": "Verfahrenstyp wählen und alle dazugehörigen Fristen auf einer Zeitleiste sehen.",
    "deadlines.pathway.b.title": "Frist eintragen aufgrund Ereignis",
    "deadlines.pathway.b.desc": "Ein Ereignis ist eingetreten — ich brauche die richtige Frist für meine Akte.",
    "deadlines.pathway.shortcut.label": "oder direkt zu einer Frist springen:",
    "deadlines.pathway.back": "zurück zur Auswahl",
    "deadlines.pathway.b.mode.tree": "Schritt-für-Schritt (Entscheidungsbaum)",
    "deadlines.pathway.b.mode.filter": "Filter / Suche",
    "deadlines.pathway.b.tree.coming_soon": "Der Entscheidungsbaum ist in Vorbereitung. Wechseln Sie zu „Filter / Suche\" oder kehren Sie zur Auswahl zurück.",
    "deadlines.pathway.b.tree.step.back": "Schritt zurück",
    "deadlines.pathway.b.tree.empty": "Keine Treffer für diesen Pfad.",
    "deadlines.pathway.b.tree.reset": "Neu starten",
    "deadlines.pathway.b.tree.start_question": "Was ist passiert?",
    "deadlines.row.mode.question": "Wie suchen?",
    "deadlines.row.edit": "ändern",
    "deadlines.row.prefilled.from_akte": "aus Akte",
    "deadlines.row.reset": "Pfad zurücksetzen",
    "deadlines.row.reset.title": "Pfad zurücksetzen — alle Cascade-Antworten verwerfen",
    "deadlines.row.search.link": "Direkt suchen",
    "deadlines.row.search.link.title": "Direkt nach einer Frist suchen — überspringt den Entscheidungsbaum",
    "deadlines.row.autowalk.tooltip": "Diese Schritte ergeben sich aus Ihrer Akte. Klicken Sie „ändern\", um eine Antwort manuell anzupassen.",
    "deadlines.row.autowalk.dismiss": "Hinweis schließen",
    "deadlines.row.search.panel.back": "Zurück zum Entscheidungsbaum",
    "deadlines.row.search.panel.back.title": "Inline-Suche schließen und zum Entscheidungsbaum zurückkehren",
    "deadlines.row.search.panel.placeholder": "Frist suchen — z. B. „Klageschrift\", „Posteingang Hinweisbeschluss\"…",
    "deadlines.row.search.panel.clear": "Eingabe leeren",
    "deadlines.inbox.label": "Wo kam es an?",
    "deadlines.inbox.cms.title": "UPC — über CMS",
    "deadlines.inbox.bea.title": "Nationale Verfahren — über beA",
    "deadlines.inbox.posteingang.title": "Nationale Verfahren — Postzustellung",
    "deadlines.inbox.posteingang": "Posteingang",
    "deadlines.inbox.all": "Alle",
    "deadlines.filter.forum.label": "Gericht / System:",
    "deadlines.filter.forum.upc_cfi": "UPC CFI",
    "deadlines.filter.forum.upc_coa": "UPC CoA",
    "deadlines.filter.forum.de_lg": "DE LG",
    "deadlines.filter.forum.de_olg": "DE OLG",
    "deadlines.filter.forum.de_bgh": "DE BGH",
    "deadlines.filter.forum.de_bpatg": "DE BPatG",
    "deadlines.filter.forum.epa_grant": "EPA Erteilung",
    "deadlines.filter.forum.epa_opp": "EPA Einspruchsabt.",
    "deadlines.filter.forum.epa_appeal": "EPA Beschwerdek.",
    "deadlines.filter.forum.dpma": "DPMA",
    "deadlines.perspective.label": "Ich vertrete:",
    "deadlines.perspective.claimant": "Klägerseite (Proactive)",
    "deadlines.perspective.defendant": "Beklagtenseite (Reactive)",
    "deadlines.perspective.claimant.short": "Kläger",
    "deadlines.perspective.defendant.short": "Beklagter",
    "deadlines.perspective.both.short": "Beide",
    "deadlines.perspective.claimant.title": "Klägerseite — versteckt typische Beklagten-Schriftsätze",
    "deadlines.perspective.defendant.title": "Beklagtenseite — versteckt typische Kläger-Schriftsätze",
    "deadlines.perspective.appeal_filed_by.label": "Berufung eingelegt durch:",
    "deadlines.perspective.predefined_hint": "vorgegeben durch Akte",
    "deadlines.side.label": "Seite:",
    "deadlines.side.claimant": "Klägerseite",
    "deadlines.side.defendant": "Beklagtenseite",
    "deadlines.side.undefined": "Nicht festgelegt",
    "deadlines.side.from_project": "Aus Akte:",
    "deadlines.side.override": "Andere Seite wählen",
    "deadlines.side.hint": "Wählen Sie eine Seite, um die Spalten zu fokussieren.",
    "deadlines.event.composite.label": "Zusammengesetzt:",
    "deadlines.event.unit.days.one": "Tag",
    "deadlines.event.unit.days.many": "Tage",
    "deadlines.event.unit.weeks.one": "Woche",
    "deadlines.event.unit.weeks.many": "Wochen",
    "deadlines.event.unit.months.one": "Monat",
    "deadlines.event.unit.months.many": "Monate",
    "deadlines.event.unit.working_days.one": "Arbeitstag",
    "deadlines.event.unit.working_days.many": "Arbeitstage",
    "deadlines.event.timing.before": "vor",
    "deadlines.event.timing.after": "nach",
    "deadlines.adjusted": "Verschoben",
    "deadlines.adjusted.reason": "Wochenende/Feiertag",
    "deadlines.adjusted.weekend": "Wochenende",
    "deadlines.adjusted.weekend.saturday": "Samstag",
    "deadlines.adjusted.weekend.sunday": "Sonntag",
    "deadlines.adjusted.holiday": "Feiertag ({name})",
    "deadlines.adjusted.vacation": "{name} ({span})",

    // Downloads
    "downloads.title": "Downloads \u2014 Paliad",
    "downloads.heading": "Downloads",
    "downloads.subtitle": `Dateien und Vorlagen f\u00fcr das ${FIRM} Patent-Team.`,
    "downloads.style.title": `${FIRM} Patents Style`,
    "downloads.style.desc": `Word-Vorlage im ${FIRM} Patents Style. Formatierung, Schriftarten und Makros f\u00fcr standardisierte Schrifts\u00e4tze.`,
    "downloads.btn": "Herunterladen",

    // Links
    "links.title": "Links \u2014 Paliad",
    "links.heading": "Links",
    "links.subtitle": "N\u00fctzliche externe Links f\u00fcr die t\u00e4gliche Patentpraxis.",
    "links.filter.all": "Alle",
    "links.search.placeholder": "Suchen nach Titel, Beschreibung...",
    "links.empty": "Keine Links in dieser Kategorie.",
    "links.suggest.btn": "Link vorschlagen",
    "links.suggest.title": "Link vorschlagen",
    "links.suggest.name": "Titel",
    "links.suggest.category": "Kategorie",
    "links.suggest.desc": "Beschreibung",
    "links.suggest.submit": "Absenden",
    "links.suggest.cancel": "Abbrechen",
    "links.suggest.success": "Danke! Ihr Vorschlag wird gepr\u00fcft.",
    "links.suggest.error": "Fehler beim Speichern. Bitte versuchen Sie es erneut.",
    "links.pending": "Vorschl\u00e4ge zur Pr\u00fcfung",
    "links.feedback.title": "Feedback",
    "links.feedback.type": "Art",
    "links.feedback.broken": "Link defekt",
    "links.feedback.outdated": "Veraltet",
    "links.feedback.update": "Aktualisierung n\u00f6tig",
    "links.feedback.other": "Sonstiges",
    "links.feedback.message": "Nachricht",
    "links.feedback.placeholder": "Was stimmt nicht? (z.B. Link defekt, veraltet...)",
    "links.feedback.submit": "Absenden",
    "links.feedback.success": "Danke f\u00fcr Ihr Feedback!",

    // Glossar
    "glossar.title": "Patentglossar \u2014 Paliad",
    "glossar.heading": "Patentglossar",
    "glossar.subtitle": "Zweisprachiges Glossar der wichtigsten Begriffe im Patentrecht.",
    "glossar.search.placeholder": "Suchen...",
    "glossar.filter.all": "Alle",
    "glossar.filter.litigation": "Streitsachen",
    "glossar.filter.prosecution": "Erteilungsverfahren",
    "glossar.filter.general": "Allgemein",
    "glossar.col.de": "Deutsch",
    "glossar.col.en": "English",
    "glossar.col.definition": "Definition",
    "glossar.empty": "Keine Treffer.",
    "glossar.suggest": "Begriff vorschlagen",
    "glossar.suggest.title": "Neuen Begriff vorschlagen",
    "glossar.suggest.de": "Deutscher Begriff",
    "glossar.suggest.en": "Englischer Begriff",
    "glossar.suggest.definition": "Definition (optional)",
    "glossar.suggest.category": "Kategorie",
    "glossar.suggest.cancel": "Abbrechen",
    "glossar.suggest.submit": "Absenden",
    "glossar.suggest.success": "Vorschlag eingereicht. Vielen Dank!",
    "glossar.suggest.error.required": "Bitte DE und EN Begriff eingeben.",
    "glossar.suggest.error.generic": "Fehler beim Senden. Bitte versuchen Sie es erneut.",
    "glossar.feedback.title": "Korrektur vorschlagen",
    "glossar.feedback.tooltip": "Korrektur vorschlagen",

    // Geb\u00fchrentabellen
    "gebuehren.title": "Geb\u00fchrentabellen \u2014 Paliad",
    "gebuehren.heading": "Geb\u00fchrentabellen",
    "gebuehren.subtitle": "Interaktive Geb\u00fchrentabellen f\u00fcr GKG, RVG, UPC, EPA und PatKostG.",
    "gebuehren.streitwert": "Streitwert (EUR)",
    "gebuehren.streitwert.placeholder": "z.B. 1.000.000",
    "gebuehren.lookup": "Nachschlagen",
    "gebuehren.current": "Aktuell",
    "gebuehren.col.streitwert": "Streitwert (EUR)",
    "gebuehren.col.fee": "1,0 Geb\u00fchr (EUR)",
    "gebuehren.col.maxvalue": "bis Streitwert (EUR)",
    "gebuehren.col.courtfee": "Gerichtsgeb\u00fchr (EUR)",
    "gebuehren.upc.valuebased": "Streitwertabh\u00e4ngige Geb\u00fchren",
    "gebuehren.upc.recoverable": "Erstattungsf\u00e4hige Kosten (Obergrenze)",
    "gebuehren.upc.ceiling": "Obergrenze (EUR)",
    "gebuehren.epa.proceeding": "Verfahren",
    "gebuehren.epa.fee": "Geb\u00fchr (EUR)",
    "gebuehren.epa.smefee": "KMU-Geb\u00fchr (EUR)",
    "gebuehren.multipliers.title": "Geb\u00fchren-Multiplikatoren",
    "gebuehren.multipliers.desc": "Faktoren f\u00fcr die Berechnung von Gerichts- und Anwaltskosten je Instanz.",
    "gebuehren.multipliers.instance": "Instanz",
    "gebuehren.multipliers.courtfee": "Gericht",
    "gebuehren.multipliers.factor": "Faktor",
    "gebuehren.multipliers.basis": "Grundlage",
    "gebuehren.patkostg.court": "Gerichtskosten (BPatG / BGH)",
    "gebuehren.patkostg.dpma": "DPMA-Geb\u00fchren",
    "gebuehren.patkostg.annual": "Jahresgeb\u00fchren (Patent)",
    "gebuehren.patkostg.year": "Patentjahr",
    "gebuehren.patkostg.note": "Hinweis",
    "gebuehren.patkostg.item": "Geb\u00fchrentatbestand",
    "gebuehren.feedback.btn": "Feedback",
    "gebuehren.feedback.title": "Feedback zur Geb\u00fchrentabelle",
    "gebuehren.feedback.type": "Art",
    "gebuehren.feedback.error": "Fehler gefunden",
    "gebuehren.feedback.missing": "Fehlende Daten",
    "gebuehren.feedback.suggestion": "Verbesserungsvorschlag",
    "gebuehren.feedback.other": "Sonstiges",
    "gebuehren.feedback.schedule": "Betrifft",
    "gebuehren.feedback.general": "Allgemein",
    "gebuehren.feedback.message": "Nachricht",
    "gebuehren.feedback.submit": "Absenden",
    "gebuehren.feedback.cancel": "Abbrechen",
    "gebuehren.feedback.success": "Danke f\u00fcr Ihr Feedback!",
    "gebuehren.feedback.error.required": "Bitte geben Sie eine Nachricht ein.",
    "gebuehren.feedback.error.generic": "Fehler beim Senden. Bitte versuchen Sie es erneut.",

    // Index — Geb\u00fchrentabellen card
    "index.gebuehren.title": "Geb\u00fchrentabellen",
    "index.gebuehren.desc": "Interaktive Geb\u00fchrentabellen f\u00fcr GKG, RVG, UPC, EPA und PatKostG. Streitwert eingeben, Geb\u00fchr ablesen.",

    // Checklisten
    "index.checklisten.title": "Checklisten",
    "index.checklisten.desc": "Interaktive Checklisten f\u00fcr UPC-, DE- und EPA-Verfahren. Pro Mandat beliebig viele Instanzen.",
    "checklisten.title": "Checklisten \u2014 Paliad",
    "checklisten.heading": "Checklisten",
    "checklisten.subtitle": "Interaktive Checklisten f\u00fcr typische Verfahrensschritte vor UPC, BPatG und EPA. Abhaken, ausdrucken, kein Punkt vergessen.",
    "checklisten.tab.templates": "Vorlagen",
    "checklisten.tab.mine": "Meine Vorlagen",
    "checklisten.tab.instances": "Vorhandene Instanzen",
    "checklisten.mine.empty": "Sie haben noch keine eigene Vorlage angelegt.",
    "checklisten.tab.gallery": "Geteilte Vorlagen",
    "checklisten.gallery.empty": "Noch keine geteilten Vorlagen sichtbar.",
    "checklisten.filter.other": "Sonstige",
    "checklisten.instance.outdated.badge": "Vorlage aktualisiert",
    "checklisten.instance.outdated.note": "Die zugrundeliegende Vorlage wurde seit dem Anlegen dieser Instanz aktualisiert (v{from} → v{to}).",
    "checklisten.instance.outdated.diff": "Änderungen anzeigen",
    "checklisten.instance.diff.title": "Geänderte Punkte",
    "checklisten.instance.diff.close": "Schließen",
    "checklisten.instance.diff.added": "Neu",
    "checklisten.instance.diff.removed": "Entfernt",
    "checklisten.instance.diff.changed": "Geändert",
    "checklisten.instance.diff.empty": "Keine inhaltlichen Unterschiede in den Punkten.",
    "checklisten.instance.diff.error": "Vergleich fehlgeschlagen.",
    "checklisten.mine.new": "Neue Vorlage",
    "checklisten.mine.loading": "Lädt…",
    "checklisten.mine.visibility.private": "Privat",
    "checklisten.mine.visibility.firm": "Firmenweit",
    "checklisten.mine.visibility.shared": "Geteilt",
    "checklisten.mine.visibility.global": "Im Katalog",
    "checklisten.mine.edit": "Bearbeiten",
    "checklisten.mine.delete": "Löschen",
    "checklisten.mine.delete.confirm": "Vorlage „{title}“ wirklich löschen? Bestehende Instanzen bleiben erhalten.",
    "checklisten.mine.delete.error": "Löschen fehlgeschlagen.",
    "checklisten.mine.origin.authored": "Eigene Vorlage",
    "checklisten.author.title": "Vorlage erstellen — Paliad",
    "checklisten.author.title.edit": "Vorlage bearbeiten — Paliad",
    "checklisten.author.heading.new": "Neue Checklisten-Vorlage",
    "checklisten.author.heading.edit": "Vorlage bearbeiten",
    "checklisten.author.subtitle": "Erstellen Sie eine eigene Checkliste mit Sektionen und Punkten. Sie können sie privat halten oder firmenweit verfügbar machen.",
    "checklisten.author.field.title": "Titel",
    "checklisten.author.field.title.hint": "z.B. „UPC SoC — interne Checkliste“.",
    "checklisten.author.field.description": "Kurzbeschreibung",
    "checklisten.author.field.regime": "Regime",
    "checklisten.author.field.court": "Gericht / Behörde",
    "checklisten.author.field.reference": "Rechtsgrundlage",
    "checklisten.author.field.deadline": "Deadline (optional)",
    "checklisten.author.field.lang": "Sprache",
    "checklisten.author.field.visibility": "Sichtbarkeit",
    "checklisten.author.visibility.private.hint": "Nur für Sie sichtbar.",
    "checklisten.author.visibility.firm.hint": "Für alle angemeldeten Kolleginnen und Kollegen sichtbar.",
    "checklisten.author.groups.heading": "Sektionen und Punkte",
    "checklisten.author.groups.add": "+ Sektion hinzufügen",
    "checklisten.author.group.title": "Sektionsname",
    "checklisten.author.group.remove": "Sektion löschen",
    "checklisten.author.item.add": "+ Punkt hinzufügen",
    "checklisten.author.item.label": "Punkt",
    "checklisten.author.item.note": "Notiz (optional)",
    "checklisten.author.item.rule": "Vorschrift (optional)",
    "checklisten.author.item.remove": "Punkt löschen",
    "checklisten.author.save": "Speichern",
    "checklisten.author.cancel": "Abbrechen",
    "checklisten.author.saving": "Speichert…",
    "checklisten.author.error.title": "Bitte geben Sie einen Titel ein.",
    "checklisten.author.error.no_groups": "Bitte mindestens eine Sektion mit einem Punkt anlegen.",
    "checklisten.author.error.generic": "Speichern fehlgeschlagen. Bitte erneut versuchen.",
    "checklisten.author.error.notfound": "Diese Vorlage existiert nicht oder Sie haben keine Berechtigung sie zu bearbeiten.",
    "checklisten.detail.edit": "Bearbeiten",
    "checklisten.detail.delete": "Löschen",
    "checklisten.detail.share": "Teilen",
    "checklisten.detail.promote": "Als Firmen-Vorlage hinterlegen",
    "checklisten.detail.demote": "Aus Katalog entfernen",
    "checklisten.detail.promote.confirm": "Diese Vorlage in den Firmen-Katalog übernehmen? Alle Kolleg:innen sehen sie dann unter Vorlagen.",
    "checklisten.detail.demote.confirm": "Vorlage aus dem Firmen-Katalog entfernen? Sie bleibt firmenweit sichtbar.",
    "checklisten.detail.promote.error": "Übernahme fehlgeschlagen.",
    "checklisten.detail.delete.confirm": "Vorlage „{title}\" wirklich löschen? Bestehende Instanzen bleiben erhalten.",
    "checklisten.detail.delete.error": "Löschen fehlgeschlagen.",
    "checklisten.detail.authored.by": "Erstellt von {author}",
    "checklisten.detail.visibility": "Sichtbarkeit: {state}",
    "checklisten.detail.visibility.set.firm": "Für Firma freigeben",
    "checklisten.detail.visibility.set.private": "Privat schalten",
    "checklisten.detail.visibility.error": "Sichtbarkeit konnte nicht geändert werden.",
    "checklisten.share.title": "Vorlage teilen",
    "checklisten.share.kind": "Empfängertyp",
    "checklisten.share.kind.user": "Kollege",
    "checklisten.share.kind.office": "Office",
    "checklisten.share.kind.partner_unit": "Dezernat",
    "checklisten.share.kind.project": "Projekt",
    "checklisten.share.pick": "— auswählen —",
    "checklisten.share.submit": "Freigeben",
    "checklisten.share.cancel": "Abbrechen",
    "checklisten.share.error.pick": "Bitte einen Empfänger auswählen.",
    "checklisten.share.error.generic": "Freigeben fehlgeschlagen.",
    "checklisten.share.success": "Freigegeben.",
    "checklisten.share.grants.heading": "Bestehende Freigaben",
    "checklisten.share.grants.empty": "Keine Freigaben.",
    "checklisten.share.grants.revoke": "Entfernen",
    "checklisten.share.grants.revoke.confirm": "Freigabe entfernen?",
    "checklisten.share.grants.revoke.error": "Entfernen fehlgeschlagen.",
    "checklisten.share.grants.recipient.user": "Kollege",
    "checklisten.share.grants.recipient.office": "Office",
    "checklisten.share.grants.recipient.partner_unit": "Dezernat",
    "checklisten.share.grants.recipient.project": "Projekt",
    "checklisten.instances.all.loading": "L\u00e4dt\u2026",
    "checklisten.instances.all.empty": "Noch keine Checklisten-Instanzen erfasst. Legen Sie eine \u00fcber den Vorlagen-Tab an.",
    "checklisten.instances.all.col.template": "Vorlage",
    "checklisten.instances.all.col.name": "Name",
    "checklisten.instances.all.col.project": "Projekt",
    "checklisten.instances.all.col.progress": "Fortschritt",
    "checklisten.instances.all.col.created": "Angelegt",
    "checklisten.instances.all.personal": "Pers\u00f6nlich",
    "checklisten.filter.all": "Alle",
    "checklisten.filter.de": "DE",
    "checklisten.empty": "Keine Checklisten in dieser Kategorie.",
    "checklisten.back": "Zur\u00fcck zur \u00dcbersicht",
    "checklisten.print": "Drucken",
    "checklisten.reset": "Zur\u00fccksetzen",
    "checklisten.reset.confirm": "Alle H\u00e4kchen dieser Instanz wirklich zur\u00fccksetzen?",
    "checklisten.reset.error": "Zur\u00fccksetzen fehlgeschlagen. Bitte erneut versuchen.",
    "checklisten.notfound": "Checkliste nicht gefunden.",
    "checklisten.newInstance": "Neue Instanz",
    "checklisten.newInstance.title": "Neue Checklisten-Instanz",
    "checklisten.newInstance.name": "Name",
    "checklisten.newInstance.name.hint": "z.B. \u201EM\u00fcller v. Schmidt \u2014 SoC\u201C.",
    "checklisten.newInstance.akte": "Akte (optional)",
    "checklisten.newInstance.akte.none": "\u2014 keine Akte \u2014",
    "checklisten.newInstance.akte.hint": "Wenn verkn\u00fcpft, sehen B\u00fcrokollegen die Instanz.",
    "checklisten.newInstance.cancel": "Abbrechen",
    "checklisten.newInstance.submit": "Anlegen",
    "checklisten.newInstance.error.name": "Bitte geben Sie einen Namen ein.",
    "checklisten.newInstance.error.generic": "Fehler beim Anlegen. Bitte erneut versuchen.",
    "checklisten.instances.heading": "Instanzen",
    "checklisten.instances.sub": "Jede Instanz hat ihren eigenen Fortschritt und kann optional an eine Akte geh\u00e4ngt werden.",
    "checklisten.instances.loading": "L\u00e4dt\u2026",
    "checklisten.instances.empty": "Noch keine Instanzen. Klicken Sie auf \u201eNeue Instanz\u201c, um zu beginnen.",
    "checklisten.instances.col.name": "Name",
    "checklisten.instances.col.progress": "Fortschritt",
    "checklisten.instances.col.akte": "Akte",
    "checklisten.instances.col.created": "Angelegt",
    "checklisten.instances.delete.confirm": "Instanz \u201E{name}\u201C wirklich l\u00f6schen?",
    "checklisten.instances.delete.error": "L\u00f6schen fehlgeschlagen.",
    "checklisten.instance.title": "Checklisten-Instanz \u2014 Paliad",
    "checklisten.instance.back": "Zur\u00fcck zur Vorlage",
    "checklisten.instance.loading": "L\u00e4dt\u2026",
    "checklisten.instance.notfound": "Instanz nicht gefunden oder keine Berechtigung.",
    "checklisten.instance.rename": "Umbenennen",
    "checklisten.instance.rename.save": "Speichern",
    "checklisten.instance.rename.error": "Umbenennen fehlgeschlagen.",
    "checklisten.instance.akte.open": "\u00d6ffnen",
    "checklisten.disclaimer": "Hinweis: Diese Checklisten dienen als Ged\u00e4chtnisst\u00fctze und ersetzen keine Pr\u00fcfung im Einzelfall. Ma\u00dfgeblich sind die jeweils geltenden Verfahrensregeln.",
    "checklisten.feedback.btn": "Feedback",
    "checklisten.feedback.title": "Feedback zur Checkliste",
    "checklisten.feedback.type": "Art",
    "checklisten.feedback.error": "Fehler gefunden",
    "checklisten.feedback.missing": "Fehlender Punkt",
    "checklisten.feedback.suggestion": "Verbesserungsvorschlag",
    "checklisten.feedback.other": "Sonstiges",
    "checklisten.feedback.message": "Nachricht",
    "checklisten.feedback.submit": "Absenden",
    "checklisten.feedback.cancel": "Abbrechen",
    "checklisten.feedback.success": "Danke f\u00fcr Ihr Feedback!",
    "checklisten.feedback.error.required": "Bitte geben Sie eine Nachricht ein.",
    "checklisten.feedback.error.generic": "Fehler beim Senden. Bitte versuchen Sie es erneut.",

    // Gerichte
    "gerichte.title": "Gerichtsverzeichnis \u2014 Paliad",
    "gerichte.heading": "Gerichtsverzeichnis",
    "gerichte.subtitle": "Kontaktdaten, Adressen und Einreichungshinweise f\u00fcr Gerichte, Kammern und \u00c4mter im Patentbereich.",
    "gerichte.search.placeholder": "Suchen nach Name, Stadt, Typ...",
    "gerichte.filter.type": "Typ:",
    "gerichte.filter.country": "Land:",
    "gerichte.filter.all": "Alle",
    "gerichte.filter.de": "Deutschland",
    "gerichte.filter.epa": "EPA",
    "gerichte.filter.national": "National",
    "gerichte.empty": "Keine Treffer.",
    "gerichte.field.address": "Adresse",
    "gerichte.field.contact": "Kontakt",
    "gerichte.field.fax": "Fax",
    "gerichte.field.filing": "Einreichung",
    "gerichte.field.notes": "Praktische Hinweise",
    "gerichte.field.hlContact": `${FIRM}-Ansprechpartner`,
    "gerichte.feedback.btn": "Korrektur vorschlagen",
    "gerichte.feedback.title": "Korrektur vorschlagen",
    "gerichte.feedback.court": "Gericht",
    "gerichte.feedback.type": "Art der Anmerkung",
    "gerichte.feedback.type.address": "Adresse / Kontaktdaten",
    "gerichte.feedback.type.filing": "Einreichungshinweise",
    "gerichte.feedback.type.notes": "Praktische Hinweise",
    "gerichte.feedback.type.missing": "Fehlendes Gericht",
    "gerichte.feedback.type.other": "Sonstiges",
    "gerichte.feedback.message": "Nachricht",
    "gerichte.feedback.cancel": "Abbrechen",
    "gerichte.feedback.submit": "Absenden",
    "gerichte.feedback.success": "Vielen Dank \u2014 Ihre R\u00fcckmeldung wurde gespeichert.",
    "gerichte.feedback.error.required": "Bitte geben Sie eine Nachricht ein.",
    "gerichte.feedback.error.generic": "Fehler beim Senden. Bitte versuchen Sie es erneut.",

    // Index \u2014 Gerichte card
    "index.gerichte.title": "Gerichtsverzeichnis",
    "index.gerichte.desc": "Gerichte, UPC-Kammern und Patent\u00e4mter auf einen Blick \u2014 mit Adressen, Einreichungshinweisen und Sprachen.",

    // Akten (matters) \u2014 list
    "projects.filter.office": "B\u00fcro",
    "projects.filter.office.all": "Alle B\u00fcros",
    "projects.filter.status.completed": "Abgeschlossen",
    "projects.status.active": "Aktiv",
    "projects.status.completed": "Abgeschlossen",
    "projects.status.archived": "Archiviert",
    "projects.col.ref": "Aktenzeichen",
    "projects.col.office": "B\u00fcro",
    "projects.onboarding.required": "Bitte schlie\u00dfen Sie das Onboarding ab, bevor Sie Akten anlegen.",

    // Akten \u2014 create form
    "projects.field.ref": "Aktenzeichen",
    "projects.field.ref.placeholder": `z.\u202fB. ${FIRM}-2026-0042`,
    "projects.field.office": "Federf\u00fchrendes B\u00fcro",
    "projects.field.courtRef": "Gerichtsaktenzeichen (optional)",
    "projects.field.akteType": "Verfahrensart (optional)",
    "projects.field.firmWide": "Firmenweit sichtbar",
    "projects.field.firmWide.hint": "Wenn aktiviert, sehen alle Lawyer diese Akte. Nur f\u00fcr Partner/Admin.",
    "projects.field.collaborators": "Weitere Bearbeiter (optional)",
    "projects.field.collaborators.placeholder": "Name oder E-Mail tippen\u2026",
    "projects.field.collaborators.hint": "Personen, die auch Zugriff erhalten sollen (auch b\u00fcro\u00fcbergreifend).",
    "projects.error.required": "Titel und Aktenzeichen sind Pflichtfelder.",
    "projects.error.generic": "Fehler beim Anlegen. Bitte erneut versuchen.",
    "projects.error.forbidden": "Nicht erlaubt. Pr\u00fcfen Sie Rolle und B\u00fcro.",

    // Akten \u2014 detail
    "projects.detail.firmwide.on": "Firmenweit sichtbar",
    "projects.detail.firmwide.off": "B\u00fcro-intern",
    "projects.detail.checklisten.hint": "Instanzen werden auf der Vorlagen-Seite unter \"Checklisten\" angelegt.",
    "projects.detail.verlauf.loadingMore": "L\u00e4dt \u2026",
    "projects.detail.parteien.remove": "Entfernen",
    "projects.detail.parteien.remove.confirm": "Diese Partei wirklich entfernen?",

    // Phase E — Fristen (persistent deadlines)
    "deadlines.list.title": "Fristen \u2014 Paliad",
    "deadlines.list.heading": "Fristen",
    "deadlines.list.subtitle": "Persistente Fristen f\u00fcr Ihre Akten. \u00dcberf\u00e4llig, heute, diese Woche, n\u00e4chste Woche \u2014 auf einen Blick.",
    "deadlines.list.new": "Neue Frist",
    "deadlines.summary.overdue": "\u00dcberf\u00e4llig",
    "deadlines.summary.today": "Heute",
    "deadlines.summary.thisweek": "Diese Woche",
    "deadlines.summary.nextweek": "N\u00e4chste Woche",
    "deadlines.summary.completed": "Erledigt",
    "deadlines.summary.later": "Später",
    "deadlines.filter.status": "Status",
    "deadlines.filter.akte": "Projekt",
    "deadlines.filter.all": "Alle (offen & erledigt)",
    "deadlines.filter.pending": "Alle offenen",
    "deadlines.filter.overdue": "\u00dcberf\u00e4llig",
    "deadlines.filter.today": "Heute",
    "deadlines.filter.thisweek": "Diese Woche",
    "deadlines.filter.nextweek": "N\u00e4chste Woche",
    "deadlines.filter.completed": "Erledigt",
    "deadlines.filter.later": "Später",
    "deadlines.filter.akte.all": "Alle Projekte",
    "deadlines.col.due": "F\u00e4llig",
    "deadlines.col.title": "Titel",
    "deadlines.col.akte": "Projekt",
    "deadlines.col.rule": "Regel",
    "deadlines.col.status": "Status",
    "deadlines.empty.title": "Keine Fristen vorhanden",
    "deadlines.empty.hint": "Sobald Fristen angelegt oder aus dem Fristenrechner \u00fcbernommen werden, erscheinen sie hier.",
    "deadlines.empty.filtered": "Keine Fristen mit diesen Filtern.",
    "deadlines.unavailable": "Fristenverwaltung zurzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
    "deadlines.status.pending": "Offen",
    "deadlines.status.completed": "Erledigt",
    "deadlines.status.cancelled": "Abgebrochen",
    "deadlines.status.waived": "Verzichtet",
    "deadlines.urgency.overdue": "\u00dcberf\u00e4llig",
    "deadlines.urgency.today": "Heute",
    "deadlines.urgency.soon": "In K\u00fcrze",
    "deadlines.urgency.later": "Sp\u00e4ter",
    "deadlines.complete.action": "Erledigen",
    "deadlines.complete.confirm": "Frist \u201e{title}\u201c wirklich als erledigt markieren?",

    // t-paliad-139 \u2014 subtree aggregation toggle and attribution chip
    "aggregation.toggle.subtree": "Inkl. Unterprojekte",
    "aggregation.toggle.direct_only": "Nur direkt",
    "aggregation.attribution.on": "auf",

    // t-paliad-139 Phase 2 \u2014 Team-tab subsections + Partner Units management
    "projects.team.section.from_descendants": "Aus Unterprojekten",
    "projects.team.section.from_descendants.hint": "Personen, die direkt auf einem Unterprojekt eingetragen sind und nicht auf diesem oder einem \u00dcbergeordneten.",
    "projects.team.section.derived": "Abgeleitet (Partner Unit)",
    "projects.team.section.derived.hint": "Mitglieder, die \u00fcber eine zugeordnete Partner Unit auf diesem Projekt aktiv sind.",
    "projects.team.section.units": "Partner Units",
    "projects.team.section.units.hint": "Partner Units, die auf diesem Projekt eingebunden sind. Mitglieder mit passenden Unit-Rollen werden automatisch abgeleitet.",
    "projects.team.derived.from": "\u00fcber",
    "projects.team.derived.visibility": "Sicht",
    "projects.team.derived.authority": "Sicht & 4-Augen",
    "projects.team.derived.authority.hint": "Stimmrecht: Abgeleitete Mitglieder z\u00e4hlen als Approver.",
    "projects.team.units.attach": "Partner Unit zuordnen",
    "projects.team.units.detach": "Entfernen",
    "projects.team.units.choose": "Bitte Unit w\u00e4hlen\u2026",
    "projects.team.units.select": "Unit",
    "projects.team.units.derive_roles": "Welche Unit-Rollen ableiten?",
    "projects.team.units.grants_authority": "Stimmrecht abgeben (4-Augen)",
    "projects.team.units.col.name": "Unit",
    "projects.team.units.col.derive_roles": "Abgeleitete Rollen",
    "projects.team.units.col.authority": "Authority",
    "projects.team.units.members": "Mitglieder",
    "projects.team.units.empty": "Keine Partner Units zugeordnet.",
    "projects.team.units.confirm_detach": "Partner Unit entfernen?",
    "unit_role.lead": "Lead",
    "unit_role.attorney": "Attorney",
    "unit_role.senior_pa": "Senior PA",
    "unit_role.pa": "PA",
    "unit_role.paralegal": "Paralegal",

    "deadlines.neu.title": "Neue Frist \u2014 Paliad",
    "deadlines.neu.heading": "Neue Frist anlegen",
    "deadlines.neu.subtitle": "Eine persistente Frist an einer Akte. Sichtbar f\u00fcr alle Personen, die die Akte sehen k\u00f6nnen.",
    "deadlines.neu.back": "\u2190 Zur\u00fcck zur \u00dcbersicht",
    "deadlines.neu.cancel": "Abbrechen",
    "deadlines.neu.submit": "Frist anlegen",
    "deadlines.field.akte": "Akte",
    "deadlines.field.akte.choose": "Bitte w\u00e4hlen\u2026",
    "deadlines.field.akte.empty": "Sie haben noch keine Akte. Bitte zuerst eine Akte anlegen.",
    "deadlines.field.akte.empty.link": "Akte anlegen",
    "deadlines.field.title": "Titel",
    "deadlines.field.title.placeholder": "z.\u202fB. Klageerwiderung einreichen",
    "deadlines.field.due": "F\u00e4lligkeitsdatum",
    "deadlines.field.rule": "Regel (optional)",
    "deadlines.field.rule.auto_badge": "Auto",
    "deadlines.field.rule.auto_no_match": "Keine Regel zur gewählten Verfahrenshandlung",
    "deadlines.field.rule.auto_pick_type": "Wählen Sie zuerst eine Verfahrenshandlung",
    "deadlines.field.rule.custom_badge": "Eigen",
    "deadlines.field.rule.custom_placeholder": "z.B. interner Review-Termin, Mandantengespräch",
    "deadlines.field.rule.mode.toggle_to_auto": "Zurück zu Auto",
    "deadlines.field.rule.mode.toggle_to_custom": "Eigene Regel eingeben",
    "deadlines.field.title.default_btn": "Standardtitel",
    "deadlines.field.title.default_fallback": "Neue Frist",
    "deadlines.field.notes": "Notizen (optional)",
    "deadlines.field.notes.placeholder": "Hinweise, Verweise, n\u00e4chste Schritte\u2026",
    "deadlines.error.required": "Akte, Titel und F\u00e4lligkeitsdatum sind Pflichtfelder.",
    "deadlines.error.generic": "Fehler beim Anlegen. Bitte erneut versuchen.",

    "deadlines.detail.title": "Frist \u2014 Paliad",
    "deadlines.detail.back": "\u2190 Zur\u00fcck zur Fristen\u00fcbersicht",
    "deadlines.detail.loading": "L\u00e4dt\u2026",
    "deadlines.detail.notfound": "Frist nicht gefunden oder keine Berechtigung.",
    "deadlines.detail.complete": "Als erledigt markieren",
    "deadlines.detail.completed.already": "Bereits erledigt",
    "deadlines.detail.reopen": "Wieder öffnen",
    "deadlines.action.reopen": "Wieder öffnen",
    "deadlines.detail.edit": "Bearbeiten",
    "deadlines.detail.save": "Speichern",
    "deadlines.detail.cancel": "Abbrechen",
    "deadlines.detail.delete": "Frist l\u00f6schen",
    "deadlines.detail.delete.confirm.title": "Frist wirklich l\u00f6schen?",
    "deadlines.detail.delete.confirm.body": "Die Frist wird endg\u00fcltig entfernt. Der Eintrag im Verlauf der Akte bleibt erhalten.",
    "deadlines.detail.delete.confirm.cancel": "Abbrechen",
    "deadlines.detail.delete.confirm.ok": "L\u00f6schen",
    "deadlines.detail.due": "F\u00e4lligkeitsdatum",
    "deadlines.detail.rule": "Regel",
    "deadlines.detail.source": "Quelle",
    "deadlines.detail.notes": "Notizen",
    "deadlines.detail.created": "Angelegt",
    "deadlines.detail.completed": "Erledigt am",
    "deadlines.source.manual": "Manuell",
    "deadlines.source.fristenrechner": "Fristenrechner",
    "deadlines.source.caldav": "CalDAV",
    "deadlines.source.imported": "Import",

    "cal.day.mon": "Mo",
    "cal.day.tue": "Di",
    "cal.day.wed": "Mi",
    "cal.day.thu": "Do",
    "cal.day.fri": "Fr",
    "cal.day.sat": "Sa",
    "cal.day.sun": "So",
    "cal.month.0": "Januar",
    "cal.month.1": "Februar",
    "cal.month.2": "M\u00e4rz",
    "cal.month.3": "April",
    "cal.month.4": "Mai",
    "cal.month.5": "Juni",
    "cal.month.6": "Juli",
    "cal.month.7": "August",
    "cal.month.8": "September",
    "cal.month.9": "Oktober",
    "cal.month.10": "November",
    "cal.month.11": "Dezember",
    "cal.view.month": "Monat",
    "cal.view.week": "Woche",
    "cal.view.day": "Tag",
    "cal.today": "Heute",
    "cal.month.prev": "Vorheriger Monat",
    "cal.month.next": "Nächster Monat",
    "cal.week.prev": "Vorherige Woche",
    "cal.week.next": "Nächste Woche",
    "cal.day.prev": "Vorheriger Tag",
    "cal.day.next": "Nächster Tag",
    "cal.day.back_to_month": "Zurück zum Monat",
    "cal.day.open_day": "Tagesansicht öffnen",
    "cal.day.no_entries": "Keine Einträge an diesem Tag.",

    // Akten detail — Fristen tab (Phase E)

    // Fristenrechner — save to Akte (Phase E)
    "deadlines.save.cta": "Als Frist(en) speichern",
    "deadlines.save.modal.title": "Fristen \u00fcbernehmen",
    "deadlines.save.modal.akte": "Akte",
    "deadlines.save.modal.akte.choose": "Bitte w\u00e4hlen\u2026",
    "deadlines.save.modal.choose": "Welche Fristen \u00fcbernommen werden sollen:",
    "deadlines.save.modal.cancel": "Abbrechen",
    "deadlines.save.modal.submit": "\u00dcbernehmen",
    "deadlines.save.modal.no_akten": "Sie haben noch keine Akte. Bitte zuerst eine Akte anlegen.",
    "deadlines.save.modal.no_akten.link": "Akte anlegen",
    "deadlines.save.success": "Fristen \u00fcbernommen.",
    "deadlines.save.success.link": "Zu den Fristen",
    "deadlines.save.error": "\u00dcbernahme fehlgeschlagen.",
    "deadlines.save.skip_court_set": "Gerichtsbestimmte Termine ohne Datum werden \u00fcbersprungen.",

    // Fristenrechner overhaul \u2014 shared result view (S2, design \u00a74).
    "deadlines.overhaul.loading": "Folge-Fristen werden geladen\u2026",
    "deadlines.overhaul.load_error": "Folge-Fristen konnten nicht geladen werden.",
    "deadlines.overhaul.empty": "Keine Folge-Fristen f\u00fcr dieses Ereignis hinterlegt.",
    "deadlines.overhaul.trigger.label": "Trigger-Ereignis",
    "deadlines.overhaul.trigger.date": "Trigger-Datum:",
    "deadlines.overhaul.followups.label": "Folge-Fristen",
    "deadlines.overhaul.group.mandatory": "Pflicht",
    "deadlines.overhaul.group.recommended": "Empfohlen",
    "deadlines.overhaul.group.optional": "Kann (auf Antrag)",
    "deadlines.overhaul.group.conditional": "Bedingt",
    "deadlines.overhaul.spawn.badge": "\u21f2 neues Verfahren",
    "deadlines.overhaul.spawn.tooltip": "Diese Regel leitet ein neues Verfahren ein.",
    "deadlines.detail.label": "Anzeige:",
    "deadlines.detail.mandatory_only": "Nur Pflicht",
    "deadlines.detail.selected": "Gewählt",
    "deadlines.detail.all_options": "Alle Optionen",
    "deadlines.detail.optional_unselected_hint": "Diese Regel ist optional und gehört nicht zum aktuellen Szenario.",
    "deadlines.detail.aufnehmen": "Aufnehmen",
    "deadlines.detail.entfernen": "Entfernen",
    "deadlines.overhaul.condition.badge": "Nur unter Bedingung",
    "deadlines.overhaul.crossparty.badge": "Gegenseitig",
    "deadlines.overhaul.crossparty.tooltip": "Diese Frist wird von der Gegenseite eingereicht. Sie erscheint nur zur Information und wird nicht in die Akte übernommen.",
    "deadlines.overhaul.notes.summary": "Hinweis",
    "deadlines.overhaul.edit_date.label": "\u270f Datum",
    "deadlines.overhaul.edit_date.title": "Datum manuell anpassen",
    "deadlines.overhaul.select_rule": "Frist ausw\u00e4hlen",
    "deadlines.overhaul.footer.count": "{n} Fristen ausgew\u00e4hlt",
    "deadlines.overhaul.footer.cta": "In Akte eintragen",
    "deadlines.overhaul.nudge.no_project": "Tipp: W\u00e4hle oben eine Akte, um diese Fristen einzutragen.",
    "deadlines.party.claimant": "Kl\u00e4gerseite",
    "deadlines.party.defendant": "Beklagtenseite",
    "deadlines.party.both": "Beide Seiten",
    "deadlines.party.court": "Gericht",

    // Fristenrechner overhaul Mode A \u2014 Direkt suchen (S3, design \u00a73.1).
    "deadlines.overhaul.modes.label": "Modus",
    "deadlines.overhaul.modes.search": "Direkt suchen",
    "deadlines.overhaul.modes.wizard": "Gef\u00fchrt",
    "deadlines.overhaul.wizard.coming_soon": "Gef\u00fchrter Modus kommt im n\u00e4chsten Slice.",
    "deadlines.overhaul.modea.filters.label": "Filter",
    "deadlines.overhaul.modea.filters.heading": "Filter (eingrenzen)",
    "deadlines.overhaul.modea.axis.forum": "Forum:",
    "deadlines.overhaul.modea.axis.proc": "Verfahren:",
    "deadlines.overhaul.modea.axis.kind": "Was passierte:",
    "deadlines.overhaul.modea.axis.party": "Partei:",
    "deadlines.overhaul.modea.axis.inbox": "Eingangsweg:",
    "deadlines.overhaul.modea.chip.all": "Alle",
    "deadlines.overhaul.modea.inbox.summary": "Erweitert: Eingangsweg",
    "deadlines.overhaul.modea.inbox.postal": "Postal",
    "deadlines.overhaul.modea.search.label": "Suche",
    "deadlines.overhaul.modea.search.placeholder": "Klageerhebung, Hinweisbeschluss, m\u00fcndliche Verhandlung\u2026",
    "deadlines.overhaul.modea.results.label": "Ergebnisse",
    "deadlines.overhaul.modea.results.heading": "Ergebnisse (klicken zum Einrasten als Trigger)",
    "deadlines.overhaul.modea.results.count": "{n} Treffer",
    "deadlines.overhaul.modea.row.followups": "{n} Folge-Fristen",
    "deadlines.overhaul.modea.loading": "Wird geladen\u2026",
    "deadlines.overhaul.modea.no_results": "Keine Treffer f\u00fcr diese Filter.",
    "deadlines.overhaul.modea.no_proceedings": "Keine Verfahren in diesem Forum.",
    "deadlines.overhaul.modea.search_error": "Suche fehlgeschlagen.",
    "deadlines.overhaul.kind.filing": "Eingereicht",
    "deadlines.overhaul.kind.hearing": "Termin",
    "deadlines.overhaul.kind.decision": "Entscheidung",
    "deadlines.overhaul.kind.order": "Verf\u00fcgung",
    "deadlines.overhaul.kind.missed": "Frist vers\u00e4umt",

    // Fristenrechner overhaul Mode B \u2014 gef\u00fchrter Wizard (S4, design \u00a73.2).
    "deadlines.overhaul.wizard.heading": "Gef\u00fchrter Modus",
    "deadlines.overhaul.wizard.hint": "Beantworte die Fragen oben nach unten \u2014 der Wizard landet auf einem Trigger-Ereignis und zeigt die Folge-Fristen.",
    "deadlines.overhaul.wizard.r1.label": "Was ist passiert?",
    "deadlines.overhaul.wizard.r2.label": "Vor welchem Gericht?",
    "deadlines.overhaul.wizard.r3.label": "In welchem Verfahren?",
    "deadlines.overhaul.wizard.r3.empty": "Kein Verfahren mit diesem Ereignistyp im gew\u00e4hlten Forum.",
    "deadlines.overhaul.wizard.r4.label": "Welches Schriftst\u00fcck / welcher Termin?",
    "deadlines.overhaul.wizard.r4.empty": "Keine Ereignisse zu dieser Auswahl.",
    "deadlines.overhaul.wizard.r5.label": "Welche Seite vertreten Sie?",
    "deadlines.overhaul.wizard.r5.probing": "Pr\u00fcfe, ob die Folge-Fristen seitenabh\u00e4ngig sind\u2026",
    "deadlines.overhaul.wizard.badge.filter": "Filter",
    "deadlines.overhaul.wizard.badge.qualifier": "Qualifier",
    "deadlines.overhaul.wizard.edit": "\u00e4ndern",
    "deadlines.overhaul.wizard.anno.from_project": "aus Akte",
    "deadlines.overhaul.wizard.anno.implicit": "implizit",

    // Office labels (shared)
    "office.munich": "M\u00fcnchen",
    "office.duesseldorf": "D\u00fcsseldorf",
    "office.hamburg": "Hamburg",
    "office.amsterdam": "Amsterdam",
    "office.london": "London",
    "office.paris": "Paris",
    "office.milan": "Mailand",

    // Dashboard (logged-in landing)
    "dashboard.title": "Dashboard \u2014 Paliad",
    "dashboard.greeting.prefix": "Guten Tag",
    "dashboard.unavailable": "Dashboard ben\u00f6tigt die Datenbank \u2014 bitte Administrator kontaktieren.",
    "dashboard.onboarding": "Bitte schlie\u00dfen Sie das Onboarding ab, damit Ihnen Fristen und Akten angezeigt werden k\u00f6nnen.",
    "dashboard.summary.heading": "Fristen auf einen Blick",
    "dashboard.summary.overdue": "\u00dcberf\u00e4llig",
    "dashboard.summary.today": "Heute",
    "dashboard.summary.this_week": "Diese Woche",
    "dashboard.summary.next_week": "N\u00e4chste Woche",
    "dashboard.summary.completed": "Erledigt",
    "dashboard.summary.later": "Später",
    "dashboard.appointment_summary.heading": "Termine auf einen Blick",
    "dashboard.matters.heading": "Meine Akten",
    "dashboard.matters.active": "Aktiv",
    "dashboard.matters.archived": "Archiviert",
    "dashboard.matters.total": "Gesamt",
    "dashboard.deadlines.heading": "Kommende Fristen",
    "dashboard.deadlines.empty": "Keine Fristen in den n\u00e4chsten 7 Tagen.",
    "dashboard.appointments.heading": "Kommende Termine",
    "dashboard.appointments.empty": "Keine Termine in den n\u00e4chsten 7 Tagen.",
    "dashboard.activity.heading": "Letzte Aktivit\u00e4t",
    "dashboard.activity.empty": "Noch keine Aktivit\u00e4t erfasst.",
    "dashboard.activity.system": "System",
    "dashboard.activity.event": "Ereignis",
    // Inline Agenda section on the dashboard (t-paliad-162). The
    // standalone /agenda page keeps its own copy under the agenda.* keys;
    // these are dashboard-scoped so the headline reads as a section
    // title rather than a page title.
    "dashboard.agenda.heading": "Agenda",
    "dashboard.agenda.empty": "Keine F\u00e4lligkeiten in den n\u00e4chsten 30 Tagen.",
    "dashboard.agenda.full_link": "Vollst\u00e4ndige Agenda \u00f6ffnen \u2192",
    // Inbox-approvals widget (t-paliad-219).
    "dashboard.inbox.heading": "Offene Freigaben",
    "dashboard.inbox.empty": "Keine offenen Freigaben.",
    "dashboard.inbox.full_link": "Vollst\u00e4ndigen Posteingang \u00f6ffnen \u2192",
    "dashboard.inbox.entity.deadline": "Frist",
    "dashboard.inbox.entity.appointment": "Termin",
    // Edit-mode chrome (t-paliad-219 Slice B). The toggle in the
    // dashboard header flips body.dashboard-editing; the keys below
    // power the in-page chrome (drag handle, \u2191/\u2193, hide, gear, picker,
    // reset) plus the autosave toast.
    "dashboard.edit.toggle": "Anpassen",
    "dashboard.edit.exit": "Fertig",
    "dashboard.edit.add_widget": "Widget hinzuf\u00fcgen",
    "dashboard.edit.reset": "Auf Standard zur\u00fccksetzen",
    "dashboard.edit.reset_confirm": "Layout auf Standard zur\u00fccksetzen? Diese Aktion kann nicht r\u00fcckg\u00e4ngig gemacht werden.",
    // Slice C: admin promote \u2014 visible only when global_role==global_admin.
    "dashboard.edit.promote": "Als Firmen-Standard speichern",
    "dashboard.edit.promote_confirm": "Dein aktuelles Layout als Firmen-Standard speichern? Neue Nutzer:innen und 'Auf Standard zur\u00fccksetzen' verwenden danach diese Vorlage.",
    "dashboard.edit.promoted": "Als Firmen-Standard gespeichert",
    // Slice C: pinned-projects widget (reuses PinService).
    "dashboard.pinned.heading": "Angepinnte Akten",
    "dashboard.pinned.empty": "Noch keine Akten angepinnt.",
    "dashboard.pinned.full_link": "Alle Akten \u00f6ffnen \u2192",
    // Slice C: quick-actions widget \u2014 pure UI affordances.
    "dashboard.quick.heading": "Schnellzugriff",
    "dashboard.quick.new_project": "+ Akte",
    "dashboard.quick.new_deadline": "+ Frist",
    "dashboard.quick.new_appointment": "+ Termin",
    "dashboard.edit.move_up": "Nach oben bewegen",
    "dashboard.edit.move_down": "Nach unten bewegen",
    "dashboard.edit.hide": "Ausblenden",
    "dashboard.edit.settings": "Einstellungen",
    "dashboard.edit.drag": "Ziehen, um neu zu ordnen",
    "dashboard.edit.saved": "Gespeichert",
    "dashboard.edit.save_failed": "Speichern fehlgeschlagen",
    "dashboard.edit.setting.count": "Anzahl",
    "dashboard.edit.setting.count.custom": "Eigener Wert (max. {n})",
    "dashboard.edit.setting.horizon": "Zeitraum",
    "dashboard.edit.setting.horizon.days": "{n} Tage",
    "dashboard.edit.setting.horizon.custom": "Eigener Wert in Tagen (max. {n})",
    "dashboard.edit.setting.view": "Ansicht",
    "dashboard.edit.setting.size": "Größe",
    "dashboard.edit.setting.position": "Position",
    "dashboard.edit.resize": "Größe ändern",
    "dashboard.picker.title": "Widget hinzuf\u00fcgen",
    "dashboard.picker.status.active": "Aktiv",
    "dashboard.picker.status.hidden": "Versteckt",
    "dashboard.picker.status.absent": "Nicht hinzugef\u00fcgt",
    "dashboard.picker.close": "Schlie\u00dfen",
    "dashboard.picker.empty": "Alle Widgets sind hinzugef\u00fcgt.",
    // Collapsible-section toggle a11y labels (t-paliad-162). Both states
    // are needed because the aria-label flips with the expanded state.
    "dashboard.section.collapse": "Abschnitt einklappen",
    "dashboard.section.expand": "Abschnitt ausklappen",
    "dashboard.urgency.overdue": "\u00dcberf\u00e4llig",
    "dashboard.urgency.today": "Heute",
    "dashboard.urgency.urgent": "Dringend",
    "dashboard.urgency.soon": "Bald",
    "dashboard.when.today": "heute",
    "dashboard.when.tomorrow": "morgen",
    // Short verb phrases for the dashboard activity feed. Rendered as the
    // bold summary line ("Matthias änderte Frist"); the full German
    // sentence ("Deadline „ok“ geändert") lives on a second
    // muted line via the project_events.description column.
    "dashboard.action.short.project_created": "legte Projekt an",
    "dashboard.action.short.project_archived": "archivierte Projekt",
    "dashboard.action.short.project_reparented": "ordnete Projekt neu zu",
    "dashboard.action.short.project_type_changed": "\u00e4nderte Projekt-Typ",
    "dashboard.action.short.status_changed": "\u00e4nderte Status",
    "dashboard.action.short.our_side_changed": "\u00e4nderte vertretene Seite",
    "dashboard.action.short.visibility_changed": "\u00e4nderte Sichtbarkeit",
    "dashboard.action.short.collaborators_updated": "aktualisierte Bearbeiter",
    "dashboard.action.short.note_created": "f\u00fcgte Notiz hinzu",
    "dashboard.action.short.deadline_created": "legte Frist an",
    "dashboard.action.short.deadline_updated": "\u00e4nderte Frist",
    "dashboard.action.short.deadline_completed": "erledigte Frist",
    "dashboard.action.short.deadline_reopened": "öffnete Frist wieder",
    "dashboard.action.short.deadline_deleted": "l\u00f6schte Frist",
    "dashboard.action.short.deadline_project_changed": "verschob Frist",
    "dashboard.action.short.deadlines_imported": "importierte Fristen",
    "dashboard.action.short.appointment_created": "legte Termin an",
    "dashboard.action.short.appointment_updated": "\u00e4nderte Termin",
    "dashboard.action.short.appointment_deleted": "l\u00f6schte Termin",
    "dashboard.action.short.appointment_project_changed": "verschob Termin",
    // Localized event-row title for the project Verlauf tab \u2014 full noun
    // phrase ("Frist ge\u00e4ndert") complementing the dashboard's verb form.
    "event.title.project_created": "Projekt angelegt",
    "event.title.project_archived": "Projekt archiviert",
    "event.title.project_reparented": "Projekt umstrukturiert",
    "event.title.project_type_changed": "Projekt-Typ ge\u00e4ndert",
    "event.title.status_changed": "Status ge\u00e4ndert",
    "event.title.our_side_changed": "Vertretene Seite ge\u00e4ndert",
    "event.title.note_created": "Notiz hinzugef\u00fcgt",
    "event.title.deadline_created": "Frist angelegt",
    "event.title.deadline_updated": "Frist ge\u00e4ndert",
    "event.title.deadline_completed": "Frist erledigt",
    "event.title.deadline_reopened": "Frist wiederer\u00f6ffnet",
    "event.title.deadline_deleted": "Frist gel\u00f6scht",
    "event.title.deadline_project_changed": "Frist verschoben",
    "event.title.deadlines_imported": "Fristen importiert",
    "event.title.appointment_created": "Termin angelegt",
    "event.title.appointment_updated": "Termin ge\u00e4ndert",
    "event.title.appointment_deleted": "Termin gel\u00f6scht",
    "event.title.appointment_project_changed": "Termin verschoben",
    // Umbrella audit kind + admin churn surfaced by the FilterBar
    // project_event_kind chip cluster (KnownProjectEventKinds).
    "event.title.approval_decided": "Genehmigung entschieden",
    "event.title.member_role_changed": "Teamrolle ge\u00e4ndert",
    // 4-eye approval lifecycle (t-paliad-138). Verlauf renders these as
    // a paired card with the original lifecycle event (e.g.
    // "Frist angelegt" + "Genehmigung erteilt von Bert").
    "event.title.deadline_approval_requested": "Genehmigung beantragt",
    "event.title.deadline_approval_approved": "Genehmigung erteilt",
    "event.title.deadline_approval_rejected": "Genehmigung abgelehnt",
    "event.title.deadline_approval_revoked": "Anfrage zurückgezogen",
    "event.title.deadline_approval_changes_suggested": "Änderungen vorgeschlagen",
    "event.title.appointment_approval_requested": "Genehmigung beantragt",
    "event.title.appointment_approval_approved": "Genehmigung erteilt",
    "event.title.appointment_approval_rejected": "Genehmigung abgelehnt",
    "event.title.appointment_approval_revoked": "Anfrage zurückgezogen",
    "event.title.appointment_approval_changes_suggested": "Änderungen vorgeschlagen",
    "event.description.deadline_approval_requested": "4-Augen-Genehmigung für Frist beantragt",
    "event.description.deadline_approval_approved": "Genehmigung für Frist erteilt",
    "event.description.deadline_approval_rejected": "Genehmigung für Frist abgelehnt",
    "event.description.deadline_approval_revoked": "Genehmigungsanfrage für Frist zurückgezogen",
    "event.description.deadline_approval_changes_suggested": "Frist abgelehnt mit Gegenvorschlag",
    "event.description.appointment_approval_requested": "4-Augen-Genehmigung für Termin beantragt",
    "event.description.appointment_approval_approved": "Genehmigung für Termin erteilt",
    "event.description.appointment_approval_rejected": "Genehmigung für Termin abgelehnt",
    "event.description.appointment_approval_revoked": "Genehmigungsanfrage für Termin zurückgezogen",
    "event.description.appointment_approval_changes_suggested": "Termin abgelehnt mit Gegenvorschlag",
    "dashboard.action.short.deadline_approval_requested": "beantragte Genehmigung",
    "dashboard.action.short.deadline_approval_approved": "genehmigte Frist",
    "dashboard.action.short.deadline_approval_rejected": "lehnte Frist ab",
    "dashboard.action.short.deadline_approval_revoked": "zog Anfrage zurück",
    "dashboard.action.short.appointment_approval_requested": "beantragte Genehmigung",
    "dashboard.action.short.appointment_approval_approved": "genehmigte Termin",
    "dashboard.action.short.appointment_approval_rejected": "lehnte Termin ab",
    "dashboard.action.short.appointment_approval_revoked": "zog Anfrage zurück",
    "event.title.checklist_created": "Checkliste angelegt",
    "event.title.checklist_renamed": "Checkliste umbenannt",
    "event.title.checklist_linked": "Checkliste verkn\u00fcpft",
    "event.title.checklist_unlinked": "Checkliste getrennt",
    "event.title.checklist_reset": "Checkliste zur\u00fcckgesetzt",
    "event.title.checklist_deleted": "Checkliste gel\u00f6scht",
    // Note-parent slugs for note_created descriptions
    // ("Notiz zu Frist hinzugef\u00fcgt"). Used by translateEventDescription().
    "event.note.parent.project": "Projekt",
    "event.note.parent.deadline": "Frist",
    "event.note.parent.appointment": "Termin",
    "event.note.added_to": "Notiz zu {parent} hinzugef\u00fcgt",
    // Localized full-sentence descriptions for the project Verlauf and the
    // dashboard activity feed. Stored descriptions carry just the variable
    // payload (title/count/slugs); the renderer interpolates here.
    "event.description.deadline_created": "Frist \u201e{title}\u201c angelegt",
    "event.description.deadline_updated": "Frist \u201e{title}\u201c ge\u00e4ndert",
    "event.description.deadline_completed": "Frist \u201e{title}\u201c als erledigt markiert",
    "event.description.deadline_reopened": "Frist \u201e{title}\u201c wieder ge\u00f6ffnet",
    "event.description.deadline_deleted": "Frist \u201e{title}\u201c gel\u00f6scht",
    "event.description.deadline_project_changed": "Frist \u201e{title}\u201c einer anderen Akte zugeordnet",
    "event.description.deadlines_imported": "{count} Fristen aus Fristenrechner \u00fcbernommen",
    "event.description.appointment_created": "Termin \u201e{title}\u201c angelegt",
    "event.description.appointment_updated": "Termin \u201e{title}\u201c ge\u00e4ndert",
    "event.description.appointment_deleted": "Termin \u201e{title}\u201c gel\u00f6scht",
    "event.description.appointment_project_changed": "Termin \u201e{title}\u201c einer anderen Akte zugeordnet",
    "dashboard.action.short.checklist_created": "legte Checkliste an",
    "dashboard.action.short.checklist_renamed": "benannte Checkliste um",
    "dashboard.action.short.checklist_unlinked": "trennte Checkliste",
    "dashboard.action.short.checklist_linked": "verkn\u00fcpfte Checkliste",
    "dashboard.action.short.checklist_reset": "setzte Checkliste zur\u00fcck",
    "dashboard.action.short.checklist_deleted": "l\u00f6schte Checkliste",
    "dashboard.action.short.partei_added": "f\u00fcgte Partei hinzu",
    "dashboard.action.short.partei_removed": "entfernte Partei",
    // Legacy event types kept so historical project_events rows render cleanly
    // (writes switched to English in t-paliad-037).
    "dashboard.action.short.akte_created": "legte Akte an",
    "dashboard.action.short.akte_archived": "archivierte Akte",
    "dashboard.action.short.projekt_created": "legte Akte an",
    "dashboard.action.short.projekt_archived": "archivierte Akte",
    "dashboard.action.short.projekt_reparented": "ordnete Akte neu zu",
    "dashboard.action.short.notiz_created": "f\u00fcgte Notiz hinzu",
    "dashboard.action.short.frist_created": "legte Frist an",
    "dashboard.action.short.frist_updated": "\u00e4nderte Frist",
    "dashboard.action.short.frist_completed": "erledigte Frist",
    "dashboard.action.short.frist_deleted": "l\u00f6schte Frist",
    "dashboard.action.short.fristen_imported": "importierte Fristen",
    "dashboard.action.short.termin_created": "legte Termin an",
    "dashboard.action.short.termin_updated": "\u00e4nderte Termin",
    "dashboard.action.short.termin_deleted": "l\u00f6schte Termin",
    "dashboard.action.short.checkliste_created": "legte Checkliste an",
    "dashboard.action.short.checkliste_renamed": "benannte Checkliste um",
    "dashboard.action.short.checkliste_unlinked": "trennte Checkliste",
    "dashboard.action.short.checkliste_linked": "verkn\u00fcpfte Checkliste",
    "dashboard.action.short.checkliste_reset": "setzte Checkliste zur\u00fcck",
    "dashboard.action.short.checkliste_deleted": "l\u00f6schte Checkliste",

    // Onboarding (first-login profile capture)
    "onboarding.title": "Willkommen \u2014 Paliad",
    "onboarding.heading": "Willkommen bei Paliad",
    "onboarding.lede": "Bitte vervollst\u00e4ndigen Sie Ihr Profil, damit Ihnen Akten, Fristen und Termine angezeigt werden k\u00f6nnen.",
    "onboarding.display_name": "Anzeigename",
    "onboarding.display_name.placeholder": "Vor- und Nachname",
    "onboarding.office": "B\u00fcro",
    "onboarding.office.placeholder": "Bitte ausw\u00e4hlen",
    "onboarding.job_title": "Berufsbezeichnung",
    "onboarding.job_title.placeholder": "z.B. Associate, Partner, Patentanwalt",
    "onboarding.profession": "Profession",
    "onboarding.profession.hint": "Strukturiertes Tier — steuert die 4-Augen-Genehmigung. Distinkt von der Berufsbezeichnung.",
    "onboarding.partner_unit": "Partner Unit",
    "onboarding.partner_unit.unassigned": "(noch keine Zuordnung)",
    "onboarding.optional": "(optional)",
    "onboarding.submit": "Profil anlegen",
    "onboarding.error.display_name": "Bitte Anzeigename eingeben.",
    "onboarding.error.office": "Bitte B\u00fcro ausw\u00e4hlen.",
    "onboarding.error.job_title": "Bitte Berufsbezeichnung eingeben.",
    "onboarding.error.generic": "Profil konnte nicht angelegt werden.",
    "onboarding.error.connection": "Verbindungsfehler. Bitte versuchen Sie es erneut.",

    // Termine + CalDAV (Phase F)
    "nav.group.einstellungen": "Einstellungen",
    "nav.einstellungen": "Einstellungen",
    "nav.caldav": "CalDAV",

    // Global search (t-paliad-026)
    "search.placeholder": "Suchen...",
    "search.no_results": "Keine Ergebnisse",
    "search.group.projects": "Projekte",
    "search.group.deadlines": "Fristen",
    "search.group.appointments": "Termine",
    "search.group.glossary": "Glossar",
    "search.group.courts": "Gerichte",
    "search.group.checklists": "Checklisten",
    "search.group.links": "Links",
    "search.group.users": "Kolleg:innen",

    // Command palette (t-paliad-044)
    "palette.section.actions": "Aktionen",
    "palette.action.nav.dashboard": "Gehe zu Dashboard",
    "palette.action.nav.projects": "Gehe zu Projekte",
    "palette.action.nav.deadlines": "Gehe zu Fristen",
    "palette.action.nav.appointments": "Gehe zu Termine",
    "palette.action.nav.agenda": "Gehe zu Agenda",
    "palette.action.nav.team": "Gehe zu Team",
    "palette.action.nav.glossary": "Gehe zu Glossar",
    "palette.action.nav.courts": "Gehe zu Gerichte",
    "palette.action.nav.links": "Gehe zu Links",
    "palette.action.nav.checklists": "Gehe zu Checklisten",
    "palette.action.nav.downloads": "Gehe zu Downloads",
    "palette.action.nav.settings": "Gehe zu Einstellungen",
    "palette.action.create.deadline": "Neue Frist anlegen",
    "palette.action.create.appointment": "Neuer Termin anlegen",
    "palette.action.create.project": "Neues Projekt anlegen",
    "palette.action.toggle.lang": "Sprache umschalten",
    "palette.action.toggle.pin": "Sidebar an-/abheften",
    "palette.action.app.invite": "Kolleg:in einladen",
    "palette.action.app.logout": "Abmelden",
    "palette.footer.navigate": "Navigieren",
    "palette.footer.open": "Öffnen",
    "palette.footer.close": "Schließen",

    "sidebar.resize.title": "Breite anpassen — ziehen, Doppelklick setzt zurück",

    // Settings page (t-paliad-022)
    "einstellungen.title": "Einstellungen \u2014 Paliad",
    "einstellungen.heading": "Einstellungen",
    "einstellungen.subtitle": "Profil, Benachrichtigungen und Kalendersynchronisation.",
    "einstellungen.loading": "L\u00e4dt\u2026",
    "einstellungen.optional": "(optional)",
    "einstellungen.save": "Speichern",
    "einstellungen.saved": "Gespeichert.",
    "einstellungen.error.generic": "Speichern fehlgeschlagen. Bitte sp\u00e4ter erneut versuchen.",
    "einstellungen.tab.profil": "Profil",
    "einstellungen.tab.benachrichtigungen": "Benachrichtigungen",
    "einstellungen.tab.caldav": "CalDAV",
    "einstellungen.tab.export": "Datenexport",
    "einstellungen.export.subtitle": "Laden Sie Ihre pers\u00f6nlichen Paliad-Daten als Excel- + JSON- + CSV-Paket herunter. Enthalten ist alles, was Sie aktuell sehen k\u00f6nnen \u2014 Ihre Projekte, Fristen, Termine, Notizen, Genehmigungen und Einstellungen.",
    "einstellungen.export.heading": "Pers\u00f6nlicher Datenexport",
    "einstellungen.export.what": "Das Paket enth\u00e4lt Ihre sichtbaren Daten in drei Formaten in einem .zip:",
    "einstellungen.export.bullet.xlsx": "paliad-export.xlsx \u2014 eine Excel-Mappe pro Entit\u00e4t.",
    "einstellungen.export.bullet.json": "paliad-export.json \u2014 maschinenlesbare Kopie f\u00fcr Skripte und Tools.",
    "einstellungen.export.bullet.csv": "csv/<sheet>.csv \u2014 Tabellen einzeln als CSV (UTF-8 mit BOM).",
    "einstellungen.export.scope": "Umfang: alles, was Sie aktuell in Paliad sehen k\u00f6nnen (Sichtbarkeit zum Zeitpunkt des Exports). Passw\u00f6rter, CalDAV-Zugangsdaten und andere Geheimnisse werden nie exportiert.",
    "einstellungen.export.audit": "Jeder Export wird im Audit-Log protokolliert.",
    "einstellungen.export.button": "Daten exportieren",
    "einstellungen.export.started": "Download gestartet. Falls nichts passiert, pr\u00fcfen Sie Ihren Browser-Downloadordner.",
    "projects.title": "Projekte \u2014 Paliad",
    "projects.heading": "Projekte",
    "projects.subtitle": "Mandanten, Streitsachen, Patente und Verfahren \u2014 hierarchisch organisiert.",
    "projects.new": "Neues Projekt",
    "projects.search.placeholder": "Titel, Referenz oder ClientMatter...",
    "projects.filter.type": "Typ",
    "projects.filter.type.all": "Alle Typen",
    "projects.filter.status": "Status",
    "projects.filter.status.all": "Alle Status",
    "projects.filter.status.active": "Aktiv",
    "projects.filter.status.archived": "Archiviert",
    "projects.filter.status.closed": "Abgeschlossen",
    "projects.filter.view": "Ansicht",
    "projects.view.flat": "Flache Liste",
    "projects.view.roots": "Nur Wurzeln",
    "projects.unavailable": "Projektverwaltung zurzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
    "projects.col.title": "Titel",
    "projects.col.type": "Typ",
    "projects.col.reference": "Referenz",
    "projects.col.clientmatter": "ClientMatter",
    "projects.col.status": "Status",
    "projects.col.updated": "Zuletzt ge\u00e4ndert",
    "projects.empty.title": "Noch kein Projekt angelegt",
    "projects.empty.hint": "Starten Sie \u00fcber \u201eNeues Projekt\u201c \u2014 legen Sie zuerst einen Mandanten an, darunter Streitsachen, Patente und Verfahren.",
    "projects.empty.filtered": "Keine Treffer f\u00fcr diese Filter.",
    "projects.cancel": "Abbrechen",
    "projects.submit": "Projekt anlegen",
    "projects.neu.title": "Neues Projekt \u2014 Paliad",
    "projects.neu.heading": "Neues Projekt anlegen",
    "projects.neu.subtitle": "Mandant, Streitsache, Patent, Verfahren oder generisches Projekt \u2014 hierarchisch einordnen. Sichtbarkeit folgt dem Team (Sie werden als \u201eLeitung\u201c automatisch hinzugef\u00fcgt).",
    "projects.field.type": "Typ",
    "projects.field.type.choose": "Bitte w\u00e4hlen\u2026",
    "projects.field.parent": "\u00dcbergeordnetes Projekt",
    "projects.field.parent.placeholder": "Titel eingeben, um ein \u00dcberprojekt zu suchen...",
    "projects.field.parent.hint": "Leer lassen f\u00fcr ein Wurzel-Projekt (typisch: Mandant).",
    "projects.field.title": "Titel",
    "projects.field.title.placeholder": "z.B. Siemens AG | Siemens v. Huawei | EP 1 234 567",
    "projects.field.reference": "Interne Referenz (optional)",
    "projects.field.reference.placeholder": `z.B. ${FIRM}-2026-0042`,
    "projects.field.client_number": "Client-Nr. (6 Ziffern)",
    "projects.field.matter_number": "Matter-Nr. (6 Ziffern)",
    "projects.field.clientmatter.hint": `${FIRM}-Billing-Nummern. Format CCCCCC.MMMMMM. Client-Nr. wird an Unterprojekte vererbt (\u00fcberschreibbar).`,
    "projects.field.billing_reference": "Billing-Referenz (optional)",
    "projects.field.netdocuments_url": "netDocuments-URL (optional)",
    "projects.field.industry": "Branche",
    "projects.field.country": "Land (ISO-2)",
    "projects.field.description": "Notizen",
    "projects.field.description.placeholder": "Kurznotizen zum Projekt (optional)...",
    "projects.detail.description.heading": "Notizen",
    "projects.field.patent_number": "Patentnummer",
    "projects.field.filing_date": "Anmeldetag",
    "projects.field.grant_date": "Erteilungstag",
    "projects.field.court": "Gericht",
    "projects.field.case_number": "Aktenzeichen (Gericht)",
    "projects.field.proceeding_type_id": "Verfahrenstyp",
    "projects.field.proceeding_type": "Verfahrenstyp",
    "projects.field.proceeding_type.unset": "(nicht gesetzt)",
    "projects.field.proceeding_type.hint": "Bestimmt, welche Schriftsätze-Vorlagen für dieses Verfahren angezeigt werden.",
    "projects.field.our_side": "Wir vertreten",
    "projects.field.our_side.hint": "Bestimmt die Voreinstellung der Perspektive im Fristenrechner-Determinator. Lässt sich dort jederzeit überschreiben.",
    "projects.field.our_side.unset": "Unbekannt / nicht gesetzt",
    "projects.field.our_side.claimant": "Klägerseite",
    "projects.field.our_side.defendant": "Beklagtenseite",
    "projects.field.our_side.applicant": "Antragsteller",
    "projects.field.our_side.appellant": "Berufungsführer",
    "projects.field.our_side.respondent": "Antragsgegner",
    "projects.field.our_side.third_party": "Streithelfer / Dritter",
    "projects.field.our_side.other": "Sonstige Beteiligte",
    "projects.field.our_side.court": "Gericht / Tribunal",
    "projects.field.our_side.both": "Beide Seiten",
    "projects.field.our_side.none": "—",
    "projects.field.client_role": "Mandantenrolle",
    "projects.field.client_role.hint": "Bestimmt die Voreinstellung der Perspektive im Fristenrechner-Determinator: Aktiv → Klägerseite, Reaktiv → Beklagtenseite. Lässt sich dort jederzeit überschreiben.",
    "projects.field.client_role.unset": "Unbekannt",
    "projects.field.client_role.group.active": "Aktiv (wir greifen an)",
    "projects.field.client_role.group.reactive": "Reaktiv (wir verteidigen)",
    "projects.field.client_role.group.other": "Dritte / Sonstige",
    "projects.field.client_role.claimant": "Klägerseite",
    "projects.field.client_role.applicant": "Antragsteller",
    "projects.field.client_role.appellant": "Berufungsführer",
    "projects.field.client_role.defendant": "Beklagtenseite",
    "projects.field.client_role.respondent": "Antragsgegner",
    "projects.field.client_role.third_party": "Streithelfer / Dritter",
    "projects.field.client_role.other": "Sonstige Beteiligte",
    "projects.field.opponent_code": "Gegner-Kürzel",
    "projects.field.opponent_code.placeholder": "z.B. OPNT",
    "projects.field.opponent_code.hint": "Kurzes Kürzel der Gegenseite (Großbuchstaben, Ziffern, Bindestriche, max. 16 Zeichen). Wird als mittleres Segment in automatisch abgeleiteten Projekt-Codes verwendet (z.B. EXMPL.OPNT.567.INF.CFI).",
    "projects.field.status": "Status",
    "projects.error.title_required": "Titel erforderlich",
    "projects.detail.edit.type_change_warning.title": "Diese Felder werden geleert:",
    "projects.detail.title": "Projekt \u2014 Paliad",
    "projects.detail.back": "\u2190 Zur\u00fcck zur \u00dcbersicht",
    "projects.detail.loading": "L\u00e4dt\u2026",
    "projects.detail.notfound": "Projekt nicht gefunden oder keine Berechtigung.",
    "projects.detail.smarttimeline.open_chart": "Als Chart anzeigen \u2197",
    "projects.chart.title": "Projekt-Chart \u2014 Paliad",
    "projects.chart.back": "\u2190 Zur\u00fcck zum Verlauf",
    "projects.chart.loading": "L\u00e4dt\u2026",
    "projects.chart.notfound": "Projekt nicht gefunden oder keine Berechtigung.",
    "projects.chart.error.mount": "Chart konnte nicht initialisiert werden.",
    "projects.chart.control.layout.horizontal": "Layout: Horizontal",
    "projects.chart.control.columns.auto": "Spalten: Auto",
    "projects.chart.control.density.standard": "Dichte: Standard",
    "projects.chart.control.palette.default": "Palette: Standard",
    "projects.chart.control.export.soon": "Export \u2193 (Slice 2)",
    "projects.chart.control.palette.label": "Palette:",
    "projects.chart.palette.default": "Standard",
    "projects.chart.palette.kind_coded": "Nach Ereignistyp",
    "projects.chart.palette.track_coded": "Nach Spur",
    "projects.chart.palette.high_contrast": "Hoher Kontrast",
    "projects.chart.palette.print": "Druck (S/W)",
    "projects.chart.control.density.label": "Dichte:",
    "projects.chart.density.compact": "Kompakt",
    "projects.chart.density.standard": "Standard",
    "projects.chart.density.spacious": "Großzügig",
    "projects.chart.control.range.label": "Zeitraum:",
    "projects.chart.range.1y": "1 Jahr",
    "projects.chart.range.2y": "2 Jahre",
    "projects.chart.range.all": "Alles anzeigen",
    "projects.chart.range.custom": "Eigener Bereich…",
    "projects.chart.range.from": "Von:",
    "projects.chart.range.to": "Bis:",
    "projects.chart.permalink.copy": "🔗 Link kopieren",
    "projects.chart.permalink.title": "URL mit allen Filtern in die Zwischenablage kopieren",
    "nav.context.project_chart": "Als Chart anzeigen",
    "projects.chart.export.menu": "⇓ Export",
    "projects.chart.export.svg": "SVG (Vektorgrafik)",
    "projects.chart.export.png": "PNG (Bild, 2× HiDPI)",
    "projects.chart.export.print": "PDF (Drucken)",
    "projects.chart.export.csv": "CSV (Excel-Tabelle)",
    "projects.chart.export.json": "JSON (Rohdaten)",
    "projects.chart.export.ics": "iCal (.ics — Outlook / Apple)",
    "projects.detail.edit": "Bearbeiten",
    "projects.detail.edit.modal.title": "Projekt bearbeiten",
    "projects.detail.save": "Speichern",
    "projects.detail.tab.verlauf": "Verlauf",
    "projects.detail.tab.team": "Team",
    "projects.detail.tab.kinder": "Projektbaum",
    "projects.detail.tab.parteien": "Parteien",
    "projects.detail.tab.fristen": "Fristen",
    "projects.detail.tab.termine": "Termine",
    "projects.detail.tab.notizen": "Notizen",
    "projects.detail.tab.checklisten": "Checklisten",
    "projects.detail.tab.submissions": "Schriftsätze",
    "projects.detail.tab.settings": "Verwaltung",
    "projects.detail.export.button": "Daten exportieren",
    "projects.detail.export.tooltip": "Daten dieses Projekts (mit Unter-Projekten) als Excel + JSON + CSV herunterladen.",
    "projects.detail.settings.export.heading": "Daten exportieren",
    "projects.detail.settings.export.description": "Lade alle Daten dieses Projekts (inkl. Unter-Projekten) als Excel + JSON + CSV-Archiv herunter.",
    "projects.detail.settings.archive.heading": "Projekt archivieren",
    "projects.detail.settings.archive.description": "Archivieren erfolgt aus dem Bearbeiten-Dialog (Gefahrenbereich).",
    "projects.detail.settings.archive.cta": "Bearbeiten öffnen",
    "projects.detail.submissions.empty": "Es sind aktuell keine Schriftsatzvorlagen hinterlegt.",
    "projects.detail.submissions.empty.no_proceeding": "Für dieses Projekt ist noch kein Verfahrenstyp gesetzt — der Katalog unten zeigt trotzdem alle Vorlagen.",
    "projects.detail.submissions.empty.no_proceeding.cta": "Projekt bearbeiten",
    "projects.detail.submissions.col.name": "Schriftsatz",
    "projects.detail.submissions.col.party": "Partei",
    "projects.detail.submissions.col.source": "Rechtsgrundlage",
    "projects.detail.submissions.col.action": "",
    "projects.detail.submissions.action.generate": "Generieren",
    "projects.detail.submissions.action.no_template": "Keine Vorlage",
    "projects.detail.submissions.action.edit": "Bearbeiten",
    "projects.detail.submissions.hint": "Schriftsätze werden direkt aus dem Projekt heraus als .docx generiert. Anpassen, drucken, einreichen.",
    // t-paliad-238 — dedicated draft editor page.
    "submissions.draft.title": "Schriftsatz bearbeiten — Paliad",
    "submissions.draft.back": "← Zurück zum Projekt",
    "submissions.draft.loading": "Lädt…",
    "submissions.draft.notfound": "Schriftsatz nicht gefunden oder keine Berechtigung.",
    "submissions.draft.action.export": "Als .docx exportieren",
    "submissions.draft.action.new": "+ Neuer Entwurf",
    "submissions.draft.action.delete": "Löschen",
    "submissions.draft.switcher.label": "Entwurf",
    "submissions.draft.name.placeholder": "Name dieses Entwurfs",
    "submissions.draft.preview.title": "Vorschau",
    "submissions.draft.preview.hint": "Read-only Vorschau — finale Bearbeitung in Word.",
    // t-paliad-277 — import-from-project + party-picker.
    "submissions.draft.import.button": "Aus Projekt importieren",
    "submissions.draft.parties.title": "Parteien",
    "submissions.draft.parties.hint": "Wählen Sie die im Schriftsatz genannten Parteien oder fügen Sie pro Seite weitere hinzu.",
    // t-paliad-276 — DE/EN language toggle on the draft editor.
    "submissions.draft.language": "Sprache",
    "submissions.draft.language.de": "DE",
    "submissions.draft.language.en": "EN",
    "submissions.draft.language.fallback_notice": "Fallback: universelles Skelett (keine sprachspezifische Vorlage).",
    // t-paliad-354 — Dateiname-Stichwort (führt den Namen des exportierten Dokuments an).
    "submissions.draft.keyword.label": "Stichwort (Dateiname)",
    "submissions.draft.keyword.placeholder": "Automatisch aus dem Schriftsatztyp",
    "submissions.draft.keyword.hint": "Führt den Dateinamen an: <Datum> <Stichwort> (<Aktenzeichen>).",
    // t-paliad-313 (m/paliad#141) Composer Slice A — base picker + section list.
    "submissions.draft.base.label": "Vorlagenbasis",
    "submissions.draft.base.hint": "Steuert Schriftarten, Briefkopf und Abschnitts-Defaults.",
    "submissions.draft.sections.title": "Abschnitte",
    "submissions.draft.sections.hint": "Inhalt pro Abschnitt — Autosave nach 500 ms. Letztes Layout in Word.",
    // t-paliad-349 (m/paliad#157) docforge slice 6 — template authoring page.
    "templates.authoring.title": "Vorlagen — Paliad",
    "templates.authoring.heading": "Vorlagen",
    "templates.authoring.intro": "Lade eine Word-Vorlage hoch, markiere Stellen und setze Variablen ein.",
    "templates.authoring.upload.title": "Neue Vorlage hochladen",
    "templates.authoring.upload.file": "Word-Datei (.docx)",
    "templates.authoring.upload.name_de": "Name (DE)",
    "templates.authoring.upload.name_en": "Name (EN)",
    "templates.authoring.upload.firm": "Kanzlei (optional)",
    "templates.authoring.upload.submit": "Hochladen",
    "templates.authoring.list.title": "Vorhandene Vorlagen",
    "templates.authoring.workspace.hint": "Text markieren, dann eine Variable wählen, um einen Platzhalter zu setzen.",
    "templates.authoring.slots.title": "Platzhalter",
    // t-paliad-315 (m/paliad#141) Composer Slice C — building blocks admin.
    "admin.building_blocks.title": "Bausteine — Paliad",
    "admin.building_blocks.heading": "Bausteine",
    "admin.building_blocks.subtitle": "Wiederverwendbare Textbausteine für Composer-Abschnitte.",
    "admin.building_blocks.loading": "Lädt…",
    "admin.building_blocks.action.new": "+ Neuer Baustein",
    "admin.building_blocks.editor.empty": "Wählen Sie einen Baustein aus der Liste — oder erstellen Sie einen neuen.",
    // t-paliad-240 — global Schriftsätze drafts index page.
    "submissions.index.title": "Schriftsätze — Paliad",
    "submissions.index.heading": "Schriftsätze",
    "submissions.index.subtitle": "Ihre Schriftsatz-Entwürfe über alle sichtbaren Projekte.",
    "submissions.index.loading": "Lädt…",
    "submissions.index.empty": "Noch keine Entwürfe. Beginnen Sie mit einem neuen Entwurf — mit oder ohne Projekt.",
    "submissions.index.empty.cta": "+ Neuer Entwurf",
    "submissions.index.error": "Schriftsätze konnten nicht geladen werden.",
    "submissions.index.col.project": "Projekt",
    "submissions.index.col.submission": "Schriftsatz",
    "submissions.index.col.draft": "Entwurf",
    "submissions.index.col.updated": "Zuletzt geändert",
    "submissions.index.action.new": "+ Neuer Entwurf",
    // t-paliad-243 — global Schriftsatz picker (/submissions/new).
    "submissions.new.title": "Neuer Schriftsatz — Paliad",
    "submissions.new.back": "← Zurück zur Übersicht",
    "submissions.new.heading": "Neuer Schriftsatz",
    "submissions.new.subtitle": "Wählen Sie eine Vorlage. Optional verknüpfen Sie den Entwurf mit einem Projekt — sonst füllen Sie alle Variablen manuell.",
    "submissions.new.search.placeholder": "Suche nach Schriftsatz, Code oder Norm…",
    "submissions.new.loading": "Lädt…",
    "submissions.new.error": "Katalog konnte nicht geladen werden.",
    "submissions.new.col.name": "Schriftsatz",
    "submissions.new.col.party": "Partei",
    "submissions.new.col.source": "Rechtsgrundlage",
    "submissions.new.col.actions": "Entwurf starten",
    "submissions.new.empty.filtered": "Keine passenden Schriftsätze. Filter zurücksetzen.",
    "submissions.new.picker.title": "Projekt wählen",
    "submissions.new.picker.placeholder": "Projekt suchen (Titel oder Aktenzeichen)…",
    "submissions.new.picker.loading": "Lädt Projekte…",
    "submissions.new.picker.empty": "Keine sichtbaren Projekte.",
    "projects.detail.verlauf.empty": "Noch keine Ereignisse aufgezeichnet.",
    "projects.detail.verlauf.loadMore": "Mehr laden",
    // SmartTimeline (t-paliad-171, Slice 1).
    "projects.detail.smarttimeline.empty": "Noch keine Ereignisse erfasst.",
    "projects.detail.smarttimeline.today": "Heute",
    "projects.detail.smarttimeline.section.past": "Vergangenheit",
    "projects.detail.smarttimeline.section.future": "Zukunft",
    "projects.detail.smarttimeline.section.undated": "Ohne Datum",
    "projects.detail.smarttimeline.kind.deadline": "Frist",
    "projects.detail.smarttimeline.kind.appointment": "Termin",
    "projects.detail.smarttimeline.kind.milestone": "Meilenstein",
    "projects.detail.smarttimeline.kind.projected": "Vorhersage",
    "projects.detail.smarttimeline.status.done": "Erledigt",
    "projects.detail.smarttimeline.status.open": "Offen",
    "projects.detail.smarttimeline.status.overdue": "Überfällig",
    "projects.detail.smarttimeline.status.court_set": "Datum vom Gericht",
    "projects.detail.smarttimeline.status.predicted": "Voraussichtlich",
    "projects.detail.smarttimeline.status.off_script": "Eigener Eintrag",
    "projects.detail.smarttimeline.audit.toggle.show": "Audit-Log anzeigen",
    "projects.detail.smarttimeline.audit.toggle.hide": "Nur Timeline-Einträge",
    "projects.detail.smarttimeline.add.cta": "+ Eintrag",
    "projects.detail.smarttimeline.add.modal.title": "Neuer Eintrag im SmartTimeline",
    "projects.detail.smarttimeline.add.choice.deadline": "Frist anlegen",
    "projects.detail.smarttimeline.add.choice.appointment": "Termin anlegen",
    "projects.detail.smarttimeline.add.choice.counterclaim": "Widerklage (CCR)",
    "projects.detail.smarttimeline.add.choice.amend": "Antrag auf Änderung (R.30)",
    "projects.detail.smarttimeline.add.choice.milestone": "Eigener Meilenstein",
    "projects.detail.smarttimeline.add.choice.disabled": "Kommt mit Slice 3",
    "projects.detail.smarttimeline.add.cancel": "Abbrechen",
    "projects.detail.smarttimeline.add.submit": "Speichern",
    "projects.detail.smarttimeline.milestone.title": "Titel",
    "projects.detail.smarttimeline.milestone.date": "Datum (optional)",
    "projects.detail.smarttimeline.milestone.description": "Beschreibung (optional)",
    "projects.detail.smarttimeline.error.title_required": "Bitte einen Titel angeben.",
    "projects.detail.smarttimeline.error.generic": "Konnte den Eintrag nicht speichern.",
    "projects.detail.smarttimeline.status.predicted_overdue": "Überfällig (vorhergesagt)",
    "projects.detail.smarttimeline.lookahead.more": "+ Mehr anzeigen",
    "projects.detail.smarttimeline.lookahead.less": "− Weniger",
    "projects.detail.smarttimeline.depends_on.prefix": "Folgt aus",
    "projects.detail.smarttimeline.depends_on.date_open": "Datum offen",
    "projects.detail.smarttimeline.depends_on.show_path": "Pfad anzeigen",
    "projects.detail.smarttimeline.depends_on.hide_path": "Pfad verbergen",
    "projects.detail.smarttimeline.depends_on.path_hint": "Klicke die übergeordnete Zeile, um deren Abhängigkeit zu sehen.",
    "projects.detail.smarttimeline.anchor.set": "Datum setzen",
    "projects.detail.smarttimeline.anchor.save": "Speichern",
    "projects.detail.smarttimeline.anchor.cancel": "Abbrechen",
    "projects.detail.smarttimeline.anchor.saving": "Speichere …",
    "projects.detail.smarttimeline.anchor.saved": "Gespeichert.",
    "projects.detail.smarttimeline.anchor.error": "Konnte das Datum nicht setzen.",
    "projects.detail.smarttimeline.anchor.invalid_date": "Ungültiges Datum (YYYY-MM-DD).",
    "projects.detail.smarttimeline.track.label": "Track",
    "projects.detail.smarttimeline.track.both": "Beide",
    "projects.detail.smarttimeline.track.only.parent": "Nur Hauptverfahren",
    "projects.detail.smarttimeline.track.only.counterclaim": "Nur Widerklage",
    "projects.detail.smarttimeline.track.only.parent_context": "Nur Hauptverfahren (Kontext)",
    "projects.detail.smarttimeline.track.header.parent": "Hauptverfahren",
    "projects.detail.smarttimeline.track.header.counterclaim": "Widerklage (CCR)",
    "projects.detail.smarttimeline.track.header.parent_context": "Hauptverfahren (Kontext)",
    "projects.detail.smarttimeline.counterclaim.procedure": "Verfahrenstyp",
    "projects.detail.smarttimeline.counterclaim.title": "Titel (optional)",
    "projects.detail.smarttimeline.counterclaim.case_number": "CCR-Aktenzeichen (optional)",
    "projects.detail.smarttimeline.counterclaim.flip_override": "Unsere Seite NICHT umkehren (Stimmt nicht?)",
    "projects.detail.smarttimeline.counterclaim.flip_hint": "Im Standardfall (CCR-Nichtigkeit) kehrt sich unsere Seite um (Kläger ↔ Beklagter). Aktivieren bei R.49.2.b CCI.",
    "projects.detail.smarttimeline.counterclaim.submit": "Widerklage anlegen",
    "projects.detail.smarttimeline.counterclaim.saving": "Lege Widerklage an …",
    "projects.detail.smarttimeline.lane.empty": "Keine Einträge in dieser Spur.",
    "projects.detail.smarttimeline.lane.filter.label": "Spuren",
    "projects.detail.smarttimeline.lane.filter.all": "Alle",
    "projects.detail.smarttimeline.client.toggle.lanes": "Timeline-Ansicht",
    "projects.detail.smarttimeline.client.toggle.matter_list": "Mandatsliste",
    "projects.detail.smarttimeline.client.matter_list.heading": "Verfahren des Mandanten",
    "projects.detail.smarttimeline.client.matter_list.hint": "Klicke ein Verfahren an, um die Detail-Timeline zu öffnen, oder schalte oben auf „Timeline-Ansicht“.",
    "projects.detail.smarttimeline.client.matter_list.empty": "Noch keine Verfahren angelegt.",
    "projects.detail.smarttimeline.milestone.bubble_up": "In übergeordneten Akten anzeigen",
    "projects.detail.smarttimeline.milestone.bubble_up_hint": "Beim Aktivieren erscheint dieser Meilenstein auf Patent-, Verfahrens- und Mandantsicht.",
    "projects.detail.team.form.user": "Benutzer",
    "projects.detail.team.form.role": "Rolle",
    "projects.detail.team.form.responsibility": "Rolle im Projekt",
    "projects.detail.team.form.profession.label": "Profession",
    "projects.detail.team.form.profession.none": "Keine Profession gesetzt \u2014 kann keine 4-Augen-Genehmigungen erteilen.",
    "projects.detail.team.form.cancel": "Abbrechen",
    "projects.detail.team.form.submit": "Hinzuf\u00fcgen",
    "projects.detail.team.col.name": "Name",
    "projects.detail.team.col.role": "Rolle",
    "projects.detail.team.col.profession": "Profession",
    "projects.detail.team.col.responsibility": "Rolle im Projekt",
    "projects.detail.team.col.source": "Herkunft",
    "projects.detail.kinder.add": "Untervorhaben anlegen",
    "projects.detail.kinder.empty": "Keine untergeordneten Projekte.",
    "projects.detail.parteien.add": "Partei hinzuf\u00fcgen",
    "projects.detail.parteien.form.name": "Name",
    "projects.detail.parteien.form.role": "Rolle",
    "projects.detail.parteien.form.rep": "Vertreter (optional)",
    "projects.detail.parteien.form.cancel": "Abbrechen",
    "projects.detail.parteien.form.submit": "Hinzuf\u00fcgen",
    "projects.detail.parteien.role.claimant": "Kl\u00e4ger",
    "projects.detail.parteien.role.defendant": "Beklagter",
    "projects.detail.parteien.role.thirdparty": "Streitverk\u00fcndeter / Drittpartei",
    "projects.detail.parteien.col.name": "Name",
    "projects.detail.parteien.col.role": "Rolle",
    "projects.detail.parteien.col.rep": "Vertreter",
    "projects.detail.parteien.empty": "Noch keine Parteien eingetragen.",
    "projects.detail.deadlines.add": "Frist hinzuf\u00fcgen",
    "projects.detail.deadlines.empty": "F\u00fcr dieses Projekt sind noch keine Fristen erfasst.",
    "projects.detail.appointments.add": "Termin hinzuf\u00fcgen",
    "projects.detail.appointments.form.cancel": "Abbrechen",
    "projects.detail.appointments.form.submit": "Hinzuf\u00fcgen",
    "projects.detail.appointments.empty": "F\u00fcr dieses Projekt sind noch keine Termine erfasst.",
    "projects.detail.checklisten.empty": "F\u00fcr dieses Projekt sind noch keine Checklisten-Instanzen erfasst.",
    "projects.detail.checklisten.col.template": "Vorlage",
    "projects.detail.checklisten.col.name": "Name",
    "projects.detail.checklisten.col.progress": "Fortschritt",
    "projects.detail.checklisten.col.created": "Angelegt",
    "projects.detail.checklisten.hint.prefix": "Vorlagen werden auf der ",
    "projects.detail.checklisten.hint.link": "Checklisten",
    "projects.detail.checklisten.hint.suffix": "-Seite angelegt und bearbeitet.",
    "projects.detail.checklisten.add": "Checkliste hinzuf\u00fcgen",
    "projects.detail.checklisten.add.search": "Vorlage suchen\u2026",
    "projects.detail.checklisten.add.empty_pick": "Keine passenden Vorlagen gefunden.",
    "projects.detail.checklisten.add.created": "Checkliste hinzugef\u00fcgt.",
    "projects.detail.checklisten.add.error": "Checkliste konnte nicht angelegt werden.",
    "projects.detail.delete": "Projekt archivieren",
    "projects.detail.delete.confirm.title": "Projekt wirklich archivieren?",
    "projects.detail.delete.confirm.body": "Das Projekt wird archiviert. Es kann nicht direkt wiederhergestellt werden.",
    "projects.detail.delete.confirm.cancel": "Abbrechen",
    "projects.detail.delete.confirm.ok": "Archivieren",
    "projects.type.client": "Mandant",
    "projects.type.litigation": "Streitsache",
    "projects.type.patent": "Patent",
    "projects.type.case": "Verfahren",
    "projects.type.project": "Projekt",
    "projects.type.other": "Sonstiges",
    "projects.team.role.lead": "Leitung",
    "projects.team.role.associate": "Associate",
    "projects.team.role.pa": "PA",
    "projects.team.role.of_counsel": "Of Counsel",
    "projects.team.role.local_counsel": "Local Counsel",
    "projects.team.role.expert": "Experte",
    "projects.team.role.observer": "Beobachter",
    "projects.team.responsibility.admin": "Admin",
    "projects.team.responsibility.admin.hint": "Kann Team und Rollen auf diesem Projekt und Unterprojekten verwalten",
    "projects.team.responsibility.lead": "Leitung",
    "projects.team.responsibility.member": "Mitglied",
    "projects.team.responsibility.observer": "Beobachter",
    "projects.team.responsibility.external": "Extern",
    "projects.team.error.last_admin": "Mindestens ein Admin muss auf diesem Projekt oder einem übergeordneten verbleiben.",
    "projects.team.error.forbidden": "Diese Aktion ist nicht erlaubt.",
    "projects.team.error.generic": "Aktion fehlgeschlagen.",
    "projects.team.profession.partner": "Partner",
    "projects.team.profession.of_counsel": "Of Counsel",
    "projects.team.profession.associate": "Associate",
    "projects.team.profession.senior_pa": "Senior PA",
    "projects.team.profession.pa": "PA",
    "projects.team.profession.paralegal": "Paralegal",
    "projects.team.profession.none": "(extern)",
    "projects.team.profession.hint": "Profession \u2014 gesetzt im Firmenprofil",
    "projects.team.profession.none.hint": "Keine Profession gesetzt \u2014 keine 4-Augen-Befugnis",
    "projects.team.direct": "direkt",
    "projects.team.inherited.hint": "Vererbt vom \u00dcberprojekt",
    "projects.detail.team.add": "Mitglied hinzuf\u00fcgen",
    "projects.detail.team.remove": "Entfernen",
    "projects.detail.team.confirm_remove": "Mitglied entfernen?",
    "projects.detail.team.empty": "Noch keine Teammitglieder.",
    "projects.detail.team.error.user_required": "Benutzer ausw\u00e4hlen",
    "projects.detail.team.invite.hint": "Benutzer nicht gefunden?",
    "projects.detail.team.invite.hint_email": "Niemand mit dieser E-Mail.",
    "projects.detail.team.invite.cta": "Einladen",
    // t-paliad-231 — pure-client mailto: button on the Team tab. No
    // server call; opens the local mail client with every selected
    // member queued in the To: line.
    "projects.team.mailto.label": "Mail an Auswahl",
    "projects.team.mailto.empty": "Mindestens ein Mitglied auswählen",
    "projects.team.mailto.count": "{n} ausgewählt",
    "projects.team.mailto.select_all": "Alle sichtbaren auswählen",
    "projects.team.mailto.select_row": "Mitglied auswählen",
    "projects.view.tree": "Baumansicht",
    "projects.tree.toggle": "Aufklappen / Zuklappen",
    "projects.tree.loading": "Baum wird geladen\u2026",
    "projects.tree.error": "Baumansicht konnte nicht geladen werden.",
    "projects.tree.deadlines.overdue": "\u00dcberf\u00e4llige Fristen",
    "projects.tree.deadlines.open": "Offene Fristen",
    "projects.tree.deadlines.subtree.tooltip": "Inkl. Unterprojekte",
    "projects.tree.deadlines.direct.tooltip": "Nur direkt auf diesem Projekt",
    "projects.tree.pin": "Anpinnen",
    "projects.tree.unpin": "Pin entfernen",
    "projects.tree.inherited.context": "Sichtbar wegen Unterprojekt",
    "projects.toolbar.search.placeholder": "Suchen \u2014 Titel, Referenz, ClientMatter\u2026",
    "projects.toolbar.view.tree": "Baum",
    "projects.toolbar.view.cards": "Karten",
    "projects.toolbar.view.flat": "Liste",
    "projects.toolbar.subtree_counts": "Inkl. Unterprojekte z\u00e4hlen",
    "projects.chip.all": "Alle",
    "projects.chip.mine": "Nur meine",
    "projects.chip.pinned": "Angepinnt",
    "projects.chip.status": "Status",
    "projects.chip.type": "Typ",
    "projects.chip.has_open_deadlines": "Mit aktiven Fristen",
    "projects.chip.status.active": "Aktiv",
    "projects.chip.status.archived": "Archiviert",
    "projects.chip.status.closed": "Abgeschlossen",
    "projects.chip.type.client": "Mandant",
    "projects.chip.type.litigation": "Streitsache",
    "projects.chip.type.patent": "Patent",
    "projects.chip.type.case": "Verfahren",
    "projects.chip.type.project": "Projekt",
    "projects.chip.type.other": "Sonstiges",
    "projects.chip.multi.none": "Keine Auswahl",
    "projects.chip.multi.count": "{n} ausgew\u00e4hlt",
    "projects.empty.filtered.action": "Filter zur\u00fccksetzen",
    "projects.search.match.self": "Treffer",
    "projects.search.match.ancestor": "\u00dcber-Projekt eines Treffers",
    "projects.search.match.descendant": "Unterprojekt eines Treffers",
    "projects.cards.next_events": "N\u00e4chste Termine",
    "projects.cards.recent_verlauf": "Zuletzt",
    "projects.cards.no_next_events": "\u2014 keine bevorstehenden Termine",
    "projects.cards.no_recent": "\u2014 noch nichts passiert",
    "projects.cards.team": "Team",
    "projects.cards.deadline_open": "offen",
    "projects.cards.deadline_overdue": "\u00fcberf\u00e4llig",
    "projects.cards.show_all_levels": "Alle Ebenen anzeigen",
    "projects.cards.show_all_levels.hint": "Mandanten + Streitsachen als eigene Karten zeigen",
    "projects.cards.layout.label": "Ansicht",
    "projects.cards.layout.new": "Neue Ansicht",
    "projects.cards.layout.edit": "Bearbeiten",
    "projects.cards.layout.save": "Speichern",
    "projects.cards.layout.discard": "Verwerfen",
    "projects.cards.layout.set_default": "Als Standard festlegen",
    "projects.cards.layout.delete": "L\u00f6schen",
    "projects.cards.layout.rename": "Umbenennen",
    "projects.cards.layout.is_default": "Standard",
    "projects.cards.layout.new.prompt": "Name der neuen Ansicht",
    "projects.cards.layout.delete.confirm": "Diese Ansicht wirklich l\u00f6schen?",
    "projects.cards.layout.delete.default_blocked": "Die aktive Standardansicht kann nicht gel\u00f6scht werden \u2014 bitte zuerst eine andere Standardansicht w\u00e4hlen.",
    "projects.cards.layout.fact.title-row": "Titelzeile",
    "projects.cards.layout.fact.type-chip": "Typ-Badge",
    "projects.cards.layout.fact.status-chip": "Status-Badge",
    "projects.cards.layout.fact.client-matter": "ClientMatter",
    "projects.cards.layout.fact.parent-path": "Pfad zum \u00dcberprojekt",
    "projects.cards.layout.fact.deadline-counts": "Frist-Z\u00e4hler",
    "projects.cards.layout.fact.next-events": "N\u00e4chste Termine",
    "projects.cards.layout.fact.recent-verlauf": "Verlauf-Eintr\u00e4ge",
    "projects.cards.layout.fact.team-chips": "Team-Chips",
    "projects.cards.layout.fact.reference": "Referenz",
    "projects.cards.layout.fact.last-activity-at": "Letzte Aktivit\u00e4t",
    "projects.cards.layout.density": "Dichte",
    "projects.cards.layout.density.compact": "Kompakt",
    "projects.cards.layout.density.roomy": "Ger\u00e4umig",
    "projects.cards.layout.grid": "Spalten",
    "projects.cards.layout.grid.auto": "Auto",
    "projects.cards.layout.grid.2": "2",
    "projects.cards.layout.grid.3": "3",
    "projects.cards.layout.grid.4": "4",
    "projects.cards.layout.fact.toggle.hide": "Ausblenden",
    "projects.cards.layout.fact.toggle.show": "Anzeigen",
    "projects.cards.layout.fact.move_up": "Nach oben",
    "projects.cards.layout.fact.move_down": "Nach unten",
    "projects.cards.layout.fact.count": "Anzahl",
    "projects.cards.event.kind.deadline": "Frist",
    "projects.cards.event.kind.appointment": "Termin",
    "projects.cards.event.kind.project_event": "Verlauf",
    "projects.cards.empty": "Keine Projekte zum Anzeigen.",
    "projects.detail.clientmatter.inherited": "Vom \u00dcberprojekt vererbt",
    "einstellungen.profil.email": "E-Mail",
    "einstellungen.profil.email.hint": "E-Mail kann nicht ge\u00e4ndert werden.",
    "einstellungen.profil.display_name": "Anzeigename",
    "einstellungen.profil.display_name.placeholder": "Vor- und Nachname",
    "einstellungen.profil.office": "B\u00fcro",
    "einstellungen.profil.job_title": "Berufsbezeichnung",
    "einstellungen.profil.job_title.placeholder": "z.B. Associate, Partner, Patentanwalt",
    "einstellungen.profil.lang": "Sprache",
    "einstellungen.profil.lang.de": "Deutsch",
    "einstellungen.profil.lang.en": "English",
    "einstellungen.profil.lang.hint": "Wird f\u00fcr Oberfl\u00e4che und Benachrichtigungs-E-Mails verwendet.",
    "einstellungen.profil.error.display_name": "Bitte Anzeigename eingeben.",
    "einstellungen.profil.error.office": "Bitte B\u00fcro ausw\u00e4hlen.",
    "einstellungen.profil.error.job_title": "Bitte Berufsbezeichnung eingeben.",
    "einstellungen.prefs.reminders.heading": "Frist-Erinnerungen",
    "einstellungen.prefs.reminders.hint": "Paliad sendet Erinnerungen an Ihre E-Mail, wenn Fristen f\u00e4llig werden.",
    "einstellungen.prefs.reminders.master": "Frist-Erinnerungen aktiv",
    "einstellungen.prefs.reminders.overdue": "\u00dcberf\u00e4llige Fristen",
    "einstellungen.prefs.reminders.due_today": "Heute f\u00e4llig",
    "einstellungen.prefs.reminders.due_warning": "Vorwarnung (X Tage vorher)",
    "einstellungen.prefs.times.heading": "Zeitpunkte",
    "einstellungen.prefs.times.hint": "Erinnerungen werden zur gew\u00e4hlten Uhrzeit in Ihrer Zeitzone versendet.",
    "einstellungen.prefs.times.morning": "Morgen-Slot",
    "einstellungen.prefs.times.morning.hint": "Sammel-E-Mail mit \u00fcberf\u00e4lligen, heute f\u00e4lligen und kommenden Fristen.",
    "einstellungen.prefs.times.evening": "Abend-Slot (Eskalation)",
    "einstellungen.prefs.times.evening.hint": "Dringende Erinnerung an heute noch offene Fristen.",
    "einstellungen.prefs.times.timezone": "Zeitzone",
    "einstellungen.prefs.times.timezone.hint": "IANA-Zeitzonen-Name (z.B. Europe/Berlin, Europe/London).",
    "einstellungen.prefs.times.error.required": "Bitte beide Uhrzeiten ausw\u00e4hlen.",
    "einstellungen.prefs.warning_offset.label": "Vorwarnung (Tage vorher)",
    "einstellungen.prefs.warning_offset.hint": "Wir erinnern Sie diese viele Tage vor jeder Frist.",
    "einstellungen.prefs.warning_offset.error": "Vorwarnung muss zwischen 1 und 30 Tagen liegen.",
    "einstellungen.prefs.escalation.heading": "Eskalations-Kontakt",
    "einstellungen.prefs.escalation.hint": "Wer soll bei DRINGEND-Eskalation am Abend zusätzlich benachrichtigt werden? Standard: globale Admins.",
    "einstellungen.prefs.escalation.default_option": "— Standard (globale Admins) —",

    // Invitation modal (sidebar)
    "invite.button": "Kolleg:in einladen",
    "invite.modal.title": "Kolleg:in zu Paliad einladen",
    "invite.modal.body": `Senden Sie eine Einladung an eine ${FIRM}-E-Mail-Adresse. Die Empf\u00e4nger:in erh\u00e4lt einen Registrierungslink.`,
    "invite.modal.email": "E-Mail-Adresse",
    "invite.modal.message": "Pers\u00f6nliche Nachricht (optional)",
    "invite.modal.message.placeholder": "Hi, ich nutze Paliad f\u00fcr die Aktenverwaltung \u2014 schau es dir mal an.",
    "invite.modal.cancel": "Abbrechen",
    "invite.modal.send": "Einladung senden",

    "appointments.list.title": "Termine \u2014 Paliad",
    "appointments.list.heading": "Termine",
    "appointments.list.subtitle": "Verhandlungen, Besprechungen, Beratungen \u2014 pers\u00f6nlich oder aktenbezogen.",
    "appointments.list.new": "Neuer Termin",
    "appointments.summary.today": "Heute",
    "appointments.summary.thisweek": "Diese Woche",
    "appointments.summary.later": "Sp\u00e4ter",
    "appointments.filter.type": "Typ",
    "appointments.filter.type.all": "Alle Typen",
    "appointments.filter.akte": "Projekt",
    "appointments.filter.akte.all": "Alle Projekte & pers\u00f6nlich",
    "appointments.filter.akte.personal": "Nur pers\u00f6nliche",
    "appointments.filter.from": "Von",
    "appointments.filter.to": "Bis",
    "appointments.col.start": "Beginn",
    "appointments.col.title": "Titel",
    "appointments.col.akte": "Projekt",
    "appointments.col.location": "Ort",
    "appointments.col.type": "Typ",
    "appointments.empty.title": "Keine Termine vorhanden",
    "appointments.empty.hint": "Sobald Termine angelegt werden, erscheinen sie hier.",
    "appointments.empty.filtered": "Keine Termine mit diesen Filtern.",
    "appointments.unavailable": "Terminverwaltung zurzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
    "appointments.personal": "Pers\u00f6nlich",
    "appointments.type.hearing": "Verhandlung",
    "appointments.type.meeting": "Besprechung",
    "appointments.type.consultation": "Beratung",
    "appointments.type.deadline_hearing": "Fristverhandlung",
    "appointments.neu.title": "Neuer Termin \u2014 Paliad",
    "appointments.neu.heading": "Neuer Termin",
    "appointments.neu.subtitle": "Pers\u00f6nlich oder einer Akte zugeordnet. Bei aktiver CalDAV-Synchronisation erscheint der Termin auch im externen Kalender.",
    "appointments.neu.back": "\u2190 Zur\u00fcck zur \u00dcbersicht",
    "appointments.neu.cancel": "Abbrechen",
    "appointments.neu.submit": "Termin anlegen",
    "appointments.field.title": "Titel",
    "appointments.field.title.placeholder": "z.B. M\u00fcndliche Verhandlung",
    "appointments.field.start": "Beginn",
    "appointments.field.end": "Ende (optional)",
    "appointments.field.type": "Typ",
    "appointments.field.type.none": "Kein Typ",
    "appointments.field.akte": "Akte (optional)",
    "appointments.field.akte.none": "Pers\u00f6nlicher Termin",
    "appointments.field.location": "Ort (optional)",
    "appointments.field.location.placeholder": "z.B. UPC LD M\u00fcnchen",
    "appointments.field.description": "Beschreibung (optional)",
    "appointments.field.description.placeholder": "Hinweise, Tagesordnung, n\u00e4chste Schritte\u2026",
    "appointments.error.required": "Bitte Titel und Beginn ausf\u00fcllen.",
    "appointments.error.generic": "Speichern fehlgeschlagen. Bitte sp\u00e4ter erneut versuchen.",
    "appointments.detail.title": "Termin \u2014 Paliad",
    "appointments.detail.back": "\u2190 Zur\u00fcck zur \u00dcbersicht",
    "appointments.detail.loading": "L\u00e4dt\u2026",
    "appointments.detail.notfound": "Termin nicht gefunden",
    "appointments.detail.notfound.hint": "Der Termin existiert nicht oder Sie haben keine Berechtigung.",
    "appointments.detail.akte": "Akte:",
    "appointments.detail.save": "\u00c4nderungen speichern",
    "appointments.detail.saved": "Gespeichert.",
    "appointments.detail.delete": "Termin l\u00f6schen",
    "appointments.detail.delete.confirm": "Diesen Termin wirklich l\u00f6schen?",

    // t-paliad-110 \u2014 unified Events page (rendered on both /deadlines and
    // /appointments). The user-facing "Fristen" / "Termine" branding stays;
    // these keys cover the shared chrome (chip toggle, type chip per row,
    // generic Datum column header, etc).
    "events.toggle.deadline": "Fristen",
    "events.toggle.appointment": "Termine",
    "events.toggle.all": "Beides",
    "events.filter.status.all": "Alle (auch vergangene)",
    "events.filter.status.upcoming": "Ab heute",
    "events.summary.later": "Sp\u00e4ter",
    "events.col.date": "Datum",
    "events.col.location": "Ort",
    "events.col.appointment_type": "Termin-Typ",
    "events.row.type.deadline": "Frist",
    "events.row.type.appointment": "Termin",
    "events.empty.title": "Keine Eintr\u00e4ge vorhanden",
    "events.empty.hint": "Sobald Fristen oder Termine angelegt werden, erscheinen sie hier.",
    "events.empty.filtered": "Keine Eintr\u00e4ge mit diesen Filtern.",
    "events.unavailable": "Termin- und Fristenverwaltung zurzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
    "events.view.cards": "Karten",
    "events.view.list": "Liste",
    "events.view.calendar": "Kalender",
    "caldav.title": "CalDAV-Synchronisation \u2014 Paliad",
    "caldav.heading": "CalDAV-Synchronisation",
    "caldav.subtitle": "Synchronisieren Sie Ihre Paliad-Termine mit Ihrem externen Kalender (Nextcloud, iCloud, Outlook, mailcow\u2026). Das Passwort wird verschl\u00fcsselt gespeichert und nie zur\u00fcckgegeben.",
    "caldav.disabled": "CalDAV-Synchronisation derzeit nicht verf\u00fcgbar \u2014 bitte Administrator kontaktieren.",
    "caldav.never": "Noch nie",
    "caldav.field.url": "CalDAV-Server-URL",
    "caldav.field.url.placeholder": "https://cloud.example.com/remote.php/dav/calendars/user/personal/",
    "caldav.field.url.hint": "Vollst\u00e4ndige URL zu Ihrem Kalender (inkl. Pfad).",
    "caldav.field.username": "Benutzername",
    "caldav.field.password": "Passwort / App-Token",
    "caldav.field.password.hint": "Bei vorhandener Konfiguration leer lassen, um das gespeicherte Passwort zu behalten.",
    "caldav.field.calendar_path": "Kalenderpfad (optional)",
    "caldav.field.calendar_path.placeholder": "/calendars/user/personal/",
    "caldav.field.calendar_path.hint": "Falls die URL nur den Server zeigt, ist hier der Pfad zum konkreten Kalender einzutragen.",
    "caldav.field.enabled": "Synchronisation aktiv",
    "caldav.test": "Verbindung testen",
    "caldav.test.ok": "Verbindung erfolgreich.",
    "caldav.test.fail": "Verbindung fehlgeschlagen",
    "caldav.save": "Speichern",
    "caldav.saved": "Konfiguration gespeichert.",
    "caldav.delete": "Konfiguration l\u00f6schen",
    "caldav.delete.confirm": "Wirklich l\u00f6schen? Das gespeicherte Passwort wird unwiderruflich entfernt.",
    "caldav.delete.done": "Konfiguration gel\u00f6scht.",
    "caldav.error.required": "URL und Benutzername sind erforderlich.",
    "caldav.error.password_required": "Passwort ist beim ersten Speichern erforderlich.",
    "caldav.error.generic": "Speichern fehlgeschlagen.",
    "caldav.status.last_sync": "Letzte Synchronisation:",
    "caldav.status.last_error": "Letzter Fehler:",
    "caldav.log.heading": "Letzte Synchronisationen",
    "caldav.log.col.time": "Zeitpunkt",
    "caldav.log.col.pushed": "Gesendet",
    "caldav.log.col.pulled": "Empfangen",
    "caldav.log.col.duration": "Dauer",
    "caldav.log.col.error": "Fehler",
    "caldav.log.empty": "Noch keine Synchronisationen aufgezeichnet.",

    // CalDAV multi-calendar bindings (t-paliad-212 Slice 2b)
    "caldav.bindings.heading": "Kalender",
    "caldav.bindings.hint": "Verbinde mehrere Kalender mit Paliad — einen Master für alles oder eigene Kalender pro Projekt.",
    "caldav.bindings.add": "+ Kalender hinzufügen",
    "caldav.bindings.empty": "Noch keine Kalender konfiguriert.",
    "caldav.bindings.scope.all_visible": "Alles",
    "caldav.bindings.scope.personal_only": "Nur persönlich",
    "caldav.bindings.scope.project": "Projekt",
    "caldav.bindings.card.enabled": "Aktiv",
    "caldav.bindings.card.edit": "Bearbeiten",
    "caldav.bindings.card.remove": "Entfernen",
    "caldav.bindings.modal.add_title": "Kalender hinzufügen",
    "caldav.bindings.modal.edit_title": "Kalender bearbeiten",
    "caldav.bindings.modal.source": "Kalender",
    "caldav.bindings.modal.source.loading": "Lädt …",
    "caldav.bindings.modal.source.existing": "Vorhandenen Kalender wählen",
    "caldav.bindings.modal.source.create": "Neuen Kalender erstellen",
    "caldav.bindings.modal.source.custom": "Eigene URL eingeben",
    "caldav.bindings.modal.source.degrade": "Dieser Anbieter erlaubt das Erstellen neuer Kalender nicht via CalDAV. Erstelle den Kalender direkt in der Anbieter-Oberfläche und füge ihn hier per URL hinzu.",
    "caldav.bindings.modal.source.discover_failed": "Kalender konnten nicht ermittelt werden — eigene URL eingeben.",
    "caldav.bindings.modal.source.discover_empty": "Keine Kalender gefunden — eigene URL eingeben.",
    "caldav.bindings.modal.display_name": "Anzeigename (optional)",
    "caldav.bindings.modal.display_name.placeholder": "z.B. Projekt Acme v Bosch",
    "caldav.bindings.modal.scope": "Inhalt",
    "caldav.bindings.modal.scope.all_visible": "Alles, was ich sehe",
    "caldav.bindings.modal.scope.personal_only": "Nur persönliche Termine",
    "caldav.bindings.modal.scope.project": "Ein Projekt:",
    "caldav.bindings.modal.scope.project.loading": "Lädt …",
    "caldav.bindings.modal.submit_add": "Hinzufügen",
    "caldav.bindings.modal.submit_edit": "Speichern",
    "caldav.bindings.delete.confirm": "Diesen Kalender wirklich entfernen? Die zugehörigen Termine werden im externen Kalender gelöscht.",
    "caldav.bindings.delete.failed": "Entfernen fehlgeschlagen — bitte später erneut versuchen.",
    "caldav.bindings.error.scope": "Bitte einen Inhaltsbereich wählen.",
    "caldav.bindings.error.scope_project": "Bitte ein Projekt auswählen.",
    "caldav.bindings.error.path": "Bitte einen Kalender wählen oder eine URL eingeben.",
    "caldav.bindings.error.create_name_required": "Bitte einen Anzeigenamen eingeben.",
    "caldav.bindings.error.create_name_taken": "Name bereits vergeben — bitte einen anderen Anzeigenamen wählen.",
    "caldav.bindings.error.create_unsupported": "Dein Anbieter unterstützt das Erstellen neuer Kalender nicht. Bitte 'Eigene URL eingeben' verwenden.",

    // Notizen (polymorphic notes — Phase I)
    "notes.section.title": "Notizen",
    "notes.placeholder": "Notiz hinzuf\u00fcgen\u2026",
    "notes.shortcut.hint": "Strg+Enter (oder \u2318+Enter) zum Speichern",
    "notes.submit": "Hinzuf\u00fcgen",
    "notes.save": "Speichern",
    "notes.cancel": "Abbrechen",
    "notes.edit": "Bearbeiten",
    "notes.delete": "L\u00f6schen",
    "notes.delete.confirm": "Diese Notiz wirklich l\u00f6schen?",
    "notes.empty": "Noch keine Notizen.",
    "notes.edited": "bearbeitet",
    "notes.unknown_author": "Unbekannt",
    "notes.time.just_now": "gerade eben",
    "notes.error.empty": "Notiz darf nicht leer sein.",
    "notes.error.generic": "Aktion fehlgeschlagen. Bitte erneut versuchen.",

    // Agenda (t-paliad-030) — unified timeline across projects
    "agenda.title": "Agenda — Paliad",
    "agenda.heading": "Agenda",
    "agenda.subtitle": "Kommende Fristen und Termine über alle sichtbaren Akten, nach Tag gruppiert.",
    "agenda.unavailable": "Agenda zurzeit nicht verfügbar — bitte Administrator kontaktieren.",
    "agenda.loading": "Lädt …",
    "agenda.filter.type": "Ansicht",
    "agenda.filter.both": "Beides",
    "agenda.filter.deadlines": "Nur Fristen",
    "agenda.filter.appointments": "Nur Termine",
    "agenda.filter.range": "Zeitraum",
    "agenda.range.7": "7 Tage",
    "agenda.range.14": "14 Tage",
    "agenda.range.30": "30 Tage",
    "agenda.range.90": "90 Tage",
    "agenda.empty.title": "Keine Einträge im Zeitraum",
    "agenda.empty.hint": "Nichts Fälliges — erweitern Sie den Zeitraum oder legen Sie neue Fristen oder Termine an.",
    "agenda.label.deadline": "Frist",
    "agenda.label.appointment": "Termin",
    "agenda.appointment_type.hearing": "Verhandlung",
    "agenda.appointment_type.meeting": "Besprechung",
    "agenda.appointment_type.consultation": "Mandantentermin",
    "agenda.appointment_type.deadline_hearing": "Fristentermin",
    "agenda.day.today": "Heute",
    "agenda.day.tomorrow": "Morgen",
    "agenda.day.mo": "Mo",
    "agenda.day.di": "Di",
    "agenda.day.mi": "Mi",
    "agenda.day.do": "Do",
    "agenda.day.fr": "Fr",
    "agenda.day.sa": "Sa",
    "agenda.day.so": "So",
    "agenda.urgency.overdue": "Überfällig",
    "agenda.urgency.today": "Heute",
    "agenda.urgency.tomorrow": "Morgen",
    "agenda.urgency.this_week": "Diese Woche",
    "agenda.urgency.later": "Später",

    // Team directory (t-paliad-029)
    "team.title": "Team — Paliad",
    "team.heading": "Team",
    "team.subtitle": "Alle Paliad-Kolleg:innen, gruppiert nach Standort oder Partner Unit.",
    "team.search.placeholder": "Nach Name, Rolle, Büro suchen…",
    "team.group.office": "Nach Standort",
    "team.group.department": "Nach Partner Unit",
    "team.group.other": "Sonstige",
    "team.filter.all": "Alle",
    "team.filter.role": "Rolle",
    "team.role.partner": "Partner",
    "team.role.counsel": "Counsel",
    "team.role.counsel_knowledge_lawyer": "Counsel Knowledge Lawyer",
    "team.role.senior_associate": "Senior Associate",
    "team.role.associate": "Associate",
    "team.role.junior_associate": "Junior Associate",
    "team.role.trainee": "Trainee",
    "team.role.pa": "PA",
    "team.role.paralegal": "Paralegal",
    "team.role.secretary": "Sekretär:in",
    "team.empty": "Keine Treffer.",
    "team.dept.lead": "Lead",
    "team.dept.unassigned": "Ohne Partner Unit",
    "team.partner_unit.unassigned": "Ohne Partner Unit",
    // Project filter (t-paliad-147)
    "team.filter.project": "Projekt",
    "team.filter.project.all": "Alle Projekte",
    "team.filter.project.selected": "ausgewählt",
    "team.filter.project.clear": "Alle abwählen",
    // Click-to-select (t-paliad-223 #53). Layered ON TOP of the existing
    // filter pills — selection is an explicit subset of the visible set,
    // pruned on filter change, wiped on page navigation.
    "team.selection.count": "{n} ausgewählt",
    "team.selection.clear": "Auswahl aufheben",
    "team.selection.send": "E-Mail an Auswahl",
    "team.selection.select_all": "Alle sichtbaren auswählen",
    "team.selection.toggle_card": "Kontakt auswählen",
    // Broadcast modal (t-paliad-147)
    "team.broadcast.button": "E-Mail an Auswahl",
    "team.broadcast.title": "E-Mail an Auswahl",
    "team.broadcast.recipients": "Empfänger",
    "team.broadcast.show_all": "Alle anzeigen",
    "team.broadcast.mailto.label": "Im Mail-Client öffnen",
    "team.broadcast.mailto.tooltip": "Öffnet den lokalen Mail-Client mit allen Empfängern in der To-Zeile",
    "team.broadcast.template": "Vorlage",
    "team.broadcast.template_optional": "optional",
    "team.broadcast.template_freeform": "Freitext",
    "team.broadcast.template.invitation": "Einladung",
    "team.broadcast.template.deadline_digest": "Frist-Digest",
    "team.broadcast.subject": "Betreff",
    "team.broadcast.body": "Nachricht",
    "team.broadcast.body_placeholder": "Hallo {{first_name}}, …",
    "team.broadcast.placeholders_hint": "Platzhalter: {{name}}, {{first_name}}, {{role_on_project}}",
    "team.broadcast.markdown_hint": "Markdown unterstützt: **fett**, *kursiv*, [Link](https://...), - Aufzählung.",
    "team.broadcast.send": "Senden",
    "team.broadcast.sending": "Sende…",
    "team.broadcast.sent": "Versandt",
    "team.broadcast.success": "{sent} von {total} Mails versandt ({failed} fehlgeschlagen).",
    "team.broadcast.error.no_recipients": "Keine Empfänger ausgewählt.",
    "team.broadcast.error.too_many": "Empfängerlimit ({cap}) überschritten.",
    "team.broadcast.error.subject_required": "Betreff ist erforderlich.",
    "team.broadcast.error.body_required": "Nachricht ist erforderlich.",
    "common.close": "Schließen",
    // Admin broadcasts viewer (t-paliad-147)
    "admin.broadcasts.title": "Broadcasts — Paliad",
    "admin.broadcasts.heading": "Broadcasts",
    "admin.broadcasts.subtitle": "Versendete Massen-E-Mails an Teamauswahlen.",
    "admin.broadcasts.col.sent_at": "Gesendet",
    "admin.broadcasts.col.subject": "Betreff",
    "admin.broadcasts.col.sender": "Absender:in",
    "admin.broadcasts.col.count": "Empfänger",
    "admin.broadcasts.loading": "Lade…",
    "admin.broadcasts.empty": "Noch keine Broadcasts versandt.",
    "admin.broadcasts.detail.sent_by": "Gesendet von",
    "admin.broadcasts.detail.delivered": "versandt",
    "admin.broadcasts.detail.failed": "fehlgeschlagen",
    "admin.broadcasts.detail.recipients": "Empfänger",

    // t-paliad-146: Paliadin in-app AI buddy (PoC)
    "paliadin.title": "Paliadin — Paliad",
    "paliadin.heading": "✨ Paliadin",
    "paliadin.tagline": "Ich kenne deine Akten und Paliads Wissensbasis.",
    "paliadin.empty": "Was kann ich für dich tun?",
    "paliadin.starter.today": "Was steht heute an?",
    "paliadin.starter.week": "Welche Fristen sind diese Woche fällig?",
    "paliadin.starter.concept": "Erkläre mir Klageerwiderung.",
    "paliadin.input.placeholder": "Frag den Paliadin…",
    "paliadin.send": "Senden",
    "paliadin.stop": "Stop",
    "paliadin.reset": "Neue Unterhaltung",
    "paliadin.error.local_only": "Paliadin läuft nur lokal. Diese Instanz hat kein tmux/claude installiert — lokal mit ./paliad starten.",
    "paliadin.error.mriver_unreachable": "mRiver ist offline — Paliadin nicht erreichbar. Mach mRiver an, oder nutze Paliadin lokal mit ./paliad.",
    "paliadin.error.shim_auth_failed": "Paliadin-Authentifizierung fehlgeschlagen. SSH-Schlüssel oder Berechtigung auf mRiver prüfen.",
    "paliadin.error.shim_error": "Paliadin-Fehler auf mRiver. tmux/claude-Pane prüfen.",
    "paliadin.error.timeout": "Paliadin antwortet nicht (Timeout 60s). Nochmal versuchen.",
    "paliadin.error.connection_lost": "Verbindung verloren.",
    "paliadin.error.upstream": "Fehler beim Senden.",
    "paliadin.error.upstream_silence": "Paliadin meldet sich nicht mehr — Verbindung wird beendet.",
    "paliadin.late.waiting": "Antwort wird nachgereicht, sobald sie eintrifft …",
    "paliadin.late.checking": "Verbindung verloren — Paliadin denkt vielleicht noch. Lade frische Antwort …",
    "paliadin.late.lost": "Antwort konnte nicht zugestellt werden — bitte Frage erneut stellen.",
    "paliadin.late.marker": "verspätet",
    "paliadin.thinking": "Paliadin denkt nach",
    "paliadin.thinking.seconds": "{seconds}s",
    "paliadin.widget.title": "Paliadin",
    "paliadin.widget.trigger": "Paliadin (Cmd+J)",
    "paliadin.widget.empty": "Was kann ich für dich tun?",
    "paliadin.widget.input.placeholder": "Frage an Paliadin...",
    "paliadin.widget.input.label": "Nachricht an Paliadin",
    "paliadin.widget.send": "Senden",
    "paliadin.widget.reset": "Konversation zurücksetzen",
    "paliadin.widget.reset.confirm": "Konversation hier und auf dem Server zurücksetzen?",
    "paliadin.widget.fullscreen": "Vollbild-Modus",
    "paliadin.widget.close": "Schließen",
    "paliadin.widget.context.on_page": "Auf dieser Seite",
    "approvals.agent.label": "Paliadin hat das vorgeschlagen",
    "approvals.agent.byline": "Paliadin",
    "approvals.agent.suggestion_pending": "Vorschlag wartet auf deine Genehmigung",
    "nav.admin.paliadin": "Paliadin Monitor",
    "admin.paliadin.title": "Paliadin Monitor — Paliad",
    "admin.paliadin.heading": "Paliadin Monitor",
    "admin.paliadin.subtitle": "Wie wird Paliadin tatsächlich verwendet?",
    "admin.paliadin.total": "Gesamt",
    "admin.paliadin.last7": "Letzte 7 Tage",
    "admin.paliadin.median_dur": "Median Dauer",
    "admin.paliadin.tool_rate": "Tool-Use Rate",
    "admin.paliadin.abandon_rate": "Abbruchrate",
    "admin.paliadin.classifier_heading": "Anfragearten",
    "admin.paliadin.daily_heading": "Tägliche Nutzung",
    "admin.paliadin.top_heading": "Top Anfragen",
    "admin.paliadin.recent_heading": "Letzte Anfragen",
    "admin.paliadin.col.prompt": "Anfrage",
    "admin.paliadin.col.count": "Anzahl",
    "admin.paliadin.col.started": "Zeit",
    "admin.paliadin.col.user": "Nutzer",
    "admin.paliadin.col.classifier": "Art",
    "admin.paliadin.col.response": "Antwort",
    "admin.paliadin.col.tools": "Tools",
    "admin.paliadin.col.origin": "Seite",
    "admin.paliadin.col.duration": "Dauer",
    "admin.paliadin.loading": "Lade…",

    "common.forbidden": "Zugriff verweigert.",
    "common.load_error": "Fehler beim Laden.",
    "common.loading": "Lade…",
    "partner_unit.heading": "Meine Partner Units",
    "partner_unit.subtitle": "Partner Units sind strukturelle Einheiten — getrennt von Projektteams. Mitgliedschaft wird vom Admin verwaltet.",
    "partner_unit.none": "Sie sind noch keiner Partner Unit zugeordnet.",
    "partner_unit.members_label": "Mitglieder",

    // Admin team management (t-paliad-050)
    "nav.group.admin": "Admin",
    "nav.admin.bereich": "Admin-Bereich",
    "nav.admin.team": "Team-Verwaltung",
    "admin.title": "Admin-Bereich — Paliad",
    "admin.heading": "Admin-Bereich",
    "admin.subtitle": "Werkzeuge zur Verwaltung von Paliad. Nur für Administrator:innen sichtbar.",
    "admin.section.available": "Verfügbar",
    "admin.section.planned": "Geplant",
    "admin.coming_soon": "Kommt bald",
    "admin.card.team.title": "Team-Verwaltung",
    "admin.card.team.desc": "Benutzer:innen anlegen, bearbeiten, löschen.",
    "admin.card.partner_units.title": "Partner Units",
    "admin.card.partner_units.desc": "Strukturelle Partnereinheiten anlegen und Mitglieder zuordnen.",
    "admin.card.audit.title": "Audit-Log",
    "admin.card.audit.desc": "Wer hat wann was geändert? Nachvollziehbarkeit für sicherheitsrelevante Aktionen.",
    "admin.card.email_templates.title": "Email-Templates",
    "admin.card.email_templates.desc": "Vorlagen für Einladungen, Erinnerungen und Layout anpassen.",
    "admin.card.feature_flags.title": "Feature-Flags",
    "admin.card.feature_flags.desc": "Funktionen pro Standort, Partner Unit oder Rolle aktivieren.",
    "admin.card.broadcasts.title": "Broadcasts",
    "admin.card.broadcasts.desc": "Versendete Massen-E-Mails an Teamauswahlen einsehen.",
    "admin.card.approval_policies.title": "Genehmigungspflichten",
    "admin.card.approval_policies.desc": "4-Augen-Prüfung pro Projekt und Partner Unit konfigurieren.",
    "admin.approval_policies.title": "Genehmigungspflichten — Paliad",
    "admin.approval_policies.heading": "Genehmigungspflichten",
    "admin.approval_policies.subtitle": "4-Augen-Prüfung pro Projekt und Partner Unit konfigurieren.",
    "admin.approval_policies.loading": "Lädt …",
    "admin.approval_policies.section.units": "Partner-Unit-Standards",
    "admin.approval_policies.section.units.hint": "Standardregeln, die jedes Projekt erbt, das einer Partner Unit zugeordnet ist. Bei mehreren Partner Units gewinnt die strengste Regel.",
    "admin.approval_policies.section.projects": "Projekt-spezifisch",
    "admin.approval_policies.section.projects.hint": "Eigene Regeln für ein Projekt. Überschreiben Standards aus Partner Units und geerbte Projektregeln.",
    "admin.approval_policies.units.empty": "Keine Partner Units vorhanden.",
    "admin.approval_policies.picker.label": "Projekt wählen",
    "admin.approval_policies.picker.placeholder": "Suchen…",
    "admin.approval_policies.picker.no_results": "Keine Treffer.",
    "admin.approval_policies.entity.deadline": "Fristen",
    "admin.approval_policies.entity.appointment": "Termine",
    "admin.approval_policies.lifecycle.create": "Erstellen",
    "admin.approval_policies.lifecycle.update": "Ändern",
    "admin.approval_policies.lifecycle.complete": "Erledigen",
    "admin.approval_policies.lifecycle.delete": "Löschen",
    "admin.approval_policies.role.partner": "Partner",
    "admin.approval_policies.role.of_counsel": "Of Counsel",
    "admin.approval_policies.role.associate": "Associate",
    "admin.approval_policies.role.senior_pa": "Senior PA",
    "admin.approval_policies.role.pa": "PA",
    "admin.approval_policies.role.none": "Keine Genehmigung",
    "admin.approval_policies.role.no_rule": "— keine Regel —",
    "admin.approval_policies.source.project": "Projekt",
    "admin.approval_policies.source.ancestor": "Geerbt",
    "admin.approval_policies.source.unit_default": "Standard",
    "admin.approval_policies.source.no_approval": "keine Genehmigung",
    "admin.approval_policies.cell.requires": "Genehmigung erforderlich",
    "admin.approval_policies.cell.clear": "—",
    "admin.approval_policies.cell.clear.title": "Regel zurücksetzen (erben)",
    "admin.approval_policies.cell.saved_msg": "Gespeichert.",
    "admin.approval_policies.cell.error_msg": "Fehler",
    "admin.approval_policies.bulk.cta": "Auf Unterprojekte anwenden",
    "admin.approval_policies.bulk.no_descendants": "Keine Unterprojekte vorhanden.",
    "admin.approval_policies.bulk.modal.title": "Auf Unterprojekte anwenden",
    "admin.approval_policies.bulk.modal.body": "Die folgenden Unterprojekte erhalten die effektive Matrix dieses Projekts als projektspezifische Regeln. Bestehende projektspezifische Regeln werden überschrieben. Standards aus Partner Units bleiben unberührt.",
    "admin.approval_policies.bulk.modal.cancel": "Abbrechen",
    "admin.approval_policies.bulk.modal.confirm": "Übernehmen",
    "admin.approval_policies.bulk.modal.applying": "Übernehme …",
    "admin.approval_policies.bulk.modal.done": "Übernommen",
    "admin.approval_policies.bulk.modal.writes_label": "Schreibvorgänge",
    "admin.approval_policies.bulk.modal.targets_label": "Projekte",
    "inbox.empty.admin_nudge.title": "Noch keine Genehmigungspflichten konfiguriert?",
    "inbox.empty.admin_nudge.body": "Lege fest, welche Lifecycle-Events 4-Augen-Prüfung erfordern.",
    "inbox.empty.admin_nudge.cta": "Genehmigungspflichten konfigurieren",
    "inbox.title.feed": "Inbox — Paliad",
    "inbox.heading.feed": "Inbox",
    "inbox.subtitle.feed": "Neuigkeiten zu Ihren Projekten und offene Genehmigungen.",
    "inbox.action.mark_all_seen": "Alles als gelesen markieren",
    "inbox.action.open": "Öffnen",
    "inbox.empty.feed": "Keine Neuigkeiten in den letzten 30 Tagen.",
    "views.bar.label.unread_only": "Lesestatus",
    "views.bar.unread_only.on": "Nur ungelesen",
    "views.bar.unread_only.off": "Alle",
    "views.bar.label.inbox_focus": "Anzeigen",
    "views.bar.inbox_focus.alles": "Alles",
    "views.bar.inbox_focus.genehmigungen": "Nur Genehmigungen",
    "views.bar.inbox_focus.plus_termine": "+ Termine",
    "views.bar.inbox_focus.plus_fristen": "+ Fristen",
    "deadlines.form.approval_hint": "4-Augen-Prüfung erforderlich",
    "appointments.form.approval_hint": "4-Augen-Prüfung erforderlich",
    "admin.email_templates.title": "Email-Templates — Paliad",
    "admin.email_templates.heading": "Email-Templates",
    "admin.email_templates.subtitle": "Vorlagen für Einladungen, Erinnerungen und das Layout-Wrapper anpassen.",
    "admin.email_templates.loading": "Lade…",
    "admin.email_templates.load_error": "Templates konnten nicht geladen werden.",
    "admin.email_templates.back": "← Zurück zur Liste",
    "admin.email_templates.lang.de": "Deutsch",
    "admin.email_templates.lang.en": "Englisch",
    "admin.email_templates.status.default": "Standard",
    "admin.email_templates.status.last_modified": "Zuletzt geändert: {date}",
    "admin.email_templates.card.invitation.title": "Einladung",
    "admin.email_templates.card.invitation.desc": "E-Mail an neue Kolleg:innen, ausgelöst über die Sidebar.",
    "admin.email_templates.card.deadline_digest.title": "Fristen-Sammelmail",
    "admin.email_templates.card.deadline_digest.desc": "Tägliche Morgen- und Abend-Mail mit überfälligen, heute fälligen und kommenden Fristen.",
    "admin.email_templates.card.base.title": "Layout-Wrapper",
    "admin.email_templates.card.base.desc": "Geteilter HTML-Rahmen mit Header und Footer, der alle E-Mails umschliesst.",
    "admin.email_templates.editor.title": "Email-Template bearbeiten — Paliad",
    "admin.email_templates.editor.heading": "Email-Template bearbeiten",
    "admin.email_templates.editor.heading_for": "{title} — {lang}",
    "admin.email_templates.editor.is_default": "Aktuell wird der Standard verwendet.",
    "admin.email_templates.editor.last_modified": "Zuletzt geändert: {date}",
    "admin.email_templates.editor.subject": "Betreff",
    "admin.email_templates.editor.body": "HTML-Body",
    "admin.email_templates.editor.note_optional": "Notiz (optional)",
    "admin.email_templates.editor.note_placeholder": "z.B. Korrektur nach Anwalts-Feedback",
    "admin.email_templates.editor.variables": "Verfügbare Variablen",
    "admin.email_templates.editor.preview": "Vorschau",
    "admin.email_templates.editor.preview_refresh": "Vorschau aktualisieren",
    "admin.email_templates.editor.preview_error": "Vorschau fehlgeschlagen.",
    "admin.email_templates.editor.parse_error": "Template-Fehler:",
    "admin.email_templates.editor.save": "Speichern",
    "admin.email_templates.editor.save_ok": "Gespeichert.",
    "admin.email_templates.editor.save_error": "Speichern fehlgeschlagen.",
    "admin.email_templates.editor.reset": "Auf Standard zurücksetzen",
    "admin.email_templates.editor.reset_confirm": "Wirklich auf den Standard zurücksetzen?",
    "admin.email_templates.editor.reset_ok": "Auf Standard zurückgesetzt.",
    "admin.email_templates.editor.reset_error": "Zurücksetzen fehlgeschlagen.",
    "admin.email_templates.editor.versions": "Versionen",
    "admin.email_templates.editor.versions_empty": "Keine Versionen.",
    "admin.email_templates.editor.restore": "Wiederherstellen",
    "admin.email_templates.editor.restore_confirm": "Diese Version wiederherstellen?",
    "admin.email_templates.editor.restore_ok": "Version wiederhergestellt.",
    "admin.email_templates.editor.restore_error": "Wiederherstellen fehlgeschlagen.",
    "admin.email_templates.editor.dirty_warn": "Ungespeicherte Änderungen verwerfen?",
    "admin.email_templates.editor.unknown_key": "Unbekannter Template-Schlüssel.",
    "admin.email_templates.editor.slot.morning": "Morgen-Slot",
    "admin.email_templates.editor.slot.evening": "Abend-Slot",
    "admin.team.title": "Team-Verwaltung — Paliad",
    "admin.team.heading": "Team-Verwaltung",
    "admin.team.subtitle": "Alle Paliad-Konten anzeigen, bearbeiten oder hinzufügen.",
    "admin.team.search.placeholder": "Nach Name oder E-Mail suchen…",
    "admin.team.add.full": "Konto direkt anlegen",
    "admin.team.add.direct": "Bestehendes Konto onboarden",
    "admin.team.add.invite": "Neue:n Kolleg:in einladen",
    "admin.team.add_full.title": "Konto direkt anlegen",
    "admin.team.add_full.body": "Legt sowohl das Login-Konto als auch das Paliad-Profil an. Die neue Person erhält eine E-Mail mit einem Link, über den sie ein Passwort setzt.",
    "admin.team.add_full.email": "E-Mail",
    "admin.team.add_full.name": "Anzeigename",
    "admin.team.add_full.office": "Standort",
    "admin.team.add_full.profession": "Profession",
    "admin.team.add_full.job_title": "Berufsbezeichnung",
    "admin.team.add_full.lang": "Sprache",
    "admin.team.add_full.send_welcome": "Willkommens-E-Mail mit Login-Link senden",
    "admin.team.add_full.cancel": "Abbrechen",
    "admin.team.add_full.submit": "Anlegen",
    "admin.team.add_full.feedback.added": "Konto angelegt.",
    "admin.team.add_full.error.unavailable": "Add-User-Pfad ist nicht konfiguriert (SUPABASE_SERVICE_ROLE_KEY fehlt am Server).",
    "admin.team.add_full.error.email_exists": "Es existiert bereits ein Konto für diese E-Mail — bitte 'Bestehendes Konto onboarden' verwenden.",
    "admin.team.add_full.error.generic": "Konto konnte nicht angelegt werden.",
    "admin.team.loading": "Lade…",
    "admin.team.empty": "Keine Treffer.",
    "admin.team.error.forbidden": "Zugriff nur für Admins.",
    "admin.team.col.name": "Name",
    "admin.team.col.email": "E-Mail",
    "admin.team.col.office": "Standort",
    "admin.team.col.job_title": "Berufsbezeichnung",
    "admin.team.col.profession": "Profession",
    "admin.team.col.profession.none": "(extern)",
    "admin.team.col.profession.none.hint": "Keine Profession gesetzt — keine 4-Augen-Befugnis.",
    "admin.team.col.permission": "Berechtigung",
    "admin.team.col.additional": "Weitere Standorte",
    "admin.team.col.lang": "Sprache",
    "admin.team.col.created": "Angelegt",
    "admin.team.col.actions": "Aktionen",
    "admin.team.row.edit": "Bearbeiten",
    "admin.team.row.delete": "Löschen",
    "admin.team.row.save": "Speichern",
    "admin.team.row.cancel": "Abbrechen",
    "admin.team.confirm.delete": "{name} wirklich löschen? Diese Aktion ist endgültig.",
    "admin.team.feedback.saved": "Gespeichert.",
    "admin.team.feedback.deleted": "Gelöscht.",
    "admin.team.feedback.added": "Konto onboardet.",
    "admin.team.direct_add.title": "Bestehendes Konto onboarden",
    "admin.team.direct_add.body": "Diese Auswahl zeigt Konten, die sich angemeldet haben, aber noch kein Profil ausgefüllt haben.",
    "admin.team.direct_add.email": "E-Mail",
    "admin.team.direct_add.email.placeholder": "Bitte auswählen…",
    "admin.team.direct_add.empty": "Keine offenen Konten.",
    "admin.team.direct_add.name": "Anzeigename",
    "admin.team.direct_add.office": "Standort",
    "admin.team.direct_add.job_title": "Berufsbezeichnung",
    "admin.team.permission.standard": "Standard",
    "admin.team.permission.global_admin": "Globaler Admin",
    "admin.team.permission.last_admin": "Der letzte globale Admin kann nicht degradiert werden.",
    "admin.team.direct_add.cancel": "Abbrechen",
    "admin.team.direct_add.submit": "Anlegen",

    // Admin audit log (t-paliad-071)
    "nav.admin.audit": "Audit-Log",
    "nav.admin.partner_units": "Partner Units",

    // Admin Backup Mode (t-paliad-246 / m/paliad#77)
    "nav.admin.backups": "Backups",
    "admin.backups.title": "Backups — Paliad",
    "admin.backups.heading": "Backups",
    "admin.backups.subtitle": "Vollständige Snapshots aller Daten — manuell oder zeitgesteuert.",
    "admin.backups.run_now": "Backup jetzt erstellen",
    "admin.backups.running": "Läuft …",
    "admin.backups.success": "Backup erfolgreich erstellt.",
    "admin.backups.empty": "Noch keine Backups vorhanden.",
    "admin.backups.loading": "Lade …",
    "admin.backups.col.started": "Erstellt",
    "admin.backups.col.kind": "Auslöser",
    "admin.backups.col.status": "Status",
    "admin.backups.col.requested_by": "Angefordert von",
    "admin.backups.col.size": "Größe",
    "admin.backups.col.rows": "Sheets",
    "admin.backups.col.actions": "Aktion",
    "admin.backups.kind.scheduled": "Geplant",
    "admin.backups.kind.on_demand": "Manuell",
    "admin.backups.status.running": "Läuft …",
    "admin.backups.status.done": "✓ Fertig",
    "admin.backups.status.failed": "✗ Fehlgeschlagen",
    "admin.backups.download": "Download",
    "admin.backups.footer.note": "Geplante Backups werden in einer späteren Slice aktiviert. Manuelle Backups stehen jetzt zur Verfügung.",
    "admin.audit.title": "Audit-Log — Paliad",
    "admin.audit.heading": "Audit-Log",
    "admin.audit.subtitle": "Globale Zeitleiste über Projekt-, CalDAV-, Reminder- und Partner-Unit-Ereignisse.",
    "admin.audit.source.partner_unit_events": "Partner Units",
    "admin.partner_units.title": "Partner Units — Paliad",
    "admin.partner_units.heading": "Partner Units",
    "admin.partner_units.subtitle": "Strukturelle Partnereinheiten verwalten und Mitglieder zuordnen.",
    "admin.partner_units.loading": "Lade…",
    "admin.partner_units.empty": "Noch keine Partner Units angelegt.",
    "admin.partner_units.new": "Neue Partner Unit",
    "admin.partner_units.new.heading": "Partner Unit anlegen",
    "admin.partner_units.edit.heading": "Partner Unit bearbeiten",
    "admin.partner_units.create": "Speichern",
    "admin.partner_units.cancel": "Abbrechen",
    "admin.partner_units.col.name": "Name",
    "admin.partner_units.col.office": "Büro",
    "admin.partner_units.col.lead": "Lead",
    "admin.partner_units.col.members": "Mitglieder",
    "admin.partner_units.col.actions": "Aktionen",
    "admin.partner_units.action.members": "Mitglieder",
    "admin.partner_units.action.edit": "Bearbeiten",
    "admin.partner_units.action.delete": "Löschen",
    "admin.partner_units.confirm_delete": "Partner Unit \"{name}\" wirklich löschen?",
    "admin.partner_units.error.name_required": "Name erforderlich",
    "admin.partner_units.error.user_required": "Benutzer auswählen",
    "admin.partner_units.feedback.created": "Angelegt.",
    "admin.partner_units.feedback.updated": "Aktualisiert.",
    "admin.partner_units.feedback.deleted": "Gelöscht.",
    "admin.partner_units.feedback.role_updated": "Rolle aktualisiert.",
    "admin.partner_units.member.heading": "Mitglieder verwalten",
    "admin.partner_units.member.empty": "Noch keine Mitglieder.",
    "admin.partner_units.member.add": "Mitglied hinzufügen",
    "admin.partner_units.member.add_btn": "Hinzufügen",
    "admin.partner_units.member.remove": "Entfernen",
    "admin.partner_units.member.confirm_remove": "Mitglied entfernen?",
    "admin.partner_units.member.placeholder": "Name oder E-Mail",
    "admin.partner_units.member.role": "Rolle",
    "admin.audit.loading": "Lade…",
    "admin.audit.empty": "Keine Ereignisse für die gewählten Filter.",
    "admin.audit.loadmore": "Weitere laden",
    "admin.audit.error.forbidden": "Zugriff nur für Admins.",
    "admin.audit.error.unavailable": "Audit-Service nicht verfügbar.",
    "admin.audit.search.placeholder": "Subjekt, Beschreibung, Ereignistyp …",
    "admin.audit.filter.source": "Quelle",
    "admin.audit.filter.range": "Zeitraum",
    "admin.audit.filter.from": "Von",
    "admin.audit.filter.to": "Bis",
    "admin.audit.filter.search": "Suche",
    "admin.audit.range.24h": "Letzte 24h",
    "admin.audit.range.7d": "Letzte 7 Tage",
    "admin.audit.range.30d": "Letzte 30 Tage",
    "admin.audit.range.custom": "Benutzerdefiniert",
    "admin.audit.range.all": "Alles",
    "admin.audit.source.all": "Alle Quellen",
    "admin.audit.source.project_events": "Projekt-Ereignisse",
    "admin.audit.source.caldav_sync_log": "CalDAV-Sync",
    "admin.audit.source.reminder_log": "Reminder",
    "admin.audit.col.time": "Zeit",
    "admin.audit.col.source": "Quelle",
    "admin.audit.col.event": "Ereignis",
    "admin.audit.col.actor": "Akteur",
    "admin.audit.col.subject": "Subjekt",
    "admin.audit.col.description": "Beschreibung",
    "admin.audit.event.caldav_synced": "CalDAV-Sync erfolgreich",
    "admin.audit.event.caldav_sync_error": "CalDAV-Sync-Fehler",
    "admin.audit.event.morning_digest": "Morgen-Digest gesendet",
    "admin.audit.event.evening_digest": "Abend-Digest gesendet",
    "admin.audit.event.deadline_reminder": "Fristerinnerung gesendet",
    "admin.audit.event.due_today": "Fälligkeits-Erinnerung gesendet",
    "admin.audit.event.weekly": "Wochen-Digest gesendet",

    // Not-found (404) page
    "notfound.title": "Seite nicht gefunden — Paliad",
    "notfound.heading": "Seite nicht gefunden",
    "notfound.lede": "Diese Seite existiert nicht oder wurde verschoben.",
    "notfound.cta": "Zurück zum Dashboard",

    // t-paliad-088: Event Types — picker, multi-select filter, add modal.
    "common.cancel": "Abbrechen",
    "modal.close.label": "Schließen",
    "event_types.cat.submission": "Eingaben",
    "event_types.cat.decision": "Entscheidungen",
    "event_types.cat.order": "Anordnungen",
    "event_types.cat.service": "Zustellungen",
    "event_types.cat.fee": "Gebühren",
    "event_types.cat.hearing": "Verhandlungen",
    "event_types.cat.other": "Sonstiges",
    "event_types.picker.search": "Suchen oder tippen…",
    "event_types.picker.add": "+ Neuen Typ hinzufügen…",
    "event_types.picker.remove": "Entfernen",
    "event_types.picker.no_match": "Keine Treffer.",
    "event_types.picker.browse_all": "Alle anzeigen",
    "event_types.browse.title": "Event-Typen wählen",
    "event_types.browse.search": "In allen Typen suchen…",
    "event_types.browse.empty": "Keine Treffer.",
    "event_types.browse.apply": "Übernehmen",
    "event_types.browse.cancel": "Abbrechen",
    "event_types.browse.selected_count": "{n} ausgewählt",
    "event_types.browse.jurisdiction.none": "Allgemein",
    "event_types.browse.jurisdiction.all": "Alle Gerichte",
    "event_types.browse.jurisdiction.filter_label": "Nach Gerichtsart filtern",
    "event_types.filter.all": "Alle Typen",
    "event_types.filter.untyped": "— Ohne Typ —",
    "event_types.filter.search": "Typ suchen…",
    "event_types.filter.reset": "Zurücksetzen",
    "event_types.filter.apply": "Anwenden",
    "event_types.filter.n_selected": "{n} Typen",
    "event_types.add.title": "Neuen Event-Typ anlegen",
    "event_types.add.label_de": "Bezeichnung (DE) *",
    "event_types.add.label_en": "Bezeichnung (EN, optional)",
    "event_types.add.category": "Kategorie *",
    "event_types.add.jurisdiction": "Jurisdiktion (optional)",
    "event_types.add.jurisdiction.none": "—",
    "event_types.add.jurisdiction.any": "Allgemein",
    "event_types.add.firm_wide": "Firmenweit verfügbar machen",
    "event_types.add.firm_wide.hint": "Firmenweite Typen sind für alle Kolleg:innen sichtbar. Admins können sie archivieren.",
    "event_types.add.submit": "Anlegen",
    "event_types.add.duplicate_warn": "Existiert vermutlich schon:",
    "event_types.add.error.required": "Bezeichnung (DE) ist Pflichtfeld.",
    "event_types.add.error.slug_taken": "Ein Typ mit diesem Namen existiert bereits.",
    "event_types.add.error.generic": "Fehler beim Anlegen. Bitte erneut versuchen.",
    "deadlines.field.event_type": "Typ (optional)",
    "deadlines.col.event_type": "Typ",
    "deadlines.filter.event_type": "Typ",
    "agenda.filter.event_type": "Typ",

    // t-paliad-089: Admin Event-Type moderation panel.
    "nav.admin.event_types": "Event-Typen",
    "admin.card.event_types.title": "Event-Typen",
    "admin.card.event_types.desc": "Firmenweite Event-Typen moderieren: archivieren, zusammenführen, befördern.",
    "admin.event_types.title": "Event-Typen — Paliad",
    "admin.event_types.heading": "Event-Typen",
    "admin.event_types.subtitle": "Firmenweite Event-Typen moderieren: archivieren, zusammenführen, private Typen befördern.",
    "admin.event_types.section.firm_wide": "Firmenweite Typen",
    "admin.event_types.section.private_pending": "Private Typen (zur Beförderung)",
    "admin.event_types.section.private_pending.hint": "Private Typen anderer Kolleg:innen, sortiert nach Häufigkeit. Befördern macht den Typ firmenweit sichtbar.",
    "admin.event_types.search.placeholder": "Bezeichnung, Slug oder Author suchen…",
    "admin.event_types.show_archived": "Archivierte anzeigen",
    "admin.event_types.loading": "Lade…",
    "admin.event_types.empty": "Keine Treffer.",
    "admin.event_types.private.empty": "Keine privaten Typen.",
    "admin.event_types.col.label": "Bezeichnung",
    "admin.event_types.col.category": "Kategorie",
    "admin.event_types.col.jurisdiction": "Jurisdiktion",
    "admin.event_types.col.author": "Author",
    "admin.event_types.col.created": "Erstellt",
    "admin.event_types.col.usage": "Verwendung",
    "admin.event_types.col.actions": "Aktionen",
    "admin.event_types.row.archived": "Archiviert",
    "admin.event_types.author.system": "System",
    "admin.event_types.author.unknown": "Unbekannt",
    "admin.event_types.action.archive": "Archivieren",
    "admin.event_types.action.archive_selected": "Ausgewählte archivieren",
    "admin.event_types.action.merge_selected": "Zusammenführen…",
    "admin.event_types.action.restore": "Wiederherstellen",
    "admin.event_types.action.promote": "Befördern",
    "admin.event_types.bulk.count": "{n} ausgewählt",
    "admin.event_types.confirm.archive": "„{label}\" wirklich archivieren?",
    "admin.event_types.confirm.bulk_archive": "{n} Typen wirklich archivieren?",
    "admin.event_types.confirm.promote": "„{label}\" firmenweit verfügbar machen?",
    "admin.event_types.confirm.merge": "„{winner}\" als Gewinner: {n} Verlierer-Typ(en) werden archiviert, {usage} Junction-Eintrag/-träge umgeleitet. Fortfahren?",
    "admin.event_types.feedback.archived": "{n} archiviert.",
    "admin.event_types.feedback.archive_error": "Archivierung fehlgeschlagen.",
    "admin.event_types.feedback.restored": "Wiederhergestellt.",
    "admin.event_types.feedback.restore_error": "Wiederherstellung fehlgeschlagen.",
    "admin.event_types.feedback.promoted": "Befördert.",
    "admin.event_types.feedback.promote_error": "Beförderung fehlgeschlagen.",
    "admin.event_types.feedback.merged": "Zusammengeführt.",
    "admin.event_types.feedback.merge_error": "Zusammenführung fehlgeschlagen.",
    "admin.event_types.error.forbidden": "Zugriff nur für Admins.",
    "admin.event_types.merge.title": "Typen zusammenführen",
    "admin.event_types.merge.body": "Wählen Sie den Gewinner-Typ. Die Junction-Einträge der Verlierer werden auf den Gewinner umgeleitet, anschließend werden die Verlierer archiviert.",
    "admin.event_types.merge.submit": "Zusammenführen",

    // Approval workflow (t-paliad-138).
    "approvals.title": "Genehmigungen",
    "approvals.heading": "Genehmigungen",
    "approvals.subtitle": "4-Augen-Prüfung für Fristen und Termine.",
    "approvals.tab.pending_mine": "Zur Genehmigung",
    "approvals.tab.mine": "Meine Anfragen",
    "approvals.empty.pending_mine": "Aktuell nichts zu genehmigen.",
    "approvals.empty.mine": "Sie haben keine offenen Anfragen.",
    "approvals.lifecycle.create": "Erstellung",
    "approvals.lifecycle.update": "Änderung",
    "approvals.lifecycle.complete": "Erledigung",
    "approvals.lifecycle.delete": "Löschung",
    "approvals.entity.deadline": "Frist",
    "approvals.entity.appointment": "Termin",
    "approvals.required_role.lead": "Lead",
    "approvals.required_role.of_counsel": "Of Counsel",
    "approvals.required_role.associate": "Associate",
    "approvals.required_role.senior_pa": "Senior PA",
    "approvals.required_role.pa": "PA",
    "approvals.status.pending": "Offen",
    "approvals.status.approved": "Genehmigt",
    "approvals.status.rejected": "Abgelehnt",
    "approvals.status.revoked": "Zurückgezogen",
    "approvals.status.superseded": "Ersetzt",
    "approvals.status.changes_requested": "Abgelehnt mit Vorschlag",
    "approvals.action.approve": "Genehmigen",
    "approvals.action.reject": "Ablehnen",
    "approvals.action.revoke": "Zurückziehen",
    "approvals.action.suggest_changes": "Änderungen vorschlagen",
    "approvals.note.placeholder": "Optionale Begründung...",
    "approvals.suggest.modal_title": "Änderungen vorschlagen",
    "approvals.suggest.intro": "Bearbeite die vorgeschlagenen Werte und/oder hinterlasse einen Kommentar. Dein Vorschlag wird als neue Genehmigungsanfrage eingestellt und kann vom ursprünglichen Antragsteller (oder einer anderen berechtigten Person) genehmigt werden.",
    "approvals.suggest.note_label": "Kommentar zum Vorschlag",
    "approvals.suggest.note_placeholder": "Warum sollen die Werte angepasst werden?",
    "approvals.suggest.submit": "Vorschlag einreichen",
    "approvals.suggest.cancel": "Abbrechen",
    "approvals.suggest.submit_disabled_hint": "Bitte mindestens ein Feld ändern oder einen Kommentar hinterlassen.",
    "approvals.suggest.next_request_link": "→ Neuer Vorschlag von {name}",
    "approvals.suggest.unsupported_lifecycle": "Änderungen vorschlagen ist nur für Update-Anfragen möglich.",
    "approvals.suggest.section.editable": "Felder",
    "approvals.suggest.section.event_type_rule": "Verfahrenshandlung (Typ + Regel)",
    "approvals.suggest.section.context": "Kontext",
    "approvals.suggest.context.project": "Projekt",
    "approvals.suggest.context.requester": "Eingereicht von",
    "approvals.suggest.context.requested_at": "Eingereicht am",
    "approvals.suggest.context.approval_status": "Genehmigungsstatus",
    "approvals.suggest.event_type_picker_unavailable": "Ereignistypen konnten nicht geladen werden.",
    "approvals.suggest.field.original_due_date": "Ursprüngliches Fälligkeitsdatum",
    "approvals.suggest.field.warning_date": "Warndatum",
    "approvals.suggest.field.rule_code": "Regel-Zitat",
    "approvals.suggest.field.description": "Beschreibung",
    "approvals.requested_by": "Eingereicht von",
    "approvals.decided_by": "Entschieden von",
    "approvals.decision_kind.peer": "Genehmigt durch Teammitglied",
    "approvals.decision_kind.admin_override": "Admin-Sign-off",
    "approvals.decision_kind.derived_peer": "Genehmigt durch abgeleitetes Mitglied (Partner Unit)",
    "approvals.error.self_approval": "Eigengenehmigung nicht zulässig.",
    "approvals.error.not_authorized": "Sie haben nicht die erforderliche Rolle.",
    "approvals.error.no_qualified_approver": "Kein qualifizierter Approver verfügbar — bitte einen Approver ins Projekt-Team aufnehmen oder Admin kontaktieren.",
    "approvals.error.concurrent_pending": "Es liegt bereits eine Genehmigungsanfrage auf diesem Eintrag vor.",
    "approvals.error.awaiting_approval": "Diese Anforderung wartet auf Genehmigung.",
    "approvals.error.request_not_pending": "Diese Anfrage ist nicht mehr offen.",
    "approvals.error.suggestion_requires_change": "Ein Vorschlag braucht entweder geänderte Werte oder einen Kommentar.",
    "approvals.error.suggestion_lifecycle_invalid": "Änderungen vorschlagen ist nur für Update-Anfragen möglich.",
    "approvals.disabled.self_approval": "Du kannst eigene Anträge nicht genehmigen",
    "approvals.disabled.not_authorized": "Du hast keine Genehmigungsberechtigung für diesen Antrag",
    "approvals.disabled.revoke_not_requester": "Nur der Antragsteller kann zurückziehen",
    "approvals.disabled.suggest_lifecycle": "Änderungen vorschlagen ist nur für Update-Anfragen möglich",
    "approvals.pending.badge": "Wartet auf Genehmigung",
    "approvals.withdraw.cta": "Genehmigungsanfrage zurückziehen",
    "approvals.withdraw.confirm": "Genehmigungsanfrage wirklich zurückziehen?",
    "approvals.withdraw.error": "Fehler beim Zurückziehen",
    "approvals.withdraw.cancel": "Abbrechen",
    "approvals.withdraw.modal.title": "Genehmigungsanfrage zurückziehen?",
    "approvals.withdraw.primary.label": "Termin bearbeiten",
    "approvals.withdraw.destructive.label": "Endgültig zurückziehen und löschen",
    "approvals.withdraw.lead.create.deadline": "Wenn Sie die Anfrage zurückziehen, wird die Frist gelöscht.",
    "approvals.withdraw.lead.create.appointment": "Wenn Sie die Anfrage zurückziehen, wird der Termin gelöscht.",
    "approvals.withdraw.lead.update": "Wenn Sie die Anfrage zurückziehen, werden die vorgeschlagenen Änderungen verworfen — der Eintrag kehrt in den Zustand vor Ihrer Bearbeitung zurück.",
    "approvals.withdraw.lead.delete": "Wenn Sie die Löschanfrage zurückziehen, bleibt der Eintrag bestehen.",
    "approvals.withdraw.sub.create": "Alternativ können Sie den Eintrag stattdessen bearbeiten. Die Anfrage bleibt offen und der Genehmiger sieht Ihre neuen Werte.",
    "approvals.withdraw.sub.update": "Alternativ können Sie Ihre Änderungen bearbeiten und neu absenden. Die Anfrage bleibt offen.",
    "approvals.withdraw.sub.delete": "Sind Sie sicher, dass Sie die Löschanfrage zurückziehen möchten?",
    "approvals.pending_create.label": "Erstellung wartet auf Genehmigung",
    "approvals.pending_update.label": "Änderung wartet auf Genehmigung",
    "approvals.pending_complete.label": "Erledigung wartet auf Genehmigung",
    "approvals.pending_delete.label": "Zur Löschung beantragt",
    "approvals.diff.before": "Vorher",
    "approvals.diff.after": "Nachher",
    "approvals.policies.title": "Genehmigungsrichtlinien",
    "approvals.policies.subtitle": "Welche Lebenszyklus-Schritte benötigen 4-Augen-Prüfung in diesem Projekt?",
    "approvals.policies.column.event": "Ereignis",
    "approvals.policies.column.deadline": "Frist",
    "approvals.policies.column.appointment": "Termin",
    "approvals.policies.no_approval": "Keine Genehmigung erforderlich",
    "approvals.policies.copy_parent": "Aus Eltern-Projekt übernehmen",
    "approvals.policies.set_all_associate": "Alle auf Associate setzen",

    // t-paliad-144 — Custom Views
    "nav.group.user_views": "Meine Ansichten",
    "nav.user_views.new": "Neue Ansicht",
    "views.title": "Ansichten — Paliad",
    "views.heading": "Ansichten",
    "views.subtitle": "Eigene Ansichten über Ihre Daten — Filter und Darstellung speicherbar.",
    "views.loading": "Lädt …",
    "views.shape.list": "Liste",
    "views.shape.cards": "Karten",
    "views.shape.calendar": "Kalender",
    "views.shape.timeline": "Timeline",
    "views.timeline.caveat.body": "Custom Views zeigen nur eingetretene Ereignisse. Für prognostizierte Fristen das Projekt-Chart öffnen.",
    "views.timeline.zoom.label": "Zoom",
    "views.timeline.zoom.in": "Heranzoomen",
    "views.timeline.zoom.out": "Herauszoomen",
    "views.timeline.zoom.1y": "±1 J.",
    "views.timeline.zoom.2y": "±2 J.",
    "views.timeline.zoom.all": "Alles",
    "views.save_as": "Als Ansicht speichern",
    "views.action.edit": "Bearbeiten",
    "views.empty.title": "Keine Einträge gefunden.",
    "views.error.back": "Zurück zur Ansichten-Übersicht",
    "views.error.not_found": "Ansicht nicht gefunden.",
    "views.error.network": "Netzwerkfehler — bitte erneut versuchen.",
    "views.toast.inaccessible_one": "1 Projekt in dieser Ansicht ist nicht mehr sichtbar.",
    "views.toast.inaccessible_n": "{n} Projekte in dieser Ansicht sind nicht mehr sichtbar.",
    "views.calendar.mobile_fallback": "Kalender-Ansicht ist auf grossen Bildschirmen am besten.",
    "views.onboarding.title": "Eigene Ansichten — was ist das?",
    "views.onboarding.body": "Eine Ansicht ist eine gespeicherte Filterkombination — z.B. „Fristen meiner Projekte in den nächsten 14 Tagen“. Ansichten erscheinen als eigene Buttons in der Sidebar.",
    "views.onboarding.create": "Beispiel-Ansicht erstellen",
    "views.source.deadline": "Fristen",
    "views.source.appointment": "Termine",
    "views.source.project_event": "Projekt-Verlauf",
    "views.source.approval_request": "Genehmigungen",
    "views.kind.deadline": "Frist",
    "views.kind.appointment": "Termin",
    "views.kind.project_event": "Verlauf",
    "views.kind.approval_request": "Genehmigung",
    "views.scope.all_visible": "Alle sichtbaren",
    "views.scope.my_subtree": "Mein Teilbaum",
    "views.scope.explicit": "Bestimmte Projekte",
    "views.scope.personal_only": "Nur persönliche",
    "views.horizon.next_1d": "Morgen",
    "views.horizon.next_7d": "Nächste 7 Tage",
    "views.horizon.next_14d": "Nächste 14 Tage",
    "views.horizon.next_30d": "Nächste 30 Tage",
    "views.horizon.next_90d": "Nächste 90 Tage",
    "views.horizon.next_all": "Ganze Zukunft",
    "views.horizon.past_1d": "Letzter Tag",
    "views.horizon.past_7d": "Letzte 7 Tage",
    "views.horizon.past_14d": "Letzte 14 Tage",
    "views.horizon.past_30d": "Letzte 30 Tage",
    "views.horizon.past_90d": "Letzte 90 Tage",
    "views.horizon.past_all": "Ganze Vergangenheit",
    "views.horizon.any": "Beliebig",
    "views.horizon.all": "Komplett (alle Daten)",
    "views.horizon.custom": "Benutzerdefiniert",
    "views.density.comfortable": "Bequem",
    "views.density.compact": "Kompakt",
    "views.col.date": "Datum",
    "views.col.time": "Wann",
    "views.col.title": "Titel",
    "views.col.project": "Projekt",
    "views.col.actor": "Akteur",
    "views.col.status": "Status",
    "views.col.rule": "Regel",
    "views.col.event_type": "Typ",
    "views.col.location": "Ort",
    "views.col.appointment_type": "Termin-Typ",
    "views.col.approval_status": "Genehmigung",
    "views.col.decided_by": "Entschieden von",
    "views.col.kind": "Art",
    "views.editor.title": "Ansicht bearbeiten — Paliad",
    "views.editor.heading.new": "Neue Ansicht",
    "views.editor.heading.edit": "Ansicht bearbeiten",
    "views.editor.subtitle": "Wählen Sie Quellen, Filter und Darstellung. Änderungen speichern Sie unten.",
    "views.editor.section.identity": "Bezeichnung",
    "views.editor.section.sources": "Quellen",
    "views.editor.section.scope": "Geltungsbereich",
    "views.editor.section.time": "Zeitraum",
    "views.editor.section.render": "Darstellung",
    "views.editor.field.name": "Name",
    "views.editor.field.slug": "Slug (URL)",
    "views.editor.field.icon": "Icon",
    "views.editor.field.show_count": "Treffer-Anzahl in der Sidebar anzeigen",
    "views.editor.field.scope_mode": "Projekte",
    "views.editor.field.personal_only": "Nur persönliche",
    "views.editor.field.horizon": "Horizont",
    "views.editor.field.shape": "Form",
    "views.editor.field.density": "Dichte",
    "views.editor.hint.slug": "Kleinbuchstaben, Ziffern und Bindestriche — nicht reservierte Wörter.",
    "views.editor.hint.sources": "Welche Datenarten zeigt diese Ansicht?",
    "views.editor.icon.default": "Standard (Ordner)",
    "views.editor.icon.clock": "Uhr",
    "views.editor.icon.calendar": "Kalender",
    "views.editor.icon.bell": "Glocke",
    "views.editor.icon.folder": "Ordner",
    "views.editor.icon.users": "Personen",
    "views.editor.icon.building": "Gebäude",
    "views.editor.save": "Speichern",
    "views.editor.cancel": "Abbrechen",
    "views.editor.delete": "Löschen",
    "views.editor.confirm_delete": "Diese Ansicht wirklich löschen?",
    "views.editor.error.name_required": "Name ist erforderlich.",
    "views.editor.error.slug_format": "Slug darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten und muss mit einem Buchstaben oder einer Ziffer beginnen.",
    "views.editor.error.sources_required": "Mindestens eine Quelle wählen.",
    "views.editor.error.load_failed": "Ansicht konnte nicht geladen werden.",
    "views.editor.error.delete_failed": "Ansicht konnte nicht gelöscht werden.",

    // Universal FilterBar — t-paliad-163. Mounted on every list-shaped
    // surface (starts with /inbox in Phase 1; /agenda + /events follow).
    "views.bar.label.time": "Zeitraum",
    "views.bar.label.personal": "Eigene",
    "views.bar.label.approval_role": "Sicht",
    "views.bar.label.approval_status": "Status",
    "views.bar.label.approval_entity": "Art",
    "views.bar.label.deadline_status": "Frist-Status",
    "views.bar.label.appointment_type": "Termin-Typ",
    "views.bar.label.project_event_kind": "Ereignis",
    "views.bar.label.timeline_status": "Timeline-Status",
    "views.bar.label.timeline_track": "Track",
    "views.bar.timeline_status.done": "Erledigt",
    "views.bar.timeline_status.open": "Offen",
    "views.bar.timeline_status.overdue": "Überfällig",
    "views.bar.timeline_status.predicted": "Voraussichtlich",
    "views.bar.timeline_status.predicted_overdue": "Überfällig (vorhergesagt)",
    "views.bar.timeline_status.court_set": "Gerichtsdatum",
    "views.bar.timeline_status.off_script": "Eigener Eintrag",
    "views.bar.timeline_status.macro.future": "Zukunft anzeigen",
    "views.bar.timeline_status.macro.past": "Nur vergangenes",
    "views.bar.timeline_track.parent": "Hauptverfahren",
    "views.bar.timeline_track.counterclaim": "Widerklage",
    "views.bar.timeline_track.off_script": "Off-Script",
    "views.bar.label.shape": "Darstellung",
    "views.bar.label.density": "Dichte",
    "views.bar.label.sort": "Sortierung",
    "views.bar.common.all": "Alle",
    // views.bar.time.* keys retired in t-paliad-248 — the filter-bar time
    // axis now mounts the symmetric date-range picker, whose labels live
    // under date_range.horizon.* (see end of this dict). The picker reuses
    // views.bar.label.time as the closed-button prefix.
    "views.bar.personal.on": "Nur eigene",
    "views.bar.approval_role.approver_eligible": "Zur Genehmigung",
    "views.bar.approval_role.self_requested": "Eigene Anfragen",
    "views.bar.approval_role.any_visible": "Alle sichtbaren",
    "views.bar.approval_status.pending": "Wartend",
    "views.bar.approval_status.approved": "Genehmigt",
    "views.bar.approval_status.rejected": "Abgelehnt",
    "views.bar.approval_status.revoked": "Zurückgezogen",
    "views.bar.approval_status.changes_requested": "Mit Vorschlag",
    "views.bar.approval_entity.deadline": "Frist",
    "views.bar.approval_entity.appointment": "Termin",
    "views.bar.deadline_status.pending": "Offen",
    "views.bar.deadline_status.completed": "Erledigt",
    "views.bar.appointment_type.hearing": "Verhandlung",
    "views.bar.appointment_type.meeting": "Besprechung",
    "views.bar.appointment_type.consultation": "Beratung",
    "views.bar.appointment_type.deadline_hearing": "Mündliche Verhandlung",
    "views.bar.shape.list": "Liste",
    "views.bar.shape.cards": "Karten",
    "views.bar.shape.calendar": "Kalender",
    "views.bar.density.comfortable": "Bequem",
    "views.bar.density.compact": "Kompakt",
    "views.bar.sort.date_asc": "Datum aufsteigend",
    "views.bar.sort.date_desc": "Datum absteigend",
    "views.bar.action.reset": "Zurücksetzen",
    "views.bar.action.save_as_view": "Als Sicht speichern",
    "views.bar.save.heading": "Sicht speichern",
    "views.bar.save.field.name": "Name",
    "views.bar.save.field.slug": "Slug",
    "views.bar.save.field.slug_hint": "Wird Teil der URL: /views/<slug>",
    "views.bar.save.field.show_count": "Anzahl in der Sidebar zeigen",
    "views.bar.save.cancel": "Abbrechen",
    "views.bar.save.confirm": "Speichern",
    "views.bar.save.error.name_required": "Bitte Namen vergeben.",
    "views.bar.save.error.slug_format": "Slug muss mit einem Buchstaben oder einer Ziffer beginnen und darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.",
    "views.bar.save.error.slug_taken": "Dieser Slug ist bereits vergeben.",
    "views.bar.save.error.network": "Netzwerkfehler — bitte erneut versuchen.",

    // t-paliad-192 Slice 11b — Admin rule-editor UI.
    // t-paliad-262 Slice A — "Regel" relabelled as "Verfahrensschritt".
    // t-paliad-305 Slice B.6 (2026-05-26) — canonical URL moved to
    // `/admin/procedural-events` (301 redirects from /admin/rules*).
    // The i18n keys `admin.rules.*` are kept as the corpus until a
    // follow-up slice migrates each reference; canonical
    // `admin.procedural_events.*` aliases live after the EN block.
    "nav.admin.rules": "Verfahrensschritte verwalten",
    "admin.card.rules.title": "Verfahrensschritte verwalten",
    "admin.card.rules.desc": "Verfahrensschritte anlegen, bearbeiten, publishen. Audit-Log, Preview, Migration-Export.",

    "admin.rules.list.title": "Verfahrensschritte verwalten — Paliad",
    "admin.rules.list.heading": "Verfahrensschritte verwalten",
    "admin.rules.list.subtitle": "Verfahrensschritte (Schriftsätze, Anhörungen, Entscheidungen, …) anlegen, bearbeiten und freigeben. Lifecycle: draft → published → archived.",
    "admin.rules.list.new": "+ Neuer Verfahrensschritt",
    "admin.rules.tab.rules": "Regeln",
    "admin.rules.tab.orphans": "Orphans",
    "admin.rules.loading": "Lade…",
    "admin.rules.empty": "Keine Verfahrensschritte für die gewählten Filter.",
    "admin.rules.error.load": "Konnte Verfahrensschritte nicht laden.",

    "admin.rules.filter.proceeding": "Verfahrenstyp",
    "admin.rules.filter.proceeding.any": "Alle",
    "admin.rules.filter.trigger": "Trigger-Ereignis",
    "admin.rules.filter.trigger.any": "Alle",
    "admin.rules.filter.lifecycle": "Lifecycle",
    "admin.rules.filter.lifecycle.any": "Alle",
    "admin.rules.filter.search": "Suche",
    "admin.rules.filter.search.placeholder": "Name, Submission Code, Rechtsgrundlage…",

    "admin.rules.col.submission_code": "Code (Verfahrensschritt)",
    "admin.rules.col.legal_citation": "Rechtsgrundlage",
    "admin.rules.col.name": "Name",
    "admin.rules.col.proceeding": "Verfahrenstyp",
    "admin.rules.col.priority": "Priorität",
    "admin.rules.col.lifecycle": "Lifecycle",
    "admin.rules.col.modified": "Zuletzt geändert",

    "admin.rules.lifecycle.draft": "Draft",
    "admin.rules.lifecycle.published": "Published",
    "admin.rules.lifecycle.archived": "Archived",

    "admin.rules.priority.mandatory": "Pflicht",
    "admin.rules.priority.recommended": "Empfohlen",
    "admin.rules.priority.optional": "Optional",
    "admin.rules.priority.informational": "Information",

    "admin.rules.orphans.subtitle": "Legacy-Deadlines aus dem fuzzy-match Backfill (Slice 10), die nicht eindeutig einer Regel zugeordnet werden konnten. Bitte die richtige Kandidaten-Regel auswählen.",
    "admin.rules.orphans.loading": "Lade…",
    "admin.rules.orphans.empty": "Keine offenen Orphans. ✔",
    "admin.rules.orphans.no_candidates": "Keine Kandidaten gefunden. Bitte Regel manuell anlegen.",
    "admin.rules.orphans.field.project": "Projekt",
    "admin.rules.orphans.field.proceeding": "Verfahren",
    "admin.rules.orphans.field.reason": "Grund",
    "admin.rules.orphans.reason.no_match": "Kein Treffer",
    "admin.rules.orphans.reason.ambiguous": "Mehrdeutig",
    "admin.rules.orphans.reason.no_project": "Ohne Projekt",
    "admin.rules.orphans.reason.manual_unbound": "Manuell entkoppelt",
    "admin.rules.orphans.resolved": "Orphan zugeordnet.",

    "admin.rules.modal.new.title": "Neuen Verfahrensschritt anlegen",
    "admin.rules.modal.new.body": "Ein neuer Verfahrensschritt wird als Draft angelegt. Bitte einen Grund (mind. 10 Zeichen) angeben — dieser wandert ins Audit-Log und beim Export in die Migration.",
    "admin.rules.modal.resolve.title": "Orphan zuordnen",
    "admin.rules.modal.resolve.body": "Bitte einen Grund (mind. 10 Zeichen) angeben. Die Regel-Verknüpfung wird sofort auf der Deadline gespeichert.",
    "admin.rules.modal.reason": "Grund",
    "admin.rules.modal.reason.placeholder": "z. B. „Neue Regel für RoP.198 nach UPC-Reform 2026...",
    "admin.rules.modal.reason.hint": "Mindestens 10 Zeichen.",
    "admin.rules.modal.reason.too_short": "Grund muss mindestens 10 Zeichen enthalten.",
    "admin.rules.modal.confirm": "Bestätigen",
    "admin.rules.modal.field.name": "Name (DE)",
    "admin.rules.modal.field.name_en": "Name (EN)",
    "admin.rules.modal.field.duration": "Dauer",
    "admin.rules.modal.error.name_required": "Bitte Name und Name (EN) angeben.",
    "admin.rules.modal.error.create": "Anlegen fehlgeschlagen.",
    "admin.rules.modal.error.resolve": "Zuordnung fehlgeschlagen.",

    "admin.rules.edit.title": "Verfahrensschritt bearbeiten — Paliad",
    "admin.rules.edit.heading.loading": "Verfahrensschritt laden…",
    "admin.rules.edit.breadcrumb": "← Verfahrensschritte verwalten",
    "admin.rules.edit.error.bad_id": "Ungültige Verfahrensschritt-ID in der URL.",
    "admin.rules.edit.error.not_found": "Verfahrensschritt nicht gefunden.",
    "admin.rules.edit.error.load": "Konnte Verfahrensschritt nicht laden.",

    "admin.rules.edit.section.identity": "Identität",
    "admin.rules.edit.section.proceeding": "Verfahren & Trigger",
    "admin.rules.edit.section.timing": "Berechnung",
    "admin.rules.edit.section.party": "Partei & Ereignis",
    "admin.rules.edit.section.display": "Anzeige & Notizen",
    "admin.rules.edit.section.lifecycle": "Priorität & Flags",
    "admin.rules.edit.section.condition": "Bedingung (condition_expr)",

    "admin.rules.edit.field.name": "Name (DE)",
    "admin.rules.edit.field.name_en": "Name (EN)",
    "admin.rules.edit.field.description": "Beschreibung",
    "admin.rules.edit.field.submission_code": "Code (Verfahrensschritt-Identifikator)",
    "admin.rules.edit.field.rule_code": "Rechtsgrundlage (Kurzform)",
    "admin.rules.edit.field.legal_source": "Rechtsgrundlage (Langform)",
    "admin.rules.edit.field.proceeding": "Verfahrenstyp",
    "admin.rules.edit.field.proceeding.none": "—",
    "admin.rules.edit.field.trigger": "Trigger-Ereignis",
    "admin.rules.edit.field.trigger.none": "—",
    "admin.rules.edit.field.parent": "Übergeordneter Verfahrensschritt (UUID)",
    "admin.rules.edit.field.concept": "Konzept (UUID)",
    "admin.rules.edit.field.sequence_order": "Reihenfolge",
    "admin.rules.edit.field.duration_value": "Dauer",
    "admin.rules.edit.field.duration_unit": "Einheit",
    "admin.rules.edit.field.timing": "Timing",
    "admin.rules.edit.field.combine_op": "Combine-Op",
    "admin.rules.edit.field.alt_duration_value": "Alt-Dauer",
    "admin.rules.edit.field.alt_duration_unit": "Alt-Einheit",
    "admin.rules.edit.field.alt_rule_code": "Alt-Rule-Code",
    "admin.rules.edit.field.anchor_alt": "Alt-Anchor",
    "admin.rules.edit.field.primary_party": "Primäre Partei",
    "admin.rules.edit.field.event_type": "Art des Verfahrensschritts (filing / hearing / decision / order)",
    "admin.rules.edit.field.deadline_notes": "Hinweise (DE)",
    "admin.rules.edit.field.deadline_notes_en": "Hinweise (EN)",
    "admin.rules.edit.field.priority": "Priorität",
    "admin.rules.edit.field.is_court_set": "Gerichtlich gesetzt",
    "admin.rules.edit.field.is_spawn": "Spawn",
    "admin.rules.edit.field.spawn_label": "Spawn-Label",
    "admin.rules.edit.field.spawn_proceeding": "Spawn-Verfahren",
    "admin.rules.edit.field.spawn_proceeding.none": "—",
    "admin.rules.edit.field.condition_hint": "JSON-Grammatik: {\"flag\":\"name\"} · {\"op\":\"and|or\",\"args\":[...]} · {\"op\":\"not\",\"args\":[...]}",
    "admin.rules.edit.field.condition.valid": "JSON gültig.",

    "admin.rules.edit.preview.heading": "Preview",
    "admin.rules.edit.preview.hint": "Nur für Drafts. Berechnet die Fristenkette mit dieser Draft-Regel anstelle der publizierten Variante.",
    "admin.rules.edit.preview.trigger_date": "Trigger-Datum",
    "admin.rules.edit.preview.flags": "Flags (komma-separiert)",
    "admin.rules.edit.preview.run": "Preview berechnen",
    "admin.rules.edit.preview.running": "Berechne…",
    "admin.rules.edit.preview.empty": "Keine Deadlines.",
    "admin.rules.edit.preview.error": "Preview fehlgeschlagen.",
    "admin.rules.edit.preview.only_drafts": "Preview ist nur für Drafts verfügbar.",
    "admin.rules.edit.preview.trigger_required": "Bitte Trigger-Datum angeben.",

    "admin.rules.edit.audit.heading": "Audit-Log",
    "admin.rules.edit.audit.loading": "Lade…",
    "admin.rules.edit.audit.empty": "Keine Audit-Einträge.",
    "admin.rules.edit.audit.loadmore": "Weitere laden",
    "admin.rules.edit.audit.exported": "exported",
    "admin.rules.edit.audit.actor.system": "System",
    "admin.rules.edit.audit.action.create": "create",
    "admin.rules.edit.audit.action.update": "update",
    "admin.rules.edit.audit.action.publish": "publish",
    "admin.rules.edit.audit.action.archive": "archive",
    "admin.rules.edit.audit.action.restore": "restore",
    "admin.rules.edit.audit.action.delete": "delete",

    "admin.rules.edit.action.save_draft": "Draft speichern",
    "admin.rules.edit.action.publish": "Publish",
    "admin.rules.edit.action.clone": "Als Draft klonen",
    "admin.rules.edit.action.archive": "Archivieren",
    "admin.rules.edit.action.restore": "Wiederherstellen",
    "admin.rules.edit.action.ok": "Erledigt.",
    "admin.rules.edit.action.save_draft.ok": "Draft gespeichert.",
    "admin.rules.edit.action.save_draft.error": "Speichern fehlgeschlagen.",
    "admin.rules.edit.action.publish.ok": "Regel publiziert.",
    "admin.rules.edit.action.publish.error": "Publish fehlgeschlagen.",
    "admin.rules.edit.action.archive.ok": "Regel archiviert.",
    "admin.rules.edit.action.archive.error": "Archivieren fehlgeschlagen.",
    "admin.rules.edit.action.restore.ok": "Regel wiederhergestellt.",
    "admin.rules.edit.action.restore.error": "Wiederherstellen fehlgeschlagen.",
    "admin.rules.edit.action.clone.error": "Klonen fehlgeschlagen.",

    "admin.rules.edit.modal.save_draft.title": "Draft speichern",
    "admin.rules.edit.modal.save_draft.body": "Bitte einen Grund für die Änderung angeben (mind. 10 Zeichen). Wird ins Audit-Log geschrieben.",
    "admin.rules.edit.modal.publish.title": "Publish",
    "admin.rules.edit.modal.publish.body": "Diese Draft-Regel wird live geschaltet. Bestehende publizierte Variante wird archiviert.",
    "admin.rules.edit.modal.clone.title": "Als Draft klonen",
    "admin.rules.edit.modal.clone.body": "Eine neue Draft-Kopie dieser Regel wird angelegt. Sie werden auf die neue Draft-Seite weitergeleitet.",
    "admin.rules.edit.modal.archive.title": "Archivieren",
    "admin.rules.edit.modal.archive.body": "Regel wird archiviert. Calculator nutzt sie nicht mehr.",
    "admin.rules.edit.modal.restore.title": "Wiederherstellen",
    "admin.rules.edit.modal.restore.body": "Regel wird wiederhergestellt (archived → published).",

    // Date-range picker (t-paliad-248). Symmetric past/future chip fan
    // around an ALLES centre. Used by the filter-bar 'time' axis from
    // Slice A onwards; future slices will migrate /agenda and
    // /admin/audit-log to the same component.
    "date_range.button.label": "Zeitraum",
    "date_range.button.label.custom_range": "Von {from} bis {to}",
    "date_range.horizon.next_1d":  "Heute",
    "date_range.horizon.next_7d":  "Nächste 7 Tage",
    "date_range.horizon.next_14d": "Nächste 14 Tage",
    "date_range.horizon.next_30d": "Nächste 30 Tage",
    "date_range.horizon.next_90d": "Nächste 90 Tage",
    "date_range.horizon.next_all": "Ganze Zukunft",
    "date_range.horizon.past_1d":  "Letzter Tag",
    "date_range.horizon.past_7d":  "Letzte 7 Tage",
    "date_range.horizon.past_14d": "Letzte 14 Tage",
    "date_range.horizon.past_30d": "Letzte 30 Tage",
    "date_range.horizon.past_90d": "Letzte 90 Tage",
    "date_range.horizon.past_all": "Ganze Vergangenheit",
    "date_range.horizon.any":      "Alles",
    "date_range.horizon.custom":   "Anpassen",
    "date_range.dialog.label":     "Zeitraum wählen",
    "date_range.fan.past.label":   "Vergangenheit",
    "date_range.fan.future.label": "Zukunft",
    "date_range.center.label":     "Alles",
    "date_range.custom.from":      "Von",
    "date_range.custom.to":        "Bis",
    "date_range.custom.apply":     "Anwenden",
    "date_range.custom.cancel":    "Abbrechen",
    "date_range.custom.invalid":            "Bis-Datum muss nach Von-Datum liegen.",
    "date_range.custom.invalid_format":     "Datum nicht erkannt (Format JJJJ-MM-TT).",
    "date_range.custom.invalid_missing":    "Bitte beide Datumsfelder ausfüllen.",

    // t-paliad-262 Slice A — canonical `procedural_event` i18n contract.
    // The values are identical to the legacy `admin.rules.*` keys above —
    // these aliases let .tsx files rebind in Slice B (B.5) without
    // touching DE/EN strings then. Adding/changing values? Update BOTH
    // sides.
    "admin.procedural_events.list.title":     "Verfahrensschritte verwalten — Paliad",
    "admin.procedural_events.list.heading":   "Verfahrensschritte verwalten",
    "admin.procedural_events.list.new":       "+ Neuer Verfahrensschritt",
    "admin.procedural_events.col.code":       "Code (Verfahrensschritt)",
    // t-paliad-321: 3-segment proceeding-type code column (joined
    // server-side); disambiguates same-named rules across proceedings.
    "admin.procedural_events.col.proceeding": "Verfahren",
    "admin.procedural_events.edit.title":     "Verfahrensschritt bearbeiten — Paliad",
    "admin.procedural_events.edit.breadcrumb":"← Verfahrensschritte verwalten",
    "admin.procedural_events.edit.field.code":         "Code (Verfahrensschritt-Identifikator)",
    "admin.procedural_events.edit.field.event_kind":   "Art des Verfahrensschritts (filing / hearing / decision / order)",
    "admin.procedural_events.edit.field.parent":       "Übergeordneter Verfahrensschritt (UUID)",
  },

  en: {
    // Navigation
    "nav.home": "Home",
    "nav.kostenrechner": "Cost Calculator",
    "nav.downloads": "Downloads",
    "nav.links": "Links",
    "nav.glossar": "Glossary",
    "nav.gebuehrentabellen": "Fee Schedules",
    "nav.checklisten": "Checklists",
    "nav.submissions": "Submissions",
    "nav.gerichte": "Courts",
    "nav.logout": "Sign Out",
    "nav.akten": "Matters",
    "nav.projekte": "Projects",
    "nav.fristen": "Deadlines",
    "nav.termine": "Appointments",
    "nav.dashboard": "Dashboard",
    "nav.agenda": "Agenda",
    "nav.inbox": "Approvals",
    "nav.paliadin": "Paliadin",
    "nav.team": "Team",
    "nav.group.uebersicht": "Overview",
    "nav.group.ansichten": "Views",
    "nav.group.werkzeuge": "Tools",
    "nav.neuigkeiten": "What's New",
    "nav.soon.tooltip": "Coming soon",

    // Theme toggle (m/paliad#2)
    "theme.toggle.auto": "Auto",
    "theme.toggle.light": "Light",
    "theme.toggle.dark": "Dark",
    "theme.toggle.cycle.auto": "Switch to light theme",
    "theme.toggle.cycle.light": "Switch to dark theme",
    "theme.toggle.cycle.dark": "Switch to auto (system)",

    // BottomNav (mobile)
    "bottomnav.add": "New",
    "bottomnav.menu": "Menu",
    "bottomnav.add.title": "Quick add",
    "bottomnav.add.deadline": "New deadline",
    "bottomnav.add.deadline.sub": "Deadline with date & project",
    "bottomnav.add.appointment": "New appointment",
    "bottomnav.add.appointment.sub": "Appointment with time & place",
    "bottomnav.add.project": "New project",
    "bottomnav.add.project.sub": "New matter / case / patent",
    "bottomnav.add.cancel": "Cancel",
    "bottomnav.badge.deadlines": "{overdue} overdue + {today} due today",

    // Changelog (What's New) — t-paliad-027
    "changelog.title": "What's New — Paliad",
    "changelog.heading": "What's New",
    "changelog.subtitle": "Recent changes and additions in Paliad.",
    "changelog.empty": "Nothing here yet.",
    "changelog.tag.feature": "New",
    "changelog.tag.content": "Content",
    "changelog.tag.fix": "Fix",

    // Footer
    "footer.text": "\u00a9 2026 Paliad \u2014 by",

    // Landing page
    "index.title": `Paliad \u2014 Patent Litigation for ${FIRM}`,
    "index.hero.accent": `for ${FIRM}`,
    "index.hero.sub": `Administration, knowledge, and tools for the ${FIRM} patent team.`,
    "index.guides.title": "Guides",
    "index.guides.desc": "Practical guides for proceedings before the EPO, Federal Patent Court, and UPC. Step-by-step instructions for typical workflows.",
    "index.templates.title": "Templates",
    "index.templates.desc": `Standardised templates for briefs, correspondence, and internal documents. ${FIRM} Patents Style Guide.`,
    "index.documents.title": "Documents",
    "index.documents.desc": "Reference materials, checklists, and practical aids for day-to-day patent practice.",
    "index.tools": "Tools",
    "index.cost.title": "Cost Calculator",
    "index.cost.desc": "Estimate litigation costs for DE courts, UPC, and EPA proceedings. Court and attorney fees at a glance.",
    "index.deadline.title": "Deadline Calculator",
    "index.deadline.desc": "Calculate procedural deadlines for UPC, German, and EPA proceedings with holiday adjustment.",
    "index.glossar.title": "Patent Glossary",
    "index.glossar.desc": "Bilingual DE/EN glossary of key patent law terminology. Searchable by category.",
    "index.downloads": "Downloads",
    "index.style.title": `${FIRM} Patents Style`,
    "index.style.desc": `Word template in ${FIRM} Patents style. Formatting, fonts, and macros for standardised briefs.`,
    "index.offices": "Offices",
    "index.office.munich": "Munich",
    "index.office.duesseldorf": "D\u00fcsseldorf",
    "index.office.hamburg": "Hamburg",
    "index.office.amsterdam": "Amsterdam",
    "index.office.london": "London",
    "index.office.paris": "Paris",
    "index.office.milan": "Milan",

    // Login
    "login.title": "Sign In \u2014 Paliad",
    "login.tab.login": "Sign In",
    "login.tab.register": "Register",
    "login.email": "Email",
    "login.password": "Password",
    "login.password.placeholder": "Password",
    "login.submit": "Sign In",
    "login.confirm": "Confirm Password",
    "login.confirm.placeholder": "Repeat password",
    "login.minchars": "Min. 8 characters",
    "login.register.submit": "Register",
    "login.hint": `Only for authorised ${FIRM} email addresses.`,
    "login.error.connection": "Connection error. Please try again.",
    "login.error.mismatch": "Passwords do not match.",
    "login.error.minlength": "Password must be at least 8 characters.",
    "login.success.created": "Account created. Please sign in.",

    // Kostenrechner
    "kosten.title": "Cost Calculator \u2014 Paliad",
    "kosten.heading": "Patent Litigation Cost Calculator",
    "kosten.subtitle": "Estimate litigation costs for patent infringement, nullity, and EPA proceedings.",
    "kosten.streitwert": "Dispute Value",
    "kosten.vat": "VAT",
    "kosten.vat.foreign": "0% (Foreign)",
    "kosten.de.infringement": "DE Infringement Proceedings",
    "kosten.de.nullity": "DE Nullity Proceedings",
    "kosten.upc": "UPC",
    "kosten.epa": "EPO",
    "kosten.inst.lg": "Regional Court (Infringement 1st Instance)",
    "kosten.inst.olg": "Higher Regional Court (Appeal)",
    "kosten.inst.bgh_nzb": "Federal Court (Leave to Appeal)",
    "kosten.inst.bgh_rev": "Federal Court (Revision)",
    "kosten.inst.bpatg": "Federal Patent Court (Nullity)",
    "kosten.inst.bgh_nullity": "Federal Court (Nullity Appeal)",
    "kosten.inst.upc_first": "UPC (First Instance)",
    "kosten.inst.upc_appeal": "UPC (Appeal)",
    "kosten.inst.epa_opposition": "Opposition",
    "kosten.inst.epa_appeal": "Appeal from Opposition",
    "kosten.fee.version": "Fee version:",
    "kosten.fee.schedule": "Fee schedule:",
    "kosten.fee.from2026": "From 2026",
    "kosten.fee.pre2026": "Before 2026",
    "kosten.fee.current": "Current (2025)",
    "kosten.attorneys": "Attorneys:",
    "kosten.patent.attorneys": "Patent Attorneys:",
    "kosten.clients": "Clients:",
    "kosten.oral.hearing": "Oral hearing",
    "kosten.revocation": "Revocation counterclaim",
    "kosten.total": "Total Cost",
    "kosten.empty": "Select at least one instance.",
    "kosten.print": "Print",
    "kosten.court.fees": "Court Fees",
    "kosten.attorney.fees": "Attorney Fees",
    "kosten.patent.attorney.fees": "Patent Attorney Fees",
    "kosten.epa.fees": "EPO Fees",
    "kosten.attorney.label": "Attorney",
    "kosten.patent.attorney.label": "Patent Attorney",
    "kosten.detail.procedure": "Procedure fee",
    "kosten.detail.increase": "Increase",
    "kosten.detail.hearing": "Hearing fee",
    "kosten.detail.lump": "Lump sum",
    "kosten.detail.vat": "VAT",
    "kosten.detail.total": "Total",
    "kosten.upc.fixed": "Fixed fee",
    "kosten.upc.value": "Value-based fee",
    "kosten.upc.court.total": "Court fees total",
    "kosten.upc.sme": "SME reduction",
    "kosten.upc.recoverable": "Recoverable costs (ceiling)",
    "kosten.epa.official": "Official fee",
    "kosten.epa.note": "Attorney costs based on time spent (not RVG-based).",
    "kosten.share": "Copy Link",
    "kosten.share.copied": "Link copied!",
    "kosten.compare": "Compare",
    "kosten.compare.exit": "Exit Comparison",
    "kosten.scenario.a": "Scenario A",
    "kosten.scenario.b": "Scenario B",
    "kosten.scenario.diff": "Difference",
    "kosten.print.title": "Cost Calculation",
    "kosten.print.date": "Date",
    "kosten.print.streitwert": "Dispute Value",
    "kosten.print.vat": "VAT Rate",
    "kosten.print.instances": "Instances",
    "kosten.print.disclaimer": "This document is for internal use only and does not constitute legal advice. All figures are estimates.",

    // Fristenrechner
    "deadlines.title": "Deadline Calculator \u2014 Paliad",
    "deadlines.heading": "Patent Deadline Calculator",
    "deadlines.subtitle": "Calculate procedural deadlines for UPC, German, and EPA proceedings.",

    // Verfahrensablauf (t-paliad-179 Slice 1)
    // Unified procedural-events tool (m/paliad#151)
    "procedures.title": "Procedures & Deadlines \u2014 Paliad",
    "procedures.heading": "Procedures & Deadlines",
    "procedures.subtitle": "Procedure roadmap, deadline calculator, and guided search in one tool.",
    "procedures.filter.search.placeholder": "Statement of claim, hearing notice, m\u00fcndliche Verhandlung\u2026",
    "procedures.filter.axis.forum": "Forum:",
    "procedures.filter.axis.proc": "Proceeding:",
    "procedures.filter.axis.kind": "Event kind:",
    "procedures.filter.axis.party": "Party:",
    "procedures.tab.proceeding": "Pick proceeding",
    "procedures.tab.search": "Direct search",
    "procedures.tab.wizard": "Guided",
    "procedures.tab.akte": "From matter",
    "procedures.panel.akte.placeholder": "Matter entry ships in a later slice.",
    "nav.procedures": "Procedures & Deadlines",

    // Litigation Builder (m/paliad#153 B1+B2)
    "builder.subtitle": "Litigation Builder — build scenarios, stack proceedings, track deadlines.",
    "builder.header.scenario": "Scenario:",
    "builder.header.akte": "Matter:",
    "builder.header.stichtag": "Anchor:",
    "builder.header.search": "Search:",
    "builder.akte.none": "— none —",
    "builder.akte.banner.prefix": "From matter:",
    "builder.search.placeholder": "Event, scenario, matter …",
    "builder.action.rename": "Name it",
    "builder.action.rename.prompt": "Name for this scenario:",
    "builder.action.share": "Share",
    "builder.action.promote": "Create as project",
    "builder.mode.cold": "Overview",
    "builder.mode.event": "Event",
    "builder.mode.akte": "From matter",
    "builder.panel.title": "My scenarios",
    "builder.panel.new": "+ New scenario",
    "builder.panel.empty": "No scenarios yet.",
    "builder.bucket.active": "Active",
    "builder.empty.headline": "No scenario open.",
    "builder.empty.hint": "Start a new scenario, pick one from your list, or load a matter (B4).",
    "builder.empty.cta": "Start a new scenario",
    "builder.empty.recent": "Recent",
    "builder.picker.placeholder": "— pick a scenario —",
    "builder.picker.title": "Add proceeding",
    "builder.picker.close": "Close",
    "builder.picker.aria": "Pick a proceeding",
    "builder.picker.axis.forum": "Forum:",
    "builder.picker.axis.proc": "Proceeding:",
    "builder.picker.empty": "No proceedings available.",
    "builder.picker.future_jurisdiction": "Other forums coming later.",
    "builder.canvas.add_proceeding": "+ Add proceeding",
    "builder.triplet.loading": "Calculating deadlines …",
    "builder.triplet.unknown_proceeding": "Unknown proceeding type.",
    "builder.triplet.side.claimant": "Claimant view",
    "builder.triplet.side.defendant": "Defendant view",
    "builder.triplet.flags.label": "Options:",
    "builder.triplet.perspective.label": "Perspective:",
    "builder.triplet.perspective.none": "none",
    "builder.triplet.perspective.claimant": "Claimant",
    "builder.triplet.perspective.defendant": "Defendant",
    "builder.triplet.detailgrad.label": "Detail:",
    "builder.triplet.detailgrad.selected": "Selected",
    "builder.triplet.detailgrad.all_options": "All options",
    "builder.triplet.remove": "Remove",
    "builder.triplet.collapse": "Collapse",
    "builder.triplet.expand": "Expand",
    "builder.triplet.no_flags": "(no flags for this proceeding type)",
    "builder.event.state.planned": "planned",
    "builder.event.state.filed": "filed",
    "builder.event.state.skipped": "skipped",
    "builder.event.action.file": "File",
    "builder.event.action.skip": "Skip",
    "builder.event.action.reset": "Reset to planned",
    "builder.event.actual_date.prompt": "Date of filing:",
    "builder.event.skip_reason.prompt": "Reason (optional):",
    "builder.event.horizon.label": "+{n} optional ▾",
    "builder.event.horizon.hide": "Hide optional",
    "builder.save.idle": " ",
    "builder.save.saving": "Saving …",
    "builder.save.saved": "Saved ✓",
    "builder.save.error": "Save failed",
    "builder.search.hint.start": "Type … e.g. \"defence\", \"hearing\", \"HL-2024\"",
    "builder.search.hint.short": "At least 2 characters.",
    "builder.search.hint.loading": "Searching …",
    "builder.search.hint.empty": "No matches.",
    "builder.search.hint.error": "Search failed. Try again.",
    "builder.search.hint.akte_b4": "Matter mode coming in B4.",
    "builder.search.group.events": "Events",
    "builder.search.group.scenarios": "Scenarios",
    "builder.search.group.projects": "Matters",
    "builder.search.summary.events.one": "{n} event",
    "builder.search.summary.events.other": "{n} events",
    "builder.search.summary.scenarios.one": "{n} scenario",
    "builder.search.summary.scenarios.other": "{n} scenarios",
    "builder.search.summary.projects.one": "{n} matter",
    "builder.search.summary.projects.other": "{n} matters",
    "builder.search.anchor.divider": "━━━━ YOU ARE HERE ━━━━",

    // B5 — side-panel buckets, sharing, promote-to-project wizard.
    "builder.bucket.shared": "Shared with me",
    "builder.bucket.promoted": "Promoted to project",
    "builder.bucket.archived": "Archived",
    "builder.bucket.empty": "—",
    "builder.readonly.watermark": "Shared by {owner} · read-only",
    "builder.readonly.blocked": "Read-only — only the owner can edit.",
    "builder.share.title": "Share scenario",
    "builder.share.subtitle": "Share read-only with HLC colleagues. You remain the sole editor.",
    "builder.share.search.placeholder": "Search name or email …",
    "builder.share.button": "Share read-only",
    "builder.share.current.title": "Already shared with:",
    "builder.share.current.empty": "Not shared with anyone yet.",
    "builder.share.revoke": "Remove",
    "builder.share.close": "Close",
    "builder.share.no_results": "No users found.",
    "builder.share.error": "Sharing failed. Please try again.",
    "builder.promote.title": "Create as project",
    "builder.promote.step1": "Confirm",
    "builder.promote.step2": "Add parties",
    "builder.promote.step3": "Case metadata",
    "builder.promote.next": "Next",
    "builder.promote.back": "Back",
    "builder.promote.commit": "Create",
    "builder.promote.cancel": "Cancel",
    "builder.promote.summary.heading": "What will be created:",
    "builder.promote.summary.proceeding": "Primary proceeding",
    "builder.promote.summary.events_filed": "filed events",
    "builder.promote.summary.events_planned": "planned events",
    "builder.promote.summary.flags": "active options",
    "builder.promote.summary.note_extra": "{n} further standalone proceeding(s) stay in the scenario and are not carried over automatically.",
    "builder.promote.parties.hint": "Enter the real party names — or add them later in the case file.",
    "builder.promote.parties.add": "+ Add party",
    "builder.promote.parties.name": "Name",
    "builder.promote.parties.role": "Role (e.g. claimant)",
    "builder.promote.parties.representative": "Representative",
    "builder.promote.parties.remove": "Remove",
    "builder.promote.parties.empty": "No parties yet.",
    "builder.promote.meta.title": "Case title / matter",
    "builder.promote.meta.title.placeholder": "e.g. Becker v. X — UPC infringement",
    "builder.promote.meta.reference": "Reference (optional)",
    "builder.promote.meta.case_number": "Case number (optional)",
    "builder.promote.meta.client_number": "Client number (optional)",
    "builder.promote.meta.our_side": "Our side",
    "builder.promote.meta.our_side.claimant": "Claimant",
    "builder.promote.meta.our_side.defendant": "Defendant",
    "builder.promote.meta.our_side.none": "— open —",
    "builder.promote.meta.parent": "Parent litigation (optional)",
    "builder.promote.meta.parent.none": "— none —",
    "builder.promote.meta.team": "Team (optional)",
    "builder.promote.meta.team.hint": "You are added as lead automatically.",
    "builder.promote.error.title_required": "Please enter a case title.",
    "builder.promote.error.generic": "Creation failed. Please try again.",
    "builder.promote.success": "Case created — redirecting …",
    "builder.mobile.blocked": "Open on a larger screen to edit.",

    "deadlines.step1": "Select Proceeding Type",
    "deadlines.step2": "Enter Trigger Date",
    "deadlines.step2.perspective": "Perspective and Date",
    "deadlines.step3": "Result",
    "deadlines.upc": "UPC",
    "deadlines.de": "German Courts",
    "deadlines.epa": "EPO",
    "deadlines.dpma": "DPMA",
    "deadlines.dpma.opp.dpma": "Opposition DPMA",
    "deadlines.dpma.appeal.bpatg": "Appeal BPatG (DPMA)",
    "deadlines.dpma.appeal.bgh": "Legal Appeal BGH",
    "deadlines.trigger.event": "Trigger event:",
    "deadlines.trigger.date": "Date:",
    "deadlines.trigger.label": "Trigger date",
    "deadlines.priority.date": "Priority date (optional):",
    "deadlines.court.label": "Court:",
    "deadlines.flag.ccr": "Counterclaim for revocation filed",
    "deadlines.flag.inf_amend": "Application to amend the patent filed (R.30)",
    "deadlines.flag.rev_amend": "Application to amend the patent filed (R.49.2.a)",
    "deadlines.flag.rev_cci": "Counterclaim for infringement filed (R.49.2.b)",
    "deadlines.calculate": "Calculate Deadlines",
    "deadlines.print": "Print",
    "deadlines.reset": "\u2190 Start Over",
    "deadlines.upc.inf.cfi": "Infringement",
    "deadlines.upc.rev.cfi": "Revocation",
    "deadlines.upc.ccr.cfi": "Counterclaim for Revocation",
    "deadlines.upc.pi.cfi": "Provisional Measures",
    "deadlines.upc.apl.merits": "Appeal",
    "deadlines.upc.dmgs.cfi": "Damages Determination",
    "deadlines.upc.disc.cfi": "Lay-open Books",
    "deadlines.upc.apl.cost": "Cost-Decision Appeal",
    "deadlines.upc.apl.unified": "Appeal",
    "deadlines.appeal_target.label": "Appeal against:",
    "deadlines.appeal_target.endentscheidung": "Final Decision",
    "deadlines.appeal_target.kostenentscheidung": "Cost Decision",
    "deadlines.appeal_target.anordnung": "Order",
    "deadlines.appeal_target.schadensbemessung": "Damages Determination",
    "deadlines.appeal_target.bucheinsicht": "Lay-open Books",
    "deadlines.upc.apl.order": "Order Appeal (15-day)",
    "deadlines.de.group.inf": "Infringement proceedings",
    "deadlines.de.group.null": "Nullity proceedings",
    "deadlines.de.inf.lg": "LG (1st instance)",
    "deadlines.de.inf.olg": "OLG (Appeal)",
    "deadlines.de.inf.bgh": "BGH (Revision / NZB)",
    "deadlines.de.null.bpatg": "BPatG (1st instance)",
    "deadlines.de.null.bgh": "BGH (Appeal)",
    "deadlines.epa.opp.opd": "Opposition",
    "deadlines.epa.opp.boa": "Appeal",
    "deadlines.epa.grant.exa": "Grant Procedure",
    "deadlines.party.both.label": "both parties",
    "deadlines.court.set": "set by court",
    "deadlines.court.indirect": "tbd",
    "deadlines.conditional.depends_on": "depends on {parent}",
    "deadlines.conditional.unset": "depends on an upstream event",
    "deadlines.optional.badge": "on request",
    "deadlines.priority.mandatory": "Mandatory",
    "deadlines.priority.recommended": "Recommended",
    "deadlines.priority.optional": "Optional (on request)",
    "deadlines.priority.informational": "For information only",
    "deadlines.priority.informational.notice_label": "Note",
    "project.instance_level.first": "First instance",
    "project.instance_level.appeal": "Appeal",
    "project.instance_level.cassation": "Cassation",
    "project.instance_level.unset": "(unset)",
    "verlauf.spawn.chip": "Spawns into:",
    "verlauf.spawn.cycle_warning": "Some cross-proceeding spawn rules were skipped due to a cycle.",
    "deadlines.proceeding.selected": "Proceeding:",
    "deadlines.proceeding.reselect": "Choose another proceeding",
    "deadlines.step1.heading": "Step 1 — Which matter?",
    "deadlines.step1.search.placeholder": "Search matters…",
    "deadlines.step1.search.empty": "No matching matter.",
    "deadlines.step1.divider.new": "or a new matter",
    "deadlines.step1.divider.adhoc": "or ad-hoc, without a matter",
    "deadlines.step1.new.cta": "+ Create new matter",
    "deadlines.step1.adhoc.upc": "UPC proceeding",
    "deadlines.step1.adhoc.de": "DE proceeding",
    "deadlines.step1.adhoc.epa": "EPA proceeding",
    "deadlines.step1.adhoc.dpma": "DPMA proceeding",
    "deadlines.step1.selected": "Matter:",
    "deadlines.step1.reselect": "Other matter",
    "deadlines.step1.summary.adhoc.suffix": "no matter (exploration)",
    "deadlines.step2.heading": "Step 2 — What do you want to do?",
    "deadlines.step2.file.title": "File something",
    "deadlines.step2.file.desc": "Outgoing — your action triggers a deadline.",
    "deadlines.step2.happened.title": "Something happened",
    "deadlines.step2.happened.desc": "Incoming — an event triggered a deadline.",
    "deadlines.step2.browse.title": "Browse procedure roadmap",
    "deadlines.step2.browse.desc": "Browse / Learn — see what happens when. No deadline entered.",
    "deadlines.save.cta.adhoc.hint": "Ad-hoc — no matter, no save",
    "deadlines.step3a.heading": "What do you want to file?",
    "deadlines.step3a.back": "back to selection",
    "deadlines.step3a.file.title": "File a submission",
    "deadlines.step3a.file.desc": "Open the Verfahrensablauf — compute deadline and add to the matter.",
    "deadlines.step3a.draft.title": "Draft a submission",
    "deadlines.step3a.draft.desc": "Preparation — later linked to the drafting surface.",
    "deadlines.step3a.enter.title": "Enter deadline manually",
    "deadlines.step3a.enter.desc": "Direct entry — date and type already known.",
    "deadlines.step3a.soon": "coming soon",
    "deadlines.date.edit.hint": "Edit date — downstream deadlines will recalculate",
    "deadlines.view.label": "View:",
    "deadlines.view.timeline": "Timeline",
    "deadlines.view.columns": "Columns",
    "deadlines.notes.show": "Show details",
    "deadlines.durations.show": "Show durations",
    "deadlines.col.ours": "Client Side",
    "deadlines.col.court": "Court",
    "deadlines.col.opponent": "Opponent Side",
    "deadlines.col.both": "Both parties",
    "deadlines.col.proactive": "Proactive",
    "deadlines.col.reactive": "Reactive",
    // t-paliad-265 — per-event-card choice popover (Verfahrensablauf timeline)
    "choices.caret.title": "Options for this event",
    "choices.appellant.title": "Appeal by …",
    "choices.appellant.claimant": "Claimant side",
    "choices.appellant.defendant": "Defendant side",
    "choices.appellant.both": "both parties",
    "choices.appellant.none": "no appeal",
    "choices.include_ccr.title": "Include nullity counterclaim",
    "choices.include_ccr.true": "Yes",
    "choices.include_ccr.false": "No",
    "choices.skip.title": "Skip for this case",
    "choices.skip.true": "Skip",
    "choices.skip.false": "Include",
    "choices.skipped.chip": "skipped",
    "choices.appellant.chip": "Appeal:",
    "choices.include_ccr.chip": "with nullity counterclaim",
    "choices.reset": "Reset choice",
    "choices.commit.error": "Could not save selection",
    // t-paliad-290 (m/paliad#122) — re-surface hidden optional cards.
    "choices.show_hidden.label": "Show hidden",
    "choices.show_hidden.count": "Hidden ({n})",
    "choices.unhide.chip": "Show again",
    // t-paliad-293 — iconified state markers on the Verfahrensablauf
    // event cards. Tooltip-only text; the glyph is the primary signal.
    "state.optional.tooltip": "Optional event",
    "state.hidden.tooltip": "Hidden — restore via the options menu",
    "deadlines.adjusted": "Adjusted",
    "deadlines.adjusted.reason": "weekend/holiday",
    "deadlines.adjusted.weekend": "weekend",
    "deadlines.adjusted.weekend.saturday": "Saturday",
    "deadlines.adjusted.weekend.sunday": "Sunday",
    "deadlines.adjusted.holiday": "{name} holiday",
    "deadlines.adjusted.vacation": "{name} ({span})",
    // Trigger-event mode (PR-2 — youpc-parity)
    "deadlines.mode.procedure": "Course of proceedings",
    "deadlines.mode.event": "What comes after…",
    "deadlines.event.step1": "Select trigger event",
    "deadlines.event.step1.hint": "Which event happened? (e.g. statement of claim, EPO decision, notification of an order)",
    "deadlines.event.step2": "Event date",
    "deadlines.event.step3": "Follow-up deadlines",
    "deadlines.event.search.label": "Search trigger event",
    "deadlines.event.search.placeholder": "Type to search…",
    "deadlines.event.empty": "No matching events",
    "deadlines.event.loading": "Loading…",
    "deadlines.event.error": "Could not load events",
    "deadlines.event.selected": "Selected event:",
    "deadlines.event.date": "Event date:",
    "deadlines.event.calculate": "Calculate follow-up deadlines",
    "deadlines.event.noresults": "No follow-up deadlines configured for this event.",
    "deadlines.event.results.trigger": "Trigger:",
    "deadlines.event.results.date": "Date:",
    "deadlines.event.adjusted": "Adjusted from",
    "deadlines.search.label": "Search a deadline",
    "deadlines.search.placeholder": "Statement of Defence, RoP 23, § 82, Re-establishment…",
    "deadlines.search.chips.label": "Quick picks:",
    "deadlines.search.empty": "Type a phrase or pick a chip below.",
    "deadlines.search.loading": "Searching…",
    "deadlines.search.no_hits": "No matching deadlines found.",
    "deadlines.search.aliases": "Also known as:",
    "deadlines.search.pills.heading": "In these proceedings:",
    "deadlines.search.pills.cross_cutting": "Cross-cutting:",
    "deadlines.search.pill.duration": "Duration:",
    "deadlines.search.party.claimant": "Claimant",
    "deadlines.search.party.defendant": "Defendant",
    "deadlines.search.party.both": "both sides",
    "deadlines.search.party.court": "Court",
    "deadlines.search.results.count": "{n} hits",
    "deadlines.search.results.count_one": "1 hit",
    "deadlines.search.clear": "Clear search",
    // Fristenrechner — card-click → calc panel → add-to-project (t-paliad-136 Phase B)
    "deadlines.card.calc.expand_hint": "Calculate deadline or add to project",
    "deadlines.card.calc.close": "close",
    "deadlines.card.calc.pill_picker.label": "Which context?",
    "deadlines.card.calc.pill_picker.locked_label": "Context:",
    "deadlines.card.calc.pill_picker.change": "change",
    "deadlines.card.calc.trigger.label": "Date of triggering event",
    "deadlines.card.calc.flags.label": "Conditions:",
    "deadlines.card.calc.flag.with_ccr": "With counterclaim for revocation",
    "deadlines.card.calc.flag.with_amend": "With application to amend",
    "deadlines.card.calc.flag.with_cci": "With counterclaim for infringement",
    "deadlines.card.calc.result.due": "Deadline:",
    "deadlines.card.calc.result.original_from": "from",
    "deadlines.card.calc.result.from_trigger": "from",
    "deadlines.card.calc.result.shifted_from": "Shifted from",
    "deadlines.card.calc.result.shifted_because": "due to",
    "deadlines.card.calc.result.court_set": "Court-determined — no calculable date.",
    "deadlines.card.calc.result.calculating": "Calculating…",
    "deadlines.card.calc.result.error": "Calculation failed.",
    "deadlines.card.calc.add_to_project": "Add to project",
    "deadlines.card.calc.add_to_project.disabled": "Court-determined — add manually",
    "deadlines.pathway.fork.heading": "What would you like to do?",
    "deadlines.pathway.a.title": "Browse a proceeding",
    "deadlines.pathway.a.desc": "Pick a proceeding type and see all its deadlines on a single timeline.",
    "deadlines.pathway.b.title": "File a deadline based on an event",
    "deadlines.pathway.b.desc": "Something happened — find the right deadline for the matter.",
    "deadlines.pathway.shortcut.label": "or jump straight to a deadline:",
    "deadlines.pathway.back": "back to selection",
    "deadlines.pathway.b.mode.tree": "Step-by-step (decision tree)",
    "deadlines.pathway.b.mode.filter": "Filter / Search",
    "deadlines.pathway.b.tree.coming_soon": "The decision tree is coming soon. Switch to \"Filter / Search\" or return to selection.",
    "deadlines.pathway.b.tree.step.back": "step back",
    "deadlines.pathway.b.tree.empty": "No matches for this path.",
    "deadlines.pathway.b.tree.reset": "Restart",
    "deadlines.pathway.b.tree.start_question": "What happened?",
    "deadlines.row.mode.question": "How to search?",
    "deadlines.row.edit": "edit",
    "deadlines.row.prefilled.from_akte": "from matter",
    "deadlines.row.reset": "Reset path",
    "deadlines.row.reset.title": "Reset path — discard all cascade answers",
    "deadlines.row.search.link": "Search directly",
    "deadlines.row.search.link.title": "Search directly for a deadline — skips the decision tree",
    "deadlines.row.autowalk.tooltip": "These steps were derived from your matter. Click \"edit\" to override any answer manually.",
    "deadlines.row.autowalk.dismiss": "Dismiss hint",
    "deadlines.row.search.panel.back": "Back to decision tree",
    "deadlines.row.search.panel.back.title": "Close inline search and return to the decision tree",
    "deadlines.row.search.panel.placeholder": "Search for a deadline — e.g. \"statement of claim\", \"hint order\"…",
    "deadlines.row.search.panel.clear": "Clear input",
    "deadlines.inbox.label": "Where did it arrive?",
    "deadlines.inbox.cms.title": "UPC — via CMS",
    "deadlines.inbox.bea.title": "National-DE — via beA",
    "deadlines.inbox.posteingang.title": "National-DE — postal mail",
    "deadlines.inbox.posteingang": "Postal",
    "deadlines.inbox.all": "All",
    "deadlines.filter.forum.label": "Forum / System:",
    "deadlines.filter.forum.upc_cfi": "UPC CFI",
    "deadlines.filter.forum.upc_coa": "UPC CoA",
    "deadlines.filter.forum.de_lg": "DE LG",
    "deadlines.filter.forum.de_olg": "DE OLG",
    "deadlines.filter.forum.de_bgh": "DE BGH",
    "deadlines.filter.forum.de_bpatg": "DE BPatG",
    "deadlines.filter.forum.epa_grant": "EPO Examining",
    "deadlines.filter.forum.epa_opp": "EPO Opposition",
    "deadlines.filter.forum.epa_appeal": "EPO Board of Appeal",
    "deadlines.filter.forum.dpma": "DPMA",
    "deadlines.perspective.label": "I represent:",
    "deadlines.perspective.claimant": "Claimant side (Proactive)",
    "deadlines.perspective.defendant": "Defendant side (Reactive)",
    "deadlines.perspective.claimant.short": "Claimant",
    "deadlines.perspective.defendant.short": "Defendant",
    "deadlines.perspective.both.short": "Both",
    "deadlines.perspective.claimant.title": "Claimant side — hides typical defendant submissions",
    "deadlines.perspective.defendant.title": "Defendant side — hides typical claimant submissions",
    "deadlines.perspective.appeal_filed_by.label": "Appeal filed by:",
    "deadlines.perspective.predefined_hint": "predefined from project",
    "deadlines.side.label": "Side:",
    "deadlines.side.claimant": "Claimant",
    "deadlines.side.defendant": "Defendant",
    "deadlines.side.undefined": "Undefined",
    "deadlines.side.from_project": "From case:",
    "deadlines.side.override": "Choose other side",
    "deadlines.side.hint": "Pick a side to focus the columns.",
    "deadlines.event.composite.label": "Composite:",
    "deadlines.event.unit.days.one": "day",
    "deadlines.event.unit.days.many": "days",
    "deadlines.event.unit.weeks.one": "week",
    "deadlines.event.unit.weeks.many": "weeks",
    "deadlines.event.unit.months.one": "month",
    "deadlines.event.unit.months.many": "months",
    "deadlines.event.unit.working_days.one": "working day",
    "deadlines.event.unit.working_days.many": "working days",
    "deadlines.event.timing.before": "before",
    "deadlines.event.timing.after": "after",

    // Downloads
    "downloads.title": "Downloads \u2014 Paliad",
    "downloads.heading": "Downloads",
    "downloads.subtitle": `Files and templates for the ${FIRM} patent team.`,
    "downloads.style.title": `${FIRM} Patents Style`,
    "downloads.style.desc": `Word template in ${FIRM} Patents style. Formatting, fonts, and macros for standardised briefs.`,
    "downloads.btn": "Download",

    // Links
    "links.title": "Links \u2014 Paliad",
    "links.heading": "Links",
    "links.subtitle": "Useful external links for daily patent practice.",
    "links.filter.all": "All",
    "links.search.placeholder": "Search by title, description...",
    "links.empty": "No links in this category.",
    "links.suggest.btn": "Suggest a Link",
    "links.suggest.title": "Suggest a Link",
    "links.suggest.name": "Title",
    "links.suggest.category": "Category",
    "links.suggest.desc": "Description",
    "links.suggest.submit": "Submit",
    "links.suggest.cancel": "Cancel",
    "links.suggest.success": "Thank you! Your suggestion will be reviewed.",
    "links.suggest.error": "Error saving. Please try again.",
    "links.pending": "suggestions pending review",
    "links.feedback.title": "Feedback",
    "links.feedback.type": "Type",
    "links.feedback.broken": "Link broken",
    "links.feedback.outdated": "Outdated",
    "links.feedback.update": "Needs updating",
    "links.feedback.other": "Other",
    "links.feedback.message": "Message",
    "links.feedback.placeholder": "What's wrong? (e.g. link broken, outdated...)",
    "links.feedback.submit": "Submit",
    "links.feedback.success": "Thank you for your feedback!",

    // Glossar
    "glossar.title": "Patent Glossary \u2014 Paliad",
    "glossar.heading": "Patent Glossary",
    "glossar.subtitle": "Bilingual glossary of key patent law terminology.",
    "glossar.search.placeholder": "Search...",
    "glossar.filter.all": "All",
    "glossar.filter.litigation": "Litigation",
    "glossar.filter.prosecution": "Prosecution",
    "glossar.filter.general": "General",
    "glossar.col.de": "German",
    "glossar.col.en": "English",
    "glossar.col.definition": "Definition",
    "glossar.empty": "No matches found.",
    "glossar.suggest": "Suggest a term",
    "glossar.suggest.title": "Suggest a new term",
    "glossar.suggest.de": "German term",
    "glossar.suggest.en": "English term",
    "glossar.suggest.definition": "Definition (optional)",
    "glossar.suggest.category": "Category",
    "glossar.suggest.cancel": "Cancel",
    "glossar.suggest.submit": "Submit",
    "glossar.suggest.success": "Suggestion submitted. Thank you!",
    "glossar.suggest.error.required": "Please enter both DE and EN terms.",
    "glossar.suggest.error.generic": "Error submitting. Please try again.",
    "glossar.feedback.title": "Suggest a correction",
    "glossar.feedback.tooltip": "Suggest a correction",

    // Geb\u00fchrentabellen
    "gebuehren.title": "Fee Schedules \u2014 Paliad",
    "gebuehren.heading": "Fee Schedules",
    "gebuehren.subtitle": "Interactive fee schedules for GKG, RVG, UPC, EPO, and PatKostG.",
    "gebuehren.streitwert": "Dispute Value (EUR)",
    "gebuehren.streitwert.placeholder": "e.g. 1,000,000",
    "gebuehren.lookup": "Look up",
    "gebuehren.current": "Current",
    "gebuehren.col.streitwert": "Dispute Value (EUR)",
    "gebuehren.col.fee": "1.0 Fee (EUR)",
    "gebuehren.col.maxvalue": "up to value (EUR)",
    "gebuehren.col.courtfee": "Court Fee (EUR)",
    "gebuehren.upc.valuebased": "Value-based Fees",
    "gebuehren.upc.recoverable": "Recoverable Costs (Ceiling)",
    "gebuehren.upc.ceiling": "Ceiling (EUR)",
    "gebuehren.epa.proceeding": "Proceeding",
    "gebuehren.epa.fee": "Fee (EUR)",
    "gebuehren.epa.smefee": "SME Fee (EUR)",
    "gebuehren.multipliers.title": "Fee Multipliers",
    "gebuehren.multipliers.desc": "Factors for calculating court and attorney fees per instance.",
    "gebuehren.multipliers.instance": "Instance",
    "gebuehren.multipliers.courtfee": "Court",
    "gebuehren.multipliers.factor": "Factor",
    "gebuehren.multipliers.basis": "Basis",
    "gebuehren.patkostg.court": "Court Fees (BPatG / BGH)",
    "gebuehren.patkostg.dpma": "DPMA Fees",
    "gebuehren.patkostg.annual": "Annual Renewal Fees (Patent)",
    "gebuehren.patkostg.year": "Patent Year",
    "gebuehren.patkostg.note": "Note",
    "gebuehren.patkostg.item": "Fee Item",
    "gebuehren.feedback.btn": "Feedback",
    "gebuehren.feedback.title": "Fee Schedule Feedback",
    "gebuehren.feedback.type": "Type",
    "gebuehren.feedback.error": "Error found",
    "gebuehren.feedback.missing": "Missing data",
    "gebuehren.feedback.suggestion": "Improvement suggestion",
    "gebuehren.feedback.other": "Other",
    "gebuehren.feedback.schedule": "Regarding",
    "gebuehren.feedback.general": "General",
    "gebuehren.feedback.message": "Message",
    "gebuehren.feedback.submit": "Submit",
    "gebuehren.feedback.cancel": "Cancel",
    "gebuehren.feedback.success": "Thank you for your feedback!",
    "gebuehren.feedback.error.required": "Please enter a message.",
    "gebuehren.feedback.error.generic": "Error submitting. Please try again.",

    // Index \u2014 Geb\u00fchrentabellen card
    "index.gebuehren.title": "Fee Schedules",
    "index.gebuehren.desc": "Interactive fee schedules for GKG, RVG, UPC, EPO, and PatKostG. Enter a dispute value, read the fee.",

    // Checklisten
    "index.checklisten.title": "Checklists",
    "index.checklisten.desc": "Interactive filing checklists for UPC, German, and EPO proceedings. Multiple instances per template, linkable to an Akte.",
    "checklisten.title": "Checklists \u2014 Paliad",
    "checklisten.heading": "Checklists",
    "checklisten.subtitle": "Interactive checklists for typical procedural steps before the UPC, German Patent Court, and EPO. Tick off, print, miss nothing.",
    "checklisten.tab.templates": "Templates",
    "checklisten.tab.mine": "My templates",
    "checklisten.tab.instances": "Existing instances",
    "checklisten.mine.empty": "You haven't authored a template yet.",
    "checklisten.tab.gallery": "Shared templates",
    "checklisten.gallery.empty": "No shared templates visible yet.",
    "checklisten.filter.other": "Other",
    "checklisten.instance.outdated.badge": "Template updated",
    "checklisten.instance.outdated.note": "The underlying template has been updated since this instance was created (v{from} → v{to}).",
    "checklisten.instance.outdated.diff": "Show changes",
    "checklisten.instance.diff.title": "Changed items",
    "checklisten.instance.diff.close": "Close",
    "checklisten.instance.diff.added": "Added",
    "checklisten.instance.diff.removed": "Removed",
    "checklisten.instance.diff.changed": "Changed",
    "checklisten.instance.diff.empty": "No content differences in items.",
    "checklisten.instance.diff.error": "Diff failed.",
    "checklisten.mine.new": "New template",
    "checklisten.mine.loading": "Loading…",
    "checklisten.mine.visibility.private": "Private",
    "checklisten.mine.visibility.firm": "Firm-wide",
    "checklisten.mine.visibility.shared": "Shared",
    "checklisten.mine.visibility.global": "In catalog",
    "checklisten.mine.edit": "Edit",
    "checklisten.mine.delete": "Delete",
    "checklisten.mine.delete.confirm": "Delete template \"{title}\"? Existing instances remain.",
    "checklisten.mine.delete.error": "Delete failed.",
    "checklisten.mine.origin.authored": "Your template",
    "checklisten.author.title": "Author template — Paliad",
    "checklisten.author.title.edit": "Edit template — Paliad",
    "checklisten.author.heading.new": "New checklist template",
    "checklisten.author.heading.edit": "Edit template",
    "checklisten.author.subtitle": "Author your own checklist with sections and items. Keep it private or open it firm-wide.",
    "checklisten.author.field.title": "Title",
    "checklisten.author.field.title.hint": "e.g. \"UPC SoC — internal checklist\".",
    "checklisten.author.field.description": "Short description",
    "checklisten.author.field.regime": "Regime",
    "checklisten.author.field.court": "Court / authority",
    "checklisten.author.field.reference": "Legal source",
    "checklisten.author.field.deadline": "Deadline (optional)",
    "checklisten.author.field.lang": "Language",
    "checklisten.author.field.visibility": "Visibility",
    "checklisten.author.visibility.private.hint": "Visible only to you.",
    "checklisten.author.visibility.firm.hint": "Visible to every authenticated colleague.",
    "checklisten.author.groups.heading": "Sections and items",
    "checklisten.author.groups.add": "+ Add section",
    "checklisten.author.group.title": "Section title",
    "checklisten.author.group.remove": "Remove section",
    "checklisten.author.item.add": "+ Add item",
    "checklisten.author.item.label": "Item",
    "checklisten.author.item.note": "Note (optional)",
    "checklisten.author.item.rule": "Rule (optional)",
    "checklisten.author.item.remove": "Remove item",
    "checklisten.author.save": "Save",
    "checklisten.author.cancel": "Cancel",
    "checklisten.author.saving": "Saving…",
    "checklisten.author.error.title": "Please enter a title.",
    "checklisten.author.error.no_groups": "Please add at least one section with one item.",
    "checklisten.author.error.generic": "Save failed. Please try again.",
    "checklisten.author.error.notfound": "Template not found or you don't have permission to edit it.",
    "checklisten.detail.edit": "Edit",
    "checklisten.detail.delete": "Delete",
    "checklisten.detail.share": "Share",
    "checklisten.detail.promote": "Add to firm catalog",
    "checklisten.detail.demote": "Remove from catalog",
    "checklisten.detail.promote.confirm": "Add this template to the firm catalog? Every colleague will see it under Templates.",
    "checklisten.detail.demote.confirm": "Remove this template from the firm catalog? It stays firm-visible.",
    "checklisten.detail.promote.error": "Promotion failed.",
    "checklisten.detail.delete.confirm": "Delete template \"{title}\"? Existing instances remain.",
    "checklisten.detail.delete.error": "Delete failed.",
    "checklisten.detail.authored.by": "Authored by {author}",
    "checklisten.detail.visibility": "Visibility: {state}",
    "checklisten.detail.visibility.set.firm": "Share with firm",
    "checklisten.detail.visibility.set.private": "Make private",
    "checklisten.detail.visibility.error": "Couldn't change visibility.",
    "checklisten.share.title": "Share template",
    "checklisten.share.kind": "Recipient type",
    "checklisten.share.kind.user": "Colleague",
    "checklisten.share.kind.office": "Office",
    "checklisten.share.kind.partner_unit": "Practice unit",
    "checklisten.share.kind.project": "Project",
    "checklisten.share.pick": "— pick —",
    "checklisten.share.submit": "Share",
    "checklisten.share.cancel": "Cancel",
    "checklisten.share.error.pick": "Please pick a recipient.",
    "checklisten.share.error.generic": "Share failed.",
    "checklisten.share.success": "Shared.",
    "checklisten.share.grants.heading": "Existing grants",
    "checklisten.share.grants.empty": "No grants.",
    "checklisten.share.grants.revoke": "Remove",
    "checklisten.share.grants.revoke.confirm": "Remove this grant?",
    "checklisten.share.grants.revoke.error": "Revoke failed.",
    "checklisten.share.grants.recipient.user": "Colleague",
    "checklisten.share.grants.recipient.office": "Office",
    "checklisten.share.grants.recipient.partner_unit": "Practice unit",
    "checklisten.share.grants.recipient.project": "Project",
    "checklisten.instances.all.loading": "Loading…",
    "checklisten.instances.all.empty": "No checklist instances yet. Create one from the Templates tab.",
    "checklisten.instances.all.col.template": "Template",
    "checklisten.instances.all.col.name": "Name",
    "checklisten.instances.all.col.project": "Project",
    "checklisten.instances.all.col.progress": "Progress",
    "checklisten.instances.all.col.created": "Created",
    "checklisten.instances.all.personal": "Personal",
    "checklisten.filter.all": "All",
    "checklisten.filter.de": "DE",
    "checklisten.empty": "No checklists in this category.",
    "checklisten.back": "Back to overview",
    "checklisten.print": "Print",
    "checklisten.reset": "Reset",
    "checklisten.reset.confirm": "Really reset all checkboxes for this instance?",
    "checklisten.reset.error": "Reset failed. Please try again.",
    "checklisten.notfound": "Checklist not found.",
    "checklisten.newInstance": "New instance",
    "checklisten.newInstance.title": "New checklist instance",
    "checklisten.newInstance.name": "Name",
    "checklisten.newInstance.name.hint": "e.g. \u201CMueller v. Schmidt \u2014 SoC\u201D.",
    "checklisten.newInstance.akte": "Akte (optional)",
    "checklisten.newInstance.akte.none": "\u2014 no Akte \u2014",
    "checklisten.newInstance.akte.hint": "When linked, office colleagues can see the instance.",
    "checklisten.newInstance.cancel": "Cancel",
    "checklisten.newInstance.submit": "Create",
    "checklisten.newInstance.error.name": "Please enter a name.",
    "checklisten.newInstance.error.generic": "Failed to create instance. Please try again.",
    "checklisten.instances.heading": "Instances",
    "checklisten.instances.sub": "Each instance tracks its own progress and can optionally be linked to an Akte.",
    "checklisten.instances.loading": "Loading\u2026",
    "checklisten.instances.empty": "No instances yet. Click \u201CNew instance\u201D to start.",
    "checklisten.instances.col.name": "Name",
    "checklisten.instances.col.progress": "Progress",
    "checklisten.instances.col.akte": "Akte",
    "checklisten.instances.col.created": "Created",
    "checklisten.instances.delete.confirm": "Really delete instance \u201C{name}\u201D?",
    "checklisten.instances.delete.error": "Failed to delete.",
    "checklisten.instance.title": "Checklist instance \u2014 Paliad",
    "checklisten.instance.back": "Back to template",
    "checklisten.instance.loading": "Loading\u2026",
    "checklisten.instance.notfound": "Instance not found or not authorised.",
    "checklisten.instance.rename": "Rename",
    "checklisten.instance.rename.save": "Save",
    "checklisten.instance.rename.error": "Rename failed.",
    "checklisten.instance.akte.open": "Open",
    "checklisten.disclaimer": "Note: These checklists are aides-memoire only and do not replace case-by-case review. The applicable procedural rules are controlling.",
    "checklisten.feedback.btn": "Feedback",
    "checklisten.feedback.title": "Checklist feedback",
    "checklisten.feedback.type": "Type",
    "checklisten.feedback.error": "Error found",
    "checklisten.feedback.missing": "Missing item",
    "checklisten.feedback.suggestion": "Improvement suggestion",
    "checklisten.feedback.other": "Other",
    "checklisten.feedback.message": "Message",
    "checklisten.feedback.submit": "Submit",
    "checklisten.feedback.cancel": "Cancel",
    "checklisten.feedback.success": "Thank you for your feedback!",
    "checklisten.feedback.error.required": "Please enter a message.",
    "checklisten.feedback.error.generic": "Error submitting. Please try again.",

    // Gerichte
    "gerichte.title": "Court Directory \u2014 Paliad",
    "gerichte.heading": "Court Directory",
    "gerichte.subtitle": "Contacts, addresses, and filing details for courts, divisions, and offices relevant to patent practice.",
    "gerichte.search.placeholder": "Search by name, city, type...",
    "gerichte.filter.type": "Type:",
    "gerichte.filter.country": "Country:",
    "gerichte.filter.all": "All",
    "gerichte.filter.de": "Germany",
    "gerichte.filter.epa": "EPO",
    "gerichte.filter.national": "National",
    "gerichte.empty": "No matches found.",
    "gerichte.field.address": "Address",
    "gerichte.field.contact": "Contact",
    "gerichte.field.fax": "Fax",
    "gerichte.field.filing": "Filing",
    "gerichte.field.notes": "Practical notes",
    "gerichte.field.hlContact": `${FIRM} contact`,
    "gerichte.feedback.btn": "Suggest a correction",
    "gerichte.feedback.title": "Suggest a correction",
    "gerichte.feedback.court": "Court",
    "gerichte.feedback.type": "Type of feedback",
    "gerichte.feedback.type.address": "Address / contact details",
    "gerichte.feedback.type.filing": "Filing details",
    "gerichte.feedback.type.notes": "Practical notes",
    "gerichte.feedback.type.missing": "Missing court",
    "gerichte.feedback.type.other": "Other",
    "gerichte.feedback.message": "Message",
    "gerichte.feedback.cancel": "Cancel",
    "gerichte.feedback.submit": "Submit",
    "gerichte.feedback.success": "Thank you \u2014 your feedback has been recorded.",
    "gerichte.feedback.error.required": "Please enter a message.",
    "gerichte.feedback.error.generic": "Error submitting. Please try again.",

    // Index \u2014 Gerichte card
    "index.gerichte.title": "Court Directory",
    "index.gerichte.desc": "Courts, UPC divisions and patent offices at a glance \u2014 addresses, filing details, and languages.",

    // Akten (matters) \u2014 list
    "projects.filter.office": "Office",
    "projects.filter.office.all": "All offices",
    "projects.filter.status.completed": "Completed",
    "projects.status.active": "Active",
    "projects.status.completed": "Completed",
    "projects.status.archived": "Archived",
    "projects.col.ref": "Reference",
    "projects.col.office": "Office",
    "projects.onboarding.required": "Please complete onboarding before creating matters.",

    // Akten \u2014 create form
    "projects.field.ref": "Reference number",
    "projects.field.ref.placeholder": `e.g. ${FIRM}-2026-0042`,
    "projects.field.office": "Owning office",
    "projects.field.courtRef": "Court reference (optional)",
    "projects.field.akteType": "Proceeding type (optional)",
    "projects.field.firmWide": "Firm-wide visible",
    "projects.field.firmWide.hint": "When enabled, all lawyers can see this matter. Partners/admins only.",
    "projects.field.collaborators": "Additional collaborators (optional)",
    "projects.field.collaborators.placeholder": "Type a name or email\u2026",
    "projects.field.collaborators.hint": "Users who should also have access (including cross-office).",
    "projects.error.required": "Title and reference are required.",
    "projects.error.generic": "Error creating matter. Please try again.",
    "projects.error.forbidden": "Not allowed. Check your role and office.",

    // Akten \u2014 detail
    "projects.detail.firmwide.on": "Firm-wide visible",
    "projects.detail.firmwide.off": "Office-only",
    "projects.detail.checklisten.hint": "Instances are created on the template page under \"Checklists\".",
    "projects.detail.verlauf.loadingMore": "Loading \u2026",
    "projects.detail.parteien.remove": "Remove",
    "projects.detail.parteien.remove.confirm": "Really remove this party?",

    // Phase E — Fristen (persistent deadlines)
    "deadlines.list.title": "Deadlines \u2014 Paliad",
    "deadlines.list.heading": "Deadlines",
    "deadlines.list.subtitle": "Persistent deadlines for your matters. Overdue, today, this week, next week \u2014 at a glance.",
    "deadlines.list.new": "New deadline",
    "deadlines.summary.overdue": "Overdue",
    "deadlines.summary.today": "Today",
    "deadlines.summary.thisweek": "This week",
    "deadlines.summary.nextweek": "Next week",
    "deadlines.summary.completed": "Done",
    "deadlines.summary.later": "Later",
    "deadlines.filter.status": "Status",
    "deadlines.filter.akte": "Matter",
    "deadlines.filter.all": "All (open & completed)",
    "deadlines.filter.pending": "All open",
    "deadlines.filter.overdue": "Overdue",
    "deadlines.filter.today": "Today",
    "deadlines.filter.thisweek": "This week",
    "deadlines.filter.nextweek": "Next week",
    "deadlines.filter.completed": "Done",
    "deadlines.filter.later": "Later",
    "deadlines.filter.akte.all": "All matters",
    "deadlines.col.due": "Due",
    "deadlines.col.title": "Title",
    "deadlines.col.akte": "Matter",
    "deadlines.col.rule": "Rule",
    "deadlines.col.status": "Status",
    "deadlines.empty.title": "No deadlines yet",
    "deadlines.empty.hint": "Once deadlines are added or imported from the calculator, they appear here.",
    "deadlines.empty.filtered": "No deadlines match these filters.",
    "deadlines.unavailable": "Deadline management currently unavailable \u2014 please contact your administrator.",
    "deadlines.status.pending": "Open",
    "deadlines.status.completed": "Completed",
    "deadlines.status.cancelled": "Cancelled",
    "deadlines.status.waived": "Waived",
    "deadlines.urgency.overdue": "Overdue",
    "deadlines.urgency.today": "Today",
    "deadlines.urgency.soon": "Soon",
    "deadlines.urgency.later": "Later",
    "deadlines.complete.action": "Complete",
    "deadlines.complete.confirm": "Mark deadline \u201c{title}\u201d as completed?",

    // t-paliad-139 \u2014 subtree aggregation toggle and attribution chip
    "aggregation.toggle.subtree": "Incl. sub-projects",
    "aggregation.toggle.direct_only": "Direct only",
    "aggregation.attribution.on": "on",

    // t-paliad-139 Phase 2 \u2014 Team-tab subsections + Partner Units management
    "projects.team.section.from_descendants": "From sub-projects",
    "projects.team.section.from_descendants.hint": "People directly staffed on a sub-project who are not on this project or an ancestor.",
    "projects.team.section.derived": "Derived (Partner Unit)",
    "projects.team.section.derived.hint": "Members active on this project via an attached partner unit.",
    "projects.team.section.units": "Partner Units",
    "projects.team.section.units.hint": "Partner units attached to this project. Members in the listed unit roles auto-derive.",
    "projects.team.derived.from": "via",
    "projects.team.derived.visibility": "View",
    "projects.team.derived.authority": "View & 4-eye",
    "projects.team.derived.authority.hint": "Authority: derived members count as approvers.",
    "projects.team.units.attach": "Attach partner unit",
    "projects.team.units.detach": "Remove",
    "projects.team.units.choose": "Select a unit\u2026",
    "projects.team.units.select": "Unit",
    "projects.team.units.derive_roles": "Which unit roles should derive?",
    "projects.team.units.grants_authority": "Grant authority (4-eye)",
    "projects.team.units.col.name": "Unit",
    "projects.team.units.col.derive_roles": "Derived roles",
    "projects.team.units.col.authority": "Authority",
    "projects.team.units.members": "members",
    "projects.team.units.empty": "No partner units attached.",
    "projects.team.units.confirm_detach": "Remove partner unit?",
    "unit_role.lead": "Lead",
    "unit_role.attorney": "Attorney",
    "unit_role.senior_pa": "Senior PA",
    "unit_role.pa": "PA",
    "unit_role.paralegal": "Paralegal",

    "deadlines.neu.title": "New deadline \u2014 Paliad",
    "deadlines.neu.heading": "Create new deadline",
    "deadlines.neu.subtitle": "A persistent deadline attached to a matter. Visible to anyone who can see that matter.",
    "deadlines.neu.back": "\u2190 Back to list",
    "deadlines.neu.cancel": "Cancel",
    "deadlines.neu.submit": "Create deadline",
    "deadlines.field.akte": "Matter",
    "deadlines.field.akte.choose": "Please choose\u2026",
    "deadlines.field.akte.empty": "You don't have any matters yet. Please create one first.",
    "deadlines.field.akte.empty.link": "Create matter",
    "deadlines.field.title": "Title",
    "deadlines.field.title.placeholder": "e.g. File statement of defence",
    "deadlines.field.due": "Due date",
    "deadlines.field.rule": "Rule (optional)",
    "deadlines.field.rule.auto_badge": "Auto",
    "deadlines.field.rule.auto_no_match": "No rule maps to the chosen Type",
    "deadlines.field.rule.auto_pick_type": "Pick a Type first",
    "deadlines.field.rule.custom_badge": "Custom",
    "deadlines.field.rule.custom_placeholder": "e.g. internal review meeting, client call",
    "deadlines.field.rule.mode.toggle_to_auto": "Back to Auto",
    "deadlines.field.rule.mode.toggle_to_custom": "Enter custom rule",
    "deadlines.field.title.default_btn": "Default title",
    "deadlines.field.title.default_fallback": "New deadline",
    "deadlines.field.notes": "Notes (optional)",
    "deadlines.field.notes.placeholder": "References, hints, next steps\u2026",
    "deadlines.error.required": "Matter, title and due date are required.",
    "deadlines.error.generic": "Error creating deadline. Please try again.",

    "deadlines.detail.title": "Deadline \u2014 Paliad",
    "deadlines.detail.back": "\u2190 Back to deadlines",
    "deadlines.detail.loading": "Loading\u2026",
    "deadlines.detail.notfound": "Deadline not found or not accessible.",
    "deadlines.detail.complete": "Mark as completed",
    "deadlines.detail.completed.already": "Already completed",
    "deadlines.detail.reopen": "Reopen",
    "deadlines.action.reopen": "Reopen",
    "deadlines.detail.edit": "Edit",
    "deadlines.detail.save": "Save",
    "deadlines.detail.cancel": "Cancel",
    "deadlines.detail.delete": "Delete deadline",
    "deadlines.detail.delete.confirm.title": "Really delete this deadline?",
    "deadlines.detail.delete.confirm.body": "The deadline will be permanently removed. The entry in the matter activity log is preserved.",
    "deadlines.detail.delete.confirm.cancel": "Cancel",
    "deadlines.detail.delete.confirm.ok": "Delete",
    "deadlines.detail.due": "Due date",
    "deadlines.detail.rule": "Rule",
    "deadlines.detail.source": "Source",
    "deadlines.detail.notes": "Notes",
    "deadlines.detail.created": "Created",
    "deadlines.detail.completed": "Completed on",
    "deadlines.source.manual": "Manual",
    "deadlines.source.fristenrechner": "Calculator",
    "deadlines.source.caldav": "CalDAV",
    "deadlines.source.imported": "Import",

    "cal.day.mon": "Mon",
    "cal.day.tue": "Tue",
    "cal.day.wed": "Wed",
    "cal.day.thu": "Thu",
    "cal.day.fri": "Fri",
    "cal.day.sat": "Sat",
    "cal.day.sun": "Sun",
    "cal.month.0": "January",
    "cal.month.1": "February",
    "cal.month.2": "March",
    "cal.month.3": "April",
    "cal.month.4": "May",
    "cal.month.5": "June",
    "cal.month.6": "July",
    "cal.month.7": "August",
    "cal.month.8": "September",
    "cal.month.9": "October",
    "cal.month.10": "November",
    "cal.month.11": "December",
    "cal.view.month": "Month",
    "cal.view.week": "Week",
    "cal.view.day": "Day",
    "cal.month.prev": "Previous month",
    "cal.month.next": "Next month",
    "cal.week.prev": "Previous week",
    "cal.week.next": "Next week",
    "cal.day.prev": "Previous day",
    "cal.day.next": "Next day",
    "cal.day.back_to_month": "Back to month",
    "cal.today": "Today",
    "cal.day.open_day": "Open day view",
    "cal.day.no_entries": "Nothing scheduled this day.",

    // Akten detail — Fristen tab (Phase E)

    // Fristenrechner — save to Akte (Phase E)
    "deadlines.save.cta": "Save as deadline(s)",
    "deadlines.save.modal.title": "Import deadlines",
    "deadlines.save.modal.akte": "Matter",
    "deadlines.save.modal.akte.choose": "Please choose\u2026",
    "deadlines.save.modal.choose": "Select which deadlines to import:",
    "deadlines.save.modal.cancel": "Cancel",
    "deadlines.save.modal.submit": "Import",
    "deadlines.save.modal.no_akten": "You don't have any matters yet. Please create one first.",
    "deadlines.save.modal.no_akten.link": "Create matter",
    "deadlines.save.success": "Deadlines imported.",
    "deadlines.save.success.link": "Open deadlines",
    "deadlines.save.error": "Import failed.",
    "deadlines.save.skip_court_set": "Court-set entries with no date will be skipped.",

    // Fristenrechner overhaul — shared result view (S2, design §4).
    "deadlines.overhaul.loading": "Loading follow-up deadlines…",
    "deadlines.overhaul.load_error": "Could not load follow-up deadlines.",
    "deadlines.overhaul.empty": "No follow-up deadlines configured for this event.",
    "deadlines.overhaul.trigger.label": "Trigger event",
    "deadlines.overhaul.trigger.date": "Trigger date:",
    "deadlines.overhaul.followups.label": "Follow-up deadlines",
    "deadlines.overhaul.group.mandatory": "Mandatory",
    "deadlines.overhaul.group.recommended": "Recommended",
    "deadlines.overhaul.group.optional": "Optional",
    "deadlines.overhaul.group.conditional": "Conditional",
    "deadlines.overhaul.spawn.badge": "⇲ new proceeding",
    "deadlines.overhaul.spawn.tooltip": "This rule initiates a new proceeding.",
    "deadlines.detail.label": "Detail:",
    "deadlines.detail.mandatory_only": "Mandatory only",
    "deadlines.detail.selected": "Selected",
    "deadlines.detail.all_options": "All options",
    "deadlines.detail.optional_unselected_hint": "This rule is optional and not part of the current scenario.",
    "deadlines.detail.aufnehmen": "Add",
    "deadlines.detail.entfernen": "Remove",
    "deadlines.overhaul.condition.badge": "Conditional",
    "deadlines.overhaul.crossparty.badge": "Other side",
    "deadlines.overhaul.crossparty.tooltip": "This deadline is filed by the opposing party. Shown for information only — not added to the Akte.",
    "deadlines.overhaul.notes.summary": "Note",
    "deadlines.overhaul.edit_date.label": "✏ Date",
    "deadlines.overhaul.edit_date.title": "Edit date manually",
    "deadlines.overhaul.select_rule": "Select deadline",
    "deadlines.overhaul.footer.count": "{n} deadlines selected",
    "deadlines.overhaul.footer.cta": "Add to project",
    "deadlines.overhaul.nudge.no_project": "Tip: pick a project above to import these deadlines.",
    "deadlines.party.claimant": "Claimant",
    "deadlines.party.defendant": "Defendant",
    "deadlines.party.both": "Both parties",
    "deadlines.party.court": "Court",

    // Fristenrechner overhaul Mode A — Direct search (S3, design §3.1).
    "deadlines.overhaul.modes.label": "Mode",
    "deadlines.overhaul.modes.search": "Direct search",
    "deadlines.overhaul.modes.wizard": "Guided",
    "deadlines.overhaul.wizard.coming_soon": "Guided mode coming in the next slice.",
    "deadlines.overhaul.modea.filters.label": "Filters",
    "deadlines.overhaul.modea.filters.heading": "Filters (narrow)",
    "deadlines.overhaul.modea.axis.forum": "Forum:",
    "deadlines.overhaul.modea.axis.proc": "Proceeding:",
    "deadlines.overhaul.modea.axis.kind": "What happened:",
    "deadlines.overhaul.modea.axis.party": "Party:",
    "deadlines.overhaul.modea.axis.inbox": "Inbox channel:",
    "deadlines.overhaul.modea.chip.all": "All",
    "deadlines.overhaul.modea.inbox.summary": "Advanced: Inbox channel",
    "deadlines.overhaul.modea.inbox.postal": "Postal",
    "deadlines.overhaul.modea.search.label": "Search",
    "deadlines.overhaul.modea.search.placeholder": "Statement of Claim, decision notice, oral hearing…",
    "deadlines.overhaul.modea.results.label": "Results",
    "deadlines.overhaul.modea.results.heading": "Results (click to lock as trigger)",
    "deadlines.overhaul.modea.results.count": "{n} hits",
    "deadlines.overhaul.modea.row.followups": "{n} follow-ups",
    "deadlines.overhaul.modea.loading": "Loading…",
    "deadlines.overhaul.modea.no_results": "No hits for these filters.",
    "deadlines.overhaul.modea.no_proceedings": "No proceedings in this forum.",
    "deadlines.overhaul.modea.search_error": "Search failed.",
    "deadlines.overhaul.kind.filing": "Filed",
    "deadlines.overhaul.kind.hearing": "Hearing",
    "deadlines.overhaul.kind.decision": "Decision",
    "deadlines.overhaul.kind.order": "Order",
    "deadlines.overhaul.kind.missed": "Missed deadline",

    // Fristenrechner overhaul Mode B — guided wizard (S4, design §3.2).
    "deadlines.overhaul.wizard.heading": "Guided mode",
    "deadlines.overhaul.wizard.hint": "Answer top-down — the wizard lands on a trigger event and shows the follow-up deadlines.",
    "deadlines.overhaul.wizard.r1.label": "What happened?",
    "deadlines.overhaul.wizard.r2.label": "Before which forum?",
    "deadlines.overhaul.wizard.r3.label": "In which proceeding?",
    "deadlines.overhaul.wizard.r3.empty": "No proceeding with this event kind in the chosen forum.",
    "deadlines.overhaul.wizard.r4.label": "Which document / which hearing?",
    "deadlines.overhaul.wizard.r4.empty": "No events for this selection.",
    "deadlines.overhaul.wizard.r5.label": "Which party do you represent?",
    "deadlines.overhaul.wizard.r5.probing": "Checking whether follow-ups depend on the side…",
    "deadlines.overhaul.wizard.badge.filter": "Filter",
    "deadlines.overhaul.wizard.badge.qualifier": "Qualifier",
    "deadlines.overhaul.wizard.edit": "edit",
    "deadlines.overhaul.wizard.anno.from_project": "from project",
    "deadlines.overhaul.wizard.anno.implicit": "implicit",

    // Office labels (shared)
    "office.munich": "Munich",
    "office.duesseldorf": "D\u00fcsseldorf",
    "office.hamburg": "Hamburg",
    "office.amsterdam": "Amsterdam",
    "office.london": "London",
    "office.paris": "Paris",
    "office.milan": "Milan",

    // Dashboard (logged-in landing)
    "dashboard.title": "Dashboard \u2014 Paliad",
    "dashboard.greeting.prefix": "Hello",
    "dashboard.unavailable": "Dashboard requires the database \u2014 contact an administrator.",
    "dashboard.onboarding": "Please complete onboarding before deadlines and matters are shown.",
    "dashboard.summary.heading": "Deadlines at a glance",
    "dashboard.summary.overdue": "Overdue",
    "dashboard.summary.today": "Today",
    "dashboard.summary.this_week": "This week",
    "dashboard.summary.next_week": "Next week",
    "dashboard.summary.completed": "Done",
    "dashboard.summary.later": "Later",
    "dashboard.appointment_summary.heading": "Appointments at a glance",
    "dashboard.matters.heading": "My matters",
    "dashboard.matters.active": "Active",
    "dashboard.matters.archived": "Archived",
    "dashboard.matters.total": "Total",
    "dashboard.deadlines.heading": "Upcoming deadlines",
    "dashboard.deadlines.empty": "No deadlines in the next 7 days.",
    "dashboard.appointments.heading": "Upcoming appointments",
    "dashboard.appointments.empty": "No appointments in the next 7 days.",
    "dashboard.activity.heading": "Recent activity",
    "dashboard.activity.empty": "No activity recorded yet.",
    "dashboard.activity.system": "System",
    "dashboard.activity.event": "event",
    "dashboard.agenda.heading": "Agenda",
    "dashboard.agenda.empty": "Nothing due in the next 30 days.",
    "dashboard.agenda.full_link": "Open full agenda →",
    "dashboard.inbox.heading": "Open approvals",
    "dashboard.inbox.empty": "No open approvals.",
    "dashboard.inbox.full_link": "Open full inbox →",
    "dashboard.inbox.entity.deadline": "Deadline",
    "dashboard.inbox.entity.appointment": "Appointment",
    "dashboard.edit.toggle": "Customize",
    "dashboard.edit.exit": "Done",
    "dashboard.edit.add_widget": "Add widget",
    "dashboard.edit.reset": "Reset to default",
    "dashboard.edit.reset_confirm": "Reset layout to default? This cannot be undone.",
    "dashboard.edit.promote": "Save as firm default",
    "dashboard.edit.promote_confirm": "Save your current layout as the firm default? New users and 'Reset to default' will use this layout afterwards.",
    "dashboard.edit.promoted": "Saved as firm default",
    "dashboard.pinned.heading": "Pinned matters",
    "dashboard.pinned.empty": "No pinned matters yet.",
    "dashboard.pinned.full_link": "Open all matters →",
    "dashboard.quick.heading": "Quick actions",
    "dashboard.quick.new_project": "+ Matter",
    "dashboard.quick.new_deadline": "+ Deadline",
    "dashboard.quick.new_appointment": "+ Appointment",
    "dashboard.edit.move_up": "Move up",
    "dashboard.edit.move_down": "Move down",
    "dashboard.edit.hide": "Hide",
    "dashboard.edit.settings": "Settings",
    "dashboard.edit.drag": "Drag to reorder",
    "dashboard.edit.saved": "Saved",
    "dashboard.edit.save_failed": "Save failed",
    "dashboard.edit.setting.count": "Count",
    "dashboard.edit.setting.count.custom": "Custom value (max {n})",
    "dashboard.edit.setting.horizon": "Horizon",
    "dashboard.edit.setting.horizon.days": "{n} days",
    "dashboard.edit.setting.horizon.custom": "Custom horizon in days (max {n})",
    "dashboard.edit.setting.view": "View",
    "dashboard.edit.setting.size": "Size",
    "dashboard.edit.setting.position": "Position",
    "dashboard.edit.resize": "Resize",
    "dashboard.picker.title": "Add widget",
    "dashboard.picker.status.active": "Active",
    "dashboard.picker.status.hidden": "Hidden",
    "dashboard.picker.status.absent": "Not added",
    "dashboard.picker.close": "Done",
    "dashboard.picker.empty": "All widgets are already added.",
    "dashboard.section.collapse": "Collapse section",
    "dashboard.section.expand": "Expand section",
    "dashboard.urgency.overdue": "Overdue",
    "dashboard.urgency.today": "Today",
    "dashboard.urgency.urgent": "Urgent",
    "dashboard.urgency.soon": "Soon",
    "dashboard.when.today": "today",
    "dashboard.when.tomorrow": "tomorrow",
    "dashboard.action.short.project_created": "created project",
    "dashboard.action.short.project_archived": "archived project",
    "dashboard.action.short.project_reparented": "re-parented project",
    "dashboard.action.short.project_type_changed": "changed project type",
    "dashboard.action.short.status_changed": "changed status",
    "dashboard.action.short.our_side_changed": "changed represented side",
    "dashboard.action.short.visibility_changed": "changed visibility",
    "dashboard.action.short.collaborators_updated": "updated collaborators",
    "dashboard.action.short.note_created": "added note",
    "dashboard.action.short.deadline_created": "added deadline",
    "dashboard.action.short.deadline_updated": "updated deadline",
    "dashboard.action.short.deadline_completed": "completed deadline",
    "dashboard.action.short.deadline_reopened": "reopened deadline",
    "dashboard.action.short.deadline_deleted": "deleted deadline",
    "dashboard.action.short.deadline_project_changed": "moved deadline",
    "dashboard.action.short.deadlines_imported": "imported deadlines",
    "dashboard.action.short.appointment_created": "added appointment",
    "dashboard.action.short.appointment_updated": "updated appointment",
    "dashboard.action.short.appointment_deleted": "deleted appointment",
    "dashboard.action.short.appointment_project_changed": "moved appointment",
    // Localized event-row title for the project Verlauf tab — full noun
    // phrase ("Deadline updated") complementing the dashboard's verb form.
    "event.title.project_created": "Project created",
    "event.title.project_archived": "Project archived",
    "event.title.project_reparented": "Project re-parented",
    "event.title.project_type_changed": "Project type changed",
    "event.title.status_changed": "Status changed",
    "event.title.our_side_changed": "Represented side changed",
    "event.title.note_created": "Note added",
    "event.title.deadline_created": "Deadline created",
    "event.title.deadline_updated": "Deadline updated",
    "event.title.deadline_completed": "Deadline completed",
    "event.title.deadline_reopened": "Deadline reopened",
    "event.title.deadline_deleted": "Deadline deleted",
    "event.title.deadline_project_changed": "Deadline moved",
    "event.title.deadlines_imported": "Deadlines imported",
    "event.title.appointment_created": "Appointment created",
    "event.title.appointment_updated": "Appointment updated",
    "event.title.appointment_deleted": "Appointment deleted",
    "event.title.appointment_project_changed": "Appointment moved",
    // Umbrella audit kind + admin churn surfaced by the FilterBar
    // project_event_kind chip cluster (KnownProjectEventKinds).
    "event.title.approval_decided": "Approval decided",
    "event.title.member_role_changed": "Team role changed",
    // 4-eye approval lifecycle (t-paliad-138).
    "event.title.deadline_approval_requested": "Approval requested",
    "event.title.deadline_approval_approved": "Approval granted",
    "event.title.deadline_approval_rejected": "Approval rejected",
    "event.title.deadline_approval_revoked": "Request revoked",
    "event.title.deadline_approval_changes_suggested": "Changes suggested",
    "event.title.appointment_approval_requested": "Approval requested",
    "event.title.appointment_approval_approved": "Approval granted",
    "event.title.appointment_approval_rejected": "Approval rejected",
    "event.title.appointment_approval_revoked": "Request revoked",
    "event.title.appointment_approval_changes_suggested": "Changes suggested",
    "event.description.deadline_approval_requested": "Four-eyes approval requested for deadline",
    "event.description.deadline_approval_approved": "Deadline approval granted",
    "event.description.deadline_approval_rejected": "Deadline approval rejected",
    "event.description.deadline_approval_revoked": "Deadline approval request revoked",
    "event.description.deadline_approval_changes_suggested": "Deadline declined with a counter-proposal",
    "event.description.appointment_approval_requested": "Four-eyes approval requested for appointment",
    "event.description.appointment_approval_approved": "Appointment approval granted",
    "event.description.appointment_approval_rejected": "Appointment approval rejected",
    "event.description.appointment_approval_revoked": "Appointment approval request revoked",
    "event.description.appointment_approval_changes_suggested": "Appointment declined with a counter-proposal",
    "dashboard.action.short.deadline_approval_requested": "requested approval",
    "dashboard.action.short.deadline_approval_approved": "approved deadline",
    "dashboard.action.short.deadline_approval_rejected": "rejected deadline",
    "dashboard.action.short.deadline_approval_revoked": "revoked request",
    "dashboard.action.short.appointment_approval_requested": "requested approval",
    "dashboard.action.short.appointment_approval_approved": "approved appointment",
    "dashboard.action.short.appointment_approval_rejected": "rejected appointment",
    "dashboard.action.short.appointment_approval_revoked": "revoked request",
    "event.title.checklist_created": "Checklist created",
    "event.title.checklist_renamed": "Checklist renamed",
    "event.title.checklist_linked": "Checklist linked",
    "event.title.checklist_unlinked": "Checklist unlinked",
    "event.title.checklist_reset": "Checklist reset",
    "event.title.checklist_deleted": "Checklist deleted",
    // Note-parent slugs for note_created descriptions
    // ("Note added to deadline"). Used by translateEventDescription().
    "event.note.parent.project": "project",
    "event.note.parent.deadline": "deadline",
    "event.note.parent.appointment": "appointment",
    "event.note.added_to": "Note added to {parent}",
    // Localized full-sentence descriptions for the project Verlauf and the
    // dashboard activity feed. Stored descriptions carry just the variable
    // payload (title/count/slugs); the renderer interpolates here.
    "event.description.deadline_created": "Deadline “{title}” added",
    "event.description.deadline_updated": "Deadline “{title}” updated",
    "event.description.deadline_completed": "Deadline “{title}” completed",
    "event.description.deadline_reopened": "Deadline “{title}” reopened",
    "event.description.deadline_deleted": "Deadline “{title}” deleted",
    "event.description.deadline_project_changed": "Deadline “{title}” moved to another matter",
    "event.description.deadlines_imported": "{count} deadlines imported from Fristenrechner",
    "event.description.appointment_created": "Appointment “{title}” added",
    "event.description.appointment_updated": "Appointment “{title}” updated",
    "event.description.appointment_deleted": "Appointment “{title}” deleted",
    "event.description.appointment_project_changed": "Appointment “{title}” moved to another matter",
    "dashboard.action.short.checklist_created": "added checklist",
    "dashboard.action.short.checklist_renamed": "renamed checklist",
    "dashboard.action.short.checklist_unlinked": "unlinked checklist",
    "dashboard.action.short.checklist_linked": "linked checklist",
    "dashboard.action.short.checklist_reset": "reset checklist",
    "dashboard.action.short.checklist_deleted": "deleted checklist",
    "dashboard.action.short.partei_added": "added party",
    "dashboard.action.short.partei_removed": "removed party",
    // Legacy event types kept so historical project_events rows render cleanly
    // (writes switched to English in t-paliad-037).
    "dashboard.action.short.akte_created": "created matter",
    "dashboard.action.short.akte_archived": "archived matter",
    "dashboard.action.short.projekt_created": "created matter",
    "dashboard.action.short.projekt_archived": "archived matter",
    "dashboard.action.short.projekt_reparented": "re-parented matter",
    "dashboard.action.short.notiz_created": "added note",
    "dashboard.action.short.frist_created": "added deadline",
    "dashboard.action.short.frist_updated": "updated deadline",
    "dashboard.action.short.frist_completed": "completed deadline",
    "dashboard.action.short.frist_deleted": "deleted deadline",
    "dashboard.action.short.fristen_imported": "imported deadlines",
    "dashboard.action.short.termin_created": "added appointment",
    "dashboard.action.short.termin_updated": "updated appointment",
    "dashboard.action.short.termin_deleted": "deleted appointment",
    "dashboard.action.short.checkliste_created": "added checklist",
    "dashboard.action.short.checkliste_renamed": "renamed checklist",
    "dashboard.action.short.checkliste_unlinked": "unlinked checklist",
    "dashboard.action.short.checkliste_linked": "linked checklist",
    "dashboard.action.short.checkliste_reset": "reset checklist",
    "dashboard.action.short.checkliste_deleted": "deleted checklist",

    // Onboarding (first-login profile capture)
    "onboarding.title": "Welcome \u2014 Paliad",
    "onboarding.heading": "Welcome to Paliad",
    "onboarding.lede": "Please complete your profile so that matters, deadlines, and appointments can be shown.",
    "onboarding.display_name": "Display name",
    "onboarding.display_name.placeholder": "First and last name",
    "onboarding.office": "Office",
    "onboarding.office.placeholder": "Please select",
    "onboarding.job_title": "Job title",
    "onboarding.job_title.placeholder": "e.g. Associate, Partner, Patent Attorney",
    "onboarding.profession": "Profession",
    "onboarding.profession.hint": "Structured tier — drives the 4-eye approval ladder. Distinct from job title.",
    "onboarding.partner_unit": "Partner Unit",
    "onboarding.partner_unit.unassigned": "(not assigned yet)",
    "onboarding.optional": "(optional)",
    "onboarding.submit": "Create profile",
    "onboarding.error.display_name": "Please enter a display name.",
    "onboarding.error.office": "Please select an office.",
    "onboarding.error.job_title": "Please enter a job title.",
    "onboarding.error.generic": "Could not create profile.",
    "onboarding.error.connection": "Connection error. Please try again.",

    // Termine + CalDAV (Phase F)
    "nav.group.einstellungen": "Settings",
    "nav.einstellungen": "Settings",
    "nav.caldav": "CalDAV",

    // Global search (t-paliad-026)
    "search.placeholder": "Search...",
    "search.no_results": "No results",
    "search.group.projects": "Projects",
    "search.group.deadlines": "Deadlines",
    "search.group.appointments": "Appointments",
    "search.group.glossary": "Glossary",
    "search.group.courts": "Courts",
    "search.group.checklists": "Checklists",
    "search.group.links": "Links",
    "search.group.users": "Colleagues",

    // Command palette (t-paliad-044)
    "palette.section.actions": "Actions",
    "palette.action.nav.dashboard": "Go to Dashboard",
    "palette.action.nav.projects": "Go to Projects",
    "palette.action.nav.deadlines": "Go to Deadlines",
    "palette.action.nav.appointments": "Go to Appointments",
    "palette.action.nav.agenda": "Go to Agenda",
    "palette.action.nav.team": "Go to Team",
    "palette.action.nav.glossary": "Go to Glossary",
    "palette.action.nav.courts": "Go to Courts",
    "palette.action.nav.links": "Go to Links",
    "palette.action.nav.checklists": "Go to Checklists",
    "palette.action.nav.downloads": "Go to Downloads",
    "palette.action.nav.settings": "Go to Settings",
    "palette.action.create.deadline": "New deadline",
    "palette.action.create.appointment": "New appointment",
    "palette.action.create.project": "New project",
    "palette.action.toggle.lang": "Toggle language",
    "palette.action.toggle.pin": "Pin / unpin sidebar",
    "palette.action.app.invite": "Invite a colleague",
    "palette.action.app.logout": "Logout",
    "palette.footer.navigate": "Navigate",
    "palette.footer.open": "Open",
    "palette.footer.close": "Close",

    "sidebar.resize.title": "Resize \u2014 drag, double-click to reset",

    // Settings page (t-paliad-022)
    "einstellungen.title": "Settings \u2014 Paliad",
    "einstellungen.heading": "Settings",
    "einstellungen.subtitle": "Profile, notifications, and calendar sync.",
    "einstellungen.loading": "Loading\u2026",
    "einstellungen.optional": "(optional)",
    "einstellungen.save": "Save",
    "einstellungen.saved": "Saved.",
    "einstellungen.error.generic": "Save failed. Please try again.",
    "einstellungen.tab.profil": "Profile",
    "einstellungen.tab.benachrichtigungen": "Notifications",
    "einstellungen.tab.caldav": "CalDAV",
    "einstellungen.tab.export": "Data export",
    "einstellungen.export.subtitle": "Download your personal Paliad data as an Excel + JSON + CSV bundle. The package contains everything you can currently see \u2014 your projects, deadlines, appointments, notes, approvals and settings.",
    "einstellungen.export.heading": "Personal data export",
    "einstellungen.export.what": "The package contains your visible data in three formats in one .zip:",
    "einstellungen.export.bullet.xlsx": "paliad-export.xlsx \u2014 one Excel sheet per entity.",
    "einstellungen.export.bullet.json": "paliad-export.json \u2014 machine-readable copy for scripts and tools.",
    "einstellungen.export.bullet.csv": "csv/<sheet>.csv \u2014 individual tables as CSV (UTF-8 with BOM).",
    "einstellungen.export.scope": "Scope: everything you can currently see in Paliad (visibility at the moment of export). Passwords, CalDAV credentials and other secrets are never exported.",
    "einstellungen.export.audit": "Every export is logged in the audit log.",
    "einstellungen.export.button": "Export data",
    "einstellungen.export.started": "Download started. If nothing happens, check your browser's downloads folder.",
    "projects.title": "Projects \u2014 Paliad",
    "projects.heading": "Projects",
    "projects.subtitle": "Clients, litigations, patents and cases \u2014 organised hierarchically.",
    "projects.new": "New project",
    "projects.search.placeholder": "Title, reference or ClientMatter...",
    "projects.filter.type": "Type",
    "projects.filter.type.all": "All types",
    "projects.filter.status": "Status",
    "projects.filter.status.all": "All statuses",
    "projects.filter.status.active": "Active",
    "projects.filter.status.archived": "Archived",
    "projects.filter.status.closed": "Closed",
    "projects.filter.view": "View",
    "projects.view.flat": "Flat list",
    "projects.view.roots": "Roots only",
    "projects.unavailable": "Project management is currently unavailable \u2014 please contact an administrator.",
    "projects.col.title": "Title",
    "projects.col.type": "Type",
    "projects.col.reference": "Reference",
    "projects.col.clientmatter": "ClientMatter",
    "projects.col.status": "Status",
    "projects.col.updated": "Last modified",
    "projects.empty.title": "No projects yet",
    "projects.empty.hint": "Start via \u201cNew project\u201d \u2014 create a client first, then litigations, patents and cases underneath.",
    "projects.empty.filtered": "No matches for these filters.",
    "projects.cancel": "Cancel",
    "projects.submit": "Create project",
    "projects.neu.title": "New project \u2014 Paliad",
    "projects.neu.heading": "Create a new project",
    "projects.neu.subtitle": "Client, litigation, patent, case or generic project \u2014 place it in the hierarchy. Visibility follows the team (you are auto-added as \u201cLead\u201d).",
    "projects.field.type": "Type",
    "projects.field.type.choose": "Please choose…",
    "projects.field.parent": "Parent project",
    "projects.field.parent.placeholder": "Type to search for a parent project...",
    "projects.field.parent.hint": "Leave blank for a root project (typically a client).",
    "projects.field.title": "Title",
    "projects.field.title.placeholder": "e.g. Siemens AG | Siemens v. Huawei | EP 1 234 567",
    "projects.field.reference": "Internal reference (optional)",
    "projects.field.reference.placeholder": `e.g. ${FIRM}-2026-0042`,
    "projects.field.client_number": "Client no. (6 digits)",
    "projects.field.matter_number": "Matter no. (6 digits)",
    "projects.field.clientmatter.hint": `${FIRM} billing numbers. Format CCCCCC.MMMMMM. Client no. is inherited by sub-projects (overridable).`,
    "projects.field.billing_reference": "Billing reference (optional)",
    "projects.field.netdocuments_url": "netDocuments URL (optional)",
    "projects.field.industry": "Industry",
    "projects.field.country": "Country (ISO-2)",
    "projects.field.description": "Notes",
    "projects.field.description.placeholder": "Short notes about the project (optional)...",
    "projects.detail.description.heading": "Notes",
    "projects.field.patent_number": "Patent number",
    "projects.field.filing_date": "Filing date",
    "projects.field.grant_date": "Grant date",
    "projects.field.court": "Court",
    "projects.field.case_number": "Case number (court)",
    "projects.field.proceeding_type_id": "Proceeding type",
    "projects.field.proceeding_type": "Proceeding type",
    "projects.field.proceeding_type.unset": "(unset)",
    "projects.field.proceeding_type.hint": "Determines which submission templates show up on this proceeding.",
    "projects.field.our_side": "We represent",
    "projects.field.our_side.hint": "Pre-selects the perspective chip in the Fristenrechner Determinator. Always overridable from there.",
    "projects.field.our_side.unset": "Unknown / not set",
    "projects.field.our_side.claimant": "Claimant side",
    "projects.field.our_side.defendant": "Defendant side",
    "projects.field.our_side.applicant": "Applicant",
    "projects.field.our_side.appellant": "Appellant",
    "projects.field.our_side.respondent": "Respondent",
    "projects.field.our_side.third_party": "Third Party",
    "projects.field.our_side.other": "Other party",
    "projects.field.our_side.court": "Court / tribunal",
    "projects.field.our_side.both": "Both sides",
    "projects.field.our_side.none": "—",
    "projects.field.client_role": "Client Role",
    "projects.field.client_role.hint": "Pre-selects the perspective chip in the Fristenrechner Determinator: Active → claimant side, Reactive → defendant side. Always overridable from there.",
    "projects.field.client_role.unset": "Unknown",
    "projects.field.client_role.group.active": "Active (we initiate)",
    "projects.field.client_role.group.reactive": "Reactive (we defend)",
    "projects.field.client_role.group.other": "Third Party / Other",
    "projects.field.client_role.claimant": "Claimant side",
    "projects.field.client_role.applicant": "Applicant",
    "projects.field.client_role.appellant": "Appellant",
    "projects.field.client_role.defendant": "Defendant side",
    "projects.field.client_role.respondent": "Respondent",
    "projects.field.client_role.third_party": "Third Party",
    "projects.field.client_role.other": "Other party",
    "projects.field.opponent_code": "Opponent code",
    "projects.field.opponent_code.placeholder": "e.g. OPNT",
    "projects.field.opponent_code.hint": "Short slug for the opposing party (uppercase letters, digits, dashes, max 16 chars). Used as the middle segment in auto-derived project codes (e.g. EXMPL.OPNT.567.INF.CFI).",
    "projects.field.status": "Status",
    "projects.error.title_required": "Title required",
    "projects.detail.edit.type_change_warning.title": "These fields will be cleared:",
    "projects.detail.title": "Project \u2014 Paliad",
    "projects.detail.back": "\u2190 Back to overview",
    "projects.detail.loading": "Loading\u2026",
    "projects.detail.notfound": "Project not found or no access.",
    "projects.detail.smarttimeline.open_chart": "View as chart \u2197",
    "projects.chart.title": "Project Chart \u2014 Paliad",
    "projects.chart.back": "\u2190 Back to Activity",
    "projects.chart.loading": "Loading\u2026",
    "projects.chart.notfound": "Project not found or no access.",
    "projects.chart.error.mount": "Chart could not be initialised.",
    "projects.chart.control.layout.horizontal": "Layout: horizontal",
    "projects.chart.control.columns.auto": "Columns: auto",
    "projects.chart.control.density.standard": "Density: standard",
    "projects.chart.control.palette.default": "Palette: default",
    "projects.chart.control.export.soon": "Export \u2193 (Slice 2)",
    "projects.chart.control.palette.label": "Palette:",
    "projects.chart.palette.default": "Default",
    "projects.chart.palette.kind_coded": "By event kind",
    "projects.chart.palette.track_coded": "By track",
    "projects.chart.palette.high_contrast": "High contrast",
    "projects.chart.palette.print": "Print (B/W)",
    "projects.chart.control.density.label": "Density:",
    "projects.chart.density.compact": "Compact",
    "projects.chart.density.standard": "Standard",
    "projects.chart.density.spacious": "Spacious",
    "projects.chart.control.range.label": "Range:",
    "projects.chart.range.1y": "1 year",
    "projects.chart.range.2y": "2 years",
    "projects.chart.range.all": "Show all",
    "projects.chart.range.custom": "Custom range…",
    "projects.chart.range.from": "From:",
    "projects.chart.range.to": "To:",
    "projects.chart.permalink.copy": "🔗 Copy link",
    "projects.chart.permalink.title": "Copy the URL with all filters to clipboard",
    "nav.context.project_chart": "View as chart",
    "projects.chart.export.menu": "⇓ Export",
    "projects.chart.export.svg": "SVG (vector graphic)",
    "projects.chart.export.png": "PNG (raster, 2× HiDPI)",
    "projects.chart.export.print": "PDF (print)",
    "projects.chart.export.csv": "CSV (Excel table)",
    "projects.chart.export.json": "JSON (raw data)",
    "projects.chart.export.ics": "iCal (.ics — Outlook / Apple)",
    "projects.detail.edit": "Edit",
    "projects.detail.edit.modal.title": "Edit project",
    "projects.detail.save": "Save",
    "projects.detail.tab.verlauf": "Activity",
    "projects.detail.tab.team": "Team",
    "projects.detail.tab.kinder": "Project Tree",
    "projects.detail.tab.parteien": "Parties",
    "projects.detail.tab.fristen": "Deadlines",
    "projects.detail.tab.termine": "Appointments",
    "projects.detail.tab.notizen": "Notes",
    "projects.detail.tab.checklisten": "Checklists",
    "projects.detail.tab.submissions": "Submissions",
    "projects.detail.tab.settings": "Settings",
    "projects.detail.export.button": "Export data",
    "projects.detail.export.tooltip": "Download this project's data (including sub-projects) as Excel + JSON + CSV.",
    "projects.detail.settings.export.heading": "Export data",
    "projects.detail.settings.export.description": "Download all data for this project (including sub-projects) as an Excel + JSON + CSV archive.",
    "projects.detail.settings.archive.heading": "Archive project",
    "projects.detail.settings.archive.description": "Archiving happens in the edit dialog (danger zone).",
    "projects.detail.settings.archive.cta": "Open edit dialog",
    "projects.detail.submissions.empty": "No submission templates are configured yet.",
    "projects.detail.submissions.empty.no_proceeding": "No proceeding type is set for this project yet — the catalog below still lists every template.",
    "projects.detail.submissions.empty.no_proceeding.cta": "Edit project",
    "projects.detail.submissions.col.name": "Submission",
    "projects.detail.submissions.col.party": "Party",
    "projects.detail.submissions.col.source": "Legal basis",
    "projects.detail.submissions.col.action": "",
    "projects.detail.submissions.action.generate": "Generate",
    "projects.detail.submissions.action.no_template": "No template",
    "projects.detail.submissions.action.edit": "Edit",
    "projects.detail.submissions.hint": "Submissions are generated as .docx directly from the project. Edit, print, file.",
    // t-paliad-238 — dedicated draft editor page.
    "submissions.draft.title": "Edit submission — Paliad",
    "submissions.draft.back": "← Back to project",
    "submissions.draft.loading": "Loading…",
    "submissions.draft.notfound": "Submission not found or insufficient access.",
    "submissions.draft.action.export": "Export as .docx",
    "submissions.draft.action.new": "+ New draft",
    "submissions.draft.action.delete": "Delete",
    "submissions.draft.switcher.label": "Draft",
    "submissions.draft.name.placeholder": "Name of this draft",
    "submissions.draft.preview.title": "Preview",
    // t-paliad-276 — DE/EN language toggle on the draft editor.
    "submissions.draft.language": "Language",
    "submissions.draft.language.de": "DE",
    "submissions.draft.language.en": "EN",
    "submissions.draft.language.fallback_notice": "Fallback: universal skeleton (no language-matched template).",
    // t-paliad-354 — filename keyword (leads the exported document name).
    "submissions.draft.keyword.label": "Keyword (filename)",
    "submissions.draft.keyword.placeholder": "Auto-derived from the submission type",
    "submissions.draft.keyword.hint": "Leads the filename: <date> <keyword> (<case number>).",
    "submissions.draft.preview.hint": "Read-only preview — final formatting in Word.",
    // t-paliad-277 — import-from-project + party-picker.
    "submissions.draft.import.button": "Import from project",
    "submissions.draft.parties.title": "Parties",
    "submissions.draft.parties.hint": "Pick the parties mentioned in this submission, or add more per side.",
    // t-paliad-313 (m/paliad#141) Composer Slice A — base picker + section list.
    "submissions.draft.base.label": "Template base",
    "submissions.draft.base.hint": "Drives fonts, letterhead, and section defaults.",
    "submissions.draft.sections.title": "Sections",
    "submissions.draft.sections.hint": "Edit per section — autosaves after 500ms. Final layout in Word.",
    // t-paliad-349 (m/paliad#157) docforge slice 6 — template authoring page.
    "templates.authoring.title": "Templates — Paliad",
    "templates.authoring.heading": "Templates",
    "templates.authoring.intro": "Upload a Word template, highlight spots and insert variables.",
    "templates.authoring.upload.title": "Upload a new template",
    "templates.authoring.upload.file": "Word file (.docx)",
    "templates.authoring.upload.name_de": "Name (DE)",
    "templates.authoring.upload.name_en": "Name (EN)",
    "templates.authoring.upload.firm": "Firm (optional)",
    "templates.authoring.upload.submit": "Upload",
    "templates.authoring.list.title": "Existing templates",
    "templates.authoring.workspace.hint": "Highlight text, then pick a variable to place a placeholder.",
    "templates.authoring.slots.title": "Placeholders",
    // t-paliad-315 (m/paliad#141) Composer Slice C — building blocks admin.
    "admin.building_blocks.title": "Building blocks — Paliad",
    "admin.building_blocks.heading": "Building blocks",
    "admin.building_blocks.subtitle": "Reusable text snippets for Composer sections.",
    "admin.building_blocks.loading": "Loading…",
    "admin.building_blocks.action.new": "+ New block",
    "admin.building_blocks.editor.empty": "Pick a block from the list — or create a new one.",
    // t-paliad-240 — global submissions drafts index page.
    "submissions.index.title": "Submissions — Paliad",
    "submissions.index.heading": "Submissions",
    "submissions.index.subtitle": "Your submission drafts across every visible project.",
    "submissions.index.loading": "Loading…",
    "submissions.index.empty": "No drafts yet. Start a new draft — with or without a project.",
    "submissions.index.empty.cta": "+ New draft",
    "submissions.index.error": "Could not load submissions.",
    "submissions.index.col.project": "Project",
    "submissions.index.col.submission": "Submission",
    "submissions.index.col.draft": "Draft",
    "submissions.index.col.updated": "Last updated",
    "submissions.index.action.new": "+ New draft",
    "submissions.new.title": "New submission — Paliad",
    "submissions.new.back": "← Back to drafts",
    "submissions.new.heading": "New submission",
    "submissions.new.subtitle": "Pick a template. Optionally bind it to a project — otherwise all variables are filled manually.",
    "submissions.new.search.placeholder": "Search by name, code or statute…",
    "submissions.new.loading": "Loading…",
    "submissions.new.error": "Could not load catalog.",
    "submissions.new.col.name": "Submission",
    "submissions.new.col.party": "Party",
    "submissions.new.col.source": "Legal source",
    "submissions.new.col.actions": "Start draft",
    "submissions.new.empty.filtered": "No submissions match the filters. Reset them to see the full catalog.",
    "submissions.new.picker.title": "Pick a project",
    "submissions.new.picker.placeholder": "Search project (title or reference)…",
    "submissions.new.picker.loading": "Loading projects…",
    "submissions.new.picker.empty": "No visible projects.",
    "projects.detail.verlauf.empty": "No events recorded yet.",
    "projects.detail.verlauf.loadMore": "Load more",
    "projects.detail.smarttimeline.empty": "No events captured yet.",
    "projects.detail.smarttimeline.today": "Today",
    "projects.detail.smarttimeline.section.past": "Past",
    "projects.detail.smarttimeline.section.future": "Future",
    "projects.detail.smarttimeline.section.undated": "Undated",
    "projects.detail.smarttimeline.kind.deadline": "Deadline",
    "projects.detail.smarttimeline.kind.appointment": "Appointment",
    "projects.detail.smarttimeline.kind.milestone": "Milestone",
    "projects.detail.smarttimeline.kind.projected": "Predicted",
    "projects.detail.smarttimeline.status.done": "Done",
    "projects.detail.smarttimeline.status.open": "Open",
    "projects.detail.smarttimeline.status.overdue": "Overdue",
    "projects.detail.smarttimeline.status.court_set": "Court-set date",
    "projects.detail.smarttimeline.status.predicted": "Predicted",
    "projects.detail.smarttimeline.status.off_script": "Custom",
    "projects.detail.smarttimeline.audit.toggle.show": "Show audit log",
    "projects.detail.smarttimeline.audit.toggle.hide": "Timeline only",
    "projects.detail.smarttimeline.add.cta": "+ Entry",
    "projects.detail.smarttimeline.add.modal.title": "New SmartTimeline entry",
    "projects.detail.smarttimeline.add.choice.deadline": "Add a deadline",
    "projects.detail.smarttimeline.add.choice.appointment": "Add an appointment",
    "projects.detail.smarttimeline.add.choice.counterclaim": "Counterclaim (CCR)",
    "projects.detail.smarttimeline.add.choice.amend": "Application to amend (R.30)",
    "projects.detail.smarttimeline.add.choice.milestone": "Custom milestone",
    "projects.detail.smarttimeline.add.choice.disabled": "Coming in Slice 3",
    "projects.detail.smarttimeline.add.cancel": "Cancel",
    "projects.detail.smarttimeline.add.submit": "Save",
    "projects.detail.smarttimeline.milestone.title": "Title",
    "projects.detail.smarttimeline.milestone.date": "Date (optional)",
    "projects.detail.smarttimeline.milestone.description": "Description (optional)",
    "projects.detail.smarttimeline.error.title_required": "Please enter a title.",
    "projects.detail.smarttimeline.error.generic": "Could not save the entry.",
    "projects.detail.smarttimeline.status.predicted_overdue": "Overdue (predicted)",
    "projects.detail.smarttimeline.lookahead.more": "+ Show more",
    "projects.detail.smarttimeline.lookahead.less": "− Show less",
    "projects.detail.smarttimeline.depends_on.prefix": "Follows from",
    "projects.detail.smarttimeline.depends_on.date_open": "Date open",
    "projects.detail.smarttimeline.depends_on.show_path": "Show path",
    "projects.detail.smarttimeline.depends_on.hide_path": "Hide path",
    "projects.detail.smarttimeline.depends_on.path_hint": "Click the parent row to see its dependency.",
    "projects.detail.smarttimeline.anchor.set": "Set date",
    "projects.detail.smarttimeline.anchor.save": "Save",
    "projects.detail.smarttimeline.anchor.cancel": "Cancel",
    "projects.detail.smarttimeline.anchor.saving": "Saving…",
    "projects.detail.smarttimeline.anchor.saved": "Saved.",
    "projects.detail.smarttimeline.anchor.error": "Could not set the date.",
    "projects.detail.smarttimeline.anchor.invalid_date": "Invalid date (YYYY-MM-DD).",
    "projects.detail.smarttimeline.track.label": "Track",
    "projects.detail.smarttimeline.track.both": "Both",
    "projects.detail.smarttimeline.track.only.parent": "Main proceeding only",
    "projects.detail.smarttimeline.track.only.counterclaim": "Counterclaim only",
    "projects.detail.smarttimeline.track.only.parent_context": "Main proceeding only (context)",
    "projects.detail.smarttimeline.track.header.parent": "Main proceeding",
    "projects.detail.smarttimeline.track.header.counterclaim": "Counterclaim (CCR)",
    "projects.detail.smarttimeline.track.header.parent_context": "Main proceeding (context)",
    "projects.detail.smarttimeline.counterclaim.procedure": "Proceeding type",
    "projects.detail.smarttimeline.counterclaim.title": "Title (optional)",
    "projects.detail.smarttimeline.counterclaim.case_number": "CCR case number (optional)",
    "projects.detail.smarttimeline.counterclaim.flip_override": "Do NOT flip our side („Stimmt nicht?”)",
    "projects.detail.smarttimeline.counterclaim.flip_hint": "In the standard case (CCR on validity) our side flips (claimant ↔ defendant). Enable for the R.49.2.b CCI edge case.",
    "projects.detail.smarttimeline.counterclaim.submit": "Create counterclaim",
    "projects.detail.smarttimeline.counterclaim.saving": "Creating counterclaim…",
    "projects.detail.smarttimeline.lane.empty": "No entries in this lane.",
    "projects.detail.smarttimeline.lane.filter.label": "Lanes",
    "projects.detail.smarttimeline.lane.filter.all": "All",
    "projects.detail.smarttimeline.client.toggle.lanes": "Timeline view",
    "projects.detail.smarttimeline.client.toggle.matter_list": "Matter list",
    "projects.detail.smarttimeline.client.matter_list.heading": "Matters of this client",
    "projects.detail.smarttimeline.client.matter_list.hint": "Click a matter to open its detailed timeline, or switch to „Timeline view“ above.",
    "projects.detail.smarttimeline.client.matter_list.empty": "No matters yet.",
    "projects.detail.smarttimeline.milestone.bubble_up": "Show on parent matters",
    "projects.detail.smarttimeline.milestone.bubble_up_hint": "When checked, this milestone surfaces on patent, litigation, and client SmartTimelines.",
    "projects.detail.team.form.user": "User",
    "projects.detail.team.form.role": "Role",
    "projects.detail.team.form.responsibility": "Project role",
    "projects.detail.team.form.profession.label": "Profession",
    "projects.detail.team.form.profession.none": "No profession set — cannot grant 4-eye approvals.",
    "projects.detail.team.form.cancel": "Cancel",
    "projects.detail.team.form.submit": "Add",
    "projects.detail.team.col.name": "Name",
    "projects.detail.team.col.role": "Role",
    "projects.detail.team.col.profession": "Profession",
    "projects.detail.team.col.responsibility": "Project role",
    "projects.detail.team.col.source": "Source",
    "projects.detail.kinder.add": "Create sub-project",
    "projects.detail.kinder.empty": "No sub-projects.",
    "projects.detail.parteien.add": "Add party",
    "projects.detail.parteien.form.name": "Name",
    "projects.detail.parteien.form.role": "Role",
    "projects.detail.parteien.form.rep": "Representative (optional)",
    "projects.detail.parteien.form.cancel": "Cancel",
    "projects.detail.parteien.form.submit": "Add",
    "projects.detail.parteien.role.claimant": "Claimant",
    "projects.detail.parteien.role.defendant": "Defendant",
    "projects.detail.parteien.role.thirdparty": "Third-party / intervenor",
    "projects.detail.parteien.col.name": "Name",
    "projects.detail.parteien.col.role": "Role",
    "projects.detail.parteien.col.rep": "Representative",
    "projects.detail.parteien.empty": "No parties recorded yet.",
    "projects.detail.deadlines.add": "Add deadline",
    "projects.detail.deadlines.empty": "No deadlines recorded for this project.",
    "projects.detail.appointments.add": "Add appointment",
    "projects.detail.appointments.form.cancel": "Cancel",
    "projects.detail.appointments.form.submit": "Add",
    "projects.detail.appointments.empty": "No appointments recorded for this project.",
    "projects.detail.checklisten.empty": "No checklist instances recorded for this project.",
    "projects.detail.checklisten.col.template": "Template",
    "projects.detail.checklisten.col.name": "Name",
    "projects.detail.checklisten.col.progress": "Progress",
    "projects.detail.checklisten.col.created": "Created",
    "projects.detail.checklisten.hint.prefix": "Templates are created and edited on the ",
    "projects.detail.checklisten.hint.link": "Checklists",
    "projects.detail.checklisten.hint.suffix": " page.",
    "projects.detail.checklisten.add": "Add checklist",
    "projects.detail.checklisten.add.search": "Search template…",
    "projects.detail.checklisten.add.empty_pick": "No matching templates.",
    "projects.detail.checklisten.add.created": "Checklist added.",
    "projects.detail.checklisten.add.error": "Could not create checklist.",
    "projects.detail.delete": "Archive project",
    "projects.detail.delete.confirm.title": "Archive project?",
    "projects.detail.delete.confirm.body": "The project will be archived. It cannot be directly restored.",
    "projects.detail.delete.confirm.cancel": "Cancel",
    "projects.detail.delete.confirm.ok": "Archive",
    "projects.type.client": "Client",
    "projects.type.litigation": "Litigation",
    "projects.type.patent": "Patent",
    "projects.type.case": "Case",
    "projects.type.project": "Project",
    "projects.type.other": "Other",
    "projects.team.role.lead": "Lead",
    "projects.team.role.associate": "Associate",
    "projects.team.role.pa": "PA",
    "projects.team.role.of_counsel": "Of Counsel",
    "projects.team.role.local_counsel": "Local Counsel",
    "projects.team.role.expert": "Expert",
    "projects.team.role.observer": "Observer",
    "projects.team.responsibility.admin": "Admin",
    "projects.team.responsibility.admin.hint": "Can manage team and roles on this project and its sub-projects",
    "projects.team.responsibility.lead": "Lead",
    "projects.team.responsibility.member": "Member",
    "projects.team.responsibility.observer": "Observer",
    "projects.team.responsibility.external": "External",
    "projects.team.error.last_admin": "At least one admin must remain on this project or an ancestor.",
    "projects.team.error.forbidden": "This action is not permitted.",
    "projects.team.error.generic": "Action failed.",
    "projects.team.profession.partner": "Partner",
    "projects.team.profession.of_counsel": "Of Counsel",
    "projects.team.profession.associate": "Associate",
    "projects.team.profession.senior_pa": "Senior PA",
    "projects.team.profession.pa": "PA",
    "projects.team.profession.paralegal": "Paralegal",
    "projects.team.profession.none": "(external)",
    "projects.team.profession.hint": "Profession — managed in firm profile",
    "projects.team.profession.none.hint": "No profession set — no 4-eye authority",
    "projects.team.direct": "direct",
    "projects.team.inherited.hint": "Inherited from ancestor",
    "projects.detail.team.add": "Add member",
    "projects.detail.team.remove": "Remove",
    "projects.detail.team.confirm_remove": "Remove member?",
    "projects.detail.team.empty": "No team members yet.",
    "projects.detail.team.error.user_required": "Select a user",
    "projects.detail.team.invite.hint": "User not found?",
    "projects.detail.team.invite.hint_email": "No one with that email.",
    "projects.detail.team.invite.cta": "Invite",
    // t-paliad-231 — pure-client mailto: button on the Team tab.
    "projects.team.mailto.label": "Mail to selection",
    "projects.team.mailto.empty": "Select at least one member",
    "projects.team.mailto.count": "{n} selected",
    "projects.team.mailto.select_all": "Select all visible",
    "projects.team.mailto.select_row": "Select member",
    "projects.view.tree": "Tree view",
    "projects.tree.toggle": "Expand / collapse",
    "projects.tree.loading": "Loading tree…",
    "projects.tree.error": "Failed to load tree view.",
    "projects.tree.deadlines.overdue": "Overdue deadlines",
    "projects.tree.deadlines.open": "Open deadlines",
    "projects.tree.deadlines.subtree.tooltip": "Includes sub-projects",
    "projects.tree.deadlines.direct.tooltip": "This project only",
    "projects.tree.pin": "Pin",
    "projects.tree.unpin": "Unpin",
    "projects.tree.inherited.context": "Visible because of a sub-project",
    "projects.toolbar.search.placeholder": "Search — title, reference, ClientMatter…",
    "projects.toolbar.view.tree": "Tree",
    "projects.toolbar.view.cards": "Cards",
    "projects.toolbar.view.flat": "List",
    "projects.toolbar.subtree_counts": "Count sub-projects too",
    "projects.chip.all": "All",
    "projects.chip.mine": "Mine",
    "projects.chip.pinned": "Pinned",
    "projects.chip.status": "Status",
    "projects.chip.type": "Type",
    "projects.chip.has_open_deadlines": "With open deadlines",
    "projects.chip.status.active": "Active",
    "projects.chip.status.archived": "Archived",
    "projects.chip.status.closed": "Closed",
    "projects.chip.type.client": "Client",
    "projects.chip.type.litigation": "Litigation",
    "projects.chip.type.patent": "Patent",
    "projects.chip.type.case": "Case",
    "projects.chip.type.project": "Project",
    "projects.chip.type.other": "Other",
    "projects.chip.multi.none": "Nothing selected",
    "projects.chip.multi.count": "{n} selected",
    "projects.empty.filtered.action": "Reset filters",
    "projects.search.match.self": "Match",
    "projects.search.match.ancestor": "Parent of a match",
    "projects.search.match.descendant": "Child of a match",
    "projects.cards.next_events": "Upcoming",
    "projects.cards.recent_verlauf": "Recent",
    "projects.cards.no_next_events": "— nothing upcoming",
    "projects.cards.no_recent": "— nothing recent",
    "projects.cards.team": "Team",
    "projects.cards.deadline_open": "open",
    "projects.cards.deadline_overdue": "overdue",
    "projects.cards.show_all_levels": "Show all levels",
    "projects.cards.show_all_levels.hint": "Include Clients + Litigations as their own cards",
    "projects.cards.layout.label": "View",
    "projects.cards.layout.new": "New view",
    "projects.cards.layout.edit": "Edit",
    "projects.cards.layout.save": "Save",
    "projects.cards.layout.discard": "Discard",
    "projects.cards.layout.set_default": "Set as default",
    "projects.cards.layout.delete": "Delete",
    "projects.cards.layout.rename": "Rename",
    "projects.cards.layout.is_default": "Default",
    "projects.cards.layout.new.prompt": "Name of the new view",
    "projects.cards.layout.delete.confirm": "Really delete this view?",
    "projects.cards.layout.delete.default_blocked": "Cannot delete the active default view — switch defaults first.",
    "projects.cards.layout.fact.title-row": "Title row",
    "projects.cards.layout.fact.type-chip": "Type badge",
    "projects.cards.layout.fact.status-chip": "Status badge",
    "projects.cards.layout.fact.client-matter": "ClientMatter",
    "projects.cards.layout.fact.parent-path": "Parent path",
    "projects.cards.layout.fact.deadline-counts": "Deadline counts",
    "projects.cards.layout.fact.next-events": "Upcoming events",
    "projects.cards.layout.fact.recent-verlauf": "Recent entries",
    "projects.cards.layout.fact.team-chips": "Team chips",
    "projects.cards.layout.fact.reference": "Reference",
    "projects.cards.layout.fact.last-activity-at": "Last activity",
    "projects.cards.layout.density": "Density",
    "projects.cards.layout.density.compact": "Compact",
    "projects.cards.layout.density.roomy": "Roomy",
    "projects.cards.layout.grid": "Columns",
    "projects.cards.layout.grid.auto": "Auto",
    "projects.cards.layout.grid.2": "2",
    "projects.cards.layout.grid.3": "3",
    "projects.cards.layout.grid.4": "4",
    "projects.cards.layout.fact.toggle.hide": "Hide",
    "projects.cards.layout.fact.toggle.show": "Show",
    "projects.cards.layout.fact.move_up": "Move up",
    "projects.cards.layout.fact.move_down": "Move down",
    "projects.cards.layout.fact.count": "Count",
    "projects.cards.event.kind.deadline": "Deadline",
    "projects.cards.event.kind.appointment": "Appointment",
    "projects.cards.event.kind.project_event": "Verlauf",
    "projects.cards.empty": "No projects to show.",
    "projects.detail.clientmatter.inherited": "Inherited from parent",
    "einstellungen.profil.email": "Email",
    "einstellungen.profil.email.hint": "Email cannot be changed.",
    "einstellungen.profil.display_name": "Display name",
    "einstellungen.profil.display_name.placeholder": "First and last name",
    "einstellungen.profil.office": "Office",
    "einstellungen.profil.job_title": "Job title",
    "einstellungen.profil.job_title.placeholder": "e.g. Associate, Partner, Patent Attorney",
    "einstellungen.profil.lang": "Language",
    "einstellungen.profil.lang.de": "Deutsch",
    "einstellungen.profil.lang.en": "English",
    "einstellungen.profil.lang.hint": "Used for the UI and notification emails.",
    "einstellungen.profil.error.display_name": "Please enter a display name.",
    "einstellungen.profil.error.office": "Please select an office.",
    "einstellungen.profil.error.job_title": "Please enter a job title.",
    "einstellungen.prefs.reminders.heading": "Deadline reminders",
    "einstellungen.prefs.reminders.hint": "Paliad emails you when deadlines approach.",
    "einstellungen.prefs.reminders.master": "Deadline reminders enabled",
    "einstellungen.prefs.reminders.overdue": "Overdue deadlines",
    "einstellungen.prefs.reminders.due_today": "Due today",
    "einstellungen.prefs.reminders.due_warning": "Heads-up (N days ahead)",
    "einstellungen.prefs.times.heading": "Send times",
    "einstellungen.prefs.times.hint": "Reminders are sent at the chosen time in your timezone.",
    "einstellungen.prefs.times.morning": "Morning slot",
    "einstellungen.prefs.times.morning.hint": "Bundled email with overdue, due-today and upcoming deadlines.",
    "einstellungen.prefs.times.evening": "Evening slot (escalation)",
    "einstellungen.prefs.times.evening.hint": "Urgent reminder for deadlines still open today.",
    "einstellungen.prefs.times.timezone": "Timezone",
    "einstellungen.prefs.times.timezone.hint": "IANA timezone name (e.g. Europe/Berlin, Europe/London).",
    "einstellungen.prefs.times.error.required": "Please choose both reminder times.",
    "einstellungen.prefs.warning_offset.label": "Heads-up (days ahead)",
    "einstellungen.prefs.warning_offset.hint": "We'll remind you this many days before each deadline.",
    "einstellungen.prefs.warning_offset.error": "Heads-up must be between 1 and 30 days.",
    "einstellungen.prefs.escalation.heading": "Escalation contact",
    "einstellungen.prefs.escalation.hint": "Who else should be notified for DRINGEND-escalations in the evening slot? Default: global admins.",
    "einstellungen.prefs.escalation.default_option": "— Default (global admins) —",

    // Invitation modal (sidebar)
    "invite.button": "Invite a colleague",
    "invite.modal.title": "Invite a colleague to Paliad",
    "invite.modal.body": `Send an invitation to an ${FIRM} email address. The recipient will receive a registration link.`,
    "invite.modal.email": "Email address",
    "invite.modal.message": "Personal message (optional)",
    "invite.modal.message.placeholder": "Hi, I'm using Paliad for matter management \u2014 take a look.",
    "invite.modal.cancel": "Cancel",
    "invite.modal.send": "Send invitation",

    "appointments.list.title": "Appointments \u2014 Paliad",
    "appointments.list.heading": "Appointments",
    "appointments.list.subtitle": "Hearings, meetings, consultations \u2014 personal or matter-linked.",
    "appointments.list.new": "New appointment",
    "appointments.summary.today": "Today",
    "appointments.summary.thisweek": "This week",
    "appointments.summary.later": "Later",
    "appointments.filter.type": "Type",
    "appointments.filter.type.all": "All types",
    "appointments.filter.akte": "Matter",
    "appointments.filter.akte.all": "All matters & personal",
    "appointments.filter.akte.personal": "Personal only",
    "appointments.filter.from": "From",
    "appointments.filter.to": "To",
    "appointments.col.start": "Start",
    "appointments.col.title": "Title",
    "appointments.col.akte": "Matter",
    "appointments.col.location": "Location",
    "appointments.col.type": "Type",
    "appointments.empty.title": "No appointments yet",
    "appointments.empty.hint": "Once appointments are created they will show up here.",
    "appointments.empty.filtered": "No appointments match these filters.",
    "appointments.unavailable": "Appointments unavailable \u2014 please contact your administrator.",
    "appointments.personal": "Personal",
    "appointments.type.hearing": "Hearing",
    "appointments.type.meeting": "Meeting",
    "appointments.type.consultation": "Consultation",
    "appointments.type.deadline_hearing": "Deadline hearing",
    "appointments.neu.title": "New appointment \u2014 Paliad",
    "appointments.neu.heading": "New appointment",
    "appointments.neu.subtitle": "Personal or matter-linked. With CalDAV sync enabled, the appointment also appears in your external calendar.",
    "appointments.neu.back": "\u2190 Back to overview",
    "appointments.neu.cancel": "Cancel",
    "appointments.neu.submit": "Create appointment",
    "appointments.field.title": "Title",
    "appointments.field.title.placeholder": "e.g. Oral hearing",
    "appointments.field.start": "Start",
    "appointments.field.end": "End (optional)",
    "appointments.field.type": "Type",
    "appointments.field.type.none": "No type",
    "appointments.field.akte": "Matter (optional)",
    "appointments.field.akte.none": "Personal appointment",
    "appointments.field.location": "Location (optional)",
    "appointments.field.location.placeholder": "e.g. UPC LD Munich",
    "appointments.field.description": "Description (optional)",
    "appointments.field.description.placeholder": "Notes, agenda, next steps\u2026",
    "appointments.error.required": "Title and start are required.",
    "appointments.error.generic": "Save failed. Please try again later.",
    "appointments.detail.title": "Appointment \u2014 Paliad",
    "appointments.detail.back": "\u2190 Back to overview",
    "appointments.detail.loading": "Loading\u2026",
    "appointments.detail.notfound": "Appointment not found",
    "appointments.detail.notfound.hint": "The appointment doesn't exist or you don't have permission.",
    "appointments.detail.akte": "Matter:",
    "appointments.detail.save": "Save changes",
    "appointments.detail.saved": "Saved.",
    "appointments.detail.delete": "Delete appointment",
    "appointments.detail.delete.confirm": "Really delete this appointment?",

    // t-paliad-110 \u2014 unified Events page (rendered on /deadlines + /appointments).
    "events.toggle.deadline": "Deadlines",
    "events.toggle.appointment": "Appointments",
    "events.toggle.all": "Both",
    "events.filter.status.all": "All (incl. past)",
    "events.filter.status.upcoming": "From today",
    "events.summary.later": "Later",
    "events.col.date": "Date",
    "events.col.location": "Location",
    "events.col.appointment_type": "Appointment type",
    "events.row.type.deadline": "Deadline",
    "events.row.type.appointment": "Appointment",
    "events.empty.title": "Nothing yet",
    "events.empty.hint": "Once deadlines or appointments are added, they appear here.",
    "events.empty.filtered": "No entries match these filters.",
    "events.unavailable": "Deadline / appointment management currently unavailable \u2014 please contact your administrator.",
    "events.view.cards": "Cards",
    "events.view.list": "List",
    "events.view.calendar": "Calendar",
    "caldav.title": "CalDAV sync \u2014 Paliad",
    "caldav.heading": "CalDAV sync",
    "caldav.subtitle": "Sync your Paliad appointments with your external calendar (Nextcloud, iCloud, Outlook, mailcow\u2026). The password is stored encrypted and never returned.",
    "caldav.disabled": "CalDAV sync currently unavailable \u2014 please contact your administrator.",
    "caldav.never": "Never",
    "caldav.field.url": "CalDAV server URL",
    "caldav.field.url.placeholder": "https://cloud.example.com/remote.php/dav/calendars/user/personal/",
    "caldav.field.url.hint": "Full URL to your calendar (including path).",
    "caldav.field.username": "Username",
    "caldav.field.password": "Password / app token",
    "caldav.field.password.hint": "Leave blank when a configuration exists to keep the stored password.",
    "caldav.field.calendar_path": "Calendar path (optional)",
    "caldav.field.calendar_path.placeholder": "/calendars/user/personal/",
    "caldav.field.calendar_path.hint": "If the URL only points at the server, set the calendar path here.",
    "caldav.field.enabled": "Sync enabled",
    "caldav.test": "Test connection",
    "caldav.test.ok": "Connection successful.",
    "caldav.test.fail": "Connection failed",
    "caldav.save": "Save",
    "caldav.saved": "Configuration saved.",
    "caldav.delete": "Delete configuration",
    "caldav.delete.confirm": "Really delete? The stored password will be removed permanently.",
    "caldav.delete.done": "Configuration deleted.",
    "caldav.error.required": "URL and username are required.",
    "caldav.error.password_required": "Password is required on first save.",
    "caldav.error.generic": "Save failed.",
    "caldav.status.last_sync": "Last sync:",
    "caldav.status.last_error": "Last error:",
    "caldav.log.heading": "Recent syncs",
    "caldav.log.col.time": "When",
    "caldav.log.col.pushed": "Pushed",
    "caldav.log.col.pulled": "Pulled",
    "caldav.log.col.duration": "Duration",
    "caldav.log.col.error": "Error",
    "caldav.log.empty": "No sync attempts recorded yet.",

    // CalDAV multi-calendar bindings (t-paliad-212 Slice 2b)
    "caldav.bindings.heading": "Calendars",
    "caldav.bindings.hint": "Connect multiple calendars to Paliad — one master for everything or separate calendars per project.",
    "caldav.bindings.add": "+ Add calendar",
    "caldav.bindings.empty": "No calendars configured yet.",
    "caldav.bindings.scope.all_visible": "Everything",
    "caldav.bindings.scope.personal_only": "Personal only",
    "caldav.bindings.scope.project": "Project",
    "caldav.bindings.card.enabled": "Enabled",
    "caldav.bindings.card.edit": "Edit",
    "caldav.bindings.card.remove": "Remove",
    "caldav.bindings.modal.add_title": "Add calendar",
    "caldav.bindings.modal.edit_title": "Edit calendar",
    "caldav.bindings.modal.source": "Calendar",
    "caldav.bindings.modal.source.loading": "Loading…",
    "caldav.bindings.modal.source.existing": "Pick existing calendar",
    "caldav.bindings.modal.source.create": "Create new calendar",
    "caldav.bindings.modal.source.custom": "Enter custom URL",
    "caldav.bindings.modal.source.degrade": "This provider doesn't allow creating calendars via CalDAV. Please create the calendar in your provider's UI and add it here by URL.",
    "caldav.bindings.modal.source.discover_failed": "Couldn't discover calendars — enter URL manually.",
    "caldav.bindings.modal.source.discover_empty": "No calendars found — enter URL manually.",
    "caldav.bindings.modal.display_name": "Display name (optional)",
    "caldav.bindings.modal.display_name.placeholder": "e.g. Project Acme v Bosch",
    "caldav.bindings.modal.scope": "Contents",
    "caldav.bindings.modal.scope.all_visible": "Everything I can see",
    "caldav.bindings.modal.scope.personal_only": "Personal appointments only",
    "caldav.bindings.modal.scope.project": "One project:",
    "caldav.bindings.modal.scope.project.loading": "Loading…",
    "caldav.bindings.modal.submit_add": "Add",
    "caldav.bindings.modal.submit_edit": "Save",
    "caldav.bindings.delete.confirm": "Remove this calendar? Its events will be deleted from the external calendar.",
    "caldav.bindings.delete.failed": "Removal failed — please try again later.",
    "caldav.bindings.error.scope": "Please pick a content scope.",
    "caldav.bindings.error.scope_project": "Please pick a project.",
    "caldav.bindings.error.path": "Please pick a calendar or enter a URL.",
    "caldav.bindings.error.create_name_required": "Please enter a display name.",
    "caldav.bindings.error.create_name_taken": "Name already in use — please pick a different display name.",
    "caldav.bindings.error.create_unsupported": "Your provider doesn't support creating calendars. Please use 'Enter custom URL' instead.",

    // Notizen (polymorphic notes — Phase I)
    "notes.section.title": "Notes",
    "notes.placeholder": "Add a note\u2026",
    "notes.shortcut.hint": "Ctrl+Enter (or \u2318+Enter) to save",
    "notes.submit": "Add",
    "notes.save": "Save",
    "notes.cancel": "Cancel",
    "notes.edit": "Edit",
    "notes.delete": "Delete",
    "notes.delete.confirm": "Really delete this note?",
    "notes.empty": "No notes yet.",
    "notes.edited": "edited",
    "notes.unknown_author": "Unknown",
    "notes.time.just_now": "just now",
    "notes.error.empty": "Note cannot be empty.",
    "notes.error.generic": "Action failed. Please try again.",

    // Agenda (t-paliad-030) — unified timeline across projects
    "agenda.title": "Agenda — Paliad",
    "agenda.heading": "Agenda",
    "agenda.subtitle": "Upcoming deadlines and appointments across all visible matters, grouped by day.",
    "agenda.unavailable": "Agenda is currently unavailable — please contact an administrator.",
    "agenda.loading": "Loading …",
    "agenda.filter.type": "View",
    "agenda.filter.both": "Both",
    "agenda.filter.deadlines": "Deadlines only",
    "agenda.filter.appointments": "Appointments only",
    "agenda.filter.range": "Range",
    "agenda.range.7": "7 days",
    "agenda.range.14": "14 days",
    "agenda.range.30": "30 days",
    "agenda.range.90": "90 days",
    "agenda.empty.title": "Nothing in this range",
    "agenda.empty.hint": "Nothing due — widen the range or create new deadlines or appointments.",
    "agenda.label.deadline": "Deadline",
    "agenda.label.appointment": "Appointment",
    "agenda.appointment_type.hearing": "Hearing",
    "agenda.appointment_type.meeting": "Meeting",
    "agenda.appointment_type.consultation": "Client meeting",
    "agenda.appointment_type.deadline_hearing": "Deadline hearing",
    "agenda.day.today": "Today",
    "agenda.day.tomorrow": "Tomorrow",
    "agenda.day.mo": "Mon",
    "agenda.day.di": "Tue",
    "agenda.day.mi": "Wed",
    "agenda.day.do": "Thu",
    "agenda.day.fr": "Fri",
    "agenda.day.sa": "Sat",
    "agenda.day.so": "Sun",
    "agenda.urgency.overdue": "Overdue",
    "agenda.urgency.today": "Today",
    "agenda.urgency.tomorrow": "Tomorrow",
    "agenda.urgency.this_week": "This week",
    "agenda.urgency.later": "Later",

    // Team directory (t-paliad-029)
    "team.title": "Team — Paliad",
    "team.heading": "Team",
    "team.subtitle": "All Paliad colleagues, grouped by office or partner unit.",
    "team.search.placeholder": "Search by name, role, office…",
    "team.group.office": "By office",
    "team.group.department": "By partner unit",
    "team.group.other": "Other",
    "team.filter.all": "All",
    "team.filter.role": "Role",
    "team.role.partner": "Partner",
    "team.role.counsel": "Counsel",
    "team.role.counsel_knowledge_lawyer": "Counsel Knowledge Lawyer",
    "team.role.senior_associate": "Senior Associate",
    "team.role.associate": "Associate",
    "team.role.junior_associate": "Junior Associate",
    "team.role.trainee": "Trainee",
    "team.role.pa": "PA",
    "team.role.paralegal": "Paralegal",
    "team.role.secretary": "Secretary",
    "team.empty": "No matches.",
    "team.dept.lead": "Lead",
    "team.dept.unassigned": "No partner unit",
    "team.partner_unit.unassigned": "No partner unit",
    // Project filter (t-paliad-147)
    "team.filter.project": "Project",
    "team.filter.project.all": "All projects",
    "team.filter.project.selected": "selected",
    "team.filter.project.clear": "Deselect all",
    // Click-to-select (t-paliad-223 #53).
    "team.selection.count": "{n} selected",
    "team.selection.clear": "Clear selection",
    "team.selection.send": "Email selection",
    "team.selection.select_all": "Select all visible",
    "team.selection.toggle_card": "Select contact",
    // Broadcast modal (t-paliad-147)
    "team.broadcast.button": "Email selection",
    "team.broadcast.title": "Email selection",
    "team.broadcast.recipients": "Recipients",
    "team.broadcast.show_all": "Show all",
    "team.broadcast.mailto.label": "Open in mail client",
    "team.broadcast.mailto.tooltip": "Opens your local mail client with every recipient prefilled in the To: line",
    "team.broadcast.template": "Template",
    "team.broadcast.template_optional": "optional",
    "team.broadcast.template_freeform": "Free-form",
    "team.broadcast.template.invitation": "Invitation",
    "team.broadcast.template.deadline_digest": "Deadline digest",
    "team.broadcast.subject": "Subject",
    "team.broadcast.body": "Message",
    "team.broadcast.body_placeholder": "Hi {{first_name}}, …",
    "team.broadcast.placeholders_hint": "Placeholders: {{name}}, {{first_name}}, {{role_on_project}}",
    "team.broadcast.markdown_hint": "Markdown supported: **bold**, *italic*, [link](https://...), - bullet.",
    "team.broadcast.send": "Send",
    "team.broadcast.sending": "Sending…",
    "team.broadcast.sent": "Sent",
    "team.broadcast.success": "{sent} of {total} emails sent ({failed} failed).",
    "team.broadcast.error.no_recipients": "No recipients selected.",
    "team.broadcast.error.too_many": "Recipient limit ({cap}) exceeded.",
    "team.broadcast.error.subject_required": "Subject is required.",
    "team.broadcast.error.body_required": "Message is required.",
    "common.close": "Close",
    // Admin broadcasts viewer (t-paliad-147)
    "admin.broadcasts.title": "Broadcasts — Paliad",
    "admin.broadcasts.heading": "Broadcasts",
    "admin.broadcasts.subtitle": "Sent bulk emails to team selections.",
    "admin.broadcasts.col.sent_at": "Sent",
    "admin.broadcasts.col.subject": "Subject",
    "admin.broadcasts.col.sender": "Sender",
    "admin.broadcasts.col.count": "Recipients",
    "admin.broadcasts.loading": "Loading…",
    "admin.broadcasts.empty": "No broadcasts sent yet.",
    "admin.broadcasts.detail.sent_by": "Sent by",
    "admin.broadcasts.detail.delivered": "delivered",
    "admin.broadcasts.detail.failed": "failed",
    "admin.broadcasts.detail.recipients": "Recipients",

    // t-paliad-146: Paliadin in-app AI buddy (PoC)
    "paliadin.title": "Paliadin — Paliad",
    "paliadin.heading": "✨ Paliadin",
    "paliadin.tagline": "I know your matters and Paliad's knowledge base.",
    "paliadin.empty": "What can I help you with?",
    "paliadin.starter.today": "What's on my plate today?",
    "paliadin.starter.week": "Which deadlines are due this week?",
    "paliadin.starter.concept": "Explain Klageerwiderung.",
    "paliadin.input.placeholder": "Ask Paliadin…",
    "paliadin.send": "Send",
    "paliadin.stop": "Stop",
    "paliadin.reset": "New conversation",
    "paliadin.error.local_only": "Paliadin only runs locally. This instance has no tmux/claude installed — start it locally via ./paliad.",
    "paliadin.error.mriver_unreachable": "mRiver is offline — Paliadin can't reach it. Wake mRiver, or run Paliadin locally with ./paliad.",
    "paliadin.error.shim_auth_failed": "Paliadin auth failed. Check the SSH key or authorized_keys on mRiver.",
    "paliadin.error.shim_error": "Paliadin error on mRiver. Check the tmux/claude pane.",
    "paliadin.error.timeout": "Paliadin didn't respond in time (60s). Try again.",
    "paliadin.error.connection_lost": "Connection lost.",
    "paliadin.error.upstream": "Send failed.",
    "paliadin.error.upstream_silence": "Paliadin went silent — closing the connection.",
    "paliadin.late.waiting": "Will fill in the response when it arrives …",
    "paliadin.late.checking": "Connection lost — Paliadin may still be thinking. Fetching fresh answer …",
    "paliadin.late.lost": "Answer couldn't be delivered — please ask again.",
    "paliadin.late.marker": "late",
    "paliadin.thinking": "Paliadin is thinking",
    "paliadin.thinking.seconds": "{seconds}s",
    "paliadin.widget.title": "Paliadin",
    "paliadin.widget.trigger": "Paliadin (Cmd+J)",
    "paliadin.widget.empty": "What can I help you with?",
    "paliadin.widget.input.placeholder": "Ask Paliadin...",
    "paliadin.widget.input.label": "Message to Paliadin",
    "paliadin.widget.send": "Send",
    "paliadin.widget.reset": "Reset conversation",
    "paliadin.widget.reset.confirm": "Reset the conversation here and on the server?",
    "paliadin.widget.fullscreen": "Fullscreen mode",
    "paliadin.widget.close": "Close",
    "paliadin.widget.context.on_page": "On this page",
    "approvals.agent.label": "Paliadin suggested this",
    "approvals.agent.byline": "Paliadin",
    "approvals.agent.suggestion_pending": "Suggestion awaiting your approval",
    "nav.admin.paliadin": "Paliadin Monitor",
    "admin.paliadin.title": "Paliadin Monitor — Paliad",
    "admin.paliadin.heading": "Paliadin Monitor",
    "admin.paliadin.subtitle": "How is Paliadin actually being used?",
    "admin.paliadin.total": "Total",
    "admin.paliadin.last7": "Last 7 days",
    "admin.paliadin.median_dur": "Median duration",
    "admin.paliadin.tool_rate": "Tool-use rate",
    "admin.paliadin.abandon_rate": "Abandon rate",
    "admin.paliadin.classifier_heading": "Question types",
    "admin.paliadin.daily_heading": "Daily usage",
    "admin.paliadin.top_heading": "Top queries",
    "admin.paliadin.recent_heading": "Recent queries",
    "admin.paliadin.col.prompt": "Query",
    "admin.paliadin.col.count": "Count",
    "admin.paliadin.col.started": "Time",
    "admin.paliadin.col.user": "User",
    "admin.paliadin.col.classifier": "Type",
    "admin.paliadin.col.response": "Answer",
    "admin.paliadin.col.tools": "Tools",
    "admin.paliadin.col.origin": "Page",
    "admin.paliadin.col.duration": "Duration",
    "admin.paliadin.loading": "Loading…",

    "common.forbidden": "Access denied.",
    "common.load_error": "Load error.",
    "common.loading": "Loading…",
    "partner_unit.heading": "My Partner Units",
    "partner_unit.subtitle": "Partner Units are structural units — separate from project teams. Membership is admin-managed.",
    "partner_unit.none": "You are not a member of any Partner Unit yet.",
    "partner_unit.members_label": "members",

    // Admin team management (t-paliad-050)
    "nav.group.admin": "Admin",
    "nav.admin.bereich": "Admin Area",
    "nav.admin.team": "Team Management",
    "admin.title": "Admin Area — Paliad",
    "admin.heading": "Admin Area",
    "admin.subtitle": "Tools for managing Paliad. Visible only to administrators.",
    "admin.section.available": "Available",
    "admin.section.planned": "Planned",
    "admin.coming_soon": "Coming soon",
    "admin.card.team.title": "Team Management",
    "admin.card.team.desc": "Create, edit and delete user accounts.",
    "admin.card.partner_units.title": "Partner Units",
    "admin.card.partner_units.desc": "Create structural partner units and assign members.",
    "admin.card.audit.title": "Audit Log",
    "admin.card.audit.desc": "Who changed what, and when. Traceability for security-relevant actions.",
    "admin.card.email_templates.title": "Email Templates",
    "admin.card.email_templates.desc": "Customise templates for invitations, reminders and the wrapper layout.",
    "admin.card.feature_flags.title": "Feature Flags",
    "admin.card.feature_flags.desc": "Enable features per office, partner unit or role.",
    "admin.card.broadcasts.title": "Broadcasts",
    "admin.card.broadcasts.desc": "Inspect bulk emails sent to team selections.",
    "admin.card.approval_policies.title": "Approval Policies",
    "admin.card.approval_policies.desc": "Configure 4-eye review per project and partner unit.",
    "admin.approval_policies.title": "Approval Policies — Paliad",
    "admin.approval_policies.heading": "Approval Policies",
    "admin.approval_policies.subtitle": "Configure 4-eye review per project and partner unit.",
    "admin.approval_policies.loading": "Loading …",
    "admin.approval_policies.section.units": "Partner Unit Defaults",
    "admin.approval_policies.section.units.hint": "Default rules that every project attached to a partner unit inherits. When multiple partner units apply, the strictest rule wins.",
    "admin.approval_policies.section.projects": "Project-specific",
    "admin.approval_policies.section.projects.hint": "Per-project rules. Override partner-unit defaults and inherited project rules.",
    "admin.approval_policies.units.empty": "No partner units yet.",
    "admin.approval_policies.picker.label": "Pick a project",
    "admin.approval_policies.picker.placeholder": "Search…",
    "admin.approval_policies.picker.no_results": "No matches.",
    "admin.approval_policies.entity.deadline": "Deadlines",
    "admin.approval_policies.entity.appointment": "Appointments",
    "admin.approval_policies.lifecycle.create": "Create",
    "admin.approval_policies.lifecycle.update": "Edit",
    "admin.approval_policies.lifecycle.complete": "Complete",
    "admin.approval_policies.lifecycle.delete": "Delete",
    "admin.approval_policies.role.partner": "Partner",
    "admin.approval_policies.role.of_counsel": "Of Counsel",
    "admin.approval_policies.role.associate": "Associate",
    "admin.approval_policies.role.senior_pa": "Senior PA",
    "admin.approval_policies.role.pa": "PA",
    "admin.approval_policies.role.none": "No approval",
    "admin.approval_policies.role.no_rule": "— no rule —",
    "admin.approval_policies.source.project": "Project",
    "admin.approval_policies.source.ancestor": "Inherited",
    "admin.approval_policies.source.unit_default": "Default",
    "admin.approval_policies.source.no_approval": "no approval",
    "admin.approval_policies.cell.requires": "Approval required",
    "admin.approval_policies.cell.clear": "—",
    "admin.approval_policies.cell.clear.title": "Reset to inheritance",
    "admin.approval_policies.cell.saved_msg": "Saved.",
    "admin.approval_policies.cell.error_msg": "Error",
    "admin.approval_policies.bulk.cta": "Apply to descendants",
    "admin.approval_policies.bulk.no_descendants": "No descendants.",
    "admin.approval_policies.bulk.modal.title": "Apply to descendants",
    "admin.approval_policies.bulk.modal.body": "The descendants below receive this project's effective matrix as project-specific rules. Existing project-specific rules will be overwritten. Partner-unit defaults remain intact.",
    "admin.approval_policies.bulk.modal.cancel": "Cancel",
    "admin.approval_policies.bulk.modal.confirm": "Apply",
    "admin.approval_policies.bulk.modal.applying": "Applying …",
    "admin.approval_policies.bulk.modal.done": "Applied",
    "admin.approval_policies.bulk.modal.writes_label": "writes",
    "admin.approval_policies.bulk.modal.targets_label": "projects",
    "inbox.empty.admin_nudge.title": "No approval policies configured yet?",
    "inbox.empty.admin_nudge.body": "Set which lifecycle events require 4-eye review.",
    "inbox.empty.admin_nudge.cta": "Configure approval policies",
    "inbox.title.feed": "Inbox — Paliad",
    "inbox.heading.feed": "Inbox",
    "inbox.subtitle.feed": "Updates on your projects and open approvals.",
    "inbox.action.mark_all_seen": "Mark all as read",
    "inbox.action.open": "Open",
    "inbox.empty.feed": "No updates in the last 30 days.",
    "views.bar.label.unread_only": "Read state",
    "views.bar.unread_only.on": "Unread only",
    "views.bar.unread_only.off": "All",
    "views.bar.label.inbox_focus": "Show",
    "views.bar.inbox_focus.alles": "Everything",
    "views.bar.inbox_focus.genehmigungen": "Approvals only",
    "views.bar.inbox_focus.plus_termine": "+ Appointments",
    "views.bar.inbox_focus.plus_fristen": "+ Deadlines",
    "deadlines.form.approval_hint": "4-eye review required",
    "appointments.form.approval_hint": "4-eye review required",
    "admin.email_templates.title": "Email Templates — Paliad",
    "admin.email_templates.heading": "Email Templates",
    "admin.email_templates.subtitle": "Customise templates for invitations, reminders, and the shared layout wrapper.",
    "admin.email_templates.loading": "Loading…",
    "admin.email_templates.load_error": "Failed to load templates.",
    "admin.email_templates.back": "← Back to list",
    "admin.email_templates.lang.de": "German",
    "admin.email_templates.lang.en": "English",
    "admin.email_templates.status.default": "Default",
    "admin.email_templates.status.last_modified": "Last modified: {date}",
    "admin.email_templates.card.invitation.title": "Invitation",
    "admin.email_templates.card.invitation.desc": "Email sent to new colleagues from the sidebar invite flow.",
    "admin.email_templates.card.deadline_digest.title": "Deadline digest",
    "admin.email_templates.card.deadline_digest.desc": "Daily morning + evening email with overdue, due-today, and upcoming deadlines.",
    "admin.email_templates.card.base.title": "Layout wrapper",
    "admin.email_templates.card.base.desc": "Shared HTML frame (header + footer) that wraps every email.",
    "admin.email_templates.editor.title": "Edit email template — Paliad",
    "admin.email_templates.editor.heading": "Edit email template",
    "admin.email_templates.editor.heading_for": "{title} — {lang}",
    "admin.email_templates.editor.is_default": "Currently using the default.",
    "admin.email_templates.editor.last_modified": "Last modified: {date}",
    "admin.email_templates.editor.subject": "Subject",
    "admin.email_templates.editor.body": "HTML body",
    "admin.email_templates.editor.note_optional": "Note (optional)",
    "admin.email_templates.editor.note_placeholder": "e.g. Correction following counsel feedback",
    "admin.email_templates.editor.variables": "Available variables",
    "admin.email_templates.editor.preview": "Preview",
    "admin.email_templates.editor.preview_refresh": "Refresh preview",
    "admin.email_templates.editor.preview_error": "Preview failed.",
    "admin.email_templates.editor.parse_error": "Template error:",
    "admin.email_templates.editor.save": "Save",
    "admin.email_templates.editor.save_ok": "Saved.",
    "admin.email_templates.editor.save_error": "Save failed.",
    "admin.email_templates.editor.reset": "Reset to default",
    "admin.email_templates.editor.reset_confirm": "Really reset to default?",
    "admin.email_templates.editor.reset_ok": "Reset to default.",
    "admin.email_templates.editor.reset_error": "Reset failed.",
    "admin.email_templates.editor.versions": "Versions",
    "admin.email_templates.editor.versions_empty": "No versions yet.",
    "admin.email_templates.editor.restore": "Restore",
    "admin.email_templates.editor.restore_confirm": "Restore this version?",
    "admin.email_templates.editor.restore_ok": "Version restored.",
    "admin.email_templates.editor.restore_error": "Restore failed.",
    "admin.email_templates.editor.dirty_warn": "Discard unsaved changes?",
    "admin.email_templates.editor.unknown_key": "Unknown template key.",
    "admin.email_templates.editor.slot.morning": "Morning slot",
    "admin.email_templates.editor.slot.evening": "Evening slot",
    "admin.team.title": "Team Management — Paliad",
    "admin.team.heading": "Team Management",
    "admin.team.subtitle": "View, edit and add Paliad accounts.",
    "admin.team.search.placeholder": "Search by name or email…",
    "admin.team.add.full": "Add account directly",
    "admin.team.add.direct": "Onboard existing account",
    "admin.team.add.invite": "Invite Colleague",
    "admin.team.add_full.title": "Add account directly",
    "admin.team.add_full.body": "Creates both the login account and the Paliad profile. The new colleague receives an email with a link to set a password.",
    "admin.team.add_full.email": "Email",
    "admin.team.add_full.name": "Display name",
    "admin.team.add_full.office": "Office",
    "admin.team.add_full.profession": "Profession",
    "admin.team.add_full.job_title": "Job title",
    "admin.team.add_full.lang": "Language",
    "admin.team.add_full.send_welcome": "Send welcome email with login link",
    "admin.team.add_full.cancel": "Cancel",
    "admin.team.add_full.submit": "Create",
    "admin.team.add_full.feedback.added": "Account created.",
    "admin.team.add_full.error.unavailable": "Add-User path is not configured (SUPABASE_SERVICE_ROLE_KEY missing on the server).",
    "admin.team.add_full.error.email_exists": "An account already exists for this email — please use 'Onboard existing account' instead.",
    "admin.team.add_full.error.generic": "Could not create the account.",
    "admin.team.loading": "Loading…",
    "admin.team.empty": "No matches.",
    "admin.team.error.forbidden": "Admins only.",
    "admin.team.col.name": "Name",
    "admin.team.col.email": "Email",
    "admin.team.col.office": "Office",
    "admin.team.col.job_title": "Job title",
    "admin.team.col.profession": "Profession",
    "admin.team.col.profession.none": "(external)",
    "admin.team.col.profession.none.hint": "No profession set — no 4-eye authority.",
    "admin.team.col.permission": "Permission",
    "admin.team.col.additional": "Additional offices",
    "admin.team.col.lang": "Lang",
    "admin.team.col.created": "Created",
    "admin.team.col.actions": "Actions",
    "admin.team.row.edit": "Edit",
    "admin.team.row.delete": "Delete",
    "admin.team.row.save": "Save",
    "admin.team.row.cancel": "Cancel",
    "admin.team.confirm.delete": "Really delete {name}? This action is permanent.",
    "admin.team.feedback.saved": "Saved.",
    "admin.team.feedback.deleted": "Deleted.",
    "admin.team.feedback.added": "Account onboarded.",
    "admin.team.direct_add.title": "Onboard existing account",
    "admin.team.direct_add.body": "This list shows accounts that have signed in but never completed onboarding.",
    "admin.team.direct_add.email": "Email",
    "admin.team.direct_add.email.placeholder": "Please select…",
    "admin.team.direct_add.empty": "No pending accounts.",
    "admin.team.direct_add.name": "Display name",
    "admin.team.direct_add.office": "Office",
    "admin.team.direct_add.job_title": "Job title",
    "admin.team.permission.standard": "Standard",
    "admin.team.permission.global_admin": "Global Admin",
    "admin.team.permission.last_admin": "The last global admin cannot be demoted.",
    "admin.team.direct_add.cancel": "Cancel",
    "admin.team.direct_add.submit": "Create",

    // Admin audit log (t-paliad-071)
    "nav.admin.audit": "Audit Log",
    "nav.admin.partner_units": "Partner Units",

    // Admin Backup Mode (t-paliad-246 / m/paliad#77)
    "nav.admin.backups": "Backups",
    "admin.backups.title": "Backups — Paliad",
    "admin.backups.heading": "Backups",
    "admin.backups.subtitle": "Full snapshots of all data — manual or scheduled.",
    "admin.backups.run_now": "Run backup now",
    "admin.backups.running": "Running …",
    "admin.backups.success": "Backup created successfully.",
    "admin.backups.empty": "No backups yet.",
    "admin.backups.loading": "Loading …",
    "admin.backups.col.started": "Started",
    "admin.backups.col.kind": "Trigger",
    "admin.backups.col.status": "Status",
    "admin.backups.col.requested_by": "Requested by",
    "admin.backups.col.size": "Size",
    "admin.backups.col.rows": "Sheets",
    "admin.backups.col.actions": "Action",
    "admin.backups.kind.scheduled": "Scheduled",
    "admin.backups.kind.on_demand": "Manual",
    "admin.backups.status.running": "Running …",
    "admin.backups.status.done": "✓ Done",
    "admin.backups.status.failed": "✗ Failed",
    "admin.backups.download": "Download",
    "admin.backups.footer.note": "Scheduled backups land in a later slice. Manual backups are available now.",
    "admin.audit.title": "Audit Log — Paliad",
    "admin.audit.heading": "Audit Log",
    "admin.audit.subtitle": "Global timeline across project, CalDAV, reminder and partner-unit events.",
    "admin.audit.source.partner_unit_events": "Partner Units",
    "admin.partner_units.title": "Partner Units — Paliad",
    "admin.partner_units.heading": "Partner Units",
    "admin.partner_units.subtitle": "Manage structural partner units and assign members.",
    "admin.partner_units.loading": "Loading…",
    "admin.partner_units.empty": "No partner units yet.",
    "admin.partner_units.new": "New Partner Unit",
    "admin.partner_units.new.heading": "Create Partner Unit",
    "admin.partner_units.edit.heading": "Edit Partner Unit",
    "admin.partner_units.create": "Save",
    "admin.partner_units.cancel": "Cancel",
    "admin.partner_units.col.name": "Name",
    "admin.partner_units.col.office": "Office",
    "admin.partner_units.col.lead": "Lead",
    "admin.partner_units.col.members": "Members",
    "admin.partner_units.col.actions": "Actions",
    "admin.partner_units.action.members": "Members",
    "admin.partner_units.action.edit": "Edit",
    "admin.partner_units.action.delete": "Delete",
    "admin.partner_units.confirm_delete": "Really delete partner unit \"{name}\"?",
    "admin.partner_units.error.name_required": "Name required",
    "admin.partner_units.error.user_required": "Select a user",
    "admin.partner_units.feedback.created": "Created.",
    "admin.partner_units.feedback.updated": "Updated.",
    "admin.partner_units.feedback.deleted": "Deleted.",
    "admin.partner_units.feedback.role_updated": "Role updated.",
    "admin.partner_units.member.heading": "Manage members",
    "admin.partner_units.member.empty": "No members yet.",
    "admin.partner_units.member.add": "Add member",
    "admin.partner_units.member.add_btn": "Add",
    "admin.partner_units.member.remove": "Remove",
    "admin.partner_units.member.confirm_remove": "Remove member?",
    "admin.partner_units.member.placeholder": "Name or email",
    "admin.partner_units.member.role": "Role",
    "admin.audit.loading": "Loading…",
    "admin.audit.empty": "No events match the selected filters.",
    "admin.audit.loadmore": "Load more",
    "admin.audit.error.forbidden": "Admins only.",
    "admin.audit.error.unavailable": "Audit service unavailable.",
    "admin.audit.search.placeholder": "Subject, description, event type…",
    "admin.audit.filter.source": "Source",
    "admin.audit.filter.range": "Range",
    "admin.audit.filter.from": "From",
    "admin.audit.filter.to": "To",
    "admin.audit.filter.search": "Search",
    "admin.audit.range.24h": "Last 24h",
    "admin.audit.range.7d": "Last 7 days",
    "admin.audit.range.30d": "Last 30 days",
    "admin.audit.range.custom": "Custom",
    "admin.audit.range.all": "All",
    "admin.audit.source.all": "All sources",
    "admin.audit.source.project_events": "Project events",
    "admin.audit.source.caldav_sync_log": "CalDAV sync",
    "admin.audit.source.reminder_log": "Reminder",
    "admin.audit.col.time": "Time",
    "admin.audit.col.source": "Source",
    "admin.audit.col.event": "Event",
    "admin.audit.col.actor": "Actor",
    "admin.audit.col.subject": "Subject",
    "admin.audit.col.description": "Description",
    "admin.audit.event.caldav_synced": "CalDAV sync ok",
    "admin.audit.event.caldav_sync_error": "CalDAV sync error",
    "admin.audit.event.morning_digest": "Morning digest sent",
    "admin.audit.event.evening_digest": "Evening digest sent",
    "admin.audit.event.deadline_reminder": "Deadline reminder sent",
    "admin.audit.event.due_today": "Due-today reminder sent",
    "admin.audit.event.weekly": "Weekly digest sent",

    // Not-found (404) page
    "notfound.title": "Page not found — Paliad",
    "notfound.heading": "Page not found",
    "notfound.lede": "This page doesn't exist or has been moved.",
    "notfound.cta": "Back to dashboard",

    // t-paliad-088: Event Types — picker, multi-select filter, add modal.
    "common.cancel": "Cancel",
    "modal.close.label": "Close",
    "event_types.cat.submission": "Submissions",
    "event_types.cat.decision": "Decisions",
    "event_types.cat.order": "Orders",
    "event_types.cat.service": "Service",
    "event_types.cat.fee": "Fees",
    "event_types.cat.hearing": "Hearings",
    "event_types.cat.other": "Other",
    "event_types.picker.search": "Search or type…",
    "event_types.picker.add": "+ Add new type…",
    "event_types.picker.remove": "Remove",
    "event_types.picker.no_match": "No matches.",
    "event_types.picker.browse_all": "Browse all",
    "event_types.browse.title": "Choose event types",
    "event_types.browse.search": "Search across all types…",
    "event_types.browse.empty": "No matches.",
    "event_types.browse.apply": "Apply",
    "event_types.browse.cancel": "Cancel",
    "event_types.browse.selected_count": "{n} selected",
    "event_types.browse.jurisdiction.none": "Any",
    "event_types.browse.jurisdiction.all": "All courts",
    "event_types.browse.jurisdiction.filter_label": "Filter by court type",
    "event_types.filter.all": "All types",
    "event_types.filter.untyped": "— Untyped —",
    "event_types.filter.search": "Search type…",
    "event_types.filter.reset": "Reset",
    "event_types.filter.apply": "Apply",
    "event_types.filter.n_selected": "{n} types",
    "event_types.add.title": "Create new event type",
    "event_types.add.label_de": "Label (DE) *",
    "event_types.add.label_en": "Label (EN, optional)",
    "event_types.add.category": "Category *",
    "event_types.add.jurisdiction": "Jurisdiction (optional)",
    "event_types.add.jurisdiction.none": "—",
    "event_types.add.jurisdiction.any": "Any",
    "event_types.add.firm_wide": "Make firm-wide",
    "event_types.add.firm_wide.hint": "Firm-wide types are visible to all colleagues. Admins can archive them.",
    "event_types.add.submit": "Create",
    "event_types.add.duplicate_warn": "Probably already exists:",
    "event_types.add.error.required": "Label (DE) is required.",
    "event_types.add.error.slug_taken": "A type with this name already exists.",
    "event_types.add.error.generic": "Could not create. Please try again.",
    "deadlines.field.event_type": "Type (optional)",
    "deadlines.col.event_type": "Type",
    "deadlines.filter.event_type": "Type",
    "agenda.filter.event_type": "Type",

    // t-paliad-089: Admin Event-Type moderation panel.
    "nav.admin.event_types": "Event Types",
    "admin.card.event_types.title": "Event Types",
    "admin.card.event_types.desc": "Moderate firm-wide event types: archive, merge, promote.",
    "admin.event_types.title": "Event Types — Paliad",
    "admin.event_types.heading": "Event Types",
    "admin.event_types.subtitle": "Moderate firm-wide event types: archive, merge, promote private types.",
    "admin.event_types.section.firm_wide": "Firm-wide types",
    "admin.event_types.section.private_pending": "Private types (pending promotion)",
    "admin.event_types.section.private_pending.hint": "Private types from other colleagues, sorted by usage. Promoting makes the type firm-wide.",
    "admin.event_types.search.placeholder": "Search label, slug or author…",
    "admin.event_types.show_archived": "Show archived",
    "admin.event_types.loading": "Loading…",
    "admin.event_types.empty": "No matches.",
    "admin.event_types.private.empty": "No private types.",
    "admin.event_types.col.label": "Label",
    "admin.event_types.col.category": "Category",
    "admin.event_types.col.jurisdiction": "Jurisdiction",
    "admin.event_types.col.author": "Author",
    "admin.event_types.col.created": "Created",
    "admin.event_types.col.usage": "Usage",
    "admin.event_types.col.actions": "Actions",
    "admin.event_types.row.archived": "Archived",
    "admin.event_types.author.system": "System",
    "admin.event_types.author.unknown": "Unknown",
    "admin.event_types.action.archive": "Archive",
    "admin.event_types.action.archive_selected": "Archive selected",
    "admin.event_types.action.merge_selected": "Merge…",
    "admin.event_types.action.restore": "Restore",
    "admin.event_types.action.promote": "Promote",
    "admin.event_types.bulk.count": "{n} selected",
    "admin.event_types.confirm.archive": "Really archive \"{label}\"?",
    "admin.event_types.confirm.bulk_archive": "Really archive {n} types?",
    "admin.event_types.confirm.promote": "Make \"{label}\" firm-wide?",
    "admin.event_types.confirm.merge": "\"{winner}\" as winner: {n} loser type(s) will be archived, {usage} junction row(s) redirected. Proceed?",
    "admin.event_types.feedback.archived": "{n} archived.",
    "admin.event_types.feedback.archive_error": "Archive failed.",
    "admin.event_types.feedback.restored": "Restored.",
    "admin.event_types.feedback.restore_error": "Restore failed.",
    "admin.event_types.feedback.promoted": "Promoted.",
    "admin.event_types.feedback.promote_error": "Promotion failed.",
    "admin.event_types.feedback.merged": "Merged.",
    "admin.event_types.feedback.merge_error": "Merge failed.",
    "admin.event_types.error.forbidden": "Admins only.",
    "admin.event_types.merge.title": "Merge types",
    "admin.event_types.merge.body": "Pick the winner. Loser junction rows get redirected to the winner, then the losers are archived.",
    "admin.event_types.merge.submit": "Merge",

    // Approval workflow (t-paliad-138).
    "approvals.title": "Approvals",
    "approvals.heading": "Approvals",
    "approvals.subtitle": "Four-eyes review for deadlines and appointments.",
    "approvals.tab.pending_mine": "Awaiting approval",
    "approvals.tab.mine": "My requests",
    "approvals.empty.pending_mine": "Nothing awaits your approval.",
    "approvals.empty.mine": "You have no open requests.",
    "approvals.lifecycle.create": "Creation",
    "approvals.lifecycle.update": "Change",
    "approvals.lifecycle.complete": "Completion",
    "approvals.lifecycle.delete": "Deletion",
    "approvals.entity.deadline": "Deadline",
    "approvals.entity.appointment": "Appointment",
    "approvals.required_role.lead": "Lead",
    "approvals.required_role.of_counsel": "Of Counsel",
    "approvals.required_role.associate": "Associate",
    "approvals.required_role.senior_pa": "Senior PA",
    "approvals.required_role.pa": "PA",
    "approvals.status.pending": "Open",
    "approvals.status.approved": "Approved",
    "approvals.status.rejected": "Rejected",
    "approvals.status.revoked": "Revoked",
    "approvals.status.superseded": "Superseded",
    "approvals.status.changes_requested": "Declined with changes",
    "approvals.action.approve": "Approve",
    "approvals.action.reject": "Reject",
    "approvals.action.revoke": "Revoke",
    "approvals.action.suggest_changes": "Suggest changes",
    "approvals.note.placeholder": "Optional note...",
    "approvals.suggest.modal_title": "Suggest changes",
    "approvals.suggest.intro": "Edit the proposed values and/or leave a note. Your suggestion will be filed as a new approval request and may be approved by the original requester (or anyone else eligible).",
    "approvals.suggest.note_label": "Note about your suggestion",
    "approvals.suggest.note_placeholder": "Why should these values change?",
    "approvals.suggest.submit": "Submit suggestion",
    "approvals.suggest.cancel": "Cancel",
    "approvals.suggest.submit_disabled_hint": "Change at least one field or leave a note.",
    "approvals.suggest.next_request_link": "→ New suggestion by {name}",
    "approvals.suggest.unsupported_lifecycle": "Suggest changes is only available for update requests.",
    "approvals.suggest.section.editable": "Fields",
    "approvals.suggest.section.event_type_rule": "Event type + rule",
    "approvals.suggest.section.context": "Context",
    "approvals.suggest.context.project": "Project",
    "approvals.suggest.context.requester": "Submitted by",
    "approvals.suggest.context.requested_at": "Submitted at",
    "approvals.suggest.context.approval_status": "Approval status",
    "approvals.suggest.event_type_picker_unavailable": "Event types could not be loaded.",
    "approvals.suggest.field.original_due_date": "Original due date",
    "approvals.suggest.field.warning_date": "Warning date",
    "approvals.suggest.field.rule_code": "Rule citation",
    "approvals.suggest.field.description": "Description",
    "approvals.requested_by": "Submitted by",
    "approvals.decided_by": "Decided by",
    "approvals.decision_kind.peer": "Peer approval",
    "approvals.decision_kind.admin_override": "Admin override",
    "approvals.decision_kind.derived_peer": "Approved by derived member (Partner Unit)",
    "approvals.error.self_approval": "You cannot approve your own request.",
    "approvals.error.not_authorized": "You don't have the required role.",
    "approvals.error.no_qualified_approver": "No qualified approver available — please add an approver to the project team or contact an admin.",
    "approvals.error.concurrent_pending": "Another approval request is already in flight on this entity.",
    "approvals.error.awaiting_approval": "This entity is awaiting approval.",
    "approvals.error.request_not_pending": "This request is no longer open.",
    "approvals.error.suggestion_requires_change": "A suggestion needs either changed values or a note.",
    "approvals.error.suggestion_lifecycle_invalid": "Suggest changes is only available for update requests.",
    "approvals.disabled.self_approval": "You cannot approve your own requests",
    "approvals.disabled.not_authorized": "You are not authorized to approve this request",
    "approvals.disabled.revoke_not_requester": "Only the requester can withdraw",
    "approvals.disabled.suggest_lifecycle": "Suggest changes is only available for update requests",
    "approvals.pending.badge": "Awaiting approval",
    "approvals.withdraw.cta": "Withdraw approval request",
    "approvals.withdraw.confirm": "Withdraw the approval request?",
    "approvals.withdraw.error": "Failed to withdraw",
    "approvals.withdraw.cancel": "Cancel",
    "approvals.withdraw.modal.title": "Withdraw approval request?",
    "approvals.withdraw.primary.label": "Edit event",
    "approvals.withdraw.destructive.label": "Withdraw permanently and delete",
    "approvals.withdraw.lead.create.deadline": "Withdrawing this request will delete the deadline.",
    "approvals.withdraw.lead.create.appointment": "Withdrawing this request will delete the appointment.",
    "approvals.withdraw.lead.update": "Withdrawing this request will discard your proposed changes — the entry will revert to its state before your edit.",
    "approvals.withdraw.lead.delete": "Withdrawing the delete request will keep the entry alive.",
    "approvals.withdraw.sub.create": "Alternatively, you can edit the entry instead. The request stays open and the approver will see your new values.",
    "approvals.withdraw.sub.update": "Alternatively, you can edit your changes and resubmit. The request stays open.",
    "approvals.withdraw.sub.delete": "Are you sure you want to withdraw the delete request?",
    "approvals.pending_create.label": "Awaits approval (creation)",
    "approvals.pending_update.label": "Awaits approval (change)",
    "approvals.pending_complete.label": "Awaits approval (completion)",
    "approvals.pending_delete.label": "Awaits approval (deletion)",
    "approvals.diff.before": "Before",
    "approvals.diff.after": "After",
    "approvals.policies.title": "Approval policies",
    "approvals.policies.subtitle": "Which lifecycle events need four-eyes review on this project?",
    "approvals.policies.column.event": "Event",
    "approvals.policies.column.deadline": "Deadline",
    "approvals.policies.column.appointment": "Appointment",
    "approvals.policies.no_approval": "No approval needed",
    "approvals.policies.copy_parent": "Copy from parent project",
    "approvals.policies.set_all_associate": "Set all to Associate",

    // t-paliad-144 — Custom Views
    "nav.group.user_views": "My Views",
    "nav.user_views.new": "New view",
    "views.title": "Views — Paliad",
    "views.heading": "Views",
    "views.subtitle": "Saved views over your data — filters and shape preserved.",
    "views.loading": "Loading …",
    "views.shape.list": "List",
    "views.shape.cards": "Cards",
    "views.shape.calendar": "Calendar",
    "views.shape.timeline": "Timeline",
    "views.timeline.caveat.body": "Custom Views show actual events only. Open the project's chart for projected rules.",
    "views.timeline.zoom.label": "Zoom",
    "views.timeline.zoom.in": "Zoom in",
    "views.timeline.zoom.out": "Zoom out",
    "views.timeline.zoom.1y": "±1 yr",
    "views.timeline.zoom.2y": "±2 yr",
    "views.timeline.zoom.all": "All",
    "views.save_as": "Save as view",
    "views.action.edit": "Edit",
    "views.empty.title": "No matches found.",
    "views.error.back": "Back to views",
    "views.error.not_found": "View not found.",
    "views.error.network": "Network error — please retry.",
    "views.toast.inaccessible_one": "1 project in this view is no longer visible to you.",
    "views.toast.inaccessible_n": "{n} projects in this view are no longer visible to you.",
    "views.calendar.mobile_fallback": "Calendar view works best on a wide screen.",
    "views.onboarding.title": "Saved views — what are they?",
    "views.onboarding.body": "A view is a saved filter combination — e.g. \"Deadlines in my projects in the next 14 days\". Views appear as their own buttons in the sidebar.",
    "views.onboarding.create": "Create example view",
    "views.source.deadline": "Deadlines",
    "views.source.appointment": "Appointments",
    "views.source.project_event": "Project history",
    "views.source.approval_request": "Approvals",
    "views.kind.deadline": "Deadline",
    "views.kind.appointment": "Appointment",
    "views.kind.project_event": "History",
    "views.kind.approval_request": "Approval",
    "views.scope.all_visible": "All visible",
    "views.scope.my_subtree": "My subtree",
    "views.scope.explicit": "Specific projects",
    "views.scope.personal_only": "Personal only",
    "views.horizon.next_1d": "Tomorrow",
    "views.horizon.next_7d": "Next 7 days",
    "views.horizon.next_14d": "Next 14 days",
    "views.horizon.next_30d": "Next 30 days",
    "views.horizon.next_90d": "Next 90 days",
    "views.horizon.next_all": "All future",
    "views.horizon.past_1d": "Last day",
    "views.horizon.past_7d": "Last 7 days",
    "views.horizon.past_14d": "Last 14 days",
    "views.horizon.past_30d": "Last 30 days",
    "views.horizon.past_90d": "Last 90 days",
    "views.horizon.past_all": "All past",
    "views.horizon.any": "Any",
    "views.horizon.all": "All-time",
    "views.horizon.custom": "Custom",
    "views.density.comfortable": "Comfortable",
    "views.density.compact": "Compact",
    "views.col.date": "Date",
    "views.col.time": "When",
    "views.col.title": "Title",
    "views.col.project": "Project",
    "views.col.actor": "Actor",
    "views.col.status": "Status",
    "views.col.rule": "Rule",
    "views.col.event_type": "Type",
    "views.col.location": "Location",
    "views.col.appointment_type": "Appointment type",
    "views.col.approval_status": "Approval",
    "views.col.decided_by": "Decided by",
    "views.col.kind": "Kind",
    "views.editor.title": "Edit view — Paliad",
    "views.editor.heading.new": "New view",
    "views.editor.heading.edit": "Edit view",
    "views.editor.subtitle": "Pick sources, filters, and shape. Save to confirm.",
    "views.editor.section.identity": "Identity",
    "views.editor.section.sources": "Sources",
    "views.editor.section.scope": "Scope",
    "views.editor.section.time": "Time",
    "views.editor.section.render": "Display",
    "views.editor.field.name": "Name",
    "views.editor.field.slug": "Slug (URL)",
    "views.editor.field.icon": "Icon",
    "views.editor.field.show_count": "Show count badge in sidebar",
    "views.editor.field.scope_mode": "Projects",
    "views.editor.field.personal_only": "Personal only",
    "views.editor.field.horizon": "Horizon",
    "views.editor.field.shape": "Shape",
    "views.editor.field.density": "Density",
    "views.editor.hint.slug": "Lowercase letters, digits, hyphens — no reserved words.",
    "views.editor.hint.sources": "Which data sources should this view include?",
    "views.editor.icon.default": "Default (folder)",
    "views.editor.icon.clock": "Clock",
    "views.editor.icon.calendar": "Calendar",
    "views.editor.icon.bell": "Bell",
    "views.editor.icon.folder": "Folder",
    "views.editor.icon.users": "People",
    "views.editor.icon.building": "Building",
    "views.editor.save": "Save",
    "views.editor.cancel": "Cancel",
    "views.editor.delete": "Delete",
    "views.editor.confirm_delete": "Delete this view permanently?",
    "views.editor.error.name_required": "Name is required.",
    "views.editor.error.slug_format": "Slug must be lowercase, start with a letter or digit, contain only letters, digits, and hyphens.",
    "views.editor.error.sources_required": "Pick at least one source.",
    "views.editor.error.load_failed": "Could not load this view.",
    "views.editor.error.delete_failed": "Could not delete this view.",

    // Universal FilterBar — t-paliad-163.
    "views.bar.label.time": "Time",
    "views.bar.label.personal": "Mine",
    "views.bar.label.approval_role": "View",
    "views.bar.label.approval_status": "Status",
    "views.bar.label.approval_entity": "Kind",
    "views.bar.label.deadline_status": "Deadline status",
    "views.bar.label.appointment_type": "Appointment type",
    "views.bar.label.project_event_kind": "Event",
    "views.bar.label.timeline_status": "Timeline status",
    "views.bar.label.timeline_track": "Track",
    "views.bar.timeline_status.done": "Done",
    "views.bar.timeline_status.open": "Open",
    "views.bar.timeline_status.overdue": "Overdue",
    "views.bar.timeline_status.predicted": "Predicted",
    "views.bar.timeline_status.predicted_overdue": "Overdue (predicted)",
    "views.bar.timeline_status.court_set": "Court date",
    "views.bar.timeline_status.off_script": "Custom",
    "views.bar.timeline_status.macro.future": "Show future",
    "views.bar.timeline_status.macro.past": "Past only",
    "views.bar.timeline_track.parent": "Main proceeding",
    "views.bar.timeline_track.counterclaim": "Counterclaim",
    "views.bar.timeline_track.off_script": "Off-script",
    "views.bar.label.shape": "Display",
    "views.bar.label.density": "Density",
    "views.bar.label.sort": "Sort",
    "views.bar.common.all": "All",
    // views.bar.time.* keys retired in t-paliad-248 — see the DE block
    // for context. The filter-bar time axis now mounts the symmetric
    // date-range picker whose labels live under date_range.horizon.*.
    "views.bar.personal.on": "Mine only",
    "views.bar.approval_role.approver_eligible": "To approve",
    "views.bar.approval_role.self_requested": "My requests",
    "views.bar.approval_role.any_visible": "All visible",
    "views.bar.approval_status.pending": "Pending",
    "views.bar.approval_status.approved": "Approved",
    "views.bar.approval_status.rejected": "Rejected",
    "views.bar.approval_status.revoked": "Revoked",
    "views.bar.approval_status.changes_requested": "With suggestion",
    "views.bar.approval_entity.deadline": "Deadline",
    "views.bar.approval_entity.appointment": "Appointment",
    "views.bar.deadline_status.pending": "Open",
    "views.bar.deadline_status.completed": "Completed",
    "views.bar.appointment_type.hearing": "Hearing",
    "views.bar.appointment_type.meeting": "Meeting",
    "views.bar.appointment_type.consultation": "Consultation",
    "views.bar.appointment_type.deadline_hearing": "Oral hearing",
    "views.bar.shape.list": "List",
    "views.bar.shape.cards": "Cards",
    "views.bar.shape.calendar": "Calendar",
    "views.bar.density.comfortable": "Comfortable",
    "views.bar.density.compact": "Compact",
    "views.bar.sort.date_asc": "Date ascending",
    "views.bar.sort.date_desc": "Date descending",
    "views.bar.action.reset": "Reset",
    "views.bar.action.save_as_view": "Save as view",
    "views.bar.save.heading": "Save view",
    "views.bar.save.field.name": "Name",
    "views.bar.save.field.slug": "Slug",
    "views.bar.save.field.slug_hint": "Becomes part of the URL: /views/<slug>",
    "views.bar.save.field.show_count": "Show count in sidebar",
    "views.bar.save.cancel": "Cancel",
    "views.bar.save.confirm": "Save",
    "views.bar.save.error.name_required": "Please supply a name.",
    "views.bar.save.error.slug_format": "Slug must start with a letter or digit and contain only lowercase letters, digits, and hyphens.",
    "views.bar.save.error.slug_taken": "This slug is already in use.",
    "views.bar.save.error.network": "Network error — please retry.",

    // t-paliad-192 Slice 11b — Admin rule-editor UI.
    // t-paliad-262 Slice A — "Rule" relabelled as "Procedural event".
    "nav.admin.rules": "Manage procedural events",
    "admin.card.rules.title": "Manage procedural events",
    "admin.card.rules.desc": "Author, edit and publish procedural-event templates. Audit log, preview, migration export.",

    "admin.rules.list.title": "Manage procedural events — Paliad",
    "admin.rules.list.heading": "Manage procedural events",
    "admin.rules.list.subtitle": "Author, edit and publish procedural events (filings, hearings, decisions, …). Lifecycle: draft → published → archived.",
    "admin.rules.list.new": "+ New procedural event",
    "admin.rules.tab.rules": "Rules",
    "admin.rules.tab.orphans": "Orphans",
    "admin.rules.loading": "Loading…",
    "admin.rules.empty": "No procedural events for the chosen filters.",
    "admin.rules.error.load": "Could not load procedural events.",

    "admin.rules.filter.proceeding": "Proceeding type",
    "admin.rules.filter.proceeding.any": "Any",
    "admin.rules.filter.trigger": "Trigger event",
    "admin.rules.filter.trigger.any": "Any",
    "admin.rules.filter.lifecycle": "Lifecycle",
    "admin.rules.filter.lifecycle.any": "Any",
    "admin.rules.filter.search": "Search",
    "admin.rules.filter.search.placeholder": "Name, submission code, legal citation…",

    "admin.rules.col.submission_code": "Code (procedural event)",
    "admin.rules.col.legal_citation": "Legal citation",
    "admin.rules.col.name": "Name",
    "admin.rules.col.proceeding": "Proceeding type",
    "admin.rules.col.priority": "Priority",
    "admin.rules.col.lifecycle": "Lifecycle",
    "admin.rules.col.modified": "Last modified",

    "admin.rules.lifecycle.draft": "Draft",
    "admin.rules.lifecycle.published": "Published",
    "admin.rules.lifecycle.archived": "Archived",

    "admin.rules.priority.mandatory": "Mandatory",
    "admin.rules.priority.recommended": "Recommended",
    "admin.rules.priority.optional": "Optional",
    "admin.rules.priority.informational": "Informational",

    "admin.rules.orphans.subtitle": "Legacy deadlines from the fuzzy-match backfill (Slice 10) that could not be bound to a unique rule. Please pick the right candidate rule.",
    "admin.rules.orphans.loading": "Loading…",
    "admin.rules.orphans.empty": "No open orphans. ✔",
    "admin.rules.orphans.no_candidates": "No candidate rules found. Please create one manually.",
    "admin.rules.orphans.field.project": "Project",
    "admin.rules.orphans.field.proceeding": "Proceeding",
    "admin.rules.orphans.field.reason": "Reason",
    "admin.rules.orphans.reason.no_match": "No match",
    "admin.rules.orphans.reason.ambiguous": "Ambiguous",
    "admin.rules.orphans.reason.no_project": "No project",
    "admin.rules.orphans.reason.manual_unbound": "Manually unbound",
    "admin.rules.orphans.resolved": "Orphan resolved.",

    "admin.rules.modal.new.title": "Create new procedural event",
    "admin.rules.modal.new.body": "A new procedural event will be created as a draft. Please supply a reason (≥10 chars) — recorded in the audit log and exported into the migration file.",
    "admin.rules.modal.resolve.title": "Resolve orphan",
    "admin.rules.modal.resolve.body": "Please supply a reason (≥10 chars). The rule binding is persisted immediately on the deadline.",
    "admin.rules.modal.reason": "Reason",
    "admin.rules.modal.reason.placeholder": "e.g. \"New rule for RoP.198 after UPC reform 2026…",
    "admin.rules.modal.reason.hint": "Minimum 10 characters.",
    "admin.rules.modal.reason.too_short": "Reason must be at least 10 characters.",
    "admin.rules.modal.confirm": "Confirm",
    "admin.rules.modal.field.name": "Name (DE)",
    "admin.rules.modal.field.name_en": "Name (EN)",
    "admin.rules.modal.field.duration": "Duration",
    "admin.rules.modal.error.name_required": "Please supply both Name and Name (EN).",
    "admin.rules.modal.error.create": "Creation failed.",
    "admin.rules.modal.error.resolve": "Resolution failed.",

    "admin.rules.edit.title": "Edit procedural event — Paliad",
    "admin.rules.edit.heading.loading": "Loading procedural event…",
    "admin.rules.edit.breadcrumb": "← Manage procedural events",
    "admin.rules.edit.error.bad_id": "Invalid procedural-event id in URL.",
    "admin.rules.edit.error.not_found": "Procedural event not found.",
    "admin.rules.edit.error.load": "Could not load procedural event.",

    "admin.rules.edit.section.identity": "Identity",
    "admin.rules.edit.section.proceeding": "Proceeding & Trigger",
    "admin.rules.edit.section.timing": "Math",
    "admin.rules.edit.section.party": "Party & Event",
    "admin.rules.edit.section.display": "Display & Notes",
    "admin.rules.edit.section.lifecycle": "Priority & Flags",
    "admin.rules.edit.section.condition": "Condition (condition_expr)",

    "admin.rules.edit.field.name": "Name (DE)",
    "admin.rules.edit.field.name_en": "Name (EN)",
    "admin.rules.edit.field.description": "Description",
    "admin.rules.edit.field.submission_code": "Code (procedural-event identifier)",
    "admin.rules.edit.field.rule_code": "Legal citation (short form)",
    "admin.rules.edit.field.legal_source": "Legal citation (long form)",
    "admin.rules.edit.field.proceeding": "Proceeding type",
    "admin.rules.edit.field.proceeding.none": "—",
    "admin.rules.edit.field.trigger": "Trigger event",
    "admin.rules.edit.field.trigger.none": "—",
    "admin.rules.edit.field.parent": "Parent procedural event (UUID)",
    "admin.rules.edit.field.concept": "Concept (UUID)",
    "admin.rules.edit.field.sequence_order": "Order",
    "admin.rules.edit.field.duration_value": "Duration",
    "admin.rules.edit.field.duration_unit": "Unit",
    "admin.rules.edit.field.timing": "Timing",
    "admin.rules.edit.field.combine_op": "Combine op",
    "admin.rules.edit.field.alt_duration_value": "Alt duration",
    "admin.rules.edit.field.alt_duration_unit": "Alt unit",
    "admin.rules.edit.field.alt_rule_code": "Alt rule code",
    "admin.rules.edit.field.anchor_alt": "Alt anchor",
    "admin.rules.edit.field.primary_party": "Primary party",
    "admin.rules.edit.field.event_type": "Procedural-event kind (filing / hearing / decision / order)",
    "admin.rules.edit.field.deadline_notes": "Notes (DE)",
    "admin.rules.edit.field.deadline_notes_en": "Notes (EN)",
    "admin.rules.edit.field.priority": "Priority",
    "admin.rules.edit.field.is_court_set": "Court-set",
    "admin.rules.edit.field.is_spawn": "Spawn",
    "admin.rules.edit.field.spawn_label": "Spawn label",
    "admin.rules.edit.field.spawn_proceeding": "Spawn proceeding",
    "admin.rules.edit.field.spawn_proceeding.none": "—",
    "admin.rules.edit.field.condition_hint": "JSON grammar: {\"flag\":\"name\"} · {\"op\":\"and|or\",\"args\":[...]} · {\"op\":\"not\",\"args\":[...]}",
    "admin.rules.edit.field.condition.valid": "JSON valid.",

    "admin.rules.edit.preview.heading": "Preview",
    "admin.rules.edit.preview.hint": "Drafts only. Runs the calculator with this draft substituted for the published version.",
    "admin.rules.edit.preview.trigger_date": "Trigger date",
    "admin.rules.edit.preview.flags": "Flags (comma-separated)",
    "admin.rules.edit.preview.run": "Run preview",
    "admin.rules.edit.preview.running": "Computing…",
    "admin.rules.edit.preview.empty": "No deadlines.",
    "admin.rules.edit.preview.error": "Preview failed.",
    "admin.rules.edit.preview.only_drafts": "Preview is only available for drafts.",
    "admin.rules.edit.preview.trigger_required": "Please supply a trigger date.",

    "admin.rules.edit.audit.heading": "Audit log",
    "admin.rules.edit.audit.loading": "Loading…",
    "admin.rules.edit.audit.empty": "No audit entries.",
    "admin.rules.edit.audit.loadmore": "Load more",
    "admin.rules.edit.audit.exported": "exported",
    "admin.rules.edit.audit.actor.system": "System",
    "admin.rules.edit.audit.action.create": "create",
    "admin.rules.edit.audit.action.update": "update",
    "admin.rules.edit.audit.action.publish": "publish",
    "admin.rules.edit.audit.action.archive": "archive",
    "admin.rules.edit.audit.action.restore": "restore",
    "admin.rules.edit.audit.action.delete": "delete",

    "admin.rules.edit.action.save_draft": "Save draft",
    "admin.rules.edit.action.publish": "Publish",
    "admin.rules.edit.action.clone": "Clone as draft",
    "admin.rules.edit.action.archive": "Archive",
    "admin.rules.edit.action.restore": "Restore",
    "admin.rules.edit.action.ok": "Done.",
    "admin.rules.edit.action.save_draft.ok": "Draft saved.",
    "admin.rules.edit.action.save_draft.error": "Save failed.",
    "admin.rules.edit.action.publish.ok": "Rule published.",
    "admin.rules.edit.action.publish.error": "Publish failed.",
    "admin.rules.edit.action.archive.ok": "Rule archived.",
    "admin.rules.edit.action.archive.error": "Archive failed.",
    "admin.rules.edit.action.restore.ok": "Rule restored.",
    "admin.rules.edit.action.restore.error": "Restore failed.",
    "admin.rules.edit.action.clone.error": "Clone failed.",

    "admin.rules.edit.modal.save_draft.title": "Save draft",
    "admin.rules.edit.modal.save_draft.body": "Please supply a reason for the change (≥10 chars). Written to the audit log.",
    "admin.rules.edit.modal.publish.title": "Publish",
    "admin.rules.edit.modal.publish.body": "This draft will go live. The existing published variant is archived.",
    "admin.rules.edit.modal.clone.title": "Clone as draft",
    "admin.rules.edit.modal.clone.body": "A new draft copy of this rule is created. You will be redirected to the new draft.",
    "admin.rules.edit.modal.archive.title": "Archive",
    "admin.rules.edit.modal.archive.body": "Rule will be archived. The calculator will no longer use it.",
    "admin.rules.edit.modal.restore.title": "Restore",
    "admin.rules.edit.modal.restore.body": "Rule will be restored (archived → published).",

    // Date-range picker (t-paliad-248). See DE block above for details.
    "date_range.button.label": "Time range",
    "date_range.button.label.custom_range": "From {from} to {to}",
    "date_range.horizon.next_1d":  "Today",
    "date_range.horizon.next_7d":  "Next 7 days",
    "date_range.horizon.next_14d": "Next 14 days",
    "date_range.horizon.next_30d": "Next 30 days",
    "date_range.horizon.next_90d": "Next 90 days",
    "date_range.horizon.next_all": "All future",
    "date_range.horizon.past_1d":  "Last day",
    "date_range.horizon.past_7d":  "Last 7 days",
    "date_range.horizon.past_14d": "Last 14 days",
    "date_range.horizon.past_30d": "Last 30 days",
    "date_range.horizon.past_90d": "Last 90 days",
    "date_range.horizon.past_all": "All past",
    "date_range.horizon.any":      "All",
    "date_range.horizon.custom":   "Customize",
    "date_range.dialog.label":     "Choose time range",
    "date_range.fan.past.label":   "Past",
    "date_range.fan.future.label": "Future",
    "date_range.center.label":     "All",
    "date_range.custom.from":      "From",
    "date_range.custom.to":        "To",
    "date_range.custom.apply":     "Apply",
    "date_range.custom.cancel":    "Cancel",
    "date_range.custom.invalid":            "End date must be strictly after start date.",
    "date_range.custom.invalid_format":     "Date not recognised (format YYYY-MM-DD).",
    "date_range.custom.invalid_missing":    "Please fill in both date fields.",

    // t-paliad-262 Slice A — canonical `procedural_event` i18n contract.
    // Mirrors the DE block; values identical to the legacy
    // `admin.rules.*` keys. Adding/changing values? Update BOTH sides.
    "admin.procedural_events.list.title":     "Manage procedural events — Paliad",
    "admin.procedural_events.list.heading":   "Manage procedural events",
    "admin.procedural_events.list.new":       "+ New procedural event",
    "admin.procedural_events.col.code":       "Code (procedural event)",
    // t-paliad-321: 3-segment proceeding-type code column.
    "admin.procedural_events.col.proceeding": "Proceeding",
    "admin.procedural_events.edit.title":     "Edit procedural event — Paliad",
    "admin.procedural_events.edit.breadcrumb":"← Manage procedural events",
    "admin.procedural_events.edit.field.code":         "Code (procedural-event identifier)",
    "admin.procedural_events.edit.field.event_kind":   "Procedural-event kind (filing / hearing / decision / order)",
    "admin.procedural_events.edit.field.parent":       "Parent procedural event (UUID)",
  },
};

// t — strict translation lookup. The I18nKey parameter is the generated
// union of every key in `translations`, so a literal-string typo at a call
// site fails tsc. Runtime-composed keys (`deadlines.status.${x}`) cannot
// satisfy this signature — TypeScript narrows them to template literal
// types that don't fit the union — so those call sites must use `tDyn`.
export function t(key: I18nKey): string {
  return translations[currentLang][key] ?? translations.de[key] ?? key;
}

// tDyn — runtime-composed key escape hatch. Use only when the key is built
// from variables (`tDyn(\`deadlines.status.${x}\`)`); literal-string keys
// must go through `t()` so the I18nKey type catches typos. There is no
// compile-time guarantee the key exists; callers get the same fallback-to-
// raw-key behaviour as t() and are responsible for ensuring the key set
// they interpolate over is fully covered by i18n.ts.
export function tDyn(key: string): string {
  return translations[currentLang][key] ?? translations.de[key] ?? key;
}

// tOrEmpty returns the translation if present, else "" — so callers that
// want to fall back to the existing default text in the DOM can do so. The
// `string` parameter is intentional: applyTranslations reads keys off the
// DOM at runtime, so static typing isn't possible here. Internal use only.
function tOrEmpty(key: string): string {
  return translations[currentLang][key] ?? translations.de[key] ?? "";
}

export function getLang(): Lang {
  return currentLang;
}

// translateEvent localizes a stored project_events row for display.
//
// project_events rows are written with stable English event_type slugs
// ("project_type_changed") and English fallback titles ("Project type
// changed"). The description column is freeform but for known event types
// follows a value-only pattern ("case → litigation", "active → archived",
// "deadline" for note_created). Legacy rows from before this PR carry the
// English prefix ("Type case → litigation", "Note zu deadline hinzugefügt"
// — DE/EN-mixed); both legacy and new shapes parse here.
//
// Caller provides whatever the backend returned for title + description;
// receives a localized pair ready for innerHTML/textContent.
export function translateEvent(
  eventType: string | null | undefined,
  storedTitle: string,
  storedDescription: string | null | undefined,
): { title: string; description: string } {
  // Title: prefer the per-event-type localized noun phrase.
  let title = storedTitle;
  if (eventType) {
    const v = tOrEmpty(`event.title.${eventType}`);
    if (v) title = v;
  }
  const description = storedDescription
    ? translateEventDescription(eventType ?? "", storedDescription)
    : "";
  return { title, description };
}

function translateEventDescription(eventType: string, description: string): string {
  const body = description.trim();
  if (!body) return "";

  if (eventType === "project_type_changed") {
    // New format: "case → litigation". Legacy: "Type case → litigation".
    return translateArrowSlugs(body.replace(/^Type\s+/, ""), "projects.type.");
  }
  if (eventType === "status_changed") {
    // New format: "active → archived". Legacy: "Status active → archived".
    return translateArrowSlugs(body.replace(/^Status\s+/, ""), "projects.filter.status.");
  }
  if (eventType === "our_side_changed") {
    // Format: "<from> → <to>", where each side is one of
    // claimant / defendant / court / both / "none" (the sentinel for
    // NULL the service writes when the column is unset on either end).
    return translateArrowSlugs(body, "projects.field.our_side.");
  }
  if (eventType === "note_created") {
    // New format: just the parent slug. Legacy: "Note zu <slug> hinzugefügt".
    const m = body.match(/^Note zu (project|deadline|appointment) hinzugef[üu]gt$/i);
    const slug = (m ? m[1] : body).toLowerCase();
    const parent = tOrEmpty(`event.note.parent.${slug}`) || slug;
    const phrase = tOrEmpty("event.note.added_to");
    return phrase ? phrase.replace("{parent}", parent) : body;
  }
  if (eventType.startsWith("deadline_") || eventType.startsWith("appointment_")) {
    // New format: just the entity title. Legacy: 'Deadline „Foo" geändert' /
    // 'Appointment „Foo" angelegt' etc. Strip the noun + verb wrapper, keep
    // the quoted title, then re-wrap in the localized template.
    const title = extractQuotedTitle(body) ?? body;
    return interpolateTemplate(`event.description.${eventType}`, { title }) ?? body;
  }
  if (eventType === "deadlines_imported") {
    // New format: just the count. Legacy: "N Deadlines aus Fristenrechner übernommen".
    const m = body.match(/^(\d+)\b/);
    const count = m ? m[1] : body;
    return interpolateTemplate("event.description.deadlines_imported", { count }) ?? body;
  }
  return description;
}

// extractQuotedTitle pulls the body out of a legacy DE description like
// `Deadline „Foo" geändert` — German double-low-9 (U+201E) opening quote and
// double-high-6 (U+201C) closing quote, the pair the Go services actually
// write today. Returns null if no quoted run is found, so callers can fall
// back to the raw body.
function extractQuotedTitle(body: string): string | null {
  const m = body.match(/„([^“”„]+)[“”]/);
  return m ? m[1] : null;
}

function interpolateTemplate(key: string, vars: Record<string, string>): string | null {
  const tmpl = tOrEmpty(key);
  if (!tmpl) return null;
  return tmpl.replace(/\{(\w+)\}/g, (_, name) => vars[name] ?? `{${name}}`);
}

function translateArrowSlugs(body: string, prefix: string): string {
  const m = body.match(/^(\S+)\s*[→→]\s*(\S+)$/);
  if (!m) return body;
  const a = tOrEmpty(`${prefix}${m[1]}`) || m[1];
  const b = tOrEmpty(`${prefix}${m[2]}`) || m[2];
  return `${a} → ${b}`;
}

export function onLangChange(cb: () => void) {
  changeCallbacks.push(cb);
}

export function setLang(lang: Lang) {
  if (lang === currentLang) return;
  currentLang = lang;
  localStorage.setItem(STORAGE_KEY, lang);
  document.documentElement.lang = lang;
  applyTranslations();
  applyLangToInputs();
  updateToggle();
  for (const cb of changeCallbacks) cb();
}

// Native <input type="date|time|datetime-local"> follows the browser locale
// for display formatting unless `lang` is set on the element itself — the
// `lang` attribute on <html> is not enough in Chrome/Safari. Stamp the
// current locale on every such input so DE users see dd.mm.yyyy and 24h.
function applyLangToInputs() {
  document.querySelectorAll<HTMLInputElement>(
    'input[type="date"], input[type="time"], input[type="datetime-local"]',
  ).forEach((el) => {
    el.lang = currentLang;
  });
}

function applyTranslations() {
  // When a key is missing from every locale, preserve whatever static text
  // the HTML was authored with — never overwrite with the raw key string.
  document.querySelectorAll<HTMLElement>("[data-i18n]").forEach((el) => {
    const key = el.getAttribute("data-i18n")!;
    const val = tOrEmpty(key);
    if (val !== "") el.textContent = val;
  });
  document.querySelectorAll<HTMLElement>("[data-i18n-placeholder]").forEach((el) => {
    const key = el.getAttribute("data-i18n-placeholder")!;
    const val = tOrEmpty(key);
    if (val !== "") (el as HTMLInputElement).placeholder = val;
  });
  document.querySelectorAll<HTMLElement>("[data-i18n-title]").forEach((el) => {
    const key = el.getAttribute("data-i18n-title")!;
    const val = tOrEmpty(key);
    if (val !== "") el.setAttribute("title", val);
  });
}

function updateToggle() {
  document.querySelectorAll<HTMLElement>("[data-lang-toggle]").forEach((btn) => {
    const lang = btn.getAttribute("data-lang-toggle") as Lang;
    btn.classList.toggle("lang-active", lang === currentLang);
  });
}

export function initI18n() {
  let stored = localStorage.getItem(STORAGE_KEY) as Lang | null;

  // One-shot migration from the pre-rebrand key (patholo-lang → paliad-lang).
  // Drop this fallback once the grace period is over.
  if (stored !== "de" && stored !== "en") {
    const legacy = localStorage.getItem(LEGACY_STORAGE_KEY) as Lang | null;
    if (legacy === "de" || legacy === "en") {
      localStorage.setItem(STORAGE_KEY, legacy);
      stored = legacy;
    }
  }
  if (localStorage.getItem(LEGACY_STORAGE_KEY) !== null) {
    localStorage.removeItem(LEGACY_STORAGE_KEY);
  }

  if (stored === "de" || stored === "en") {
    currentLang = stored;
  }

  document.documentElement.lang = currentLang;

  document.querySelectorAll<HTMLElement>("[data-lang-toggle]").forEach((btn) => {
    btn.addEventListener("click", () => {
      setLang(btn.getAttribute("data-lang-toggle") as Lang);
    });
  });

  applyTranslations();
  applyLangToInputs();
  updateToggle();
}
