import type { CalculatorSection, Locale } from "./types";
import { HELP_GUIDES } from "./help-guides";

export type CalculatorRoute = Exclude<CalculatorSection, "help">;

export type HelpTopic = {
  id: string;
  title: string;
  intro: string;
  points: string[];
  details?: Array<{ title: string; text: string }>;
  action?: CalculatorRoute;
};

export type HelpCopy = {
  eyebrow: string;
  title: string;
  intro: string;
  contents: string;
  calculators: string;
  openCalculator: string;
  quickStart: string;
  quickStartIntro: string;
  steps: string[];
  detailsHint: string;
  topics: HelpTopic[];
  versionLabel: string;
  releaseStatus: string;
  unofficialTitle: string;
  unofficialNotice: string;
  privacyTitle: string;
  privacyNotice: string;
  publicReleaseTitle: string;
  publicReleaseNotice: string;
};

const english: HelpCopy = {
  eyebrow: "USER GUIDE · RELEASE 1.0.0",
  title: "Build the factory you actually need",
  intro:
    "Use this guide as a start-to-finish walkthrough or jump directly to a calculator. Every calculation stays in your browser and each workspace keeps its own setup.",
  contents: "On this page",
  calculators: "Open a calculator",
  openCalculator: "Open",
  quickStart: "Quick start",
  quickStartIntro:
    "A reliable first calculation takes six short steps. Advanced settings can stay at their defaults until the result is useful.",
  steps: [
    "Choose the calculator that matches your question.",
    "Select a product, science target, recycled item, freight route or power demand.",
    "Enter the target amount and choose /s, /min or /h.",
    "Check the recipe, machine, quality, modules and beacons.",
    "Enable the full production chain when you need upstream materials and buildings.",
    "Read warnings first, then use totals, logistics and geometry to build the result in game.",
  ],
  detailsHint: "Select a topic to open its complete explanation.",
  topics: [
    {
      id: "choose",
      title: "1. Choose the right calculator",
      intro: "Each top tab answers a different factory-planning question.",
      points: [
        "Science sizes research throughput; Production and Quality size products; Recycling sizes recycler returns; Rocket Freight sizes interplanetary transport; Energy sizes power generation.",
        "Normal and quality workspaces are independent. Reset affects only the currently open calculator.",
      ],
    },
    {
      id: "rates",
      title: "2. Rates, products, recipes and machines",
      intro: "Start with the desired result and let the calculator work backwards.",
      points: [
        "The same rate can be shown per second, minute or hour. Changing the unit changes only the time basis, not the factory ratio.",
        "Choose a product first, then an alternative recipe and any compatible machine. Input-limited mode instead calculates output from a known ingredient supply.",
      ],
      action: "production",
    },
    {
      id: "science",
      title: "3. Science",
      intro: "Convert supplied science packs into effective research, or size the packs needed for a research target.",
      points: [
        "Pack quality, productivity and the Biolab's 50% drain change research gained per supplied pack. Speed and lab quality change processing capacity and lab count.",
        "Input and result units are independent. Beacons may be disabled, selected manually or arranged by the optimized Biolab layout.",
      ],
      action: "science",
    },
    {
      id: "production",
      title: "4. Production",
      intro: "Size one or several products without losing the setup of earlier targets.",
      points: [
        "Add Product creates another simultaneous target. Clicking an ingredient or a downstream product reuses the current card with compatible settings.",
        "The direct result shows machine count, output, ingredients, utilization, power and logistics. The full chain is included by default and can be disabled per product.",
      ],
      action: "production",
    },
    {
      id: "quality",
      title: "5. Quality production",
      intro: "Plan expected Normal-to-Legendary output and propagate quality through upstream recipes.",
      points: [
        "Set input, machine, module and maximum researched quality. The result is a long-run expected distribution; small in-game samples can vary.",
        "Quality mode starts with quality modules and a quality-safe one-beacon preset. Manual settings remain available when a different design is intended.",
      ],
      action: "quality",
    },
    {
      id: "recycling",
      title: "6. Recycling",
      intro: "Inspect generated recycling recipes and their expected return rates.",
      points: [
        "Normal Recycling sizes input throughput and recycler count. Solid reversible ingredients return 25% on average; fluid ingredients are lost.",
        "Quality Recycling works backwards from a desired returned material and target quality to the required recycled input and machines.",
      ],
      action: "recycling",
    },
    {
      id: "quality-recycling",
      title: "7. Quality recycling",
      intro: "Reverse-size quality loops from the output you want to recover.",
      points: [
        "Choose the source item, returned material, input quality, target quality and research cap. The calculator reports the expected tier distribution.",
        "The default uses one beacon effect and one occupied module slot. Fluid-producing source recipes are intentionally excluded.",
      ],
      action: "quality-recycling",
    },
    {
      id: "rocket",
      title: "8. Rocket freight",
      intro: "Size cargo rockets, silos and platforms for a sustained interplanetary route.",
      points: [
        "Choose cargo, origin, destination, delivery rate and batch size. Platform speed can be entered directly or estimated from thrusters, width and mass.",
        "Compare sustained silos with the preloaded cargo wave. Inserter and robot loading include fill time; Ignore insertion assumes instant or preloaded cargo.",
      ],
      action: "rocket",
    },
    {
      id: "energy",
      title: "9. Energy",
      intro: "Turn a manual MW target or selected calculator loads into a power setup.",
      points: [
        "Select direct and/or chain power beside a calculation; the same switches stay synchronized in Energy.",
        "Steam, solar, nuclear, heating-tower and fusion modes expose their own planet, quality, fuel, block and generator assumptions.",
      ],
      action: "energy",
    },
    {
      id: "chains",
      title: "10. Full production chain",
      intro: "Expand every upstream recipe to raw sources and size the complete material flow.",
      points: [
        "The chain starts at the selected product's ingredients and follows canonical recipes unless you override a node. Mining drills and extraction buildings are included; power generation is separate.",
        "Each node can override recipe, machine, quality, modules, beacons and Inserter settings without changing unrelated nodes.",
      ],
      action: "production",
    },
    {
      id: "chain-wide",
      title: "11. Global and local chain-wide setup",
      intro: "Set a baseline once, then refine only the exceptions.",
      points: [
        "The global panel applies changed fields to every active product chain and supplies defaults for new products. Its machine research toggles and per-family hierarchy control automatic machine choice.",
        "A product's local chain-wide panel affects only that chain. A node override wins over both baselines, and later local edits stay local.",
      ],
      action: "production",
    },
    {
      id: "modules",
      title: "12. Modules, priorities, quality and beacons",
      intro: "Automatic mode fills valid slots in the displayed priority order.",
      points: [
        "The default priority is Productivity › Speed › Quality › Efficiency. If a recipe forbids one family, the next valid family is used.",
        "Manual mode controls every slot. Beacon count represents physical beacons; the geometry result shows the actual effect count received by each machine.",
      ],
      action: "quality",
    },
    {
      id: "logistics",
      title: "13. Inserters, belts and throughput",
      intro: "Check whether material movement can keep up with the machines.",
      points: [
        "Machine logistics sizes input and output Inserters using type, quality, capacity research and handoff. Fluids use pumps instead.",
        "The totals view sizes complete belts by tier and researched stack size. Whole belts, exact equivalents, total utilization and last-belt utilization are all shown.",
      ],
      action: "production",
    },
    {
      id: "totals",
      title: "14. Totals, construction bill and geometry",
      intro: "Use the bottom summary to turn calculations into a build list.",
      points: [
        "All-production totals merge raw resources and configured processes while retaining each product's contribution. Shared streams can stay separate or be combined.",
        "The construction bill totals sources, machines, modules, beacons and Inserters by quality. Geometry previews show entity ratios and beacon coverage; connection pipes and belts may be intentionally omitted.",
      ],
      action: "production",
    },
    {
      id: "warnings",
      title: "15. Warnings, bottlenecks and example workflows",
      intro: "A valid number can still depend on an important physical assumption.",
      points: [
        "Read amber notices for belt overload, unavailable modules, fluid loss, cargo-wave limits, storage caps or temperature conversion losses before building.",
        "Example: set 60 Processing units/min, enable the chain, apply researched machines globally, inspect belt warnings, add the construction bill to your plan, then send selected power loads to Energy.",
      ],
    },
    {
      id: "faq",
      title: "16. FAQ, limitations and glossary",
      intro: "The calculator is deterministic, while several Factorio systems are probabilistic or layout-dependent.",
      points: [
        "Build means the rounded-up number of entities; theoretical is the exact fractional requirement; utilization is the load on the last built entity. Direct setup excludes upstream recipes; chain includes them.",
        "Expected quality and recycling values are long-run averages. Infinite research applies only where a dedicated control exists, and geometry is a ratio/coverage aid rather than an importable blueprint.",
      ],
    },
  ],
  versionLabel: "Version 1.0.0 · Factorio data 2.1.17",
  releaseStatus: "First public open-source release",
  unofficialTitle: "Unofficial fan project",
  unofficialNotice:
    "Unofficial fan-made calculator. Not affiliated with or endorsed by Wube Software Ltd. Factorio and related game assets are property of Wube Software Ltd. Used with permission. Free to use.",
  privacyTitle: "Privacy by design",
  privacyNotice:
    "The calculator creates no account, stores no calculation inputs in cookies or browser storage, and sends no calculation data to an application backend. The hosting provider may process technical access logs needed to deliver the website.",
  publicReleaseTitle: "License and source code",
  publicReleaseNotice:
    "The calculator source is available under GPL-3.0-only. Third-party software and Factorio material retain their own licenses and ownership notices. The complete notices and source download are linked below.",
};

