import type { Locale } from "./config";

// Zentrales UI-Wörterbuch: Header/Footer/Buttons/wiederkehrende Bausteine + Seitentexte für alle
// vier Sprachen (DE/EN/CH/FR). Rechtstexte (Impressum/Datenschutz/AGB/Widerruf/Muster-Widerruf)
// bleiben bewusst nur Deutsch (siehe Vault-Notiz zu rechtlicher Genauigkeit) und stehen deshalb
// NICHT hier drin.

export const ui = {
  de: {
    nav: { shop: "Shop", sale: "Sale", creative: "Über die Kreative", faq: "FAQ", contact: "Kontakt", account: "Mein Konto", login: "Anmelden", cart: "Warenkorb" },
    accountMenu: { myAccount: "Mein Konto", logout: "Abmelden" },
    topbar: "Versandkostenfrei ab 75 € (DE) / 85 € (AT, LU) / 100 € (CH)",
    footer: {
      tagline: "Handgemacht mit Liebe – Kreativität zum Verschenken und Selbstbehalten.",
      shopHeading: "Shop", serviceHeading: "Service", legalHeading: "Rechtliches",
      shipping: "Versand & Zahlung", account: "Mein Konto",
      copyright: "Einzelunternehmen · Kleinunternehmer gemäß §19 UStG",
      legalNoteTitle: "Hinweis zu rechtlichen Seiten",
      legalNote: "Impressum, Datenschutz, AGB, Widerrufsbelehrung und das Muster-Widerrufsformular sind aus rechtlichen Gründen ausschließlich auf Deutsch verfügbar.",
    },
    badge: { neu: "Neu", bestseller: "Bestseller", sale: "Sale", handgemacht: "Handgemacht", ausverkauft: "Ausverkauft" },
    common: {
      addToCart: "In den Warenkorb", soldOut: "Ausverkauft", addedToCart: "Zum Warenkorb hinzugefügt ✓",
      onlyXLeft: (n: string) => `Nur noch ${n} auf Lager`, maxInCart: "Maximale verfügbare Menge ist bereits im Warenkorb", maxInCartShort: "Bereits im Warenkorb",
      browseShop: "Jetzt stöbern", viewAll: "Alle ansehen →", viewAllSale: "Alle Angebote →",
      toShop: "Zum Shop →", moreAboutMe: "Mehr über mich →", discoverNow: "Jetzt entdecken",
      installApp: "App installieren", installAppShort: "Installieren",
      vatNote: "Gemäß §19 UStG wird keine Umsatzsteuer berechnet und ausgewiesen.",
      allPricesPlusShipping: "Alle Preise zzgl. Versand.", plusShipping: "zzgl. Versand",
      quantity: "Anzahl", photoSoon: "Produktfoto folgt", portraitSoon: "Porträtfoto von VanVan folgt",
      prevPhoto: "Vorheriges Foto", nextPhoto: "Nächstes Foto",
      handmadeBadge: "🩵 Handgemacht",
      skipToContent: "Zum Inhalt springen", back: "← Zurück",
    },
    product: {
      articleNo: "Artikelnummer", material: "Material", size: "Größe", colors: "Farben",
      included: "Lieferumfang", care: "Pflegehinweise", delivery: "Lieferzeit",
      recommendations: "Das könnte dir auch gefallen",
      todoFields: "GPSR-Hinweise, Warnhinweise, Hersteller/Herstelleranschrift und Produktvideos werden ergänzt, sobald echte Produktdaten von VanVan vorliegen (Phase 2, Adminbereich).",
      photoNote: "echte Fotos ergänzt VanVan später",
      reviewsTitle: "Kundenrezensionen", noReviews: "Noch keine Bewertungen für dieses Produkt — sei die/der Erste!",
      reviewCount: (n: number) => `${n} Bewertung${n === 1 ? "" : "en"}`,
      writeReviewTitle: "🩵 Deine Rezension", yourRating: "Deine Bewertung", yourReview: "Was hat dir gefallen? (optional)",
      yourName: "Dein Name", submitReview: "Rezension veröffentlichen", reviewSaved: "Danke für deine Rezension! ✓",
      reviewNeedsRating: "Bitte wähle 1–5 Herzen aus.", reviewFromOrder: (nr: string) => `Du bewertest deine Bestellung ${nr}.`,
      loginHintReview: "Angemeldet als", notLoggedInReview: "Du bist nicht angemeldet — deine Rezension wird mit dem eingegebenen Namen veröffentlicht.",
    },
    shop: {
      title: "Alle Produkte", lead: "Stöbere durch alle handgemachten Stücke – filtere und sortiere nach deinen Wünschen.",
      filters: "Filter", allCategories: "Alle Kategorien", priceUpTo: "Preis bis", priceUpToValue: (v: number) => `bis ${v} €`,
      onlyAvailable: "Nur verfügbare Artikel", onlyBestseller: "🔥 Nur Bestseller (Top 6)", filterNote: "Material- und Farbfilter folgen, sobald mehr Produkte im Sortiment sind.",
      sortNew: "Neu", sortBestseller: "Bestseller", sortPriceAsc: "Preis aufsteigend", sortPriceDesc: "Preis absteigend", sortRating: "Beste Bewertung",
      resultCount: (n: number) => `${n} Produkt${n === 1 ? "" : "e"}`, noResults: "Keine Produkte gefunden – bitte Filter anpassen.",
      breadcrumbShop: "Shop", categoryEmpty: "In dieser Kategorie sind aktuell noch keine Produkte hinterlegt – schau bald wieder vorbei.",
      categoryLabel: "Kategorie", productSingular: "Produkt", productPlural: "Produkte", sortLabel: "Sortierung", subcategoriesLabel: "Unterkategorien", mainCategoryLabel: "Hauptkategorie", subcategoryEmpty: "Für diesen Bereich stellt VanVan bald die ersten Produkte ein – schau bald wieder vorbei.", moreAbout: "Mehr über", moreVariants: "Weitere Modelle",
      moreAboutCharacterLead: "Wenn du mehr über mich erfahren möchtest, dann klicke",
      minRatingLabel: "Mindestbewertung", minRatingAny: "Alle Bewertungen",
    },
    reviews: {
      heading: "Was unsere Kund:innen sagen", lead: "Echte Rückmeldungen zu unseren handgemachten Stücken.",
      basedOn: (n: number) => `basierend auf ${n} Bewertung${n === 1 ? "" : "en"}`,
      toProduct: "Zum Produkt →",
    },
    sale: {
      eyebrow: "% Sale", title: "Aktuelle Angebote", lead: "Zeitlich begrenzte Rabatte auf ausgewählte handgemachte Stücke.",
      empty: "Aktuell läuft keine Aktion – schau bald wieder vorbei.",
    },
    faq: {
      title: "Häufig gestellte Fragen",
      // Inhalte (Fragen/Antworten) seit 03.08.2026 admin-editierbar in src/content/faq.json
      // (siehe src/data/faq.ts) statt hier fest zu stehen.
    },
    contact: {
      title: "Schreib uns", lead: "Fragen zu einem Produkt, deiner Bestellung oder eine individuelle Anfrage? Melde dich gerne!",
      name: "Name", email: "E-Mail", subject: "Betreff", message: "Nachricht",
      gdprPrefix: "Ich habe die", gdprLink: "Datenschutzerklärung", gdprSuffix: "gelesen und bin mit der Verarbeitung meiner Daten einverstanden.",
      send: "Nachricht senden", sentDemo: "Danke! (Demo – noch keine echte Übertragung in Phase 1)",
      todoNote: "TODO Phase 2: Formular an eine echte Backend-/E-Mail-Anbindung (Cloudflare Worker) anschließen. Aktuell ohne echten Versand.",
      directTitle: "Direkter Kontakt", emailPlaceholderNote: "(Platzhalter-Adresse)", orderNote: "Für Bestellfragen bitte die Bestellnummer angeben.",
      responseTitle: "Antwortzeit", responseNote: "In der Regel innerhalb von 1–2 Werktagen.",
    },
    about: {
      eyebrow: "Über die Kreative", title: "Hallo, ich bin VanVan 🩵",
      lead: "Willkommen in meiner kleinen Werkstatt! Hier entsteht alles, was du im Shop findest, von Hand – Stich für Stich, Perle für Perle.",
      valuesTitle: "Was mir wichtig ist",
      values: [
        { icon: "🧵", title: "Handarbeit", text: "Kein Massenprodukt – jedes Stück entsteht einzeln und mit Sorgfalt." },
        { icon: "🩵", title: "Qualität", text: "Sorgfältig ausgewählte Materialien für langlebige, schöne Ergebnisse." },
        { icon: "🎁", title: "Persönlich", text: "Ob Geschenk oder Selbstbehalten – jedes Produkt trägt ein Stück Herzblut." },
      ],
      story: [
        {
          title: "Meine Reise begann mit einer einzigen Masche",
          paragraphs: [
            "Vor etwa sechs Jahren habe ich meine Leidenschaft für das Häkeln entdeckt. Angefangen hat alles aus reiner Neugier. Ohne Kurse oder Vorkenntnisse habe ich mir Schritt für Schritt alles selbst beigebracht.",
            "Mit jeder neuen Masche, jedem kleinen Fehler und jedem fertigen Projekt wuchs nicht nur mein Können, sondern auch meine Begeisterung für dieses wundervolle Handwerk.",
            "Heute ist das Häkeln für mich weit mehr als nur ein Hobby. Es ist mein kreativer Ausgleich, eine Möglichkeit, Ideen Wirklichkeit werden zu lassen und Menschen mit liebevoll gestalteten Unikaten ein Lächeln ins Gesicht zu zaubern.",
            "Besonders die Herstellung von Amigurumis begeistert mich immer wieder aufs Neue. Es fasziniert mich, wie aus einem einfachen Knäuel Wolle nach und nach kleine Persönlichkeiten entstehen – jede einzelne mit ihrem ganz eigenen Charme.",
          ],
        },
        {
          title: "Kreativität kennt keine Grenzen",
          paragraphs: [
            "Neben dem Häkeln habe ich auch meine Leidenschaft für handgefertigten Modeschmuck entdeckt.",
            "Mit viel Sorgfalt fertige ich Armbänder, Halsketten, Schlüsselanhänger und weitere Accessoires an. Dabei liebe ich es, verschiedene Materialien, Farben und Anhänger miteinander zu kombinieren und immer wieder neue Designs entstehen zu lassen.",
            "Jedes Schmuckstück soll nicht nur schön aussehen, sondern seinem neuen Besitzer lange Freude bereiten.",
            "Kreativität begleitet mich schon mein ganzes Leben. Deshalb findest du bei mir nicht nur klassische Häkelarbeiten oder Schmuck, sondern immer wieder neue kreative Ideen und Projekte, die mit viel Liebe entstehen.",
          ],
        },
        {
          title: "Qualität mit Herz",
          paragraphs: [
            "Für mich bedeutet Handarbeit Persönlichkeit.",
            "Kein Produkt entsteht am Fließband.",
            "Jedes einzelne Stück wird von mir sorgfältig geplant, gefertigt und kontrolliert.",
            "Dabei lege ich besonderen Wert auf hochwertige Materialien, saubere Verarbeitung, liebevolle Details, langlebige Qualität und einzigartige Designs.",
          ],
        },
        {
          title: "Mehr als nur ein Hobby",
          paragraphs: [
            "Hinter meiner Kreativität steckt weit mehr als Wolle und Perlen.",
            "Ich bin ein Mensch, der mit ganzem Herzen bei der Sache ist. Wenn ich etwas tue, dann mit Leidenschaft, Geduld und dem Wunsch, etwas Besonderes zu erschaffen.",
            "Es macht mich glücklich, wenn meine Werke anderen Menschen Freude schenken – sei es als Geschenk für einen lieben Menschen oder einfach als kleine Aufmerksamkeit für sich selbst.",
          ],
        },
        {
          title: "Mein kleiner Herzensshop",
          paragraphs: [
            "Mein Shop ist deshalb nicht einfach nur ein Ort, an dem Produkte verkauft werden.",
            "Er ist ein Teil von mir.",
            "Hier stecken unzählige Stunden Arbeit, Kreativität, Herzblut und ganz viel Liebe in jedem einzelnen Werk.",
            "Genau das macht jedes Stück einzigartig.",
          ],
        },
        {
          title: "Danke, dass du da bist",
          paragraphs: [
            "Vielen Dank, dass du dir die Zeit nimmst, meine kleine kreative Welt kennenzulernen und meine Leidenschaft zu unterstützen.",
            "Ich wünsche dir ganz viel Freude beim Stöbern und hoffe, dass du genau das eine Stück findest, das dein Herz höherschlagen lässt.",
          ],
        },
      ],
      closing: "Mit Liebe handgemacht – Masche für Masche und Perle für Perle.",
    },
    shipping: {
      eyebrow: "Versand & Zahlung", title: "Versand & Zahlung",
      shippingTitle: "📦 Versand",
      shippingItems: [
        "Versand ausschließlich mit DHL", "Lieferländer: Deutschland, Österreich, Schweiz, Luxemburg",
        "Lieferzeit: 2–7 Werktage", "Versandkosten sind pro Produkt hinterlegt und zusätzlich nach Warenwert & Land gestaffelt",
        "Versandkostenfrei ab 75 € Warenwert (Deutschland), 85 € (Österreich, Luxemburg) bzw. 100 € (Schweiz)", "Der Versand erfolgt erst nach Zahlungseingang",
        "Bei Lieferungen in die Schweiz können Schweizer Einfuhrumsatzsteuer und Zollgebühren anfallen, die von dir als Empfänger:in getragen werden",
      ],
      paymentTitle: "💳 Zahlungsarten", paymentItems: ["PayPal", "Kredit-/Debitkarte als Gast über PayPal (Visa & Mastercard)", "Banküberweisung (Vorkasse)"],
      todoNote: "Konkrete Versandkosten-Staffel je Land/Warenwert wird ergänzt, sobald VanVan die finalen DHL-Konditionen festgelegt hat.",
    },
    cart: {
      eyebrow: "Warenkorb", title: "Dein Warenkorb", empty: "Dein Warenkorb ist noch leer.",
      subtotal: "Zwischensumme", shipping: "Versand", shippingCalculated: "wird im Checkout berechnet",
      total: "Gesamt", remaining: (v: string) => `Noch ${v} bis zum kostenlosen Versand.`, freeShipping: "🩵 Du bekommst kostenlosen Versand!",
      toCheckout: "Weiter zum Checkout", remove: "Entfernen", perItem: "/ Stück",
      discount: "Rabatt", mengenrabatt: (p: string) => `Mengenrabatt -${p}%`,
      mengenrabattTier: (ab: string, p: string) => `ab ${ab} Stück -${p}%`,
      couponLabel: "🎟️ Gutscheincode", couponPlaceholder: "Code eingeben", couponApply: "Einlösen", couponRemove: "Entfernen",
      buyNow: "Jetzt kaufen", keptInCart: "Bleibt im Warenkorb, wird noch nicht gekauft",
      couponInvalid: "Code ungültig oder abgelaufen.", couponApplied: (code: string) => `Gutschein „${code}" eingelöst`,
      partnerDiscount: "🤝 Partner-Rabatt",
      partnerCodeLabel: "🤝 Partner-Rabattcode", partnerCodePlaceholder: "Code eingeben", partnerCodeApply: "Einlösen", partnerCodeRemove: "Entfernen",
      partnerCodeInvalid: "Code ungültig oder abgelaufen.", partnerCodeApplied: (code: string) => `Partner-Code „${code}" eingelöst`,
      loyaltyDiscount: "🎁 Treuebonus (-20 %)",
      loyaltyBannerTitle: "🎁 Dein Treuebonus ist bereit!",
      loyaltyBannerText: "Wähle unten den Artikel aus, auf den du 20 % Rabatt erhältst.",
      loyaltySelectLabel: "Für 20 % Treuebonus auswählen",
      loyaltySelectedLabel: "🎁 -20 % Treuebonus angewendet",
      gratisPraemie: "Gratis-Prämie aus deinem Abo",
      aboDiscount: "🎫 Abo-Rabatt",
    },
    checkout: {
      eyebrow: "Checkout", title: "Bestellung abschließen",
      todoNote: "PayPal ist technisch fertig angebunden (echte, server-seitig geprüfte Zahlung) — bis ein echtes PayPal-Business-Konto hinterlegt ist, läuft es im kostenlosen PayPal-Testmodus, ohne dass echtes Geld fließt. Banküberweisung ist zu 100 % echt.",
      step1: "2. Kontakt & Lieferadresse", email: "E-Mail", firstName: "Vorname", lastName: "Nachname",
      street: "Straße & Hausnummer", zip: "PLZ", city: "Ort", country: "Land",
      step2: "1. Zahlungsart",
      step3: "3. Bestellübersicht", agbPrefix: "Ich habe die", agbLink: "AGB", agbSuffix: "gelesen und akzeptiere sie.",
      revocationPrefix: "Ich habe die", revocationLink: "Widerrufsbelehrung", revocationAnd: "und",
      privacyLink: "Datenschutzerklärung", revocationSuffix: "zur Kenntnis genommen.",
      bankTransfer: "Banküberweisung (Vorkasse)", orderButton: "Jetzt zahlungspflichtig bestellen", emptyCartAlert: "Dein Warenkorb ist leer.",
      payPalSub: "auch mit Kreditkarte, ohne eigenes Konto",
      payPalHint: "Bezahle sicher direkt mit deinem PayPal-Konto oder als Gast per Kredit-/Debitkarte – deine Kartendaten laufen dabei ausschließlich über PayPals eigene, gesicherte Seite, nie über unsere.",
      payPalCompleteHint: "Schließe deine Bestellung oben über den PayPal-Button ab – dort bezahlst du direkt, danach ist deine Bestellung sofort da.",
      bankHintReal: "Bitte überweise den Rechnungsbetrag nach Bestellabschluss an folgendes Konto. Deine Ware wird erst nach Zahlungseingang verschickt.",
      bankPlaceholder: "Die Bankverbindung wird dir nach Bestelleingang per E-Mail zugesendet.",
      bankHolder: "Kontoinhaber:in", bankIban: "IBAN", bankBic: "BIC", bankBankName: "Bank",
      shippingHintTitle: "Versandhinweis",
      shippingHint: "Versand ausschließlich per DHL nach Deutschland, Österreich, Schweiz und Luxemburg. Lieferzeit 2–7 Werktage. Versandkostenfrei ab 75 € (Deutschland), 85 € (Österreich, Luxemburg) bzw. 100 € (Schweiz). Versand erst nach Zahlungseingang.",
      shippingLink: "Mehr zu Versand & Zahlung →",
      thankYouEyebrow: "Danke", thankYouTitle: "Deine Bestellung ist eingegangen",
      thankYouLead: "Das ist aktuell eine Demo-Bestätigung (Phase 1, ohne echte Zahlungsabwicklung). Sobald der echte Checkout live ist, bekommst du hier und per E-Mail eine richtige Bestellbestätigung.",
      continueShopping: "Weiter stöbern", total: "Gesamt", free: "kostenlos",
    },
    account: {
      eyebrow: "Mein Konto", title: "Anmelden oder als Gast bestellen",
      todoNote: "Anmeldung mit Google/PayPal ist technisch fertig und echt (eigenes Kundenkonto, sichere Sitzung) — bis Google/PayPal-Zugangsdaten hinterlegt sind, meldet der Button einen klaren Hinweis statt eine Anmeldung vorzutäuschen. Die E-Mail/Passwort-Anmeldung darunter ist weiterhin eine Vorschau ohne echte Passwortprüfung.",
      loginTitle: "Anmelden", email: "E-Mail", password: "Passwort", loginButton: "Anmelden", forgotPassword: "Passwort vergessen?",
      newTitle: "Neu hier?", newText: "Lege ein Konto an, um Bestellhistorie, Wunschliste und Sendungsverfolgung an einem Ort zu haben – oder bestelle einfach als Gast, ganz ohne Konto.",
      guestButton: "Als Gast weiter einkaufen",
      loginError: "Bitte gib eine E-Mail-Adresse ein.",
      socialHeading: "Schneller anmelden mit",
      socialGoogle: "Mit Google anmelden", socialPaypal: "Mit PayPal anmelden",
      loginErrorUnconfigured: "Diese Anmeldeart ist noch nicht eingerichtet. Bitte melde dich per E-Mail an oder versuche es später erneut.",
      loginErrorDenied: "Anmeldung abgebrochen.",
      loginErrorGeneric: "Anmeldung fehlgeschlagen. Bitte versuche es erneut.",
      orDivider: "oder mit E-Mail",
      showPassword: "Passwort anzeigen", hidePassword: "Passwort verbergen",
      rememberMe: "Angemeldet bleiben",
      consentPrefix: "Mit der Anmeldung akzeptierst du unsere", consentLink: "Datenschutzerklärung", consentSuffix: ".",
      previewLink: "👁 Vorschau: So sieht der Bereich für angemeldete Kund:innen aus",
      previewName: "Marie L.",
    },
    accountDash: {
      eyebrow: "Mein Konto", greeting: (name: string) => `Hallo ${name} 🩵`, lead: "Schön, dass du wieder da bist. Hier findest du alle deine Bestellungen, deine Wunschliste und deine Daten auf einen Blick.",
      previewNote: "Phase 1: Deine Anmeldung, dein Profil und deine Rezensionen werden schon jetzt echt auf diesem Gerät gespeichert. Nur die Bestellungen unten sind Beispieldaten zur Gestaltung — echte Bestellungen kommen in Phase 2 mit Zahlungsanbindung und Datenbank (Cloudflare Worker + D1).",
      notLoggedIn: "Du bist nicht angemeldet — du wirst zur Anmeldung weitergeleitet …",
      logout: "Abmelden",
      exportDataButton: "📥 Meine Daten herunterladen", deleteAccountButton: "🗑️ Konto löschen",
      deleteAccountConfirm: "Dein Konto wird unwiderruflich gelöscht (nicht deine bereits aufgegebenen Bestellungen, die aus gesetzlichen Gründen aufbewahrt werden müssen). Fortfahren?",
      deleteAccountError: "Konto konnte nicht gelöscht werden. Bitte versuche es erneut.",
      navLabel: "Kontobereich-Navigation",
      statOrders: "Bestellungen", statWishlist: "Wunschliste", statOpen: "Offene Sendungen", statData: "Meine Daten", statLoyalty: "Treuebonus",
      datenHeaderBtn: "👤 Meine Daten",
      loyaltyTitle: "🎁 Mein Treuebonus",
      loyaltyProgressTemplate: "Dein Bestellfortschritt: {cur} von {ziel} Bestellungen",
      loyaltyRemainingOne: "Dir fehlt noch 1 Bestellung, bis du 20 % Rabatt auf einen Artikel deiner Wahl erhältst.",
      loyaltyRemainingOther: "Dir fehlen noch {n} Bestellungen, bis du 20 % Rabatt auf einen Artikel deiner Wahl erhältst.",
      loyaltyUnlockedTitle: "🎉 Treuebonus freigeschaltet",
      loyaltyUnlockedText: "Du hast zehn Bestellungen abgeschlossen und erhältst bei deiner nächsten Bestellung 20 % Rabatt auf einen Artikel deiner Wahl.",
      loyaltyGoToCart: "Artikel im Warenkorb auswählen →",
      loyaltyExplainer: "Es zählen nur vollständig abgeschlossene und bezahlte Bestellungen. Nach der Einlösung beginnt dein Fortschritt wieder bei null.",
      loyaltyStatCollected: "Gesammelt",
      loyaltyStatMissing: "Noch nötig",
      loyaltyStatBonus: "Bonus bei Ziel",
      loyaltyStatRedeemed: "Bisher eingelöst",
      loyaltyStatRedeemedNever: "Noch nie",
      loyaltyStatRedeemedSuffix: "×",
      loyaltyLastRedeemed: "Zuletzt eingelöst am {date}",
      loyaltyRuleValid: "Zählt: vollständig abgeschlossene & bezahlte Bestellungen",
      loyaltyRuleInvalid: "Zählt nicht: stornierte oder noch offene Bestellungen",
      loyaltyRuleReset: "Nach der Einlösung startet dein Fortschritt wieder bei 0",
      loyaltyLockedTitle: "🔒 Nur mit aktivem Abo verfügbar",
      loyaltyLockedText: "Der Treuebonus ist ein Extra für unsere Abo-Mitglieder. Schließe ein Abo ab, um Bestellungen für deine 20 %-Belohnung zu sammeln.",
      loyaltyLockedBtn: "Zum Abo →",
      statAbo: "Mein Abo",
      aboHeaderBtn: "🎫 Mein Abo verwalten",
      aboTitle: "🎫 Mein Abo",
      aboIntro: "Sichere dir dauerhaften Rabatt auf jede Bestellung und hol dir kostenlose Teddys als Dankeschön — automatisch, jeden Monat.",
      aboNameKlein: "Kleines Abo", aboNameMittel: "Mittleres Abo", aboNameGross: "Großes Abo",
      aboPreisSuffix: "/ Monat",
      aboVorteilKlein: "5 % Rabatt auf jede Bestellung. Nach jedem vollen Abo-Jahr: 1 kleiner Teddy gratis.",
      aboVorteilMittel: "10 % Rabatt auf jede Bestellung. Nach jedem vollen Abo-Jahr: 1 großer Teddy gratis.",
      aboVorteilGross: "20 % Rabatt auf jede Bestellung. Alle 6 Monate ein kleiner Teddy, nach jedem vollen Jahr zusätzlich ein großer Teddy.",
      aboAbschliessenBtn: "Abo abschließen",
      aboAktivesLabel: "✓ Dein aktuelles Abo",
      aboWechselnBtn: "Zu diesem Abo wechseln",
      aboNichtBuchbar: "Derzeit nicht buchbar",
      aboRewardEveryLabel: "alle {n} Mon.",
      aboStatusTitle: "Dein Abo-Status",
      aboFieldStufe: "Abo-Stufe", aboFieldPreis: "Monatlicher Preis", aboFieldRabatt: "Enthaltener Rabatt",
      aboFieldStart: "Startdatum", aboFieldNaechsteZahlung: "Nächste Zahlung", aboFieldLaufzeit: "Bisherige Laufzeit",
      aboMonateSuffix: "Monate",
      aboFortschrittKleinTemplate: "🧸 Noch {n} Monat(e) bis zum nächsten kleinen Teddy",
      aboFortschrittGrossTemplate: "🧸 Noch {n} Monat(e) bis zum nächsten großen Teddy",
      aboPraemienErhaltenTitel: "Diese Teddys hast du schon bekommen:",
      aboPraemienKeine: "Du hast noch keinen Teddy eingelöst.",
      aboPraemienAmTemplate: "erhalten am {datum}",
      aboPraemienAnsehen: "ansehen",
      aboPraemienUnbekannt: "Teddy aus einer früheren Einlösung",
      aboTeddyArtKlein: "Kleiner Teddy",
      aboTeddyArtGross: "Großer Teddy",
      aboPraemienVerfuegbarTitle: "🎉 Verfügbare Prämien",
      aboKeinePraemienVerfuegbar: "Aktuell keine Prämie zum Einlösen verfügbar.",
      aboEinloesenBtn: "Jetzt einlösen",
      aboEinloesenKleinLabel: "Kleiner Teddy", aboEinloesenGrossLabel: "Großer Teddy",
      aboEingeloestHinweis: "🧸 In den Warenkorb gelegt!",
      aboZahlungSimBtn: "Monatszahlung simulieren (Demo)",
      aboZahlungSimHinweis: "Phase 1: Es gibt noch keine echte wiederkehrende Zahlung im Hintergrund. Mit diesem Knopf testest du, was bei der nächsten erfolgreichen Monatsabbuchung passiert.",
      aboKuendigenBtn: "Abo kündigen",
      aboKuendigenConfirm: "Abo wirklich kündigen? Deine Vorteile bleiben bis zum Ende der bezahlten Laufzeit aktiv.",
      aboGekuendigtHinweisTemplate: "Gekündigt am {datum}. Deine Vorteile bleiben bis zum Ende der bezahlten Laufzeit aktiv, danach endet dein Abo automatisch.",
      aboWechselTitle: "Zu einem anderen Abo wechseln",
      aboBenachrichtigungenTitle: "🔔 Benachrichtigungen",
      aboKeineBenachrichtigungen: "Noch keine Benachrichtigungen — hier erscheinen automatisch Meldungen zu deinem Abo, z. B. bei jeder erfolgreichen Zahlung, einer neuen Teddy-Prämie oder einem Stufenwechsel.",
      aboNichtAktivBadge: "⏸ Rabatt pausiert",
      aboExplainer: "Alle Angaben werden aktuell sicher auf diesem Gerät gespeichert (Phase 1). Eine geräteübergreifende Datenbank folgt mit der echten Zahlungsanbindung in Phase 2.",
      notifAboAbgeschlossen: "Dein Abo wurde erfolgreich abgeschlossen — willkommen! 🎉",
      notifAboGewechselt: "Du hast erfolgreich in ein anderes Abo gewechselt ({stufe}).",
      notifAboZahlungErfolgreich: "Deine monatliche Abo-Zahlung war erfolgreich. ✅",
      notifAboTeddyKleinFrei: "🧸 Neue Prämie freigeschaltet: ein kleiner Teddy wartet auf dich!",
      notifAboTeddyGrossFrei: "🧸 Neue Prämie freigeschaltet: ein großer Teddy wartet auf dich!",
      notifAboBaldPraemie: "🧸 Fast geschafft — nächsten Monat wartet deine nächste Teddy-Prämie!",
      notifAboGekuendigt: "Du hast dein Abo gekündigt. Deine Vorteile bleiben bis zum Ende der bezahlten Laufzeit aktiv.",
      notifAboTeddyKleinEingeloest: "🧸 Kleiner Teddy eingelöst — er liegt jetzt kostenlos in deinem Warenkorb.",
      notifAboTeddyGrossEingeloest: "🧸 Großer Teddy eingelöst — er liegt jetzt kostenlos in deinem Warenkorb.",
      noOpenOrders: "Aktuell keine offenen Sendungen — alle Bestellungen sind schon angekommen. 🎉",
      noArrivedOrders: "Noch keine angekommenen Bestellungen — hier erscheinen deine Bestellungen, sobald sie geliefert wurden.",
      olderOrdersShow: "Ältere Bestellungen",
      olderOrdersHide: "Ältere Bestellungen ausblenden",
      olderOrdersSearch: "Bestellnummer oder Artikel suchen …",
      olderOrdersNoHits: "Dazu haben wir keine ältere Bestellung gefunden.",
      ordersTitle: "📦 Meine Bestellungen",
      orderNo: "Bestellung", orderDate: "Bestellt am", orderTotal: "Gesamt", orderItems: "Artikel",
      trackingLabel: "Sendungsverfolgung", trackingBtn: "Sendung verfolgen →", invoiceBtn: "Rechnung ansehen", reorderBtn: "Nochmal bestellen",
      invoiceTitle: "Rechnung", invoiceNumberLabel: "Rechnungsnummer", invoiceDateLabel: "Rechnungsdatum",
      invoiceSellerLabel: "Verkäufer", invoiceBillToLabel: "Rechnungsempfänger",
      invoiceItemLabel: "Artikel", invoiceQtyLabel: "Menge", invoiceUnitPriceLabel: "Einzelpreis", invoiceSumLabel: "Gesamtbetrag",
      invoiceCloseBtn: "Schließen", invoiceDownloadBtn: "Rechnung downloaden", invoiceDownloading: "Wird erstellt …",
      statusBezahlt: "Bezahlt", statusBearbeitung: "In Bearbeitung", statusVersandVorbereitet: "Versand vorbereitet", statusVersendet: "Versendet", statusAbgeschlossen: "Abgeschlossen",
      wishlistTitle: "🩵 Meine Wunschliste", wishlistEmpty: "Deine Wunschliste ist noch leer — stöbere im Shop und speichere deine Lieblingsstücke mit dem Herz-Symbol.",
      recentTitle: "🕘 Zuletzt angesehen",
      profileTitle: "👤 Meine Daten", profileName: "Name", profileEmail: "E-Mail", profileAddress: "Lieferadresse", profileEdit: "Daten bearbeiten",
      reviewBtn: "🩵 Rezension schreiben", reviewedBadge: "✓ Bewertet",
      nameSave: "Speichern", nameSaved: "Gespeichert ✓",
      usernameLabel: "Benutzername (Spitzname)", usernameHint: "Optional — ein Bonus, falls du lieber mit einem Spitzname statt deinem Namen angezeigt werden willst.", usernameSave: "Speichern", usernameSaved: "Gespeichert ✓",
      photoLabel: "Profilfoto", photoChange: "Foto ändern", photoRemove: "Entfernen",
    },
  },
  en: {
    nav: { shop: "Shop", sale: "Sale", creative: "About the Maker", faq: "FAQ", contact: "Contact", account: "My Account", login: "Sign in" },
    accountMenu: { myAccount: "My Account", logout: "Sign out" },
    topbar: "Free shipping from €75 (DE) / €85 (AT, LU) / €100 (CH)",
    footer: {
      tagline: "Handmade with love – creativity to gift and to keep.",
      shopHeading: "Shop", serviceHeading: "Service", legalHeading: "Legal",
      shipping: "Shipping & Payment", account: "My Account",
      copyright: "Sole proprietorship · Small business per §19 UStG (German VAT law)",
      legalNoteTitle: "Note on legal pages",
      legalNote: "Imprint, privacy policy, terms & conditions, withdrawal notice and the sample withdrawal form are, for legal accuracy, only available in German.",
    },
    badge: { neu: "New", bestseller: "Bestseller", sale: "Sale", handgemacht: "Handmade", ausverkauft: "Sold out" },
    common: {
      addToCart: "Add to cart", soldOut: "Sold out", addedToCart: "Added to cart ✓",
      onlyXLeft: (n: string) => `Only ${n} left in stock`, maxInCart: "The maximum available quantity is already in your cart", maxInCartShort: "Already in cart",
      browseShop: "Browse now", viewAll: "View all →", viewAllSale: "View all offers →",
      toShop: "To the shop →", moreAboutMe: "More about me →", discoverNow: "Discover now",
      installApp: "Install app", installAppShort: "Install",
      vatNote: "Under §19 UStG (German small-business rule) no VAT is charged or shown.",
      allPricesPlusShipping: "All prices plus shipping.", plusShipping: "plus shipping",
      quantity: "Quantity", photoSoon: "Product photo coming soon", portraitSoon: "VanVan's portrait photo coming soon",
      prevPhoto: "Previous photo", nextPhoto: "Next photo",
      handmadeBadge: "🩵 Handmade",
      skipToContent: "Skip to content", back: "← Back",
    },
    product: {
      articleNo: "Item number", material: "Material", size: "Size", colors: "Colors",
      included: "What's included", care: "Care instructions", delivery: "Delivery time",
      recommendations: "You might also like",
      todoFields: "GPSR notices, warnings, manufacturer details and product videos will be added once VanVan provides real product data (Phase 2, admin area).",
      photoNote: "real photos will be added by VanVan later",
      reviewsTitle: "Customer reviews", noReviews: "No reviews yet for this product — be the first!",
      reviewCount: (n: number) => `${n} review${n === 1 ? "" : "s"}`,
      writeReviewTitle: "🩵 Your review", yourRating: "Your rating", yourReview: "What did you like? (optional)",
      yourName: "Your name", submitReview: "Publish review", reviewSaved: "Thanks for your review! ✓",
      reviewNeedsRating: "Please choose 1–5 hearts.", reviewFromOrder: (nr: string) => `You're reviewing your order ${nr}.`,
      loginHintReview: "Signed in as", notLoggedInReview: "You're not signed in — your review will be published under the name you enter.",
    },
    shop: {
      title: "All products", lead: "Browse all handmade pieces – filter and sort to your liking.",
      filters: "Filters", allCategories: "All categories", priceUpTo: "Price up to", priceUpToValue: (v: number) => `up to €${v}`,
      onlyAvailable: "In-stock items only", onlyBestseller: "🔥 Bestsellers only (Top 6)", filterNote: "Material and color filters will follow once more products are in the shop.",
      sortNew: "New", sortBestseller: "Bestseller", sortPriceAsc: "Price: low to high", sortPriceDesc: "Price: high to low", sortRating: "Top rated",
      resultCount: (n: number) => `${n} product${n === 1 ? "" : "s"}`, noResults: "No products found – please adjust your filters.",
      breadcrumbShop: "Shop", categoryEmpty: "No products in this category yet – check back soon.",
      categoryLabel: "Category", productSingular: "product", productPlural: "products", sortLabel: "Sort by", subcategoriesLabel: "Subcategories", mainCategoryLabel: "Main category", subcategoryEmpty: "VanVan will be adding the first products here soon – check back shortly.", moreAbout: "More about", moreVariants: "More designs",
      moreAboutCharacterLead: "If you'd like to learn more about me, click",
      minRatingLabel: "Minimum rating", minRatingAny: "All ratings",
    },
    reviews: {
      heading: "What our customers say", lead: "Real feedback on our handmade pieces.",
      basedOn: (n: number) => `based on ${n} review${n === 1 ? "" : "s"}`,
      toProduct: "View product →",
    },
    sale: {
      eyebrow: "% Sale", title: "Current offers", lead: "Time-limited discounts on selected handmade pieces.",
      empty: "No promotion is running at the moment – check back soon.",
    },
    faq: {
      title: "Frequently Asked Questions",
      // Content (questions/answers) admin-editable since 03.08.2026 in src/content/faq.json
      // (see src/data/faq.ts) instead of hardcoded here.
    },
    contact: {
      title: "Get in touch", lead: "Questions about a product, your order, or a custom request? Feel free to reach out!",
      name: "Name", email: "Email", subject: "Subject", message: "Message",
      gdprPrefix: "I have read the", gdprLink: "privacy policy", gdprSuffix: "and agree to the processing of my data.",
      send: "Send message", sentDemo: "Thank you! (Demo – no real submission yet in Phase 1)",
      todoNote: "TODO Phase 2: connect this form to a real backend/email service (Cloudflare Worker). Currently no real sending happens.",
      directTitle: "Direct contact", emailPlaceholderNote: "(placeholder address)", orderNote: "Please include your order number for order-related questions.",
      responseTitle: "Response time", responseNote: "Usually within 1–2 business days.",
    },
    about: {
      eyebrow: "About the Maker", title: "Hi, I'm VanVan 🩵",
      lead: "Welcome to my little workshop! Everything you find in the shop is made here by hand – stitch by stitch, bead by bead.",
      valuesTitle: "What matters to me",
      values: [
        { icon: "🧵", title: "Craftsmanship", text: "No mass production – every piece is made individually and with care." },
        { icon: "🩵", title: "Quality", text: "Carefully chosen materials for durable, beautiful results." },
        { icon: "🎁", title: "Personal", text: "Whether a gift or a treat for yourself – every product carries a piece of heart." },
      ],
      story: [
        {
          title: "My journey began with a single stitch",
          paragraphs: [
            "About six years ago, I discovered my passion for crochet. It all started out of pure curiosity. Without any courses or prior experience, I taught myself everything step by step.",
            "With every new stitch, every small mistake and every finished project, not only my skills grew — so did my enthusiasm for this wonderful craft.",
            "Today, crochet is far more than just a hobby to me. It's my creative outlet, a way to turn ideas into reality and to bring a smile to people's faces with lovingly made one-of-a-kind pieces.",
            "I especially love making amigurumis. I'm fascinated by how a simple ball of yarn gradually turns into a little character — each one with its own unique charm.",
          ],
        },
        {
          title: "Creativity knows no limits",
          paragraphs: [
            "Alongside crochet, I also discovered my passion for handmade jewelry.",
            "With great care, I make bracelets, necklaces, keychains and other accessories. I love combining different materials, colors and charms to create new designs again and again.",
            "Every piece of jewelry should not only look beautiful, but bring its new owner joy for a long time to come.",
            "Creativity has been with me my whole life. That's why you'll find more at my shop than just classic crochet work or jewelry — always new creative ideas and projects, made with a lot of love.",
          ],
        },
        {
          title: "Quality with heart",
          paragraphs: [
            "To me, handmade means personality.",
            "No product comes off an assembly line.",
            "Every single piece is carefully planned, crafted and checked by me.",
            "I place special value on high-quality materials, clean workmanship, loving details, lasting quality and unique designs.",
          ],
        },
        {
          title: "More than just a hobby",
          paragraphs: [
            "Behind my creativity lies far more than yarn and beads.",
            "I'm someone who puts her whole heart into what she does. When I do something, I do it with passion, patience and the wish to create something special.",
            "It makes me happy when my work brings joy to others — whether as a gift for someone special or as a little treat for yourself.",
          ],
        },
        {
          title: "My little heart-shop",
          paragraphs: [
            "That's why my shop isn't just a place where products are sold.",
            "It's a part of me.",
            "Countless hours of work, creativity, heart and so much love go into every single piece here.",
            "That's exactly what makes each piece unique.",
          ],
        },
        {
          title: "Thank you for being here",
          paragraphs: [
            "Thank you so much for taking the time to get to know my little creative world and for supporting my passion.",
            "I wish you lots of joy browsing, and I hope you find exactly the one piece that makes your heart skip a beat.",
          ],
        },
      ],
      closing: "Handmade with love – stitch by stitch and bead by bead.",
    },
    shipping: {
      eyebrow: "Shipping & Payment", title: "Shipping & Payment",
      shippingTitle: "📦 Shipping",
      shippingItems: [
        "Shipped exclusively via DHL", "Countries we deliver to: Germany, Austria, Switzerland, Luxembourg",
        "Delivery time: 2–7 business days", "Shipping costs are set per product and further tiered by order value & country",
        "Free shipping from €75 order value (Germany), €85 (Austria, Luxembourg) or €100 (Switzerland)", "Shipping only starts after payment has been received",
        "Deliveries to Switzerland may be subject to Swiss import VAT and customs fees, payable by you as the recipient",
      ],
      paymentTitle: "💳 Payment methods", paymentItems: ["PayPal", "Credit/debit card as a guest via PayPal (Visa & Mastercard)", "Bank transfer (prepayment)"],
      todoNote: "Concrete shipping-cost tiers per country/order value will be added once VanVan finalizes the DHL terms.",
    },
    cart: {
      eyebrow: "Cart", title: "Your cart", empty: "Your cart is still empty.",
      subtotal: "Subtotal", shipping: "Shipping", shippingCalculated: "calculated at checkout",
      total: "Total", remaining: (v: string) => `${v} more for free shipping.`, freeShipping: "🩵 You qualify for free shipping!",
      toCheckout: "Continue to checkout", remove: "Remove", perItem: "/ item",
      discount: "Discount", mengenrabatt: (p: string) => `Bulk discount -${p}%`,
      mengenrabattTier: (ab: string, p: string) => `from ${ab} pcs -${p}%`,
      couponLabel: "🎟️ Coupon code", couponPlaceholder: "Enter code", couponApply: "Apply", couponRemove: "Remove",
      buyNow: "Buy now", keptInCart: "Stays in cart, not purchased yet",
      couponInvalid: "Code invalid or expired.", couponApplied: (code: string) => `Coupon "${code}" applied`,
      partnerDiscount: "🤝 Partner discount",
      partnerCodeLabel: "🤝 Partner discount code", partnerCodePlaceholder: "Enter code", partnerCodeApply: "Apply", partnerCodeRemove: "Remove",
      partnerCodeInvalid: "Code invalid or expired.", partnerCodeApplied: (code: string) => `Partner code "${code}" applied`,
      loyaltyDiscount: "🎁 Loyalty reward (-20%)",
      loyaltyBannerTitle: "🎁 Your loyalty reward is ready!",
      loyaltyBannerText: "Pick the item below that you'd like 20% off.",
      loyaltySelectLabel: "Select for 20% loyalty reward",
      loyaltySelectedLabel: "🎁 -20% loyalty reward applied",
      gratisPraemie: "Free reward from your subscription",
      aboDiscount: "🎫 Subscription discount",
    },
    checkout: {
      eyebrow: "Checkout", title: "Complete your order",
      todoNote: "PayPal is technically fully connected (real, server-verified payment) — until a real PayPal Business account is set up, it runs in PayPal's free test mode, so no real money moves yet. Bank transfer is 100% real.",
      step1: "2. Contact & shipping address", email: "Email", firstName: "First name", lastName: "Last name",
      street: "Street & house number", zip: "ZIP code", city: "City", country: "Country",
      step2: "1. Payment method",
      step3: "3. Order summary", agbPrefix: "I have read the", agbLink: "terms & conditions", agbSuffix: "and accept them.",
      revocationPrefix: "I have taken note of the", revocationLink: "withdrawal notice", revocationAnd: "and",
      privacyLink: "privacy policy", revocationSuffix: ".",
      bankTransfer: "Bank transfer (prepayment)", orderButton: "Order now, subject to payment", emptyCartAlert: "Your cart is empty.",
      payPalSub: "also with credit card, no account needed",
      payPalHint: "Pay securely with your PayPal account or as a guest by credit/debit card – your card details are handled entirely on PayPal's own secure page, never on ours.",
      payPalCompleteHint: "Complete your order via the PayPal button above – you pay there directly, and your order is placed right after.",
      bankHintReal: "Please transfer the invoice amount to the following account after completing your order. Your items ship only once payment is received.",
      bankPlaceholder: "Bank details will be sent to you by email after your order.",
      bankHolder: "Account holder", bankIban: "IBAN", bankBic: "BIC", bankBankName: "Bank",
      shippingHintTitle: "Shipping note",
      shippingHint: "Shipped exclusively via DHL to Germany, Austria, Switzerland and Luxembourg. Delivery time 2–7 business days. Free shipping from €75 (Germany), €85 (Austria, Luxembourg) or €100 (Switzerland). Shipping only starts after payment has been received.",
      shippingLink: "More on shipping & payment →",
      thankYouEyebrow: "Thank you", thankYouTitle: "Your order has been received",
      thankYouLead: "This is currently a demo confirmation (Phase 1, no real payment processing). Once the real checkout is live, you'll receive a proper order confirmation here and by email.",
      continueShopping: "Continue browsing", total: "Total", free: "free",
    },
    account: {
      eyebrow: "My Account", title: "Sign in or check out as a guest",
      todoNote: "Sign-in with Google/PayPal is technically finished and real (your own customer account, secure session) — until Google/PayPal credentials are set up, the button shows a clear notice instead of faking a sign-in. The email/password sign-in below remains a preview without real password checking.",
      loginTitle: "Sign in", email: "Email", password: "Password", loginButton: "Sign in", forgotPassword: "Forgot password?",
      newTitle: "New here?", newText: "Create an account to keep order history, wishlist and tracking in one place – or simply check out as a guest, no account needed.",
      guestButton: "Continue shopping as guest",
      loginError: "Please enter an email address.",
      socialHeading: "Sign in faster with",
      socialGoogle: "Sign in with Google", socialPaypal: "Sign in with PayPal",
      loginErrorUnconfigured: "This sign-in method isn't set up yet. Please sign in by email or try again later.",
      loginErrorDenied: "Sign-in cancelled.",
      loginErrorGeneric: "Sign-in failed. Please try again.",
      orDivider: "or with email",
      showPassword: "Show password", hidePassword: "Hide password",
      rememberMe: "Keep me signed in",
      consentPrefix: "By signing in you accept our", consentLink: "privacy policy", consentSuffix: ".",
      previewLink: "👁 Preview: what signed-in customers see",
      previewName: "Marie L.",
    },
    accountDash: {
      eyebrow: "My Account", greeting: (name: string) => `Hello ${name} 🩵`, lead: "Good to see you again. Here you'll find all your orders, your wishlist and your details at a glance.",
      previewNote: "Phase 1: your sign-in, your profile and your reviews are already genuinely saved on this device. Only the orders below are example data for design purposes — real orders arrive in Phase 2 with payment integration and a database (Cloudflare Worker + D1).",
      notLoggedIn: "You're not signed in — redirecting you to sign in …",
      logout: "Sign out",
      exportDataButton: "📥 Download my data", deleteAccountButton: "🗑️ Delete account",
      deleteAccountConfirm: "Your account will be deleted permanently (not your past orders, which must be kept for legal reasons). Continue?",
      deleteAccountError: "Account could not be deleted. Please try again.",
      navLabel: "Account section navigation",
      statOrders: "Orders", statWishlist: "Wishlist", statOpen: "Open shipments", statData: "My details", statLoyalty: "Loyalty reward",
      datenHeaderBtn: "👤 My details",
      loyaltyTitle: "🎁 My loyalty reward",
      loyaltyProgressTemplate: "Your order progress: {cur} of {ziel} orders",
      loyaltyRemainingOne: "You need 1 more order to get 20% off an item of your choice.",
      loyaltyRemainingOther: "You need {n} more orders to get 20% off an item of your choice.",
      loyaltyUnlockedTitle: "🎉 Loyalty reward unlocked",
      loyaltyUnlockedText: "You've completed ten orders and get 20% off an item of your choice on your next order.",
      loyaltyGoToCart: "Choose item in cart →",
      loyaltyExplainer: "Only fully completed and paid orders count. After redemption your progress starts again from zero.",
      loyaltyStatCollected: "Collected",
      loyaltyStatMissing: "Still needed",
      loyaltyStatBonus: "Reward at goal",
      loyaltyStatRedeemed: "Redeemed so far",
      loyaltyStatRedeemedNever: "Never yet",
      loyaltyStatRedeemedSuffix: "×",
      loyaltyLastRedeemed: "Last redeemed on {date}",
      loyaltyRuleValid: "Counts: fully completed & paid orders",
      loyaltyRuleInvalid: "Doesn't count: cancelled or still open orders",
      loyaltyRuleReset: "After redemption your progress restarts at 0",
      loyaltyLockedTitle: "🔒 Only available with an active subscription",
      loyaltyLockedText: "The loyalty reward is an extra for our subscription members. Subscribe to start collecting orders towards your 20% reward.",
      loyaltyLockedBtn: "Go to subscription →",
      statAbo: "My Subscription",
      aboHeaderBtn: "🎫 Manage my subscription",
      aboTitle: "🎫 My Subscription",
      aboIntro: "Get a permanent discount on every order and free teddies as a thank-you — automatically, every month.",
      aboNameKlein: "Small plan", aboNameMittel: "Medium plan", aboNameGross: "Large plan",
      aboPreisSuffix: "/ month",
      aboVorteilKlein: "5% off every order. After each full subscription year: 1 small teddy for free.",
      aboVorteilMittel: "10% off every order. After each full subscription year: 1 large teddy for free.",
      aboVorteilGross: "20% off every order. A small teddy every 6 months, plus a large teddy after every full year.",
      aboAbschliessenBtn: "Subscribe",
      aboAktivesLabel: "✓ Your current plan",
      aboWechselnBtn: "Switch to this plan",
      aboNichtBuchbar: "Currently unavailable",
      aboRewardEveryLabel: "every {n} mo.",
      aboStatusTitle: "Your subscription status",
      aboFieldStufe: "Plan", aboFieldPreis: "Monthly price", aboFieldRabatt: "Included discount",
      aboFieldStart: "Start date", aboFieldNaechsteZahlung: "Next payment", aboFieldLaufzeit: "Duration so far",
      aboMonateSuffix: "months",
      aboFortschrittKleinTemplate: "🧸 {n} more month(s) until your next small teddy",
      aboFortschrittGrossTemplate: "🧸 {n} more month(s) until your next large teddy",
      aboPraemienErhaltenTitel: "Teddies you've already received:",
      aboPraemienKeine: "You haven't redeemed a teddy yet.",
      aboPraemienAmTemplate: "received on {datum}",
      aboPraemienAnsehen: "view",
      aboPraemienUnbekannt: "Teddy from an earlier redemption",
      aboTeddyArtKlein: "Small teddy",
      aboTeddyArtGross: "Large teddy",
      aboPraemienVerfuegbarTitle: "🎉 Available rewards",
      aboKeinePraemienVerfuegbar: "No reward available to redeem right now.",
      aboEinloesenBtn: "Redeem now",
      aboEinloesenKleinLabel: "Small teddy", aboEinloesenGrossLabel: "Large teddy",
      aboEingeloestHinweis: "🧸 Added to your cart!",
      aboZahlungSimBtn: "Simulate monthly payment (demo)",
      aboZahlungSimHinweis: "Phase 1: there is no real recurring payment running in the background yet. Use this button to test what happens on the next successful monthly payment.",
      aboKuendigenBtn: "Cancel subscription",
      aboKuendigenConfirm: "Really cancel your subscription? Your benefits stay active until the end of the paid period.",
      aboGekuendigtHinweisTemplate: "Cancelled on {datum}. Your benefits stay active until the end of the paid period, then your subscription ends automatically.",
      aboWechselTitle: "Switch to a different plan",
      aboBenachrichtigungenTitle: "🔔 Notifications",
      aboKeineBenachrichtigungen: "No notifications yet — updates about your subscription will appear here automatically, e.g. every successful payment, a new teddy reward, or a plan switch.",
      aboNichtAktivBadge: "⏸ Discount paused",
      aboExplainer: "All data is currently stored securely on this device (Phase 1). A cross-device database follows with real payment integration in Phase 2.",
      notifAboAbgeschlossen: "Your subscription was successfully set up — welcome! 🎉",
      notifAboGewechselt: "You successfully switched to a different plan ({stufe}).",
      notifAboZahlungErfolgreich: "Your monthly subscription payment was successful. ✅",
      notifAboTeddyKleinFrei: "🧸 New reward unlocked: a small teddy is waiting for you!",
      notifAboTeddyGrossFrei: "🧸 New reward unlocked: a large teddy is waiting for you!",
      notifAboBaldPraemie: "🧸 Almost there — your next teddy reward is waiting next month!",
      notifAboGekuendigt: "You cancelled your subscription. Your benefits stay active until the end of the paid period.",
      notifAboTeddyKleinEingeloest: "🧸 Small teddy redeemed — it's now in your cart for free.",
      notifAboTeddyGrossEingeloest: "🧸 Large teddy redeemed — it's now in your cart for free.",
      noOpenOrders: "No open shipments right now — every order has already arrived. 🎉",
      noArrivedOrders: "No delivered orders yet — your orders will appear here once they've arrived.",
      olderOrdersShow: "Older orders",
      olderOrdersHide: "Hide older orders",
      olderOrdersSearch: "Search order number or item …",
      olderOrdersNoHits: "We couldn't find an older order for that.",
      ordersTitle: "📦 My orders",
      orderNo: "Order", orderDate: "Ordered on", orderTotal: "Total", orderItems: "Items",
      trackingLabel: "Tracking", trackingBtn: "Track shipment →", invoiceBtn: "View invoice", reorderBtn: "Order again",
      invoiceTitle: "Invoice", invoiceNumberLabel: "Invoice number", invoiceDateLabel: "Invoice date",
      invoiceSellerLabel: "Seller", invoiceBillToLabel: "Billed to",
      invoiceItemLabel: "Item", invoiceQtyLabel: "Qty", invoiceUnitPriceLabel: "Unit price", invoiceSumLabel: "Total amount",
      invoiceCloseBtn: "Close", invoiceDownloadBtn: "Download invoice", invoiceDownloading: "Preparing …",
      statusBezahlt: "Paid", statusBearbeitung: "In progress", statusVersandVorbereitet: "Preparing shipment", statusVersendet: "Shipped", statusAbgeschlossen: "Completed",
      wishlistTitle: "🩵 My wishlist", wishlistEmpty: "Your wishlist is still empty — browse the shop and save your favourites with the heart icon.",
      recentTitle: "🕘 Recently viewed",
      profileTitle: "👤 My details", profileName: "Name", profileEmail: "Email", profileAddress: "Delivery address", profileEdit: "Edit details",
      reviewBtn: "🩵 Write a review", reviewedBadge: "✓ Reviewed",
      nameSave: "Save", nameSaved: "Saved ✓",
      usernameLabel: "Username (nickname)", usernameHint: "Optional — a bonus if you'd rather be shown with a nickname instead of your name.", usernameSave: "Save", usernameSaved: "Saved ✓",
      photoLabel: "Profile photo", photoChange: "Change photo", photoRemove: "Remove",
    },
  },
  ch: {
    nav: { shop: "Shop", sale: "Aktion", creative: "Über d'Kreativi", faq: "FAQ", contact: "Kontakt", account: "Mis Konto", login: "Aamälde" },
    accountMenu: { myAccount: "Mis Konto", logout: "Abmälde" },
    topbar: "Gratisversand ab 75 € (DE) / 85 € (AT, LU) / 100 € (CH)",
    footer: {
      tagline: "Vo Hang gmacht mit Härz – Sächeli zum Verschänke und Sälber Bhalte.",
      shopHeading: "Shop", serviceHeading: "Service", legalHeading: "Rechtligs",
      shipping: "Versand & Zahlig", account: "Mis Konto",
      copyright: "Einzelunternehmen · Kleinunternehmer gmäss §19 UStG (dütsches Rächt)",
      legalNoteTitle: "Hinwys zu de rächtliche Syte",
      legalNote: "Impressum, Datenschutz, AGB, Widerrufsbelehrig und s'Muster-Widerrufsformular gits us rächtliche Gründ nur uf Dütsch.",
    },
    badge: { neu: "Neu", bestseller: "Bestseller", sale: "Aktion", handgemacht: "Handgmacht", ausverkauft: "Usverkauft" },
    common: {
      addToCart: "In Warenchorb", soldOut: "Usverkauft", addedToCart: "Zum Warenchorb dezuegfüegt ✓",
      onlyXLeft: (n: string) => `Nume no ${n} a Lager`, maxInCart: "D'maximal verfügbari Mengi isch scho im Warenchorb", maxInCartShort: "Scho im Warenchorb",
      browseShop: "Jetzt use luege", viewAll: "Alles aluege →", viewAllSale: "Alli Aktione →",
      toShop: "Zum Shop →", moreAboutMe: "Meh über mich →", discoverNow: "Jetzt aluege",
      installApp: "App installiere", installAppShort: "Installiere",
      vatNote: "Gemäss §19 UStG (dütsches Rächt) wird kei Umsatzsteuer berechnet und usgwiese.",
      allPricesPlusShipping: "Alli Pryse zzgl. Versand.", plusShipping: "zzgl. Versand",
      quantity: "Aazahl", photoSoon: "Produktfoto chunnt bald", portraitSoon: "Porträtfoto vo VanVan chunnt bald",
      prevPhoto: "Vorherigs Foto", nextPhoto: "Nächschts Foto",
      handmadeBadge: "🩵 Vo Hang gmacht",
      skipToContent: "Zum Inhalt springe", back: "← Zrugg",
    },
    product: {
      articleNo: "Artikelnummer", material: "Material", size: "Grösse", colors: "Farbe",
      included: "Lieferumfang", care: "Pflegehinwys", delivery: "Lieferzyt",
      recommendations: "Das chönnt dir au gfalle",
      todoFields: "GPSR-Hinwys, Warnhinwys, Hersteller/Herstelleradrässe und Produktvideo werded ergänzt, sobald echti Produktdate vo VanVan da sind (Phase 2, Adminbereich).",
      photoNote: "echti Fotis macht VanVan später drby",
      reviewsTitle: "Kundebewärtige", noReviews: "No kei Bewärtige für das Produkt — sei du dr Erschti!",
      reviewCount: (n: number) => `${n} Bewärtig${n === 1 ? "" : "e"}`,
      writeReviewTitle: "🩵 Dini Bewärtig", yourRating: "Dini Bewärtig", yourReview: "Was hat dir gfalle? (optional)",
      yourName: "Din Name", submitReview: "Bewärtig veröffentliche", reviewSaved: "Danke für dini Bewärtig! ✓",
      reviewNeedsRating: "Bitte wähl 1–5 Herzli us.", reviewFromOrder: (nr: string) => `Du bewärtisch dini Bstellig ${nr}.`,
      loginHintReview: "Aagmäldet als", notLoggedInReview: "Du bisch nid aagmäldet — dini Bewärtig wird mit em iigäbene Name veröffentlicht.",
    },
    shop: {
      title: "Alli Produkt", lead: "Lueg dr alli vo Hang gmachte Sächeli a – filtere und sortiere, wie's dir passt.",
      filters: "Filter", allCategories: "Alli Kategorie", priceUpTo: "Pris bis", priceUpToValue: (v: number) => `bis ${v} €`,
      onlyAvailable: "Nur wo grad a Lager isch", onlyBestseller: "🔥 Nur Bestseller (Top 6)", filterNote: "Material- und Farbfilter chöme, sobald meh Produkt im Sortiment sind.",
      sortNew: "Neu", sortBestseller: "Bestseller", sortPriceAsc: "Pris ufsteigend", sortPriceDesc: "Pris absteigend", sortRating: "Beschti Bewärtig",
      resultCount: (n: number) => `${n} Produkt`, noResults: "Kei Produkt gfunde – bitte Filter apasse.",
      breadcrumbShop: "Shop", categoryEmpty: "In däre Kategorie sind grad no kei Produkt hinterlegt – lueg spöter nomal verbi.",
      categoryLabel: "Kategorie", productSingular: "Produkt", productPlural: "Produkt", sortLabel: "Sortiere", subcategoriesLabel: "Unterkategorie", mainCategoryLabel: "Hauptkategorie", subcategoryEmpty: "Für das da stellt VanVan bald die erschte Produkt i – lueg bald wieder verbi.", moreAbout: "Meh über", moreVariants: "Witeri Modell",
      moreAboutCharacterLead: "Wenn du meh über mich erfahre witsch, dänn klick",
      minRatingLabel: "Mindestbewärtig", minRatingAny: "Alli Bewärtige",
    },
    reviews: {
      heading: "Das säge eusi Kunde", lead: "Echti Rückmäldige zu eusne vo Hang gmachte Sächeli.",
      basedOn: (n: number) => `basierend uf ${n} Bewärtig${n === 1 ? "" : "e"}`,
      toProduct: "Zum Produkt →",
    },
    sale: {
      eyebrow: "% Aktion", title: "Aktuelli Aktion", lead: "Zytlich begrenzti Rabatt uf uswählti, vo Hang gmachti Sächeli.",
      empty: "Momentan lauft käni Aktion – lueg spöter nomal verbi.",
    },
    faq: {
      title: "Häufigi Frage",
      // Inhalt (Frage/Antwort) sit 03.08.2026 admin-editierbar in src/content/faq.json (lueg
      // src/data/faq.ts) statt fescht do z'stah.
    },
    contact: {
      title: "Schrib eus", lead: "Hesch Frage zu emene Produkt, dinere Bschtellig oder öppis Spezielles? Mäld dich gärn!",
      name: "Name", email: "E-Mail", subject: "Betreff", message: "Nachricht",
      gdprPrefix: "Ich ha d'", gdprLink: "Datenschutzerklärig", gdprSuffix: "gläse und bin mit dr Verarbeitig vo mine Date iverstande.",
      send: "Nachricht abschicke", sentDemo: "Merci! (Demo – noch keine echte Übertragung in Phase 1)",
      todoNote: "TODO Phase 2: Formular a e echti Backend-/E-Mail-Aabindig (Cloudflare Worker) aaschliesse. Momentan ohni echte Versand.",
      directTitle: "Direkte Kontaktdate", emailPlaceholderNote: "(Platzhalter-Adrässe)", orderNote: "Für Bstellfrage bitte d'Bstellnummere aagäh.",
      responseTitle: "Antwortzyt", responseNote: "Meistens innerhalb vo 1–2 Werktage.",
    },
    about: {
      eyebrow: "Über d'Kreativi", title: "Hoi zäme, ich bin VanVan 🩵",
      lead: "Willkomme i minere chline Werkstatt! Da entsteit alles, wo du im Shop findsch, vo Hang – Stich für Stich, Perle für Perle.",
      valuesTitle: "Was mir wichtig isch",
      values: [
        { icon: "🧵", title: "Handarbeit", text: "Kes Masseprodukt – jedes Sächeli wird einzeln und mit Sorgfalt gmacht." },
        { icon: "🩵", title: "Qualität", text: "Sorgfältig uswählti Materialie für hebigi, schöni Ergebnis." },
        { icon: "🎁", title: "Persönlich", text: "Öb Gschänk oder für dich sälber – jedes Produkt treit es Stückli Härzbluet." },
      ],
      story: [
        {
          title: "Mini Reis het aafange mit-ere einzige Masche",
          paragraphs: [
            "Vor öppe sächs Jahr han ich mini Leidenschaft fürs Häkle entdeckt. Aagfange het alles us purer Neugier. Ohni Kurs oder Vorchänntnis han ich mer Schritt für Schritt alles sälber bybracht.",
            "Mit jeder neue Masche, jedem chline Fähler und jedem fertige Projekt isch nid nur mis Chönne gwachsen, sondern au mini Begeisterig für das wundervolle Handwerch.",
            "Hüt isch Häkle für mich viu meh als nur es Hobby. Es isch min kreative Usgliich, e Möglichkeit, Idee Wirklichkeit werde z'lah und Lüt mit liebevoll gstaltete Unikate es Lächle is Gsicht z'zaubere.",
            "Bsungers d'Herstellig vo Amigurumis begeistert mich geng wieder vo Neuem. Es fasziniert mich, wie us emene eifache Chnaul Wolle nach und nach chlini Persönlichkeite entstöh – jedi einzelni mit ihrem ganz eigene Charme.",
          ],
        },
        {
          title: "Kreativität känt kei Grenze",
          paragraphs: [
            "Näben em Häkle han ich au mini Leidenschaft für sälber gmachte Modeschmuck entdeckt.",
            "Mit viu Sorgfalt fertig ich Armbändel, Halschette, Schlüsselaahänger und witeri Accessoires a. Debi ha ich's gärn, verschiedeni Materialie, Farbe und Aahänger mitenand z'kombiniere und geng wieder neui Designs entstöh z'lah.",
            "Jedes Schmuckstück söll nid nur schön uszgseh, sondern sim neue Bsitzer lang Freud bringe.",
            "Kreativität begleitet mich scho mis ganze Läbe. Drum findsch bi mir nid nur klassischi Häkelarbeite oder Schmuck, sondern geng wieder neui kreativi Idee und Projäkt, wo mit viu Liebi entstöh.",
          ],
        },
        {
          title: "Qualität mit Härz",
          paragraphs: [
            "Für mich bedütet Handarbeit Persönlichkeit.",
            "Kes Produkt entsteit am Fliessband.",
            "Jedes einzelne Stück wird vo mir sorgfältig plant, gfertigt und kontrolliert.",
            "Debi leg ich bsundere Wärt uf hochwärtigi Materialie, suberi Verarbeitig, liebevolli Detail, hebigi Qualität und einzigartigi Designs.",
          ],
        },
        {
          title: "Meh als nur es Hobby",
          paragraphs: [
            "Hinter minere Kreativität steckt viu meh als Wolle und Perle.",
            "Ich bi e Mensch, wo mit ganzem Härz debi isch. Wenn ich öppis mach, denn mit Leidenschaft, Geduld und em Wunsch, öppis Bsunders z'erschaffe.",
            "Es mached mich glücklich, wenn mini Wärch andere Lüt Freud schänke – sig's als Gschänk für en liebe Mensch oder eifach als chlini Ufmerksamkeit für sich sälber.",
          ],
        },
        {
          title: "Min chline Härzens-Lade",
          paragraphs: [
            "Min Lade isch drum nid eifach nur en Ort, wo Produkt verchauft werde.",
            "Er isch en Teil vo mir.",
            "Da steckn unzählegi Stund Arbet, Kreativität, Härzbluet und ganz viu Liebi i jedem einzelne Wärch.",
            "Genau das mached jedes Stück einzigartig.",
          ],
        },
        {
          title: "Merci, dass du da bisch",
          paragraphs: [
            "Merci vilmal, dass du dir d'Zyt nimmsch, mini chlini kreativi Wält kenne z'lehre und mini Leidenschaft z'unterstütze.",
            "Ich wünsche dir ganz viu Freud bim Stöbere und hoffe, dass du genau das eint Stück findsch, wo dis Härz höcher schla lat.",
          ],
        },
      ],
      closing: "Mit Liebi vo Hang gmacht – Masche für Masche und Perle für Perle.",
    },
    shipping: {
      eyebrow: "Versand & Zahlig", title: "Versand & Zahlig",
      shippingTitle: "📦 Versand",
      shippingItems: [
        "Versand nume mit DHL", "Lieferländer: Dütschland, Öschterrych, d'Schwiz, Luxemburg",
        "Lieferzyt: 2–7 Werktäg", "Versandchoschte sind pro Produkt hinterlegt und zuesätzlich nach Warewärt & Land gstaffelt",
        "Gratisversand ab 75 € Warewärt (Dütschland), 85 € (Öschterrych, Luxemburg) bzw. 100 € (Schwiz)", "Dr Versand geit erscht los, wenn d'Zahlig igange isch",
        "Bi Liefrige i d'Schwiz chöi schwyzerischi Iifuehrumsatzsteuer und Zollgebühre afalle, wo du als Empfänger:in trage muesch",
      ],
      paymentTitle: "💳 Zahligsarte", paymentItems: ["PayPal", "Kredit-/Debitkarte als Gast über PayPal (Visa & Mastercard)", "Banküberwysig (Vorusszahlig)"],
      todoNote: "Di gnaui Versandchoschte-Staffle je Land/Warewärt wird ergänzt, sobald VanVan di definitive DHL-Konditione festgleit hät.",
    },
    cart: {
      eyebrow: "Warenchorb", title: "Din Warenchorb", empty: "Din Warenchorb isch no leer.",
      subtotal: "Zwüschesumme", shipping: "Versand", shippingCalculated: "wird im Checkout berechnet",
      total: "Total", remaining: (v: string) => `No ${v} bis zum Gratisversand.`, freeShipping: "🩵 Du übercho't Gratisversand!",
      toCheckout: "Wyter zum Checkout", remove: "Ewägmache", perItem: "/ Stuck",
      discount: "Rabatt", mengenrabatt: (p: string) => `Mengerabatt -${p}%`,
      mengenrabattTier: (ab: string, p: string) => `ab ${ab} Stuck -${p}%`,
      couponLabel: "🎟️ Gutschy-Code", couponPlaceholder: "Code igäh", couponApply: "Ilöse", couponRemove: "Ewägmache",
      buyNow: "Jetzt chaufe", keptInCart: "Blibt im Warenchorb, wird no nid chauft",
      couponInvalid: "Code ungültig oder abgloffe.", couponApplied: (code: string) => `Gutschy „${code}" iglöst`,
      partnerDiscount: "🤝 Partner-Rabatt",
      partnerCodeLabel: "🤝 Partner-Rabattcode", partnerCodePlaceholder: "Code igäh", partnerCodeApply: "Ilöse", partnerCodeRemove: "Ewägmache",
      partnerCodeInvalid: "Code ungültig oder abgloffe.", partnerCodeApplied: (code: string) => `Partner-Code „${code}" iglöst`,
      loyaltyDiscount: "🎁 Treuebonus (-20 %)",
      loyaltyBannerTitle: "🎁 Din Treuebonus isch parat!",
      loyaltyBannerText: "Wähl unde dr Artikel us, uf dä du 20 % Rabatt übercho.",
      loyaltySelectLabel: "Für 20 % Treuebonus uswähle",
      loyaltySelectedLabel: "🎁 -20 % Treuebonus aagwändet",
      gratisPraemie: "Gratisprämie us dim Abo",
      aboDiscount: "🎫 Abo-Rabatt",
    },
    checkout: {
      eyebrow: "Checkout", title: "Bschtellig abschliesse",
      todoNote: "PayPal isch technisch fertig aabunde (echti, server-seitig gprüefti Zahlig) — bis es echts PayPal-Business-Konto hinterlegt isch, laufts im gratis PayPal-Testmodus, ohni dass echts Gäld flüsst. Banküberwysig isch zu 100 % echt.",
      step1: "2. Kontakt & Lieferadrässe", email: "E-Mail", firstName: "Vorname", lastName: "Nachname",
      street: "Strasse & Huusnummere", zip: "PLZ", city: "Ort", country: "Land",
      step2: "1. Zahligsart",
      step3: "3. Bschtellübersicht", agbPrefix: "Ich ha d'", agbLink: "AGB", agbSuffix: "gläse und akzeptiere si.",
      revocationPrefix: "Ich ha d'", revocationLink: "Widerrufsbelehrig", revocationAnd: "und d'",
      privacyLink: "Datenschutzerklärig", revocationSuffix: "zur Kenntnis gnoh.",
      bankTransfer: "Banküberwysig (Vorusszahlig)", orderButton: "Jetzt zahligspflichtig bstelle", emptyCartAlert: "Din Warenchorb isch leer.",
      payPalSub: "au mit Kreditkarte, ohni eigenes Konto",
      payPalHint: "Zahl sicher dirräkt mit dim PayPal-Konto oder als Gast mit Kredit-/Debitkarte – dini Kartedate laufe dabi nur über PayPals eigeni, gsicherti Site, nie über üsi.",
      payPalCompleteHint: "Schliess dini Bstellig obe über de PayPal-Knopf ab – dört zahlsch dirräkt, danach isch dini Bstellig sofort da.",
      bankHintReal: "Bitte überwys dr Rächnigsbetrag nach Bstellabschluss uf das Konto. Dini Ware wird erst nach Zahligsigang verschickt.",
      bankPlaceholder: "D'Bankverbindig wird dir nach Bstelligang per E-Mail zuegschickt.",
      bankHolder: "Kontoinhaber:in", bankIban: "IBAN", bankBic: "BIC", bankBankName: "Bank",
      shippingHintTitle: "Versandhinwys",
      shippingHint: "Versand nume per DHL nach Dütschland, Öschterrych, d'Schwiz und Luxemburg. Lieferzyt 2–7 Werktäg. Gratisversand ab 75 € (Dütschland), 85 € (Öschterrych, Luxemburg) bzw. 100 € (Schwiz). Dr Versand geit erscht los, wenn d'Zahlig igange isch.",
      shippingLink: "Meh zu Versand & Zahlig →",
      thankYouEyebrow: "Merci", thankYouTitle: "Dini Bschtellig isch igange",
      thankYouLead: "Das isch momentan e Demo-Bstätigung (Phase 1, ohni echti Zahligsabwicklig). Sobald dr echt Checkout live isch, überchunnsch du da und per E-Mail e richtigi Bstellbstätigung.",
      continueShopping: "Wyter luege", total: "Total", free: "gratis",
    },
    account: {
      eyebrow: "Mis Konto", title: "Aamälde oder als Gast bstelle",
      todoNote: "Aamäldig mit Google/PayPal isch technisch fertig und echt (eigets Kundekonto, sicheri Sitzig) — bis Google/PayPal-Zuegangsdate hinterlegt sind, zeigt dr Knopf en klare Hiwys statt e Aamäldig vorztüsche. D'E-Mail-/Passwort-Aamäldig drunder blibt wyterhin nume Vorschau ohni echti Passwortprüefig.",
      loginTitle: "Aamälde", email: "E-Mail", password: "Passwort", loginButton: "Aamälde", forgotPassword: "Passwort vergässe?",
      newTitle: "Neu da?", newText: "Leg es Konto a, für Bstellhistorie, Wunschlischte und Sändigsverfolgig a einem Ort z'ha – oder bstell eifach als Gast, ganz ohni Konto.",
      guestButton: "Als Gast wyter yichaufe",
      loginError: "Bitte gib e E-Mail-Adrässe i.",
      socialHeading: "Schnäller aamälde mit",
      socialGoogle: "Mit Google aamälde", socialPaypal: "Mit PayPal aamälde",
      loginErrorUnconfigured: "Die Aamäldeart isch no nid iigrichtet. Bitte mäld di per E-Mail a oder versuech's spöter nochmal.",
      loginErrorDenied: "Aamäldig abbroche.",
      loginErrorGeneric: "Aamäldig fählgschlage. Bitte versuech's nochmal.",
      orDivider: "oder mit E-Mail",
      showPassword: "Passwort azeige", hidePassword: "Passwort verstecke",
      rememberMe: "Aagmäldet bliebe",
      consentPrefix: "Mit dr Aamäldig akzeptiersch üsi", consentLink: "Datenschutzerklärig", consentSuffix: ".",
      previewLink: "👁 Vorschau: so gseht dr Bereich für aagmäldeti Kund:ine us",
      previewName: "Marie L.",
    },
    accountDash: {
      eyebrow: "Mis Konto", greeting: (name: string) => `Hoi ${name} 🩵`, lead: "Schön, bisch wieder da. Da findsch alli dini Bstellige, dini Wunschlischte und dini Date uf ein Blick.",
      previewNote: "Phase 1: dini Aamäldig, dis Profil und dini Bewärtige werde scho jetzt echt uf däm Gerät gspeicheret. Nume d'Bstellige unde sind Bispieldate für d'Gstaltig — echti Bstellige chöme i Phase 2 mit Zahligsaabindig und Datebank (Cloudflare Worker + D1).",
      notLoggedIn: "Du bisch nid aagmäldet — du wirsch zur Aamäldig wytergleitet …",
      exportDataButton: "📥 Mini Date abelade", deleteAccountButton: "🗑️ Konto lösche",
      deleteAccountConfirm: "Dis Konto wird unwiderruflich glöscht (nid dini scho ufgäbene Bstellige, wo us gsetzlichne Gründ ufbewahrt werde müesse). Wyterfahre?",
      deleteAccountError: "Konto het nid chöne glöscht werde. Bitte versuech's nomol.",
      logout: "Abmälde",
      navLabel: "Kontobereich-Navigation",
      statOrders: "Bstellige", statWishlist: "Wunschlischte", statOpen: "Offni Sändige", statData: "Mini Date", statLoyalty: "Treuebonus",
      datenHeaderBtn: "👤 Mini Date",
      loyaltyTitle: "🎁 Mis Treuebonus",
      loyaltyProgressTemplate: "Din Bstellfortschritt: {cur} vo {ziel} Bstellige",
      loyaltyRemainingOne: "Dir fehlt no 1 Bstellig, bis du 20 % Rabatt uf en Artikel dinere Wahl übercho.",
      loyaltyRemainingOther: "Dir fehle no {n} Bstellige, bis du 20 % Rabatt uf en Artikel dinere Wahl übercho.",
      loyaltyUnlockedTitle: "🎉 Treuebonus freigschaltet",
      loyaltyUnlockedText: "Du hesch zäh Bstellige abgschlosse und übercho bi dinere nächschte Bstellig 20 % Rabatt uf en Artikel dinere Wahl.",
      loyaltyGoToCart: "Artikel im Warenchorb uswähle →",
      loyaltyExplainer: "Es zelle nume vollständig abgschlosseni und bezahlti Bstellige. Nach dr Ilösig fangt din Fortschritt wieder bi null a.",
      loyaltyStatCollected: "Gsammlet",
      loyaltyStatMissing: "No nötig",
      loyaltyStatBonus: "Bonus bim Ziel",
      loyaltyStatRedeemed: "Bisher iglöst",
      loyaltyStatRedeemedNever: "No nie",
      loyaltyStatRedeemedSuffix: "×",
      loyaltyLastRedeemed: "Zletscht iglöst am {date}",
      loyaltyRuleValid: "Zellt: vollständig abgschlosseni & bezahlti Bstellige",
      loyaltyRuleInvalid: "Zellt nid: stornierti oder no offeni Bstellige",
      loyaltyRuleReset: "Nach dr Ilösig fangt din Fortschritt wieder bi 0 a",
      loyaltyLockedTitle: "🔒 Nume mit aktivem Abo verfüegbar",
      loyaltyLockedText: "Dr Treuebonus isch es Extra für üsi Abo-Mitglieder. Schliess es Abo ab, um Bstellige für dini 20 %-Belohnig z sammle.",
      loyaltyLockedBtn: "Zum Abo →",
      statAbo: "Mis Abo",
      aboHeaderBtn: "🎫 Mis Abo verwalte",
      aboTitle: "🎫 Mis Abo",
      aboIntro: "Sicher dir en dauerhafte Rabatt uf jedi Bstellig und hol dir gratis Teddys als Dankeschön — automatisch, jede Monet.",
      aboNameKlein: "Chliises Abo", aboNameMittel: "Mittleres Abo", aboNameGross: "Grosses Abo",
      aboPreisSuffix: "/ Monet",
      aboVorteilKlein: "5 % Rabatt uf jedi Bstellig. Nach jedem volle Abo-Jahr: 1 chliine Teddy gratis.",
      aboVorteilMittel: "10 % Rabatt uf jedi Bstellig. Nach jedem volle Abo-Jahr: 1 grosse Teddy gratis.",
      aboVorteilGross: "20 % Rabatt uf jedi Bstellig. Alli 6 Monet en chliine Teddy, nach jedem volle Jahr zuesätzlich en grosse Teddy.",
      aboAbschliessenBtn: "Abo abschliesse",
      aboAktivesLabel: "✓ Dis aktuells Abo",
      aboWechselnBtn: "Zu dem Abo wechsle",
      aboNichtBuchbar: "Momentan nöd buechbar",
      aboRewardEveryLabel: "alli {n} Mt.",
      aboStatusTitle: "Din Abo-Status",
      aboFieldStufe: "Abo-Stufe", aboFieldPreis: "Monetliche Priis", aboFieldRabatt: "Enthaltene Rabatt",
      aboFieldStart: "Startdatum", aboFieldNaechsteZahlung: "Nächschti Zahlig", aboFieldLaufzeit: "Bisherigi Laufziit",
      aboMonateSuffix: "Monet",
      aboFortschrittKleinTemplate: "🧸 No {n} Monet bis zum nächschte chliine Teddy",
      aboFortschrittGrossTemplate: "🧸 No {n} Monet bis zum nächschte grosse Teddy",
      aboPraemienErhaltenTitel: "Die Teddys hesch scho ueberchoo:",
      aboPraemienKeine: "Du hesch no kein Teddy iiglöst.",
      aboPraemienAmTemplate: "erhalte am {datum}",
      aboPraemienAnsehen: "aaluege",
      aboPraemienUnbekannt: "Teddy us ere frueehere Iiloesig",
      aboTeddyArtKlein: "Chliine Teddy",
      aboTeddyArtGross: "Grosse Teddy",
      aboPraemienVerfuegbarTitle: "🎉 Verfüegbari Prämie",
      aboKeinePraemienVerfuegbar: "Momentan kei Prämie zum Ilöse verfüegbar.",
      aboEinloesenBtn: "Jetzt ilöse",
      aboEinloesenKleinLabel: "Chliine Teddy", aboEinloesenGrossLabel: "Grosse Teddy",
      aboEingeloestHinweis: "🧸 In Warechorb gleit!",
      aboZahlungSimBtn: "Monetszahlig simuliere (Demo)",
      aboZahlungSimHinweis: "Phase 1: Es git no kei echti wiederkehrendi Zahlig im Hintergrund. Mit dem Chnopf teschtisch, was bi dr nächschte erfolgriiche Monetsabbuechig passiert.",
      aboKuendigenBtn: "Abo kündige",
      aboKuendigenConfirm: "Abo würklich kündige? Dini Vorteil bliibed bis am Ändi vo dr bezahlte Laufziit aktiv.",
      aboGekuendigtHinweisTemplate: "Kündet am {datum}. Dini Vorteil bliibed bis am Ändi vo dr bezahlte Laufziit aktiv, dernah ändet dis Abo automatisch.",
      aboWechselTitle: "Zu emene andere Abo wechsle",
      aboBenachrichtigungenTitle: "🔔 Benachrichtigunge",
      aboKeineBenachrichtigungen: "No kei Benachrichtigunge — da erscheined automatisch Meldige zu dim Abo, z. B. bi jeder erfolgriiche Zahlig, ere nöie Teddy-Prämie oder emene Stufewechsel.",
      aboNichtAktivBadge: "⏸ Rabatt pausiert",
      aboExplainer: "Alli Aagabe werded aktuell sicher uf dem Gerät gspeicheret (Phase 1). Ä geräteübergriifendi Datebank chunt mit dr echte Zahligs-Aabindig i Phase 2.",
      notifAboAbgeschlossen: "Dis Abo isch erfolgriich abgschlosse worde — willkomme! 🎉",
      notifAboGewechselt: "Du bisch erfolgriich in es anders Abo gwechslet ({stufe}).",
      notifAboZahlungErfolgreich: "Dini monetlichi Abo-Zahlig isch erfolgriich gsi. ✅",
      notifAboTeddyKleinFrei: "🧸 Nöii Prämie freigschaltet: en chliine Teddy wartet uf dich!",
      notifAboTeddyGrossFrei: "🧸 Nöii Prämie freigschaltet: en grosse Teddy wartet uf dich!",
      notifAboBaldPraemie: "🧸 Fasch gschafft — nächschte Monet wartet dini nächschti Teddy-Prämie!",
      notifAboGekuendigt: "Du hesch dis Abo kündet. Dini Vorteil bliibed bis am Ändi vo dr bezahlte Laufziit aktiv.",
      notifAboTeddyKleinEingeloest: "🧸 Chliine Teddy ilöst — er liit jetzt gratis in dim Warechorb.",
      notifAboTeddyGrossEingeloest: "🧸 Grosse Teddy ilöst — er liit jetzt gratis in dim Warechorb.",
      noOpenOrders: "Momentan kei offni Sändige — alli Bstellige sind scho aacho. 🎉",
      noArrivedOrders: "No kei aacho Bstellige — da erschine dini Bstellige, sobald sie glifert worde sind.",
      olderOrdersShow: "Elteri Bstellige",
      olderOrdersHide: "Elteri Bstellige uusblende",
      olderOrdersSearch: "Bstellnummere oder Artikel sueche …",
      olderOrdersNoHits: "Dezue hemmer kei elteri Bstellig gfunde.",
      ordersTitle: "📦 Mini Bstellige",
      orderNo: "Bstellig", orderDate: "Bstellt am", orderTotal: "Total", orderItems: "Artikel",
      trackingLabel: "Sändigsverfolgig", trackingBtn: "Sändig verfolge →", invoiceBtn: "Rächnig aluege", reorderBtn: "Nomal bstelle",
      invoiceTitle: "Rächnig", invoiceNumberLabel: "Rächnigsnummere", invoiceDateLabel: "Rächnigsdatum",
      invoiceSellerLabel: "Verchöifer", invoiceBillToLabel: "Rächnigsempfänger",
      invoiceItemLabel: "Artikel", invoiceQtyLabel: "Mengi", invoiceUnitPriceLabel: "Ystückspreis", invoiceSumLabel: "Gsamtbetrag",
      invoiceCloseBtn: "Schlüsse", invoiceDownloadBtn: "Rächnig downloade", invoiceDownloading: "Wird erstellt …",
      statusBezahlt: "Zahlt", statusBearbeitung: "I dr Bearbeitig", statusVersandVorbereitet: "Versand vorbereitet", statusVersendet: "Verschickt", statusAbgeschlossen: "Abgschlosse",
      wishlistTitle: "🩵 Mini Wunschlischte", wishlistEmpty: "Dini Wunschlischte isch no leer — lueg im Shop verbi und spicher dini Lieblingssächeli mit em Härz-Symbol.",
      recentTitle: "🕘 Zletscht aagluegt",
      profileTitle: "👤 Mini Date", profileName: "Name", profileEmail: "E-Mail", profileAddress: "Lieferadrässe", profileEdit: "Date bearbeite",
      reviewBtn: "🩵 Bewärtig schrybe", reviewedBadge: "✓ Bewärtet",
      nameSave: "Spichere", nameSaved: "Gspicheret ✓",
      usernameLabel: "Benutzername (Spitzname)", usernameHint: "Optional — es Bonus, falls du liebr mit emene Spitzname statt dim Name aazeigt wirsch.", usernameSave: "Spichere", usernameSaved: "Gspicheret ✓",
      photoLabel: "Profilfoto", photoChange: "Foto ändere", photoRemove: "Entferne",
    },
  },
  fr: {
    nav: { shop: "Boutique", sale: "Soldes", creative: "À propos de la créatrice", faq: "FAQ", contact: "Contact", account: "Mon compte", login: "Se connecter" },
    accountMenu: { myAccount: "Mon compte", logout: "Se déconnecter" },
    topbar: "Livraison gratuite dès 75 € (DE) / 85 € (AT, LU) / 100 € (CH)",
    footer: {
      tagline: "Fait main avec amour – de la créativité à offrir ou à garder.",
      shopHeading: "Boutique", serviceHeading: "Service", legalHeading: "Mentions légales",
      shipping: "Livraison & Paiement", account: "Mon compte",
      copyright: "Entreprise individuelle · Petite entreprise selon §19 UStG (droit allemand)",
      legalNoteTitle: "Remarque sur les pages légales",
      legalNote: "Les mentions légales, la politique de confidentialité, les CGV, le droit de rétractation et le formulaire type de rétractation ne sont disponibles qu'en allemand, pour des raisons de conformité juridique.",
    },
    badge: { neu: "Nouveau", bestseller: "Best-seller", sale: "Soldes", handgemacht: "Fait main", ausverkauft: "Épuisé" },
    common: {
      addToCart: "Ajouter au panier", soldOut: "Épuisé", addedToCart: "Ajouté au panier ✓",
      onlyXLeft: (n: string) => `Plus que ${n} en stock`, maxInCart: "La quantité maximale disponible est déjà dans votre panier", maxInCartShort: "Déjà dans le panier",
      browseShop: "Découvrir la boutique", viewAll: "Tout voir →", viewAllSale: "Toutes les offres →",
      toShop: "Vers la boutique →", moreAboutMe: "En savoir plus sur moi →", discoverNow: "Découvrir maintenant",
      installApp: "Installer l'app", installAppShort: "Installer",
      vatNote: "Conformément à l'§19 UStG (droit allemand), aucune TVA n'est calculée ni indiquée.",
      allPricesPlusShipping: "Tous les prix hors frais de port.", plusShipping: "hors frais de port",
      quantity: "Quantité", photoSoon: "Photo du produit à venir", portraitSoon: "Photo de VanVan à venir",
      prevPhoto: "Photo précédente", nextPhoto: "Photo suivante",
      handmadeBadge: "🩵 Fait main",
      skipToContent: "Aller au contenu", back: "← Retour",
    },
    product: {
      articleNo: "Référence", material: "Matière", size: "Taille", colors: "Couleurs",
      included: "Contenu de la livraison", care: "Entretien", delivery: "Délai de livraison",
      recommendations: "Cela pourrait aussi vous plaire",
      todoFields: "Les mentions GPSR, avertissements, coordonnées du fabricant et vidéos produit seront ajoutés dès que VanVan fournira les données réelles (phase 2, espace admin).",
      photoNote: "VanVan ajoutera de vraies photos plus tard",
      reviewsTitle: "Avis clients", noReviews: "Pas encore d'avis pour ce produit — soyez le/la premier(ère) !",
      reviewCount: (n: number) => `${n} avis`,
      writeReviewTitle: "🩵 Votre avis", yourRating: "Votre note", yourReview: "Qu'avez-vous aimé ? (facultatif)",
      yourName: "Votre nom", submitReview: "Publier l'avis", reviewSaved: "Merci pour votre avis ! ✓",
      reviewNeedsRating: "Merci de choisir 1 à 5 cœurs.", reviewFromOrder: (nr: string) => `Vous évaluez votre commande ${nr}.`,
      loginHintReview: "Connecté(e) en tant que", notLoggedInReview: "Vous n'êtes pas connecté(e) — votre avis sera publié sous le nom que vous indiquez.",
    },
    shop: {
      title: "Tous les produits", lead: "Parcourez toutes les pièces faites main – filtrez et triez selon vos envies.",
      filters: "Filtres", allCategories: "Toutes les catégories", priceUpTo: "Prix jusqu'à", priceUpToValue: (v: number) => `jusqu'à ${v} €`,
      onlyAvailable: "Articles disponibles uniquement", onlyBestseller: "🔥 Meilleures ventes uniquement (Top 6)", filterNote: "Les filtres matière et couleur arriveront dès que l'assortiment sera plus large.",
      sortNew: "Nouveautés", sortBestseller: "Best-sellers", sortPriceAsc: "Prix croissant", sortPriceDesc: "Prix décroissant", sortRating: "Mieux notés",
      resultCount: (n: number) => `${n} produit${n === 1 ? "" : "s"}`, noResults: "Aucun produit trouvé – veuillez ajuster les filtres.",
      breadcrumbShop: "Boutique", categoryEmpty: "Aucun produit dans cette catégorie pour le moment – repassez bientôt.",
      categoryLabel: "Catégorie", productSingular: "produit", productPlural: "produits", sortLabel: "Trier par", subcategoriesLabel: "Sous-catégories", mainCategoryLabel: "Catégorie principale", subcategoryEmpty: "VanVan ajoutera bientôt les premiers produits ici – repassez bientôt.", moreAbout: "En savoir plus sur", moreVariants: "Autres modèles",
      moreAboutCharacterLead: "Si tu veux en savoir plus sur moi, clique",
      minRatingLabel: "Note minimale", minRatingAny: "Toutes les notes",
    },
    reviews: {
      heading: "Ce que disent nos client(e)s", lead: "De vrais retours sur nos pièces faites main.",
      basedOn: (n: number) => `basé sur ${n} avis`,
      toProduct: "Voir le produit →",
    },
    sale: {
      eyebrow: "% Soldes", title: "Offres actuelles", lead: "Réductions limitées dans le temps sur une sélection de pièces faites main.",
      empty: "Aucune promotion en cours actuellement – repassez bientôt.",
    },
    faq: {
      title: "Questions fréquentes",
      // Contenu (questions/réponses) modifiable depuis l'admin depuis le 03.08.2026 dans
      // src/content/faq.json (voir src/data/faq.ts) au lieu d'être codé en dur ici.
    },
    contact: {
      title: "Écrivez-nous", lead: "Des questions sur un produit, votre commande ou une demande personnalisée ? N'hésitez pas à nous contacter !",
      name: "Nom", email: "E-mail", subject: "Objet", message: "Message",
      gdprPrefix: "J'ai lu la", gdprLink: "politique de confidentialité", gdprSuffix: "et j'accepte le traitement de mes données.",
      send: "Envoyer le message", sentDemo: "Merci ! (Démo – pas encore d'envoi réel en phase 1)",
      todoNote: "À faire en phase 2 : connecter ce formulaire à un vrai service backend/e-mail (Cloudflare Worker). Actuellement aucun envoi réel n'a lieu.",
      directTitle: "Contact direct", emailPlaceholderNote: "(adresse provisoire)", orderNote: "Pour toute question de commande, merci d'indiquer le numéro de commande.",
      responseTitle: "Délai de réponse", responseNote: "Généralement sous 1 à 2 jours ouvrés.",
    },
    about: {
      eyebrow: "À propos de la créatrice", title: "Bonjour, je suis VanVan 🩵",
      lead: "Bienvenue dans mon petit atelier ! Tout ce que vous trouvez dans la boutique est fait main ici – point par point, perle par perle.",
      valuesTitle: "Ce qui compte pour moi",
      values: [
        { icon: "🧵", title: "Artisanat", text: "Pas de production de masse – chaque pièce est réalisée individuellement et avec soin." },
        { icon: "🩵", title: "Qualité", text: "Des matériaux choisis avec soin pour des résultats durables et beaux." },
        { icon: "🎁", title: "Personnel", text: "Cadeau ou plaisir pour soi-même – chaque produit porte un peu de cœur." },
      ],
      story: [
        {
          title: "Mon aventure a commencé avec une seule maille",
          paragraphs: [
            "Il y a environ six ans, j'ai découvert ma passion pour le crochet. Tout a commencé par pure curiosité. Sans cours ni expérience préalable, j'ai tout appris moi-même, étape par étape.",
            "À chaque nouvelle maille, chaque petite erreur et chaque projet terminé, non seulement mon savoir-faire grandissait, mais aussi mon enthousiasme pour cet artisanat merveilleux.",
            "Aujourd'hui, le crochet est pour moi bien plus qu'un simple loisir. C'est mon exutoire créatif, une façon de donner vie à mes idées et de faire sourire les gens avec des pièces uniques façonnées avec amour.",
            "La création d'amigurumis me fascine particulièrement. Je suis fascinée de voir comment une simple pelote de laine se transforme peu à peu en petit personnage — chacun avec son propre charme.",
          ],
        },
        {
          title: "La créativité ne connaît pas de limites",
          paragraphs: [
            "En plus du crochet, j'ai aussi découvert ma passion pour les bijoux faits main.",
            "Avec beaucoup de soin, je fabrique des bracelets, colliers, porte-clés et autres accessoires. J'adore combiner différents matériaux, couleurs et breloques pour créer sans cesse de nouveaux designs.",
            "Chaque bijou doit non seulement être beau, mais aussi apporter longtemps de la joie à son nouveau propriétaire.",
            "La créativité m'accompagne depuis toujours. C'est pourquoi vous trouverez chez moi non seulement du crochet classique ou des bijoux, mais toujours de nouvelles idées et projets créatifs, façonnés avec beaucoup d'amour.",
          ],
        },
        {
          title: "La qualité avec du cœur",
          paragraphs: [
            "Pour moi, l'artisanat, c'est la personnalité.",
            "Aucun produit ne sort d'une chaîne de production.",
            "Chaque pièce est soigneusement planifiée, façonnée et contrôlée par mes soins.",
            "J'accorde une importance particulière aux matériaux de qualité, à une finition soignée, à des détails pleins d'amour, à une qualité durable et à des designs uniques.",
          ],
        },
        {
          title: "Bien plus qu'un simple loisir",
          paragraphs: [
            "Derrière ma créativité se cache bien plus que de la laine et des perles.",
            "Je suis quelqu'un qui met tout son cœur dans ce qu'elle fait. Quand je fais quelque chose, c'est avec passion, patience et l'envie de créer quelque chose de spécial.",
            "Cela me rend heureuse quand mes créations apportent de la joie aux autres — que ce soit comme cadeau pour un être cher ou comme petit plaisir pour soi-même.",
          ],
        },
        {
          title: "Ma petite boutique de cœur",
          paragraphs: [
            "Ma boutique n'est donc pas simplement un endroit où l'on vend des produits.",
            "Elle fait partie de moi.",
            "D'innombrables heures de travail, de créativité, de passion et énormément d'amour se cachent dans chaque pièce.",
            "C'est exactement ce qui rend chaque pièce unique.",
          ],
        },
        {
          title: "Merci d'être là",
          paragraphs: [
            "Merci beaucoup de prendre le temps de découvrir mon petit monde créatif et de soutenir ma passion.",
            "Je te souhaite beaucoup de plaisir à parcourir la boutique, et j'espère que tu trouveras exactement la pièce qui fera battre ton cœur plus fort.",
          ],
        },
      ],
      closing: "Fait main avec amour – maille après maille et perle après perle.",
    },
    shipping: {
      eyebrow: "Livraison & Paiement", title: "Livraison & Paiement",
      shippingTitle: "📦 Livraison",
      shippingItems: [
        "Livraison exclusivement par DHL", "Pays livrés : Allemagne, Autriche, Suisse, Luxembourg",
        "Délai de livraison : 2 à 7 jours ouvrés", "Les frais de port sont définis par produit et échelonnés selon la valeur de la commande et le pays",
        "Livraison gratuite dès 75 € d'achat (Allemagne), 85 € (Autriche, Luxembourg) ou 100 € (Suisse)", "L'expédition n'a lieu qu'après réception du paiement",
        "Pour les livraisons en Suisse, la TVA à l'importation suisse et des frais de douane peuvent s'appliquer, à la charge du/de la destinataire",
      ],
      paymentTitle: "💳 Moyens de paiement", paymentItems: ["PayPal", "Carte bancaire en tant qu'invité via PayPal (Visa & Mastercard)", "Virement bancaire (paiement anticipé)"],
      todoNote: "Le barème précis des frais de port par pays/valeur de commande sera ajouté dès que VanVan aura fixé les conditions DHL définitives.",
    },
    cart: {
      eyebrow: "Panier", title: "Votre panier", empty: "Votre panier est encore vide.",
      subtotal: "Sous-total", shipping: "Livraison", shippingCalculated: "calculée au moment du paiement",
      total: "Total", remaining: (v: string) => `Encore ${v} avant la livraison gratuite.`, freeShipping: "🩵 Vous bénéficiez de la livraison gratuite !",
      toCheckout: "Passer au paiement", remove: "Retirer", perItem: "/ pièce",
      discount: "Remise", mengenrabatt: (p: string) => `Remise de quantité -${p}%`,
      mengenrabattTier: (ab: string, p: string) => `dès ${ab} pièces -${p}%`,
      couponLabel: "🎟️ Code promo", couponPlaceholder: "Entrer le code", couponApply: "Valider", couponRemove: "Retirer",
      buyNow: "Acheter maintenant", keptInCart: "Reste dans le panier, pas encore acheté",
      couponInvalid: "Code invalide ou expiré.", couponApplied: (code: string) => `Code promo « ${code} » appliqué`,
      partnerDiscount: "🤝 Remise partenaire",
      partnerCodeLabel: "🤝 Code partenaire", partnerCodePlaceholder: "Entrer le code", partnerCodeApply: "Valider", partnerCodeRemove: "Retirer",
      partnerCodeInvalid: "Code invalide ou expiré.", partnerCodeApplied: (code: string) => `Code partenaire « ${code} » appliqué`,
      loyaltyDiscount: "🎁 Récompense fidélité (-20 %)",
      loyaltyBannerTitle: "🎁 Votre récompense fidélité est prête !",
      loyaltyBannerText: "Choisissez ci-dessous l'article sur lequel vous voulez -20 %.",
      loyaltySelectLabel: "Choisir pour la récompense fidélité de 20 %",
      loyaltySelectedLabel: "🎁 Récompense fidélité de -20 % appliquée",
      gratisPraemie: "Récompense gratuite de votre abonnement",
      aboDiscount: "🎫 Remise d'abonnement",
    },
    checkout: {
      eyebrow: "Paiement", title: "Finaliser la commande",
      todoNote: "PayPal est techniquement entièrement connecté (paiement réel, vérifié côté serveur) — tant qu'aucun compte PayPal Business réel n'est configuré, il fonctionne en mode test gratuit de PayPal, sans transfert d'argent réel. Le virement bancaire est 100 % réel.",
      step1: "2. Contact & adresse de livraison", email: "E-mail", firstName: "Prénom", lastName: "Nom",
      street: "Rue & numéro", zip: "Code postal", city: "Ville", country: "Pays",
      step2: "1. Moyen de paiement",
      step3: "3. Récapitulatif de commande", agbPrefix: "J'ai lu les", agbLink: "CGV", agbSuffix: "et je les accepte.",
      revocationPrefix: "J'ai pris connaissance de la", revocationLink: "notice de rétractation", revocationAnd: "et de la",
      privacyLink: "politique de confidentialité", revocationSuffix: ".",
      bankTransfer: "Virement bancaire (paiement anticipé)", orderButton: "Commander avec obligation de paiement", emptyCartAlert: "Votre panier est vide.",
      payPalSub: "aussi par carte bancaire, sans compte",
      payPalHint: "Payez en toute sécurité avec votre compte PayPal ou en tant qu'invité par carte bancaire – vos données de carte transitent uniquement par le site sécurisé de PayPal, jamais par le nôtre.",
      payPalCompleteHint: "Finalisez votre commande via le bouton PayPal ci-dessus – vous y payez directement, votre commande est passée juste après.",
      bankHintReal: "Veuillez virer le montant de la facture sur le compte suivant après avoir finalisé votre commande. Vos articles ne sont expédiés qu'après réception du paiement.",
      bankPlaceholder: "Les coordonnées bancaires vous seront envoyées par e-mail après votre commande.",
      bankHolder: "Titulaire du compte", bankIban: "IBAN", bankBic: "BIC", bankBankName: "Banque",
      shippingHintTitle: "Remarque sur la livraison",
      shippingHint: "Livraison exclusivement par DHL en Allemagne, Autriche, Suisse et au Luxembourg. Délai de livraison 2 à 7 jours ouvrés. Livraison gratuite dès 75 € (Allemagne), 85 € (Autriche, Luxembourg) ou 100 € (Suisse). L'expédition n'a lieu qu'après réception du paiement.",
      shippingLink: "En savoir plus sur la livraison & le paiement →",
      thankYouEyebrow: "Merci", thankYouTitle: "Votre commande a bien été reçue",
      thankYouLead: "Ceci est actuellement une confirmation de démonstration (phase 1, sans traitement réel du paiement). Une fois le vrai paiement en ligne, vous recevrez ici et par e-mail une véritable confirmation de commande.",
      continueShopping: "Continuer mes achats", total: "Total", free: "gratuit",
    },
    account: {
      eyebrow: "Mon compte", title: "Se connecter ou commander en tant qu'invité",
      todoNote: "La connexion avec Google/PayPal est techniquement terminée et réelle (votre propre compte client, session sécurisée) — tant que les identifiants Google/PayPal ne sont pas configurés, le bouton affiche un message clair plutôt que de simuler une connexion. La connexion par e-mail/mot de passe ci-dessous reste un aperçu sans vérification réelle du mot de passe.",
      loginTitle: "Se connecter", email: "E-mail", password: "Mot de passe", loginButton: "Se connecter", forgotPassword: "Mot de passe oublié ?",
      newTitle: "Nouveau ici ?", newText: "Créez un compte pour retrouver l'historique des commandes, la liste de souhaits et le suivi au même endroit – ou commandez simplement en tant qu'invité, sans compte.",
      guestButton: "Continuer mes achats en tant qu'invité",
      loginError: "Veuillez saisir une adresse e-mail.",
      socialHeading: "Connexion plus rapide avec",
      socialGoogle: "Se connecter avec Google", socialPaypal: "Se connecter avec PayPal",
      loginErrorUnconfigured: "Ce mode de connexion n'est pas encore configuré. Veuillez vous connecter par e-mail ou réessayer plus tard.",
      loginErrorDenied: "Connexion annulée.",
      loginErrorGeneric: "Échec de la connexion. Veuillez réessayer.",
      orDivider: "ou avec e-mail",
      showPassword: "Afficher le mot de passe", hidePassword: "Masquer le mot de passe",
      rememberMe: "Rester connecté(e)",
      consentPrefix: "En vous connectant, vous acceptez notre", consentLink: "politique de confidentialité", consentSuffix: ".",
      previewLink: "👁 Aperçu : ce que voient les client(e)s connecté(e)s",
      previewName: "Marie L.",
    },
    accountDash: {
      eyebrow: "Mon compte", greeting: (name: string) => `Bonjour ${name} 🩵`, lead: "Ravie de vous revoir. Retrouvez ici toutes vos commandes, votre liste de souhaits et vos données en un coup d'œil.",
      previewNote: "Phase 1 : votre connexion, votre profil et vos avis sont déjà réellement enregistrés sur cet appareil. Seules les commandes ci-dessous sont des exemples destinés à la conception — les vraies commandes arriveront en phase 2 avec le paiement et une base de données (Cloudflare Worker + D1).",
      notLoggedIn: "Vous n'êtes pas connecté(e) — redirection vers la connexion …",
      exportDataButton: "📥 Télécharger mes données", deleteAccountButton: "🗑️ Supprimer le compte",
      deleteAccountConfirm: "Votre compte sera supprimé définitivement (pas vos commandes déjà passées, qui doivent être conservées pour des raisons légales). Continuer ?",
      deleteAccountError: "Le compte n'a pas pu être supprimé. Veuillez réessayer.",
      logout: "Se déconnecter",
      navLabel: "Navigation de l'espace client",
      statOrders: "Commandes", statWishlist: "Liste de souhaits", statOpen: "Envois en cours", statData: "Mes données", statLoyalty: "Récompense",
      datenHeaderBtn: "👤 Mes données",
      loyaltyTitle: "🎁 Ma récompense fidélité",
      loyaltyProgressTemplate: "Votre progression : {cur} sur {ziel} commandes",
      loyaltyRemainingOne: "Il vous manque encore 1 commande pour obtenir 20 % de réduction sur l'article de votre choix.",
      loyaltyRemainingOther: "Il vous manque encore {n} commandes pour obtenir 20 % de réduction sur l'article de votre choix.",
      loyaltyUnlockedTitle: "🎉 Récompense fidélité débloquée",
      loyaltyUnlockedText: "Vous avez validé dix commandes et bénéficiez de 20 % de réduction sur l'article de votre choix lors de votre prochaine commande.",
      loyaltyGoToCart: "Choisir l'article dans le panier →",
      loyaltyExplainer: "Seules les commandes entièrement finalisées et payées comptent. Après utilisation, votre progression repart de zéro.",
      loyaltyStatCollected: "Cumulées",
      loyaltyStatMissing: "Encore nécessaires",
      loyaltyStatBonus: "Récompense à l'objectif",
      loyaltyStatRedeemed: "Utilisées jusqu'ici",
      loyaltyStatRedeemedNever: "Jamais encore",
      loyaltyStatRedeemedSuffix: "×",
      loyaltyLastRedeemed: "Dernière utilisation le {date}",
      loyaltyRuleValid: "Compte : commandes entièrement finalisées et payées",
      loyaltyRuleInvalid: "Ne compte pas : commandes annulées ou encore ouvertes",
      loyaltyRuleReset: "Après utilisation, votre progression repart de 0",
      loyaltyLockedTitle: "🔒 Disponible uniquement avec un abonnement actif",
      loyaltyLockedText: "La récompense fidélité est un bonus réservé à nos abonné(e)s. Abonnez-vous pour commencer à cumuler des commandes vers votre récompense de 20 %.",
      loyaltyLockedBtn: "Voir l'abonnement →",
      statAbo: "Mon abonnement",
      aboHeaderBtn: "🎫 Gérer mon abonnement",
      aboTitle: "🎫 Mon abonnement",
      aboIntro: "Profitez d'une remise permanente sur chaque commande et d'oursons en peluche gratuits en cadeau — automatiquement, chaque mois.",
      aboNameKlein: "Petit abonnement", aboNameMittel: "Abonnement moyen", aboNameGross: "Grand abonnement",
      aboPreisSuffix: "/ mois",
      aboVorteilKlein: "5 % de remise sur chaque commande. Après chaque année d'abonnement complète : 1 petit ours en peluche offert.",
      aboVorteilMittel: "10 % de remise sur chaque commande. Après chaque année d'abonnement complète : 1 grand ours en peluche offert.",
      aboVorteilGross: "20 % de remise sur chaque commande. Un petit ours tous les 6 mois, et un grand ours en plus après chaque année complète.",
      aboAbschliessenBtn: "S'abonner",
      aboAktivesLabel: "✓ Votre abonnement actuel",
      aboWechselnBtn: "Passer à cet abonnement",
      aboNichtBuchbar: "Actuellement indisponible",
      aboRewardEveryLabel: "tous les {n} mois",
      aboStatusTitle: "Statut de votre abonnement",
      aboFieldStufe: "Formule", aboFieldPreis: "Prix mensuel", aboFieldRabatt: "Remise incluse",
      aboFieldStart: "Date de début", aboFieldNaechsteZahlung: "Prochain paiement", aboFieldLaufzeit: "Durée jusqu'ici",
      aboMonateSuffix: "mois",
      aboFortschrittKleinTemplate: "🧸 Encore {n} mois avant votre prochain petit ours",
      aboFortschrittGrossTemplate: "🧸 Encore {n} mois avant votre prochain grand ours",
      aboPraemienErhaltenTitel: "Les ours que vous avez déjà reçus :",
      aboPraemienKeine: "Vous n'avez pas encore utilisé de récompense ours.",
      aboPraemienAmTemplate: "reçu le {datum}",
      aboPraemienAnsehen: "voir",
      aboPraemienUnbekannt: "Ours d'une récompense antérieure",
      aboTeddyArtKlein: "Petit ours",
      aboTeddyArtGross: "Grand ours",
      aboPraemienVerfuegbarTitle: "🎉 Récompenses disponibles",
      aboKeinePraemienVerfuegbar: "Aucune récompense à échanger pour le moment.",
      aboEinloesenBtn: "Échanger maintenant",
      aboEinloesenKleinLabel: "Petit ours", aboEinloesenGrossLabel: "Grand ours",
      aboEingeloestHinweis: "🧸 Ajouté à votre panier !",
      aboZahlungSimBtn: "Simuler le paiement mensuel (démo)",
      aboZahlungSimHinweis: "Phase 1 : il n'y a pas encore de vrai paiement récurrent en arrière-plan. Ce bouton permet de tester ce qui se passe lors du prochain paiement mensuel réussi.",
      aboKuendigenBtn: "Résilier l'abonnement",
      aboKuendigenConfirm: "Résilier vraiment l'abonnement ? Vos avantages restent actifs jusqu'à la fin de la période payée.",
      aboGekuendigtHinweisTemplate: "Résilié le {datum}. Vos avantages restent actifs jusqu'à la fin de la période payée, puis votre abonnement se termine automatiquement.",
      aboWechselTitle: "Passer à une autre formule",
      aboBenachrichtigungenTitle: "🔔 Notifications",
      aboKeineBenachrichtigungen: "Pas encore de notifications — les mises à jour de votre abonnement apparaîtront ici automatiquement, par ex. à chaque paiement réussi, une nouvelle récompense en peluche ou un changement de formule.",
      aboNichtAktivBadge: "⏸ Remise suspendue",
      aboExplainer: "Toutes les données sont actuellement stockées en sécurité sur cet appareil (Phase 1). Une base de données multi-appareils suivra avec le vrai paiement en Phase 2.",
      notifAboAbgeschlossen: "Votre abonnement a été souscrit avec succès — bienvenue ! 🎉",
      notifAboGewechselt: "Vous êtes passé(e) avec succès à un autre abonnement ({stufe}).",
      notifAboZahlungErfolgreich: "Votre paiement mensuel d'abonnement a été effectué avec succès. ✅",
      notifAboTeddyKleinFrei: "🧸 Nouvelle récompense débloquée : un petit ours vous attend !",
      notifAboTeddyGrossFrei: "🧸 Nouvelle récompense débloquée : un grand ours vous attend !",
      notifAboBaldPraemie: "🧸 Presque au but — votre prochaine récompense en peluche arrive le mois prochain !",
      notifAboGekuendigt: "Vous avez résilié votre abonnement. Vos avantages restent actifs jusqu'à la fin de la période payée.",
      notifAboTeddyKleinEingeloest: "🧸 Petit ours échangé — il est maintenant gratuit dans votre panier.",
      notifAboTeddyGrossEingeloest: "🧸 Grand ours échangé — il est maintenant gratuit dans votre panier.",
      noOpenOrders: "Aucun envoi en cours pour le moment — toutes les commandes sont déjà arrivées. 🎉",
      noArrivedOrders: "Aucune commande livrée pour le moment — vos commandes apparaîtront ici dès qu'elles seront arrivées.",
      olderOrdersShow: "Commandes plus anciennes",
      olderOrdersHide: "Masquer les commandes plus anciennes",
      olderOrdersSearch: "Rechercher un numéro de commande ou un article …",
      olderOrdersNoHits: "Nous n'avons trouvé aucune commande plus ancienne pour cette recherche.",
      ordersTitle: "📦 Mes commandes",
      orderNo: "Commande", orderDate: "Commandé le", orderTotal: "Total", orderItems: "Articles",
      trackingLabel: "Suivi", trackingBtn: "Suivre l'envoi →", invoiceBtn: "Voir la facture", reorderBtn: "Commander à nouveau",
      invoiceTitle: "Facture", invoiceNumberLabel: "Numéro de facture", invoiceDateLabel: "Date de facture",
      invoiceSellerLabel: "Vendeur", invoiceBillToLabel: "Facturé à",
      invoiceItemLabel: "Article", invoiceQtyLabel: "Qté", invoiceUnitPriceLabel: "Prix unitaire", invoiceSumLabel: "Montant total",
      invoiceCloseBtn: "Fermer", invoiceDownloadBtn: "Télécharger la facture", invoiceDownloading: "Préparation …",
      statusBezahlt: "Payée", statusBearbeitung: "En préparation", statusVersandVorbereitet: "Envoi en préparation", statusVersendet: "Expédiée", statusAbgeschlossen: "Terminée",
      wishlistTitle: "🩵 Ma liste de souhaits", wishlistEmpty: "Votre liste de souhaits est encore vide — parcourez la boutique et enregistrez vos coups de cœur avec l'icône en forme de cœur.",
      recentTitle: "🕘 Vus récemment",
      profileTitle: "👤 Mes données", profileName: "Nom", profileEmail: "E-mail", profileAddress: "Adresse de livraison", profileEdit: "Modifier mes données",
      reviewBtn: "🩵 Écrire un avis", reviewedBadge: "✓ Avis publié",
      nameSave: "Enregistrer", nameSaved: "Enregistré ✓",
      usernameLabel: "Nom d'utilisateur (surnom)", usernameHint: "Facultatif — un bonus si vous préférez être affiché(e) avec un surnom plutôt que votre nom.", usernameSave: "Enregistrer", usernameSaved: "Enregistré ✓",
      photoLabel: "Photo de profil", photoChange: "Changer la photo", photoRemove: "Supprimer",
    },
  },
} as const;

export type UiDict = (typeof ui)["de"];

export function useTranslations(locale: Locale): UiDict {
  return ui[locale];
}
