// Bilingual copy for the Permit Intelligence homepage.
// nl is primary, en is the toggle.

const COPY = {
  nl: {
    nav: {
      product: "Product",
      municipalities: "Gemeenten",
      pricing: "Prijzen",
      about: "Over ons",
      tryTool: "Probeer de tool",
      demo: "Plan een demo",
    },
    hero: {
      eyebrow: "Omgevingswet \u00b7 Participatieverplichting \u00b7 BOPA",
      // 4 headline variants — switched via Tweaks
      headlines: [
        {
          line1: "Je vergunning hoeft geen",
          line2: "26 weken te duren.",
          sub: "De Omgevingswet veranderde Nederlands vergunningstelsel. Participatie\u00advereisten zijn verwarrend. Elke gemeente heeft andere regels. Je verliest weken aan onderzoek en afwijzingen.",
        },
        {
          line1: "342 gemeenten.",
          line2: "35+ participatieregels.",
          sub: "\u00c9\u00e9n referentie. We hebben elk gepubliceerd participatiebeleid in Nederland geanalyseerd \u2014 zodat je v\u00f3\u00f3r indiening weet wat je gemeente eist.",
        },
        {
          line1: "Participatieverslag",
          line2: "afgewezen? Niet meer.",
          sub: "Onvolledige participatiedocumentatie is de meest voorkomende reden voor BOPA-afwijzing. We laten je zien wat jouw gemeente echt vereist \u2014 met bron, CVDR-nummer en datum.",
        },
        {
          line1: "Omgevingswet-compliance,",
          line2: "zonder de gokwerk.",
          sub: "Een professionele referentie voor ontwikkelaars. Officieel beleid uit lokaleregelgeving.overheid.nl, gestructureerd per gemeente, gevalideerd in praktijk.",
        },
      ],
      ctaPrimary: "Probeer de tool",
      ctaSecondary: "Bekijk hoe het werkt",
      widgetTitle: "Live check",
      widgetSub: "Typ een gemeente en projecttype",
      widgetMuni: "Gemeente",
      widgetType: "Projecttype",
      widgetUnits: "Aantal woningen",
      widgetCheck: "Controleer vereisten",
      widgetMuniPlaceholder: "Almere",
      widgetNoMatch: "Geen match gevonden in onze database van 41 gemeenten.",
      widgetNoMatchSub: "Probeer: Almere, Amsterdam, Utrecht, Rotterdam, Den Haag, Eindhoven\u2026",
      statusLabels: {
        mandatory: "Verplicht",
        discretionary: "Beoordelingsruimte",
        voluntary: "Vrijwillig",
        unprofiled: "Niet geprofileerd",
      },
      footLive: "Tool live in productie",
      footMunicipalities: "41 gemeenten geprofileerd",
      footSource: "Bron: lokaleregelgeving.overheid.nl",
      types: [
        { id: "residential", label: "Woningbouw" },
        { id: "commercial", label: "Commercieel" },
        { id: "institutional", label: "Maatschappelijk" },
        { id: "infrastructure", label: "Infrastructuur" },
      ],
    },
    stats: {
      title: "De staat van de Omgevingswet",
      subtitle: "Wat we vandaag weten, op basis van openbaar gepubliceerd beleid.",
      asOf: "Per april 2026 \u00b7 bron: lokaleregelgeving.overheid.nl + parolo.nl",
      viewDb: "Volledige database bekijken \u2192",
      items: [
        { value: "342", label: "Nederlandse gemeenten" },
        { value: "307", label: "met gepubliceerd participatiebeleid" },
        { value: "35+", label: "verschillende beleidsbenaderingen" },
        { value: "41", label: "volledig geprofileerd in onze database" },
      ],
      legend: [
        { color: "green", label: "Beleid gepubliceerd" },
        { color: "amber", label: "Beoordelingsruimte" },
        { color: "gray", label: "Geen gepubliceerd beleid" },
      ],
    },
    problem: {
      eyebrow: "Het probleem",
      title: "De vergunning als black box",
      paragraphs: [
        "Je dient een aanvraag in. Dan wacht je. Je weet niet of je 2 of 16 weken in de gemeentelijke beoordeling zit. Je weet niet wat de aanvraag tegenhoudt. Je weet niet wat ontbreekt \u2014 totdat je een afwijzingsbrief krijgt.",
        "Daar sterven projecten. Niet door slechte plannen. Door onvolledige participatiedocumentatie die niet voldoet aan ongedocumenteerde gemeentelijke verwachtingen.",
      ],
      breakdown: {
        title: "Wat ontwikkelaars vandaag betalen",
        costTag: "huidige situatie",
        totalLossLabel: "Totaal verlies per afgewezen project",
        totalLossValue: "\u20ac60\u201380k",
        items: [
          { label: "Onderzoek per gemeente", cost: "2\u20133 weken", note: "telefoon, e-mail, beleidsstukken doornemen" },
          { label: "Externe consultant", cost: "\u20ac2\u20135k", note: "per project, per gemeente" },
          { label: "Vertraging na afwijzing", cost: "6\u20138 weken", note: "herziening + heroverweging" },
          { label: "Financieringskosten per week", cost: "\u20ac10k", note: "bij gemiddeld ontwikkel\u00adproject" },
        ],
      },
    },
    how: {
      eyebrow: "Hoe het werkt",
      title: "Drie stappen, geen telefoongesprekken.",
      steps: [
        {
          n: "01",
          title: "Lokaliseer",
          body: "Voer je adres of gemeente in. Onze koppeling met PDOK Locatieserver identificeert het juiste bestuursorgaan en bestemmingsplan.",
          tag: "PDOK \u00b7 BAG \u00b7 Gemeente-ID",
        },
        {
          n: "02",
          title: "Classificeer",
          body: "Geef projecttype en omvang op (woningen, m\u00b2, hoogte). Het systeem matcht je project tegen het toepasselijke participatiekader van de gemeente.",
          tag: "BOPA-activiteit \u00b7 drempelwaarden",
        },
        {
          n: "03",
          title: "Documenteer",
          body: "Krijg de exacte documentatie\u00advereisten, in gemeente-conform formaat, met directe link naar het bron\u00adbeleid (CVDR-nummer, publicatie\u00addatum).",
          tag: "Participatieverslag \u00b7 CVDR-bron",
        },
      ],
      try: "Probeer met je eigen project",
    },
    proof: {
      eyebrow: "Validatie",
      title: "Gebouwd voor ontwikkelaars. Gevalideerd door een ontwikkelaar.",
      quote: "Getest op mijn lopende project in Almere. De participatieregels klopten precies. Bespaarde me uren bellen met de gemeente.",
      attribution: "Actieve vastgoedontwikkelaar, Almere",
      attributionNote: "Naam op verzoek niet vermeld",
      sources: {
        title: "Elke regel is bron\u00adgeciteerd",
        body: "Gemeentelijk beleid wordt rechtstreeks ge\u00ebxtraheerd uit officie\u00eble overheidsbronnen. Elke regel in onze database verwijst naar een CVDR-nummer en publicatiedatum. Je kunt elk antwoord verifi\u00ebren.",
        list: ["lokaleregelgeving.overheid.nl", "Officie\u00eble gemeente\u00adwebsites", "Gemeenteblad \u00b7 gemeente.overheid.nl", "Parolo beleidsindex"],
      },
    },
    pricing: {
      eyebrow: "Prijzen",
      title: "Drie paden. Eerlijke prijs.",
      subtitle: "Begin gratis met de tool. Koop losse rapporten als je ze nodig hebt, of neem Pro voor onbeperkt.",
      tiers: [
        {
          name: "Free",
          price: "\u20ac0",
          period: "altijd gratis",
          description: "Lookup, samenvatting en kaart \u2014 zonder account, zonder creditcard.",
          features: [
            "Gemeente\u00adzoekopdrachten",
            "Beleidsoverzicht per gemeente",
            "Bron\u00adcitaties (CVDR + datum)",
            "Interactieve compliance\u00adkaart",
          ],
          cta: "Probeer nu",
          type: "free",
          accent: false,
        },
        {
          name: "Per rapport",
          price: "\u20ac29",
          period: "1 rapport \u00b7 \u20ac99 voor 5 \u00b7 \u20ac249 voor 15",
          recommended: "populair",
          description: "Volledig participatieverslag, klaar om in te dienen. Geen abonnement.",
          features: [
            "Volledig DOCX-rapport per gemeente",
            "Alle vereiste secties ingevuld",
            "Bundelvoordeel: 5 rapporten \u20ac99",
            "Bulk: 15 rapporten \u20ac249",
            "Credits vervallen niet",
          ],
          cta: "Koop credits",
          type: "credits",
          accent: true,
        },
        {
          name: "Pro",
          price: "\u20ac79",
          period: "per maand",
          description: "Onbeperkt rapporten + dashboard om aanvragen te volgen.",
          features: [
            "Onbeperkte rapporten genereren",
            "Aanvraag-dashboard met mijlpalen",
            "Beleidsupdates per e-mail",
            "Prioriteitssupport \u2014 binnen 24u",
            "Maandelijks opzegbaar",
          ],
          cta: "Start Pro",
          type: "pro",
          accent: false,
        },
      ],
    },
    process: {
      eyebrow: "Hoe een vergunning werkt",
      title: "5 fasen. De pijn zit in fasen 2\u20134.",
      sub: "Vastgesteld door de overheid zelf. De doorlooptijd staat vast \u2014 maar wat er tussenin gebeurt, niet.",
      stages: [
        { n: "01", label: "Aankondiging", body: "Gemeente publiceert de aanvraag op overheid.nl. Openbaar voor omwonenden en bezwaarmakers.", timing: "Dagen", isBlackBox: false },
        { n: "02", label: "Volledigheidscheck", body: "Gemeente controleert of alle vereiste documenten aanwezig zijn. Onvolledige aanvraag = herstelbrief of weigering. Participatiedocumentatie is hier kritiek.", timing: "Variabel", isBlackBox: true },
        { n: "03", label: "Regeltoetsing", body: "Ambtenaren beoordelen of plannen voldoen aan geldende regelgeving. Bij non-compliance: onderhandeling met aanvrager.", timing: "Variabel", isBlackBox: true },
        { n: "04", label: "Proceduretrack", body: "Korte procedure (8 weken) of uitgebreide procedure (tot 26+ weken). Uitgebreid = conceptbesluit + 6 weken bezwaartermijn voor omwonenden.", timing: "8\u201326+ weken", isBlackBox: true },
        { n: "05", label: "Besluit", body: "Besluit gepubliceerd op overheid.nl. Aanvrager en omwonenden kunnen bezwaar maken bij de gemeente.", timing: "\u2014", isBlackBox: false },
      ],
      blackBoxLabel: "De black box \u2014 geen publieke API, geen directe status",
      govStat: "9.000+ BOPA-aanvragen ingediend sinds januari 2024 \u00b7 Bron: \u2018Werk aan de winkel\u2019 reflectierapport, jan. 2026",
    },
    roadmap: {
      eyebrow: "Product roadmap",
      title: "Alle drie lagen zijn live.",
      sub: "We bouwen elke laag die ontwikkelaars missen \u2014 van pre-indiening tot definitief besluit.",
      layers: [
        {
          n: "03",
          label: "Participatiedocumentatie",
          status: "live",
          statusLabel: "Live nu",
          body: "41 gemeenten geprofileerd. Toepasselijke regels, documentatie-templates en CVDR-citatie \u2014 direct beschikbaar. Gevalideerd op een actief project in Almere.",
        },
        {
          n: "02",
          label: "Tijdlijnpredicte per gemeente",
          status: "live",
          statusLabel: "Live nu",
          body: "Gemeente-specifieke doorlooptijden op basis van historische vergunningsdata. Plan financiering en aannemers met realistische schattingen in plaats van \u20188\u201326 weken\u2019.",
        },
        {
          n: "01",
          label: "Vergunnings-tracking & dashboard",
          status: "live",
          statusLabel: "Live nu",
          body: "Gecentraliseerd overzicht van alle actieve aanvragen. Statusmeldingen per mijlpaal, real-time signalering per project \u2014 geen handmatig bellen meer.",
        },
      ],
    },
    faq: {
      eyebrow: "Veelgestelde vragen",
      title: "Wat ontwikkelaars meestal vragen.",
      items: [
        {
          q: "Wat is de bron van de gemeentelijke beleidsinformatie?",
          a: "Al het beleid wordt ge\u00ebxtraheerd uit officie\u00eble bronnen: lokaleregelgeving.overheid.nl en officie\u00eble gemeente\u00adwebsites. Elke gemeenteprofiel toont CVDR-nummer en publicatiedatum.",
        },
        {
          q: "Hoe vaak wordt de database bijgewerkt?",
          a: "Synchronisatie vindt plaats wanneer gemeenten beleid wijzigen. Gebruikers blijven zelf verantwoordelijk om actuele vereisten direct bij hun gemeente te bevestigen v\u00f3\u00f3r indiening.",
        },
        {
          q: "Wat als mijn gemeente nog niet geprofileerd is?",
          a: "Momenteel zijn 41 gemeenten volledig in kaart gebracht. Voor andere gemeenten is gerichte consultatie beschikbaar \u2014 we doen het beleidsonderzoek voor je.",
        },
        {
          q: "Vervangt dit een juridisch adviseur?",
          a: "Nee. Dit is een referentietool. Voor complexe projecten of juridische vragen blijft consultatie met een gekwalificeerd juridisch adviseur aanbevolen.",
        },
        {
          q: "Is mijn projectinformatie vertrouwelijk?",
          a: "Ja. Project\u00adgegevens uit consultatie\u00adopdrachten worden niet gedeeld met derden. Data wordt bewaard volgens Nederlandse privacywetgeving.",
        },
      ],
      cta: "Volledige FAQ \u2014 20 vragen",
    },
    tool: {
      eyebrow: "Referentietool",
      title: "Bekijk de vereisten voor jouw gemeente.",
      sub: "Selecteer een gemeente en projecttype. Krijg direct toepasselijke regels, documentatie-vereisten en bron-citatie.",
      breadcrumbLabel: "Referentietool",
      queryTitle: "Zoekopdracht",
      dbCount: "41 gemeenten beschikbaar in database",
      muniLabel: "Gemeente",
      muniPlaceholder: "Zoek gemeente\u2026",
      noMatch: "Geen match",
      typeLabel: "Projecttype",
      countLabel: "Aantal",
      disclaimer: "Resultaat is gebaseerd op gepubliceerd beleid op querydatum. Bevestig actuele vereisten direct bij de gemeente v\u00f3\u00f3r indiening.",
      policyHeader: "Beleidsbenadering",
      triggerLabel: "Trigger",
      timelineLabel: "Doorlooptijd",
      contactLabel: "Contact",
      docsHeader: "Vereiste documentatie",
      sourcesHeader: "Bronnen",
      cvdrLabel: "CVDR-nummer",
      pubLabel: "Publicatie",
      sourceLabel: "Origineel",
      generateHeader: "Documentatie genereren",
      generateBodyPre: "Genereer een participatieverslag-template aangepast aan de vereisten van",
      generateBodyPost: " en jouw projectkenmerken. Klaar om in te vullen \u2014 bevat alle secties die de gemeente vereist.",
      generateBtn: "Genereer \u0026 download template",
      residentsSuffix: "inwoners",
      updatedPrefix: "bijgewerkt",
    },
    dashboard: {
      eyebrow: "Aanvraagbeheer",
      title: "Al je vergunningsaanvragen op één plek.",
      sub: "Volg elke aanvraag van indiening tot besluit. Statusmeldingen per mijlpaal, geen handmatig bellen meer.",
      breadcrumbLabel: "Dashboard",
      statsTotal: "Totaal",
      statsActive: "Actief",
      statsDecisions: "Besluiten",
      statsAvgTimeline: "Gem. doorlooptijd",
      statsWeeksSuffix: "weken",
      addBtn: "Aanvraag toevoegen",
      addTitle: "Nieuwe aanvraag",
      fieldProjectName: "Projectnaam",
      fieldMunicipality: "Gemeente",
      fieldAddress: "Adres",
      fieldProjectType: "Projecttype",
      fieldCaseNumber: "Zaaknummer",
      fieldCaseNumberPlaceholder: "bijv. Z-2024-001234",
      fieldTimeline: "Verwachte doorlooptijd (weken)",
      fieldUnits: "Aantal woningseenheden",
      fieldNotes: "Notities",
      submitBtn: "Opslaan",
      cancelBtn: "Annuleren",
      deleteBtn: "Verwijderen",
      confirmDelete: "Weet je zeker dat je deze aanvraag wilt verwijderen?",
      unauthTitle: "Log in om aanvragen te beheren",
      unauthSub: "Maak een gratis account aan om al je vergunningsaanvragen per mijlpaal bij te houden.",
      loginBtn: "Inloggen",
      registerBtn: "Account aanmaken",
      milestoneStages: [
        { key: "submitted",          label: "Ingediend" },
        { key: "volledigheidscheck", label: "Volledigheidscheck" },
        { key: "regeltoetsing",      label: "Regeltoetsing" },
        { key: "proceduretrack",     label: "Proceduretrack" },
        { key: "besluit",            label: "Besluit" },
      ],
      statusLabels: {
        draft: "Concept",
        submitted: "Ingediend",
        volledigheidscheck: "Volledigheidscheck",
        regeltoetsing: "Regeltoetsing",
        proceduretrack: "In procedure",
        besluit: "Besluit ontvangen",
      },
      emptyTitle: "Nog geen aanvragen",
      emptySub: "Voeg je eerste vergunningsaanvraag toe om bij te houden.",
      daysLabel: "dagen geleden",
      caseTrackerLabel: "Bekijk op officielebekendmakingen.nl",
      notesPlaceholder: "Voeg notities toe…",
      saveNotes: "Notities opslaan",
      // i18n additions (May 2026)
      today: "vandaag",
      oneDay: "1 dag",
      caseNumberLabel: "Zaaknummer",
      caseNumberInline: "Zaaknummer:",
      locationLabel: "Locatie",
      milestonesLabel: "Mijlpalen",
      notesLabel: "Notities",
      emailLabel: "E-mail",
      passwordLabel: "Wachtwoord",
      milestoneCompleted: "Voltooid",
      milestoneMarkComplete: "Markeer als voltooid",
      authBusyLogin: "Bezig...",
      authBusyRegister: "Account aanmaken...",
    },
    auth: {
      loginTitle: "Inloggen",
      registerTitle: "Account aanmaken",
      eyebrow: "GRATIS ACCOUNT",
      loginIntro: "Log in om uw participatieverslag te downloaden.",
      registerIntro: "Maak gratis een account aan om uw rapport te downloaden.",
      emailPlaceholder: "E-mailadres",
      passwordPlaceholder: "Wachtwoord",
      busy: "Bezig...",
      loginBtn: "Inloggen",
      registerBtn: "Account aanmaken",
      noAccount: "Nog geen account?",
      hasAccount: "Al een account?",
      registerLink: "Registreren",
      loginLink: "Inloggen",
      genericError: "Er is iets misgegaan. Probeer opnieuw.",
      networkError: "Geen verbinding met de server. Probeer opnieuw.",
    },
    footer: {
      tagline: "Een professionele referentie voor Omgevingswet-compliance.",
      cols: [
        { title: "Product", links: [
          { label: "Live tool", href: "tool.html" },
          { label: "Gemeentendatabase", href: "gemeenten.html" },
          { label: "Documentatietemplates", href: "#" },
          { label: "API (binnenkort)", href: "#" }
        ] },
        { title: "Bedrijf", links: [
          { label: "Over ons", href: "#" },
          { label: "Validatie", href: "validatie.html" },
          { label: "Contact", href: "https://github.com/Luminousz0", target: "_blank" },
          { label: "Pers", href: "#" }
        ] },
        { title: "Bronnen", links: [
          { label: "lokaleregelgeving.overheid.nl", href: "https://lokaleregelgeving.overheid.nl", target: "_blank" },
          { label: "parolo.nl", href: "https://parolo.nl", target: "_blank" },
          { label: "Omgevingsloket", href: "https://omgevingsloket.nl", target: "_blank" },
          { label: "Wettekst Omgevingswet", href: "https://iplo.nl/regelgeving/omgevingswet/", target: "_blank" }
        ] },
        { title: "Juridisch", links: [
          { label: "Privacybeleid", href: "#" },
          { label: "Voorwaarden", href: "#" },
          { label: "Cookies", href: "#" },
          { label: "Disclaimer", href: "#" }
        ] },
      ],
      legal: "Permit Intelligence B.V. \u00b7 KvK 00000000 \u00b7 Almere, Nederland",
      disclaimer: "Deze referentie is informatief. Gebruikers blijven verantwoordelijk voor het bevestigen van actuele vereisten bij hun gemeente.",
    },
  },
  en: {
    nav: {
      product: "Product",
      municipalities: "Municipalities",
      pricing: "Pricing",
      about: "About",
      tryTool: "Try the tool",
      demo: "Schedule a demo",
    },
    hero: {
      eyebrow: "Omgevingswet \u00b7 Participation requirement \u00b7 BOPA",
      headlines: [
        {
          line1: "Your permit doesn\u2019t need to",
          line2: "take 26 weeks.",
          sub: "The Omgevingswet changed Dutch permitting. Participation requirements are confusing. Every municipality has different rules. You\u2019re losing weeks to research and rejection.",
        },
        {
          line1: "342 municipalities.",
          line2: "35+ participation rules.",
          sub: "One reference. We\u2019ve analysed every published participation policy in the Netherlands \u2014 so you know what your municipality requires before you submit.",
        },
        {
          line1: "Participation report",
          line2: "rejected? Not anymore.",
          sub: "Incomplete participation documentation is the most common cause of BOPA rejection. We show you exactly what your municipality needs \u2014 with source, CVDR number, and date.",
        },
        {
          line1: "Omgevingswet compliance,",
          line2: "without the guesswork.",
          sub: "A professional reference for developers. Official policy from lokaleregelgeving.overheid.nl, structured per municipality, validated in the field.",
        },
      ],
      ctaPrimary: "Try the live tool",
      ctaSecondary: "See how it works",
      widgetTitle: "Live check",
      widgetSub: "Type a municipality and project type",
      widgetMuni: "Municipality",
      widgetType: "Project type",
      widgetUnits: "Number of units",
      widgetCheck: "Check requirements",
      widgetMuniPlaceholder: "Almere",
      widgetNoMatch: "No match found in our database of 41 municipalities.",
      widgetNoMatchSub: "Try: Almere, Amsterdam, Utrecht, Rotterdam, Den Haag, Eindhoven\u2026",
      statusLabels: {
        mandatory: "Mandatory",
        discretionary: "Discretionary",
        voluntary: "Voluntary",
        unprofiled: "Not profiled",
      },
      footLive: "Tool live in production",
      footMunicipalities: "41 municipalities profiled",
      footSource: "Source: lokaleregelgeving.overheid.nl",
      types: [
        { id: "residential", label: "Residential" },
        { id: "commercial", label: "Commercial" },
        { id: "institutional", label: "Institutional" },
        { id: "infrastructure", label: "Infrastructure" },
      ],
    },
    stats: {
      title: "The state of the Omgevingswet",
      subtitle: "What we know today, based on publicly published policy.",
      asOf: "As of April 2026 \u00b7 source: lokaleregelgeving.overheid.nl + parolo.nl",
      viewDb: "View full database \u2192",
      items: [
        { value: "342", label: "Dutch municipalities" },
        { value: "307", label: "with published participation policy" },
        { value: "35+", label: "distinct policy approaches" },
        { value: "41", label: "fully profiled in our database" },
      ],
      legend: [
        { color: "green", label: "Policy published" },
        { color: "amber", label: "Discretionary" },
        { color: "gray", label: "No published policy" },
      ],
    },
    problem: {
      eyebrow: "The problem",
      title: "The permit as a black box",
      paragraphs: [
        "You submit an application. Then you wait. You don\u2019t know if it\u2019s been 2 or 16 weeks in municipal review. You don\u2019t know what\u2019s holding it up. You don\u2019t know what\u2019s missing \u2014 until you get a rejection letter.",
        "That\u2019s where projects die. Not from bad plans. From incomplete participation documentation that fails to meet undocumented municipal expectations.",
      ],
      breakdown: {
        title: "What developers pay today",
        costTag: "current situation",
        totalLossLabel: "Total loss per rejected project",
        totalLossValue: "\u20ac60\u201380k",
        items: [
          { label: "Research per municipality", cost: "2\u20133 weeks", note: "phone, email, reading policy" },
          { label: "External consultant", cost: "\u20ac2\u20135k", note: "per project, per municipality" },
          { label: "Delay after rejection", cost: "6\u20138 weeks", note: "revision + reconsideration" },
          { label: "Financing cost per week", cost: "\u20ac10k", note: "on average development project" },
        ],
      },
    },
    how: {
      eyebrow: "How it works",
      title: "Three steps, no phone calls.",
      steps: [
        {
          n: "01",
          title: "Locate",
          body: "Enter your address or municipality. Our PDOK Locatieserver integration identifies the correct authority and zoning plan.",
          tag: "PDOK \u00b7 BAG \u00b7 Municipality ID",
        },
        {
          n: "02",
          title: "Classify",
          body: "Provide project type and scale (units, m\u00b2, height). The system matches your project against the applicable participation framework.",
          tag: "BOPA activity \u00b7 thresholds",
        },
        {
          n: "03",
          title: "Document",
          body: "Get exact documentation requirements, in municipality-compliant format, with direct link to source policy (CVDR number, publication date).",
          tag: "Participation report \u00b7 CVDR source",
        },
      ],
      try: "Try with your own project",
    },
    proof: {
      eyebrow: "Validation",
      title: "Built for developers. Validated by a developer.",
      quote: "Tested on my actual project in Almere. The participation rules were exactly right. Saved me hours of calling the municipality.",
      attribution: "Active real estate developer, Almere",
      attributionNote: "Name withheld at request",
      sources: {
        title: "Every rule is source-cited",
        body: "Municipal policy is extracted directly from official government sources. Every rule in our database links to a CVDR number and publication date. You can verify any answer.",
        list: ["lokaleregelgeving.overheid.nl", "Official municipal websites", "Gemeenteblad \u00b7 gemeente.overheid.nl", "Parolo policy index"],
      },
    },
    pricing: {
      eyebrow: "Pricing",
      title: "Three paths. Fair pricing.",
      subtitle: "Start free with the tool. Buy individual reports when you need them, or go Pro for unlimited.",
      tiers: [
        {
          name: "Free",
          price: "\u20ac0",
          period: "free forever",
          description: "Lookup, summary, and map \u2014 no account, no credit card.",
          features: [
            "Municipality lookups",
            "Per-municipality policy summary",
            "Source citations (CVDR + date)",
            "Interactive compliance map",
          ],
          cta: "Try now",
          type: "free",
          accent: false,
        },
        {
          name: "Per-report",
          price: "\u20ac29",
          period: "1 report \u00b7 \u20ac99 for 5 \u00b7 \u20ac249 for 15",
          recommended: "popular",
          description: "Complete participation report, ready to submit. No subscription.",
          features: [
            "Full DOCX report per municipality",
            "All required sections pre-filled",
            "Bundle deal: 5 reports \u20ac99",
            "Bulk: 15 reports \u20ac249",
            "Credits never expire",
          ],
          cta: "Buy credits",
          type: "credits",
          accent: true,
        },
        {
          name: "Pro",
          price: "\u20ac79",
          period: "per month",
          description: "Unlimited reports + dashboard to track applications.",
          features: [
            "Unlimited report generation",
            "Application dashboard with milestones",
            "Policy updates by email",
            "Priority support \u2014 within 24h",
            "Cancel monthly",
          ],
          cta: "Start Pro",
          type: "pro",
          accent: false,
        },
      ],
    },
    process: {
      eyebrow: "How permitting works",
      title: "5 stages. The pain lives in stages 2\u20134.",
      sub: "Documented by the government itself. The timeline is fixed \u2014 but what happens in between is not.",
      stages: [
        { n: "01", label: "Announcement", body: "Municipality publishes the application on overheid.nl. Public for neighbours and objectors.", timing: "Days", isBlackBox: false },
        { n: "02", label: "Completeness check", body: "Municipality checks all required documents are present. Incomplete application = correction letter or rejection. Participation documentation is critical here.", timing: "Variable", isBlackBox: true },
        { n: "03", label: "Rule compliance", body: "Officials assess whether plans meet applicable regulations. Non-compliance triggers negotiation with applicant.", timing: "Variable", isBlackBox: true },
        { n: "04", label: "Procedure track", body: "Short procedure (8 weeks) or broad procedure (up to 26+ weeks). Broad = draft decision published + 6-week objection window.", timing: "8\u201326+ weeks", isBlackBox: true },
        { n: "05", label: "Decision", body: "Decision published on overheid.nl. Applicant and neighbours can appeal to the municipality.", timing: "\u2014", isBlackBox: false },
      ],
      blackBoxLabel: "The black box \u2014 no public API, no direct status",
      govStat: "9,000+ BOPA applications filed since January 2024 \u00b7 Source: \u2018Werk aan de winkel\u2019 government review, Jan 2026",
    },
    roadmap: {
      eyebrow: "Product roadmap",
      title: "All three layers are live.",
      sub: "We\u2019re building every layer developers are missing \u2014 from pre-submission to final decision.",
      layers: [
        {
          n: "03",
          label: "Participation documentation",
          status: "live",
          statusLabel: "Live now",
          body: "41 municipalities profiled. Applicable rules, documentation templates, CVDR citation \u2014 instantly available. Validated on an active project in Almere.",
        },
        {
          n: "02",
          label: "Timeline prediction per municipality",
          status: "live",
          statusLabel: "Live now",
          body: "Municipality-specific processing times based on historical permit data. Plan financing and contractors with real estimates instead of \u20188\u201326 weeks\u2019.",
        },
        {
          n: "01",
          label: "Application tracking & dashboard",
          status: "live",
          statusLabel: "Live now",
          body: "Centralised view of all active permit applications. Status alerts per milestone, real-time signalling per project \u2014 no more manual calling.",
        },
      ],
    },
    faq: {
      eyebrow: "Frequently asked",
      title: "What developers usually ask.",
      items: [
        {
          q: "What is the source of municipal policy data?",
          a: "All policy is extracted from official sources: lokaleregelgeving.overheid.nl and official municipal websites. Each profile cites CVDR number and publication date.",
        },
        {
          q: "How often is the database updated?",
          a: "Sync happens whenever municipalities publish changes. Users remain responsible for confirming current requirements directly with their municipality before submission.",
        },
        {
          q: "What if my municipality isn\u2019t profiled?",
          a: "41 municipalities are fully profiled today. For others, targeted consultancy is available \u2014 we do the policy research for you.",
        },
        {
          q: "Does this replace legal counsel?",
          a: "No. This is a reference tool. For complex projects or legal questions, consultation with qualified counsel is recommended.",
        },
        {
          q: "Is my project information confidential?",
          a: "Yes. Project information from consultancy engagements is not shared with third parties. Data is retained according to Dutch privacy law.",
        },
      ],
      cta: "Full FAQ \u2014 20 questions",
    },
    tool: {
      eyebrow: "Reference tool",
      title: "See requirements for your municipality.",
      sub: "Select a municipality and project type. Get applicable rules, documentation requirements, and source citations \u2014 instantly.",
      breadcrumbLabel: "Reference tool",
      queryTitle: "Search",
      dbCount: "41 municipalities available in database",
      muniLabel: "Municipality",
      muniPlaceholder: "Search municipality\u2026",
      noMatch: "No match",
      typeLabel: "Project type",
      countLabel: "Units",
      disclaimer: "Results are based on published policy at the query date. Confirm current requirements with the municipality before submission.",
      policyHeader: "Policy approach",
      triggerLabel: "Trigger",
      timelineLabel: "Processing time",
      contactLabel: "Contact",
      docsHeader: "Required documentation",
      sourcesHeader: "Sources",
      cvdrLabel: "CVDR number",
      pubLabel: "Publication",
      sourceLabel: "Source",
      generateHeader: "Generate documentation",
      generateBodyPre: "Generate a participation report template tailored to",
      generateBodyPost: "\u2019s requirements and your project. Ready to complete \u2014 includes all sections required by the municipality.",
      generateBtn: "Generate \u0026 download template",
      residentsSuffix: "residents",
      updatedPrefix: "updated",
    },
    dashboard: {
      eyebrow: "Application management",
      title: "All your permit applications in one place.",
      sub: "Track every application from submission to decision. Status alerts per milestone, no more manual calling.",
      breadcrumbLabel: "Dashboard",
      statsTotal: "Total",
      statsActive: "Active",
      statsDecisions: "Decisions",
      statsAvgTimeline: "Avg. timeline",
      statsWeeksSuffix: "weeks",
      addBtn: "Add application",
      addTitle: "New application",
      fieldProjectName: "Project name",
      fieldMunicipality: "Municipality",
      fieldAddress: "Address",
      fieldProjectType: "Project type",
      fieldCaseNumber: "Case number",
      fieldCaseNumberPlaceholder: "e.g. Z-2024-001234",
      fieldTimeline: "Expected processing time (weeks)",
      fieldUnits: "Number of housing units",
      fieldNotes: "Notes",
      submitBtn: "Save",
      cancelBtn: "Cancel",
      deleteBtn: "Delete",
      confirmDelete: "Are you sure you want to delete this application?",
      unauthTitle: "Log in to manage applications",
      unauthSub: "Create a free account to track all your permit applications by milestone.",
      loginBtn: "Log in",
      registerBtn: "Create account",
      milestoneStages: [
        { key: "submitted",          label: "Submitted" },
        { key: "volledigheidscheck", label: "Completeness check" },
        { key: "regeltoetsing",      label: "Rule assessment" },
        { key: "proceduretrack",     label: "Procedure track" },
        { key: "besluit",            label: "Decision" },
      ],
      statusLabels: {
        draft: "Draft",
        submitted: "Submitted",
        volledigheidscheck: "Completeness check",
        regeltoetsing: "Rule assessment",
        proceduretrack: "In procedure",
        besluit: "Decision received",
      },
      emptyTitle: "No applications yet",
      emptySub: "Add your first permit application to get started.",
      daysLabel: "days ago",
      caseTrackerLabel: "View on officielebekendmakingen.nl",
      notesPlaceholder: "Add notes…",
      saveNotes: "Save notes",
      // i18n additions (May 2026)
      today: "today",
      oneDay: "1 day",
      caseNumberLabel: "Case number",
      caseNumberInline: "Case number:",
      locationLabel: "Location",
      milestonesLabel: "Milestones",
      notesLabel: "Notes",
      emailLabel: "Email",
      passwordLabel: "Password",
      milestoneCompleted: "Completed",
      milestoneMarkComplete: "Mark as complete",
      authBusyLogin: "Working...",
      authBusyRegister: "Creating account...",
    },
    auth: {
      loginTitle: "Log in",
      registerTitle: "Create account",
      eyebrow: "FREE ACCOUNT",
      loginIntro: "Log in to download your participation report.",
      registerIntro: "Create a free account to download your report.",
      emailPlaceholder: "Email address",
      passwordPlaceholder: "Password",
      busy: "Working...",
      loginBtn: "Log in",
      registerBtn: "Create account",
      noAccount: "No account yet?",
      hasAccount: "Already have an account?",
      registerLink: "Register",
      loginLink: "Log in",
      genericError: "Something went wrong. Please try again.",
      networkError: "Cannot reach the server. Please try again.",
    },
    footer: {
      tagline: "A professional reference for Omgevingswet compliance.",
      cols: [
        { title: "Product", links: [
          { label: "Live tool", href: "tool.html" },
          { label: "Municipality database", href: "gemeenten.html" },
          { label: "Documentation templates", href: "#" },
          { label: "API (soon)", href: "#" }
        ] },
        { title: "Company", links: [
          { label: "About", href: "#" },
          { label: "Validation", href: "validatie.html" },
          { label: "Contact", href: "https://github.com/Luminousz0", target: "_blank" },
          { label: "Press", href: "#" }
        ] },
        { title: "Sources", links: [
          { label: "lokaleregelgeving.overheid.nl", href: "https://lokaleregelgeving.overheid.nl", target: "_blank" },
          { label: "parolo.nl", href: "https://parolo.nl", target: "_blank" },
          { label: "Omgevingsloket", href: "https://omgevingsloket.nl", target: "_blank" },
          { label: "Omgevingswet text", href: "https://iplo.nl/regelgeving/omgevingswet/", target: "_blank" }
        ] },
        { title: "Legal", links: [
          { label: "Privacy policy", href: "#" },
          { label: "Terms", href: "#" },
          { label: "Cookies", href: "#" },
          { label: "Disclaimer", href: "#" }
        ] },
      ],
      legal: "Permit Intelligence B.V. \u00b7 KvK 00000000 \u00b7 Almere, Netherlands",
      disclaimer: "This reference is informational. Users remain responsible for confirming current requirements with their municipality.",
    },
  },
};