const german: HelpCopy = {
  eyebrow: "BENUTZERHILFE · RELEASE 1.0.0",
  title: "Baue genau die Fabrik, die du brauchst",
  intro:
    "Nutze diese Hilfe als vollständige Schritt-für-Schritt-Anleitung oder springe direkt in einen Rechner. Jede Berechnung bleibt in deinem Browser; jeder Arbeitsbereich behält sein eigenes Setup.",
  contents: "Auf dieser Seite",
  calculators: "Rechner öffnen",
  openCalculator: "Öffnen",
  quickStart: "Schnellstart",
  quickStartIntro:
    "Für eine belastbare erste Berechnung reichen sechs kurze Schritte. Die erweiterten Einstellungen können zunächst auf ihren Vorgaben bleiben.",
  steps: [
    "Wähle den Rechner, der zu deiner Frage passt.",
    "Wähle Produkt, Forschungsziel, Recyclingobjekt, Frachtroute oder Leistungsbedarf.",
    "Trage die Zielmenge ein und wähle /s, /min oder /h.",
    "Prüfe Rezept, Maschine, Qualität, Module und Effektverteiler.",
    "Aktiviere die vollständige Produktionskette, wenn du Vorprodukte und Gebäude brauchst.",
    "Lies zuerst die Warnungen und nutze danach Summen, Logistik und Geometrie für deinen Bau im Spiel.",
  ],
  detailsHint: "Wähle ein Thema, um die vollständige Erklärung zu öffnen.",
  topics: [
    { id: "choose", title: "1. Den richtigen Rechner wählen", intro: "Jeder obere Reiter beantwortet eine andere Planungsfrage.", points: ["Forschung dimensioniert Forschungsdurchsatz; Produktion und Qualität berechnen Produkte; Recycling berechnet Rückgaben; Raketenfracht plant interplanetaren Transport; Energie dimensioniert die Stromerzeugung.", "Normale und Qualitäts-Arbeitsbereiche sind unabhängig. Zurücksetzen betrifft nur den gerade geöffneten Rechner."] },
    { id: "rates", title: "2. Raten, Produkte, Rezepte und Maschinen", intro: "Beginne mit dem gewünschten Ergebnis und lasse den Rechner rückwärts planen.", points: ["Dieselbe Rate kann pro Sekunde, Minute oder Stunde angezeigt werden. Ein Einheitenwechsel ändert nur die Zeitbasis, nicht das Fabrikverhältnis.", "Wähle zuerst ein Produkt, danach ein alternatives Rezept und eine kompatible Maschine. Im inputbegrenzten Modus wird der Output aus einem bekannten Zutatenstrom berechnet."], action: "production" },
    { id: "science", title: "3. Forschung", intro: "Rechne zugeführte Forschungspakete in effektive Forschung um oder bestimme die nötigen Pakete für ein Forschungsziel.", points: ["Paketqualität, Produktivität und der 50-%-Verbrauch des Biolabs ändern die Forschung je Paket. Geschwindigkeit und Laborqualität ändern Verarbeitungskapazität und Laboranzahl.", "Eingabe- und Ergebniseinheit sind unabhängig. Effektverteiler können aus, manuell gewählt oder im optimierten Biolab-Layout angeordnet sein."], action: "science" },
    { id: "production", title: "4. Produktion", intro: "Berechne ein oder mehrere Produkte, ohne frühere Ziel-Setups zu verlieren.", points: ["Produkt hinzufügen erzeugt ein weiteres gleichzeitiges Ziel. Ein Klick auf Zutat oder Folgeprodukt verwendet die aktuelle Karte mit kompatiblen Einstellungen weiter.", "Das direkte Ergebnis zeigt Maschinenanzahl, Output, Zutaten, Auslastung, Leistung und Logistik. Die vollständige Kette ist standardmäßig enthalten und lässt sich je Produkt deaktivieren."], action: "production" },
    { id: "quality", title: "5. Qualitätsproduktion", intro: "Plane den erwarteten Output von Normal bis Legendär und führe Qualität durch die vorgelagerten Rezepte.", points: ["Lege Eingabe-, Maschinen-, Modul- und maximal erforschte Qualität fest. Das Ergebnis ist eine langfristige Erwartungsverteilung; kleine Stichproben im Spiel können abweichen.", "Der Qualitätsmodus startet mit Qualitätsmodulen und einem qualitätssicheren Ein-Effektverteiler-Preset. Für andere Designs bleiben manuelle Einstellungen verfügbar."], action: "quality" },
    { id: "recycling", title: "6. Recycling", intro: "Prüfe generierte Recyclingrezepte und ihre erwarteten Rückgaberaten.", points: ["Normales Recycling berechnet Eingangsdurchsatz und Recycleranzahl. Umkehrbare feste Zutaten kommen im Mittel zu 25 % zurück; Flüssigkeiten gehen verloren.", "Qualitäts-Recycling rechnet von gewünschtem Rückgabematerial und Zielqualität rückwärts zur nötigen Eingangsmenge und Maschinenzahl."], action: "recycling" },
    { id: "quality-recycling", title: "7. Qualitäts-Recycling", intro: "Dimensioniere Qualitätsschleifen rückwärts vom gewünschten Rückgabe-Output.", points: ["Wähle Ausgangsobjekt, Rückgabematerial, Eingangsqualität, Zielqualität und Forschungsgrenze. Der Rechner zeigt die erwartete Stufenverteilung.", "Die Vorgabe nutzt einen Effektverteiler-Effekt und einen belegten Modulplatz. Rezepte mit Flüssigkeitsprodukt sind bewusst ausgeschlossen."], action: "quality-recycling" },
    { id: "rocket", title: "8. Raketenfracht", intro: "Dimensioniere Frachtraketen, Silos und Plattformen für eine dauerhafte interplanetare Route.", points: ["Wähle Fracht, Start, Ziel, Liefergeschwindigkeit und Chargengröße. Die Plattformgeschwindigkeit kann direkt angegeben oder aus Triebwerken, Breite und Masse geschätzt werden.", "Vergleiche dauerhafte Silos mit der vorgeladenen Frachtwelle. Greifarm- und Roboterbeladung enthalten Füllzeit; Beladung ignorieren setzt sofortige oder vorgeladene Fracht voraus."], action: "rocket" },
    { id: "energy", title: "9. Energie", intro: "Verwandle ein manuelles MW-Ziel oder ausgewählte Rechnerlasten in ein Kraftwerks-Setup.", points: ["Wähle direkte und/oder Kettenleistung neben einer Berechnung; dieselben Schalter bleiben im Energierechner synchron.", "Dampf, Solar, Kernkraft, Heizturm und Fusion besitzen eigene Annahmen für Planet, Qualität, Brennstoff, Block und Generator."], action: "energy" },
    { id: "chains", title: "10. Vollständige Produktionskette", intro: "Löse alle vorgelagerten Rezepte bis zu Rohstoffquellen auf und berechne den kompletten Materialfluss.", points: ["Die Kette beginnt bei den Zutaten des gewählten Produkts und folgt kanonischen Rezepten, bis du einen Knoten überschreibst. Förderer und Gewinnungsgebäude sind enthalten; Stromerzeugung bleibt separat.", "Jeder Knoten kann Rezept, Maschine, Qualität, Module, Effektverteiler und Greifarme überschreiben, ohne andere Knoten zu verändern."], action: "production" },
    { id: "chain-wide", title: "11. Globales und lokales kettenweites Setup", intro: "Lege die Basis einmal fest und passe danach nur Ausnahmen an.", points: ["Das globale Panel überträgt geänderte Felder auf alle aktiven Produktketten und liefert Vorgaben für neue Produkte. Forschungsstatus und Hierarchie je Rezeptfamilie steuern die automatische Maschinenwahl.", "Das lokale kettenweite Panel eines Produkts betrifft nur diese Kette. Ein Knoten-Override gewinnt gegen beide Basen; spätere lokale Änderungen bleiben lokal."], action: "production" },
    { id: "modules", title: "12. Module, Prioritäten, Qualität und Effektverteiler", intro: "Automatisch füllt gültige Steckplätze in der angezeigten Prioritätsreihenfolge.", points: ["Die Vorgabe ist Produktivität › Geschwindigkeit › Qualität › Effizienz. Verbietet ein Rezept eine Familie, wird die nächste gültige verwendet.", "Manuell steuert jeden Steckplatz. Die Effektverteileranzahl meint physische Gebäude; die Geometrie zeigt die tatsächlich empfangenen Effekte jeder Maschine."], action: "quality" },
    { id: "logistics", title: "13. Greifarme, Fließbänder und Durchsatz", intro: "Prüfe, ob der Materialtransport mit den Maschinen Schritt hält.", points: ["Maschinenlogistik berechnet Eingangs- und Ausgangsgreifarme aus Typ, Qualität, Kapazitätsforschung und Übergabe. Flüssigkeiten verwenden Pumpen.", "Die Gesamtsicht dimensioniert vollständige Bänder nach Stufe und erforschter Stapelgröße. Ganze Bänder, exakte Äquivalente, Gesamtauslastung und Auslastung des letzten Bandes werden gezeigt."], action: "production" },
    { id: "totals", title: "14. Summen, Bauliste und Geometrie", intro: "Nutze die untere Zusammenfassung, um Berechnungen in eine Bauliste zu verwandeln.", points: ["Die Gesamtproduktion führt Rohstoffe und konfigurierte Prozesse zusammen und behält den Beitrag jedes Produkts sichtbar. Gemeinsame Ströme können getrennt bleiben oder kombiniert werden.", "Die Bauliste summiert Quellen, Maschinen, Module, Effektverteiler und Greifarme nach Qualität. Geometrien zeigen Gebäudeverhältnisse und Abdeckung; Verbindungsrohre und Bänder können bewusst fehlen."], action: "production" },
    { id: "warnings", title: "15. Warnungen, Engpässe und Beispielablauf", intro: "Auch eine gültige Zahl kann von einer wichtigen physischen Annahme abhängen.", points: ["Lies vor dem Bau orange Hinweise zu Bandüberlastung, unzulässigen Modulen, Flüssigkeitsverlust, Frachtwellen, Lagergrenzen oder Temperaturverlusten.", "Beispiel: 60 Prozessoreinheiten/min setzen, Kette aktivieren, erforschte Maschinen global anwenden, Bandwarnungen prüfen, Bauliste übernehmen und ausgewählte Stromlasten an Energie senden."] },
    { id: "faq", title: "16. FAQ, Grenzen und Glossar", intro: "Der Rechner ist deterministisch, mehrere Factorio-Systeme sind jedoch probabilistisch oder layoutabhängig.", points: ["Bauen ist die aufgerundete Gebäudezahl; theoretisch ist der exakte Bruchwert; Auslastung beschreibt das letzte gebaute Gebäude. Direktes Setup schließt Vorprodukte aus, Kette schließt sie ein.", "Erwartete Qualitäts- und Recyclingwerte sind Langzeitmittel. Unendliche Forschung gilt nur bei einem eigenen Regler; Geometrie ist eine Verhältnis-/Abdeckungshilfe und kein importierbarer Blueprint."] },
  ],
  versionLabel: "Version 1.0.0 · Factorio-Daten 2.1.17",
  releaseStatus: "Erste öffentliche Open-Source-Version",
  unofficialTitle: "Inoffizielles Fanprojekt",
  unofficialNotice: "Inoffizieller, von Fans erstellter Rechner. Keine Verbindung zu oder Unterstützung durch Wube Software Ltd. Factorio und zugehörige Spielassets sind Eigentum von Wube Software Ltd. Verwendung mit Genehmigung. Kostenlose Nutzung.",
  privacyTitle: "Datenschutz durch Technikgestaltung",
  privacyNotice: "Der Rechner erstellt kein Konto, speichert keine Berechnungseingaben in Cookies oder Browserspeicher und sendet keine Berechnungsdaten an ein Anwendungs-Backend. Der Hostinganbieter kann für die Website-Auslieferung erforderliche technische Zugriffsprotokolle verarbeiten.",
  publicReleaseTitle: "Lizenz und Quellcode",
  publicReleaseNotice: "Der Quellcode des Rechners ist unter GPL-3.0-only verfügbar. Drittanbietersoftware und Factorio-Material behalten ihre eigenen Lizenzen und Eigentumshinweise. Hinweise und Quellcode-Download sind unten verlinkt.",
};

