// i18n message catalog. Keyed strings, lookup order: current locale → default → key itself.
// DE is the base. AT inherits DE and overrides only Austrian-specific terms.
// EN is a separate catalog.

const de = {
  // Navbar (also used by the Navbar preview)
  'nav.shop': 'Shop',
  'nav.cook': 'Kochen',
  'nav.clean': 'Reinigen',
  'nav.care': 'Pflege',
  'nav.applications': 'Anwendungen',
  'nav.kaiserhacks': 'Kaiserhacks',
  'nav.bundles': 'Bundles',
  'nav.revitalization': 'Revitalisierung',
  'nav.about': 'Über uns',
  'nav.contact': 'Kontakt',
  // Shop page — section headlines for the three use-case groups.
  'shop.eyebrow': 'Unser Sortiment',
  'shop.headline': 'Kaiser-Natron',
  'shop.headline.em': 'für jeden Bereich',
  'shop.sub': 'Vom Kochen über das Reinigen bis zur Pflege: drei Sammlungen, ein Rohstoff.',
  'shop.section.cook.headline': 'Backen, kochen,',
  'shop.section.cook.headline.em': 'gesund verdauen.',
  'shop.section.cook.sub': 'Pulver und Tabletten — die Basis für Teig, Gerichte und guten Geschmack.',
  'shop.section.clean.headline': 'Schrubben, waschen,',
  'shop.section.clean.headline.em': 'alles sauber.',
  'shop.section.clean.sub': 'Natron-basierte Reiniger und Waschhelfer, die auch bei hartnäckigem Schmutz überzeugen.',
  'shop.section.care.headline': 'Baden, pflegen,',
  'shop.section.care.headline.em': 'durchatmen.',
  'shop.section.care.sub': 'Bade- und Pflegeprodukte, abgestimmt auf den Alltag und den Sport.',
  'shop.feature.cook': 'Für die Küche',
  'shop.feature.clean': 'Für den Haushalt',
  'shop.feature.care': 'Für Körper & Pflege',
  'shop.feature.cta.cook': 'Zur Küche',
  'shop.feature.cta.clean': 'Zum Haushalt',
  'shop.feature.cta.care': 'Zur Pflege',
  // Kaiserhacks page — localized copy resolved from the API fixture keys.
  'kaiserhacks.eyebrow': '#kaiserhacks',
  'kaiserhacks.headline': 'Unsere Kaiserhacks',
  'kaiserhacks.sub': 'Regelmäßig werden bei uns tolle Ideen ausgehackt. Es wird gekocht, gebacken, gebastelt, gereinigt, geputzt oder der Körper gepflegt. Hier findet Ihr unsere vielseitigen Kaiserhacks.',
  'kaiserhacks.labels.categories': 'Kategorien',
  'kaiserhacks.labels.categoryNav': 'Kaiserhacks Kategorien',
  'kaiserhacks.labels.openVideo': 'Video öffnen',
  'kaiserhacks.labels.mockPlayer': 'Video-Platzhalter',
  'kaiserhacks.labels.community': 'Community',
  'kaiserhacks.labels.handoffNote': 'Die Videos sind Mockdaten. Titel, Texte, Poster und Videoquellen sind so strukturiert, dass sie direkt aus dem Backend geliefert werden können.',
  'kaiserhacks.category.kochenBacken.title': 'Kochen und Backen',
  'kaiserhacks.category.kochenBacken.summary': 'Schnelle Küchenideen für Obst, Getränke, Teig und herzhafte Klassiker.',
  'kaiserhacks.category.kochenBacken.cta': 'Mehr zu Kochen und Backen',
  'kaiserhacks.category.hausGarten.title': 'Haus und Garten',
  'kaiserhacks.category.hausGarten.summary': 'Praktische Routinen für Geschirr, Mülleimer, Bleche und kleine Plagegeister.',
  'kaiserhacks.category.hausGarten.cta': 'Mehr zu Haus und Garten',
  'kaiserhacks.category.koerperPflege.title': 'Körper und Pflege',
  'kaiserhacks.category.koerperPflege.summary': 'Sanfte Ideen für Peeling, Lippen, Nägel und die kleinen Momente draußen.',
  'kaiserhacks.category.koerperPflege.cta': 'Mehr zu Körper und Pflege',
  'kaiserhacks.tag.kueche': 'Küche',
  'kaiserhacks.tag.getraenk': 'Getränk',
  'kaiserhacks.tag.backen': 'Backen',
  'kaiserhacks.tag.teig': 'Teig',
  'kaiserhacks.tag.vorbereiten': 'Vorbereiten',
  'kaiserhacks.tag.kochen': 'Kochen',
  'kaiserhacks.tag.ofen': 'Ofen',
  'kaiserhacks.tag.haushalt': 'Haushalt',
  'kaiserhacks.tag.geschirr': 'Geschirr',
  'kaiserhacks.tag.geruch': 'Geruch',
  'kaiserhacks.tag.reinigen': 'Reinigen',
  'kaiserhacks.tag.haus': 'Haus',
  'kaiserhacks.tag.bad': 'Bad',
  'kaiserhacks.tag.pflege': 'Pflege',
  'kaiserhacks.tag.haut': 'Haut',
  'kaiserhacks.tag.lippen': 'Lippen',
  'kaiserhacks.tag.naegel': 'Nägel',
  'kaiserhacks.tag.sommer': 'Sommer',
  'kaiserhacks.hack.zuckerfreieLimonade.title': 'Zuckerfreie Limonade',
  'kaiserhacks.hack.zuckerfreieLimonade.description': 'Ein frischer Drink mit Zitrus, Wasser und einer Messerspitze Natron.',
  'kaiserhacks.hack.zuckerfreieLimonade.alt': 'Thumbnail zum Kaiserhack Zuckerfreie Limonade',
  'kaiserhacks.hack.burger.title': 'Burger',
  'kaiserhacks.hack.burger.description': 'Ein luftiger Burger-Teig-Hack für die nächste Grillrunde.',
  'kaiserhacks.hack.burger.alt': 'Thumbnail zum Kaiserhack Burger',
  'kaiserhacks.hack.obstGemueseWaesche.title': 'Obst- und Gemüse-Wäsche',
  'kaiserhacks.hack.obstGemueseWaesche.description': 'Natronwasser als kurze Vorbereitung für frische Zutaten.',
  'kaiserhacks.hack.obstGemueseWaesche.alt': 'Thumbnail zum Kaiserhack Obst- und Gemüse-Wäsche',
  'kaiserhacks.hack.ofenRisotto.title': 'Ofen-Risotto',
  'kaiserhacks.hack.ofenRisotto.description': 'Cremige Konsistenz aus dem Ofen, ohne lange am Herd zu stehen.',
  'kaiserhacks.hack.ofenRisotto.alt': 'Thumbnail zum Kaiserhack Ofen-Risotto',
  'kaiserhacks.hack.beautyZubehoer.title': 'Reinigung von Beauty Zubehör (Blender und Pinsel)',
  'kaiserhacks.hack.beautyZubehoer.description': 'Ein Reinigungs-Hack für Beauty Blender, Pinsel und Zubehör.',
  'kaiserhacks.hack.beautyZubehoer.alt': 'Thumbnail zum Kaiserhack Reinigung von Beauty Zubehör',
  'kaiserhacks.hack.metallspurenGeschirr.title': 'Metallspuren auf Geschirr entfernen',
  'kaiserhacks.hack.metallspurenGeschirr.description': 'Ein kurzer Reibe-Hack für graue Besteckspuren auf hellem Geschirr.',
  'kaiserhacks.hack.metallspurenGeschirr.alt': 'Thumbnail zum Kaiserhack Metallspuren auf Geschirr entfernen',
  'kaiserhacks.hack.muelleimerGerueche.title': 'Gerüche aus Mülleimer entfernen',
  'kaiserhacks.hack.muelleimerGerueche.description': 'Eine einfache Streu-Routine gegen unangenehme Gerüche.',
  'kaiserhacks.hack.muelleimerGerueche.alt': 'Thumbnail zum Kaiserhack Gerüche aus Mülleimer entfernen',
  'kaiserhacks.hack.expressBackblechReinigung.title': 'Express Backblech Reinigung',
  'kaiserhacks.hack.expressBackblechReinigung.description': 'Ein Backblech-Hack für eingebrannte Stellen und schnelle Nacharbeit.',
  'kaiserhacks.hack.expressBackblechReinigung.alt': 'Thumbnail zum Kaiserhack Express Backblech Reinigung',
  'kaiserhacks.hack.glowPeeling.title': 'Glow Peeling',
  'kaiserhacks.hack.glowPeeling.description': 'Eine kurze Pflegeroutine mit sanftem Peeling-Gefühl.',
  'kaiserhacks.hack.glowPeeling.alt': 'Thumbnail zum Kaiserhack Glow Peeling',
  'kaiserhacks.hack.lippenBlaeschen.title': 'Lippen-Bläschen',
  'kaiserhacks.hack.lippenBlaeschen.description': 'Ein schneller Pflegehinweis für gereizte Lippenmomente.',
  'kaiserhacks.hack.lippenBlaeschen.alt': 'Thumbnail zum Kaiserhack Lippen-Bläschen',
  'kaiserhacks.hack.lackschadenNagellack.title': 'Lackschaden beim Nagellack',
  'kaiserhacks.hack.lackschadenNagellack.description': 'Ein kleiner Vorbereitungs-Hack für saubere Nägel.',
  'kaiserhacks.hack.lackschadenNagellack.alt': 'Thumbnail zum Kaiserhack Lackschaden beim Nagellack',
  'kaiserhacks.hack.mueckenstich.title': 'Mückenstich - Juckt mich nicht!',
  'kaiserhacks.hack.mueckenstich.description': 'Eine kurze Sommer-Idee für juckende Stellen nach dem Draußensein.',
  'kaiserhacks.hack.mueckenstich.alt': 'Thumbnail zum Kaiserhack Mückenstich',
  // Product detail page — section labels and chrome.
  'product.back': 'Zur Übersicht',
  'product.backHome': 'Zur Startseite',
  'product.backGeneric': 'Zurück',
  'product.addToCart': 'In den Warenkorb',
  'product.outOfStock': 'Nicht verfügbar',
  'product.applications.title': 'Anwendungen',
  'product.applications.sub': 'Vom Backen bis zum Putzen — so vielseitig setzt Du Kaiser-Natron® im Alltag ein.',
  'product.about.title': 'Über das Produkt',
  'product.ingredients.title': 'Inhaltsstoffe',
  'product.warnings.title': 'Hinweise',
  'product.faq.title': 'Häufige Fragen',
  'product.related.title': 'Auch interessant',
  'product.related.sub': 'Produkte aus derselben Kategorie, die gut zusammenpassen.',
  'product.notFound.title': 'Produkt nicht gefunden',
  'product.notFound.sub': 'Diese Seite gibt es nicht oder das Produkt ist nicht mehr verfügbar.',
  'product.notFound.cta': 'Zurück zum Shop',
  // Property tags — short badges shown under the product name.
  'product.prop.vegan': 'Vegan',
  'product.prop.glutenfrei': 'Glutenfrei',
  'product.prop.laktosefrei': 'Laktosefrei',
  'product.prop.neutralisiert-saeuren': 'Neutralisiert Säuren',
  'product.prop.enthaertet': 'Enthärtet',
  'product.prop.mild-alkalisch': 'Mild-alkalisch',
  'product.prop.bio': 'Bio',
  'product.prop.made-in-austria': 'In Österreich abgefüllt',
  'product.prop.fuer-kueche-und-haushalt': 'Für Küche und Haushalt',
  'product.prop.fuer-boeden-und-oberflaechen': 'Für Böden und Oberflächen',
  'product.prop.frei-von-mikroplastik': 'Frei von Mikroplastik',
  'product.prop.frei-von-tierischen-substanzen': 'Frei von tierischen Substanzen',
  'product.prop.hautvertraeglich-dermatologisch-bestaetigt': 'Hautverträglich – dermatologisch bestätigt',
  'product.prop.hygienische-sauberkeit': 'Hygienische Sauberkeit',
  'product.prop.mit-entspannendem-apfelsinenduft': 'Mit entspannendem Apfelsinenduft',
  'product.prop.mit-dem-duft-der-latschenkiefer': 'Mit dem Duft der Latschenkiefer',
  'product.prop.mit-natuerlicher-seife': 'Mit natürlicher Seife',
  'product.prop.mit-pampelmusenduft': 'Mit Pampelmusenduft',
  'product.prop.mit-pflegendem-lanolin': 'Mit pflegendem Lanolin',
  'product.prop.nachhaltig-durch-tenside-nachwachsenden-ursprungs': 'Nachhaltig durch pflanzliche Tenside',
  'product.prop.ohne-konservierungsstoffe': 'Ohne Konservierungsstoffe',
  'product.prop.ohne-mineraloel': 'Ohne Mineralöl',
  'product.prop.wohltuend-und-erfrischend': 'Wohltuend und erfrischend',
  'cart.open': 'Warenkorb öffnen',
  'cart.label': 'Warenkorb',
  'cart.subtotal': 'Zwischensumme',
  'cart.checkout': 'Zur Kasse',
  'cart.remove': 'Entfernen',
  'cart.qty.increase': 'Menge erhöhen',
  'cart.qty.decrease': 'Menge verringern',
  'cart.empty.title': 'Dein Warenkorb ist leer',
  'cart.empty.subtitle': 'Leg Produkte aus dem Shop hinzu – sie erscheinen direkt hier.',
  'cart.added': 'Zum Warenkorb hinzugefügt',
  'menu.open': 'Menü öffnen',
  'menu.close': 'Menü schließen',
  'language.label': 'Sprache',
  'search.open': 'Suche öffnen',
  'search.label': 'Produkte durchsuchen',
  'search.placeholder': 'Produkte suchen …',
  'search.clear': 'Löschen',
  'search.results': 'Suchergebnisse',
  'search.noResults': 'Keine Produkte gefunden',
  'search.noResultsHint': 'Probiere eine andere Schreibweise oder einen allgemeineren Begriff.',
  'search.emptyHint': 'Tippe, um Produkte zu finden – z. B. „Natron Pulver" oder „Entkalker".',
  'search.suggested': 'Vorschläge',
  'search.hint.navigate': 'Navigieren',
  'search.hint.select': 'Auswählen',
  'search.hint.close': 'Schließen',

  // Design-system sidebar
  'ds.sidebar.brand': 'Marke',
  'ds.sidebar.tokens': 'Tokens',
  'ds.sidebar.components': 'Komponenten',
  'ds.sidebar.sections': 'Sektionen',
  'ds.sidebar.back': '← Zurück zur Website',
  'ds.mobile.currentPage': 'Aktuelle Seite',
  'ds.mobile.selectPage': 'Seite auswählen',
  'ds.nav.logo': 'Logo',
  'ds.nav.colors': 'Farben',
  'ds.nav.typography': 'Typografie',
  'ds.nav.radii': 'Radien',
  'ds.nav.shadows': 'Schatten',
  'ds.nav.motion': 'Motion',
  'ds.nav.icons': 'Icons',
  'ds.nav.buttons': 'Buttons',
  'ds.nav.badges': 'Badges',
  'ds.nav.inputs': 'Eingabefelder',
  'ds.nav.cards': 'Karten',
  'ds.nav.products': 'Produktkarten',
  'ds.nav.bundleCard': 'Bundle-Karte',
  'ds.nav.hero': 'Hero',
  'ds.nav.navbar': 'Navigation',
  'ds.nav.search': 'Suche',
  'ds.nav.qtyStepper': 'Mengenwähler',
  'ds.nav.cartDrawer': 'Warenkorb',
  'ds.nav.language': 'Sprachwahl',
  'ds.nav.bundles': 'Bundles-Sektion',
  'ds.nav.kaiserhacks': 'Kaiserhacks',
  'ds.nav.revitalization': 'Revitalization',
  'ds.nav.about': 'Über uns',
  'ds.nav.footer': 'Footer',
  'ds.nav.checkoutStepper': 'Kassen-Stepper',
  'ds.footer.title': 'Footer',
  'ds.footer.description': 'Sitewide-Footer mit Logo, Marken-Tagline, Erkundungs- und Rechtslinks. Drei Tonvarianten — cream (Standard), brand (Markengrün), paper (heller Akzent) — passen sich der Seitenfläche an.',
  'ds.footer.tone.cream': 'Cream (Standard)',
  'ds.footer.tone.brand': 'Brand',
  'ds.footer.tone.paper': 'Paper',
  'ds.checkoutStepper.title': 'Kassen-Stepper',
  'ds.checkoutStepper.description': 'Horizontale Fortschrittsanzeige mit den vier Schritten: Warenkorb → Konto → Versand → Bezahlung. Erledigte Schritte zeigen ein Häkchen, der aktive Schritt ist gefüllt, kommende Schritte sind dezent umrandet. Vorherige Schritte sind anklickbar; vorwärts springen wird über das `completed`-Flag gesteuert.',

  // Search overlay
  'ds.search.title': 'Suche',
  'ds.search.description': 'Volltextsuche über den Produktkatalog mit Bildvorschau. Mobil als Vollbild-Overlay, am Desktop als zentrierte Kommando-Palette. Tastaturbedienbar und standardmäßig in der primären Markenfarbe.',
  'ds.search.label': 'Produkte durchsuchen',
  'ds.search.placeholder': 'Produkte durchsuchen…',
  'ds.search.noResults': 'Keine Produkte gefunden.',
  'ds.search.suggested': 'Vorschläge',
  'ds.search.results': 'Ergebnisse',
  'ds.search.open': 'Suche öffnen',
  'ds.search.picked': 'Ausgewählt',
  'ds.search.tryHint': 'Tipp: probier „natron", „kalk", „wäsche" oder „bad".',
  'ds.search.integrationHint': 'Die Suche läuft über den im API-Layer (src/api/) exportierten Produktkatalog. Sobald das Backend steht, bleibt die Komponenten-Signatur unverändert.',
  'ds.search.hint.navigate': 'Navigieren',
  'ds.search.hint.select': 'Auswählen',
  'ds.search.hint.close': 'Schließen',

  // Common section eyebrows
  'ds.eyebrow.brand': 'Marke',
  'ds.eyebrow.tokens': 'Tokens',
  'ds.eyebrow.components': 'Komponenten',
  'ds.eyebrow.designSystem': 'Design System',

  // Common section headings
  'ds.heading.variants': 'Varianten',
  'ds.heading.sizes': 'Größen',
  'ds.heading.states': 'Zustände',
  'ds.heading.withIcons': 'Mit Icons',
  'ds.heading.onBrandSurface': 'Auf Markenfläche',
  'ds.heading.block': 'Block',
  'ds.heading.usage': 'Verwendung',
  'ds.heading.default': 'Standard',
  'ds.heading.tones': 'Töne',
  'ds.heading.interactive': 'Interaktiv',
  'ds.heading.withoutPadding': 'Ohne Innenabstand',
  'ds.heading.scale': 'Skala',
  'ds.heading.display': 'Display',
  'ds.heading.body': 'Fließtext',
  'ds.heading.nonUppercase': 'Ohne Großbuchstaben',
  'ds.heading.onDifferentSurfaces': 'Auf verschiedenen Flächen',
  'ds.heading.greenOnPaper': 'Grün auf Papier',
  'ds.heading.creamOnBrand': 'Creme auf Markengrün',

  // Kaiserhacks
  'ds.kaiserhacks.title': 'Kaiserhacks',
  'ds.kaiserhacks.description': 'Video-first Ratgebersektion mit drei Kategorien und backend-fähiger Datenstruktur für Titel, Teasertexte, Poster und Videoquellen.',
  'ds.kaiserhacks.contract.title': 'Datenvertrag',
  'ds.kaiserhacks.contract.body': 'Die Komponente erwartet Kategorien mit Hack-Karten. Jede Karte trägt id, title, description, duration, tags und video { src, poster, alt }. Die Mockdaten liegen im API-Layer, damit die spätere Backend-Anbindung nur diese Grenze austauscht.',

  // Logo
  'ds.logo.title': 'Logo',
  'ds.logo.description': 'Ein einzelnes SVG, das die Farbe über CSS `color` erbt. Verwende das grüne Wortbild auf hellen Flächen und das cremefarbene auf dem Markengrün.',
  'ds.logo.usageIntro': 'Farbe über Utility-Klassen setzen:',

  // Colors
  'ds.colors.title': 'Farben',
  'ds.colors.description': 'Pinie-Grün auf Creme mit warmem Gelb als Akzent. Alle UI-Farben fließen aus diesen Tokens — niemals Werte in Komponenten hartkodieren.',
  'ds.colors.group.brand': 'Marke',
  'ds.colors.group.accent': 'Akzent',
  'ds.colors.group.surface': 'Fläche',
  'ds.colors.group.ink': 'Schrift',
  'ds.colors.group.line': 'Linie',
  'ds.colors.group.semantic': 'Semantisch',

  // Typography
  'ds.typography.title': 'Typografie',
  'ds.typography.description': 'Fraunces für Display — warm, organisch, mit optischen Größen. DM Sans für Fließtext und UI — klar und geometrisch.',
  'ds.typography.serifDesc': 'Serife mit optischer Skalierung. Für Hero-Bereiche, Section-Titel und Produktnamen.',
  'ds.typography.sansDesc': 'Klare geometrische Sans-Serif. Für Fließtext, UI, Navigation und Labels.',
  'ds.typography.sample': 'Der schnelle braune Fuchs',

  // Radii
  'ds.radii.title': 'Radien',
  'ds.radii.description': 'Von dezenten 6px an kleinen Elementen bis hin zu vollen Pillen auf Buttons. Passend zum weichen, organischen Gefühl der Referenzseite.',

  // Shadows
  'ds.shadows.title': 'Schatten',
  'ds.shadows.description': 'Alle Schatten sind grünlich statt neutral schwarz getönt — sie wirken warm und sind Teil der Palette.',
  'ds.shadows.sm.note': 'Dezent — Nav beim Scrollen, ruhende Karten',
  'ds.shadows.md.note': 'Mittel — Hover des primären Buttons',
  'ds.shadows.lg.note': 'Groß — schwebende Karten, Overlays',

  // Motion
  'ds.motion.title': 'Motion',
  'ds.motion.description': 'Bewegung dient dem Verständnis, nicht der Dekoration. Drei UI-Dauern plus eine szenische Schleife, eine Standard-Kurve, und klare Regeln für Nutzer mit reduzierter Bewegung.',
  'ds.motion.philosophy.title': 'Philosophie',
  'ds.motion.principle.purpose': 'Nur animieren, wenn Hierarchie, Zustand oder Kontinuität erklärt werden. Dekorative Bewegung wird weggelassen.',
  'ds.motion.principle.cadence': 'Drei Dauern, eine Kurve: 120ms für Zustand, 200ms für UI-Übergänge, 320ms für größere Reveals. --ease-out als Standard — Ankünfte wirken gesetzt, nicht schnippisch.',
  'ds.motion.principle.scenic': 'Szenische Schleifen (Orbit, weiche Pulse) laufen linear über 10–20 s. Lang genug, um als Atmosphäre zu lesen, nie als tickende Uhr.',
  'ds.motion.principle.reduced': 'prefers-reduced-motion wird immer respektiert. Schleifen einfrieren, Übergänge zusammenfallen lassen — wer Bewegung ablehnt, wird dafür nicht bestraft.',
  'ds.motion.durations.title': 'Dauern',
  'ds.motion.duration.fast.note': 'Zustand — Hover, Focus, Press.',
  'ds.motion.duration.base.note': 'Standard-UI — Farbwechsel, Öffnen/Schließen.',
  'ds.motion.duration.slow.note': 'Größere Reveals — Drawer, Overlays, Karten.',
  'ds.motion.duration.scene.note': 'Szenische Wechsel — ganze Sektion, Route-Wechsel.',
  'ds.motion.duration.orbit.note': 'Umgebungsschleifen — Orbit-Ringe, weiche Pulse.',
  'ds.motion.easings.title': 'Kurven',
  'ds.motion.ease.out.note': 'Standard. Ankünfte landen weich.',
  'ds.motion.ease.inOut.note': 'Nur wenn ein Element kommen und wieder gehen muss.',
  'ds.motion.ease.linear.note': 'Für mechanische Schleifen — Orbit, Spinner.',
  'ds.motion.animations.title': 'Benannte Animationen',
  'ds.motion.animate.orbit.note': 'Ring rotiert um ein zentriertes Icon. Verwendet im Revitalization-Abschnitt.',
  'ds.motion.animate.fadeInUp.note': 'Einblenden mit 8 px Versatz — für Eintrittsmomente.',
  'ds.motion.animate.pulseSoft.note': 'Ruhiger Opazitäts-Puls — für Live-Indikatoren.',
  'ds.motion.reduced.title': 'Reduzierte Bewegung',
  'ds.motion.reduced.body': 'Globale Regel in motion.css: bei prefers-reduced-motion: reduce kollabieren alle Animations- und Transition-Dauern auf ~0 ms. Komponenten brauchen keine eigenen Weichen dafür.',
  'ds.motion.replay': 'Neu abspielen',
  'ds.motion.fadePreview': 'Einblenden',

  // Icons
  'ds.icons.title': 'Icons',
  'ds.icons.description': 'Ein kuratiertes strich-basiertes Icon-Set im 24x24-Raster. Wird über die Icon-Komponente gerendert — erbt die Farbe von currentColor.',
  'ds.icons.search': 'Icons suchen…',
  'ds.icons.copyHint': 'Klick auf eine Kachel kopiert das Snippet.',
  'ds.icons.copied': 'Kopiert!',
  'ds.icons.noMatch': 'Keine Icons stimmen mit',
  'ds.icons.sizeDefault': '20 (Standard)',
  'ds.icons.addHint': 'Neue Icons in %s hinzufügen. Nutze eine 24×24-viewBox, strichbasierte Pfade ohne Füllungen — die Komponente übernimmt die Farbe per %s. Gib %s für Screenreader an; weglassen bei dekorativen Icons.',
  'ds.icons.group.commerce': 'Commerce',
  'ds.icons.group.navigation': 'Navigation',
  'ds.icons.group.actions': 'Aktionen',
  'ds.icons.group.contact': 'Kontakt',
  'ds.icons.group.feedback': 'Feedback',
  'ds.icons.group.devices': 'Geräte',

  // Buttons
  'ds.buttons.title': 'Buttons',
  'ds.buttons.description': 'Pillenförmig. Pinie-grüner Primary mit warmgelbem Label für die wichtigste Aktion, warmgelber Accent auf Markenflächen, plus Secondary-, Ghost- und Danger-Varianten.',
  'ds.buttons.primary': 'Primary',
  'ds.buttons.accent': 'Accent',
  'ds.buttons.secondary': 'Secondary',
  'ds.buttons.ghost': 'Ghost',
  'ds.buttons.danger': 'Danger',
  'ds.buttons.small': 'Klein',
  'ds.buttons.medium': 'Mittel',
  'ds.buttons.large': 'Groß',
  'ds.buttons.disabled': 'Deaktiviert',
  'ds.buttons.loading': 'Lädt',
  'ds.buttons.addToCart': 'In den Warenkorb',
  'ds.buttons.learnMore': 'Mehr erfahren',
  'ds.buttons.save': 'Merken',
  'ds.buttons.confirm': 'Bestätigen',
  'ds.buttons.continueShopping': 'Weiter einkaufen',

  // Badges
  'ds.badges.title': 'Badges',
  'ds.badges.description': 'Kleine Großbuchstaben-Labels für Metadaten, Status und Eyebrows über Überschriften.',
  'ds.badges.neutral': 'Neutral',
  'ds.badges.brand': 'Marke',
  'ds.badges.accent': 'Akzent',
  'ds.badges.subtle': 'Dezent',
  'ds.badges.success': 'Erfolg',
  'ds.badges.warning': 'Warnung',
  'ds.badges.danger': 'Fehler',
  'ds.badges.newRelease': 'Neu veröffentlicht',
  'ds.badges.featured': 'Empfohlen',

  // Inputs
  'ds.inputs.title': 'Eingabefelder',
  'ds.inputs.description': 'Papier-Fläche mit dünnem grün getöntem Rahmen. Großbuchstaben-Labels. Der Fokus vertieft den Rahmen zu Markengrün.',
  'ds.inputs.email': 'E-Mail',
  'ds.inputs.emailHint': 'Wir teilen dies nie.',
  'ds.inputs.password': 'Passwort',
  'ds.inputs.required': 'Pflichtfeld',
  'ds.inputs.requiredError': 'Dieses Feld ist erforderlich',
  'ds.inputs.disabled': 'Deaktiviert',
  'ds.inputs.disabledPlaceholder': 'Hier geht nichts',

  // Cards
  'ds.cards.title': 'Karten',
  'ds.cards.description': 'Flächen zum Gruppieren von Inhalten. Drei Töne — Papier, Creme, Marke — und ein optionales interaktives Anheben beim Hover.',
  'ds.cards.paper': 'Papier',
  'ds.cards.cream': 'Creme',
  'ds.cards.brand': 'Marke',
  'ds.cards.paperTitle': 'Standardfläche',
  'ds.cards.paperBody': 'Die erste Wahl für die meisten Inhalte. Hoher Kontrast auf dem cremefarbenen Seitenhintergrund.',
  'ds.cards.creamTitle': 'Warme Fläche',
  'ds.cards.creamBody': 'Eine weichere Alternative für sekundäre Bereiche oder Callouts.',
  'ds.cards.brandTitle': 'Dunkle Fläche',
  'ds.cards.brandBody': 'Für Feature-Panels, CTAs und Momente, die auffallen wollen.',
  'ds.cards.hoverMe': 'Hover mich',
  'ds.cards.hoverMeToo': 'Mich auch',
  'ds.cards.hoverBody': 'Hebt sich beim Hover mit weichem grün getönten Schatten. Für klickbare Items im Raster.',
  'ds.cards.hoverBodyAlt': 'Gleiches Verhalten auf der warmen Fläche.',
  'ds.cards.mediaTitle': 'Media-Karte',
  'ds.cards.mediaBody': 'Wenn die Karte ein randloses Bild oder einen Header braucht, übergib',

  // Product card
  'ds.product.title': 'Produktkarte',
  'ds.product.description': 'Zusammengesetzt aus Karte, Badge, Button und Icon. Cutout-Bild auf einer Creme-Medienfläche, Titel mit Größe, Preis in der Markenfarbe und ein blockweiter „In den Warenkorb"-Primary.',
  'ds.product.outOfStock': 'Nicht verfügbar',
  'ds.product.added': 'Hinzugefügt',

  // Hero
  'ds.hero.title': 'Hero',
  'ds.hero.description': 'Ganzflächiger Bühnenbereich für die Startseite und Kategorie-Auftakte. Eyebrow, Display-Headline mit optionaler Kursiv-Hervorhebung, Unterzeile, Produkt-Cutout auf dekorativer Scheibe und ein Primary/Secondary-CTA-Paar. Responsiv von 390 bis 1280 px, drei Flächen­töne, zwei Layouts.',
  'ds.hero.variant.label': 'Layout',
  'ds.hero.variant.split': 'Split',
  'ds.hero.variant.centered': 'Zentriert',
  'ds.hero.eyebrow': 'Neu im Shop',
  'ds.hero.headline.a': 'Kaiser-Natron',
  'ds.hero.headline.em': 'für alles',
  'ds.hero.headline.b': 'was glänzen soll.',
  'ds.hero.sub': 'Reinigt, backt und neutralisiert Gerüche. Die 250-g-Großpackung für den Haushalt, der sich auf das Original verlässt.',

  // Home page – second-fold banner
  'home.banner.eyebrow': 'Vielseitig einsetzbar',
  'home.banner.headline.a': 'Ein Pulver,',
  'home.banner.headline.em': 'hundert Anwendungen',
  'home.banner.headline.b': 'im Haushalt.',
  'home.banner.sub': 'Vom Kuchen über das Bad bis zur Wäsche – Kaiser-Natron leistet überall still und zuverlässig seine Arbeit.',

  // Home page – mobile-only hero category shortcuts (Clean / Cook / Care).
  'home.categories.clean': 'Putzen',
  'home.categories.cook': 'Kochen',
  'home.categories.care': 'Pflege',

  // Bundle detail page (/bundles/<slug>) + home grid copy. Each
  // bundle's name / usage / description / items / image alt / badge
  // is keyed individually so the structural data in src/api/bundles.js
  // can stay locale-free.
  'bundle.items': 'Im Bundle enthalten',
  'bundle.memberPrice': 'Mitgliederpreis',
  'product.notFound.title': 'Nicht gefunden',
  'product.notFound.body': 'Dieser Eintrag ist nicht mehr verfügbar oder wurde verschoben.',

  'bundle.haushalt.name': 'Haushalts-Bundle',
  'bundle.haushalt.usage': '2–3× pro Quartal empfohlen',
  'bundle.haushalt.description': 'Die drei Klassiker für die wöchentliche Haushaltsroutine — Pulver, Allzweck-Spray und Spülmittel. Spart gegenüber dem Einzelkauf und sorgt dafür, dass die Standards immer im Schrank sind.',
  'bundle.haushalt.imageAlt': 'Haushalts-Bundle mit Kaiser-Natron',
  'bundle.haushalt.badge': 'Bestseller',
  'bundle.haushalt.items.0': '1× Kaiser-Natron Pulver 250 g',
  'bundle.haushalt.items.1': '1× Allzweck-Spray 500 ml',
  'bundle.haushalt.items.2': '1× Spülmittel 500 ml',

  'bundle.waesche.name': 'Wäsche & Pflege',
  'bundle.waesche.usage': '1–2× pro Quartal',
  'bundle.waesche.description': 'Wäschepflege auf traditioneller Basis — Wasch-Soda für die Vorwäsche, Wäschestärke für Form, Fleckenweg für die hartnäckigen Fälle. Drei Helfer, eine Routine.',
  'bundle.waesche.imageAlt': 'Wäsche & Pflege Bundle',
  'bundle.waesche.items.0': '1× Holste Wasch-Soda 500 g',
  'bundle.waesche.items.1': '1× Gazelle Wäschestärke 1 l',
  'bundle.waesche.items.2': '1× Linda Fleckenweg 200 ml',

  'bundle.wohlfuehl.name': 'Wohlfühl-Bundle',
  'bundle.wohlfuehl.usage': '1× pro Quartal',
  'bundle.wohlfuehl.description': 'Drei Anwendungen für den Körper — Tabletten zur Verdauung, Voll- und Fußbad zur Entspannung. Die ruhigste Routine im Sortiment.',
  'bundle.wohlfuehl.imageAlt': 'Wohlfühl-Bundle mit Kaiser-Natron Bad',
  'bundle.wohlfuehl.items.0': '1× Kaiser-Natron Tabletten 100 g',
  'bundle.wohlfuehl.items.1': '1× Kaiser-Natron Bad 500 g',
  'bundle.wohlfuehl.items.2': '1× Kaiser-Natron Fußbad 500 g',

  // Home page – brand hero (top-of-fold, splash artwork settles here).
  'home.brand.headline.a': 'Kaiser Natron –',
  'home.brand.headline.em': 'der Premium-Anbieter',
  'home.brand.headline.b': 'für Reinigen, Kochen, Pflegen.',
  'home.brand.since': 'seit 1881',
  // Home page – 3-product teaser sitting between brand hero and product hero.
  'home.teaser.eyebrow': 'Drei Klassiker',
  'home.teaser.headline': 'Für jeden Bereich das Richtige.',
  'home.teaser.sub': 'Ein Beispiel aus jeder Familie – Kochen, Reinigen, Pflegen.',
  'home.teaser.cta': 'Kaiser Natron Shop',

  // Checkout page (DE).
  'checkout.eyebrow': 'Bestellung abschließen',
  'checkout.headline': 'Fast geschafft —',
  'checkout.headline.em': 'nur ein paar Angaben.',
  'checkout.sub': 'Lieferadresse, Zahlung, fertig. Ihre Daten werden verschlüsselt übertragen und nach EU-Standard verarbeitet.',
  'checkout.summary.heading': 'Ihre Bestellung',
  'checkout.section.express': 'Express-Checkout',
  'checkout.express.sub': 'In einem Schritt mit Apple Pay oder Google Pay',
  'checkout.express.or': 'oder mit Adresse fortfahren',
  'checkout.express.applePay.aria': 'Mit Apple Pay bezahlen',
  'checkout.express.googlePay.aria': 'Mit Google Pay bezahlen',
  'checkout.section.contact': 'Kontakt',
  'checkout.section.shipping': 'Lieferadresse',
  'checkout.section.billing': 'Rechnungsadresse',
  'checkout.section.payment': 'Zahlung',
  'checkout.field.email': 'E-Mail',
  'checkout.field.marketing': 'Mich zu Aktionen und Neuigkeiten informieren',
  'checkout.field.name': 'Name',
  'checkout.field.company': 'Firma (optional)',
  'checkout.field.street': 'Straße & Hausnummer',
  'checkout.field.postal': 'PLZ',
  'checkout.field.city': 'Stadt',
  'checkout.field.country': 'Land',
  'checkout.field.phone': 'Telefon (optional)',
  'checkout.field.billingSame': 'Rechnungs- = Lieferadresse',
  'checkout.placeholder.email': 'sie@beispiel.at',
  'checkout.hint.email': 'Wir schicken Ihnen die Bestellbestätigung an diese Adresse.',
  'checkout.hint.phone': 'Nur bei Lieferproblemen, kein Marketing.',
  'checkout.payment.secure': 'SSL-verschlüsselt · Stripe',
  'checkout.cta.continue': 'Zur Zahlung',
  'checkout.cta.pay': 'Jetzt bezahlen',
  'checkout.error.empty': 'Ihr Warenkorb ist leer.',
  'checkout.error.payment': 'Zahlung konnte nicht abgeschlossen werden.',
  'checkout.error.generic': 'Etwas ist schiefgelaufen. Bitte erneut versuchen.',
  'checkout.success.eyebrow': 'Bestellung bestätigt',
  'checkout.success.headline': 'Vielen Dank,',
  'checkout.success.headline.em': 'Ihre Bestellung ist unterwegs.',
  'checkout.success.sub': 'Wir haben Ihre Zahlung erhalten und beginnen mit der Vorbereitung. Eine Bestätigung kommt gleich per E-Mail.',
  'checkout.success.orderId': 'Bestell-Nr.',
  'checkout.success.email': 'Eine Bestätigung haben wir an die angegebene E-Mail-Adresse geschickt.',
  'checkout.success.missing': 'Keine Bestellnummer in der URL — Status kann nicht abgerufen werden.',
  'checkout.success.cta.shop': 'Weiter einkaufen',
  'checkout.success.cta.home': 'Zur Startseite',

  // Bundles section — copy for the sidebar, card chrome, and carousel.
  'bundles.headline.a': 'Bundles &',
  'bundles.headline.em': 'Vorteile',
  'bundles.sub': 'Als Mitglied sparst du durch Staffelrabatte, exklusive Bundle-Deals und Frühzugang auf neue Produkte.',
  'bundles.benefit.1.title': 'Staffelrabatt bis −25 %',
  'bundles.benefit.2.title': 'Exklusive Bundle-Deals',
  'bundles.benefit.3.title': 'Frühzugang & Neuheiten',
  'bundles.joinCta': 'Mitglied werden',
  'bundles.card.priceLabel': 'Verkaufspreis',
  'bundles.card.memberPrefix': 'Mitglieder:',
  'bundles.card.moreItems': 'weitere',
  // Carousel chrome — lives under ds.* because it belongs to the Bundles
  // component itself, not to any particular page's content.
  'ds.bundles.carousel.label': 'Bundle-Karussell',
  'ds.bundles.carousel.prev': 'Vorheriges Bundle',
  'ds.bundles.carousel.next': 'Nächstes Bundle',
  'ds.bundles.carousel.goToSlide': 'Zu Bundle',

  // Design-system documentation pages (BundleCard, Bundles, Revitalization, About)
  'ds.bundleCard.title': 'Bundle-Karte',
  'ds.bundleCard.description': 'Zusammengesetzte Karte für kuratierte Produktpakete. Medien mit optionalem Badge, Nutzungs-Label, Titel, bis zu drei Artikeln, Preisblock (inkl. Mitgliederpreis) und Primär-CTA. Zwei Layouts — vertikal für Raster, horizontal für Karussell-Slides von md aufwärts.',
  'ds.bundles.title': 'Bundles-Sektion',
  'ds.bundles.description': 'Kompound-Sektion mit fixer Sidebar (Headline + drei Vorteile + Mitglieder-CTA) und einem Scroll-Snap-Karussell mit horizontalen Bundle-Karten von md aufwärts. Tastatur und Touch-Swipe funktionieren out of the box; die Pfeile loopen am Ende zurück zum Anfang.',
  'ds.revitalization.title': 'Revitalization Center',
  'ds.revitalization.description': 'Zentrierte Feature-Teaser-Sektion auf Markengrün. Eyebrow-Badge, Display-Headline mit italic-Highlight, Unterzeile, bis zu drei Pillar-Punkte mit Akzent-Dots und ein einzelner CTA. Gedacht für „Demnächst"-Ankündigungen.',
  'ds.about.title': 'About / Geschichte',
  'ds.about.description': 'Zentrierte Intro-Zone plus drei Meilenstein-Karten in den drei Flächentönen (Papier / Creme / Marke) von links nach rechts. Fortlaufende Tonabfolge gibt der Zeitachse visuelle Progression.',

  // Revitalization Center — brand-green coming-soon section.
  'revit.eyebrow': 'Demnächst',
  'revit.headline.a': 'Revitalization',
  'revit.headline.em': 'Center',
  'revit.sub': 'Ein eigenes Wissens-Universum für NaHCO₃ – Wissenschaft, Therapiekonzepte und professionelle Anwendungsguides. Mehr als ein Shop.',
  'revit.feature.1.title': 'Wissenschaft',
  'revit.feature.2.title': 'Therapie',
  'revit.feature.3.title': 'Natürlich heilen',
  'revit.notifyCta': 'Early Access sichern',

  // About / History — cream section, three milestones.
  'about.eyebrow': 'Geschichte & Wissenschaft',
  'about.headline': 'Über Kaiser-Natron®',
  'about.sub': 'Mehr als 140 Jahre Tradition, Reinheit und die Wissenschaft hinter dem Unterschied.',
  'about.milestone.1.year': '1881',
  'about.milestone.1.title': 'Die Gründung',
  'about.milestone.1.text': 'Arnold Holste gründet in Bielefeld das Unternehmen, das Kaiser-Natron® zur Welt bringt – reines Natriumhydrogencarbonat in Lebensmittelqualität, zu einer Zeit, als Chemie noch Handwerk war.',
  'about.milestone.2.year': 'Früh 1900er',
  'about.milestone.2.title': 'Die Ikone entsteht',
  'about.milestone.2.text': 'Kaiser-Natron® wird zum Haushalts-Klassiker im deutschsprachigen Raum. Großmütter schwören auf seine universelle Kraft – vom Backen bis zum Reinigen.',
  'about.milestone.3.year': 'Heute',
  'about.milestone.3.title': 'Premium-Standard E500(ii)',
  'about.milestone.3.text': 'Kaiser-Natron® trägt die Lebensmittelzulassung E500(ii) – extra gereinigt, standardisiert und chargenweise geprüft. Das Original bleibt unverändert gut.',

  // Search section
  'ds.search.title': 'Produktsuche',
  'ds.search.description': 'Suchknopf rechts in der Navbar (links der Sprachwahl) und links unten als Floating-Button auf dem Telefon. Klick öffnet ein Full-Screen-Overlay auf Mobilgeräten bzw. ein zentriertes Panel auf dem Desktop. Eingabefeld ist autofokussiert, Ergebnisliste aktualisiert sich beim Tippen, Pfeiltasten / Enter / Esc werden unterstützt.',
  'ds.search.demo.label': 'Demo öffnen',
  'ds.search.demo.hint': 'Probiere „Natron", „Pulver", „Entkalker" oder „Spray".',

  // Navbar section
  'ds.navbar.title': 'Navigation',
  'ds.navbar.description': 'Logo + Nav + Warenkorb, in drei Flächentönen. Auf Mobilgeräten behält die obere Leiste das Logo, Menü + Warenkorb wechseln in ein ergonomisches bodennahes rechtes Floating-Cluster. Das Menü öffnet ein vollflächiges markengrünes Overlay.',
  'ds.navbar.tone': 'Navigation-Ton',
  'ds.navbar.tone.paper': 'Papier',
  'ds.navbar.tone.cream': 'Creme',
  'ds.navbar.tone.brand': 'Marke',
  'ds.navbar.layout': 'Layout',
  'ds.navbar.layout.standard': 'Standard',
  'ds.navbar.layout.floating': 'Schwebend',

  // Language switcher section
  'ds.language.title': 'Sprachwahl',
  'ds.language.description': 'Kompakte Pille zum Umschalten zwischen DE, AT und EN. Zwei Töne — Papier für helle Flächen, Marke für das Markengrün — plus ein schwebender Modus, der sich oben rechts an die Ecke heftet.',
  'ds.language.paperNote': 'Standardton für helle UI-Flächen wie Karten oder Toolbars.',
  'ds.language.creamNote': 'Stärkerer Rahmen, damit die Pille auf warmen Cremflächen Definition behält.',
  'ds.language.brandNote': 'Für Einsätze auf dem Markengrün — z. B. im mobilen Menü-Overlay.',
  'ds.language.floating': 'Schwebend',
  'ds.language.floatingNote': 'Mit dem Prop `floating` dockt die Pille rechts oben im Viewport an (24px Abstand). Genau so wird sie im Design-System oben rechts eingesetzt.',

  // Quantity stepper
  'ds.qtyStepper.title': 'Mengenwähler',
  'ds.qtyStepper.description': 'Kompaktes Plus/Minus-Steuerelement zur Auswahl einer Menge. Pillenförmig, passend zu Buttons und Input-Rahmen, erbt Ton und Radius aus den Tokens. Unterstützt `min`/`max`-Grenzen und einen deaktivierten Zustand.',
  'ds.qtyStepper.minBoundary': 'Untergrenze',
  'ds.qtyStepper.maxBoundary': 'Obergrenze',

  // Cart drawer
  'ds.cartDrawer.title': 'Warenkorb-Panel',
  'ds.cartDrawer.description': 'Seitlich einfahrendes Panel auf Creme-Fläche. Zeigt die Positionen mit Bild, Größe, Mengen-Stepper und Zeilensumme; darunter Zwischensumme und ein breiter Zur-Kasse-Button. Auf Mobilgeräten nimmt das Panel die volle Breite ein, ab 440 px fixiert es rechts an. Scroll-Lock, ESC zum Schließen, Klick auf den Hintergrund schließt ebenfalls.',
  'ds.cartDrawer.demoLabel': 'Warenkorb befüllen & öffnen',
  'ds.cartDrawer.demoHint': 'Legt zwei Beispielartikel an und öffnet das Panel.',
  'ds.cartDrawer.integrationTitle': 'Backend-Integration',
  'ds.cartDrawer.integrationBody': 'Die Komponente kennt kein Backend direkt – sie emittiert `update-quantity`, `remove` und `checkout`. Ihr Zustand kommt aus dem API-Layer in `src/api/cart.js`, der heute lokal arbeitet und später 1:1 auf die dokumentierten Endpunkte (siehe `docs/api/cart.md`) umgestellt wird, ohne dass oben etwas anzupassen ist.',

  // Footer — sitewide chrome with legal + explore links.
  'footer.tagline': 'Das Original aus Österreich. Reines Natron für Küche, Haushalt und Pflege – seit Generationen.',
  'footer.explore.heading': 'Entdecken',
  'footer.explore.shop': 'Shop',
  'footer.explore.pflege': 'Pflege',
  'footer.explore.haushalt': 'Haushalt',
  'footer.explore.bundles': 'Bundles',
  'footer.explore.about': 'Über uns',
  'footer.legal.heading': 'Rechtliches',
  'footer.legal.label': 'Rechtliche Hinweise',
  'footer.legal.impressum': 'Impressum',
  'footer.legal.datenschutz': 'Datenschutz',
  'footer.copyright': 'Kaiser-Natron® · Alle Rechte vorbehalten.',
  'footer.madeIn': 'In Österreich abgefüllt.',

  // Legal pages — placeholder copy. Final wording must be reviewed by legal counsel
  // before launch; the structure mirrors the §5 ECG / §25 MedienG / DSGVO requirements.
  'legal.impressum.eyebrow': 'Anbieterkennzeichnung',
  'legal.impressum.title': 'Impressum',
  'legal.impressum.updated': 'Stand: Mai 2026',
  'legal.impressum.section.operator.heading': 'Medieninhaber & Diensteanbieter',
  'legal.impressum.section.operator.body': 'Holste GmbH\nMusterstraße 1\n1010 Wien, Österreich\n\nGeschäftsführung: [Name der Geschäftsführung]',
  'legal.impressum.section.contact.heading': 'Kontakt',
  'legal.impressum.section.contact.body': 'Telefon: +43 (0) 1 000 00 00\nE-Mail: kontakt@kaiser-natron.at\nWeb: https://kaiser-natron.at',
  'legal.impressum.section.register.heading': 'Firmenbuch',
  'legal.impressum.section.register.body': 'Firmenbuchnummer: FN 000000a\nFirmenbuchgericht: Handelsgericht Wien',
  'legal.impressum.section.vat.heading': 'UID-Nummer',
  'legal.impressum.section.vat.body': 'UID: ATU00000000\nGISA-Zahl: 00000000',
  'legal.impressum.section.authority.heading': 'Aufsichtsbehörde & Gewerbeordnung',
  'legal.impressum.section.authority.body': 'Zuständige Aufsichtsbehörde: Magistratisches Bezirksamt Wien\nKammer: Wirtschaftskammer Wien\nAnwendbare Rechtsvorschrift: Gewerbeordnung (www.ris.bka.gv.at)',
  'legal.impressum.section.liability.heading': 'Haftung für Inhalte und Links',
  'legal.impressum.section.liability.body': 'Die Inhalte dieser Website werden mit größtmöglicher Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Für Inhalte externer Links sind ausschließlich deren Betreiber verantwortlich.',
  'legal.impressum.section.copyright.heading': 'Urheberrecht',
  'legal.impressum.section.copyright.body': 'Sämtliche Inhalte (Texte, Bilder, Grafiken, Logos) auf dieser Website unterliegen dem Urheberrecht. Vervielfältigung, Bearbeitung oder Verbreitung außerhalb der gesetzlichen Schranken bedürfen der vorherigen schriftlichen Zustimmung der Holste GmbH.',

  'legal.datenschutz.eyebrow': 'Datenschutzerklärung',
  'legal.datenschutz.title': 'Datenschutz',
  'legal.datenschutz.updated': 'Stand: Mai 2026',
  'legal.datenschutz.section.controller.heading': 'Verantwortlicher',
  'legal.datenschutz.section.controller.body': 'Verantwortlich im Sinne der DSGVO und des österreichischen Datenschutzgesetzes ist die Holste GmbH, Musterstraße 1, 1010 Wien. Anfragen rund um den Datenschutz richten Sie bitte an datenschutz@kaiser-natron.at.',
  'legal.datenschutz.section.scope.heading': 'Geltungsbereich',
  'legal.datenschutz.section.scope.body': 'Diese Erklärung gilt für die Website kaiser-natron.at sowie alle damit verbundenen Online-Angebote, einschließlich des Bestell- und Kassenprozesses. Für externe Dienste, auf die wir verlinken, gelten ausschließlich deren eigene Datenschutzbestimmungen.',
  'legal.datenschutz.section.legalBasis.heading': 'Rechtsgrundlagen',
  'legal.datenschutz.section.legalBasis.body': 'Wir verarbeiten personenbezogene Daten auf Grundlage von Art. 6 Abs. 1 DSGVO – insbesondere zur Vertragserfüllung (lit. b), zur Erfüllung rechtlicher Pflichten (lit. c) sowie auf Basis Ihrer Einwilligung (lit. a). Marketingbezogene Verarbeitungen erfolgen ausschließlich nach Opt-in.',
  'legal.datenschutz.section.data.heading': 'Welche Daten wir verarbeiten',
  'legal.datenschutz.section.data.body': 'Im Rahmen einer Bestellung erheben wir die für Vertragsabschluss und Versand notwendigen Daten: Name, Anschrift, E-Mail, optional Telefon. Bei einem Kundenkonto zusätzlich Ihre Zugangsdaten in verschlüsselter Form. Beim Aufruf der Website werden technisch erforderliche Server-Logs (IP, User-Agent, Zeitpunkt) für maximal sieben Tage gespeichert.',
  'legal.datenschutz.section.cookies.heading': 'Cookies',
  'legal.datenschutz.section.cookies.body': 'Wir setzen ausschließlich technisch notwendige Cookies (Sprachwahl, Warenkorb, Sitzung). Tracking- oder Marketing-Cookies werden nur nach ausdrücklicher Einwilligung über das Cookie-Banner geladen.',
  'legal.datenschutz.section.analytics.heading': 'Reichweitenmessung',
  'legal.datenschutz.section.analytics.body': 'Sofern aktiviert, verwenden wir eine selbst gehostete, anonymisierte Reichweitenmessung ohne Drittland-Übermittlung. IP-Adressen werden gekürzt; es werden keine Profile gebildet, die Sie persönlich identifizieren.',
  'legal.datenschutz.section.payments.heading': 'Zahlungsabwicklung',
  'legal.datenschutz.section.payments.body': 'Bezahlungen werden über den Zahlungsdienstleister Stripe (Stripe Payments Europe, Limited, Irland) abgewickelt. Dabei werden Zahlungsdaten direkt an Stripe übertragen; wir erhalten lediglich Zahlungsstatus und Transaktions-ID. Details siehe stripe.com/at/privacy.',
  'legal.datenschutz.section.rights.heading': 'Ihre Rechte',
  'legal.datenschutz.section.rights.body': 'Sie haben jederzeit das Recht auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit sowie Widerspruch. Eine erteilte Einwilligung können Sie jederzeit ohne Angabe von Gründen widerrufen. Beschwerden können Sie bei der österreichischen Datenschutzbehörde (dsb.gv.at) einreichen.',
  'legal.datenschutz.section.retention.heading': 'Speicherdauer',
  'legal.datenschutz.section.retention.body': 'Bestelldaten werden gemäß § 132 BAO sieben Jahre aufbewahrt. Marketing-Einwilligungen werden bis zum Widerruf, technische Logs maximal sieben Tage gespeichert.',
  'legal.datenschutz.section.contact.heading': 'Kontakt für Datenschutzanfragen',
  'legal.datenschutz.section.contact.body': 'Für alle Anliegen rund um den Datenschutz erreichen Sie uns unter datenschutz@kaiser-natron.at oder postalisch an die im Impressum angegebene Adresse.',

  // Category landings — Pflege (care) and Haushalt (clean).
  'category.pflege.eyebrow': 'Pflege & Wohlbefinden',
  'category.pflege.title.a': 'Baden, pflegen,',
  'category.pflege.title.em': 'durchatmen.',
  'category.pflege.sub': 'Bade- und Pflegeprodukte rund um Kaiser-Natron® — abgestimmt auf Alltag, Sport und entspannte Stunden.',
  'category.pflege.products.headline': 'Sortiment für',
  'category.pflege.products.headline.em': 'Körper & Pflege',
  'category.pflege.products.sub': 'Vom basischen Vollbad bis zum Fußbad mit Latschenkiefer — alles auf Basis des Originals.',
  'category.pflege.benefits.eyebrow': 'Warum Natron pflegt',
  'category.pflege.benefits.headline': 'Mild, basisch,',
  'category.pflege.benefits.headline.em': 'hautverträglich.',
  'category.pflege.benefit.1.title': 'Säure-Basen-Balance',
  'category.pflege.benefit.1.text': 'Natron im Badewasser unterstützt das natürliche Hautgleichgewicht und neutralisiert überschüssige Säuren – wohltuend nach Sport und langen Tagen.',
  'category.pflege.benefit.2.title': 'Ohne Reizstoffe',
  'category.pflege.benefit.2.text': 'Reines Natriumhydrogencarbonat statt aggressiver Tenside. Frei von Mikroplastik und Konservierungsstoffen, dermatologisch bestätigt.',
  'category.pflege.benefit.3.title': 'Vielseitig im Alltag',
  'category.pflege.benefit.3.text': 'Vollbad, Fußbad, Peeling, Deo: ein Rohstoff, viele kleine Pflege-Rituale — auch für empfindliche Haut.',
  'category.pflege.cta.headline': 'Mehr entdecken im',
  'category.pflege.cta.headline.em': 'gesamten Shop.',
  'category.pflege.cta.sub': 'Reinigung, Wäsche, Küche – das ganze Sortiment auf einen Blick.',
  'category.pflege.cta.button': 'Zum Shop',

  'category.haushalt.eyebrow': 'Haushalt & Reinigung',
  'category.haushalt.title.a': 'Schrubben, waschen,',
  'category.haushalt.title.em': 'alles sauber.',
  'category.haushalt.sub': 'Natron-basierte Reiniger und Waschhelfer, die auch bei hartnäckigem Schmutz überzeugen — ohne unnötige Chemie.',
  'category.haushalt.products.headline': 'Sortiment für',
  'category.haushalt.products.headline.em': 'Haushalt & Wäsche',
  'category.haushalt.products.sub': 'Allzweck, Spülmittel, Wasch-Soda und mehr — vom feinen Reiniger bis zum kraftvollen Entkalker.',
  'category.haushalt.benefits.eyebrow': 'Warum Natron reinigt',
  'category.haushalt.benefits.headline': 'Wirksam, ehrlich,',
  'category.haushalt.benefits.headline.em': 'naturnah.',
  'category.haushalt.benefit.1.title': 'Geruchsneutralisierung',
  'category.haushalt.benefit.1.text': 'Natron bindet Säuren statt sie zu überdecken — Küche, Kühlschrank und Wäsche werden tatsächlich neutral, nicht nur überparfümiert.',
  'category.haushalt.benefit.2.title': 'Schonend zu Oberflächen',
  'category.haushalt.benefit.2.text': 'Mild abrasiv, nicht aggressiv: löst Fett und Verkrustungen, ohne Glas, Edelstahl oder Emaille anzugreifen.',
  'category.haushalt.benefit.3.title': 'Ohne Mikroplastik',
  'category.haushalt.benefit.3.text': 'Unsere Reiniger arbeiten mit pflanzlichen Tensiden und natürlichen Düften — frei von Mikroplastik und unnötigen Konservierern.',
  'category.haushalt.cta.headline': 'Auch für Pflege &',
  'category.haushalt.cta.headline.em': 'Küche im Shop.',
  'category.haushalt.cta.sub': 'Bade- und Küchenartikel, Bundles und mehr — alles auf einer Seite.',
  'category.haushalt.cta.button': 'Zum Shop',

  // Stepped checkout — chrome and step-level copy.
  'checkout.stepper.label': 'Kassenfortschritt',
  'checkout.step.cart': 'Warenkorb',
  'checkout.step.account': 'Konto',
  'checkout.step.shipping': 'Versand',
  'checkout.step.payment': 'Bezahlung',
  'checkout.back': 'Zurück',
  'checkout.exit': 'Verlassen',
  'checkout.backToShopping': 'Zurück zum Shop',
  'checkout.home': 'Startseite',
  'checkout.cta.review': 'Weiter',

  'checkout.cart.heading': 'Dein Warenkorb',
  'checkout.cart.title': 'Warenkorb',
  'checkout.cart.itemsLabel': 'Artikel',
  'checkout.cart.perItem': 'pro Stück',
  'checkout.cart.shipping': 'Versand',
  'checkout.cart.total': 'Gesamt',
  'checkout.cart.cta.shop': 'Zum Shop',
  'checkout.cart.cta.continueShopping': '← Weiter einkaufen',
  'checkout.cart.cta.continue': 'Weiter',

  'checkout.account.heading': 'Konto & Kontakt',
  'checkout.account.sub': 'Als Gast bestellen oder mit deinem Konto fortfahren – ganz wie es dir lieber ist.',
  'checkout.account.tabsLabel': 'Konto-Optionen',
  'checkout.account.tab.guest': 'Als Gast',
  'checkout.account.tab.signin': 'Anmelden',
  'checkout.account.tab.register': 'Konto erstellen',
  'checkout.account.forgot': 'Passwort vergessen?',
  'checkout.account.cta.continue': 'Weiter',

  'checkout.shipping.sub': 'Wohin sollen wir liefern? Du kannst die Rechnungsadresse später separat angeben.',
  'checkout.billing.sub': 'Falls die Rechnung an eine andere Adresse gehen soll, hier deaktivieren.',
  'checkout.shipping.cta.continue': 'Weiter',

  'checkout.payment.sub': 'Mit Apple Pay, Google Pay oder per Karte – alles über Stripe abgewickelt.',
  'checkout.section.card': 'Mit Karte bezahlen',

  'checkout.field.firstName': 'Vorname',
  'checkout.field.lastName': 'Nachname',
  'checkout.field.password': 'Passwort',
  'checkout.field.passwordConfirm': 'Passwort bestätigen',
  'checkout.field.salutation': 'Anrede',
  'checkout.field.salutation.placeholder': 'Bitte auswählen',
  'checkout.field.salutation.frau': 'Frau',
  'checkout.field.salutation.herr': 'Herr',
  'checkout.field.salutation.divers': 'Divers',
  'checkout.hint.password': 'Mindestens 8 Zeichen.',

  'checkout.error.passwordMismatch': 'Die Passwörter stimmen nicht überein.',
  'checkout.error.addressIncomplete': 'Bitte fülle alle Pflichtfelder der Adresse aus.',

  // Auth — standalone /login and /register pages.
  'auth.login.eyebrow': 'Wieder da',
  'auth.login.title': 'Anmelden',
  'auth.login.sub': 'Mit deinem Kaiser-Natron® Konto fortfahren.',
  'auth.login.cta': 'Anmelden',
  'auth.login.forgot': 'Passwort vergessen?',
  'auth.login.newCustomer': 'Neu hier?',
  'auth.login.cta.register': 'Konto erstellen',

  'auth.reset.title': 'Passwort zurücksetzen',
  'auth.reset.sub': 'Wir schicken dir einen sicheren Link an deine E-Mail-Adresse.',
  'auth.reset.cta': 'Link anfordern',
  'auth.reset.back': '← Zurück zur Anmeldung',
  'auth.reset.sent.title': 'Mail unterwegs',
  'auth.reset.sent.body': 'Wenn ein Konto zu dieser Adresse existiert, findest du den Link in deinem Postfach.',

  'auth.register.eyebrow': 'Konto erstellen',
  'auth.register.title': 'Willkommen',
  'auth.register.sub': 'Mit einem Konto siehst du Bestellverlauf, Adressen und exklusive Bundle-Angebote.',
  'auth.register.cta': 'Konto erstellen',
  'auth.register.haveAccount': 'Schon ein Konto?',
  'auth.register.cta.signIn': 'Anmelden',
  'auth.register.terms.before': 'Ich habe die',
  'auth.register.terms.link': 'AGB & Datenschutzerklärung',
  'auth.register.terms.after': 'gelesen und akzeptiere sie.',
}

