// Deutsches Wörterbuch (Default-Sprache). Die Werte hier sind EXAKT die bisher
// sichtbaren UI-Texte — die i18n-Umstellung darf optisch nichts ändern.
//
// Identifier/Keys sind englisch und namespaced wie bei DOSSIER
// (z. B. `topbar.grundriss`); nur die Werte sind übersetzbarer Text.
// Platzhalter in geschweiften Klammern (`{name}`) werden von t(...) ersetzt.

export const de = {
  // ── Marke / Topbar ───────────────────────────────────────────────────────
  "brand.tag": "Dokumentmodell",

  "topbar.viewGroup": "Ansicht",
  "topbar.grundriss": "Grundriss",
  "topbar.perspektive": "Perspektive",

  "view3d.group": "Ansicht 3D",
  "view3d.front": "Front",
  "view3d.front.hint": "Frontalansicht von vorne",
  "view3d.top": "Oben",
  "view3d.top.hint": "Draufsicht (senkrecht von oben)",
  "view3d.side": "Seite",
  "view3d.side.hint": "Seitenansicht (90° zur Front)",
  "view3d.perspective": "Perspektive",
  "view3d.perspective.hint": "Freie Perspektive (3/4-Blick)",
  "view3d.iso": "Isometrie",
  "view3d.iso.hint": "Isometrische Ansicht (gleichwinklig von vorne-oben-rechts)",
  "view3d.camera": "Kamera",
  "view3d.camera.hint": "Kamera-Einstellungen (Sichtwinkel)",
  "view3d.fov": "Sichtwinkel",
  "view3d.fov.hint": "Sichtwinkel (FOV) der Perspektivkamera in Grad",

  "topbar.detailGroup": "Detailgrad",
  "topbar.detail": "Detailgrad",
  "topbar.detail.hint": "Detailgrad der Plandarstellung (Symbole, Schraffuren, Linien)",
  "topbar.detail.hintDisabled": "Detailgrad wirkt im Grundriss (in der Perspektive noch nicht)",
  "topbar.detail.grob": "grob",
  "topbar.detail.mittel": "mittel",
  "topbar.detail.fein": "fein",

  "topbar.scaleGroup": "Massstab und Zoom",
  "topbar.scale": "Massstab",
  "topbar.scale.apply": "Papier-Massstab 1:N anwenden",
  "topbar.scale.custom": "frei …",
  "topbar.scale.live": "Aktueller Papier-Massstab (live)",
  "topbar.scale.prompt": "Massstab eingeben (z. B. 1:35 oder 35):",
  "topbar.zoom100": "100%",
  "topbar.zoom100.hint": "Zoom exakt auf den gewählten Massstab 1:{n}",
  "topbar.fit": "Einpassen",
  "topbar.fit.hint": "Auf Plan einpassen",
  "topbar.fitSelection": "Auswahl",
  "topbar.fitSelection.hint": "Auf Auswahl einpassen (sonst auf Plan)",
  "topbar.exportPdf": "PDF",
  "topbar.exportPdf.hint": "Grundriss als Vektor-PDF exportieren",
  "topbar.exportDxf": "DXF",
  "topbar.exportDxf.hint": "Grundriss als DXF (Modell-Space in Metern) exportieren",
  "topbar.zoom.current": "Aktueller Zoom",

  "topbar.renderGroup": "Render-Modus",
  "topbar.render.shaded": "Schattiert",
  "topbar.render.shaded.hint": "Schattiert",
  "topbar.render.wireframe": "Draht",
  "topbar.render.wireframe.hint": "Drahtgitter",
  "topbar.render.hidden": "Kanten",
  "topbar.render.hidden.hint": "Verdeckte Kanten (Hidden-Line)",
  "topbar.render.hintDisabled": "Render-Modus wirkt in der Perspektive",
  // Darstellungsart (kontextabhängiger Dropdown): Grundriss = Farbig/SW,
  // Perspektive = Schattiert/Weiss/Draht/Kanten.
  "display.style": "Darstellung",
  "display.style.group": "Darstellungsart",
  "display.style.hint": "Darstellungsart der aktiven Ansicht",
  "display.style.color": "Farbig",
  "display.style.mono": "Schwarz-Weiss",
  "display.style.shaded": "Schattiert",
  "display.style.white": "Weiss",
  "display.style.textured": "Texturiert",
  "display.style.wireframe": "Drahtgitter",
  "display.style.hidden": "Kanten",

  "topbar.referenceLinesGroup": "Referenzlinien",
  "topbar.referenceLines": "Referenzlinien",
  "topbar.referenceLines.hint": "Referenzlinien (Wandachsen) ein-/ausblenden",
  "topbar.referenceLines.hintDisabled": "Referenzlinien wirken im Grundriss",

  "topbar.resources": "Ressourcen",
  "topbar.resources.hint": "Ressourcen-Fenster ein-/ausblenden",

  // ── Layout-Menü (Topbar) ─────────────────────────────────────────────────
  "layout.title": "Layout",
  "layout.placeholder": "Layout …",
  "layout.saveCurrent": "＋ Aktuelles speichern …",
  "layout.loadGroup": "Laden",
  "layout.deleteGroup": "Löschen",
  "layout.savePrompt": "Layout speichern als:",

  // ── Sichtbarkeits-Kombinationen (Topbar) ─────────────────────────────────
  "combo.layers": "Ebenen-Komb.",
  "combo.drawings": "Zeichn.-Komb.",
  "combo.placeholder": "Kombination …",
  "combo.saveCurrent": "＋ Aktuelle speichern …",
  "combo.loadGroup": "Laden",
  "combo.deleteGroup": "Löschen",
  "combo.layers.title": "Ebenenkombinationen",
  "combo.drawings.title": "Zeichnungskombinationen",
  "combo.layers.savePrompt": "Ebenenkombination speichern als:",
  "combo.drawings.savePrompt": "Zeichnungskombination speichern als:",

  // ── Zeichenwerkzeuge (Topbar-Werkzeugleiste + Statushinweise) ────────────
  "tool.group": "Werkzeuge",
  "tool.select": "Auswahl",
  "tool.wall": "Wand",
  "tool.ceiling": "Decke",
  "tool.window": "Fenster",
  "tool.door": "Tür",
  "tool.stair": "Treppe",
  "tool.line": "Linie",
  "tool.polyline": "Polylinie",
  "tool.rect": "Rechteck",
  "tool.select.hint": "Auswahl — Elemente klicken/aufziehen",
  "tool.window.hint": "Fenster: Wand wählen, dann Position setzen",
  "tool.door.hint": "Tür: Wand wählen, dann Position setzen",
  "tool.stair.hint": "Treppe: Startpunkt, dann Laufrichtung/Ende setzen",
  "tool.room": "Raum",
  "tool.room.hint": "Raum: in umschlossenen Bereich klicken (oder Umriss zeichnen)",
  "tool.wall.firstPoint": "Wand: ersten Achspunkt setzen",
  "tool.wall.nextPoint": "Wand: nächsten Punkt — Doppelklick/Rechtsklick beendet",
  "tool.ceiling.firstPoint": "Decke: ersten Umrisspunkt setzen",
  "tool.ceiling.nextPoint": "Decke: nächster Punkt — Klick auf Start schließt, Enter beendet",
  "tool.line.firstPoint": "Linie: Startpunkt setzen",
  "tool.line.secondPoint": "Linie: Endpunkt setzen",
  "tool.polyline.firstPoint": "Polylinie: ersten Punkt setzen",
  "tool.polyline.nextPoint": "Polylinie: nächster Punkt — Klick auf Start schließt, Doppelklick beendet",
  "tool.rect.firstCorner": "Rechteck: erste Ecke setzen",
  "tool.rect.secondCorner": "Rechteck: gegenüberliegende Ecke setzen",
  "tool.wallType": "Wandtyp",
  "tool.ceilingType": "Deckentyp",
  "tool.layer": "Ebene",
  "tool.layer.hint": "Aktive Ebene — alles Gezeichnete kommt auf diese Kategorie",
  "tool.floorOnlyDisabled": "Wand nur auf einem Geschoss zeichenbar",
  "tool.snap": "Fang",
  "tool.snap.hint": "Fang an Endpunkten/Raster; Shift = Ortho, Ctrl = Fang aus",
  "snap.enabled": "Fang aktiv",
  "snap.endpoint": "Endpunkt",
  "snap.midpoint": "Mittelpunkt",
  "snap.intersection": "Schnittpunkt",
  "snap.onEdge": "Auf Kante (Lot)",
  "snap.grid": "Raster",
  "snap.ortho": "Ortho (Shift)",
  "snap.gridSize": "Rasterweite (m)",
  "snap.angleStep": "Winkelraster",

  // ── Transformation (Bewegen/Spiegeln/Drehen) + Modusleiste ───────────────
  "transform.bar": "Transformation",
  "transform.cancel": "Abbrechen (Esc)",
  "transform.countPrompt": "Anzahl Kopien:",
  "transform.move": "Bewegen (M)",
  "transform.mirror": "Spiegeln (S)",
  "transform.rotate": "Drehen (D)",
  "transform.mode.move": "Bewegen",
  "transform.mode.copy": "Kopie",
  "transform.mode.array": "N Kopien",
  "transform.mode.distribute": "Verteilen",
  "transform.hint.move.0": "Basispunkt klicken",
  "transform.hint.move.1": "Zielpunkt klicken",
  "transform.hint.rotate.0": "Drehzentrum klicken",
  "transform.hint.rotate.1": "Bezugspunkt (Startwinkel) klicken",
  "transform.hint.rotate.2": "Zielwinkel klicken",
  "transform.hint.mirror.0": "Erster Punkt der Spiegelachse",
  "transform.hint.mirror.1": "Zweiter Punkt der Spiegelachse",

  // ── Linien-Darstellung (Display/Print) ───────────────────────────────────
  "topbar.lineModeGroup": "Linien-Darstellung",
  "topbar.lineMode.display": "Display",
  "topbar.lineMode.print": "Print",
  "topbar.lineMode.display.hint": "Display: alle Linien als konstante Haarlinie (ruhiges Arbeiten)",
  "topbar.lineMode.print.hint": "Print: echte mm-Strichstärken (Papier-/Druckbild)",

  // ── Statusleiste ─────────────────────────────────────────────────────────
  "status.selection": "Auswahl",
  "status.selectionN": "Auswahl: {n} {noun}",
  "status.wall": "Wand",
  "status.walls": "Wände",
  "status.xy": "X/Y",
  "status.unit": "Einheit",
  "status.scale": "Massstab",
  "status.zoom": "Zoom",
  "status.floor": "Geschoss",
  "status.layer": "Ebene",
  "status.none": "—",
  "status.renderer": "Renderer",
  "status.rendererWebgl": "WebGL2",
  "status.rendererWasm": "Engine",
  "status.rendererWasmUnavailable": "WebGPU nicht verfügbar",

  // ── Navigator-Panels ─────────────────────────────────────────────────────
  "nav.drawingLevels": "Zeichnungsebenen",
  "nav.layers": "Ebenen",
  "nav.tools": "Werkzeuge",
  "nav.attributes": "Attribute",
  "nav.objectInfo": "Objekt-Info",

  // Attribute-Palette (AttributesPanel)
  "attr.title": "Attribute",
  "attr.empty": "Keine Auswahl",
  "attr.stroke": "Stift",
  "attr.color": "Farbe",
  "attr.weight": "Strichstärke (mm)",
  "attr.lineStyle": "Linienstil",
  "attr.fill": "Füllung",
  "attr.fillColor": "Füllfarbe",
  "attr.clearFill": "Füllfarbe entfernen",
  "attr.hatch": "Schraffur",
  "attr.none": "keine",
  "attr.inheritedFromLayer": "Wände erben die Strichstärke aus der Ebene",
  "attr.fillNeedsClosed": "Füllung nur für geschlossene Formen",
  "attr.size": "Maße",
  "attr.width": "Breite",
  "attr.height": "Höhe",

  // Objekt-Info-Palette (ObjectInfoPanel)
  "objinfo.title": "Objekt-Info",
  "objinfo.empty": "Kein Objekt gewählt",
  "objinfo.refpoint": "Bezugspunkt",
  "objinfo.setRefpoint": "Bezugspunkt wählen",
  "objinfo.x": "X",
  "objinfo.y": "Y",
  "objinfo.z": "Z",
  "objinfo.zHint": "2D-Ebene – keine Höhe am Element",
  "objinfo.dimensions": "Maße",
  "objinfo.width": "Breite",
  "objinfo.height": "Höhe",
  "objinfo.type": "Typ",
  "objinfo.kind.wall": "Wand",
  "objinfo.kind.ceiling": "Decke",
  "objinfo.kind.drawing2d": "2D-Objekt",
  "objinfo.kind.door": "Tür",
  "objinfo.kind.opening": "Öffnung",
  "objinfo.kind.stair": "Treppe",
  "objinfo.kind.room": "Raum",
  // ── Wand-Attribute (Object-Info-Panel) ──────────────────────────────────
  "objinfo.wall.section": "Wand",
  "objinfo.wall.refLine": "Referenzlinie",
  "objinfo.wall.refLine.left": "Außen (links)",
  "objinfo.wall.refLine.center": "Mitte",
  "objinfo.wall.refLine.right": "Innen (rechts)",
  "objinfo.wall.buildup": "Aufbau",
  "objinfo.wall.single": "Einschichtig",
  "objinfo.wall.multi": "Mehrschichtig",
  "objinfo.wall.thickness": "Dicke",
  "objinfo.wall.preset": "Wandaufbau",
  "objinfo.wall.presetLabel": "{name} · {thickness} m",
  "objinfo.wall.refFloor": "Referenzgeschoss",
  "objinfo.wall.linkAbove": "An oberes Geschoss binden",
  "objinfo.wall.bottom": "Unterkante (UK)",
  "objinfo.wall.top": "Oberkante (OK)",
  "objinfo.wall.anchorFloor": "An Geschoss gebunden",
  "objinfo.wall.anchorCustom": "Eigene Höhe",
  "objinfo.wall.height": "Höhe",
  // ── Decken-Attribute (Object-Info-Panel) ────────────────────────────────
  "objinfo.ceiling.section": "Decke",
  "objinfo.ceiling.buildup": "Aufbau",
  "objinfo.ceiling.thickness": "Dicke",
  "objinfo.ceiling.preset": "Deckenaufbau",
  "objinfo.ceiling.refFloor": "Referenzgeschoss",
  "objinfo.ceiling.top": "Oberkante (OK)",
  "objinfo.ceiling.bottom": "Unterkante (UK)",
  "objinfo.ceiling.height": "Dicke (OK−UK)",
  "objinfo.ceiling.area": "Fläche",
  "objinfo.ceiling.anchorFloor": "An Geschoss gebunden",
  "objinfo.ceiling.anchorCustom": "Eigene Höhe",
  // ── Öffnungs-Attribute (Object-Info-Panel) ──────────────────────────────
  "objinfo.opening.section": "Öffnung",
  "objinfo.opening.kind": "Art",
  "objinfo.opening.kind.window": "Fenster",
  "objinfo.opening.kind.door": "Tür",
  "objinfo.opening.hostWall": "Wirts-Wand",
  "objinfo.opening.position": "Position (ab Wandanfang)",
  "objinfo.opening.width": "Breite",
  "objinfo.opening.height": "Höhe",
  "objinfo.opening.sill": "Brüstung",
  "objinfo.opening.swingAngle": "Öffnungswinkel",
  "objinfo.opening.hinge": "Anschlag",
  "objinfo.opening.hinge.start": "Anfang",
  "objinfo.opening.hinge.end": "Ende",
  "objinfo.opening.swing": "Aufschlagseite",
  "objinfo.opening.swing.left": "Links",
  "objinfo.opening.swing.right": "Rechts",
  "objinfo.opening.dir": "Richtung",
  "objinfo.opening.dir.in": "Innen",
  "objinfo.opening.dir.out": "Außen",
  "objinfo.opening.bottom": "Unterkante (UK)",
  "objinfo.opening.top": "Oberkante (OK)",
  // ── Treppen-Attribute (Object-Info-Panel) ───────────────────────────────
  "objinfo.stair.section": "Treppe",
  "objinfo.stair.shape": "Grundform",
  "objinfo.stair.shape.straight": "Gerade",
  "objinfo.stair.shape.L": "L-Treppe",
  "objinfo.stair.shape.spiral": "Wendel",
  "objinfo.stair.width": "Laufbreite",
  "objinfo.stair.steps": "Stufenanzahl",
  "objinfo.stair.rise": "Steighöhe (gesamt)",
  "objinfo.stair.riser": "Steigungshöhe",
  "objinfo.stair.tread": "Auftrittstiefe",
  "objinfo.stair.direction": "Laufrichtung",
  "objinfo.stair.direction.up": "Aufwärts",
  "objinfo.stair.direction.down": "Abwärts",
  "objinfo.stair.refFloor": "Referenzgeschoss",
  "objinfo.stair.bottom": "Unterkante (UK)",
  "objinfo.stair.top": "Oberkante (OK)",
  // ── Raum-Attribute (Object-Info-Panel) ──────────────────────────────────
  "objinfo.room.section": "Raum",
  "objinfo.room.name": "Name",
  "objinfo.room.sia": "SIA-Kategorie",
  "objinfo.room.area": "Fläche",
  "objinfo.room.perimeter": "Umfang",
  "objinfo.room.refFloor": "Referenzgeschoss",
  "objinfo.room.editStamp": "Stempel bearbeiten …",
  "objinfo.wall.floorAboveNone": "Kein oberes Geschoss",
  "levels.addFloor": "+ Geschoss",
  "levels.addDrawing": "+ Zeichnung",
  "layers.addCategory": "+ Ebene",
  "nav.visibility": "Sichtbarkeit",
  "nav.hide": "Ausblenden",
  "nav.show": "Einblenden",
  "nav.categoryVisible": "{name} sichtbar",
  "nav.categorySelect": "{name} als aktive Ebene wählen (Zeichen-Ziel)",

  // ── Badges (Art einer Zeichnungsebene) ───────────────────────────────────
  "badge.floor": "Geschoss",
  "badge.section": "Schnitt",
  "badge.elevation": "Ansicht",
  "badge.drawing": "Zeichnung",

  // ── Darstellungsmodus-Umschalter ─────────────────────────────────────────
  "display.title": "Darstellungsmodus",
  "display.all_force": "Alle anzeigen",
  "display.all": "Ausgewählte",
  "display.active": "Nur aktive",
  "display.grey": "Andere grau",
  "display.grey_locked": "Andere grau & gesperrt",

  // ── Dock ─────────────────────────────────────────────────────────────────
  "dock.resize": "Breite anpassen",
  "dock.dock": "Andocken",
  "dock.close": "Schließen",
  "dock.float": "Lösen",
  "dock.redock": "Andocken",
  "dock.resizePanel": "Größe ändern",
  "dock.dropLeft": "Links andocken",
  "dock.dropRight": "Rechts andocken",

  // ── Kontextmenü (Einträge) ───────────────────────────────────────────────
  "ctx.layerSettings": "Ebeneneinstellungen…",
  "ctx.addSubLayer": "Sub-Ebene hinzufügen…",
  "ctx.assignSelection": "Selektion hierher übertragen",
  "ctx.assignSelection.disabled": "Keine Wand ausgewählt — zuerst im Grundriss/3D eine Wand anklicken.",
  "ctx.duplicate": "Duplizieren",
  "ctx.copyProps": "Eigenschaften kopieren",
  "ctx.pasteProps": "Eigenschaften einfügen",
  "ctx.pasteProps.disabled": "Zwischenablage leer — zuerst „Eigenschaften kopieren“.",
  "ctx.delete": "Löschen",
  "ctx.delete.lastLayer": "Die letzte Ebene kann nicht gelöscht werden.",
  "ctx.delete.lastLevel": "Die letzte Zeichnungsebene kann nicht gelöscht werden.",
  "ctx.levelSettings": "Einstellungen…",
  "ctx.fitSelection": "Auf Auswahl einpassen",
  "ctx.clearSelection": "Auswahl aufheben",
  "ctx.fit": "Ansicht einpassen",
  "ctx.union": "Vereinigen",
  "ctx.subtract": "Subtrahieren",
  "ctx.intersect": "Schneiden",
  "ctx.boolean.disabled":
    "Mindestens zwei geschlossene Flächen auswählen (Rechteck oder geschlossene Polylinie).",
  "ctx.noWallHit": "Keine Wand getroffen",
  "ctx.noWallHit.hint": "Rechtsklick auf eine Wand wählt sie und zeigt Wand-Aktionen.",

  // Kontextmenü-Titel je Quelle.
  "ctx.title.level": "Zeichnungsebene",
  "ctx.title.wall": "Wand",
  "ctx.title.view": "Ansicht",

  // ── Inline-Editor (Ebene / Geschoss) ─────────────────────────────────────
  "editor.close": "Schließen",
  "editor.layerTitle": "Ebene {code}",
  "editor.name": "Name",
  "editor.color": "Farbe",
  "editor.lineWeight": "Linienstärke",
  "editor.floorHeight": "Geschosshöhe",
  "editor.cutHeight": "Schnitthöhe",
  "editor.unit.mm": "mm",
  "editor.unit.m": "m",
  "editor.noHeightDrawing": "Für Zeichnungen gibt es keine Geschoss-/Schnitthöhe.",
  "editor.noHeightSection": "Für Schnitte/Ansichten gibt es keine Geschoss-/Schnitthöhe.",

  // ── Hauptinhalt (Panes / Eigenschaften) ──────────────────────────────────
  "content.perspektiveTitle": "Perspektive · {name}",
  "content.grundrissTitle": "Grundriss · {name}",
  "content.grundrissLegend": "Grundriss · {name} · Schnitthöhe {cutHeight}",
  "content.drawingTitle": "Zeichnung · {name}",
  "content.drawingCanvas": "Zeichenfläche",
  "content.drawingLegend": "Freie 2D-Zeichnung",
  "props.floorHeight": "Geschosshöhe",
  "props.cutHeight": "Schnitthöhe",
  "props.okff": "OKFF",
  "props.okffValue": "+{value} m",

  // ── Stub (Schnitt / Ansicht) ─────────────────────────────────────────────
  "stub.section": "Schnitt",
  "stub.elevation": "Ansicht",
  "stub.note": "{kind} — abgeleitete Projektion folgt in einer späteren Phase",

  // ── Default-Namen neuer Elemente ─────────────────────────────────────────
  "default.floorName": "Geschoss {n}",
  "default.drawingName": "Zeichnung {n}",
  "default.categoryName": "Neue Ebene",
  "default.subCategoryName": "Neue Sub-Ebene",
  "default.componentName": "Neues Bauteil",
  "default.hatchName": "Neue Schraffur",
  "default.lineStyleName": "Neuer Linienstil",
  "default.hatchNone": "Ohne",
  "default.copySuffixLevel": "{name} Kopie",
  "default.copySuffixLayer": "{name} KOPIE",
  "default.wallTypeSingle": "Wand {thickness} m",

  // ── Warnungen (Lösch-Schutz) ─────────────────────────────────────────────
  "alert.layerInUse": "Ebene „{code} {name}\" wird von Bauteilen verwendet und kann nicht gelöscht werden.",
  "alert.componentInUse": "Bauteil „{name}\" wird von einem Wandtyp verwendet und kann nicht gelöscht werden.",
  "alert.hatchInUse": "Schraffur „{name}\" wird von einem Bauteil verwendet und kann nicht gelöscht werden.",
  "alert.lineStyleInUse": "Linienstil „{name}\" wird von einer Schraffur verwendet und kann nicht gelöscht werden.",

  // ── Ressourcen-Manager ───────────────────────────────────────────────────
  "resources.title": "Ressourcen",
  "resources.label": "Ressourcen-Manager",
  "resources.close": "Schließen",
  "resources.tab.components": "Bauteile",
  "resources.tab.hatches": "Schraffuren",
  "resources.tab.lines": "Linien",
  "resources.tab.materials": "Materialien",

  "resources.materials.hint":
    "Kugel-Vorschau der eingebauten PBR-Materialbibliothek — durchsuchen und vergleichen. Zuweisen an ein Bauteil weiterhin über dessen Spalte „Material …\".",
  "resources.materials.searchPlaceholder": "Material suchen …",
  "resources.materials.categoryLabel": "Kategorie",
  "resources.materials.categoryAll": "Alle",
  "resources.materials.selected": "Ausgewählt: {name} ({category})",
  "resources.materials.empty": "Keine Materialien gefunden.",
  "resources.materials.count": "{shown} von {total} Materialien",
  "resources.add": "Neu",
  "resources.import.lin": "⤓ .lin importieren",
  "resources.import.pat": "⤓ .pat importieren",

  // Bauteile.
  "resources.components.hint": "Höhere Priorität läuft am Stoß durch (verschneidet zuerst); niedrigere stößt seitlich an.",
  "resources.components.empty": "Noch keine Bauteile.",
  "resources.components.placeholder": "Bauteil",
  "resources.col.name": "Name",
  "resources.col.color": "Farbe",
  "resources.col.hatch": "Schraffur",
  "resources.col.prio": "Prio",
  "resources.col.prio.hint": "Höhere Priorität läuft am Stoß durch",
  "resources.col.texture": "Textur",
  "resources.col.material": "Material",
  "resources.delete.component": "Bauteil „{name}\" löschen",

  // 3D-Material (PBR) — Bibliotheks-Auswahl + Upload.
  "material.assign": "Material …",
  "material.none": "— ohne —",
  "material.dialog.title": "3D-Material zuweisen",
  "material.dialog.hint": "Wähle ein eingebautes Material oder lade eigene Texturen hoch. Wirkt im 3D-Modus „Texturiert\".",
  "material.library": "Bibliothek (ambientCG, CC0)",
  "material.upload": "Eigene Texturen",
  "material.upload.hint": "Lade Bilder als Karten hoch (mindestens Farbe). Größe = physische Kachelgröße in Metern.",
  "material.upload.color": "Farbe (Albedo)",
  "material.upload.normal": "Normal",
  "material.upload.roughness": "Rauheit",
  "material.upload.displacement": "Höhe",
  "material.upload.ao": "AO",
  "material.upload.choose": "Bild …",
  "material.upload.apply": "Zuweisen",
  "material.size": "Kachelgröße (m)",
  "material.current": "Aktuell",
  "material.clear": "Material entfernen",
  "material.close": "Schließen",
  "material.uploaded": "Hochgeladen",
  // ── ambientCG-Bibliothek durchsuchen (Live) ──────────────────────────────
  "material.browse": "Bibliothek durchsuchen",
  "material.browse.starter": "Schnellauswahl",
  "material.browse.hint":
    "Durchsuche die komplette CC0-Bibliothek von ambientCG (~2000+ Materialien). Ein Klick lädt die Texturen zur Laufzeit herunter und weist sie zu.",
  "material.browse.search": "Suchen …",
  "material.browse.searchPlaceholder": "z. B. Holz, Beton, Fliesen …",
  "material.browse.category.all": "Alle Kategorien",
  "material.browse.resolution": "Auflösung",
  "material.browse.more": "Mehr laden",
  "material.browse.loading": "Lädt …",
  "material.browse.downloading": "Textur wird geladen …",
  "material.browse.empty": "Keine Materialien gefunden.",
  "material.browse.count": "{shown} von {total}",
  "material.browse.error":
    "Bibliothek nicht erreichbar. Zur Laufzeit ist ein Proxy für ambientCG nötig (Dev: Vite-Proxy aktiv; Prod: VITE_AMBIENTCG_PROXY setzen).",
  "material.browse.downloadError": "Download fehlgeschlagen (CORS/Proxy prüfen).",

  // Schraffuren.
  "resources.hatches.hint": "Muster, Maßstab und Winkel steuern die Schnitt-Schraffur; der Linienstil bestimmt die Stärke der Musterlinien.",
  "resources.hatches.empty": "Noch keine Schraffuren.",
  "resources.hatches.placeholder": "Schraffur",
  "resources.col.pattern": "Muster",
  "resources.col.scale": "Maßstab",
  "resources.col.angle": "Winkel °",
  "resources.col.lineStyle": "Linienstil",
  "resources.lineStyle.none": "— ohne —",
  "resources.delete.hatch": "Schraffur „{name}\" löschen",

  // Schraffur-Muster.
  "pattern.none": "Ohne",
  "pattern.solid": "Vollfläche",
  "pattern.insulation": "Wärmedämmung",
  "pattern.diagonal": "Diagonal",
  "pattern.crosshatch": "Kreuzschraffur",

  // Linien.
  "resources.lines.hint": "Strichstärke in Millimetern (Paper-Space). Strichmuster: durchgezogen, gestrichelt oder gepunktet.",
  "resources.lines.empty": "Noch keine Linienstile.",
  "resources.lines.placeholder": "Linienstil",
  "resources.col.weight": "Stärke (mm)",
  "resources.col.stroke": "Strich",
  "resources.col.preview": "Vorschau",
  "resources.delete.lineStyle": "Linienstil „{name}\" löschen",
  "resources.texture.empty": "—",

  // Strichmuster.
  "dash.solid": "Durchgezogen",
  "dash.dashed": "Gestrichelt",
  "dash.dotted": "Gepunktet",

  // ── Command-Line / Befehle (Rhino-artiges Befehlssystem) ──────────────────
  "cmd.aria": "Befehlszeile",
  "cmd.idle.prompt": "Befehl:",
  "cmd.idle.placeholder": "Befehl eingeben … (Tab)",
  "cmd.wall.label": "Wand",
  "cmd.wall.start": "Startpunkt der Wand:",
  "cmd.wall.next": "Nächster Punkt:",
  "cmd.ceiling.label": "Decke",
  "cmd.ceiling.start": "Erster Umrisspunkt der Decke:",
  "cmd.ceiling.next": "Nächster Punkt ( Schliessen ):",
  "cmd.opening.label": "Öffnung",
  "cmd.opening.windowLabel": "Fenster",
  "cmd.opening.doorLabel": "Tür",
  "cmd.opening.wall": "Wand für die Öffnung wählen:",
  "cmd.opening.pos": "Position entlang der Wand ( Abstand tippen ):",
  "cmd.opening.kind": "Art",
  "cmd.opening.hinge": "Anschlag",
  "cmd.opening.side": "Seite",
  "cmd.opening.dir": "Richtung",
  "cmd.opening.sillField": "Brüstung",
  "cmd.opening.swingField": "Winkel",
  "cmd.stair.label": "Treppe",
  "cmd.stair.start": "Startpunkt der Treppe:",
  "cmd.stair.run": "Laufrichtung / Ende ( Grundform · Auf/Ab ):",
  "cmd.stair.shape": "Grundform",
  "cmd.stair.updown": "Auf/Ab",
  "cmd.stair.stepsField": "Stufen",
  "cmd.stair.riseField": "Steighöhe",
  "cmd.line.label": "Linie",
  "cmd.line.start": "Startpunkt der Linie:",
  "cmd.line.end": "Endpunkt der Linie:",
  "cmd.polyline.label": "Polylinie",
  "cmd.polyline.start": "Startpunkt:",
  "cmd.polyline.next": "Nächster Punkt:",
  "cmd.polyline.close": "Schliessen",
  "cmd.polyline.undo": "Zurück",
  "cmd.polyline.closedOpt": "Geschlossen",
  "cmd.rect.label": "Rechteck",
  "cmd.rect.first": "Erste Ecke:",
  "cmd.rect.second": "Gegenüberliegende Ecke:",
  "cmd.rect.method": "Methode",
  "cmd.rect.center": "Mittelpunkt:",
  "cmd.rect.corner": "Ecke:",
  "cmd.rect.baseEnd": "Zweite Ecke (Basiskante):",
  "cmd.rect.rise": "Höhe:",
  "cmd.circle.label": "Kreis",
  "cmd.circle.center": "Mittelpunkt:",
  "cmd.circle.radius": "Radius:",
  // Editierbefehle (Tier 1): Move/Copy/Offset operieren auf der Auswahl.
  "cmd.move.label": "Verschieben",
  "cmd.move.base": "Basispunkt:",
  "cmd.move.target": "Zielpunkt:",
  "cmd.move.empty": "Nichts gewählt (erst Objekte wählen).",
  "cmd.mirror.label": "Spiegeln",
  "cmd.mirror.first": "Erster Punkt der Spiegelachse:",
  "cmd.mirror.second": "Zweiter Punkt der Spiegelachse:",
  "cmd.mirror.empty": "Nichts gewählt (erst Objekte wählen).",
  "cmd.join.prompt": "Verbinde gewählte Elemente …",
  "cmd.copy.label": "Kopieren",
  "cmd.copy.base": "Basispunkt:",
  "cmd.copy.target": "Zielpunkt (Enter beendet):",
  "cmd.copy.empty": "Nichts gewählt (erst Objekte wählen).",
  "cmd.offset.label": "Versatz",
  "cmd.offset.pick": "Kurve wählen:",
  "cmd.offset.side": "Seite oder Distanz:",
  // Trim (Quick-Trim): auf den wegzuschneidenden Abschnitt klicken; wiederholend.
  "cmd.trim.label": "Stutzen",
  "cmd.trim.pick": "Abschnitt zum Wegschneiden anklicken (Esc beendet):",
  // Editier-Werkzeuge Split / Join / Segment-Löschen (Tastatur: Ctrl+S / Ctrl+J /
  // Alt+Klick). Labels für Befehlsleiste/Menüs.
  "edit.split.label": "Teilen",
  "edit.join.label": "Verbinden",
  "edit.cutSegment.label": "Segment löschen",
  // Tab-Feld-Zyklus (Präzisionseingabe): geordnete Zahlenfelder je Schritt.
  "cmd.field.length": "Länge",
  "cmd.field.angle": "Winkel",
  "cmd.field.width": "Breite",
  "cmd.field.height": "Höhe",
  "cmd.field.radius": "Radius",
  "cmd.field.distance": "Distanz",
  "cmd.field.thickness": "Dicke",
  "cmd.edit.point": "Griff ziehen (Tab: Länge/Winkel):",

  // ── Befehle: Import / Gelände ────────────────────────────────────────────
  "cmd.import.label": "Importieren",
  "cmd.import.prompt": "DXF-Datei wählen …",
  "cmd.terrain.label": "Gelände",
  "cmd.terrain.prompt": "Gelände aus Konturen erzeugen …",

  // ── Flächenbilanz (SIA 416) ──────────────────────────────────────────────
  "nav.roomBalance": "Flächenbilanz",
  "balance.title": "Flächenbilanz (SIA 416)",
  "balance.rooms": "Räume",
  "balance.summary": "Bilanz",
  "balance.export": "CSV exportieren",
  "balance.empty": "Keine Räume vorhanden. Mit dem Raum-Werkzeug erstellen.",
  // ── Raum-Stempel-Editor ──────────────────────────────────────────────────
  "room.stamp.editTitle": "Raum-Stempel bearbeiten",
  "room.stamp.close": "Schliessen",

  // ── Site-/Kontext-Panel (SitePanel) ──────────────────────────────────────
  "nav.site": "Gelände",
  "site.title": "Gelände & Kontext",
  "site.import": "⤓ DXF importieren",
  "site.generateTerrain": "Gelände erzeugen",
  "site.contourSet": "Kontur-Satz",
  "site.empty": "Kein Kontext geladen. Importiere eine DXF-Datei (Höhenlinien oder Mesh).",
  "site.delete": "Entfernen",
  "site.type.mesh": "Mesh",
  "site.type.contours": "Konturen",
  "site.type.terrain": "Gelände",
  "site.dwgHint": "DWG? Zuerst mit dem gratis ODA File Converter in DXF umwandeln.",
  "site.terrainFailed": "Kein Gelände erzeugbar (zu wenige/kollineare Konturpunkte).",

  // ── Import-Dialog (ImportDialog) ─────────────────────────────────────────
  "import.title": "DXF importieren",
  "import.close": "Schließen",
  "import.file": "Datei",
  "import.summary.heading": "Inhalt",
  "import.summary.contours": "{n} Konturen",
  "import.summary.meshes": "{n} Meshes",
  "import.summary.layers": "Layer: {layers}",
  "import.summary.noLayers": "keine Layer-Namen",
  "import.summary.empty": "Keine importierbare 2D-Geometrie gefunden.",
  "import.target.heading": "Ziel-Zeichnungsebene",
  "import.target.existing": "In bestehende Zeichnungsebene importieren",
  "import.target.new": "Neue Zeichnung anlegen",
  "import.target.newNamePlaceholder": "Name der neuen Zeichnung",
  "import.layers.heading": "Ebenen-Handling (DXF-Layer)",
  "import.layers.asCategories": "DXF-Layer als Kategorien übernehmen",
  "import.layers.toActive": "Alles auf die aktive Kategorie ({code})",
  "import.mesh.heading": "Meshes",
  "import.mesh.asContext": "Meshes als Kontext-Geometrie (3D) importieren",
  "import.mesh.note": "Meshes sind keine 2D-Zeichnung — sie landen in der Kontext-Schicht.",
  "import.dwg.heading": "DWG-Datei",
  "import.dwg.loading": "DWG wird gelesen …",
  "import.dwg.hint":
    "DWG konnte nicht gelesen werden. Wandle die Datei alternativ mit dem gratis ODA File Converter in DXF um und importiere die DXF-Datei.",
  "import.confirm": "Importieren",
  "import.cancel": "Abbrechen",
  "import.badge.floor": "Geschoss",
  "import.badge.section": "Schnitt",
  "import.badge.elevation": "Ansicht",
  "import.badge.drawing": "Zeichnung",

  // ── PDF-Export ───────────────────────────────────────────────────────────
  "export.title": "PDF exportieren",
  "export.close": "Schließen",
  "export.plan": "Plan",
  "export.scale": "Massstab",
  "export.paper": "Papierformat",
  "export.orientation": "Ausrichtung",
  "export.orientation.portrait": "Hochformat",
  "export.orientation.landscape": "Querformat",
  "export.warnFit":
    "Der Plan passt im gewählten Massstab nicht ganz auf das Blatt — größeres Format oder kleineren Massstab wählen.",
  "export.confirm": "Exportieren",
  "export.cancel": "Abbrechen",

  // ── DXF-Export ───────────────────────────────────────────────────────────
  "exportDxf.title": "DXF exportieren",
  "exportDxf.hatches": "Schraffuren",
  "exportDxf.hatches.yes": "Mitexportieren",
  "exportDxf.hatches.no": "Nur Umrisse",
  "exportDxf.unitsNote":
    "Modell-Space in Metern (1:1). Layer entsprechen den Ebenen des Projekts; beim Plot beliebig skalierbar.",

  // ── Drag & Drop (App-weiter Datei-Drop) ──────────────────────────────────
  "drop.hint": "DXF/DWG-Datei hier ablegen",

  // ── Fehler-Boundary ──────────────────────────────────────────────────────
  "error.console": "Unerwarteter Fehler:",
  "error.title": "Etwas ist schiefgelaufen",
  "error.body": "Ein unerwarteter Fehler ist aufgetreten. Details in der Konsole.",
  "error.reload": "Neu laden",

  // ── Standort-Import (geo.admin / OSM) ─────────────────────────────────────
  "site.importLocation": "Standort importieren",
  "ctxImport.title": "Standort importieren",
  "ctxImport.close": "Schließen",
  "ctxImport.location": "Ort / Adresse",
  "ctxImport.searchPlaceholder": "z. B. Bundesplatz Bern",
  "ctxImport.search": "Suchen",
  "ctxImport.searching": "Suche…",
  "ctxImport.noResults": "Keine Treffer.",
  "ctxImport.searchError": "Suche fehlgeschlagen.",
  "ctxImport.radius": "Radius",
  "ctxImport.sources": "Quellen",
  "ctxImport.src.swissBuildings": "Swisstopo-Gebäude",
  "ctxImport.src.osmBuildings": "OSM-Gebäude",
  "ctxImport.src.osmRoads": "OSM-Strassen",
  "ctxImport.src.osmWater": "OSM-Wasser",
  "ctxImport.src.osmGreen": "OSM-Grün",
  "ctxImport.cancel": "Abbrechen",
  "ctxImport.confirm": "Importieren",
  "ctxImport.importing": "Importiere…",
  "ctxImport.working": "Lade Geodaten…",
  "ctxImport.empty": "Keine Geometrie im gewählten Bereich gefunden.",
  "ctxImport.importError": "Import fehlgeschlagen.",
  "ctxImport.imported": "{count} Objekte in {sets} Sätzen importiert.",

  // ── Raum-Befehl ─────────────────────────────────────────────────────────────
  "cmd.room.label": "Raum",
  "cmd.room.mode": "Modus",
  "cmd.room.inside": "Klick in Raum setzen:",
  "cmd.room.first": "Ersten Raumpunkt setzen:",
  "cmd.room.next": "Nächsten Punkt setzen ( Enter/Start schließt ):",

  // ── Text-Gruppe (Oberleiste) ─────────────────────────────────────────────
  "text.group": "Text",
  "text.style": "Stil",
  "text.style.none": "— Stil —",
  "text.font": "Schrift",
  "text.size": "Grösse",
  "text.size.custom": "Eigene …",
  "text.size.customPrompt": "Schriftgrösse in pt:",
  "text.bold": "Fett",
  "text.italic": "Kursiv",
  "text.underline": "Unterstrichen",
  "text.align.left": "Linksbündig",
  "text.align.center": "Zentriert",
  "text.align.right": "Rechtsbündig",
  "text.add": "Text",
  "text.add.hint": "Text-Werkzeug — neuen Text platzieren (bald verfügbar)",
  "text.editTitle": "Text bearbeiten",
  "text.apply": "Übernehmen",
  "text.cancel": "Abbrechen",
  "roomStamp.title": "Raumstempel bearbeiten",
  "roomStamp.number": "Raumnummer",
  "roomStamp.name": "Raumname",
  "roomStamp.nameLine2": "Raumname Zeile 2",
  "roomStamp.showFloorArea": "Bodenfläche anzeigen",
  "roomStamp.floorAreaPrefix": "Präfix Bodenfläche",
  "roomStamp.showUsage": "Nutzung anzeigen",
  "text.selectedHint": "Formatierung wirkt auf den ausgewählten Text",

  // ── Rich-Text-Editor ────────────────────────────────────────────────────────
  "rt.bold": "Fett",
  "rt.italic": "Kursiv",
  "rt.underline": "Unterstrichen",
  "rt.strike": "Durchgestrichen",
  "rt.strikethrough": "Durchgestrichen",
  "rt.fontSize": "Schriftgrösse",
  "rt.color": "Farbe",
  "rt.preset": "Vorlage",
  "rt.preset.none": "— Vorlage —",

  // ── 3D-Viewport (native Engine, WASM/WebGPU) ────────────────────────────────
  "viewport3d.engineUnavailable": "3D-Engine nicht verfügbar",
  "viewport3d.engineUnavailableHint":
    "WebGPU konnte nicht initialisiert werden. In der Statusleiste auf WebGL2 umschalten, um die 3D-Ansicht weiter zu nutzen.",
} as const;

export type TranslationKey = keyof typeof de;