const spanish: HelpCopy = {
  eyebrow: "GUÍA DE USO · VERSIÓN 1.0.0",
  title: "Construye exactamente la fábrica que necesitas",
  intro: "Sigue esta guía paso a paso o abre directamente una calculadora. Todos los cálculos permanecen en tu navegador y cada espacio conserva su propia configuración.",
  contents: "En esta página",
  calculators: "Abrir una calculadora",
  openCalculator: "Abrir",
  quickStart: "Inicio rápido",
  quickStartIntro: "Seis pasos bastan para obtener un primer cálculo fiable; puedes mantener los ajustes avanzados en sus valores iniciales.",
  steps: [
    "Elige la calculadora adecuada para tu pregunta.",
    "Selecciona un producto, objetivo científico, objeto para reciclar, ruta de carga o demanda eléctrica.",
    "Introduce la cantidad y elige /s, /min o /h.",
    "Revisa la receta, máquina, calidad, módulos y faros.",
    "Activa la cadena completa si necesitas materiales y edificios previos.",
    "Lee primero los avisos y usa después totales, logística y geometría para construir en el juego.",
  ],
  detailsHint: "Selecciona un tema para abrir la explicación completa.",
  topics: [
    { id: "choose", title: "1. Elegir la calculadora", intro: "Cada pestaña responde a una pregunta de planificación distinta.", points: ["Ciencia calcula investigación; Producción y Calidad calculan productos; Reciclaje calcula retornos; Carga de cohetes calcula transporte; Energía calcula generación.", "Los espacios normales y de calidad son independientes. Restablecer solo afecta a la calculadora abierta."] },
    { id: "rates", title: "2. Ritmos, productos, recetas y máquinas", intro: "Parte del resultado deseado y deja que la calculadora trabaje hacia atrás.", points: ["Un ritmo puede verse por segundo, minuto u hora; la unidad cambia el tiempo, no la proporción de fábrica.", "Elige producto, receta alternativa y máquina compatible. El modo limitado por entrada calcula la salida desde un suministro conocido."], action: "production" },
    { id: "science", title: "3. Ciencia", intro: "Convierte paquetes suministrados en investigación efectiva o calcula los paquetes necesarios.", points: ["Calidad, productividad y el consumo del 50 % del Biolab cambian la investigación por paquete; velocidad y calidad del laboratorio cambian capacidad y cantidad de laboratorios.", "Las unidades de entrada y resultado son independientes. Los faros pueden desactivarse, elegirse manualmente o usar el diseño optimizado."], action: "science" },
    { id: "production", title: "4. Producción", intro: "Calcula uno o varios productos sin perder objetivos anteriores.", points: ["Añadir producto crea otro objetivo simultáneo. Pulsar un ingrediente o producto posterior reutiliza la tarjeta actual con ajustes compatibles.", "El resultado directo muestra máquinas, salida, ingredientes, uso, energía y logística. La cadena completa está incluida por defecto y puede desactivarse por producto."], action: "production" },
    { id: "quality", title: "5. Producción con calidad", intro: "Planifica la salida esperada de Normal a Legendaria y propaga la calidad por la cadena.", points: ["Define calidad de entrada, máquina, módulos y límite investigado. Es una distribución esperada a largo plazo; muestras pequeñas pueden variar.", "El modo empieza con módulos de calidad y un preajuste seguro de un faro; también permite control manual."], action: "quality" },
    { id: "recycling", title: "6. Reciclaje", intro: "Examina recetas generadas y retornos esperados.", points: ["El reciclaje normal calcula entrada y recicladores. Los ingredientes sólidos reversibles retornan un 25 % de media; los fluidos se pierden.", "El reciclaje con calidad calcula hacia atrás desde el material y la calidad deseados."], action: "recycling" },
    { id: "quality-recycling", title: "7. Reciclaje con calidad", intro: "Dimensiona bucles de calidad desde la salida que quieres recuperar.", points: ["Elige objeto, material devuelto, calidades de entrada/objetivo y límite de investigación; verás la distribución esperada.", "El valor inicial usa un efecto de faro y una ranura ocupada. Se excluyen recetas fuente que producen fluidos."], action: "quality-recycling" },
    { id: "rocket", title: "8. Carga de cohetes", intro: "Calcula cohetes, silos y plataformas para una ruta sostenida.", points: ["Elige carga, origen, destino, ritmo y lote. Introduce la velocidad o estímala con propulsores, anchura y masa.", "Compara silos sostenidos y ola precargada. Insertores/robots incluyen carga; ignorarla supone carga instantánea o previa."], action: "rocket" },
    { id: "energy", title: "9. Energía", intro: "Convierte un objetivo MW o cargas seleccionadas en una central.", points: ["Selecciona potencia directa o de cadena junto al cálculo; los interruptores permanecen sincronizados.", "Vapor, solar, nuclear, torre de calefacción y fusión tienen supuestos propios de planeta, calidad, combustible y bloque."], action: "energy" },
    { id: "chains", title: "10. Cadena de producción completa", intro: "Expande recetas previas hasta las fuentes de materia prima.", points: ["La cadena empieza en los ingredientes y sigue recetas canónicas salvo que modifiques un nodo. Incluye extracción, pero no generación eléctrica.", "Cada nodo puede sobrescribir receta, máquina, calidad, módulos, faros e insertores de forma independiente."], action: "production" },
    { id: "chain-wide", title: "11. Configuración global y local de cadena", intro: "Define una base y ajusta solo las excepciones.", points: ["El panel global aplica campos cambiados a cadenas activas y a productos nuevos; investigación y jerarquías controlan la máquina automática.", "El panel local afecta solo a su producto. Una excepción de nodo prevalece y las ediciones locales posteriores siguen siendo locales."], action: "production" },
    { id: "modules", title: "12. Módulos, prioridad, calidad y faros", intro: "El modo automático llena ranuras válidas en el orden mostrado.", points: ["El orden inicial es Productividad › Velocidad › Calidad › Eficiencia; si una familia no es válida, usa la siguiente.", "Manual controla cada ranura. El número de faros es físico y la geometría indica los efectos reales por máquina."], action: "quality" },
    { id: "logistics", title: "13. Insertores, cintas y rendimiento", intro: "Comprueba que el transporte siga el ritmo de las máquinas.", points: ["La logística calcula insertores de entrada/salida por tipo, calidad, investigación y entrega; los fluidos usan bombas.", "Los totales calculan cintas enteras, equivalencia exacta, uso total y uso de la última cinta según nivel y apilado."], action: "production" },
    { id: "totals", title: "14. Totales, lista de construcción y geometría", intro: "Convierte los cálculos en una lista de edificios.", points: ["Los totales combinan recursos y procesos sin ocultar la contribución de cada producto; los flujos compartidos pueden separarse o unirse.", "La lista suma fuentes, máquinas, módulos, faros e insertores por calidad. La geometría muestra proporciones y cobertura, no necesariamente conexiones."], action: "production" },
    { id: "warnings", title: "15. Avisos, cuellos de botella y ejemplo", intro: "Una cifra válida puede depender de un supuesto físico importante.", points: ["Lee los avisos sobre cintas, módulos, fluidos, lotes, almacenamiento y temperatura antes de construir.", "Ejemplo: fija 60 unidades de procesamiento/min, activa la cadena, aplica máquinas investigadas globalmente, revisa cintas y lista, y envía la carga a Energía."] },
    { id: "faq", title: "16. Preguntas, límites y glosario", intro: "La calculadora es determinista; algunos sistemas del juego son probabilísticos o dependen del diseño.", points: ["Construir es la cantidad redondeada; teórico es la fracción exacta; utilización es la carga de la última entidad. Directo excluye la cadena; cadena la incluye.", "Calidad y reciclaje son promedios a largo plazo. La investigación infinita solo se aplica con control propio y la geometría no es un plano importable."] },
  ],
  versionLabel: "Versión 1.0.0 · datos de Factorio 2.1.17",
  releaseStatus: "Primera versión pública de código abierto",
  unofficialTitle: "Proyecto no oficial de fans",
  unofficialNotice: "Calculadora no oficial creada por fans. No está afiliada ni respaldada por Wube Software Ltd. Factorio y los recursos relacionados son propiedad de Wube Software Ltd. Usados con permiso. Uso gratuito.",
  privacyTitle: "Privacidad desde el diseño",
  privacyNotice: "La calculadora no crea cuentas, no guarda datos de cálculo en cookies o almacenamiento del navegador y no los envía a un backend. El proveedor de alojamiento puede procesar registros técnicos necesarios para servir la web.",
  publicReleaseTitle: "Licencia y código fuente",
  publicReleaseNotice: "El código fuente está disponible bajo GPL-3.0-only. El software de terceros y el material de Factorio conservan sus propias licencias y avisos de propiedad; los enlaces aparecen abajo.",
};