// Austrian German (Österreichisches Deutsch) overrides.
// For technical UI copy, AT ≈ DE — most UI terms are identical in formal writing.
// The authentic distinctions cluster around: shopping vocabulary, "retour" (← zurück),
// and a handful of workplace/web terms. Dialect forms (Wienerisch etc.) are intentionally
// avoided here since the brand's formal voice is standard Austrian, not dialect.
const atOverrides = {
  // Shopping — the clearest DE/AT split
  'cart.open': 'Einkaufstasche öffnen',
  'cart.label': 'Einkaufstasche',
  'cart.empty.title': 'Deine Einkaufstasche ist leer',
  'cart.empty.subtitle': 'Leg Produkte aus dem Shop dazu – sie erscheinen gleich hier.',
  'cart.added': 'Zur Einkaufstasche dazugelegt',
  'ds.buttons.addToCart': 'In die Einkaufstasche',
  'ds.buttons.continueShopping': 'Weiter einkaufen gehen',
  'ds.buttons.save': 'Vormerken',
  'ds.cartDrawer.title': 'Einkaufstasche-Panel',

  // "Retour" is strongly associated with Austrian commerce/admin usage
  'ds.sidebar.back': '← Retour zur Seite',

  // Month/date terms would go here (Jänner/Feber) if we had any — kept for future use
  // No-op strings that stay identical to DE are intentionally omitted: redundancy hurts
  // clarity and hides the places where AT genuinely differs.
}

