/* ============================================================
   i18n — DA (default) + EN
   Copy mirrors the live sanddo.ai landing where it fits, and
   translates the v2 redesign's own sections into the same voice.
   Loaded after primitives.jsx, before every section component.
   ============================================================ */
const { createContext, useContext } = React;

/* ---- translations ---- */
const T = {
  da: {
    meta: { title: "Sanddo — sikker automatisering af kundeservice på mail" },

    nav: { product: "Produkt", integrations: "Integrationer", safety: "Sikkerhed", pricing: "Priser",
           login: "Log ind", seeItWork: "Se det virke", bookDemo: "Book demo" },

    hero: {
      badge: "Shopify-support autopilot med kontrol",
      wordmark: "E-commerce Support Made Easy",
      taglinePre: "Sikker support-automatisering til",
      words: ["e-commerce", "Shopify-shops", "DTC-brands", "peak-sæson", "returneringer"],
      primary: "Book demo",
      secondary: "Se produktet",
      scroll: "Scroll for mere",
      frag: {
        whereOrder: "Hvor er min ordre?",
        orderStatus: "Ordrestatus",
        refundReq: "Refundering",
        returns: "Returnering",
        productQ: "Produktspørgsmål",
        refund: "Refundering",
        qaPassed: "QA bestået",
        reOrderStatus: "Sv: Ordrestatus",
        blocked: "BLOKERET",
        heldBy: "Holdt af review-learning · trust 0% < 75%",
        amount: "Beløb",
        trust: "trust",
        tagAuto: "Auto", tagStop: "Stop", tagApprove: "Godkend",
      },
    },

    integrations: {
      partnerTitle: "Officiel Shopify Partner",
      partnerSub: "Bygget til Shopify",
    },

    problem: {
      title: "Enhver supportindbakke kender smerten.",
      bodyPre: "De samme få spørgsmål, tusindvis af gange om måneden — mens de sager, der ",
      bodyEm: "faktisk kræver et menneske",
      bodyPost: ", venter i køen.",
      punch: "Sanddo ændrer det.",
      inbox: { title: "Indbakke", today: "· i dag", unassigned: "1.284 ikke tildelt", more: "og 1.279 mere…" },
      queue: [
        { init: "AB", who: "Anna Berg", q: "Hvor er min ordre? Jeg kan ikke finde trackinglinket.", cat: "Ordrestatus", t: "22:47" },
        { init: "MD", who: "Mikkel Dahl", q: "Er uldsweateren lille i størrelsen? Jeg er normalt medium.", cat: "Produktspørgsmål", t: "22:51" },
        { init: "LM", who: "Laura Meier", q: "Jakken passer ikke — kan jeg få pengene tilbage?", cat: "Refundering", t: "22:58" },
        { init: "SK", who: "Sofia Krag", q: "Hej, hvor er min ordre? Jeg bestilte for fire dage siden.", cat: "Ordrestatus", t: "23:04" },
        { init: "JP", who: "Jonas Prip", q: "Hvordan returnerer jeg noget? Hvad er processen?", cat: "Returnering", t: "23:09" },
      ],
    },

    bento: {
      cards: {
        drafts: "Skriver hvert svar ud fra jeres egne ordredata.",
        categories: "Sender automatisk — kun i de kategorier, I har godkendt.",
        checks: "Hvert svar tjekkes, før det sendes.",
        handoff: "Når den er i tvivl, bestemmer et menneske.",
        integrations: "Bor der, hvor I allerede arbejder.",
      },
      draft: {
        reSubject: "Sv: Hvor er min ordre?", to: "til anna.berg@gmail.com", badge: "Udkast",
        quote: "Hej, jeg kan ikke finde trackinglinket. Hvornår kommer min ordre?",
        line1: "Hej Anna — din ordre er allerede på vej.",
        line2pre: "Fragtføreren scannede den i morges, og levering forventes ",
        line2strong: "i morgen mellem 10:00–14:00",
        line2post: ". Her er dit trackinglink, hvis du vil følge med.",
        send: "Send", builtFrom: "Bygget ud fra ordredata · 4 sek",
        carrier: "Fragtfører", carrierVal: "GLS", eta: "ETA", etaVal: "I morgen 10–14", items: "Varer", itemsVal: "2",
      },
      rules: {
        title: "Automatiseringsregler", automated: "3 af 5 automatiseret", auto: "Auto", human: "Menneske",
        rows: [
          { name: "Ordrestatus", desc: "Tracking, leveringstid, adresseændringer", on: true },
          { name: "Returnering", desc: "Labels, portallinks, returvinduer", on: true },
          { name: "Produktspørgsmål", desc: "Størrelser, materialer, lager", on: true },
          { name: "Refundering", desc: "Altid udkast til menneskelig gennemgang", on: false },
          { name: "Klager", desc: "Håndteres altid af jeres team", on: false },
        ],
      },
      checks: {
        trust: "Trust-score", threshold: "over jeres tærskel på 75",
        items: ["Ordredata matchet", "Ingen betalings- eller juridisk tekst", "Tone matcher jeres brandstemme", "Sprog matcher kunden"],
      },
      handoff: {
        held: "Holdt", subject: "Refundering", who: "Laura Meier · for 2 min siden",
        body: "Hej Laura — jeg er ked af, at pasformen ikke var rigtig. Jeg har klargjort refunderings-resuméet, som en kollega bekræfter.",
        approve: "Godkend & send", edit: "Rediger",
      },
      stack: { caption: "To-vejs synkronisering · 10-minutters opsætning" },
    },

    stats: {
      title: "Bygget sammen med Shopify-shops i Norden.",
      l1: "mindre tid brugt på support i gennemsnit",
      l2: "kundeservice nødvendig i peak-sæson",
      l3: "median-tid fra spørgsmål til svar",
      note: "Resultater fra pilot-shops · privat beta",
    },

    pricing: {
      kicker: "Priser",
      title: "Pris efter\nsupportvolumen.",
      lead: "Samme sikkerhedsmodel på alle planer. Priser i DKK per måned — intet sendes automatisk, før du slår det til.",
      perMo: "kr / md", popular: "Mest valgt", beta: "Beta pris", bookDemo: "Book demo", custom: "Custom løsning",
      plans: [
        { name: "Basic", price: "1.999", oldPrice: "4.999", note: "Til små shops der vil i gang med kladder og auto-svar.",
          feats: ["1.000 tickets / md", "Alt er inkluderet i alle planer"] },
        { name: "Pro", price: "3.999", oldPrice: "9.999", note: "Til shops i vækst — springet mellem små og store.",
          feats: ["2.500 tickets / md", "Alt er inkluderet i alle planer"] },
        { name: "Advanced", price: "5.999", oldPrice: "17.999", note: "Til voksende webshops med review-learning og flere markeder.",
          feats: ["5.000 tickets / md", "Alt er inkluderet i alle planer"] },
        { name: "Enterprise", price: "Custom løsning", note: "Til store organisationer med høj volumen og særlige krav.",
          feats: ["Pris efter jeres volumen", "Custom integrationer efter aftale"] },
      ],
      included: {
        title: "Alt er inkluderet i alle planer",
        lead: "Et komplet helpdesk med AI indbygget. Ingen ekstra gebyrer. Ingen tilkøb. Du vælger kun dit volumen.",
        feats: [
          "Fuld AI-adgang — ingen ekstra gebyrer",
          "Delt indbakke med smart views & filtre",
          "Redigerer ordrer, sender betalingslinks, refunderer & ombytter",
          "Ubegrænsede brugere",
          "Auto-send eller godkend udkast — du bestemmer",
          "Ubegrænsede teams & markeder",
          "Ubegrænsede skills — byg alle de automatiseringer du vil",
          "AI-drevet tagging & routing",
          "Spam-filter — reklamer & støj sorteres fra",
          "Automatisk oversættelse på tværs af sprog",
          "Makroer, kontakter & fuld samtalehistorik",
          "Adgang til kampagne-manager",
          "Live analytics & performance-dashboard",
          "Multi-shop setup (flere webshops i én konto)",
          "Nem migration fra Zendesk, Gorgias, Dixa m.fl.",
          "Integrationer til shop, ERP, fragt, retur & betaling",
        ],
      },
    },

    roi: {
      kicker: "ROI-beregner",
      title: "Beregn besparelsen\nmed Sanddo.",
      lead: "Samme model som i piloterne: ~1.000 tickets per medarbejder, jeres automatiseringsgrad, og planen der matcher jeres volumen. Vejledende — det reelle tal afhænger af jeres kategori-mix.",
      setup: "Dit nuværende setup",
      teamLabel: "Support-team størrelse", teamSub: "≈ 1.000 tickets per medarbejder / måned",
      agent: "medarbejder", agents: "medarbejdere",
      salaryLabel: "Løn per medarbejder", autoLabel: "Tickets automatiseret",
      softwareLabel: "Nuværende software",
      withPlan: "Med Sanddo", savingsLabel: "Din månedlige besparelse", perYear: "/ år",
      currentRow: "Nuværende software + team", sanddoRow: "Sanddo {plan} + team",
      automated: "tickets automatiseret", redeploy: "flyt {n}", sameTeam: "samme team",
      cta: "Map det til jeres kategorier", contact: "Kontakt os",
    },

    proof: {
      quote: { pre: "Vi blev glade for selv at kunne vælge ", hi: "præcis hvor meget kontrol", post: " vi havde over, hvilke mails der blev sendt automatisk." },
      name: "Camilla Nielsen", role: "Teamleder kundeservice · Nordic Flame",
    },

    demo: {
      kicker: "Book demo",
      title: "Fremtidens support,\ntilgængelig i dag.",
      lead: "Vi gennemgår jeres kategorier, nuværende tools og volumen — og viser, hvor Auto sikkert kan slås til allerede i jeres første uge.",
      bullets: ["30 minutters personlig gennemgang", "Et konkret automationskort for første uge", "Intet betalingskort — intet sendes, før I aktiverer det"],
      steps: ["Dato & tid", "Dine oplysninger"],
      monthsLong: ["januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december"],
      weekdaysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"],
      chooseTime: "Vælg tidspunkt · CET",
      continue: "Fortsæt · {date} kl. {time}", selectTime: "Vælg et tidspunkt for at fortsætte",
      emailLabel: "Arbejdsmail", emailPh: "dig@dinshop.dk",
      volLabel: "Månedlig ticket-volumen", volOpts: ["Under 1.000", "1.000–5.000", "5.000–20.000", "Mere end 20.000"],
      back: "Tilbage", book: "Book demo", sending: "Sender…",
      errEmail: "Indtast en gyldig arbejdsmail.", errVol: "Vælg jeres månedlige ticket-volumen.",
      bookErr: "Bookingen kunne ikke sendes lige nu. Prøv igen.",
      selected: "VALGT · {date} · {time}",
      doneTitle: "Demo booket.", doneBody: "Vi bruger jeres ticket-kategorier som første automationskort. Bekræftelse sendt til {email}.",
      doneChip: "{date} · {time} CET", another: "Book et andet tidspunkt",
    },

    footer: {
      tagline: "Sikker support-automatisering til e-commerce. Udkast bygget på rigtige ordredata — sendt automatisk kun der, hvor I har sagt ja.",
      cols: [
        ["Produkt", [["Udkast", "/detail?topic=drafts"], ["Kategorikontrol", "/detail?topic=categories"], ["Sikkerhedstjek", "/detail?topic=checks"], ["Integrationer", "/integrations"]]],
        ["Salg", [["Priser", "#pricing"], ["ROI", "#calculator"], ["Book demo", "#demo"]]],
        ["Jura", [["Privatliv", "/privacy"], ["Vilkår", "/terms"], ["Cookies", "/cookies"]]],
      ],
      copyright: "© 2026 Sanddo. Alle rettigheder forbeholdes.",
      madeSafe: "Sikker som standard · EU-hosted",
    },

    detail: {
      nav: { all: "Alle funktioner", book: "Book demo" },
      howItWorks: "Sådan virker det",
      exploreMore: "Udforsk mere",
      ctaTitle: "Se det på jeres egen indbakke.",
      ctaBtn: "Book demo",
      topics: {
        drafts: {
          kicker: "Udkast", shot: "ShotDraft",
          title: "Hvert svar skrevet ud fra jeres egne ordredata.",
          lead: "Sanddo gætter ikke. Den åbner tråden, finder ordren bag den og skriver et svar, der bygger på det, der faktisk er sandt — tracking, leveringsvindue, varer og beløb.",
          points: [
            ["Læser hele tråden", "Kundehistorik, tidligere svar og det oprindelige spørgsmål — så svaret passer til samtalen, ikke kun den sidste linje."],
            ["Henter live ordredata", "Ordrenummer, fragtfører, status og ETA kommer direkte fra Shopify og jeres værktøjer i det øjeblik, svaret skrives."],
            ["Skriver i jeres stemme", "Tone, afsked og sprog matcher jeres brand — og kundens sprog — automatisk."],
          ],
          steps: ["En henvendelse kommer ind", "Sanddo matcher den til en ordre", "Den skriver et begrundet udkast", "Udkastet scores og rutes"],
        },
        categories: {
          kicker: "Kontrol", shot: "ShotRules",
          title: "I bestemmer, hvad der sender sig selv.",
          lead: "Automatisering er tilvalg, én kategori ad gangen. Slå Auto til for de sikre, gentagne spørgsmål, og hold alt følsomt fast i menneskehænder.",
          points: [
            ["Kategori for kategori", "Ordrestatus, returneringer og produktspørgsmål kan køre selv. Refunderinger og klager bliver hos jeres team."],
            ["Lav det om når som helst", "Skift en kategori mellem Auto og Menneske med ét klik — ændringen gælder fra den næste henvendelse."],
            ["Sikker som standard", "Intet sendes automatisk, før I udtrykkeligt slår det til. Nye kategorier starter i Menneske-tilstand."],
          ],
          steps: ["Sanddo klassificerer henvendelsen", "Den tjekker jeres kategori-regler", "Sender kun selv, hvor det er tilladt", "Alt andet laves som udkast til gennemgang"],
        },
        checks: {
          kicker: "Sikkerhed", shot: "ShotChecks",
          title: "Hvert svar tjekkes, før det sendes.",
          lead: "Før noget forlader huset, gennemgår hvert udkast en række automatiske tjek og får en trust-score. Under jeres tærskel sender det aldrig selv.",
          points: [
            ["En trust-score per svar", "Hvert udkast scores på datamatch, sprog og risiko. I sætter den grænse, det skal over."],
            ["Hårde værn", "Betalings-, juridisk og refunderingstekst blokerer auto-afsendelse helt — uanset hvor høj scoren er."],
            ["Stemme og sprog", "Svar tjekkes mod jeres brandtone og kundens sprog, før de går ud."],
          ],
          steps: ["Udkastet skrives", "Automatiske tjek kører", "En trust-score beregnes", "Sender kun over jeres tærskel"],
        },
        handoff: {
          kicker: "Menneske-i-loopet", shot: "ShotHandoff",
          title: "Når den er i tvivl, bestemmer et menneske.",
          lead: "Sanddo er bygget til at give stafetten videre rent. Alt usikkert, følsomt eller under tærsklen lander i en menneskelig kø — med udkastet og hele konteksten klar.",
          points: [
            ["Intet smutter igennem", "Henvendelser med lav sikkerhed og følsomme sager holdes, sendes aldrig. Kunden når altid et menneske."],
            ["Klar til medarbejderen", "Udkastet, ordredataene og grunden til, at den blev holdt, er vedhæftet — ingen gravearbejde."],
            ["Ét klik til mål", "Godkend, rediger eller omskriv. Det går ud, og Sanddo lærer af valget til næste gang."],
          ],
          steps: ["En henvendelse holdes", "Den ryger i den menneskelige kø", "En medarbejder gennemgår udkastet", "De godkender eller redigerer og sender"],
        },
        integrations: {
          kicker: "Integrationer", shot: "ShotStack",
          title: "Bor der, hvor I allerede arbejder.",
          lead: "Sanddo kobler sig på den indbakke og de værktøjer, jeres team allerede bruger. Der er ingen ny app at bo i og ingen migrering at planlægge.",
          points: [
            ["Jeres indbakke, jeres helpdesk", "Gmail, Outlook, Zendesk og flere — Sanddo arbejder inde i de værktøjer, I allerede har åbne."],
            ["To-vejs Shopify-synkronisering", "Ordrer, fragt og returneringer flyder begge veje, i realtid, så svar altid er aktuelle."],
            ["Ti-minutters opsætning", "Forbind jeres konti, og Sanddo begynder at skrive udkast samme dag. Intet ingeniørprojekt."],
          ],
          steps: ["Forbind jeres indbakke", "Forbind Shopify", "Sæt jeres kategori-regler", "Sanddo begynder at skrive udkast"],
        },
      },
    },
  },

  en: {
    meta: { title: "Sanddo — automate support without losing control" },

    nav: { product: "Product", integrations: "Integrations", safety: "Safety", pricing: "Pricing",
           login: "Log in", seeItWork: "See it work", bookDemo: "Book demo" },

    hero: {
      badge: "Private beta for e-commerce support",
      wordmark: "E-commerce Support Made Easy",
      taglinePre: "Safe support automation for",
      words: ["e-commerce", "Shopify stores", "DTC brands", "peak season", "returns & refunds"],
      primary: "Book a demo",
      secondary: "See how it works",
      scroll: "Scroll to explore",
      frag: {
        whereOrder: "Where is my order?",
        orderStatus: "Order status",
        refundReq: "Refund request",
        returns: "Returns",
        productQ: "Product question",
        refund: "Refund",
        qaPassed: "QA passed",
        reOrderStatus: "Re: Order status",
        blocked: "BLOCKED",
        heldBy: "Held by review-learning · trust 0% < 75%",
        amount: "Amount",
        trust: "trust",
        tagAuto: "Auto", tagStop: "Stop", tagApprove: "Approve",
      },
    },

    integrations: {
      partnerTitle: "Official Shopify Partner",
      partnerSub: "Built for Shopify",
    },

    problem: {
      title: "Every support inbox knows the pain.",
      bodyPre: "The same handful of questions, thousands of times a month — while the tickets that ",
      bodyEm: "actually need a person",
      bodyPost: " wait in line.",
      punch: "Sanddo changes that.",
      inbox: { title: "Inbox", today: "· today", unassigned: "1,284 unassigned", more: "and 1,279 more…" },
      queue: [
        { init: "AB", who: "Anna Berg", q: "Where is my order? I can't find the tracking link.", cat: "Order status", t: "22:47" },
        { init: "MD", who: "Mikkel Dahl", q: "Does the wool sweater run small? I'm usually a medium.", cat: "Product question", t: "22:51" },
        { init: "LM", who: "Laura Meier", q: "The jacket doesn't fit — can I get a refund please?", cat: "Refund", t: "22:58" },
        { init: "SK", who: "Sofia Krag", q: "Hi, where is my order? I ordered four days ago.", cat: "Order status", t: "23:04" },
        { init: "JP", who: "Jonas Prip", q: "How do I return something? What's the process?", cat: "Returns", t: "23:09" },
      ],
    },

    bento: {
      cards: {
        drafts: "Drafts every reply from your real order data.",
        categories: "Sends automatically — only in categories you've approved.",
        checks: "Every reply is checked before it sends.",
        handoff: "When it's not sure, a person decides.",
        integrations: "Lives where you already work.",
      },
      draft: {
        reSubject: "Re: Where is my order?", to: "to anna.berg@gmail.com", badge: "Draft",
        quote: "Hi, I can't find the tracking link. When will my order arrive?",
        line1: "Hi Anna — your order is already on its way.",
        line2pre: "The carrier scanned it this morning, and delivery is expected ",
        line2strong: "tomorrow between 10:00–14:00",
        line2post: ". Here's your tracking link in case you'd like to follow along.",
        send: "Send", builtFrom: "Built from order data · 4 sec",
        carrier: "Carrier", carrierVal: "GLS", eta: "ETA", etaVal: "Tomorrow 10–14", items: "Items", itemsVal: "2",
      },
      rules: {
        title: "Automation rules", automated: "3 of 5 automated", auto: "Auto", human: "Human",
        rows: [
          { name: "Order status", desc: "Tracking, delivery time, address changes", on: true },
          { name: "Returns", desc: "Labels, portal links, return windows", on: true },
          { name: "Product questions", desc: "Sizing, materials, stock", on: true },
          { name: "Refunds", desc: "Always drafted for human review", on: false },
          { name: "Complaints", desc: "Always handled by your team", on: false },
        ],
      },
      checks: {
        trust: "Trust score", threshold: "above your 75 threshold",
        items: ["Order data matched", "No payment or legal language", "Tone matches your brand voice", "Language matches the customer"],
      },
      handoff: {
        held: "Held", subject: "Refund request", who: "Laura Meier · 2 min ago",
        body: "Hi Laura — I'm sorry the fit wasn't right. I've prepared the refund summary for a teammate to confirm.",
        approve: "Approve & send", edit: "Edit",
      },
      stack: { caption: "Two-way sync · 10-minute setup" },
    },

    stats: {
      title: "Built with Shopify stores in the Nordics.",
      l1: "less time spent on support, on average",
      l2: "agents needed through peak season",
      l3: "median time from question to answer",
      note: "Results from pilot stores · private beta",
    },

    pricing: {
      kicker: "Pricing",
      title: "Priced by\nsupport volume.",
      lead: "The same safety model on every plan. Prices in DKK per month — nothing sends automatically until you switch it on.",
      perMo: "kr / mo", popular: "Most popular", beta: "Beta price", bookDemo: "Book demo", custom: "Custom plan",
      plans: [
        { name: "Basic", price: "1.999", oldPrice: "4.999", note: "For small shops starting with drafts and auto replies.",
          feats: ["1,000 tickets / mo", "Everything included in every plan"] },
        { name: "Pro", price: "3.999", oldPrice: "9.999", note: "For shops in growth — the step between small and large.",
          feats: ["2,500 tickets / mo", "Everything included in every plan"] },
        { name: "Advanced", price: "5.999", oldPrice: "17.999", note: "For growing webshops with review learning and many markets.",
          feats: ["5,000 tickets / mo", "Everything included in every plan"] },
        { name: "Enterprise", price: "Custom plan", note: "For large organisations with high volume and special requirements.",
          feats: ["Priced on your volume", "Custom integrations by agreement"] },
      ],
      included: {
        title: "Everything is included in every plan",
        lead: "A complete helpdesk with AI built in. No extra fees. No add-ons. You only choose your volume.",
        feats: [
          "Full AI access — no extra fees",
          "Shared inbox with smart views & filters",
          "Edits orders, sends payment links, refunds & exchanges",
          "Unlimited users",
          "Auto-send or approve drafts — you decide",
          "Unlimited teams & markets",
          "Unlimited skills — build any automation you want",
          "AI-driven tagging & routing",
          "Spam filter — ads & noise sorted out",
          "Automatic translation across languages",
          "Macros, contacts & full conversation history",
          "Access to the campaign manager",
          "Live analytics & performance dashboard",
          "Multi-shop setup (several webshops in one account)",
          "Easy migration from Zendesk, Gorgias, Dixa & more",
          "Integrations for shop, ERP, shipping, returns & payment",
        ],
      },
    },

    roi: {
      kicker: "ROI calculator",
      title: "See what control\nis worth.",
      lead: "Same model we use in pilots: ~1,000 tickets per agent, your automation rate, and the plan that matches your volume. Indicative — the real number depends on your category mix.",
      setup: "Your current setup",
      teamLabel: "Support team size", teamSub: "≈ 1,000 tickets per agent / month",
      agent: "agent", agents: "agents",
      salaryLabel: "Salary per agent", autoLabel: "Tickets automated",
      softwareLabel: "Current software",
      withPlan: "With Sanddo", savingsLabel: "Your monthly savings", perYear: "/ year",
      currentRow: "Current software + team", sanddoRow: "Sanddo {plan} + team",
      automated: "tickets automated", redeploy: "redeploy {n}", sameTeam: "same team",
      cta: "Map this to your categories", contact: "Contact us",
    },

    proof: {
      quote: { pre: "We could choose ", hi: "exactly how much control", post: " we kept over which emails sent automatically." },
      name: "Camilla Nielsen", role: "Customer service lead · Nordic Flame",
    },

    demo: {
      kicker: "Book a demo",
      title: "The future of support,\navailable today.",
      lead: "We map your categories, current tools and volume — and show where Auto can safely turn on in your first week.",
      bullets: ["30-minute personal walkthrough", "A concrete automation map for week one", "No credit card — nothing sends until you enable it"],
      steps: ["Date & time", "Your details"],
      monthsLong: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
      weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
      chooseTime: "Choose a time · CET",
      continue: "Continue · {date} at {time}", selectTime: "Select a time to continue",
      emailLabel: "Work email", emailPh: "you@yourshop.com",
      volLabel: "Monthly ticket volume", volOpts: ["Under 1,000", "1,000–5,000", "5,000–20,000", "More than 20,000"],
      back: "Back", book: "Book demo", sending: "Sending…",
      errEmail: "Enter a valid work email.", errVol: "Choose your monthly ticket volume.",
      bookErr: "Couldn't send the booking right now. Please try again.",
      selected: "SELECTED · {date} · {time}",
      doneTitle: "Demo booked.", doneBody: "We'll use your ticket categories as the first automation map. Confirmation sent to {email}.",
      doneChip: "{date} · {time} CET", another: "Book another time",
    },

    footer: {
      tagline: "Safe support automation for e-commerce. Drafts grounded in real order data — sent automatically only where you've said yes.",
      cols: [
        ["Product", [["Drafting", "/detail?topic=drafts"], ["Category control", "/detail?topic=categories"], ["Pre-send checks", "/detail?topic=checks"], ["Integrations", "/en/integrations"]]],
        ["Sales", [["Pricing", "#pricing"], ["ROI", "#calculator"], ["Book demo", "#demo"]]],
        ["Legal", [["Privacy", "/en/privacy"], ["Terms", "/en/terms"], ["Cookies", "/en/cookies"]]],
      ],
      copyright: "© 2026 Sanddo. All rights reserved.",
      madeSafe: "Made safe by default · EU-hosted",
    },

    detail: {
      nav: { all: "All features", book: "Book demo" },
      howItWorks: "How it works",
      exploreMore: "Explore more",
      ctaTitle: "See it on your own inbox.",
      ctaBtn: "Book a demo",
      topics: {
        drafts: {
          kicker: "Drafting", shot: "ShotDraft",
          title: "Every reply, drafted from your real order data.",
          lead: "Sanddo doesn't guess. It opens the thread, finds the order behind it, and writes a reply grounded in what's actually true — tracking, delivery window, items and amounts.",
          points: [
            ["Reads the whole thread", "Customer history, earlier replies and the original question — so the answer fits the conversation, not just the last line."],
            ["Pulls live order data", "Order number, carrier, status and ETA come straight from Shopify and your tools at the moment the reply is written."],
            ["Writes in your voice", "Tone, sign-off and language match your brand — and the customer's language — automatically."],
          ],
          steps: ["A ticket arrives", "Sanddo matches it to an order", "It drafts a grounded reply", "The draft is scored and routed"],
        },
        categories: {
          kicker: "Control", shot: "ShotRules",
          title: "You decide what sends itself.",
          lead: "Automation is opt-in, one category at a time. Turn Auto on for the safe, repetitive questions and keep everything sensitive firmly in human hands.",
          points: [
            ["Category by category", "Order status, returns and product questions can run on their own. Refunds and complaints stay with your team."],
            ["Change it any time", "Flip a category between Auto and Human in one click — the change takes effect on the very next ticket."],
            ["Safe by default", "Nothing sends automatically until you explicitly switch it on. New categories start in Human mode."],
          ],
          steps: ["Sanddo classifies the ticket", "It checks your category rules", "Auto-sends only where allowed", "Everything else is drafted for review"],
        },
        checks: {
          kicker: "Safety", shot: "ShotChecks",
          title: "Every reply is checked before it sends.",
          lead: "Before anything leaves the building, each draft passes a set of automatic checks and earns a trust score. Below your threshold, it never sends on its own.",
          points: [
            ["A trust score per reply", "Every draft is scored on data match, language and risk. You set the bar it has to clear."],
            ["Hard guardrails", "Payment, legal and refund language block auto-send outright — regardless of how high the score is."],
            ["Voice and language", "Replies are checked against your brand tone and the customer's language before they go out."],
          ],
          steps: ["The draft is written", "Automatic checks run", "A trust score is calculated", "Sends only above your threshold"],
        },
        handoff: {
          kicker: "Human-in-the-loop", shot: "ShotHandoff",
          title: "When it's not sure, a person decides.",
          lead: "Sanddo is built to hand off cleanly. Anything uncertain, sensitive or below threshold lands in a human queue — with the draft and full context ready to go.",
          points: [
            ["Nothing slips through", "Low-confidence and sensitive tickets are held, never sent. The customer always reaches a person."],
            ["Ready for the agent", "The draft, the order data and the reason it was held are all attached — no digging required."],
            ["One click to finish", "Approve, edit or rewrite. It goes out, and Sanddo learns from the choice for next time."],
          ],
          steps: ["A ticket is held", "It enters the human queue", "An agent reviews the draft", "They approve or edit and send"],
        },
        integrations: {
          kicker: "Integrations", shot: "ShotStack",
          title: "Lives where you already work.",
          lead: "Sanddo plugs into the inbox and tools your team already uses. There's no new app to live in and no migration to plan.",
          points: [
            ["Your inbox, your helpdesk", "Gmail, Outlook, Zendesk and more — Sanddo works inside the tools you already have open."],
            ["Two-way Shopify sync", "Orders, fulfilment and returns flow both ways, in real time, so replies are always current."],
            ["Ten-minute setup", "Connect your accounts and Sanddo starts drafting the same day. No engineering project."],
          ],
          steps: ["Connect your inbox", "Connect Shopify", "Set your category rules", "Sanddo starts drafting"],
        },
      },
    },
  },
};