const french: HelpCopy = {
  eyebrow: "GUIDE UTILISATEUR · VERSION 1.0.0",
  title: "Construisez exactement l'usine nécessaire",
  intro: "Suivez ce guide pas à pas ou ouvrez directement un calculateur. Tous les calculs restent dans votre navigateur et chaque espace conserve ses réglages.",
  contents: "Sur cette page",
  calculators: "Ouvrir un calculateur",
  openCalculator: "Ouvrir",
  quickStart: "Démarrage rapide",
  quickStartIntro: "Six étapes suffisent pour un premier calcul fiable ; gardez d'abord les réglages avancés par défaut.",
  steps: ["Choisissez le calculateur adapté.", "Sélectionnez produit, recherche, recyclage, trajet ou demande électrique.", "Saisissez la quantité et choisissez /s, /min ou /h.", "Vérifiez recette, machine, qualité, modules et diffuseurs.", "Activez la chaîne complète pour inclure les éléments en amont.", "Lisez les avertissements puis utilisez totaux, logistique et géométrie pour construire."],
  detailsHint: "Sélectionnez un sujet pour afficher son explication complète.",
  topics: [
    { id: "choose", title: "1. Choisir le calculateur", intro: "Chaque onglet répond à une question différente.", points: ["Science dimensionne la recherche ; Production et Qualité les produits ; Recyclage les retours ; Fret spatial le transport ; Énergie la production électrique.", "Les espaces normal et qualité sont indépendants. Réinitialiser ne touche que l'espace ouvert."] },
    { id: "rates", title: "2. Débits, produits, recettes et machines", intro: "Partez du résultat voulu et calculez en remontant.", points: ["Un débit s'affiche par seconde, minute ou heure ; seule la base temporelle change.", "Choisissez le produit, une recette et une machine compatible. Le mode limité par l'entrée calcule depuis un approvisionnement connu."], action: "production" },
    { id: "science", title: "3. Science", intro: "Convertissez les packs fournis en recherche effective ou calculez les packs requis.", points: ["Qualité, productivité et consommation de 50 % du Biolab changent la recherche par pack ; vitesse et qualité du laboratoire changent capacité et nombre.", "Unités d'entrée et de résultat sont indépendantes ; les diffuseurs peuvent être désactivés, manuels ou optimisés."], action: "science" },
    { id: "production", title: "4. Production", intro: "Dimensionnez plusieurs produits sans perdre les objectifs précédents.", points: ["Ajouter un produit crée un objectif simultané. Cliquer un ingrédient ou produit aval réutilise la carte et les réglages compatibles.", "Le résultat direct affiche machines, sorties, ingrédients, charge, énergie et logistique. La chaîne complète est incluse par défaut."], action: "production" },
    { id: "quality", title: "5. Production de qualité", intro: "Planifiez la distribution attendue de Normale à Légendaire.", points: ["Réglez qualités d'entrée/machine/module et plafond recherché. Le résultat est une moyenne de long terme.", "Le mode démarre avec modules de qualité et un préréglage sûr à un diffuseur ; le réglage manuel reste disponible."], action: "quality" },
    { id: "recycling", title: "6. Recyclage", intro: "Examinez les recettes générées et retours attendus.", points: ["Le recyclage normal dimensionne entrée et recycleurs. Les solides réversibles rendent 25 % en moyenne ; les fluides sont perdus.", "Le recyclage de qualité remonte du matériau et de la qualité voulus vers l'entrée nécessaire."], action: "recycling" },
    { id: "quality-recycling", title: "7. Recyclage de qualité", intro: "Dimensionnez les boucles depuis la sortie à récupérer.", points: ["Choisissez source, retour, qualités et plafond ; la distribution attendue est affichée.", "Le défaut utilise un effet de diffuseur et un emplacement occupé. Les sources produisant un fluide sont exclues."], action: "quality-recycling" },
    { id: "rocket", title: "8. Fret spatial", intro: "Dimensionnez fusées, silos et plateformes pour une liaison continue.", points: ["Choisissez fret, origine, destination, débit et lot ; saisissez la vitesse ou estimez-la avec propulseurs, largeur et masse.", "Comparez silos continus et vague préchargée. Inserteurs/robots incluent le chargement ; l'ignorer suppose un fret instantané ou préchargé."], action: "rocket" },
    { id: "energy", title: "9. Énergie", intro: "Transformez un objectif MW ou des charges sélectionnées en centrale.", points: ["Sélectionnez puissance directe et/ou de chaîne ; les mêmes boutons restent synchronisés.", "Vapeur, solaire, nucléaire, tour thermique et fusion ont leurs propres hypothèses."], action: "energy" },
    { id: "chains", title: "10. Chaîne de production complète", intro: "Développez toutes les recettes jusqu'aux ressources brutes.", points: ["La chaîne part des ingrédients et suit les recettes canoniques sauf remplacement. Extraction incluse, production électrique séparée.", "Chaque nœud peut remplacer recette, machine, qualité, modules, diffuseurs et bras sans modifier les autres."], action: "production" },
    { id: "chain-wide", title: "11. Réglages globaux et locaux de chaîne", intro: "Définissez une base puis seulement les exceptions.", points: ["Le panneau global applique les champs modifiés aux chaînes actives et nouveaux produits ; recherche et hiérarchies pilotent la machine automatique.", "Le panneau local ne touche qu'un produit. Le remplacement d'un nœud est prioritaire et reste local."], action: "production" },
    { id: "modules", title: "12. Modules, priorités, qualité et diffuseurs", intro: "Le mode automatique remplit les emplacements valides dans l'ordre affiché.", points: ["Ordre par défaut : Productivité › Vitesse › Qualité › Efficacité ; une famille interdite est sautée.", "Le mode manuel contrôle chaque emplacement. Le nombre de diffuseurs est physique ; la géométrie montre les effets reçus."], action: "quality" },
    { id: "logistics", title: "13. Bras, convoyeurs et débit", intro: "Vérifiez que le transport suit les machines.", points: ["La logistique calcule les bras d'entrée/sortie selon type, qualité, recherche et transfert ; les fluides utilisent des pompes.", "Les totaux donnent convoyeurs entiers, équivalent exact, charge totale et charge du dernier convoyeur."], action: "production" },
    { id: "totals", title: "14. Totaux, liste de construction et géométrie", intro: "Transformez les calculs en liste de bâtiments.", points: ["Les totaux fusionnent ressources et procédés sans masquer la contribution de chaque produit ; les flux partagés peuvent rester séparés.", "La liste additionne sources, machines, modules, diffuseurs et bras par qualité. La géométrie illustre ratios et couverture, pas toutes les connexions."], action: "production" },
    { id: "warnings", title: "15. Avertissements, goulots et exemple", intro: "Un nombre valide peut dépendre d'une hypothèse physique.", points: ["Lisez les alertes de convoyeur, module, fluide, lot, stockage ou température avant de construire.", "Exemple : 60 processeurs/min, chaîne active, machines recherchées globales, contrôle des convoyeurs et de la liste, puis transfert de la charge vers Énergie."] },
    { id: "faq", title: "16. FAQ, limites et glossaire", intro: "Le calcul est déterministe ; certains systèmes du jeu sont probabilistes ou dépendent du plan.", points: ["Construire est le nombre arrondi ; théorique la fraction exacte ; utilisation la charge de la dernière entité. Direct exclut l'amont, chaîne l'inclut.", "Qualité et recyclage sont des moyennes longues. La recherche infinie exige un contrôle dédié et la géométrie n'est pas un plan importable."] },
  ],
  versionLabel: "Version 1.0.0 · données Factorio 2.1.17",
  releaseStatus: "Première version publique open source",
  unofficialTitle: "Projet de fans non officiel",
  unofficialNotice: "Calculateur non officiel créé par des fans. Ni affilié ni approuvé par Wube Software Ltd. Factorio et les ressources associées appartiennent à Wube Software Ltd. Utilisés avec autorisation. Utilisation gratuite.",
  privacyTitle: "Confidentialité dès la conception",
  privacyNotice: "Le calculateur ne crée aucun compte, ne stocke aucune saisie de calcul dans des cookies ou le navigateur et ne l'envoie pas à un backend. L'hébergeur peut traiter les journaux techniques nécessaires à la diffusion du site.",
  publicReleaseTitle: "Licence et code source",
  publicReleaseNotice: "Le code source est disponible sous GPL-3.0-only. Les logiciels tiers et les éléments Factorio conservent leurs propres licences et mentions de propriété ; les liens figurent ci-dessous.",
};

