// Shared dictionary — bilingual DE/EN. Brand is authored in both.
const COPY = {
  nav: {
    what:      { de: "Was wir tun",     en: "What we do" },
    how:       { de: "So arbeiten wir", en: "How we work" },
    work:      { de: "Projekte",        en: "Work" },
    pricing:   { de: "Zusammenarbeit",  en: "How we work" },
    about:     { de: "Über uns",        en: "About" },
    talk:      { de: "Gespräch",        en: "Talk" },
  },
  hero: {
    eye:  { de: "KI-Automation Boutique · Tirol · Salzburg · München",
            en: "AI automation boutique · Tyrol · Salzburg · Munich" },
    h1a:  { de: "We shift the way",             en: "We shift the way" },
    h1b:  { de: "businesses work.",             en: "businesses work." },
    sub:  { de: "KMUs brauchen keine weitere Digitalagentur. Sie brauchen Partner, die ihre Probleme wirklich verstehen — und dann bauen, statt zu erklären.",
            en: "SMEs don't need another digital agency. They need partners who genuinely understand their problems — and build, instead of explaining." },
    cta1: { de: "Make the Shyft →", en: "Make the Shyft →" },
    cta2: { de: "So funktioniert's", en: "How it works" },
    stat_a: { de: "4 Stunden", en: "4 hours" },
    stat_a_sub: { de: "Angebot erstellen. Vorher.", en: "to quote. Before." },
    stat_b: { de: "20 Minuten", en: "20 minutes" },
    stat_b_sub: { de: "Angebot erstellen. Jetzt.", en: "to quote. After." },
  },

  services: {
    eye:   { de: "02 — Was wir tun",           en: "02 — What we do" },
    h2:    { de: "Vier Dinge. Richtig gemacht.", en: "Four things. Done right." },
    items: [
      { title: { de: "Angebots-Automation",    en: "Quote automation" },
        desc:  { de: "Aus vier Stunden werden zwanzig Minuten. Aus E-Mail-Ping-Pong wird ein Klick.",
                 en: "Four hours become twenty minutes. Email ping-pong becomes one click." },
        tag:   { de: "Vertrieb",               en: "Sales" } },
      { title: { de: "Rechnungs- & Belegfluss", en: "Invoice & receipt flow" },
        desc:  { de: "Freitagabend gehört der Familie, nicht dem Belegordner.",
                 en: "Friday nights belong to your family, not the receipts folder." },
        tag:   { de: "Finanzen",               en: "Finance" } },
      { title: { de: "Kunden-Onboarding",      en: "Client onboarding" },
        desc:  { de: "Ein Formular. Ein System. Ein Kunde, der sich abgeholt fühlt.",
                 en: "One form. One system. One client who feels looked after." },
        tag:   { de: "Ops",                    en: "Ops" } },
      { title: { de: "Interne Wissens-Agenten", en: "Internal knowledge agents" },
        desc:  { de: "Der SOP-Ordner antwortet jetzt selbst. In eurem Ton.",
                 en: "The SOP folder answers for itself now. In your voice." },
        tag:   { de: "Team",                   en: "Team" } },
    ],
    foot: { de: "Nicht dabei? Fragt uns. Wir sagen ehrlich, ob wir helfen können.",
            en: "Not listed? Ask. We'll tell you honestly if we can help." },
  },

  process: {
    eye: { de: "03 — So arbeiten wir", en: "03 — How we work" },
    h2:  { de: "Von erstem Gespräch bis laufendes System. In zwei Wochen.",
           en: "From first call to running system. In two weeks." },
    steps: [
      { n: "01", w: { de: "Woche 0 · Tag 1",  en: "Week 0 · Day 1" },
                 title: { de: "Kaffee vor Ort.", en: "Coffee on site." },
                 body:  { de: "Wir schauen euch beim Arbeiten zu. Kein Deck. Keine Folien.",
                          en: "We watch you work. No deck. No slides." } },
      { n: "02", w: { de: "Woche 1",          en: "Week 1" },
                 title: { de: "Prototyp läuft.", en: "Prototype running." },
                 body:  { de: "Ein echtes Stück Automation, das einen echten Schmerz nimmt.",
                          en: "One real piece of automation that takes one real pain away." } },
      { n: "03", w: { de: "Woche 2",          en: "Week 2" },
                 title: { de: "System im Betrieb.", en: "System in production." },
                 body:  { de: "Im Team getestet. Dokumentiert. Übergeben.",
                          en: "Tested with the team. Documented. Handed over." } },
      { n: "04", w: { de: "Laufend",          en: "Ongoing" },
                 title: { de: "Wir bleiben erreichbar.", en: "We stay reachable." },
                 body:  { de: "Kein Support-Ticket. Die Handynummer von Guy oder Simone.",
                          en: "No support ticket. Guy or Simone's mobile number." } },
    ],
  },

  pillars: {
    eye: { de: "04 — Was uns unterscheidet", en: "04 — What sets us apart" },
    h2:  { de: "Vier Prinzipien. Null Kompromisse.",
           en: "Four principles. Zero compromise." },
    items: [
      { h: { de: "Systeme, keine Tools.",  en: "Systems, not tools." },
        p: { de: "Wir verkaufen keine Software. Wir bauen Systeme, die in das passen, was schon da ist.",
             en: "We don't sell software. We build systems that fit what's already there." } },
      { h: { de: "Wochen, keine Monate.",  en: "Weeks, not months." },
        p: { de: "Erste Ergebnisse in zwei Wochen. Nicht weil wir rennen — weil wir wissen, was wir tun.",
             en: "First results in two weeks. Not because we rush — because we know what we're doing." } },
      { h: { de: "Lokal. Persönlich.",     en: "Local. Personal." },
        p: { de: "Tirol · Salzburg · München. Ein Kaffee vor Ort schlägt eine Stunde Zoom.",
             en: "Tyrol · Salzburg · Munich. A coffee on site beats an hour of Zoom." } },
      { h: { de: "Kein Bullshit. Niemals.", en: "No Bullshit. Ever." },
        p: { de: "Wenn ein Zapier-Workflow reicht, sagen wir es. Ehrlichkeit vor Umsatz.",
             en: "If a Zapier workflow will do, we'll tell you so. Honesty over revenue." } },
    ],
  },

  casestudy: {
    eye: { de: "05 — Aus der Praxis", en: "05 — From the field" },
    h2:  { de: "Reinigungsfirma aus Tirol. 3 Personen im Büro.",
           en: "Cleaning company in Tyrol. 3 people in the office." },
    stats: [
      { n: "40%", l: { de: "der Bürozeit ging für Admin drauf. Vorher.",
                       en: "of office time went to admin. Before." } },
      { n: "12h", l: { de: "pro Woche gespart. Nach dem Go-Live.",
                       en: "saved per week. After go-live." } },
      { n: "2",   l: { de: "Wochen vom ersten Anruf bis laufendes System.",
                       en: "weeks from first call to live system." } },
    ],
    quote: { de: "«Wir dachten, wir brauchen einen Mitarbeiter mehr. Jetzt haben wir nur Shyft gebraucht.»",
             en: "«We thought we needed another hire. Turns out we only needed Shyft.»" },
    quote_by: { de: "— Inhaberin, Reinigungsfirma Innsbruck",
                en: "— Owner, cleaning company, Innsbruck" },
  },

  testimonials: {
    eye: { de: "06 — Was Kunden sagen", en: "06 — What clients say" },
    h2:  { de: "Klein, aber unmissverständlich.", en: "Small, but unambiguous." },
    items: [
      { q: { de: "«Erster Anruf Montag. Lauffähig am Freitag. Ich war skeptisch — jetzt nicht mehr.»",
             en: "«First call Monday. Running by Friday. I was skeptical — not anymore.»" },
        by:{ de: "GF, Installateur, Zillertal", en: "MD, plumbing firm, Zillertal" } },
      { q: { de: "«Sie haben uns von einem Tool abgeraten, das wir kaufen wollten. Das sagt alles.»",
             en: "«They talked us out of a tool we were about to buy. Says it all.»" },
        by:{ de: "Büroleiterin, Hotelgruppe, Salzburg", en: "Office manager, hotel group, Salzburg" } },
      { q: { de: "«Kein Konzeptpapier. Kein Account Manager. Einfach zwei Leute, die liefern.»",
             en: "«No concept paper. No account manager. Just two people who ship.»" },
        by:{ de: "Gründer, Handwerksbetrieb, München", en: "Founder, trades firm, Munich" } },
    ],
  },

  pricing: {
    eye: { de: "07 — Zusammenarbeit", en: "07 — How we work together" },
    h2:  { de: "So läuft die Zusammenarbeit ab.", en: "How the collaboration actually runs." },
    sub: { de: "Drei Formate. Klarer Rhythmus. Keine Folienschlachten.",
           en: "Three formats. Clear rhythm. No deck theatre." },

    formats: [
      { name:   { de: "Spur-Check",  en: "Pulse check" },
        window: { de: "1 Woche",     en: "1 week" },
        when:   { de: "Wenn ihr nicht sicher seid, ob Automation überhaupt was bringt.",
                  en: "When you're not sure automation even makes sense for you." },
        how: [
          { de: "Zwei Tage vor Ort, wir schauen zu",     en: "Two days on site, we shadow you" },
          { de: "Keine Folien, keine Workshops",          en: "No slides, no workshops" },
          { de: "Am Ende: eine ehrliche Landkarte",       en: "At the end: an honest map" },
        ] },
      { name:   { de: "Sprint",       en: "Sprint" },
        window: { de: "2 Wochen",     en: "2 weeks" },
        featured: true,
        when:   { de: "Wenn ein konkreter Schmerzpunkt klar auf dem Tisch liegt.",
                  en: "When one concrete pain is clearly on the table." },
        how: [
          { de: "Eine Automation, Ende zu Ende",         en: "One automation, end to end" },
          { de: "In eurem Stack, nicht daneben",          en: "Inside your stack, not beside it" },
          { de: "Mit dem Team getestet und übergeben",    en: "Tested with the team and handed over" },
        ] },
      { name:   { de: "Partner",      en: "Partner" },
        window: { de: "Fortlaufend",  en: "Ongoing" },
        when:   { de: "Wenn ihr einen Operator an eurer Seite wollt, nicht nur ein Projekt.",
                  en: "When you want an operator alongside you, not just a project." },
        how: [
          { de: "Pro Quartal ein neues System",           en: "One new system per quarter" },
          { de: "Direkt­kontakt zu Guy & Simone",         en: "Direct line to Guy & Simone" },
          { de: "Wartung und Weiterentwicklung inklusive", en: "Maintenance and evolution included" },
        ] },
    ],

    roles: {
      eye:  { de: "Wer macht was", en: "Who does what" },
      ours: { title: { de: "Was wir mitbringen", en: "What we bring" },
              items: [
                { de: "Beobachten, bevor wir bauen",                   en: "We observe before we build" },
                { de: "Systeme, die zu eurem Tool-Stack passen",        en: "Systems that fit your tool stack" },
                { de: "Ehrliche Einschätzung, auch wenn sie unbequem ist", en: "Honest assessment, even when inconvenient" },
                { de: "Dokumentation, damit ihr nicht von uns abhängt", en: "Docs so you don't depend on us" },
              ] },
      theirs: { title: { de: "Was ihr beisteuert", en: "What you bring" },
                items: [
                  { de: "Zugang zu einer Person im Team, die entscheidet", en: "Access to one decision-maker in the team" },
                  { de: "Zwei halbe Tage für echtes Zuschauen",           en: "Two half-days of real observation" },
                  { de: "Zugänge zu den Tools, die schon im Einsatz sind", en: "Access to tools already in use" },
                  { de: "Mut, Dinge auch wegzuwerfen",                    en: "Courage to throw things away" },
                ] },
    },
  },

  faq: {
    eye: { de: "08 — Häufige Fragen", en: "08 — FAQ" },
    h2:  { de: "Was meistens gefragt wird.", en: "The questions we get most." },
    items: [
      { q: { de: "Seid ihr eine Agentur?", en: "Are you an agency?" },
        a: { de: "Nein. Agenturen stellen Tools auf. Wir bauen bespoke Systeme, die zu euch passen. Kleiner Unterschied. Riesiger Unterschied.",
             en: "No. Agencies set up tools. We build bespoke systems that fit you. Small word. Huge difference." } },
      { q: { de: "Und wenn ein fertiges Tool reicht?", en: "What if an off-the-shelf tool would do?" },
        a: { de: "Dann sagen wir das. Wir haben in den letzten sechs Monaten dreimal «Zapier reicht» gesagt und kein Angebot gemacht.",
             en: "Then we'll say so. In the last six months we've said \u201cZapier will do\u201d three times and not quoted." } },
      { q: { de: "Warum nur DACH?", en: "Why only DACH?" },
        a: { de: "Weil wir persönlich arbeiten. Ein Kaffee vor Ort schlägt eine Stunde Zoom. Punkt.",
             en: "Because we work in person. A coffee on site beats an hour of Zoom. Full stop." } },
      { q: { de: "Was passiert mit unseren Daten?", en: "What happens to our data?" },
        a: { de: "DSGVO-konform. Server in der EU. Kein Training auf euren Daten. Wir unterschreiben jede AVV.",
             en: "GDPR-compliant. EU servers. No training on your data. We'll sign any DPA." } },
      { q: { de: "Wer macht den Support danach?", en: "Who does support afterwards?" },
        a: { de: "Wir. Ihr habt die Handynummer. Bei akuten Problemen sind wir innerhalb eines Arbeitstags erreichbar.",
             en: "We do. You have our mobile numbers. For urgent issues we respond within a business day." } },
      { q: { de: "Habt ihr Referenzen?", en: "Do you have references?" },
        a: { de: "Ja, bei Bedarf und nach Rücksprache mit den Kunden. Wir verlinken sie nicht öffentlich — Respekt vor Betriebsgeheimnissen.",
                en: "Yes, on request and with client consent. We don't link them publicly — we respect trade secrets." } },
    ],
  },

  cta: {
    eye: { de: "Make the Shyft", en: "Make the Shyft" },
    h2:  { de: "Zeigt uns, wo es wehtut. Wir sagen ehrlich, ob wir helfen können.",
           en: "Show us where it hurts. We'll tell you honestly if we can help." },
    cta: { de: "Erstgespräch anfragen →", en: "Request a first call →" },
    sub: { de: "30 Minuten. Kein Pitch. Antwort innerhalb eines Werktags.",
           en: "30 minutes. No pitch. Reply within one business day." },
  },
};

// Language hook — reads/writes a data-lang attr on documentElement + localStorage
function useLang() {
  const [lang, setLang] = React.useState(() =>
    (typeof localStorage !== "undefined" && localStorage.getItem("shyft-lang")) || "de"
  );
  React.useEffect(() => {
    document.documentElement.setAttribute("data-lang", lang);
    try { localStorage.setItem("shyft-lang", lang); } catch (_) {}
  }, [lang]);
  return [lang, setLang];
}

const t = (dict, lang) => {
  if (dict == null) return "";
  if (typeof dict === "string") return dict;
  return dict[lang] ?? dict.en ?? "";
};

const Arrow = () => <span style={{ fontFamily: "inherit" }}>→</span>;

Object.assign(window, { COPY, useLang, t, Arrow });