/* ---- language context ---- */
function detectLang() {
  try {
    const q = new URLSearchParams(location.search).get("lang");
    if (q === "da" || q === "en") { try { localStorage.setItem("sanddo_lang", q); } catch (e) {} return q; }
  } catch (e) {}
  try {
    const stored = localStorage.getItem("sanddo_lang");
    if (stored === "da" || stored === "en") return stored;
  } catch (e) {}
  const n = (navigator.language || navigator.userLanguage || "").toLowerCase();
  return n.startsWith("da") ? "da" : "en";
}

const LangCtx = createContext({ lang: "da", L: T.da, setLang: () => {} });

function LangProvider({ children }) {
  const [lang, setLangState] = useState(detectLang);
  const setLang = (l) => {
    if (l !== "da" && l !== "en") return;
    setLangState(l);
    try { localStorage.setItem("sanddo_lang", l); } catch (e) {}
    try { document.cookie = `sanddo_lang=${l};path=/;max-age=31536000;samesite=lax`; } catch (e) {}
  };
  useEffect(() => {
    document.documentElement.lang = lang;
    document.title = T[lang].meta.title;
  }, [lang]);
  return <LangCtx.Provider value={{ lang, L: T[lang], setLang }}>{children}</LangCtx.Provider>;
}

function useT() { return useContext(LangCtx); }

/* render a translation string with "\n" → <br/> */
function Lines({ text }) {
  return String(text).split("\n").map((p, i) => (
    <React.Fragment key={i}>{i > 0 ? <br/> : null}{p}</React.Fragment>
  ));
}

/* small {token} interpolation */
function fill(str, vars) {
  return String(str).replace(/\{(\w+)\}/g, (_, k) => (vars && k in vars ? vars[k] : `{${k}}`));
}

Object.assign(window, { T, LangCtx, LangProvider, useT, Lines, fill });