const italian: HelpCopy = {
  eyebrow: "GUIDA UTENTE · VERSIONE 1.0.0",
  title: "Costruisci esattamente la fabbrica necessaria",
  intro: "Segui la guida passo per passo oppure apri subito un calcolatore. I calcoli restano nel browser e ogni area conserva la propria configurazione.",
  contents: "In questa pagina",
  calculators: "Apri un calcolatore",
  openCalculator: "Apri",
  quickStart: "Avvio rapido",
  quickStartIntro: "Sei passaggi bastano per un primo calcolo affidabile; inizialmente puoi lasciare le opzioni avanzate ai valori predefiniti.",
  steps: ["Scegli il calcolatore adatto alla domanda.", "Seleziona prodotto, obiettivo scientifico, oggetto da riciclare, rotta merci o domanda energetica.", "Inserisci la quantità e scegli /s, /min o /h.", "Controlla ricetta, macchina, qualità, moduli e fari.", "Attiva la catena completa per includere materiali ed edifici a monte.", "Leggi prima gli avvisi, poi usa totali, logistica e geometria per costruire nel gioco."],
  detailsHint: "Seleziona un argomento per aprire la spiegazione completa.",
  topics: [
    { id: "choose", title: "1. Scegliere il calcolatore", intro: "Ogni scheda risponde a una diversa domanda di pianificazione.", points: ["Scienza dimensiona la ricerca; Produzione e Qualità i prodotti; Riciclo i ritorni; Trasporto razzi le tratte; Energia la generazione.", "Le aree normale e qualità sono indipendenti. Ripristina agisce solo sul calcolatore aperto."] },
    { id: "rates", title: "2. Ritmi, prodotti, ricette e macchine", intro: "Parti dal risultato desiderato e calcola a ritroso.", points: ["Lo stesso ritmo può essere per secondo, minuto o ora; cambia solo la base temporale.", "Scegli prodotto, ricetta alternativa e macchina compatibile. La modalità limitata dall'ingresso calcola da una fornitura nota."], action: "production" },
    { id: "science", title: "3. Scienza", intro: "Converti i pacchetti forniti in ricerca effettiva o calcola quelli necessari.", points: ["Qualità, produttività e consumo del 50% del Biolab cambiano la ricerca per pacchetto; velocità e qualità del laboratorio cambiano capacità e numero.", "Le unità di ingresso e risultato sono indipendenti; i fari possono essere disattivati, manuali o ottimizzati."], action: "science" },
    { id: "production", title: "4. Produzione", intro: "Dimensiona più prodotti senza perdere gli obiettivi precedenti.", points: ["Aggiungi prodotto crea un altro obiettivo simultaneo. Un clic su ingrediente o prodotto a valle riusa la scheda e le impostazioni compatibili.", "Il risultato diretto mostra macchine, uscita, ingredienti, utilizzo, potenza e logistica. La catena completa è inclusa per impostazione iniziale."], action: "production" },
    { id: "quality", title: "5. Produzione di qualità", intro: "Pianifica la distribuzione prevista da Normale a Leggendaria.", points: ["Imposta qualità di ingresso, macchina, modulo e limite ricercato. Il risultato è una media di lungo periodo.", "La modalità parte con moduli qualità e un preset sicuro a un faro; resta disponibile il controllo manuale."], action: "quality" },
    { id: "recycling", title: "6. Riciclo", intro: "Esamina ricette generate e ritorni previsti.", points: ["Il riciclo normale dimensiona ingresso e riciclatori. I solidi reversibili restituiscono in media il 25%; i fluidi vanno persi.", "Il riciclo di qualità risale dal materiale e dalla qualità desiderati all'ingresso necessario."], action: "recycling" },
    { id: "quality-recycling", title: "7. Riciclo di qualità", intro: "Dimensiona i cicli dalla resa che vuoi recuperare.", points: ["Scegli fonte, materiale restituito, qualità e limite; viene mostrata la distribuzione prevista.", "Il preset usa un effetto faro e uno slot occupato. Le ricette fonte che producono fluidi sono escluse."], action: "quality-recycling" },
    { id: "rocket", title: "8. Trasporto razzi", intro: "Dimensiona razzi, silos e piattaforme per una rotta continua.", points: ["Scegli carico, origine, destinazione, ritmo e lotto; inserisci la velocità o stimala con propulsori, larghezza e massa.", "Confronta silos continui e ondata precaricata. Inseritori/robot includono il carico; ignorarlo presume carico istantaneo o già pronto."], action: "rocket" },
    { id: "energy", title: "9. Energia", intro: "Trasforma un obiettivo MW o carichi selezionati in una centrale.", points: ["Seleziona potenza diretta e/o di catena; gli stessi interruttori restano sincronizzati.", "Vapore, solare, nucleare, torre di riscaldamento e fusione hanno ipotesi specifiche."], action: "energy" },
    { id: "chains", title: "10. Catena di produzione completa", intro: "Espandi tutte le ricette fino alle risorse grezze.", points: ["La catena parte dagli ingredienti e usa ricette canoniche salvo sostituzioni. Estrazione inclusa, generazione elettrica separata.", "Ogni nodo può sostituire ricetta, macchina, qualità, moduli, fari e inseritori senza modificare gli altri."], action: "production" },
    { id: "chain-wide", title: "11. Configurazione globale e locale della catena", intro: "Definisci una base e modifica solo le eccezioni.", points: ["Il pannello globale applica i campi cambiati alle catene attive e ai nuovi prodotti; ricerca e gerarchie controllano la macchina automatica.", "Il pannello locale riguarda un solo prodotto. Una modifica del nodo ha priorità e resta locale."], action: "production" },
    { id: "modules", title: "12. Moduli, priorità, qualità e fari", intro: "La modalità automatica riempie gli slot validi nell'ordine mostrato.", points: ["Ordine iniziale: Produttività › Velocità › Qualità › Efficienza; una famiglia vietata viene saltata.", "Manuale controlla ogni slot. Il numero di fari è fisico e la geometria mostra gli effetti ricevuti."], action: "quality" },
    { id: "logistics", title: "13. Inseritori, nastri e portata", intro: "Verifica che il trasporto tenga il passo delle macchine.", points: ["La logistica calcola inseritori in/out da tipo, qualità, ricerca e passaggio; i fluidi usano pompe.", "I totali mostrano nastri interi, equivalenza esatta, utilizzo totale e dell'ultimo nastro per livello e pila."], action: "production" },
    { id: "totals", title: "14. Totali, distinta e geometria", intro: "Trasforma i calcoli in una lista da costruire.", points: ["I totali uniscono risorse e processi mantenendo il contributo dei prodotti; i flussi condivisi possono restare separati o combinati.", "La distinta somma fonti, macchine, moduli, fari e inseritori per qualità. La geometria mostra rapporti e copertura, non tutte le connessioni."], action: "production" },
    { id: "warnings", title: "15. Avvisi, colli di bottiglia ed esempio", intro: "Un numero valido può dipendere da un'ipotesi fisica importante.", points: ["Leggi gli avvisi su nastri, moduli, fluidi, lotti, stoccaggio e temperatura prima di costruire.", "Esempio: 60 unità di elaborazione/min, catena attiva, macchine ricercate globali, controllo nastri e distinta, poi invio del carico a Energia."] },
    { id: "faq", title: "16. FAQ, limiti e glossario", intro: "Il calcolo è deterministico; alcuni sistemi sono probabilistici o dipendono dal layout.", points: ["Costruisci è il numero arrotondato; teorico è la frazione esatta; utilizzo è il carico dell'ultima entità. Diretto esclude la catena, catena la include.", "Qualità e riciclo sono medie di lungo periodo. La ricerca infinita richiede un controllo dedicato e la geometria non è un blueprint importabile."] },
  ],
  versionLabel: "Versione 1.0.0 · dati Factorio 2.1.17",
  releaseStatus: "Prima versione pubblica open source",
  unofficialTitle: "Progetto fan non ufficiale",
  unofficialNotice: "Calcolatore non ufficiale creato dai fan. Non affiliato né approvato da Wube Software Ltd. Factorio e le relative risorse sono proprietà di Wube Software Ltd. Usati con autorizzazione. Uso gratuito.",
  privacyTitle: "Privacy fin dalla progettazione",
  privacyNotice: "Il calcolatore non crea account, non salva dati di calcolo in cookie o nel browser e non li invia a un backend. Il provider di hosting può elaborare i log tecnici necessari a fornire il sito.",
  publicReleaseTitle: "Licenza e codice sorgente",
  publicReleaseNotice: "Il codice sorgente è disponibile con licenza GPL-3.0-only. Software di terze parti e materiali Factorio mantengono le proprie licenze e note di proprietà; i collegamenti sono riportati sotto.",
};