const en = {
  'nav.shop': 'Shop',
  'nav.cook': 'Cook',
  'nav.clean': 'Clean',
  'nav.care': 'Care',
  'nav.applications': 'Uses',
  'nav.kaiserhacks': 'Kaiserhacks',
  'nav.bundles': 'Bundles',
  'nav.revitalization': 'Revitalisation',
  'nav.about': 'About',
  'nav.contact': 'Contact',
  // Shop page — section headlines for the three use-case groups.
  'shop.eyebrow': 'Our range',
  'shop.headline': 'Kaiser Natron',
  'shop.headline.em': 'for every corner',
  'shop.sub': 'From cooking to cleaning to care — three collections, one ingredient.',
  'shop.section.cook.headline': 'Bake, cook,',
  'shop.section.cook.headline.em': 'digest well.',
  'shop.section.cook.sub': 'Powders and tablets — the quiet foundation under bread, cakes and good digestion.',
  'shop.section.clean.headline': 'Scrub, wash,',
  'shop.section.clean.headline.em': 'all clean.',
  'shop.section.clean.sub': 'Natron-based cleaners and laundry helpers that hold up against stubborn grime.',
  'shop.section.care.headline': 'Bathe, soften,',
  'shop.section.care.headline.em': 'breathe easy.',
  'shop.section.care.sub': 'Bath and care products tuned for daily life and sport.',
  'shop.feature.cook': 'For the kitchen',
  'shop.feature.clean': 'For the home',
  'shop.feature.care': 'For body & care',
  'shop.feature.cta.cook': 'Shop kitchen',
  'shop.feature.cta.clean': 'Shop home',
  'shop.feature.cta.care': 'Shop care',
  // Kaiserhacks page — localized copy resolved from the API fixture keys.
  'kaiserhacks.eyebrow': '#kaiserhacks',
  'kaiserhacks.headline': 'Our Kaiserhacks',
  'kaiserhacks.sub': 'We regularly hack together useful ideas: cooking, baking, crafting, cleaning, tidying, and body care. Here you will find our versatile Kaiserhacks.',
  'kaiserhacks.labels.categories': 'Categories',
  'kaiserhacks.labels.categoryNav': 'Kaiserhacks categories',
  'kaiserhacks.labels.openVideo': 'Open video',
  'kaiserhacks.labels.mockPlayer': 'Video placeholder',
  'kaiserhacks.labels.community': 'Community',
  'kaiserhacks.labels.handoffNote': 'Videos are mocked. Titles, copy, posters, and video sources are structured so the backend can provide them directly.',
  'kaiserhacks.category.kochenBacken.title': 'Cooking and baking',
  'kaiserhacks.category.kochenBacken.summary': 'Quick kitchen ideas for fruit, drinks, dough, and savoury classics.',
  'kaiserhacks.category.kochenBacken.cta': 'More cooking and baking',
  'kaiserhacks.category.hausGarten.title': 'Home and garden',
  'kaiserhacks.category.hausGarten.summary': 'Practical routines for dishes, bins, trays, and small household nuisances.',
  'kaiserhacks.category.hausGarten.cta': 'More home and garden',
  'kaiserhacks.category.koerperPflege.title': 'Body and care',
  'kaiserhacks.category.koerperPflege.summary': 'Gentle ideas for exfoliation, lips, nails, and small moments outdoors.',
  'kaiserhacks.category.koerperPflege.cta': 'More body and care',
  'kaiserhacks.tag.kueche': 'Kitchen',
  'kaiserhacks.tag.getraenk': 'Drink',
  'kaiserhacks.tag.backen': 'Baking',
  'kaiserhacks.tag.teig': 'Dough',
  'kaiserhacks.tag.vorbereiten': 'Prep',
  'kaiserhacks.tag.kochen': 'Cooking',
  'kaiserhacks.tag.ofen': 'Oven',
  'kaiserhacks.tag.haushalt': 'Household',
  'kaiserhacks.tag.geschirr': 'Dishes',
  'kaiserhacks.tag.geruch': 'Odour',
  'kaiserhacks.tag.reinigen': 'Cleaning',
  'kaiserhacks.tag.haus': 'Home',
  'kaiserhacks.tag.bad': 'Bathroom',
  'kaiserhacks.tag.pflege': 'Care',
  'kaiserhacks.tag.haut': 'Skin',
  'kaiserhacks.tag.lippen': 'Lips',
  'kaiserhacks.tag.naegel': 'Nails',
  'kaiserhacks.tag.sommer': 'Summer',
  'kaiserhacks.hack.zuckerfreieLimonade.title': 'Sugar-free lemonade',
  'kaiserhacks.hack.zuckerfreieLimonade.description': 'A fresh drink with citrus, water, and a pinch of sodium bicarbonate.',
  'kaiserhacks.hack.zuckerfreieLimonade.alt': 'Thumbnail for the sugar-free lemonade Kaiserhack',
  'kaiserhacks.hack.burger.title': 'Burger',
  'kaiserhacks.hack.burger.description': 'An airy burger-dough hack for the next barbecue.',
  'kaiserhacks.hack.burger.alt': 'Thumbnail for the burger Kaiserhack',
  'kaiserhacks.hack.obstGemueseWaesche.title': 'Fruit and vegetable wash',
  'kaiserhacks.hack.obstGemueseWaesche.description': 'Sodium bicarbonate water as a quick prep step for fresh ingredients.',
  'kaiserhacks.hack.obstGemueseWaesche.alt': 'Thumbnail for the fruit and vegetable wash Kaiserhack',
  'kaiserhacks.hack.ofenRisotto.title': 'Oven risotto',
  'kaiserhacks.hack.ofenRisotto.description': 'Creamy texture from the oven without standing at the stove.',
  'kaiserhacks.hack.ofenRisotto.alt': 'Thumbnail for the oven risotto Kaiserhack',
  'kaiserhacks.hack.beautyZubehoer.title': 'Cleaning beauty accessories (blenders and brushes)',
  'kaiserhacks.hack.beautyZubehoer.description': 'A cleaning hack for beauty blenders, brushes, and accessories.',
  'kaiserhacks.hack.beautyZubehoer.alt': 'Thumbnail for the cleaning beauty accessories Kaiserhack',
  'kaiserhacks.hack.metallspurenGeschirr.title': 'Remove metal marks from dishes',
  'kaiserhacks.hack.metallspurenGeschirr.description': 'A quick rubbing hack for grey cutlery marks on light dishes.',
  'kaiserhacks.hack.metallspurenGeschirr.alt': 'Thumbnail for the remove metal marks from dishes Kaiserhack',
  'kaiserhacks.hack.muelleimerGerueche.title': 'Remove odours from bins',
  'kaiserhacks.hack.muelleimerGerueche.description': 'A simple sprinkle routine against unpleasant smells.',
  'kaiserhacks.hack.muelleimerGerueche.alt': 'Thumbnail for the remove odours from bins Kaiserhack',
  'kaiserhacks.hack.expressBackblechReinigung.title': 'Express baking tray clean',
  'kaiserhacks.hack.expressBackblechReinigung.description': 'A baking-tray hack for burnt-on spots and fast cleanup.',
  'kaiserhacks.hack.expressBackblechReinigung.alt': 'Thumbnail for the express baking tray clean Kaiserhack',
  'kaiserhacks.hack.glowPeeling.title': 'Glow peeling',
  'kaiserhacks.hack.glowPeeling.description': 'A short care routine with a gentle exfoliating feel.',
  'kaiserhacks.hack.glowPeeling.alt': 'Thumbnail for the glow peeling Kaiserhack',
  'kaiserhacks.hack.lippenBlaeschen.title': 'Lip blisters',
  'kaiserhacks.hack.lippenBlaeschen.description': 'A quick care note for irritated lip moments.',
  'kaiserhacks.hack.lippenBlaeschen.alt': 'Thumbnail for the lip blisters Kaiserhack',
  'kaiserhacks.hack.lackschadenNagellack.title': 'Nail polish touch-up',
  'kaiserhacks.hack.lackschadenNagellack.description': 'A small prep hack for neat nails.',
  'kaiserhacks.hack.lackschadenNagellack.alt': 'Thumbnail for the nail polish touch-up Kaiserhack',
  'kaiserhacks.hack.mueckenstich.title': 'Mosquito bite - no itch for me!',
  'kaiserhacks.hack.mueckenstich.description': 'A short summer idea for itchy spots after being outdoors.',
  'kaiserhacks.hack.mueckenstich.alt': 'Thumbnail for the mosquito bite Kaiserhack',
  'product.back': 'Back to shop',
  'product.backHome': 'Back home',
  'product.backGeneric': 'Back',
  'product.addToCart': 'Add to cart',
  'product.outOfStock': 'Out of stock',
  'product.applications.title': 'Uses',
  'product.applications.sub': 'From baking to cleaning — the everyday range of Kaiser-Natron®.',
  'product.about.title': 'About this product',
  'product.ingredients.title': 'Ingredients',
  'product.warnings.title': 'Notes',
  'product.faq.title': 'Frequently asked',
  'product.related.title': 'Also worth a look',
  'product.related.sub': 'Products from the same category that pair well together.',
  'product.notFound.title': 'Product not found',
  'product.notFound.sub': 'This page does not exist or the product is no longer available.',
  'product.notFound.cta': 'Back to shop',
  'product.prop.vegan': 'Vegan',
  'product.prop.glutenfrei': 'Gluten-free',
  'product.prop.laktosefrei': 'Lactose-free',
  'product.prop.neutralisiert-saeuren': 'Neutralises acids',
  'product.prop.enthaertet': 'Softens water',
  'product.prop.mild-alkalisch': 'Mildly alkaline',
  'product.prop.bio': 'Organic',
  'product.prop.made-in-austria': 'Bottled in Austria',
  'product.prop.fuer-kueche-und-haushalt': 'For kitchen & home',
  'product.prop.fuer-boeden-und-oberflaechen': 'For floors & surfaces',
  'product.prop.frei-von-mikroplastik': 'Microplastic-free',
  'product.prop.frei-von-tierischen-substanzen': 'No animal-derived substances',
  'product.prop.hautvertraeglich-dermatologisch-bestaetigt': 'Skin-friendly, dermatologically tested',
  'product.prop.hygienische-sauberkeit': 'Hygienic clean',
  'product.prop.mit-entspannendem-apfelsinenduft': 'With relaxing orange scent',
  'product.prop.mit-dem-duft-der-latschenkiefer': 'With mountain-pine scent',
  'product.prop.mit-natuerlicher-seife': 'With natural soap',
  'product.prop.mit-pampelmusenduft': 'With pomelo scent',
  'product.prop.mit-pflegendem-lanolin': 'With nourishing lanolin',
  'product.prop.nachhaltig-durch-tenside-nachwachsenden-ursprungs': 'Sustainable plant-based surfactants',
  'product.prop.ohne-konservierungsstoffe': 'No preservatives',
  'product.prop.ohne-mineraloel': 'Mineral-oil free',
  'product.prop.wohltuend-und-erfrischend': 'Soothing & refreshing',
  'cart.open': 'Open cart',
  'cart.label': 'Cart',
  'cart.subtotal': 'Subtotal',
  'cart.checkout': 'Checkout',
  'cart.remove': 'Remove',
  'cart.qty.increase': 'Increase quantity',
  'cart.qty.decrease': 'Decrease quantity',
  'cart.empty.title': 'Your cart is empty',
  'cart.empty.subtitle': 'Add products from the shop — they will appear right here.',
  'cart.added': 'Added to cart',
  'menu.open': 'Open menu',
  'menu.close': 'Close menu',
  'language.label': 'Language',
  'search.open': 'Open search',
  'search.label': 'Search products',
  'search.placeholder': 'Search products…',
  'search.clear': 'Clear',
  'search.results': 'Search results',
  'search.noResults': 'No products found',
  'search.noResultsHint': 'Try a different spelling or a broader term.',
  'search.emptyHint': 'Type to find products — e.g. "Natron powder" or "descaler".',
  'search.suggested': 'Suggested',
  'search.hint.navigate': 'Navigate',
  'search.hint.select': 'Select',
  'search.hint.close': 'Close',

  'ds.sidebar.brand': 'Brand',
  'ds.sidebar.tokens': 'Tokens',
  'ds.sidebar.components': 'Components',
  'ds.sidebar.sections': 'Sections',
  'ds.sidebar.back': '← Back to site',
  'ds.mobile.currentPage': 'Current page',
  'ds.mobile.selectPage': 'Select a page',
  'ds.nav.logo': 'Logo',
  'ds.nav.colors': 'Colors',
  'ds.nav.typography': 'Typography',
  'ds.nav.radii': 'Radii',
  'ds.nav.shadows': 'Shadows',
  'ds.nav.motion': 'Motion',
  'ds.nav.icons': 'Icons',
  'ds.nav.buttons': 'Buttons',
  'ds.nav.badges': 'Badges',
  'ds.nav.inputs': 'Inputs',
  'ds.nav.cards': 'Cards',
  'ds.nav.products': 'Product cards',
  'ds.nav.bundleCard': 'Bundle card',
  'ds.nav.hero': 'Hero',
  'ds.nav.navbar': 'Navbar',
  'ds.nav.search': 'Search',
  'ds.nav.qtyStepper': 'Quantity stepper',
  'ds.nav.cartDrawer': 'Cart',
  'ds.nav.language': 'Language',
  'ds.nav.bundles': 'Bundles section',
  'ds.nav.kaiserhacks': 'Kaiserhacks',
  'ds.nav.revitalization': 'Revitalization',
  'ds.nav.about': 'About',

  'ds.search.title': 'Search',
  'ds.search.description': 'Full-text search across the product catalog with image previews. Full-screen overlay on mobile, centered command palette on desktop. Keyboard-navigable and brand-green by default.',
  'ds.search.label': 'Search products',
  'ds.search.placeholder': 'Search products…',
  'ds.search.noResults': 'No products found.',
  'ds.search.suggested': 'Suggestions',
  'ds.search.results': 'Results',
  'ds.search.open': 'Open search',
  'ds.search.picked': 'Picked',
  'ds.search.tryHint': 'Try: "natron", "limescale", "laundry", or "bath".',
  'ds.search.integrationHint': 'Search queries the catalog exported from the project API layer (src/api/). When the real backend lands, the component signature stays the same.',
  'ds.search.hint.navigate': 'Navigate',
  'ds.search.hint.select': 'Select',
  'ds.search.hint.close': 'Close',

  'ds.eyebrow.brand': 'Brand',
  'ds.eyebrow.tokens': 'Tokens',
  'ds.eyebrow.components': 'Components',
  'ds.eyebrow.designSystem': 'Design system',

  'ds.heading.variants': 'Variants',
  'ds.heading.sizes': 'Sizes',
  'ds.heading.states': 'States',
  'ds.heading.withIcons': 'With icons',
  'ds.heading.onBrandSurface': 'On brand surface',
  'ds.heading.block': 'Block',
  'ds.heading.usage': 'Usage',
  'ds.heading.default': 'Default',
  'ds.heading.tones': 'Tones',
  'ds.heading.interactive': 'Interactive',
  'ds.heading.withoutPadding': 'Without padding',
  'ds.heading.scale': 'Scale',
  'ds.heading.display': 'Display',
  'ds.heading.body': 'Body',
  'ds.heading.nonUppercase': 'Non-uppercase',
  'ds.heading.onDifferentSurfaces': 'On different surfaces',
  'ds.heading.greenOnPaper': 'Green on paper',
  'ds.heading.creamOnBrand': 'Cream on brand green',

  'ds.kaiserhacks.title': 'Kaiserhacks',
  'ds.kaiserhacks.description': 'Video-first guide section with three categories and a backend-ready data shape for titles, teaser copy, posters, and video sources.',
  'ds.kaiserhacks.contract.title': 'Data contract',
  'ds.kaiserhacks.contract.body': 'The component expects categories with hack cards. Each card carries id, title, description, duration, tags, and video { src, poster, alt }. Mock data lives in the API layer so the backend integration only swaps that boundary.',

  'ds.logo.title': 'Logo',
  'ds.logo.description': 'A single SVG component that inherits its fill from CSS `color`. Use the green wordmark on light surfaces and the cream wordmark on the brand green.',
  'ds.logo.usageIntro': 'Use color utilities to set the fill:',

  'ds.colors.title': 'Colors',
  'ds.colors.description': 'Pine green on cream, with a warm yellow accent. All UI color flows from these tokens — never hand-pick values in components.',
  'ds.colors.group.brand': 'Brand',
  'ds.colors.group.accent': 'Accent',
  'ds.colors.group.surface': 'Surface',
  'ds.colors.group.ink': 'Ink',
  'ds.colors.group.line': 'Line',
  'ds.colors.group.semantic': 'Semantic',

  'ds.typography.title': 'Typography',
  'ds.typography.description': 'Fraunces for display — warm, organic, optical-sized. DM Sans for body and UI — clean and geometric.',
  'ds.typography.serifDesc': 'Serif with optical sizing. Use for hero, section titles, product names.',
  'ds.typography.sansDesc': 'Clean geometric sans. Use for body, UI, navigation, labels.',
  'ds.typography.sample': 'The quick brown fox',

  'ds.radii.title': 'Radii',
  'ds.radii.description': "From subtle 6px rounding on small elements to full pills on buttons. Matches the reference site's soft, organic feel.",

  'ds.shadows.title': 'Shadows',
  'ds.shadows.description': 'All shadows are tinted green rather than neutral black — they feel warm and part of the palette.',
  'ds.shadows.sm.note': 'Subtle — nav on scroll, resting cards',
  'ds.shadows.md.note': 'Medium — primary button hover',
  'ds.shadows.lg.note': 'Large — floating cards, overlays',

  // Motion
  'ds.motion.title': 'Motion',
  'ds.motion.description': 'Motion serves comprehension, not decoration. Three UI durations plus one scenic loop, one default curve, and a clear rule for reduced-motion users.',
  'ds.motion.philosophy.title': 'Philosophy',
  'ds.motion.principle.purpose': 'Only animate when it teaches hierarchy, state, or continuity. Decorative motion gets cut.',
  'ds.motion.principle.cadence': 'Three durations, one curve: 120ms for state, 200ms for UI transitions, 320ms for larger reveals. --ease-out is the default — arrivals feel settled, not snappy.',
  'ds.motion.principle.scenic': 'Scenic loops (orbit, soft pulses) run linear over 10–20s. Long enough to read as atmosphere, never as a ticking clock.',
  'ds.motion.principle.reduced': 'prefers-reduced-motion is always honoured. Freeze loops, collapse transitions — never punish a user for opting out.',
  'ds.motion.durations.title': 'Durations',
  'ds.motion.duration.fast.note': 'State — hover, focus, press.',
  'ds.motion.duration.base.note': 'Standard UI — colour change, open/close.',
  'ds.motion.duration.slow.note': 'Larger reveals — drawer, overlays, cards.',
  'ds.motion.duration.scene.note': 'Scenic changes — full section, route transitions.',
  'ds.motion.duration.orbit.note': 'Ambient loops — orbit rings, soft pulses.',
  'ds.motion.easings.title': 'Easings',
  'ds.motion.ease.out.note': 'Default. Arrivals land softly.',
  'ds.motion.ease.inOut.note': 'Only when an element must come and go.',
  'ds.motion.ease.linear.note': 'For mechanical loops — orbit, spinners.',
  'ds.motion.animations.title': 'Named animations',
  'ds.motion.animate.orbit.note': 'Ring rotates around a centered icon. Used in the Revitalization section.',
  'ds.motion.animate.fadeInUp.note': 'Fade with an 8px rise — for entrance moments.',
  'ds.motion.animate.pulseSoft.note': 'Quiet opacity pulse — for live indicators.',
  'ds.motion.reduced.title': 'Reduced motion',
  'ds.motion.reduced.body': 'Global rule in motion.css: under prefers-reduced-motion: reduce, all animation and transition durations collapse to ~0ms. Components do not need their own switch.',
  'ds.motion.replay': 'Replay',
  'ds.motion.fadePreview': 'Fade in',

  'ds.icons.title': 'Icons',
  'ds.icons.description': 'A curated stroke-based icon set on a 24x24 grid. Rendered via the Icon component — inherits color from currentColor.',
  'ds.icons.search': 'Search icons…',
  'ds.icons.copyHint': 'Click a tile to copy its snippet.',
  'ds.icons.copied': 'Copied!',
  'ds.icons.noMatch': 'No icons match',
  'ds.icons.sizeDefault': '20 (default)',
  'ds.icons.addHint': 'Add new icons in %s. Use a 24×24 viewBox, stroke-based paths, no fills — the component handles color via %s. Pass %s for screen readers; omit it for decorative icons.',
  'ds.icons.group.commerce': 'Commerce',
  'ds.icons.group.navigation': 'Navigation',
  'ds.icons.group.actions': 'Actions',
  'ds.icons.group.contact': 'Contact',
  'ds.icons.group.feedback': 'Feedback',
  'ds.icons.group.devices': 'Devices',

  'ds.buttons.title': 'Buttons',
  'ds.buttons.description': 'Pill-shaped. Pine-green primary with warm-yellow label for the main call to action, warm-yellow accent on brand surfaces, plus secondary, ghost, and danger variants.',
  'ds.buttons.primary': 'Primary',
  'ds.buttons.accent': 'Accent',
  'ds.buttons.secondary': 'Secondary',
  'ds.buttons.ghost': 'Ghost',
  'ds.buttons.danger': 'Danger',
  'ds.buttons.small': 'Small',
  'ds.buttons.medium': 'Medium',
  'ds.buttons.large': 'Large',
  'ds.buttons.disabled': 'Disabled',
  'ds.buttons.loading': 'Loading',
  'ds.buttons.addToCart': 'Add to cart',
  'ds.buttons.learnMore': 'Learn more',
  'ds.buttons.save': 'Save',
  'ds.buttons.confirm': 'Confirm',
  'ds.buttons.continueShopping': 'Continue shopping',

  'ds.badges.title': 'Badges',
  'ds.badges.description': 'Small uppercase labels for metadata, status, and eyebrows above headings.',
  'ds.badges.neutral': 'Neutral',
  'ds.badges.brand': 'Brand',
  'ds.badges.accent': 'Accent',
  'ds.badges.subtle': 'Subtle',
  'ds.badges.success': 'Success',
  'ds.badges.warning': 'Warning',
  'ds.badges.danger': 'Danger',
  'ds.badges.newRelease': 'New release',
  'ds.badges.featured': 'Featured',

  'ds.inputs.title': 'Inputs',
  'ds.inputs.description': 'Paper surface with a thin green-tinted border. Uppercase eyebrow labels. Focus deepens the border to brand green.',
  'ds.inputs.email': 'Email',
  'ds.inputs.emailHint': 'We never share this.',
  'ds.inputs.password': 'Password',
  'ds.inputs.required': 'Required field',
  'ds.inputs.requiredError': 'This field is required',
  'ds.inputs.disabled': 'Disabled',
  'ds.inputs.disabledPlaceholder': "Can't type here",

  'ds.cards.title': 'Cards',
  'ds.cards.description': 'Surfaces for grouping content. Three tones — paper, cream, brand — and an optional interactive lift on hover.',
  'ds.cards.paper': 'Paper',
  'ds.cards.cream': 'Cream',
  'ds.cards.brand': 'Brand',
  'ds.cards.paperTitle': 'Default surface',
  'ds.cards.paperBody': 'The go-to card for most content. High contrast on the cream page background.',
  'ds.cards.creamTitle': 'Warm surface',
  'ds.cards.creamBody': 'A softer alternative for secondary sections or callouts.',
  'ds.cards.brandTitle': 'Dark surface',
  'ds.cards.brandBody': 'For feature panels, CTAs, and moments that want to stand out.',
  'ds.cards.hoverMe': 'Hover me',
  'ds.cards.hoverMeToo': 'Hover me too',
  'ds.cards.hoverBody': 'Lifts on hover with a soft green-tinted shadow. Use for clickable items in a grid.',
  'ds.cards.hoverBodyAlt': 'Same behavior on the warm surface.',
  'ds.cards.mediaTitle': 'Media card',
  'ds.cards.mediaBody': 'When the card needs a full-bleed image or header, pass',

  'ds.product.title': 'Product card',
  'ds.product.description': 'Composed from Card, Badge, Button, and Icon. Cutout image on a cream media surface, title + size, price in brand, and a full-width primary "Add to cart".',
  'ds.product.outOfStock': 'Out of stock',
  'ds.product.added': 'Added',

  'ds.hero.title': 'Hero',
  'ds.hero.description': 'Full-bleed stage for the home page and category tops. Eyebrow, display headline with optional italic emphasis, subheadline, product cutout on a decorative disc, and a primary/secondary CTA pair. Responsive from 390 to 1280px, three surface tones, two layouts.',
  'ds.hero.variant.label': 'Layout',
  'ds.hero.variant.split': 'Split',
  'ds.hero.variant.centered': 'Centered',
  'ds.hero.eyebrow': 'New in shop',
  'ds.hero.headline.a': 'Kaiser Natron',
  'ds.hero.headline.em': 'for everything',
  'ds.hero.headline.b': 'that should shine.',
  'ds.hero.sub': 'Cleans, bakes, and neutralises odours. The 250 g large pack for the household that trusts the original.',

  // Home page – second-fold banner
  'home.banner.eyebrow': 'Truly versatile',
  'home.banner.headline.a': 'One powder,',
  'home.banner.headline.em': 'a hundred uses',
  'home.banner.headline.b': 'around the home.',
  'home.banner.sub': 'From baking to bathing to laundry — Kaiser Natron quietly does its work wherever you need it.',

  // Home page – mobile-only hero category shortcuts.
  'home.categories.clean': 'Clean',
  'home.categories.cook': 'Cook',
  'home.categories.care': 'Care',

  // Bundle detail page (/bundles/<slug>) + home grid copy.
  'bundle.items': 'In this bundle',
  'bundle.memberPrice': 'Member price',
  'product.notFound.title': 'Not found',
  'product.notFound.body': 'This item is no longer available or has been moved.',

  'bundle.haushalt.name': 'Household Bundle',
  'bundle.haushalt.usage': '2–3× per quarter recommended',
  'bundle.haushalt.description': 'The three classics for the weekly household routine — powder, all-purpose spray and washing-up liquid. Saves vs single purchase and keeps the staples in stock.',
  'bundle.haushalt.imageAlt': 'Household bundle with Kaiser-Natron',
  'bundle.haushalt.badge': 'Bestseller',
  'bundle.haushalt.items.0': '1× Kaiser-Natron Powder 250 g',
  'bundle.haushalt.items.1': '1× All-purpose Spray 500 ml',
  'bundle.haushalt.items.2': '1× Washing-up Liquid 500 ml',

  'bundle.waesche.name': 'Laundry & Care',
  'bundle.waesche.usage': '1–2× per quarter',
  'bundle.waesche.description': 'Traditional laundry care — washing soda for the pre-wash, laundry starch for shape, stain remover for the stubborn cases. Three helpers, one routine.',
  'bundle.waesche.imageAlt': 'Laundry & Care bundle',
  'bundle.waesche.items.0': '1× Holste Washing Soda 500 g',
  'bundle.waesche.items.1': '1× Gazelle Laundry Starch 1 l',
  'bundle.waesche.items.2': '1× Linda Stain Remover 200 ml',

  'bundle.wohlfuehl.name': 'Wellbeing Bundle',
  'bundle.wohlfuehl.usage': '1× per quarter',
  'bundle.wohlfuehl.description': 'Three body applications — tablets for digestion, full bath and foot bath for relaxation. The quietest routine in the range.',
  'bundle.wohlfuehl.imageAlt': 'Wellbeing bundle with Kaiser-Natron Bath',
  'bundle.wohlfuehl.items.0': '1× Kaiser-Natron Tablets 100 g',
  'bundle.wohlfuehl.items.1': '1× Kaiser-Natron Bath 500 g',
  'bundle.wohlfuehl.items.2': '1× Kaiser-Natron Foot Bath 500 g',

  // Home page – brand hero (top-of-fold, splash artwork settles here).
  'home.brand.headline.a': 'Kaiser Natron —',
  'home.brand.headline.em': 'the premium provider',
  'home.brand.headline.b': 'for Clean, Cook, Care.',
  'home.brand.since': 'since 1881',
  // Home page – 3-product teaser sitting between brand hero and product hero.
  'home.teaser.eyebrow': 'Three classics',
  'home.teaser.headline': 'One pick from every family.',
  'home.teaser.sub': 'A flagship for cooking, cleaning and care — three SKUs, one origin.',
  'home.teaser.cta': 'Shop Kaiser Natron',

  // Checkout page (EN).
  'checkout.eyebrow': 'Complete your order',
  'checkout.headline': 'Almost there —',
  'checkout.headline.em': 'just a few details.',
  'checkout.sub': 'Address, payment, done. Your data is encrypted in transit and processed to EU privacy standards.',
  'checkout.summary.heading': 'Your order',
  'checkout.section.express': 'Express checkout',
  'checkout.express.sub': 'One tap with Apple Pay or Google Pay',
  'checkout.express.or': 'or continue with address',
  'checkout.express.applePay.aria': 'Pay with Apple Pay',
  'checkout.express.googlePay.aria': 'Pay with Google Pay',
  'checkout.section.contact': 'Contact',
  'checkout.section.shipping': 'Shipping address',
  'checkout.section.billing': 'Billing address',
  'checkout.section.payment': 'Payment',
  'checkout.field.email': 'Email',
  'checkout.field.marketing': 'Email me about offers and news',
  'checkout.field.name': 'Name',
  'checkout.field.company': 'Company (optional)',
  'checkout.field.street': 'Street & house number',
  'checkout.field.postal': 'Postal code',
  'checkout.field.city': 'City',
  'checkout.field.country': 'Country',
  'checkout.field.phone': 'Phone (optional)',
  'checkout.field.billingSame': 'Billing same as shipping',
  'checkout.placeholder.email': 'you@example.com',
  'checkout.hint.email': 'Order confirmation will be sent here.',
  'checkout.hint.phone': 'Only for delivery issues — no marketing.',
  'checkout.payment.secure': 'SSL · Stripe',
  'checkout.cta.continue': 'Continue to payment',
  'checkout.cta.pay': 'Pay now',
  'checkout.error.empty': 'Your cart is empty.',
  'checkout.error.payment': 'Payment could not be completed.',
  'checkout.error.generic': 'Something went wrong. Please try again.',
  'checkout.success.eyebrow': 'Order confirmed',
  'checkout.success.headline': 'Thank you —',
  'checkout.success.headline.em': 'your order is on its way.',
  'checkout.success.sub': 'We\'ve received your payment and started prepping the order. A confirmation will arrive by email shortly.',
  'checkout.success.orderId': 'Order',
  'checkout.success.email': 'A confirmation email is on its way to the address you provided.',
  'checkout.success.missing': 'No order id in the URL — status can\'t be fetched.',
  'checkout.success.cta.shop': 'Keep shopping',
  'checkout.success.cta.home': 'Back to home',

  // Bundles section
  'bundles.headline.a': 'Bundles &',
  'bundles.headline.em': 'Benefits',
  'bundles.sub': 'Members save with tiered discounts, exclusive bundle deals, and early access to new products.',
  'bundles.benefit.1.title': 'Tiered discount up to −25%',
  'bundles.benefit.2.title': 'Exclusive bundle deals',
  'bundles.benefit.3.title': 'Early access & new releases',
  'bundles.joinCta': 'Become a member',
  'bundles.card.priceLabel': 'Retail price',
  'bundles.card.memberPrefix': 'Members:',
  'bundles.card.moreItems': 'more',
  // Carousel chrome — ds.* because it belongs to the Bundles component.
  'ds.bundles.carousel.label': 'Bundle carousel',
  'ds.bundles.carousel.prev': 'Previous bundle',
  'ds.bundles.carousel.next': 'Next bundle',
  'ds.bundles.carousel.goToSlide': 'Go to bundle',

  // Design-system documentation pages
  'ds.bundleCard.title': 'Bundle card',
  'ds.bundleCard.description': 'Composed card for curated product bundles. Media with optional badge, usage label, title, up to three line items, a price block (retail + member price) and a primary CTA. Two layouts — vertical for grid use and horizontal for carousel slides from md up.',
  'ds.bundles.title': 'Bundles section',
  'ds.bundles.description': 'Compound section combining a sticky sidebar (headline + three benefits + member CTA) with a scroll-snap carousel of horizontal bundle cards from md up. Keyboard and touch swipe work natively; the arrow controls loop past the ends.',
  'ds.revitalization.title': 'Revitalization Center',
  'ds.revitalization.description': 'Centered feature-teaser section on brand green. Eyebrow badge, display headline with an italic highlight, subheadline, up to three pillar bullets with accent dots and a single CTA. Designed for "coming soon" announcements.',
  'ds.about.title': 'About / history',
  'ds.about.description': 'Centered intro plus three milestone cards running the Card primitive\'s tones left-to-right (paper / cream / brand). The continuous tonal step gives the timeline a clear sense of visual progression.',
  'ds.nav.footer': 'Footer',
  'ds.nav.checkoutStepper': 'Checkout stepper',
  'ds.footer.title': 'Footer',
  'ds.footer.description': 'Sitewide footer with logo, brand tagline, explore and legal link columns. Three tone variants — cream (default), brand (primary green), paper (lighter accent) — pick the one that contrasts with the page surface above it.',
  'ds.footer.tone.cream': 'Cream (default)',
  'ds.footer.tone.brand': 'Brand',
  'ds.footer.tone.paper': 'Paper',
  'ds.checkoutStepper.title': 'Checkout stepper',
  'ds.checkoutStepper.description': 'Horizontal progress indicator for the four-step checkout: Cart → Account → Shipping → Payment. Completed steps render a filled brand circle with a checkmark, the active step is also filled, upcoming steps are subtly outlined. Earlier steps are click-back navigable; forward jumps are gated on each step\'s `completed` flag.',

  // Revitalization Center
  'revit.eyebrow': 'Coming soon',
  'revit.headline.a': 'Revitalization',
  'revit.headline.em': 'Center',
  'revit.sub': 'A dedicated knowledge universe for NaHCO₃ — science, therapy concepts, and professional application guides. More than a shop.',
  'revit.feature.1.title': 'Science',
  'revit.feature.2.title': 'Therapy',
  'revit.feature.3.title': 'Natural healing',
  'revit.notifyCta': 'Get early access',

  // About / History
  'about.eyebrow': 'History & science',
  'about.headline': 'About Kaiser-Natron®',
  'about.sub': 'More than 140 years of tradition, purity, and the science behind the difference.',
  'about.milestone.1.year': '1881',
  'about.milestone.1.title': 'The founding',
  'about.milestone.1.text': 'Arnold Holste founds the company in Bielefeld that brings Kaiser-Natron® into the world — pure sodium bicarbonate at food grade, at a time when chemistry was still a craft.',
  'about.milestone.2.year': 'Early 1900s',
  'about.milestone.2.title': 'The icon emerges',
  'about.milestone.2.text': "Kaiser-Natron® becomes a household staple across German-speaking countries. Grandmothers swear by its universal power — from baking to cleaning.",
  'about.milestone.3.year': 'Today',
  'about.milestone.3.title': 'Premium E500(ii) standard',
  'about.milestone.3.text': 'Kaiser-Natron® carries the E500(ii) food-grade approval — extra purified, standardised, and batch-tested. The original, as good as ever.',

  'ds.search.title': 'Product search',
  'ds.search.description': 'Search trigger on the right of the navbar (left of the language switcher) and bottom-left as a floating button on mobile. Tapping it opens a full-screen overlay on mobile and a centered panel on desktop. The input auto-focuses, the results list updates as you type, and arrow keys / Enter / Esc are supported.',
  'ds.search.demo.label': 'Open demo',
  'ds.search.demo.hint': 'Try "Natron", "pulver", "entkalker" or "spray".',

  'ds.navbar.title': 'Navbar',
  'ds.navbar.description': 'Logo + nav + cart, in three surface tones. On mobile, the top bar keeps the logo and the menu + cart move to an ergonomic bottom-right floating cluster. The menu opens a full-screen brand-green overlay.',
  'ds.navbar.tone': 'Navbar tone',
  'ds.navbar.tone.paper': 'Paper',
  'ds.navbar.tone.cream': 'Cream',
  'ds.navbar.tone.brand': 'Brand',
  'ds.navbar.layout': 'Layout',
  'ds.navbar.layout.standard': 'Standard',
  'ds.navbar.layout.floating': 'Floating',

  'ds.language.title': 'Language switcher',
  'ds.language.description': 'Compact pill for switching between DE, AT, and EN. Two tones — paper for light surfaces, brand for the brand-green — plus a floating mode that pins to the top-right corner.',
  'ds.language.paperNote': 'Default tone for light UI surfaces like cards or toolbars.',
  'ds.language.creamNote': 'Stronger border so the pill keeps definition on warm cream surfaces.',
  'ds.language.brandNote': 'For use on the brand green — e.g. inside the mobile menu overlay.',
  'ds.language.floating': 'Floating',
  'ds.language.floatingNote': 'The `floating` prop docks the pill to the top-right of the viewport (24px offset). This is the exact placement used by the design system chrome.',

  // Quantity stepper
  'ds.qtyStepper.title': 'Quantity stepper',
  'ds.qtyStepper.description': 'Compact plus/minus control for picking a quantity. Pill-shaped to sit next to Buttons and Input borders, inherits tone and radius from tokens. Supports `min`/`max` bounds and a disabled state.',
  'ds.qtyStepper.minBoundary': 'At min',
  'ds.qtyStepper.maxBoundary': 'At max',

  // Cart drawer
  'ds.cartDrawer.title': 'Cart drawer',
  'ds.cartDrawer.description': 'A side-drawer that slides in from the right on a cream surface. Lists each line with image, size, quantity stepper, and line total; below that, a subtotal and a full-width checkout CTA. Edge-to-edge on mobile, pinned to the right at 440px from md up. Scroll-locks the page, closes on ESC, and dismisses when the backdrop is clicked.',
  'ds.cartDrawer.demoLabel': 'Populate & open cart',
  'ds.cartDrawer.demoHint': 'Adds two sample items and opens the drawer.',
  'ds.cartDrawer.integrationTitle': 'Backend integration',
  'ds.cartDrawer.integrationBody': 'The component owns no network code — it emits `update-quantity`, `remove`, and `checkout`. Its state comes from the API boundary in `src/api/cart.js`, which is a local implementation today and swaps to the documented endpoints (see `docs/api/cart.md`) without changes above this line.',

  // Footer (EN).
  'footer.tagline': 'The original from Austria. Pure sodium bicarbonate for the kitchen, the home, and personal care — for generations.',
  'footer.explore.heading': 'Explore',
  'footer.explore.shop': 'Shop',
  'footer.explore.pflege': 'Personal care',
  'footer.explore.haushalt': 'Home',
  'footer.explore.bundles': 'Bundles',
  'footer.explore.about': 'About',
  'footer.legal.heading': 'Legal',
  'footer.legal.label': 'Legal links',
  'footer.legal.impressum': 'Imprint',
  'footer.legal.datenschutz': 'Privacy policy',
  'footer.copyright': 'Kaiser-Natron® · All rights reserved.',
  'footer.madeIn': 'Filled in Austria.',

  // Legal pages (EN). Mirrors the DE structure 1:1; final wording must
  // be reviewed by legal counsel before launch.
  'legal.impressum.eyebrow': 'Provider information',
  'legal.impressum.title': 'Imprint',
  'legal.impressum.updated': 'Last updated: May 2026',
  'legal.impressum.section.operator.heading': 'Media owner & service provider',
  'legal.impressum.section.operator.body': 'Holste GmbH\nMusterstraße 1\n1010 Vienna, Austria\n\nManaging Director: [Name of Managing Director]',
  'legal.impressum.section.contact.heading': 'Contact',
  'legal.impressum.section.contact.body': 'Phone: +43 (0) 1 000 00 00\nEmail: kontakt@kaiser-natron.at\nWeb: https://kaiser-natron.at',
  'legal.impressum.section.register.heading': 'Commercial register',
  'legal.impressum.section.register.body': 'Company register number: FN 000000a\nRegister court: Commercial Court of Vienna',
  'legal.impressum.section.vat.heading': 'VAT identification',
  'legal.impressum.section.vat.body': 'VAT ID: ATU00000000\nGISA number: 00000000',
  'legal.impressum.section.authority.heading': 'Supervisory authority & trade regulations',
  'legal.impressum.section.authority.body': 'Competent supervisory authority: Magistratisches Bezirksamt Wien\nChamber: Vienna Chamber of Commerce\nApplicable trade regulation: Gewerbeordnung (www.ris.bka.gv.at)',
  'legal.impressum.section.liability.heading': 'Liability for content and links',
  'legal.impressum.section.liability.body': 'The content of this website is created with the greatest possible care. We cannot, however, guarantee the accuracy, completeness or topicality of the content. The operators of linked external websites are solely responsible for their content.',
  'legal.impressum.section.copyright.heading': 'Copyright',
  'legal.impressum.section.copyright.body': 'All content on this website (text, images, graphics, logos) is protected by copyright. Reproduction, modification or distribution outside the limits of copyright law require the prior written consent of Holste GmbH.',

  'legal.datenschutz.eyebrow': 'Privacy notice',
  'legal.datenschutz.title': 'Privacy policy',
  'legal.datenschutz.updated': 'Last updated: May 2026',
  'legal.datenschutz.section.controller.heading': 'Controller',
  'legal.datenschutz.section.controller.body': 'The controller within the meaning of the GDPR and the Austrian Data Protection Act is Holste GmbH, Musterstraße 1, 1010 Vienna. Privacy enquiries can be sent to datenschutz@kaiser-natron.at.',
  'legal.datenschutz.section.scope.heading': 'Scope',
  'legal.datenschutz.section.scope.body': 'This policy applies to kaiser-natron.at and all related online offerings, including the order and checkout flow. External services we link to are governed exclusively by their own privacy policies.',
  'legal.datenschutz.section.legalBasis.heading': 'Legal bases',
  'legal.datenschutz.section.legalBasis.body': 'We process personal data on the basis of Art. 6(1) GDPR — in particular for performance of contract (lit. b), to comply with legal obligations (lit. c), and on the basis of your consent (lit. a). Marketing-related processing only takes place on an opt-in basis.',
  'legal.datenschutz.section.data.heading': 'What data we process',
  'legal.datenschutz.section.data.body': 'When you place an order we collect the data needed to fulfil the contract and ship: name, postal address, email, optionally a phone number. If you create an account, your credentials are additionally stored in encrypted form. Technically necessary server logs (IP, user agent, timestamp) are retained for a maximum of seven days.',
  'legal.datenschutz.section.cookies.heading': 'Cookies',
  'legal.datenschutz.section.cookies.body': 'We use only strictly necessary cookies (language preference, cart, session). Tracking or marketing cookies are loaded only after explicit consent via the cookie banner.',
  'legal.datenschutz.section.analytics.heading': 'Audience measurement',
  'legal.datenschutz.section.analytics.body': 'Where enabled, we use a self-hosted, anonymised audience-measurement system without third-country transfers. IP addresses are truncated and no personally identifying profiles are created.',
  'legal.datenschutz.section.payments.heading': 'Payments',
  'legal.datenschutz.section.payments.body': 'Payments are processed by Stripe (Stripe Payments Europe, Limited, Ireland). Payment details are sent directly to Stripe; we receive only the payment status and transaction ID. See stripe.com/privacy for details.',
  'legal.datenschutz.section.rights.heading': 'Your rights',
  'legal.datenschutz.section.rights.body': 'You have the right at any time to request access, correction, erasure, restriction of processing, data portability, and to object. Consent once given may be withdrawn at any time without giving reasons. Complaints may be filed with the Austrian Data Protection Authority (dsb.gv.at).',
  'legal.datenschutz.section.retention.heading': 'Retention periods',
  'legal.datenschutz.section.retention.body': 'Order data is retained for seven years pursuant to § 132 BAO. Marketing consents are kept until withdrawal; technical logs for a maximum of seven days.',
  'legal.datenschutz.section.contact.heading': 'Privacy contact',
  'legal.datenschutz.section.contact.body': 'For all privacy-related matters please contact datenschutz@kaiser-natron.at or write to the postal address listed in the imprint.',

  // Category landings (EN).
  'category.pflege.eyebrow': 'Personal care & wellbeing',
  'category.pflege.title.a': 'Bathe, soothe,',
  'category.pflege.title.em': 'breathe.',
  'category.pflege.sub': 'Bath and care products built around Kaiser-Natron® — tuned to everyday life, sport, and slow evenings at home.',
  'category.pflege.products.headline': 'Range for',
  'category.pflege.products.headline.em': 'body & care',
  'category.pflege.products.sub': 'From a full alkaline bath to a mountain-pine foot bath — all based on the original.',
  'category.pflege.benefits.eyebrow': 'Why natron cares',
  'category.pflege.benefits.headline': 'Gentle, alkaline,',
  'category.pflege.benefits.headline.em': 'skin-friendly.',
  'category.pflege.benefit.1.title': 'Acid-base balance',
  'category.pflege.benefit.1.text': 'Natron in bath water supports the skin\'s natural balance and neutralises excess acidity — soothing after sport and long days.',
  'category.pflege.benefit.2.title': 'No harsh chemistry',
  'category.pflege.benefit.2.text': 'Pure sodium bicarbonate, not aggressive surfactants. Free of microplastics and preservatives; dermatologically tested.',
  'category.pflege.benefit.3.title': 'Versatile rituals',
  'category.pflege.benefit.3.text': 'Full bath, foot bath, scrub, deodorant: one ingredient, many small care rituals — friendly even to sensitive skin.',
  'category.pflege.cta.headline': 'Discover more in the',
  'category.pflege.cta.headline.em': 'full shop.',
  'category.pflege.cta.sub': 'Cleaning, laundry, kitchen — the whole range at a glance.',
  'category.pflege.cta.button': 'Visit the shop',

  'category.haushalt.eyebrow': 'Home & cleaning',
  'category.haushalt.title.a': 'Scrub, wash,',
  'category.haushalt.title.em': 'everything clean.',
  'category.haushalt.sub': 'Natron-based cleaners and laundry helpers that handle stubborn dirt — without unnecessary chemistry.',
  'category.haushalt.products.headline': 'Range for',
  'category.haushalt.products.headline.em': 'home & laundry',
  'category.haushalt.products.sub': 'All-purpose, dish, wash-soda and more — from a fine cleaner to a powerful descaler.',
  'category.haushalt.benefits.eyebrow': 'Why natron cleans',
  'category.haushalt.benefits.headline': 'Effective, honest,',
  'category.haushalt.benefits.headline.em': 'close to nature.',
  'category.haushalt.benefit.1.title': 'Odour neutralisation',
  'category.haushalt.benefit.1.text': 'Natron binds acids rather than masking them — your kitchen, fridge and laundry actually become neutral, not just over-perfumed.',
  'category.haushalt.benefit.2.title': 'Gentle on surfaces',
  'category.haushalt.benefit.2.text': 'Mildly abrasive, not aggressive: lifts grease and crust without harming glass, stainless steel or enamel.',
  'category.haushalt.benefit.3.title': 'No microplastics',
  'category.haushalt.benefit.3.text': 'Our cleaners use plant-based surfactants and natural fragrances — free of microplastics and unnecessary preservatives.',
  'category.haushalt.cta.headline': 'Care &',
  'category.haushalt.cta.headline.em': 'kitchen too in the shop.',
  'category.haushalt.cta.sub': 'Bath and kitchen products, bundles and more — all on one page.',
  'category.haushalt.cta.button': 'Visit the shop',

  // Stepped checkout (EN).
  'checkout.stepper.label': 'Checkout progress',
  'checkout.step.cart': 'Cart',
  'checkout.step.account': 'Account',
  'checkout.step.shipping': 'Shipping',
  'checkout.step.payment': 'Payment',
  'checkout.back': 'Back',
  'checkout.exit': 'Exit',
  'checkout.backToShopping': 'Back to shopping',
  'checkout.home': 'Home',
  'checkout.cta.review': 'Continue',

  'checkout.cart.heading': 'Your cart',
  'checkout.cart.title': 'Cart',
  'checkout.cart.itemsLabel': 'Items',
  'checkout.cart.perItem': 'each',
  'checkout.cart.shipping': 'Shipping',
  'checkout.cart.total': 'Total',
  'checkout.cart.cta.shop': 'Visit the shop',
  'checkout.cart.cta.continueShopping': '← Continue shopping',
  'checkout.cart.cta.continue': 'Continue',

  'checkout.account.heading': 'Account & contact',
  'checkout.account.sub': 'Check out as guest or continue with your account — whatever you prefer.',
  'checkout.account.tabsLabel': 'Account options',
  'checkout.account.tab.guest': 'Guest',
  'checkout.account.tab.signin': 'Sign in',
  'checkout.account.tab.register': 'Create account',
  'checkout.account.forgot': 'Forgot password?',
  'checkout.account.cta.continue': 'Continue',

  'checkout.shipping.sub': 'Where shall we deliver? You can enter a separate billing address below if needed.',
  'checkout.billing.sub': 'If the invoice should go to a different address, untick the box.',
  'checkout.shipping.cta.continue': 'Continue',

  'checkout.payment.sub': 'Pay with Apple Pay, Google Pay or card — all processed through Stripe.',
  'checkout.section.card': 'Pay with card',

  'checkout.field.firstName': 'First name',
  'checkout.field.lastName': 'Last name',
  'checkout.field.password': 'Password',
  'checkout.field.passwordConfirm': 'Confirm password',
  'checkout.field.salutation': 'Salutation',
  'checkout.field.salutation.placeholder': 'Please select',
  'checkout.field.salutation.frau': 'Mrs.',
  'checkout.field.salutation.herr': 'Mr.',
  'checkout.field.salutation.divers': 'Diverse',
  'checkout.hint.password': 'At least 8 characters.',

  'checkout.error.passwordMismatch': 'The passwords don\'t match.',
  'checkout.error.addressIncomplete': 'Please fill in all required address fields.',

  // Auth (EN).
  'auth.login.eyebrow': 'Welcome back',
  'auth.login.title': 'Sign in',
  'auth.login.sub': 'Continue with your Kaiser-Natron® account.',
  'auth.login.cta': 'Sign in',
  'auth.login.forgot': 'Forgot password?',
  'auth.login.newCustomer': 'New here?',
  'auth.login.cta.register': 'Create account',

  'auth.reset.title': 'Reset password',
  'auth.reset.sub': 'We\'ll send a secure link to your email.',
  'auth.reset.cta': 'Request link',
  'auth.reset.back': '← Back to sign in',
  'auth.reset.sent.title': 'Mail on its way',
  'auth.reset.sent.body': 'If an account exists for that address, you\'ll find the link in your inbox.',

  'auth.register.eyebrow': 'Create account',
  'auth.register.title': 'Welcome',
  'auth.register.sub': 'An account gets you order history, saved addresses, and exclusive bundle offers.',
  'auth.register.cta': 'Create account',
  'auth.register.haveAccount': 'Already have an account?',
  'auth.register.cta.signIn': 'Sign in',
  'auth.register.terms.before': 'I have read and accept the',
  'auth.register.terms.link': 'Terms & Privacy policy',
  'auth.register.terms.after': '.',
}

export default {
  de,
  at: { ...de, ...atOverrides },
  en,
}