// Sample municipalities for the live widget. Real product covers 41; we surface a handful.
const MUNICIPALITIES = [
  { name: "Almere",       framework: "binary-list",   status: "mandatory",     trigger: "\u22654 woningen of >500 m\u00b2", cvdr: "CVDR685432" },
  { name: "Amsterdam",    framework: "scoring",        status: "mandatory",     trigger: "Impactscore \u22657 punten",       cvdr: "CVDR701294" },
  { name: "Rotterdam",    framework: "discretionary",  status: "discretionary", trigger: "Per geval beoordeeld",          cvdr: "CVDR698117" },
  { name: "Utrecht",      framework: "binary-list",   status: "mandatory",     trigger: "Woningbouw \u22653 eenheden",       cvdr: "CVDR692058" },
  { name: "Den Haag",     framework: "process-based",  status: "mandatory",     trigger: "Alle BOPA-aanvragen",           cvdr: "CVDR687744" },
  { name: "Eindhoven",    framework: "scoring",        status: "mandatory",     trigger: "Impact + omvang",                cvdr: "CVDR690225" },
  { name: "Groningen",    framework: "voluntary",      status: "voluntary",     trigger: "Aanbevolen, niet vereist",       cvdr: "CVDR683910" },
  { name: "Tilburg",      framework: "discretionary",  status: "discretionary", trigger: "Per geval beoordeeld",          cvdr: "CVDR691803" },
  { name: "Breda",        framework: "binary-list",   status: "mandatory",     trigger: "Lijst met activiteiten",         cvdr: "CVDR689112" },
  { name: "Nijmegen",     framework: "voluntary",      status: "voluntary",     trigger: "Aanbevolen, niet vereist",       cvdr: "CVDR684427" },
  { name: "Apeldoorn",    framework: null,             status: "unprofiled",    trigger: "Geen gepubliceerd beleid",      cvdr: null },
  { name: "Haarlem",      framework: "binary-list",   status: "mandatory",     trigger: "\u22655 woningen",                  cvdr: "CVDR693501" },
];

window.COPY = COPY;
window.MUNICIPALITIES = MUNICIPALITIES;