const russian: HelpCopy = {
  eyebrow: "РУКОВОДСТВО · ВЕРСИЯ 1.0.0",
  title: "Рассчитайте именно ту фабрику, которая нужна",
  intro: "Следуйте пошаговому руководству или сразу откройте нужный калькулятор. Расчёты остаются в браузере, а каждый раздел хранит свои настройки.",
  contents: "На этой странице",
  calculators: "Открыть калькулятор",
  openCalculator: "Открыть",
  quickStart: "Быстрый старт",
  quickStartIntro: "Для первого надёжного расчёта достаточно шести шагов; расширенные настройки можно оставить по умолчанию.",
  steps: ["Выберите калькулятор под вашу задачу.", "Выберите продукт, научную цель, предмет переработки, грузовой маршрут или потребление энергии.", "Введите количество и выберите /с, /мин или /ч.", "Проверьте рецепт, машину, качество, модули и маяки.", "Включите полную производственную цепочку для учёта всех материалов и зданий.", "Сначала прочитайте предупреждения, затем используйте итоги, логистику и геометрию для строительства."],
  detailsHint: "Выберите тему, чтобы открыть полное объяснение.",
  topics: [
    { id: "choose", title: "1. Выбор калькулятора", intro: "Каждая вкладка отвечает на отдельный вопрос планирования.", points: ["Наука рассчитывает исследования; Производство и Качество — продукты; Переработка — возврат; Ракетные грузы — перевозку; Энергия — электростанции.", "Обычный и качественный режимы независимы. Сброс касается только открытого раздела."] },
    { id: "rates", title: "2. Темпы, продукты, рецепты и машины", intro: "Задайте желаемый результат, и калькулятор посчитает потребности назад.", points: ["Темп отображается в секунду, минуту или час; меняется только масштаб времени.", "Выберите продукт, альтернативный рецепт и совместимую машину. Режим ограничения входом считает выход из известной подачи."], action: "production" },
    { id: "science", title: "3. Наука", intro: "Преобразуйте подаваемые пакеты в эффективную науку или рассчитайте нужную подачу.", points: ["Качество, продуктивность и 50-процентный расход Биолаборатории меняют науку с пакета; скорость и качество лаборатории — пропускную способность и число лабораторий.", "Единицы ввода и результата независимы; маяки можно выключить, настроить вручную или оптимизировать."], action: "science" },
    { id: "production", title: "4. Производство", intro: "Рассчитайте несколько продуктов, не теряя предыдущие цели.", points: ["Добавить продукт создаёт параллельную цель. Нажатие ингредиента или следующего продукта повторно использует карточку и совместимые настройки.", "Прямой результат показывает машины, выход, ингредиенты, загрузку, энергию и логистику. Полная цепочка включена по умолчанию."], action: "production" },
    { id: "quality", title: "5. Производство с качеством", intro: "Планируйте ожидаемое распределение от Обычного до Легендарного.", points: ["Задайте качество входа, машины, модулей и максимум исследования. Результат — долгосрочное среднее.", "Режим стартует с модулями качества и безопасным пресетом одного маяка; доступна ручная настройка."], action: "quality" },
    { id: "recycling", title: "6. Переработка", intro: "Проверяйте сгенерированные рецепты и ожидаемый возврат.", points: ["Обычная переработка рассчитывает вход и число переработчиков. Обратимые твёрдые ингредиенты возвращаются в среднем на 25%; жидкости теряются.", "Качественная переработка считает от желаемого материала и качества назад к необходимому входу."], action: "recycling" },
    { id: "quality-recycling", title: "7. Качественная переработка", intro: "Рассчитывайте циклы качества от желаемого возврата.", points: ["Выберите исходный предмет, возвращаемый материал, качества и предел исследования; отображается ожидаемое распределение.", "По умолчанию действует один маяк с одним занятым слотом. Источники с жидким продуктом исключены."], action: "quality-recycling" },
    { id: "rocket", title: "8. Ракетные грузы", intro: "Рассчитайте ракеты, шахты и платформы для постоянного маршрута.", points: ["Выберите груз, точки, темп и размер партии; задайте скорость или оцените её по двигателям, ширине и массе.", "Сравните постоянные шахты с предварительно загруженной волной. Манипуляторы/роботы учитывают загрузку; игнорирование предполагает готовый груз."], action: "rocket" },
    { id: "energy", title: "9. Энергия", intro: "Преобразуйте цель в МВт или выбранные нагрузки в электростанцию.", points: ["Выберите прямую и/или цепную мощность рядом с расчётом; переключатели синхронизированы.", "Пар, солнце, атом, нагревательная башня и синтез имеют собственные параметры планеты, качества, топлива и блока."], action: "energy" },
    { id: "chains", title: "10. Полная производственная цепочка", intro: "Разверните все рецепты до сырьевых источников.", points: ["Цепочка начинается с ингредиентов и использует канонические рецепты, пока узел не переопределён. Добыча включена, генерация энергии — отдельно.", "В каждом узле отдельно меняются рецепт, машина, качество, модули, маяки и манипуляторы."], action: "production" },
    { id: "chain-wide", title: "11. Глобальные и локальные настройки цепочки", intro: "Задайте основу и меняйте только исключения.", points: ["Глобальная панель применяет изменённые поля ко всем активным цепочкам и новым продуктам; исследования и иерархии управляют автоматическим выбором машины.", "Локальная панель влияет на один продукт. Настройка узла имеет приоритет и остаётся локальной."], action: "production" },
    { id: "modules", title: "12. Модули, приоритеты, качество и маяки", intro: "Автоматический режим заполняет допустимые слоты в показанном порядке.", points: ["По умолчанию: Продуктивность › Скорость › Качество › Эффективность; недопустимая семья пропускается.", "Ручной режим задаёт каждый слот. Количество маяков физическое, а геометрия показывает реально получаемые эффекты."], action: "quality" },
    { id: "logistics", title: "13. Манипуляторы, конвейеры и поток", intro: "Проверьте, успевает ли транспорт за машинами.", points: ["Логистика считает входные/выходные манипуляторы по типу, качеству, исследованию и передаче; жидкости используют насосы.", "Итоги показывают целые конвейеры, точный эквивалент, общую загрузку и загрузку последнего конвейера."], action: "production" },
    { id: "totals", title: "14. Итоги, ведомость и геометрия", intro: "Превратите расчёты в список строительства.", points: ["Итоги объединяют ресурсы и процессы, сохраняя вклад каждого продукта; общие потоки можно разделить или сложить.", "Ведомость суммирует источники, машины, модули, маяки и манипуляторы по качеству. Геометрия показывает пропорции и покрытие, но не все соединения."], action: "production" },
    { id: "warnings", title: "15. Предупреждения, узкие места и пример", intro: "Верное число может зависеть от важного физического допущения.", points: ["До строительства проверьте предупреждения о конвейерах, модулях, жидкостях, партиях, хранилище и температуре.", "Пример: задайте 60 процессоров/мин, включите цепочку, глобально примените изученные машины, проверьте конвейеры и ведомость, затем передайте нагрузку в Энергию."] },
    { id: "faq", title: "16. FAQ, ограничения и словарь", intro: "Калькулятор детерминирован; некоторые системы игры вероятностны или зависят от схемы.", points: ["Построить — округлённое число; теоретически — точная дробь; загрузка — нагрузка последней сущности. Прямой режим исключает цепочку, цепной включает её.", "Качество и переработка — долгосрочные средние. Бесконечные исследования учитываются только отдельными регуляторами, а геометрия не является импортируемым чертежом."] },
  ],
  versionLabel: "Версия 1.0.0 · данные Factorio 2.1.17",
  releaseStatus: "Первый публичный выпуск с открытым кодом",
  unofficialTitle: "Неофициальный фанатский проект",
  unofficialNotice: "Неофициальный калькулятор, созданный фанатами. Не связан и не одобрен Wube Software Ltd. Factorio и связанные игровые материалы принадлежат Wube Software Ltd. Используются с разрешения. Бесплатно.",
  privacyTitle: "Конфиденциальность по умолчанию",
  privacyNotice: "Калькулятор не создаёт учётных записей, не хранит расчётные данные в cookie или памяти браузера и не отправляет их на сервер приложения. Хостинг может обрабатывать технические журналы, необходимые для доставки сайта.",
  publicReleaseTitle: "Лицензия и исходный код",
  publicReleaseNotice: "Исходный код доступен по лицензии GPL-3.0-only. Стороннее ПО и материалы Factorio сохраняют свои лицензии и уведомления о собственности; ссылки приведены ниже.",
};

const japanese: HelpCopy = {
  eyebrow: "ユーザーガイド · リリース 1.0.0",
  title: "必要な工場を正確に設計",
  intro: "最初から順番に読むか、目的の計算機へ直接移動できます。計算はブラウザー内で行われ、各ワークスペースは個別の設定を保持します。",
  contents: "このページの内容",
  calculators: "計算機を開く",
  openCalculator: "開く",
  quickStart: "クイックスタート",
  quickStartIntro: "最初の信頼できる計算は6ステップで完了します。詳細設定は初期値のままで始められます。",
  steps: ["目的に合う計算機を選びます。", "製品、研究目標、リサイクル品、輸送経路、または電力需要を選びます。", "目標量を入力し、/s、/min、/h を選びます。", "レシピ、機械、品質、モジュール、ビーコンを確認します。", "上流の材料と設備が必要なら生産チェーン全体を有効にします。", "警告を先に読み、合計、物流、配置図をゲーム内の建設に使います。"],
  detailsHint: "項目を選ぶと詳しい説明が開きます。",
  topics: [
    { id: "choose", title: "1. 計算機の選択", intro: "上部の各タブは異なる計画問題に対応します。", points: ["研究は研究量、生産と品質は製品、リサイクルは回収、ロケット輸送は惑星間輸送、電力は発電設備を計算します。", "通常と品質のワークスペースは独立しています。リセットは開いている計算機だけに作用します。"] },
    { id: "rates", title: "2. 速度・製品・レシピ・機械", intro: "欲しい結果から入力して上流へ逆算します。", points: ["同じ速度を毎秒、毎分、毎時で表示できます。変わるのは時間単位だけです。", "製品、代替レシピ、対応機械を選びます。入力制限モードでは既知の材料供給から出力を計算します。"], action: "production" },
    { id: "science", title: "3. 研究", intro: "供給パックから有効研究量、または目標から必要パックを計算します。", points: ["パック品質、生産性、バイオ研究所の50%消費が1パックの研究価値を変え、速度と研究所品質が処理能力と必要数を変えます。", "入力と結果の単位は独立しています。ビーコンは無効、手動、最適化配置を選べます。"], action: "science" },
    { id: "production", title: "4. 生産", intro: "以前の目標を失わずに複数の製品を同時に計算します。", points: ["製品を追加で同時目標を作成します。材料や下流製品を押すと、対応する現在の設定を引き継ぎます。", "直接結果には機械数、出力、材料、稼働率、電力、物流が表示されます。全チェーンは初期状態で有効です。"], action: "production" },
    { id: "quality", title: "5. 品質生産", intro: "ノーマルから伝説までの期待出力と上流品質を計画します。", points: ["入力、機械、モジュール、研究上限の品質を設定します。結果は長期的な期待分布です。", "品質モジュールと品質安全な1ビーコン設定から開始し、手動設定も利用できます。"], action: "quality" },
    { id: "recycling", title: "6. リサイクル", intro: "生成済みリサイクルレシピと期待回収量を確認します。", points: ["通常リサイクルは入力速度とリサイクラー数を計算します。可逆な固体材料は平均25%戻り、流体は失われます。", "品質リサイクルは欲しい回収材料と品質から必要入力を逆算します。"], action: "recycling" },
    { id: "quality-recycling", title: "7. 品質リサイクル", intro: "回収したい出力から品質ループを逆算します。", points: ["元アイテム、回収材料、入力・目標品質、研究上限を選ぶと期待分布が表示されます。", "初期値はビーコン効果1つ、使用スロット1つです。流体を生成する元レシピは除外されます。"], action: "quality-recycling" },
    { id: "rocket", title: "8. ロケット輸送", intro: "継続的な惑星間輸送に必要なロケット、サイロ、プラットフォームを計算します。", points: ["貨物、出発地、目的地、速度、バッチを選びます。速度は直接入力するか、スラスター、幅、質量から推定します。", "継続サイロと事前装填ウェーブを比較します。インサータ/ロボットは装填時間を含み、無視は即時または装填済みを仮定します。"], action: "rocket" },
    { id: "energy", title: "9. 電力", intro: "手動MW目標または選択した負荷から発電設備を計算します。", points: ["各計算で直接/チェーン電力を選ぶと、電力タブの同じスイッチと同期します。", "蒸気、太陽光、原子力、加熱塔、核融合には惑星、品質、燃料、ブロック固有の条件があります。"], action: "energy" },
    { id: "chains", title: "10. 生産チェーン全体", intro: "すべての上流レシピを原料まで展開します。", points: ["チェーンは材料から始まり、ノードを変更しない限り標準レシピを使います。採掘は含み、発電は別計算です。", "各ノードでレシピ、機械、品質、モジュール、ビーコン、インサータを個別に上書きできます。"], action: "production" },
    { id: "chain-wide", title: "11. グローバル/ローカルのチェーン設定", intro: "共通の基準を設定し、例外だけを調整します。", points: ["グローバルパネルは変更項目を有効な全チェーンと新製品へ適用し、研究状態と優先順位が自動機械選択を制御します。", "ローカルパネルは1製品だけに作用します。ノード上書きが最優先で、後のローカル編集もローカルのままです。"], action: "production" },
    { id: "modules", title: "12. モジュール・優先度・品質・ビーコン", intro: "自動モードは表示順で有効なスロットを埋めます。", points: ["初期優先度は 生産性 › 速度 › 品質 › 効率 です。禁止された種類は次の有効な種類へ進みます。", "手動では各スロットを設定します。ビーコン数は実設備数で、配置図は機械ごとの実効果数を示します。"], action: "quality" },
    { id: "logistics", title: "13. インサータ・ベルト・処理量", intro: "物流が機械の速度に追いつくか確認します。", points: ["機械物流は種類、品質、研究、受け渡しから入出力インサータ数を計算し、流体にはポンプを使います。", "合計ではベルト段階とスタック数から必要本数、正確な換算、全体と最終ベルトの使用率を表示します。"], action: "production" },
    { id: "totals", title: "14. 合計・建設表・配置図", intro: "計算結果を建設リストに変換します。", points: ["全生産合計は製品別の寄与を残して資源と工程を統合し、共有流量は分離または合算できます。", "建設表は品質別に供給設備、機械、モジュール、ビーコン、インサータを合計します。配置図は比率と範囲を示し、接続を省略する場合があります。"], action: "production" },
    { id: "warnings", title: "15. 警告・ボトルネック・例", intro: "正しい数値でも重要な物理条件に依存する場合があります。", points: ["建設前にベルト、モジュール、流体損失、貨物ウェーブ、保管、温度の警告を確認してください。", "例：処理基板60/min、全チェーン有効、研究済み機械を全体適用、ベルトと建設表を確認し、選択電力を電力タブへ送ります。"] },
    { id: "faq", title: "16. FAQ・制限・用語", intro: "計算は決定論的ですが、ゲーム内には確率や配置に依存する仕組みがあります。", points: ["建設は切り上げ設備数、理論値は正確な小数、稼働率は最後の設備の負荷です。直接は上流を除外し、チェーンは含みます。", "品質とリサイクルは長期平均です。無限研究は専用設定がある場合だけ適用され、配置図はインポート可能な設計図ではありません。"] },
  ],
  versionLabel: "バージョン 1.0.0 · Factorio データ 2.1.17",
  releaseStatus: "初回公開オープンソース版",
  unofficialTitle: "非公式ファンプロジェクト",
  unofficialNotice: "ファン制作の非公式計算機です。Wube Software Ltd. との提携や同社による承認はありません。Factorio と関連ゲーム素材は Wube Software Ltd. の所有物で、許可を得て使用しています。無料で利用できます。",
  privacyTitle: "プライバシー重視の設計",
  privacyNotice: "計算機はアカウントを作成せず、計算入力をCookieやブラウザー保存領域に保存せず、バックエンドへ送信しません。ホスティング事業者はサイト配信に必要な技術ログを処理する場合があります。",
  publicReleaseTitle: "ライセンスとソースコード",
  publicReleaseNotice: "ソースコードはGPL-3.0-onlyで公開されています。第三者ソフトウェアとFactorio素材には各自のライセンスと所有権表示が適用されます。リンクは下部にあります。",
};

const simplifiedChinese: HelpCopy = {
  eyebrow: "用户指南 · 版本 1.0.0",
  title: "精确规划你需要的工厂",
  intro: "可按步骤阅读，也可直接打开计算器。所有计算都在浏览器内完成，每个工作区分别保留自己的设置。",
  contents: "本页内容",
  calculators: "打开计算器",
  openCalculator: "打开",
  quickStart: "快速开始",
  quickStartIntro: "六个步骤即可完成可靠的首次计算；高级设置可以先保持默认值。",
  steps: ["选择符合问题的计算器。", "选择产品、研究目标、回收物品、货运路线或电力需求。", "输入目标数量并选择 /s、/min 或 /h。", "检查配方、机器、品质、插件和插件塔。", "需要上游材料和建筑时启用完整生产链。", "先阅读警告，再利用汇总、物流和布局在游戏中建造。"],
  detailsHint: "选择主题以展开完整说明。",
  topics: [
    { id: "choose", title: "1. 选择合适的计算器", intro: "顶部各标签对应不同的工厂规划问题。", points: ["科研计算研究；生产和品质计算产品；回收计算返还；火箭货运计算星际运输；能源计算发电。", "普通与品质工作区互相独立。重置只影响当前计算器。"] },
    { id: "rates", title: "2. 速率、产品、配方与机器", intro: "从想要的结果开始，由计算器向上游倒推。", points: ["同一速率可按秒、分钟或小时显示；只改变时间基准，不改变工厂比例。", "先选产品，再选替代配方和兼容机器。输入受限模式根据已知材料供给计算输出。"], action: "production" },
    { id: "science", title: "3. 科研", intro: "把输入科技包换算为有效研究，或由研究目标反算所需科技包。", points: ["科技包品质、产能和生物研究室50%消耗改变每包研究价值；速度和研究室品质改变处理能力及数量。", "输入与结果单位互相独立。插件塔可关闭、手动选择或使用优化布局。"], action: "science" },
    { id: "production", title: "4. 生产", intro: "同时计算多个产品而不丢失之前的目标设置。", points: ["添加产品会建立另一个同时目标。点击材料或下游产品会复用当前卡片及兼容设置。", "直接结果显示机器数、输出、材料、利用率、电力和物流。完整生产链默认启用，可按产品关闭。"], action: "production" },
    { id: "quality", title: "5. 品质生产", intro: "规划普通到传说的预期输出，并让品质沿上游传递。", points: ["设置输入、机器、插件品质及研究上限。结果是长期期望分布，小样本可能波动。", "初始使用品质插件和品质安全的单插件塔预设，也可以手动调整。"], action: "quality" },
    { id: "recycling", title: "6. 回收", intro: "查看生成的回收配方及预期返还。", points: ["普通回收计算输入速率和回收机数量。可逆固体材料平均返还25%，流体会损失。", "品质回收从想要的返还材料和目标品质倒推所需输入与机器。"], action: "recycling" },
    { id: "quality-recycling", title: "7. 品质回收", intro: "从目标返还输出倒推品质循环。", points: ["选择来源物品、返还材料、输入/目标品质和研究上限，查看预期品质分布。", "默认获得一个插件塔效果并占用一个插件槽。会产生流体的来源配方被排除。"], action: "quality-recycling" },
    { id: "rocket", title: "8. 火箭货运", intro: "为持续的星际路线计算火箭、发射井和平台。", points: ["选择货物、起点、终点、配送速率和批量；可直接输入平台速度或根据推进器、宽度和质量估算。", "比较持续发射井与预装货物波次。机械臂/机器人计入装载时间；忽略装载表示即时或预先装好。"], action: "rocket" },
    { id: "energy", title: "9. 能源", intro: "把手动MW目标或选中的计算负载转换为发电方案。", points: ["在计算旁选择直接和/或生产链电力；同一开关会与能源页同步。", "蒸汽、太阳能、核能、供热塔和聚变拥有各自的星球、品质、燃料和区块假设。"], action: "energy" },
    { id: "chains", title: "10. 完整生产链", intro: "展开所有上游配方直到原始资源。", points: ["生产链从材料开始，除非覆盖节点，否则采用标准配方。包含采掘建筑，但发电单独计算。", "每个节点可单独覆盖配方、机器、品质、插件、插件塔和机械臂。"], action: "production" },
    { id: "chain-wide", title: "11. 全局与局部生产链设置", intro: "先设共同基准，再只调整例外。", points: ["全局面板把变更字段应用到所有活动生产链和新产品；研究状态及各配方类别优先级控制自动机器。", "局部面板只影响一个产品。节点覆盖优先级最高，之后的局部修改仍保持局部。"], action: "production" },
    { id: "modules", title: "12. 插件、优先级、品质与插件塔", intro: "自动模式按显示顺序填入有效插件槽。", points: ["默认顺序为 产能 › 速度 › 品质 › 节能；不允许的类型会跳到下一种。", "手动模式可控制每个槽位。插件塔数量代表实体建筑，布局显示每台机器实际获得的效果数。"], action: "quality" },
    { id: "logistics", title: "13. 机械臂、传送带与吞吐量", intro: "检查物流是否能跟上机器。", points: ["机器物流按类型、品质、运量研究和交接计算输入/输出机械臂；流体使用泵。", "汇总按等级和堆叠研究计算完整传送带数量、精确等价、总利用率及末条利用率。"], action: "production" },
    { id: "totals", title: "14. 汇总、建造清单与布局", intro: "把计算转换为可建造清单。", points: ["全部生产汇总合并资源和流程，同时保留各产品贡献；共享物流可分开或合并。", "建造清单按品质汇总来源、机器、插件、插件塔和机械臂。布局显示比例与覆盖范围，可能省略连接设施。"], action: "production" },
    { id: "warnings", title: "15. 警告、瓶颈与示例", intro: "有效数字仍可能依赖重要的实体假设。", points: ["建造前先检查传送带、插件、流体损失、货物波次、存储或温度警告。", "示例：设置60处理器/min，启用生产链，全局应用已研究机器，检查传送带与建造清单，再把选中负载发送到能源。"] },
    { id: "faq", title: "16. 常见问题、限制与术语", intro: "计算器是确定性的，但游戏中的部分系统具有概率或布局依赖。", points: ["建造表示向上取整的实体数；理论表示精确小数；利用率是最后一个实体的负载。直接不含上游，生产链包含上游。", "品质和回收为长期平均。无限研究仅在有专用控件时应用；布局图不是可导入蓝图。"] },
  ],
  versionLabel: "版本 1.0.0 · Factorio 数据 2.1.17",
  releaseStatus: "首个公开开源版本",
  unofficialTitle: "非官方粉丝项目",
  unofficialNotice: "非官方粉丝制作计算器，与 Wube Software Ltd. 无隶属关系，也未获其背书。Factorio 及相关游戏资源归 Wube Software Ltd. 所有，经许可使用。免费使用。",
  privacyTitle: "隐私保护设计",
  privacyNotice: "计算器不创建账户，不把计算输入存入Cookie或浏览器存储，也不发送到应用后端。托管服务商可能处理网站交付所需的技术访问日志。",
  publicReleaseTitle: "许可证与源代码",
  publicReleaseNotice: "源代码按GPL-3.0-only发布。第三方软件与Factorio素材继续适用各自许可证和所有权声明；相关链接位于下方。",
};

const traditionalChinese: HelpCopy = {
  eyebrow: "使用者指南 · 版本 1.0.0",
  title: "精確規劃你需要的工廠",
  intro: "可依步驟閱讀，也可直接開啟計算器。所有計算都在瀏覽器內完成，每個工作區分別保留自己的設定。",
  contents: "本頁內容",
  calculators: "開啟計算器",
  openCalculator: "開啟",
  quickStart: "快速開始",
  quickStartIntro: "六個步驟即可完成可靠的首次計算；進階設定可以先保持預設值。",
  steps: ["選擇符合問題的計算器。", "選擇產品、研究目標、回收物品、貨運路線或電力需求。", "輸入目標數量並選擇 /s、/min 或 /h。", "檢查配方、設備、品質、插件和插件塔。", "需要上游材料和建築時啟用完整生產鏈。", "先閱讀警告，再利用彙總、物流和配置在遊戲中建造。"],
  detailsHint: "選擇主題以展開完整說明。",
  topics: [
    { id: "choose", title: "1. 選擇合適的計算器", intro: "頂部各分頁對應不同的工廠規劃問題。", points: ["科研計算研究；生產和品質計算產品；回收計算返還；火箭貨運計算星際運輸；能源計算發電。", "普通與品質工作區互相獨立。重設只影響目前計算器。"] },
    { id: "rates", title: "2. 速率、產品、配方與設備", intro: "從想要的結果開始，由計算器向上游倒推。", points: ["同一速率可按秒、分鐘或小時顯示；只改變時間基準，不改變工廠比例。", "先選產品，再選替代配方和相容設備。輸入受限模式依已知材料供給計算輸出。"], action: "production" },
    { id: "science", title: "3. 科研", intro: "把輸入科技包換算為有效研究，或由研究目標反算所需科技包。", points: ["科技包品質、產能和生物研究室50%消耗改變每包研究價值；速度和研究室品質改變處理能力及數量。", "輸入與結果單位互相獨立。插件塔可關閉、手動選擇或使用最佳化配置。"], action: "science" },
    { id: "production", title: "4. 生產", intro: "同時計算多個產品而不遺失先前的目標設定。", points: ["新增產品會建立另一個同時目標。點選材料或下游產品會重用目前卡片及相容設定。", "直接結果顯示設備數、輸出、材料、使用率、電力和物流。完整生產鏈預設啟用，可依產品關閉。"], action: "production" },
    { id: "quality", title: "5. 品質生產", intro: "規劃普通到傳說的預期輸出，並讓品質沿上游傳遞。", points: ["設定輸入、設備、插件品質及研究上限。結果是長期預期分布，小樣本可能波動。", "初始使用品質插件和品質安全的單插件塔預設，也可以手動調整。"], action: "quality" },
    { id: "recycling", title: "6. 回收", intro: "查看生成的回收配方及預期返還。", points: ["普通回收計算輸入速率和回收機數量。可逆固體材料平均返還25%，流體會損失。", "品質回收從想要的返還材料和目標品質倒推所需輸入與設備。"], action: "recycling" },
    { id: "quality-recycling", title: "7. 品質回收", intro: "從目標返還輸出倒推品質循環。", points: ["選擇來源物品、返還材料、輸入/目標品質和研究上限，查看預期品質分布。", "預設獲得一個插件塔效果並占用一個插件槽。會產生流體的來源配方被排除。"], action: "quality-recycling" },
    { id: "rocket", title: "8. 火箭貨運", intro: "為持續的星際路線計算火箭、發射井和平台。", points: ["選擇貨物、起點、終點、配送速率和批量；可直接輸入平台速度或依推進器、寬度和質量估算。", "比較持續發射井與預裝貨物波次。機械臂/機器人計入裝載時間；忽略裝載表示即時或預先裝好。"], action: "rocket" },
    { id: "energy", title: "9. 能源", intro: "把手動MW目標或選取的計算負載轉換為發電方案。", points: ["在計算旁選擇直接和/或生產鏈電力；同一開關會與能源頁同步。", "蒸汽、太陽能、核能、供熱塔和核融合擁有各自的星球、品質、燃料和區塊假設。"], action: "energy" },
    { id: "chains", title: "10. 完整生產鏈", intro: "展開所有上游配方直到原始資源。", points: ["生產鏈從材料開始，除非覆寫節點，否則採用標準配方。包含採掘建築，但發電另行計算。", "每個節點可單獨覆寫配方、設備、品質、插件、插件塔和機械臂。"], action: "production" },
    { id: "chain-wide", title: "11. 全域與局部生產鏈設定", intro: "先設共同基準，再只調整例外。", points: ["全域面板把變更欄位套用到所有活動生產鏈和新產品；研究狀態及各配方類別優先順序控制自動設備。", "局部面板只影響一個產品。節點覆寫優先順序最高，之後的局部修改仍保持局部。"], action: "production" },
    { id: "modules", title: "12. 插件、優先順序、品質與插件塔", intro: "自動模式依顯示順序填入有效插件槽。", points: ["預設順序為 產能 › 速度 › 品質 › 節能；不允許的類型會跳到下一種。", "手動模式可控制每個槽位。插件塔數量代表實體建築，配置顯示每台設備實際獲得的效果數。"], action: "quality" },
    { id: "logistics", title: "13. 機械臂、輸送帶與吞吐量", intro: "檢查物流是否能跟上設備。", points: ["設備物流依類型、品質、運量研究和交接計算輸入/輸出機械臂；流體使用幫浦。", "彙總依等級和堆疊研究計算完整輸送帶數量、精確等價、總使用率及末條使用率。"], action: "production" },
    { id: "totals", title: "14. 彙總、建造清單與配置", intro: "把計算轉換為可建造清單。", points: ["全部生產彙總合併資源和流程，同時保留各產品貢獻；共享物流可分開或合併。", "建造清單依品質彙總來源、設備、插件、插件塔和機械臂。配置顯示比例與涵蓋範圍，可能省略連接設施。"], action: "production" },
    { id: "warnings", title: "15. 警告、瓶頸與範例", intro: "有效數字仍可能依賴重要的實體假設。", points: ["建造前先檢查輸送帶、插件、流體損失、貨物波次、儲存或溫度警告。", "範例：設定60處理器/min，啟用生產鏈，全域套用已研究設備，檢查輸送帶與建造清單，再把選取負載傳送到能源。"] },
    { id: "faq", title: "16. 常見問題、限制與術語", intro: "計算器是確定性的，但遊戲中的部分系統具有機率或配置依賴。", points: ["建造表示向上取整的實體數；理論表示精確小數；使用率是最後一個實體的負載。直接不含上游，生產鏈包含上游。", "品質和回收為長期平均。無限研究僅在有專用控制時套用；配置圖不是可匯入藍圖。"] },
  ],
  versionLabel: "版本 1.0.0 · Factorio 資料 2.1.17",
  releaseStatus: "首個公開開源版本",
  unofficialTitle: "非官方粉絲專案",
  unofficialNotice: "非官方粉絲製作計算器，與 Wube Software Ltd. 無隸屬關係，也未獲其背書。Factorio 及相關遊戲資源歸 Wube Software Ltd. 所有，經許可使用。免費使用。",
  privacyTitle: "隱私保護設計",
  privacyNotice: "計算器不建立帳號，不把計算輸入存入Cookie或瀏覽器儲存，也不傳送到應用程式後端。託管服務商可能處理網站傳送所需的技術存取日誌。",
  publicReleaseTitle: "授權條款與原始碼",
  publicReleaseNotice: "原始碼依GPL-3.0-only發布。第三方軟體與Factorio素材仍適用各自授權條款和所有權聲明；相關連結位於下方。",
};

const baseCopy: Record<Locale, HelpCopy> = {
  en: english,
  de: german,
  "es-ES": spanish,
  fr: french,
  it: italian,
  ja: japanese,
  ru: russian,
  "zh-CN": simplifiedChinese,
  "zh-TW": traditionalChinese,
};

export const HELP_COPY = Object.fromEntries(
  (Object.entries(baseCopy) as Array<[Locale, HelpCopy]>).map(([locale, copy]) => {
    const guide = HELP_GUIDES[locale];
    const topics = copy.topics.map((topic) => ({
      ...topic,
      points: guide.corrections[topic.id] ?? topic.points,
      details: guide.topics[topic.id].map((text, index) => ({
        title: guide.labels[index],
        text,
      })),
    }));
    const blueprint: HelpTopic = {
      id: "blueprints",
      ...guide.blueprint,
      action: "production",
    };
    return [locale, { ...copy, topics: [...topics.slice(0, 14), blueprint, ...topics.slice(14)] }];
  }),
) as Record<Locale, HelpCopy>;
