// Landing page i18n — auto-detect from navigator.language with manual override.
//
// Languages: en (default), ja, zh-CN, ko, es, fr, de, pt-BR.
// Supported elements: nav, hero, section headings, scenario picker labels,
// CTA buttons, footer category headings.
//
// Strategy:
//   1. Detect from navigator.language (or stored override in localStorage).
//   2. Map to supported language code (prefix match → fallback to "en").
//   3. Replace text content of every element with [data-i18n="key"].
//   4. Replace placeholders / titles via [data-i18n-placeholder] / [data-i18n-title].
//   5. Add a language switcher dropdown in the nav.
//
// Rationale: full body translation of a 1500-line landing is impractical;
// translating the top-of-funnel elements (hero, nav, CTAs, headings) is
// what affects conversion. Body content remains English with a "translation
// in progress" hint when applicable.

(function () {
  const SUPPORTED = ["en", "ja", "zh-CN", "ko", "es", "fr", "de", "pt-BR"];

  const LANG_DISPLAY = {
    "en": "English",
    "ja": "日本語",
    "zh-CN": "简体中文",
    "ko": "한국어",
    "es": "Español",
    "fr": "Français",
    "de": "Deutsch",
    "pt-BR": "Português (BR)",
  };

  // Translations. Keys match data-i18n attributes in HTML.
  const T = {
    // ----- Navigation -----
    "nav.try": {
      en: "Try it",
      ja: "試す",
      "zh-CN": "试用",
      ko: "체험",
      es: "Probar",
      fr: "Essayer",
      de: "Ausprobieren",
      "pt-BR": "Experimentar",
    },
    "nav.features": {
      en: "Features",
      ja: "機能",
      "zh-CN": "功能",
      ko: "기능",
      es: "Funciones",
      fr: "Fonctionnalités",
      de: "Funktionen",
      "pt-BR": "Recursos",
    },
    "nav.who": {
      en: "Who it's for",
      ja: "対象ユーザ",
      "zh-CN": "适合谁",
      ko: "대상",
      es: "Para quién",
      fr: "Pour qui",
      de: "Für wen",
      "pt-BR": "Para quem",
    },
    "nav.oss": {
      en: "OSS edge",
      ja: "OSS の強み",
      "zh-CN": "OSS 优势",
      ko: "OSS 강점",
      es: "Ventaja OSS",
      fr: "Avantage OSS",
      de: "OSS-Vorteil",
      "pt-BR": "Vantagem OSS",
    },
    "nav.how": {
      en: "How it works",
      ja: "仕組み",
      "zh-CN": "工作原理",
      ko: "작동 방식",
      es: "Cómo funciona",
      fr: "Comment ça marche",
      de: "Funktionsweise",
      "pt-BR": "Como funciona",
    },
    "nav.examples": {
      en: "Examples",
      ja: "事例",
      "zh-CN": "示例",
      ko: "예시",
      es: "Ejemplos",
      fr: "Exemples",
      de: "Beispiele",
      "pt-BR": "Exemplos",
    },
    "nav.roi": {
      en: "ROI",
      ja: "ROI",
      "zh-CN": "投资回报",
      ko: "ROI",
      es: "ROI",
      fr: "ROI",
      de: "ROI",
      "pt-BR": "ROI",
    },
    "nav.extend": {
      en: "Extend",
      ja: "拡張",
      "zh-CN": "扩展",
      ko: "확장",
      es: "Extender",
      fr: "Étendre",
      de: "Erweitern",
      "pt-BR": "Estender",
    },
    "nav.faq": {
      en: "FAQ",
      ja: "FAQ",
      "zh-CN": "常见问题",
      ko: "자주 묻는 질문",
      es: "FAQ",
      fr: "FAQ",
      de: "FAQ",
      "pt-BR": "FAQ",
    },
    "nav.editions": {
      en: "Editions",
      ja: "エディション",
      "zh-CN": "版本",
      ko: "에디션",
      es: "Ediciones",
      fr: "Éditions",
      de: "Editionen",
      "pt-BR": "Edições",
    },
    "nav.portal": {
      en: "Open Portal",
      ja: "ポータルを開く",
      "zh-CN": "打开门户",
      ko: "포털 열기",
      es: "Abrir Portal",
      fr: "Ouvrir le Portail",
      de: "Portal öffnen",
      "pt-BR": "Abrir Portal",
    },

    // ----- Hero -----
    "hero.kicker": {
      en: "Open Source · Apache 2.0 · Alpha",
      ja: "オープンソース · Apache 2.0 · アルファ版",
      "zh-CN": "开源 · Apache 2.0 · Alpha 版",
      ko: "오픈 소스 · Apache 2.0 · 알파",
      es: "Open Source · Apache 2.0 · Alfa",
      fr: "Open Source · Apache 2.0 · Alpha",
      de: "Open Source · Apache 2.0 · Alpha",
      "pt-BR": "Open Source · Apache 2.0 · Alfa",
    },
    "hero.h1": {
      en: "<em>Say it once.</em> Praxia schedules, fans out, and learns.",
      ja: "<em>一度話すだけ。</em>Praxia が予約・並列実行・学習まで自動化。",
      "zh-CN": "<em>说一次。</em>Praxia 自动安排、并行执行并不断学习。",
      ko: "<em>한 번 말하면 됩니다.</em>Praxia 가 예약·병렬 실행·학습까지 자동화.",
      es: "<em>Díselo una vez.</em> Praxia lo programa, lo paraleliza y aprende.",
      fr: "<em>Dites-le une fois.</em> Praxia planifie, parallélise et apprend.",
      de: "<em>Sagen Sie es einmal.</em> Praxia plant, parallelisiert und lernt.",
      "pt-BR": "<em>Diga uma vez.</em> O Praxia agenda, paraleliza e aprende.",
    },
    "hero.sub": {
      en: "A Windows AI desktop that turns natural-language requests into <strong>recurring schedules</strong>, <strong>parallel batches</strong>, and <strong>styled decks</strong> — instantly. Ask &ldquo;every Monday morning, summarise yesterday's docs folder&rdquo; and Praxia parses the cron, creates the schedule, and pings you when it fires. With a <strong>personal → organizational memory loop</strong> that promotes senior staff's tacit knowledge into shared best practices automatically.",
      ja: "自然言語のリクエストを<strong>定期スケジュール</strong>・<strong>並列バッチ</strong>・<strong>スタイル付き資料</strong>に即変換する Windows AI デスクトップ。「毎週月曜の朝、昨日の Documents フォルダ変更を要約して」と話せば、Praxia が cron を解釈してスケジュールを自動作成、起動時に通知。さらに<strong>個人 → 組織のメモリ循環</strong>でシニアの暗黙知が自動でベストプラクティスへ昇格。",
      "zh-CN": "将自然语言请求即时转换为<strong>定期任务</strong>、<strong>并行批处理</strong>、<strong>带主题的演示文稿</strong>的 Windows AI 桌面。说「每周一上午,总结昨天 Documents 文件夹的变更」,Praxia 自动解析 cron 并创建计划,触发时通知您。内置<strong>个人到组织记忆循环</strong>,资深员工的隐性知识自动晋升为共享最佳实践。",
      ko: "자연어 요청을 <strong>정기 스케줄</strong>、<strong>병렬 배치</strong>、<strong>스타일 적용 자료</strong>로 즉시 변환하는 Windows AI 데스크톱. &ldquo;매주 월요일 아침에 어제 Documents 변경 요약&rdquo;이라고 말하면 Praxia 가 cron 을 파싱해 스케줄을 만들고 실행 시 알려줍니다. <strong>개인 → 조직 메모리 루프</strong>로 시니어의 암묵지가 자동으로 공유 베스트 프랙티스로 승격됩니다.",
      es: "Un escritorio AI para Windows que convierte solicitudes en lenguaje natural en <strong>horarios recurrentes</strong>, <strong>lotes paralelos</strong> y <strong>presentaciones con tema</strong> al instante. Di &laquo;todos los lunes por la mañana, resume los cambios de Documents&raquo; y Praxia interpreta el cron, crea la programación y te avisa al ejecutarse. Con un <strong>ciclo de memoria personal-a-organizacional</strong> que promueve el conocimiento tácito a buenas prácticas compartidas.",
      fr: "Un bureau IA Windows qui transforme instantanément les requêtes en langage naturel en <strong>planifications récurrentes</strong>, <strong>lots parallèles</strong> et <strong>présentations stylisées</strong>. Dites &laquo; chaque lundi matin, résume les changements de Documents &raquo; et Praxia interprète le cron, crée la planification et vous notifie. Avec une <strong>boucle de mémoire personnelle-à-organisationnelle</strong> qui promeut automatiquement le savoir-faire tacite.",
      de: "Ein Windows-KI-Desktop, der Anfragen in natürlicher Sprache sofort in <strong>wiederkehrende Pläne</strong>, <strong>parallele Stapel</strong> und <strong>Designer-Foliensätze</strong> verwandelt. Sagen Sie &bdquo;jeden Montagmorgen die gestrigen Documents-Änderungen zusammenfassen&ldquo; und Praxia parst den Cron-Ausdruck, legt den Plan an und meldet sich beim Ausführen. Plus <strong>persönlich-zu-organisationale Speicherschleife</strong>.",
      "pt-BR": "Um desktop AI para Windows que converte solicitações em linguagem natural em <strong>agendamentos recorrentes</strong>, <strong>lotes paralelos</strong> e <strong>apresentações com tema</strong> instantaneamente. Diga &ldquo;toda segunda-feira de manhã, resuma as mudanças de Documents&rdquo; e o Praxia interpreta o cron, cria o agendamento e avisa quando dispara. Com <strong>ciclo de memória pessoal-para-organizacional</strong> que promove conhecimento tácito a melhores práticas.",
    },
    "hero.cta_download": {
      en: "📦 Download for Windows (.exe, 165 MB)",
      ja: "📦 Windows 版をダウンロード (.exe / 147 MB)",
      "zh-CN": "📦 下载 Windows 版 (.exe / 147 MB)",
      ko: "📦 Windows 다운로드 (.exe / 147 MB)",
      es: "📦 Descargar para Windows (.exe, 165 MB)",
      fr: "📦 Télécharger pour Windows (.exe, 165 MB)",
      de: "📦 Download für Windows (.exe, 165 MB)",
      "pt-BR": "📦 Baixar para Windows (.exe, 165 MB)",
    },
    "hero.cta_download_sub": {
      en: "Windows 10 / 11 x64 alpha. No <code>pip install</code> or Python required. macOS / Linux coming soon.",
      ja: "Windows 10 / 11 x64 alpha。<code>pip install</code> や Python は不要。macOS / Linux は近日公開。",
      "zh-CN": "Windows 10 / 11 x64 alpha。无需 <code>pip install</code> 或 Python。macOS / Linux 即将推出。",
      ko: "Windows 10 / 11 x64 alpha. <code>pip install</code> 나 Python 불필요. macOS / Linux 곧 공개.",
      es: "Windows 10 / 11 x64 alpha. Sin <code>pip install</code> ni Python. macOS / Linux próximamente.",
      fr: "Windows 10 / 11 x64 alpha. Pas de <code>pip install</code> ni Python. macOS / Linux bientôt.",
      de: "Windows 10 / 11 x64 Alpha. Kein <code>pip install</code>, kein Python nötig. macOS / Linux bald verfügbar.",
      "pt-BR": "Windows 10 / 11 x64 alpha. Sem <code>pip install</code> ou Python. macOS / Linux em breve.",
    },
    "hero.cta_get_started": {
      en: "Quickstart ↓",
      ja: "クイックスタート ↓",
      "zh-CN": "快速开始 ↓",
      ko: "퀵스타트 ↓",
      es: "Inicio rápido ↓",
      fr: "Démarrage rapide ↓",
      de: "Schnellstart ↓",
      "pt-BR": "Início rápido ↓",
    },
    "hero.video.full": {
      en: "Watch the full version on YouTube (60s)",
      ja: "YouTube でフル版を見る (60秒)",
      "zh-CN": "在 YouTube 上观看完整版 (60秒)",
      ko: "YouTube에서 전체 영상 보기 (60초)",
      es: "Ver la versión completa en YouTube (60s)",
      fr: "Voir la version complète sur YouTube (60s)",
      de: "Vollversion auf YouTube ansehen (60s)",
      "pt-BR": "Assistir versão completa no YouTube (60s)",
    },
    "hero.cta_star": {
      en: "★ Star on GitHub",
      ja: "★ GitHub で Star",
      "zh-CN": "★ 在 GitHub 上加星",
      ko: "★ GitHub에서 스타",
      es: "★ Estrella en GitHub",
      fr: "★ Étoile sur GitHub",
      de: "★ Auf GitHub markieren",
      "pt-BR": "★ Estrela no GitHub",
    },

    // ----- Section headings (kicker + h2 only) -----
    "install.kicker": {
      en: "5-minute Quickstart",
      ja: "5 分クイックスタート",
      "zh-CN": "5 分钟快速开始",
      ko: "5 분 빠른 시작",
      es: "Quickstart en 5 minutos",
      fr: "Démarrage rapide en 5 minutes",
      de: "5-Minuten-Schnellstart",
      "pt-BR": "Quickstart em 5 minutos",
    },
    "install.h2": {
      en: "From <code>pip install</code> to live agent in under 5 minutes.",
      ja: "<code>pip install</code> から稼働する agent まで 5 分以内。",
      "zh-CN": "从 <code>pip install</code> 到运行中的代理,不到 5 分钟。",
      ko: "<code>pip install</code> 부터 작동하는 에이전트까지 5 분 이내.",
      es: "De <code>pip install</code> a un agente en marcha en menos de 5 minutos.",
      fr: "De <code>pip install</code> à un agent en marche en moins de 5 minutes.",
      de: "Von <code>pip install</code> zum laufenden Agenten in unter 5 Minuten.",
      "pt-BR": "De <code>pip install</code> ao agente em execução em menos de 5 minutos.",
    },
    "install.desktop_h3": {
      en: "Native desktop app (no Python required)",
      ja: "ネイティブ・デスクトップ・アプリ (Python 不要)",
      "zh-CN": "原生桌面应用 (无需 Python)",
      ko: "네이티브 데스크톱 앱 (Python 불필요)",
      es: "App de escritorio nativa (no requiere Python)",
      fr: "App de bureau native (sans Python)",
      de: "Native Desktop-App (kein Python erforderlich)",
      "pt-BR": "App de desktop nativo (sem Python)",
    },
    "install.desktop_body": {
      en: "The easiest way to try Praxia is the native desktop installer. <strong>The app embeds the Praxia server inside the installer</strong> — install, launch, paste an LLM provider key, and you're running. No <code>praxia serve</code> process to start, no <code>pip install</code>, no Python on the user's machine. Settings exposes only the three things a user controls: <strong>LLM provider keys</strong> (Anthropic / OpenAI / Google / Azure OpenAI / Qwen DashScope / Hugging Face — Gemma covered via all three cloud paths), <strong>local LLM</strong> (Ollama URL + model), and optional <strong>SSO tenant URL</strong>. Everything else (port, API key, storage layout, CORS) is managed automatically.",
      ja: "Praxia を試す一番楽な方法はネイティブのデスクトップインストーラです。<strong>Praxia サーバはインストーラに同梱されています</strong> — インストール → 起動 → LLM プロバイダの API キーを貼り付ければ動きます。<code>praxia serve</code> を立てる必要なし、<code>pip install</code> も Python も不要。Settings は本当にユーザが触るべき 3 項目に絞り: <strong>LLM プロバイダキー</strong>(Anthropic / OpenAI / Google / Azure OpenAI / Qwen DashScope / Hugging Face — Gemma も全 3 経路で対応)、<strong>ローカル LLM</strong>(Ollama URL + モデル名)、<strong>SSO テナント URL</strong>(任意)。それ以外(ポート、API キー、ストレージ配置、CORS)はすべて自動管理。",
      "zh-CN": "试用 Praxia 最简单的方法是原生桌面安装程序。<strong>应用程序在安装程序内嵌入了 Praxia 服务器</strong> — 安装、启动、粘贴 LLM 提供商密钥即可运行。无需启动 <code>praxia serve</code> 进程、无需 <code>pip install</code>、用户机器上无需 Python。设置仅暴露用户实际控制的三项:<strong>LLM 提供商密钥</strong>(Anthropic / OpenAI / Google / Azure OpenAI / Qwen DashScope / Hugging Face — Gemma 通过所有三种云路径覆盖)、<strong>本地 LLM</strong>(Ollama URL + 模型)和可选的 <strong>SSO 租户 URL</strong>。其他一切(端口、API 密钥、存储布局、CORS)由应用自动管理。",
      ko: "Praxia를 가장 쉽게 시작하는 방법은 네이티브 데스크톱 설치 프로그램입니다. <strong>설치 프로그램에 Praxia 서버가 임베드되어 있습니다</strong> — 설치 → 실행 → LLM 제공자 API 키 붙여넣기만으로 작동합니다. <code>praxia serve</code> 프로세스 시작 불필요, <code>pip install</code> 불필요, 사용자 머신에 Python 불필요. 설정은 사용자가 실제로 제어하는 세 가지만 노출: <strong>LLM 제공자 키</strong>(Anthropic / OpenAI / Google / Azure OpenAI / Qwen DashScope / Hugging Face — Gemma는 세 가지 클라우드 경로 모두에서 지원)、<strong>로컬 LLM</strong>(Ollama URL + 모델)、선택적 <strong>SSO 테넌트 URL</strong>. 그 외 모든 것(포트、API 키、스토리지 레이아웃、CORS)은 자동 관리.",
      es: "La forma más fácil de probar Praxia es el instalador de escritorio nativo. <strong>La app embebe el servidor Praxia dentro del instalador</strong> — instala, lanza, pega una clave de proveedor de LLM, y estás funcionando. No hay que iniciar <code>praxia serve</code>, no <code>pip install</code>, no Python en la máquina del usuario. Ajustes expone solo las tres cosas que el usuario controla: <strong>claves de proveedores LLM</strong> (Anthropic / OpenAI / Google / Azure OpenAI / Qwen DashScope / Hugging Face — Gemma cubierto por las tres rutas en la nube), <strong>LLM local</strong> (URL + modelo de Ollama) y <strong>URL de tenant SSO</strong> opcional. Todo lo demás (puerto, clave API, layout de almacenamiento, CORS) se gestiona automáticamente.",
      fr: "La façon la plus simple d'essayer Praxia est l'installateur de bureau natif. <strong>L'app intègre le serveur Praxia dans l'installateur</strong> — installez, lancez, collez une clé de fournisseur LLM, et c'est parti. Pas de processus <code>praxia serve</code> à démarrer, pas de <code>pip install</code>, pas de Python sur la machine de l'utilisateur. Les paramètres exposent uniquement les trois choses qu'un utilisateur contrôle : <strong>clés de fournisseurs LLM</strong> (Anthropic / OpenAI / Google / Azure OpenAI / Qwen DashScope / Hugging Face — Gemma couvert par les trois voies cloud), <strong>LLM local</strong> (URL + modèle Ollama), et <strong>URL de tenant SSO</strong> optionnelle. Tout le reste (port, clé API, layout de stockage, CORS) est géré automatiquement.",
      de: "Der einfachste Weg, Praxia auszuprobieren, ist das native Desktop-Installationsprogramm. <strong>Die App bettet den Praxia-Server in das Installationsprogramm ein</strong> — installieren, starten, einen LLM-Provider-Schlüssel einfügen, fertig. Kein <code>praxia serve</code>-Prozess zu starten, kein <code>pip install</code>, kein Python auf dem Rechner des Nutzers. Einstellungen zeigen nur die drei Dinge, die ein Nutzer wirklich steuert: <strong>LLM-Provider-Keys</strong> (Anthropic / OpenAI / Google / Azure OpenAI / Qwen DashScope / Hugging Face — Gemma über alle drei Cloud-Pfade abgedeckt), <strong>lokales LLM</strong> (Ollama-URL + Modell) und optionale <strong>SSO-Mandanten-URL</strong>. Alles andere (Port, API-Key, Speicher-Layout, CORS) wird automatisch verwaltet.",
      "pt-BR": "A maneira mais fácil de experimentar o Praxia é o instalador de desktop nativo. <strong>O app embute o servidor Praxia dentro do instalador</strong> — instale, abra, cole uma chave de provedor de LLM, e está rodando. Sem processo <code>praxia serve</code> para iniciar, sem <code>pip install</code>, sem Python na máquina do usuário. As configurações expõem apenas as três coisas que o usuário realmente controla: <strong>chaves de provedores LLM</strong> (Anthropic / OpenAI / Google / Azure OpenAI / Qwen DashScope / Hugging Face — Gemma coberto pelos três caminhos cloud), <strong>LLM local</strong> (URL + modelo Ollama) e <strong>URL de tenant SSO</strong> opcional. Todo o resto (porta, chave API, layout de armazenamento, CORS) é gerenciado automaticamente.",
    },
    "install.desktop_features": {
      en: "<strong>Desktop-only features:</strong> <strong>🗂 Local folder ingestion with auto-discovery</strong> — point Praxia at a folder (e.g. <code>~/Documents/Contracts/</code>) and the app walks it recursively, parses every supported file (PDF / DOCX / PPTX / XLSX / TXT / MD / code) and makes the contents searchable by the agent alongside L1 / L3 / L4 memory. Useful for confidential documents you don't want uploaded to cloud storage. Plus native notifications when a long-running agent task finishes, and native file dialogs for drag-and-drop attachments. <em>(🚧 Phase 1b)</em>",
      ja: "<strong>デスクトップ限定の機能:</strong> <strong>🗂 ローカルフォルダ取り込み (自動探索)</strong> — Praxia にフォルダ(例: <code>~/Documents/Contracts/</code>)を指定すると、アプリが再帰的に walk して、対応する全ファイル(PDF / DOCX / PPTX / XLSX / TXT / MD / コード)をパースし、内容を L1 / L3 / L4 メモリと並列にエージェントが検索可能にします。クラウドにアップロードしたくない機密文書に有用。長時間エージェントタスクの完了をネイティブ通知、ドラッグ&ドロップ用のネイティブファイルダイアログ付き。<em>(🚧 Phase 1b)</em>",
      "zh-CN": "<strong>仅桌面版功能:</strong> <strong>🗂 本地文件夹自动发现摄入</strong> — 将 Praxia 指向一个文件夹(例如 <code>~/Documents/Contracts/</code>),应用程序会递归遍历它,解析每个支持的文件(PDF / DOCX / PPTX / XLSX / TXT / MD / 代码),并使内容可被代理与 L1 / L3 / L4 内存并列搜索。对于您不想上传到云存储的机密文档很有用。加上长时间运行的代理任务完成时的本地通知,以及拖放附件的本地文件对话框。<em>(🚧 阶段 1b)</em>",
      ko: "<strong>데스크톱 전용 기능:</strong> <strong>🗂 자동 탐색을 통한 로컬 폴더 수집</strong> — Praxia에 폴더(예: <code>~/Documents/Contracts/</code>)를 가리키면 앱이 재귀적으로 walk하여 지원되는 모든 파일(PDF / DOCX / PPTX / XLSX / TXT / MD / 코드)을 파싱하고 내용을 에이전트가 L1 / L3 / L4 메모리와 함께 검색할 수 있도록 만듭니다. 클라우드에 업로드하고 싶지 않은 기밀 문서에 유용. 장시간 실행되는 에이전트 작업 완료 시 네이티브 알림과 드래그 앤 드롭 첨부용 네이티브 파일 대화 상자 포함. <em>(🚧 Phase 1b)</em>",
      es: "<strong>Funciones exclusivas de escritorio:</strong> <strong>🗂 Ingesta de carpeta local con auto-descubrimiento</strong> — apunta Praxia a una carpeta (p. ej. <code>~/Documents/Contracts/</code>) y la app la recorre recursivamente, analiza cada archivo compatible (PDF / DOCX / PPTX / XLSX / TXT / MD / código) y hace que el contenido sea buscable por el agente junto con la memoria L1 / L3 / L4. Útil para documentos confidenciales que no quieres subir al almacenamiento en la nube. Además notificaciones nativas cuando una tarea larga del agente termina, y diálogos nativos de archivos para adjuntos arrastrar-y-soltar. <em>(🚧 Fase 1b)</em>",
      fr: "<strong>Fonctionnalités exclusives au bureau :</strong> <strong>🗂 Ingestion de dossier local avec auto-découverte</strong> — pointez Praxia vers un dossier (p. ex. <code>~/Documents/Contracts/</code>) et l'app le parcourt récursivement, analyse chaque fichier pris en charge (PDF / DOCX / PPTX / XLSX / TXT / MD / code) et rend le contenu recherchable par l'agent aux côtés de la mémoire L1 / L3 / L4. Utile pour les documents confidentiels que vous ne voulez pas téléverser vers un stockage cloud. Plus des notifications natives à la fin de tâches longues de l'agent, et des dialogues de fichiers natifs pour les pièces jointes glisser-déposer. <em>(🚧 Phase 1b)</em>",
      de: "<strong>Nur-Desktop-Funktionen:</strong> <strong>🗂 Lokale Ordneraufnahme mit automatischer Erkennung</strong> — richten Sie Praxia auf einen Ordner (z. B. <code>~/Documents/Contracts/</code>), und die App durchläuft ihn rekursiv, parst jede unterstützte Datei (PDF / DOCX / PPTX / XLSX / TXT / MD / Code) und macht den Inhalt vom Agenten neben L1 / L3 / L4 Speicher durchsuchbar. Nützlich für vertrauliche Dokumente, die Sie nicht in den Cloud-Speicher hochladen möchten. Zusätzlich native Benachrichtigungen, wenn eine lang laufende Agentenaufgabe abgeschlossen ist, und native Dateidialoge für Drag-and-Drop-Anhänge. <em>(🚧 Phase 1b)</em>",
      "pt-BR": "<strong>Recursos exclusivos do desktop:</strong> <strong>🗂 Ingestão de pasta local com descoberta automática</strong> — aponte o Praxia para uma pasta (ex. <code>~/Documents/Contracts/</code>) e o app a percorre recursivamente, analisa cada arquivo suportado (PDF / DOCX / PPTX / XLSX / TXT / MD / código) e torna o conteúdo pesquisável pelo agente junto com a memória L1 / L3 / L4. Útil para documentos confidenciais que você não quer enviar para armazenamento em nuvem. Mais notificações nativas quando uma tarefa longa do agente termina, e diálogos de arquivo nativos para anexos arrastar e soltar. <em>(🚧 Fase 1b)</em>",
    },
    "install.desktop_cta": {
      en: "📦 Download Praxia Desktop (.exe, ~165 MB)",
      ja: "📦 Praxia Desktop をダウンロード (.exe / 約 147 MB)",
      "zh-CN": "📦 下载 Praxia Desktop (.exe, 约 147 MB)",
      ko: "📦 Praxia Desktop 다운로드 (.exe, 약 147 MB)",
      es: "📦 Descargar Praxia Desktop (.exe, ~165 MB)",
      fr: "📦 Télécharger Praxia Desktop (.exe, ~165 MB)",
      de: "📦 Praxia Desktop herunterladen (.exe, ~165 MB)",
      "pt-BR": "📦 Baixar Praxia Desktop (.exe, ~165 MB)",
    },
    "install.desktop_note": {
      en: "Windows 10 / 11 x64. Unsigned alpha — Windows SmartScreen will warn on first launch; click <strong>\"More info\" → \"Run anyway\"</strong> to proceed. Also available: <a href=\"https://github.com/praxia-dev/praxia/releases/latest/download/Praxia.Desktop_0.1.0-16_x64_en-US.msi\">.msi for managed deployment</a> · <a href=\"https://github.com/praxia-dev/praxia/releases/latest\">all releases &amp; notes</a>. macOS / Linux land in Phase 1b.",
      ja: "Windows 10 / 11 x64。未署名 alpha — 初回起動時に SmartScreen の警告が出るので <strong>「詳細情報」→「実行」</strong> をクリックしてください。代替: <a href=\"https://github.com/praxia-dev/praxia/releases/latest/download/Praxia.Desktop_0.1.0-16_x64_en-US.msi\">.msi(管理配布用)</a> · <a href=\"https://github.com/praxia-dev/praxia/releases/latest\">全リリース &amp; リリースノート</a>。macOS / Linux は Phase 1b で。",
      "zh-CN": "Windows 10 / 11 x64。未签名 alpha — 首次启动时 SmartScreen 会发出警告,点击 <strong>「详细信息」→「仍要运行」</strong> 继续。其他: <a href=\"https://github.com/praxia-dev/praxia/releases/latest/download/Praxia.Desktop_0.1.0-16_x64_en-US.msi\">.msi(用于受管部署)</a> · <a href=\"https://github.com/praxia-dev/praxia/releases/latest\">所有版本与发布说明</a>。macOS / Linux 将在 Phase 1b 推出。",
      ko: "Windows 10 / 11 x64. 서명되지 않은 alpha — 첫 실행 시 SmartScreen 경고가 표시되므로 <strong>「추가 정보」→「실행」</strong>을 클릭하세요. 그 외: <a href=\"https://github.com/praxia-dev/praxia/releases/latest/download/Praxia.Desktop_0.1.0-16_x64_en-US.msi\">.msi (관리 배포용)</a> · <a href=\"https://github.com/praxia-dev/praxia/releases/latest\">모든 릴리스 &amp; 노트</a>. macOS / Linux는 Phase 1b 에서.",
      es: "Windows 10 / 11 x64. Alpha sin firmar — SmartScreen advertirá en el primer lanzamiento; haz clic en <strong>\"Más información\" → \"Ejecutar de todos modos\"</strong>. También: <a href=\"https://github.com/praxia-dev/praxia/releases/latest/download/Praxia.Desktop_0.1.0-16_x64_en-US.msi\">.msi para despliegue gestionado</a> · <a href=\"https://github.com/praxia-dev/praxia/releases/latest\">todos los releases y notas</a>. macOS / Linux en la Fase 1b.",
      fr: "Windows 10 / 11 x64. Alpha non signé — SmartScreen avertira au premier lancement ; cliquez sur <strong>« Plus d'infos » → « Exécuter quand même »</strong>. Aussi : <a href=\"https://github.com/praxia-dev/praxia/releases/latest/download/Praxia.Desktop_0.1.0-16_x64_en-US.msi\">.msi pour déploiement géré</a> · <a href=\"https://github.com/praxia-dev/praxia/releases/latest\">toutes les releases &amp; notes</a>. macOS / Linux en Phase 1b.",
      de: "Windows 10 / 11 x64. Unsignierte Alpha — SmartScreen warnt beim ersten Start; klicken Sie auf <strong>„Weitere Informationen\" → „Trotzdem ausführen\"</strong>. Auch verfügbar: <a href=\"https://github.com/praxia-dev/praxia/releases/latest/download/Praxia.Desktop_0.1.0-16_x64_en-US.msi\">.msi für verwaltete Bereitstellung</a> · <a href=\"https://github.com/praxia-dev/praxia/releases/latest\">alle Releases &amp; Notes</a>. macOS / Linux in Phase 1b.",
      "pt-BR": "Windows 10 / 11 x64. Alpha não assinado — o SmartScreen avisará na primeira execução; clique em <strong>\"Mais informações\" → \"Executar assim mesmo\"</strong>. Também disponível: <a href=\"https://github.com/praxia-dev/praxia/releases/latest/download/Praxia.Desktop_0.1.0-16_x64_en-US.msi\">.msi para implantação gerenciada</a> · <a href=\"https://github.com/praxia-dev/praxia/releases/latest\">todos os releases &amp; notas</a>. macOS / Linux na Fase 1b.",
    },
    "install.dev_path": {
      en: "For library / SDK / CLI use, the Python install:",
      ja: "ライブラリ / SDK / CLI 用途には Python install:",
      "zh-CN": "对于库 / SDK / CLI 用途,使用 Python 安装:",
      ko: "라이브러리 / SDK / CLI 용도에는 Python 설치:",
      es: "Para uso como biblioteca / SDK / CLI, la instalación con Python:",
      fr: "Pour l'usage en bibliothèque / SDK / CLI, l'installation Python :",
      de: "Für Bibliotheks- / SDK- / CLI-Verwendung die Python-Installation:",
      "pt-BR": "Para uso como biblioteca / SDK / CLI, a instalação Python:",
    },
    "tryit.kicker": {
      en: "Try it — pick your scenario",
      ja: "試す — シナリオを選択",
      "zh-CN": "试用 — 选择您的场景",
      ko: "체험 — 시나리오 선택",
      es: "Probar — elige tu escenario",
      fr: "Essayer — choisissez votre scénario",
      de: "Ausprobieren — wählen Sie Ihr Szenario",
      "pt-BR": "Experimentar — escolha seu cenário",
    },
    "tryit.h2": {
      en: "See exactly what Praxia does for <em>your</em> work.",
      ja: "<em>あなたの業務</em>で Praxia が何をするのかを確認。",
      "zh-CN": "看 Praxia 如何精准服务<em>您的</em>工作。",
      ko: "Praxia 가 <em>당신의 업무</em>에 어떻게 작동하는지 확인하세요.",
      es: "Mira exactamente qué hace Praxia por <em>tu</em> trabajo.",
      fr: "Voyez précisément ce que Praxia fait pour <em>votre</em> travail.",
      de: "Sehen Sie genau, was Praxia für <em>Ihre</em> Arbeit tut.",
      "pt-BR": "Veja exatamente o que o Praxia faz pelo <em>seu</em> trabalho.",
    },
    "tryit.label_role": {
      en: "I am",
      ja: "私は",
      "zh-CN": "我是",
      ko: "나는",
      es: "Soy",
      fr: "Je suis",
      de: "Ich bin",
      "pt-BR": "Sou",
    },
    "tryit.label_task": {
      en: "I want to",
      ja: "やりたいこと",
      "zh-CN": "我想",
      ko: "하고 싶은 것",
      es: "Quiero",
      fr: "Je veux",
      de: "Ich möchte",
      "pt-BR": "Quero",
    },
    "tryit.run": {
      en: "▶ Run preview",
      ja: "▶ プレビュー実行",
      "zh-CN": "▶ 运行预览",
      ko: "▶ 미리보기 실행",
      es: "▶ Ejecutar vista previa",
      fr: "▶ Lancer l'aperçu",
      de: "▶ Vorschau starten",
      "pt-BR": "▶ Executar prévia",
    },
    "tryit.copy": {
      en: "📋 Copy command",
      ja: "📋 コマンドをコピー",
      "zh-CN": "📋 复制命令",
      ko: "📋 명령 복사",
      es: "📋 Copiar comando",
      fr: "📋 Copier la commande",
      de: "📋 Befehl kopieren",
      "pt-BR": "📋 Copiar comando",
    },
    "features.kicker": {
      en: "Why Praxia",
      ja: "なぜ Praxia か",
      "zh-CN": "为何选择 Praxia",
      ko: "왜 Praxia 인가",
      es: "Por qué Praxia",
      fr: "Pourquoi Praxia",
      de: "Warum Praxia",
      "pt-BR": "Por que Praxia",
    },
    "features.h2": {
      en: "37 advantages no other framework offers in one package.",
      ja: "1 パッケージに 37 の独自優位性。他にないラインナップ。",
      "zh-CN": "37 项独特优势,无其他框架可比。",
      ko: "다른 프레임워크에는 없는 37 가지 강점.",
      es: "37 ventajas que ningún otro framework ofrece en un solo paquete.",
      fr: "37 avantages qu'aucun autre framework n'offre en un seul package.",
      de: "37 Vorteile, die kein anderes Framework in einem Paket bietet.",
      "pt-BR": "37 vantagens que nenhum outro framework oferece em um pacote.",
    },

    "who.kicker": {
      en: "Who it's for",
      ja: "対象ユーザ",
      "zh-CN": "适合谁",
      ko: "대상 사용자",
      es: "Para quién",
      fr: "Pour qui",
      de: "Für wen",
      "pt-BR": "Para quem",
    },
    "who.h2": {
      en: "Seven target personas, one platform.",
      ja: "7 つのターゲットペルソナ、1 つのプラットフォーム。",
      "zh-CN": "七类目标用户,一个平台。",
      ko: "7가지 타깃 페르소나, 하나의 플랫폼.",
      es: "Siete personas objetivo, una plataforma.",
      fr: "Sept personas cibles, une seule plateforme.",
      de: "Sieben Zielpersonen, eine Plattform.",
      "pt-BR": "Sete personas-alvo, uma plataforma.",
    },

    "oss.kicker": {
      en: "Why OSS matters here",
      ja: "OSS の意義",
      "zh-CN": "OSS 的意义",
      ko: "OSS 가 중요한 이유",
      es: "Por qué OSS importa aquí",
      fr: "Pourquoi l'OSS compte ici",
      de: "Warum OSS hier wichtig ist",
      "pt-BR": "Por que OSS importa aqui",
    },
    "oss.h2": {
      en: "The capabilities you typically pay for — already in the package.",
      ja: "通常は有償である機能 — すべてパッケージに同梱。",
      "zh-CN": "通常需付费的能力 — 全部包含在内。",
      ko: "보통 유료로 제공되는 기능 — 패키지에 포함되어 있습니다.",
      es: "Las capacidades por las que normalmente pagas — ya incluidas en el paquete.",
      fr: "Les fonctionnalités habituellement payantes — déjà incluses dans le package.",
      de: "Die Funktionen, die Sie normalerweise bezahlen — bereits im Paket enthalten.",
      "pt-BR": "Os recursos pelos quais você normalmente paga — já incluídos no pacote.",
    },

    "faq.kicker": {
      en: "FAQ",
      ja: "FAQ",
      "zh-CN": "常见问题",
      ko: "자주 묻는 질문",
      es: "FAQ",
      fr: "FAQ",
      de: "FAQ",
      "pt-BR": "FAQ",
    },
    "faq.h2": {
      en: "The questions everyone asks.",
      ja: "よくある質問。",
      "zh-CN": "大家都会问的问题。",
      ko: "모두가 묻는 질문.",
      es: "Las preguntas que todos hacen.",
      fr: "Les questions que tout le monde pose.",
      de: "Die Fragen, die jeder stellt.",
      "pt-BR": "As perguntas que todos fazem.",
    },

    // ----- Footer category headings -----
    "footer.product": {
      en: "Product",
      ja: "プロダクト",
      "zh-CN": "产品",
      ko: "제품",
      es: "Producto",
      fr: "Produit",
      de: "Produkt",
      "pt-BR": "Produto",
    },
    "footer.resources": {
      en: "Resources",
      ja: "リソース",
      "zh-CN": "资源",
      ko: "리소스",
      es: "Recursos",
      fr: "Ressources",
      de: "Ressourcen",
      "pt-BR": "Recursos",
    },
    "footer.community": {
      en: "Community",
      ja: "コミュニティ",
      "zh-CN": "社区",
      ko: "커뮤니티",
      es: "Comunidad",
      fr: "Communauté",
      de: "Community",
      "pt-BR": "Comunidade",
    },
    "footer.legal": {
      en: "Legal",
      ja: "法的事項",
      "zh-CN": "法律信息",
      ko: "법적 정보",
      es: "Legal",
      fr: "Mentions légales",
      de: "Rechtliches",
      "pt-BR": "Legal",
    },
    "footer.tag": {
      en: "Bridging individual brilliance and organizational continuity.",
      ja: "個の卓越性と組織の継続性をつなぐ。",
      "zh-CN": "连接个人卓越与组织延续。",
      ko: "개인의 탁월함과 조직의 연속성을 연결합니다.",
      es: "Uniendo la brillantez individual con la continuidad organizacional.",
      fr: "Le pont entre l'excellence individuelle et la continuité organisationnelle.",
      de: "Die Brücke zwischen individueller Brillanz und organisationaler Kontinuität.",
      "pt-BR": "Conectando brilho individual e continuidade organizacional.",
    },

    // ----- Cookie consent banner -----
    "consent.title": {
      en: "We use cookies",
      ja: "Cookie について",
      "zh-CN": "我们使用 Cookie",
      ko: "쿠키 사용 안내",
      es: "Usamos cookies",
      fr: "Nous utilisons des cookies",
      de: "Wir verwenden Cookies",
      "pt-BR": "Usamos cookies",
    },
    "consent.body": {
      en: "This site (praxia.tools) uses essential cookies for language and consent preferences, and — only if you agree — privacy-respecting analytics to count anonymous visits. No third-party tracking. No personal data sold. See the <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/COOKIES.md\">Cookies policy</a> and <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/PRIVACY.md\">Privacy policy</a>.",
      ja: "本サイト (praxia.tools) では言語と同意設定の保持のための必須 Cookie を使用し、同意いただいた場合のみ匿名訪問数を計測する分析ツールを利用します。第三者トラッキング・個人データ販売は行いません。詳細は <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/COOKIES.md\">Cookie ポリシー</a> と <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/PRIVACY.md\">プライバシーポリシー</a> を参照ください。",
      "zh-CN": "本站 (praxia.tools) 使用必要 Cookie 保存语言和同意设置,仅在您同意时使用注重隐私的匿名访问统计。无第三方追踪、无个人数据出售。详见 <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/COOKIES.md\">Cookie 政策</a> 和 <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/PRIVACY.md\">隐私政策</a>。",
      ko: "본 사이트 (praxia.tools) 는 언어 및 동의 설정 저장을 위한 필수 쿠키를 사용하며, 동의하신 경우에만 익명 방문 수를 집계하는 프라이버시 친화적 분석 도구를 사용합니다. 제3자 추적 없음, 개인정보 판매 없음. 자세한 내용은 <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/COOKIES.md\">쿠키 정책</a> 과 <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/PRIVACY.md\">개인정보 정책</a> 참조.",
      es: "Este sitio (praxia.tools) usa cookies esenciales para idioma y preferencias de consentimiento, y — solo si lo aceptas — analítica respetuosa con la privacidad para contar visitas anónimas. Sin rastreo de terceros. Sin venta de datos personales. Ver <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/COOKIES.md\">Política de Cookies</a> y <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/PRIVACY.md\">Política de Privacidad</a>.",
      fr: "Ce site (praxia.tools) utilise des cookies essentiels pour la langue et les préférences de consentement, et — uniquement si vous acceptez — des analyses respectueuses de la vie privée pour compter les visites anonymes. Pas de suivi tiers. Pas de vente de données personnelles. Voir la <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/COOKIES.md\">Politique de cookies</a> et la <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/PRIVACY.md\">Politique de confidentialité</a>.",
      de: "Diese Website (praxia.tools) verwendet essenzielle Cookies für Sprache und Einwilligungseinstellungen und – nur mit Ihrer Zustimmung – datenschutzfreundliche Analytik für anonyme Besuchszählung. Kein Drittanbieter-Tracking. Kein Verkauf personenbezogener Daten. Siehe <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/COOKIES.md\">Cookie-Richtlinie</a> und <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/PRIVACY.md\">Datenschutzerklärung</a>.",
      "pt-BR": "Este site (praxia.tools) usa cookies essenciais para idioma e preferências de consentimento, e — somente se você aceitar — análise que respeita a privacidade para contar visitas anônimas. Sem rastreamento de terceiros. Sem venda de dados pessoais. Veja a <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/COOKIES.md\">Política de Cookies</a> e <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/legal/PRIVACY.md\">Política de Privacidade</a>.",
    },
    "consent.accept_all": {
      en: "Accept all",
      ja: "すべて許可",
      "zh-CN": "全部接受",
      ko: "모두 허용",
      es: "Aceptar todo",
      fr: "Tout accepter",
      de: "Alle akzeptieren",
      "pt-BR": "Aceitar tudo",
    },
    "consent.essential_only": {
      en: "Essential only",
      ja: "必須のみ",
      "zh-CN": "仅必要",
      ko: "필수만",
      es: "Solo esenciales",
      fr: "Essentiels uniquement",
      de: "Nur essenzielle",
      "pt-BR": "Apenas essenciais",
    },
    "consent.customize": {
      en: "Customize",
      ja: "詳細設定",
      "zh-CN": "自定义",
      ko: "사용자 지정",
      es: "Personalizar",
      fr: "Personnaliser",
      de: "Anpassen",
      "pt-BR": "Personalizar",
    },
    "consent.cat_essential": {
      en: "Essential (required for the site to work)",
      ja: "必須 (サイト動作に必要)",
      "zh-CN": "必要 (站点运行所需)",
      ko: "필수 (사이트 작동에 필요)",
      es: "Esenciales (necesarios para el sitio)",
      fr: "Essentiels (nécessaires au site)",
      de: "Essenziell (für die Funktion erforderlich)",
      "pt-BR": "Essenciais (necessários para o site)",
    },
    "consent.cat_analytics": {
      en: "Analytics (anonymous visit counts)",
      ja: "分析 (匿名訪問数の計測)",
      "zh-CN": "分析 (匿名访问统计)",
      ko: "분석 (익명 방문 통계)",
      es: "Analítica (visitas anónimas)",
      fr: "Analytique (visites anonymes)",
      de: "Analytik (anonyme Besuche)",
      "pt-BR": "Análise (visitas anônimas)",
    },
    "consent.save": {
      en: "Save preferences",
      ja: "設定を保存",
      "zh-CN": "保存偏好",
      ko: "설정 저장",
      es: "Guardar preferencias",
      fr: "Enregistrer les préférences",
      de: "Einstellungen speichern",
      "pt-BR": "Salvar preferências",
    },
    "consent.manage": {
      en: "Cookie preferences",
      ja: "Cookie 設定",
      "zh-CN": "Cookie 偏好",
      ko: "쿠키 설정",
      es: "Preferencias de cookies",
      fr: "Préférences cookies",
      de: "Cookie-Einstellungen",
      "pt-BR": "Preferências de cookies",
    },

    // ===== Feature card titles (34 cards) ============================
    "feat.autonomous_agent":     {en:"Autonomous agent — LLM-driven tool-use loop", ja:"自律エージェント — LLM 駆動のツール使用ループ", "zh-CN":"自主代理 — LLM 驱动的工具使用循环", ko:"자율 에이전트 — LLM 주도 도구 사용 루프", es:"Agente autónomo — bucle de uso de herramientas guiado por LLM", fr:"Agent autonome — boucle d'utilisation d'outils guidée par LLM", de:"Autonomer Agent — LLM-gesteuerte Tool-Use-Schleife", "pt-BR":"Agente autônomo — loop de uso de ferramentas guiado por LLM"},
    "feat.autonomous_agent.body":{en:"An LLM-driven tool-use loop over your full Praxia stack — personal memory, org memory, frozen layer, skills, connectors. The agent picks tools on its own (search → run skill → pull connector → answer) with ACL gates and audit logging. Ships as <code>praxia.agent.AutonomousAgent</code>, <code>praxia agent run</code>, and an MCP meta-tool for remote clients.", ja:"Praxia スタック全体 (個人メモリ・組織メモリ・凍結層・スキル・コネクタ) を対象にした LLM 駆動のツール使用ループ。検索 → スキル実行 → コネクタ pull → 回答 の流れをエージェントが自分で判断し、ACL チェックと監査ログを伴って実行。<code>praxia.agent.AutonomousAgent</code> / <code>praxia agent run</code> / MCP メタツールで提供。", "zh-CN":"基于 LLM 的工具使用循环,贯穿整个 Praxia 栈 — 个人记忆、组织记忆、冻结层、技能、连接器。代理自主选择工具(搜索 → 执行技能 → 拉取连接器 → 回答),具有 ACL 检查和审计日志。提供 <code>praxia.agent.AutonomousAgent</code>、<code>praxia agent run</code> 及 MCP 元工具。", ko:"Praxia 스택 전체 (개인 메모리·조직 메모리·동결 레이어·스킬·커넥터) 위에서 LLM 주도 도구 사용 루프. 에이전트가 도구를 직접 선택 (검색 → 스킬 실행 → 커넥터 pull → 답변), ACL 게이트와 감사 로그 포함. <code>praxia.agent.AutonomousAgent</code> / <code>praxia agent run</code> / MCP 메타도구로 제공.", es:"Bucle de uso de herramientas guiado por LLM sobre toda la pila Praxia — memoria personal, memoria org, capa congelada, habilidades, conectores. El agente elige herramientas por su cuenta (buscar → ejecutar habilidad → extraer conector → responder) con ACL y auditoría. Disponible como <code>praxia.agent.AutonomousAgent</code>, <code>praxia agent run</code> y meta-herramienta MCP.", fr:"Boucle d'utilisation d'outils pilotée par LLM sur toute la pile Praxia — mémoire personnelle, mémoire org, couche figée, compétences, connecteurs. L'agent choisit ses outils (rechercher → exécuter une compétence → tirer un connecteur → répondre) avec ACL et journal d'audit. Fourni en tant que <code>praxia.agent.AutonomousAgent</code>, <code>praxia agent run</code> et méta-outil MCP.", de:"Eine LLM-gesteuerte Tool-Use-Schleife über den gesamten Praxia-Stack — persönlicher Speicher, Org-Speicher, eingefrorene Schicht, Skills, Konnektoren. Der Agent wählt selbst Werkzeuge (Suche → Skill ausführen → Konnektor abrufen → antworten) mit ACL-Gates und Audit-Log. Bereitgestellt als <code>praxia.agent.AutonomousAgent</code>, <code>praxia agent run</code> und MCP-Meta-Tool.", "pt-BR":"Loop de uso de ferramentas guiado por LLM sobre toda a stack Praxia — memória pessoal, memória org, camada congelada, habilidades, conectores. O agente escolhe ferramentas sozinho (buscar → executar habilidade → puxar conector → responder) com gates de ACL e log de auditoria. Disponível como <code>praxia.agent.AutonomousAgent</code>, <code>praxia agent run</code> e meta-ferramenta MCP."},
    "feat.commanded_agent":      {en:"CommandedAgent — autonomous agent with external verification", ja:"CommandedAgent — 外部検証つき自律エージェント", "zh-CN":"CommandedAgent — 带外部验证的自主代理", ko:"CommandedAgent — 외부 검증을 갖춘 자율 에이전트", es:"CommandedAgent — agente autónomo con verificación externa", fr:"CommandedAgent — agent autonome avec vérification externe", de:"CommandedAgent — autonomer Agent mit externer Verifikation", "pt-BR":"CommandedAgent — agente autônomo com verificação externa"},
    "feat.commanded_agent.body": {en:"For workloads where the environment doesn't give you a free answer key — private-corpus fact QA, SOP / compliance, customer support over manuals. Wraps the autonomous agent with <strong>task-type routing + query decomposition (multi-hop) + pre-retrieval + grounding verification + no-improvement early-stop</strong>, with an explicit <code>abstain</code> when sources don't support a confident answer. Calibrated against an in-house HotpotQA / SQuAD v2 / JEMHopQA harness — decomposition added <strong>+12pt</strong> on HotpotQA-distractor 40q. Every accepted claim carries <code>[L1#0, L3#2, …]</code> citations; every round is in the audit log. <code>Verifier</code> / <code>QueryDecomposer</code> / <code>TaskClassifier</code> are all pluggable — drop in TiDB Vector / pgvector / GraphRAG / HHEM-grounding without touching core.", ja:"環境が答え合わせをしてくれない用途 (私的コーパス Fact QA、SOP / コンプライアンス、マニュアル横断のカスタマーサポート) 向け。自律エージェントを <strong>タスク種別ルータ + クエリ分解(多段) + 事前取得 + Grounding 検証 + 改善なし早期停止</strong> で包み、出典が確信を支えない時は明示的に <code>abstain</code>。HotpotQA / SQuAD v2 / JEMHopQA の内製ハーネスで較正済 — クエリ分解で HotpotQA-distractor 40問 <strong>+12pt</strong>。採用された主張は <code>[L1#0, L3#2, …]</code> で出典付き、各ラウンドは監査ログに記録。<code>Verifier</code> / <code>QueryDecomposer</code> / <code>TaskClassifier</code> はすべて差替可 — コア無改変で TiDB Vector / pgvector / GraphRAG / HHEM-grounding を差し込める。", "zh-CN":"针对环境无法自动验证答案的场景 — 私有语料事实问答、SOP / 合规、跨手册客户支持。在自主代理外加上 <strong>任务类型路由 + 查询分解(多跳) + 预检索 + 接地验证 + 无改进早停</strong>,在证据无法支持时显式 <code>abstain</code>。基于内部 HotpotQA / SQuAD v2 / JEMHopQA 基准校准 — 查询分解在 HotpotQA-distractor 40 题上提升 <strong>+12pt</strong>。每条采用主张都带 <code>[L1#0, L3#2, …]</code> 出处;每一轮都进入审计日志。<code>Verifier</code> / <code>QueryDecomposer</code> / <code>TaskClassifier</code> 均可替换 — 无需改动核心即可接入 TiDB Vector / pgvector / GraphRAG / HHEM-grounding。", ko:"환경이 답을 검증해 주지 않는 워크로드 — 사적 코퍼스 사실 QA、SOP / 컴플라이언스、매뉴얼 횡단 고객 지원 — 용. 자율 에이전트를 <strong>태스크 유형 라우터 + 쿼리 분해(멀티홉) + 사전 검색 + 그라운딩 검증 + 개선 없음 조기 중단</strong>으로 감싸고, 출처가 확신을 뒷받침하지 못하면 명시적으로 <code>abstain</code>. 사내 HotpotQA / SQuAD v2 / JEMHopQA 하네스로 보정 — 쿼리 분해로 HotpotQA-distractor 40문항 <strong>+12pt</strong>. 채택된 모든 주장은 <code>[L1#0, L3#2, …]</code> 출처 인용을 동반하며 모든 라운드가 감사 로그에 기록. <code>Verifier</code> / <code>QueryDecomposer</code> / <code>TaskClassifier</code> 는 모두 교체 가능 — 코어 무수정으로 TiDB Vector / pgvector / GraphRAG / HHEM-grounding 결합 가능.", es:"Para cargas donde el entorno no proporciona una clave de respuesta — QA de hechos sobre corpus privado, SOP / cumplimiento, soporte al cliente sobre manuales. Envuelve al agente autónomo con <strong>enrutado por tipo de tarea + descomposición de consultas (multi-hop) + pre-recuperación + verificación de fundamentación + parada anticipada por estancamiento</strong>, con <code>abstain</code> explícito cuando las fuentes no respaldan una respuesta segura. Calibrado contra un banco interno HotpotQA / SQuAD v2 / JEMHopQA — la descomposición añadió <strong>+12pt</strong> en HotpotQA-distractor 40q. Cada afirmación aceptada lleva citas <code>[L1#0, L3#2, …]</code>; cada ronda queda en el registro de auditoría. <code>Verifier</code> / <code>QueryDecomposer</code> / <code>TaskClassifier</code> son todos enchufables — conecta TiDB Vector / pgvector / GraphRAG / HHEM-grounding sin tocar el núcleo.", fr:"Pour les charges où l'environnement ne fournit pas de clé de réponse — QA factuel sur corpus privé, SOP / conformité, support client sur manuels. Enveloppe l'agent autonome de <strong>routage par type de tâche + décomposition de requête (multi-saut) + pré-récupération + vérification de l'ancrage + arrêt anticipé sans amélioration</strong>, avec un <code>abstain</code> explicite quand les sources ne soutiennent pas une réponse confiante. Calibré sur un banc interne HotpotQA / SQuAD v2 / JEMHopQA — la décomposition ajoute <strong>+12pt</strong> sur HotpotQA-distractor 40q. Chaque affirmation acceptée porte des citations <code>[L1#0, L3#2, …]</code> ; chaque round est dans le journal d'audit. <code>Verifier</code> / <code>QueryDecomposer</code> / <code>TaskClassifier</code> sont tous enfichables — branchez TiDB Vector / pgvector / GraphRAG / HHEM-grounding sans toucher au cœur.", de:"Für Workloads, in denen die Umgebung keinen Lösungsschlüssel liefert — Fakten-QA über privatem Korpus, SOP / Compliance, Kunden-Support über Handbüchern. Umhüllt den autonomen Agenten mit <strong>Task-Typ-Routing + Query-Dekomposition (Multi-Hop) + Pre-Retrieval + Grounding-Verifikation + Stagnations-Frühstopp</strong> und einem expliziten <code>abstain</code>-Pfad, wenn die Quellen keine sichere Antwort tragen. Gegen einen internen HotpotQA / SQuAD v2 / JEMHopQA-Benchmark kalibriert — Dekomposition brachte <strong>+12pt</strong> auf HotpotQA-distractor 40q. Jede akzeptierte Behauptung trägt <code>[L1#0, L3#2, …]</code>-Quellzitate; jede Runde steht im Audit-Log. <code>Verifier</code> / <code>QueryDecomposer</code> / <code>TaskClassifier</code> sind alle austauschbar — TiDB Vector / pgvector / GraphRAG / HHEM-Grounding ohne Core-Änderung einbindbar.", "pt-BR":"Para cargas em que o ambiente não fornece um gabarito — QA factual em corpus privado, SOP / compliance, suporte ao cliente sobre manuais. Envolve o agente autônomo com <strong>roteamento por tipo de tarefa + decomposição de consulta (multi-hop) + pré-recuperação + verificação de embasamento + parada antecipada sem melhoria</strong>, com um <code>abstain</code> explícito quando as fontes não sustentam uma resposta confiante. Calibrado contra um banco interno HotpotQA / SQuAD v2 / JEMHopQA — a decomposição adicionou <strong>+12pt</strong> em HotpotQA-distractor 40q. Toda afirmação aceita carrega citações <code>[L1#0, L3#2, …]</code>; cada rodada vai para o log de auditoria. <code>Verifier</code> / <code>QueryDecomposer</code> / <code>TaskClassifier</code> são todos plugáveis — encaixe TiDB Vector / pgvector / GraphRAG / HHEM-grounding sem mexer no core."},
    "feat.prompt_designer":      {en:"Prompt Designer — turn intent into a polished template", ja:"プロンプトデザイナ — 意図から本番品質のテンプレートを生成", "zh-CN":"提示设计器 — 把意图变成完整模板", ko:"프롬프트 디자이너 — 의도 → 완성 템플릿", es:"Prompt Designer — convierte la intención en una plantilla pulida", fr:"Prompt Designer — transformez l'intention en template prêt", de:"Prompt Designer — Absicht in fertiges Template verwandeln", "pt-BR":"Prompt Designer — transforma intenção em template pronto"},
    "chip.docdesigner":          {en:"🎨 Document Designer (code-gen pptx / docx)", ja:"🎨 Document Designer (pptx / docx をコード生成)", "zh-CN":"🎨 文档设计器 (代码生成 pptx / docx)", ko:"🎨 Document Designer (코드 생성 pptx / docx)", es:"🎨 Document Designer (codegen pptx / docx)", fr:"🎨 Document Designer (codegen pptx / docx)", de:"🎨 Document Designer (Codegen pptx / docx)", "pt-BR":"🎨 Document Designer (codegen pptx / docx)"},
    "feat.doc_designer":         {en:"Document Designer — code-gen pptx / docx (Claude-Skills-style)", ja:"Document Designer — pptx / docx をコード生成 (Claude Skills 流)", "zh-CN":"文档设计器 — 代码生成 pptx / docx (Claude Skills 风格)", ko:"Document Designer — pptx / docx 코드 생성 (Claude Skills 스타일)", es:"Document Designer — codegen pptx / docx (estilo Claude Skills)", fr:"Document Designer — codegen pptx / docx (style Claude Skills)", de:"Document Designer — Codegen pptx / docx (Claude-Skills-Stil)", "pt-BR":"Document Designer — codegen pptx / docx (estilo Claude Skills)"},
    "feat.doc_designer.body":    {en:"The LLM authors <code>python-pptx</code> / <code>python-docx</code> code, a sandbox runs it (AST allowlist + 30s timeout + 512MB cap on POSIX), and you get a design-rich <code>.pptx</code> / <code>.docx</code> back — multi-column layouts, matrix slides, embedded matplotlib charts, themed branding (colors / fonts / logo / footer from <code>.praxia/themes/</code>). On traceback the error is fed back to the LLM and the attempt repeats up to 3 times. Themes managed in <code>Admin → 🎨 Themes</code>.", ja:"LLM が <code>python-pptx</code> / <code>python-docx</code> コードを記述 → サンドボックス (AST 許可リスト + 30 秒タイムアウト + POSIX で 512MB RAM 上限) で実行 → デザインリッチな <code>.pptx</code> / <code>.docx</code> を返却。複数カラムレイアウト・マトリクススライド・matplotlib チャート埋込・テーマ適用 (色 / フォント / ロゴ / フッターは <code>.praxia/themes/</code> から)。失敗時はトレースバックを LLM に戻して最大 3 回リトライ。テーマは <code>Admin → 🎨 テーマ</code> で管理。", "zh-CN":"LLM 编写 <code>python-pptx</code> / <code>python-docx</code> 代码,沙盒执行 (AST 白名单 + 30 秒超时 + POSIX 512MB 上限),返回设计丰富的 <code>.pptx</code> / <code>.docx</code> — 多列布局、矩阵幻灯片、matplotlib 图表嵌入、主题应用 (颜色 / 字体 / logo / 页脚来自 <code>.praxia/themes/</code>)。失败时将回溯反馈给 LLM 并最多重试 3 次。主题在 <code>Admin → 🎨 主题</code> 中管理。", ko:"LLM이 <code>python-pptx</code> / <code>python-docx</code> 코드를 작성 → 샌드박스 (AST 허용 리스트 + 30 초 타임아웃 + POSIX 512MB 메모리 제한) 실행 → 디자인 리치 <code>.pptx</code> / <code>.docx</code> 반환. 다단 레이아웃·매트릭스 슬라이드·matplotlib 차트 임베드·테마 적용 (색상 / 폰트 / 로고 / 푸터는 <code>.praxia/themes/</code> 에서). 실패 시 트레이스백을 LLM에 돌려보내 최대 3 회 재시도. 테마는 <code>Admin → 🎨 테마</code> 에서 관리.", es:"El LLM escribe código <code>python-pptx</code> / <code>python-docx</code>, un sandbox lo ejecuta (allowlist AST + timeout 30s + tope 512MB en POSIX), y obtienes un <code>.pptx</code> / <code>.docx</code> con diseño rico — layouts multi-columna, diapositivas matriz, gráficos matplotlib embebidos, branding temático (colores / fuentes / logo / pie desde <code>.praxia/themes/</code>). En caso de traceback, el error se devuelve al LLM y reintenta hasta 3 veces. Temas gestionados en <code>Admin → 🎨 Temas</code>.", fr:"Le LLM écrit du code <code>python-pptx</code> / <code>python-docx</code>, un sandbox l'exécute (allowlist AST + timeout 30s + cap 512MB POSIX), et vous récupérez un <code>.pptx</code> / <code>.docx</code> design-rich — layouts multi-colonnes, diapositives matrice, graphiques matplotlib intégrés, branding thématique (couleurs / polices / logo / pied depuis <code>.praxia/themes/</code>). En cas de traceback l'erreur est renvoyée au LLM et la tentative se répète jusqu'à 3 fois. Thèmes gérés dans <code>Admin → 🎨 Thèmes</code>.", de:"Das LLM schreibt <code>python-pptx</code> / <code>python-docx</code>-Code, eine Sandbox führt ihn aus (AST-Allowlist + 30s-Timeout + 512MB-Cap auf POSIX), und du erhältst ein design-reiches <code>.pptx</code> / <code>.docx</code> — mehrspaltige Layouts, Matrix-Folien, eingebettete matplotlib-Charts, thematisches Branding (Farben / Schriftarten / Logo / Footer aus <code>.praxia/themes/</code>). Bei Traceback wird der Fehler an das LLM zurückgegeben und der Versuch bis zu 3-mal wiederholt. Themes verwaltet in <code>Admin → 🎨 Themes</code>.", "pt-BR":"O LLM escreve código <code>python-pptx</code> / <code>python-docx</code>, um sandbox executa (allowlist AST + timeout 30s + cap 512MB em POSIX), e você recebe um <code>.pptx</code> / <code>.docx</code> com design rico — layouts multi-coluna, slides matriz, gráficos matplotlib embutidos, branding temático (cores / fontes / logo / rodapé de <code>.praxia/themes/</code>). Em caso de traceback o erro é devolvido ao LLM e a tentativa repete até 3 vezes. Temas gerenciados em <code>Admin → 🎨 Temas</code>."},
    "feat.prompt_designer.body": {en:"Describe the task in one line (\"score contract risk 1-5 in JSON\") → get a production-grade prompt design back: tuned system message, <code>${variable}</code> user template, 2-3 few-shot examples, 5-criterion rubric. Per-LLM idioms applied automatically (Claude XML / OpenAI JSON-mode / DeepSeek-R1 reasoning / Mistral concise / Llama numbered steps).", ja:"やりたいことを 1 行で書くだけ (例: 「契約書リスクを 1〜5 段階で JSON 評価」) で、本番品質のプロンプト設計が返ってきます — チューニング済 system メッセージ、<code>${variable}</code> 入り user テンプレート、Few-Shot 例 2〜3 件、5 観点の評価ルーブリック付き。LLM ごとの作法 (Claude=XML、OpenAI=JSON モード、DeepSeek-R1=reasoning channel、Mistral=簡潔、Llama=番号付きステップ) を自動適用。", "zh-CN":"用一行描述任务(「以 JSON 评 1-5 级合同风险」) → 获取生产级提示设计:调优 system 消息、含 <code>${variable}</code> 的 user 模板、2-3 个 few-shot 示例、5 项评估标准。自动适用 LLM 特定写法 (Claude=XML / OpenAI=JSON / DeepSeek-R1=reasoning / Mistral=精简 / Llama=编号步骤)。", ko:"한 줄로 작업 설명 (「계약서 리스크를 1-5 로 JSON 평가」) → 프로덕션 등급 프롬프트 설계 즉시 수령: 튜닝된 system 프롬프트, <code>${variable}</code> 포함 user 템플릿, few-shot 예시 2-3 개, 5 기준 평가 루브릭. LLM 별 관용구 자동 적용 (Claude=XML / OpenAI=JSON / DeepSeek-R1=reasoning / Mistral=간결 / Llama=번호 스텝).", es:"Describe la tarea en una línea (\"valora riesgo del contrato 1-5 en JSON\") → obtén un diseño de prompt de producción: system message ajustado, plantilla user con <code>${variable}</code>, 2-3 ejemplos few-shot, rúbrica de 5 criterios. Modismos por LLM aplicados automáticamente (Claude=XML / OpenAI=JSON / DeepSeek-R1=reasoning / Mistral=conciso / Llama=pasos numerados).", fr:"Décrivez la tâche en une ligne (« noter risque du contrat 1-5 en JSON ») → un design de prompt prêt prod : system message affûté, template user avec <code>${variable}</code>, 2-3 exemples few-shot, rubrique à 5 critères. Idiomes par LLM appliqués automatiquement (Claude=XML / OpenAI=JSON / DeepSeek-R1=reasoning / Mistral=concis / Llama=étapes numérotées).", de:"Beschreibe die Aufgabe in einer Zeile (\"Vertragsrisiko 1-5 als JSON bewerten\") → erhalte ein produktionsreifes Prompt-Design: getuneter System-Prompt, User-Template mit <code>${variable}</code>, 2-3 Few-Shot-Beispiele, 5-Kriterien-Rubrik. LLM-spezifische Idiome automatisch angewendet (Claude=XML / OpenAI=JSON / DeepSeek-R1=reasoning / Mistral=knapp / Llama=nummerierte Schritte).", "pt-BR":"Descreva a tarefa em uma linha (\"avaliar risco do contrato 1-5 em JSON\") → receba um design de prompt pronto para produção: system message ajustado, template user com <code>${variable}</code>, 2-3 exemplos few-shot, rubrica de 5 critérios. Idiomas por LLM aplicados automaticamente (Claude=XML / OpenAI=JSON / DeepSeek-R1=reasoning / Mistral=conciso / Llama=passos numerados)."},
    "feat.memory_loop":          {en:"Personal → org memory loop", ja:"個人 → 組織のメモリ循環", "zh-CN":"个人 → 组织 记忆循环", ko:"개인 → 조직 메모리 순환", es:"Bucle memoria personal → org", fr:"Boucle mémoire personnelle → org", de:"Persönlich → Organisations-Speicherschleife", "pt-BR":"Ciclo de memória pessoal → org"},
    "feat.promotion_engine":     {en:"3-path promotion engine", ja:"3 経路の昇格エンジン", "zh-CN":"3 路晋升引擎", ko:"3 경로 승격 엔진", es:"Motor de promoción de 3 rutas", fr:"Moteur de promotion 3 voies", de:"3-Pfad-Promotion-Engine", "pt-BR":"Motor de promoção de 3 caminhos"},
    "feat.workflow_flows":       {en:"Workflow-specialized flows", ja:"業務特化フロー", "zh-CN":"工作流特化流水线", ko:"워크플로 특화 플로", es:"Flujos especializados", fr:"Flux spécialisés", de:"Workflow-spezialisierte Flows", "pt-BR":"Fluxos especializados"},
    "feat.business_skills":      {en:"6 default business skills", ja:"6 業務スキル", "zh-CN":"6 个默认业务技能", ko:"6 가지 기본 업무 스킬", es:"6 habilidades de negocio", fr:"6 compétences métier", de:"6 Geschäfts-Skills", "pt-BR":"6 habilidades de negócio"},
    "feat.evidence":             {en:"Evidence by default", ja:"エビデンス標準同梱", "zh-CN":"标配证据指标", ko:"증거 기본 탑재", es:"Evidencia por defecto", fr:"Preuves par défaut", de:"Evidenz standardmäßig", "pt-BR":"Evidência por padrão"},
    "feat.ltm_backends":         {en:"6 LTM backends", ja:"6 種の LTM バックエンド", "zh-CN":"6 种 LTM 后端", ko:"6 가지 LTM 백엔드", es:"6 backends LTM", fr:"6 backends LTM", de:"6 LTM-Backends", "pt-BR":"6 backends LTM"},
    "feat.multi_llm":            {en:"Multi-LLM (15+ first-class · 100+ via LiteLLM)", ja:"複数 LLM 対応 (15+ 標準対応 · LiteLLM 経由 100+)", "zh-CN":"多 LLM (15+ 一类 · LiteLLM 100+)", ko:"멀티 LLM (15+ 기본 · LiteLLM 100+)", es:"Multi-LLM (15+ primarios · LiteLLM 100+)", fr:"Multi-LLM (15+ natifs · LiteLLM 100+)", de:"Multi-LLM (15+ direkt · LiteLLM 100+)", "pt-BR":"Multi-LLM (15+ primários · LiteLLM 100+)"},
    "feat.auth_in_oss":          {en:"Auth, RBAC, SSO, audit — in OSS", ja:"認証/RBAC/SSO/監査 — OSS 内蔵", "zh-CN":"认证/RBAC/SSO/审计 — OSS 内置", ko:"인증/RBAC/SSO/감사 — OSS 내장", es:"Auth/RBAC/SSO/auditoría — en OSS", fr:"Auth/RBAC/SSO/audit — dans l'OSS", de:"Auth/RBAC/SSO/Audit — im OSS", "pt-BR":"Auth/RBAC/SSO/auditoria — no OSS"},
    "feat.skills_promoted":      {en:"Skills also promoted", ja:"スキル自体も昇格", "zh-CN":"技能本身也会晋升", ko:"스킬 자체도 승격", es:"Las habilidades también se promueven", fr:"Les compétences sont aussi promues", de:"Skills werden auch befördert", "pt-BR":"Habilidades também são promovidas"},
    "feat.mcp_compat":           {en:"MCP / Claude Skills compatible", ja:"MCP / Claude Skills 互換", "zh-CN":"兼容 MCP / Claude Skills", ko:"MCP / Claude Skills 호환", es:"Compatible MCP / Claude Skills", fr:"Compatible MCP / Claude Skills", de:"MCP / Claude Skills kompatibel", "pt-BR":"Compatível MCP / Claude Skills"},
    "feat.outcome_tracking":     {en:"Outcome tracking built-in", ja:"成果トラッキング標準", "zh-CN":"内置成果追踪", ko:"성과 추적 내장", es:"Seguimiento de resultados integrado", fr:"Suivi des résultats intégré", de:"Ergebnisverfolgung eingebaut", "pt-BR":"Rastreio de resultados integrado"},
    "feat.apache_open":          {en:"Apache 2.0 + Open Core ready", ja:"Apache 2.0 + Open Core 対応", "zh-CN":"Apache 2.0 + Open Core 就绪", ko:"Apache 2.0 + Open Core 준비", es:"Apache 2.0 + Open Core listo", fr:"Apache 2.0 + Open Core prêt", de:"Apache 2.0 + Open-Core-fähig", "pt-BR":"Apache 2.0 + Open Core pronto"},
    "feat.acl":                  {en:"Resource access policies (ACL)", ja:"リソース ACL", "zh-CN":"资源访问策略 (ACL)", ko:"리소스 접근 정책 (ACL)", es:"Políticas de acceso a recursos (ACL)", fr:"Politiques d'accès (ACL)", de:"Ressourcen-ACL", "pt-BR":"Políticas de acesso (ACL)"},
    "feat.admin_exports":        {en:"Admin data exports", ja:"管理者データエクスポート", "zh-CN":"管理员数据导出", ko:"관리자 데이터 내보내기", es:"Exportaciones admin", fr:"Exports admin", de:"Admin-Datenexports", "pt-BR":"Exportações admin"},
    "feat.connectors":           {en:"20 storage / SaaS connectors", ja:"20 種のストレージ/SaaS コネクタ", "zh-CN":"20 个存储/SaaS 连接器", ko:"20 개 스토리지/SaaS 커넥터", es:"20 conectores de almacenamiento/SaaS", fr:"20 connecteurs stockage/SaaS", de:"20 Speicher/SaaS-Konnektoren", "pt-BR":"20 conectores armazenamento/SaaS"},
    "feat.dashboards":           {en:"Personal & org dashboards", ja:"個人/組織ダッシュボード", "zh-CN":"个人和组织仪表板", ko:"개인 / 조직 대시보드", es:"Paneles personal/org", fr:"Tableaux de bord perso/org", de:"Personal/Org-Dashboards", "pt-BR":"Painéis pessoal/org"},
    "feat.prompts_distribution": {en:"Custom prompt distribution", ja:"カスタムプロンプト配信", "zh-CN":"自定义提示分发", ko:"커스텀 프롬프트 배포", es:"Distribución de prompts", fr:"Distribution de prompts", de:"Custom-Prompt-Verteilung", "pt-BR":"Distribuição de prompts"},
    "feat.user_crud":            {en:"Full admin user CRUD", ja:"ユーザ管理 (CRUD)", "zh-CN":"完整管理员用户 CRUD", ko:"관리자 사용자 CRUD", es:"CRUD de usuarios completo", fr:"CRUD utilisateurs complet", de:"Voll Admin Benutzer-CRUD", "pt-BR":"CRUD de usuários completo"},
    "feat.parsers":              {en:"File parsers (PDF · Word · Excel · PowerPoint · CSV · HTML)", ja:"ファイルパーサ (PDF/Word/Excel/PowerPoint/CSV/HTML)", "zh-CN":"文件解析器 (PDF/Word/Excel/PowerPoint/CSV/HTML)", ko:"파일 파서 (PDF/Word/Excel/PowerPoint/CSV/HTML)", es:"Parsers de archivos (PDF/Word/Excel/PowerPoint/CSV/HTML)", fr:"Parsers de fichiers (PDF/Word/Excel/PowerPoint/CSV/HTML)", de:"Datei-Parser (PDF/Word/Excel/PowerPoint/CSV/HTML)", "pt-BR":"Parsers de arquivos (PDF/Word/Excel/PowerPoint/CSV/HTML)"},
    "feat.voice":                {en:"Voice input + voice output", ja:"音声入力 + 音声出力", "zh-CN":"语音输入 + 语音输出", ko:"음성 입력 + 출력", es:"Entrada y salida de voz", fr:"Entrée et sortie vocales", de:"Spracheingabe + Sprachausgabe", "pt-BR":"Entrada e saída de voz"},
    "feat.user_oauth":           {en:"User-delegated OAuth (13 providers)", ja:"ユーザ委譲 OAuth (13 プロバイダ)", "zh-CN":"用户委派 OAuth (13 个提供方)", ko:"사용자 위임 OAuth (13 개 공급자)", es:"OAuth delegado por usuario (13 proveedores)", fr:"OAuth délégué utilisateur (13 fournisseurs)", de:"Benutzerdelegierter OAuth (13 Anbieter)", "pt-BR":"OAuth delegado pelo usuário (13 provedores)"},
    "feat.legal_templates":      {en:"Legal templates", ja:"法務テンプレート", "zh-CN":"法律模板", ko:"법률 템플릿", es:"Plantillas legales", fr:"Modèles juridiques", de:"Rechtsvorlagen", "pt-BR":"Modelos legais"},
    "feat.multi_ltm":            {en:"Multi-LTM fusion + routing", ja:"複数 LTM 融合 + ルーティング", "zh-CN":"多 LTM 融合 + 路由", ko:"멀티 LTM 융합 + 라우팅", es:"Fusión multi-LTM + enrutamiento", fr:"Fusion multi-LTM + routage", de:"Multi-LTM Fusion + Routing", "pt-BR":"Fusão multi-LTM + roteamento"},
    "feat.memory_mode":          {en:"Memory mode toggle", ja:"メモリモード切替 (accumulate / read_only)", "zh-CN":"记忆模式切换", ko:"메모리 모드 전환", es:"Toggle de modo de memoria", fr:"Bascule mode mémoire", de:"Speichermodus-Umschalter", "pt-BR":"Alternar modo de memória"},
    "feat.admin_ltm":            {en:"Admin-controlled LTM policy", ja:"管理者向け LTM ポリシー", "zh-CN":"管理员控制的 LTM 策略", ko:"관리자 제어 LTM 정책", es:"Política LTM admin", fr:"Politique LTM admin", de:"Admin-LTM-Richtlinie", "pt-BR":"Política LTM admin"},
    "feat.exporters":            {en:"Output exporters (HTML · PPTX · DOCX · MD · JSON)", ja:"出力エクスポータ (HTML/PPTX/DOCX/MD/JSON)", "zh-CN":"输出导出器 (HTML/PPTX/DOCX/MD/JSON)", ko:"출력 익스포터 (HTML/PPTX/DOCX/MD/JSON)", es:"Exportadores de salida (HTML/PPTX/DOCX/MD/JSON)", fr:"Exportateurs (HTML/PPTX/DOCX/MD/JSON)", de:"Output-Exporter (HTML/PPTX/DOCX/MD/JSON)", "pt-BR":"Exportadores (HTML/PPTX/DOCX/MD/JSON)"},
    "feat.gemma":                {en:"Gemma support", ja:"Gemma 対応", "zh-CN":"Gemma 支持", ko:"Gemma 지원", es:"Soporte Gemma", fr:"Support Gemma", de:"Gemma-Unterstützung", "pt-BR":"Suporte Gemma"},
    "feat.deploy_modes":         {en:"Backend-only or full-stack", ja:"バックエンドのみ or フルスタック", "zh-CN":"仅后端或全栈", ko:"백엔드 전용 또는 풀스택", es:"Solo backend o full-stack", fr:"Backend seul ou full-stack", de:"Backend-only oder Full-Stack", "pt-BR":"Apenas backend ou full-stack"},
    "feat.kms":                  {en:"KMS-backed token encryption", ja:"KMS ベースのトークン暗号化", "zh-CN":"KMS 支持的令牌加密", ko:"KMS 기반 토큰 암호화", es:"Cifrado de tokens con KMS", fr:"Chiffrement de tokens via KMS", de:"KMS-gestützte Token-Verschlüsselung", "pt-BR":"Criptografia de tokens via KMS"},
    "feat.oauth_web":            {en:"Production OAuth callback (HTTP)", ja:"本番 OAuth コールバック (HTTP)", "zh-CN":"生产 OAuth 回调 (HTTP)", ko:"프로덕션 OAuth 콜백 (HTTP)", es:"Callback OAuth de producción (HTTP)", fr:"Callback OAuth production (HTTP)", de:"Produktions-OAuth-Callback (HTTP)", "pt-BR":"Callback OAuth de produção (HTTP)"},
    "feat.ab":                   {en:"A/B experiments built in", ja:"A/B 実験フレーム同梱", "zh-CN":"内置 A/B 实验", ko:"A/B 실험 내장", es:"Experimentos A/B integrados", fr:"Expériences A/B intégrées", de:"A/B-Experimente eingebaut", "pt-BR":"Experimentos A/B integrados"},
    "feat.llm_eval":             {en:"LLM output quality eval (CI gate)", ja:"LLM 出力品質評価 (CI ガード)", "zh-CN":"LLM 输出质量评估 (CI 门禁)", ko:"LLM 출력 품질 평가 (CI 게이트)", es:"Evaluación calidad LLM (CI)", fr:"Éval qualité LLM (CI)", de:"LLM-Qualitätsbewertung (CI)", "pt-BR":"Avaliação de qualidade LLM (CI)"},
    "feat.tests":                {en:"Hermetic test harness — stubs & drivers for every surface", ja:"密閉テスト基盤 — 全公開面に スタブ・ドライバ完備", "zh-CN":"密闭测试基础设施 — 每个公共面都有桩与驱动", ko:"봉인된 테스트 인프라 — 모든 공개 표면에 스텁·드라이버", es:"Test harness hermético — stubs y drivers para cada superficie", fr:"Banc de test hermétique — stubs et drivers pour chaque surface", de:"Hermetisches Test-Harness — Stubs & Driver für jede Schnittstelle", "pt-BR":"Test harness hermético — stubs e drivers para cada superfície"},
    "feat.mcp_server":           {en:"MCP server (stdio + remote HTTP/SSE)", ja:"MCP サーバ (stdio + リモート HTTP/SSE)", "zh-CN":"MCP 服务器 (stdio + 远程 HTTP/SSE)", ko:"MCP 서버 (stdio + 원격 HTTP/SSE)", es:"Servidor MCP (stdio + HTTP/SSE remoto)", fr:"Serveur MCP (stdio + HTTP/SSE distant)", de:"MCP-Server (stdio + Remote HTTP/SSE)", "pt-BR":"Servidor MCP (stdio + HTTP/SSE remoto)"},
    "feat.responsive":           {en:"Mobile-responsive UI + landing", ja:"モバイル対応 UI + サイト", "zh-CN":"移动响应式 UI + 站点", ko:"모바일 반응형 UI + 사이트", es:"UI responsive móvil + sitio", fr:"UI responsive mobile + site", de:"Mobile-responsive UI + Site", "pt-BR":"UI responsiva móvel + site"},

    // ===== Hero meta chips (18) ======================================
    // ---- "What's new" + comparison table (alpha13 hero sections) --------
    "new.kicker": {en:"New in alpha13 · June 2026", ja:"alpha13 の新機能 · 2026年6月", "zh-CN":"alpha13 新功能 · 2026年6月", ko:"alpha13 신기능 · 2026년 6월", es:"Nuevo en alpha13 · Junio 2026", fr:"Nouveautés alpha13 · Juin 2026", de:"Neu in alpha13 · Juni 2026", "pt-BR":"Novo na alpha13 · Junho 2026"},
    "new.h2": {en:"Stop clicking. Start talking.", ja:"クリックをやめ、話しかけよう。", "zh-CN":"别再点击,开始说话。", ko:"클릭을 멈추고, 말을 거세요.", es:"Deja de hacer clic. Habla.", fr:"Arrêtez de cliquer. Parlez.", de:"Hören Sie auf zu klicken. Reden Sie.", "pt-BR":"Pare de clicar. Comece a falar."},
    "new.lead": {en:"The 3 things that make Praxia different from ChatGPT Desktop and Claude Desktop today:", ja:"今日の ChatGPT Desktop / Claude Desktop と Praxia を分ける 3 つのポイント:", "zh-CN":"目前 Praxia 与 ChatGPT Desktop / Claude Desktop 的 3 大差异:", ko:"오늘날 ChatGPT Desktop / Claude Desktop 과 Praxia 의 3 가지 차이점:", es:"Las 3 cosas que diferencian a Praxia de ChatGPT Desktop y Claude Desktop hoy:", fr:"Les 3 choses qui différencient Praxia de ChatGPT Desktop et Claude Desktop aujourd'hui :", de:"Die 3 Dinge, die Praxia heute von ChatGPT Desktop und Claude Desktop unterscheiden:", "pt-BR":"As 3 coisas que diferenciam o Praxia do ChatGPT Desktop e Claude Desktop hoje:"},
    "new.sched.h": {en:"Chat → cron schedules", ja:"チャット → cron スケジュール", "zh-CN":"聊天 → cron 计划任务", ko:"채팅 → cron 스케줄", es:"Chat → horarios cron", fr:"Chat → planifications cron", de:"Chat → Cron-Pläne", "pt-BR":"Chat → agendamentos cron"},
    "new.sched.body": {en:"Say <em>&ldquo;every Monday morning, summarise yesterday's Documents folder&rdquo;</em>. Praxia parses the intent, generates the POSIX cron expression, persists the schedule, and tells you when the next run fires. Each firing creates a regular Task — viewable, cancellable, auditable.", ja:"<em>「毎週月曜の朝に昨日の Documents フォルダ変更を要約して」</em>と話せば、Praxia が意図を解釈して POSIX cron 式を生成、スケジュールを永続化、次回起動時刻を教えてくれます。実行毎に通常の Task が生成され、確認・キャンセル・監査が可能。", "zh-CN":"说 <em>「每周一上午,总结昨天 Documents 文件夹的变更」</em>。Praxia 解析意图,生成 POSIX cron 表达式,持久化计划,并告诉您下次运行时间。每次触发生成一个普通 Task — 可查看、可取消、可审计。", ko:"<em>&ldquo;매주 월요일 아침에 어제 Documents 폴더 변경 요약&rdquo;</em>이라고 말하면 Praxia 가 의도를 해석해 POSIX cron 식을 생성、스케줄을 영구화、다음 실행 시각을 알려줍니다. 실행마다 일반 Task 가 생성되어 확인・취소・감사가 가능합니다.", es:"Di <em>&laquo;todos los lunes por la mañana, resume los cambios de Documents&raquo;</em>. Praxia interpreta la intención, genera la expresión cron POSIX, guarda el horario y te dice cuándo será la próxima ejecución. Cada disparo crea una Task normal — visible, cancelable, auditable.", fr:"Dites <em>&laquo; chaque lundi matin, résume les changements de Documents &raquo;</em>. Praxia analyse l'intention, génère l'expression cron POSIX, enregistre la planification et indique la prochaine exécution. Chaque déclenchement crée une Task normale — visible, annulable, auditable.", de:"Sagen Sie <em>&bdquo;jeden Montagmorgen die gestrigen Documents-Änderungen zusammenfassen&ldquo;</em>. Praxia parst die Absicht, erzeugt den POSIX-Cron-Ausdruck, speichert den Plan und teilt mit, wann der nächste Lauf erfolgt. Jede Ausführung erzeugt eine normale Task — sichtbar, abbrechbar, auditierbar.", "pt-BR":"Diga <em>&ldquo;toda segunda de manhã, resuma as mudanças de Documents&rdquo;</em>. O Praxia interpreta a intenção, gera a expressão cron POSIX, persiste o agendamento e informa quando será a próxima execução. Cada disparo cria uma Task normal — visível, cancelável, auditável."},
    "new.sched.quote": {en:"&ldquo;every Monday morning&rdquo; → <code>0 9 * * 1</code>", ja:"&ldquo;毎週月曜の朝に〇〇して&rdquo; → <code>0 9 * * 1</code>", "zh-CN":"「每周一上午」 → <code>0 9 * * 1</code>", ko:"&ldquo;매주 월요일 아침에&rdquo; → <code>0 9 * * 1</code>", es:"&laquo;todos los lunes por la mañana&raquo; → <code>0 9 * * 1</code>", fr:"&laquo; chaque lundi matin &raquo; → <code>0 9 * * 1</code>", de:"&bdquo;jeden Montagmorgen&ldquo; → <code>0 9 * * 1</code>", "pt-BR":"&ldquo;toda segunda de manhã&rdquo; → <code>0 9 * * 1</code>"},
    "new.batch.h": {en:"Chat → parallel batches", ja:"チャット → 並列バッチ", "zh-CN":"聊天 → 并行批处理", ko:"채팅 → 병렬 배치", es:"Chat → lotes paralelos", fr:"Chat → lots parallèles", de:"Chat → parallele Stapel", "pt-BR":"Chat → lotes paralelos"},
    "new.batch.body": {en:"Say <em>&ldquo;for each of these 10 PDFs, extract the action items&rdquo;</em> and Praxia fans out 10 agent runs in parallel under a single Batch. Concurrency capped so provider rate-limits don't 429 you. Cancel the whole batch — or any single child — from the UI.", ja:"<em>「これら 10 件の PDF からアクションアイテムを抽出して」</em>と話せば、Praxia が 1 つの Batch 配下で 10 件のエージェント実行を並列展開。プロバイダのレート制限で 429 にならないよう同時実行数を制限。Batch 全体も個別子 Task も UI からキャンセル可能。", "zh-CN":"说 <em>「从这 10 个 PDF 中提取行动项」</em>,Praxia 在单个 Batch 下并行 10 个 agent 执行。并发数受限以避免供应商 429 错误。可从 UI 取消整个 Batch 或任何单个子任务。", ko:"<em>&ldquo;이 10 개 PDF 에서 액션 아이템 추출&rdquo;</em>이라고 말하면 Praxia 가 하나의 Batch 아래 10 개 에이전트를 병렬 실행. 공급자 레이트 리밋 429 를 피하도록 동시 실행 수 제한. Batch 전체 또는 개별 자식 Task 를 UI 에서 취소 가능.", es:"Di <em>&laquo;de cada uno de estos 10 PDFs, extrae los action items&raquo;</em> y Praxia despliega 10 ejecuciones en paralelo bajo un solo Batch. Concurrencia limitada para no recibir 429 del proveedor. Cancela el batch entero — o cualquier hijo — desde la UI.", fr:"Dites <em>&laquo; pour chacun de ces 10 PDFs, extrais les action items &raquo;</em> et Praxia déploie 10 exécutions en parallèle sous un seul Batch. Concurrence limitée pour éviter les 429. Annulez tout le batch — ou n'importe quel enfant — depuis l'UI.", de:"Sagen Sie <em>&bdquo;extrahiere aus jedem dieser 10 PDFs die Action Items&ldquo;</em> und Praxia fächert 10 Agent-Läufe parallel unter einem einzigen Batch auf. Concurrency begrenzt, um Provider-429s zu vermeiden. Den gesamten Batch — oder einzelne Kinder — aus der UI abbrechen.", "pt-BR":"Diga <em>&ldquo;para cada um destes 10 PDFs, extraia os action items&rdquo;</em> e o Praxia dispara 10 execuções em paralelo sob um único Batch. Concorrência limitada para evitar 429 do provedor. Cancele o batch inteiro — ou qualquer filho — pela UI."},
    "new.batch.quote": {en:"10 items · 4 in flight · 1 batch id", ja:"10件 · 同時4件 · 1つのバッチ ID", "zh-CN":"10 项 · 同时 4 项 · 1 个 batch id", ko:"10 항목 · 동시 4 · 배치 ID 1 개", es:"10 ítems · 4 en vuelo · 1 batch id", fr:"10 éléments · 4 en cours · 1 batch id", de:"10 Items · 4 parallel · 1 Batch-ID", "pt-BR":"10 itens · 4 em execução · 1 batch id"},
    "new.deck.h": {en:"Decks with actual design", ja:"デザイン付き資料生成", "zh-CN":"具有真实设计的演示文稿", ko:"실제 디자인이 적용된 자료", es:"Presentaciones con diseño real", fr:"Présentations avec un vrai design", de:"Folien mit echtem Design", "pt-BR":"Apresentações com design real"},
    "new.deck.body": {en:"Ask for a pitch deck and you get a deck with colored title bars, accent stripes, and matplotlib charts — generated by the LLM authoring real python-pptx code in a sandboxed runtime. Themes are JSON; bring your own. Fallback to plain export if codegen fails — you always get a file.", ja:"資料生成を依頼すれば、カラータイトルバー・アクセントストライプ・matplotlib グラフ付きの本格デッキが手に入ります。LLM が python-pptx コードをサンドボックス内で生成。テーマは JSON 形式で持ち込み可能。コード生成失敗時はプレーン出力にフォールバック — 必ず file が手に入ります。", "zh-CN":"请求演示文稿,获得带主题标题栏、强调色条纹、matplotlib 图表的真实演示文稿 — LLM 在沙箱中编写真实 python-pptx 代码生成。主题为 JSON 格式,可自带。生成失败时回退到普通导出 — 始终能获得文件。", ko:"발표 자료를 요청하면 컬러 타이틀 바, 강조 스트라이프, matplotlib 차트가 포함된 본격적인 덱을 얻을 수 있습니다 — LLM 이 샌드박스에서 실제 python-pptx 코드를 작성하여 생성. 테마는 JSON 형식이며 직접 가져올 수 있습니다. 코드 생성 실패 시 일반 출력으로 폴백 — 항상 파일을 얻을 수 있습니다.", es:"Pide una presentación y obtienes barras de título con color, líneas de acento y gráficos matplotlib — generada por el LLM escribiendo código python-pptx real en un entorno sandbox. Los temas son JSON; trae el tuyo. Fallback a export plano si la codegen falla — siempre obtienes un archivo.", fr:"Demandez une présentation et obtenez des barres de titre colorées, des bandes d'accentuation et des graphiques matplotlib — générés par le LLM écrivant du vrai code python-pptx en sandbox. Les thèmes sont en JSON ; apportez le vôtre. Fallback à l'export plat si la codegen échoue — vous obtenez toujours un fichier.", de:"Fragen Sie nach einer Präsentation und erhalten Folien mit farbigen Titelleisten, Akzentstreifen und matplotlib-Diagrammen — vom LLM in sandboxed python-pptx-Code erzeugt. Themes als JSON; eigene mitbringen. Fallback auf plain Export bei Codegen-Fehler — Sie erhalten immer eine Datei.", "pt-BR":"Peça uma apresentação e receba barras de título coloridas, faixas de destaque e gráficos matplotlib — gerados pelo LLM escrevendo código python-pptx real em sandbox. Temas em JSON; traga o seu. Fallback para export simples se a codegen falhar — você sempre recebe um arquivo."},
    "new.deck.quote": {en:"Designer · sandboxed · themable", ja:"Designer · サンドボックス · テーマ対応", "zh-CN":"Designer · 沙箱 · 可主题化", ko:"Designer · 샌드박스 · 테마 지원", es:"Designer · sandbox · con temas", fr:"Designer · sandbox · thèmes", de:"Designer · sandboxed · themable", "pt-BR":"Designer · sandbox · com temas"},
    "compare.kicker": {en:"How it stacks up", ja:"他のデスクトップ AI との比較", "zh-CN":"与其他对比", ko:"다른 데스크톱 AI 와 비교", es:"Cómo se compara", fr:"Comparaison", de:"Im Vergleich", "pt-BR":"Como se compara"},
    "compare.h2": {en:"Praxia vs. ChatGPT Desktop vs. Claude Desktop", ja:"Praxia vs ChatGPT Desktop vs Claude Desktop", "zh-CN":"Praxia vs ChatGPT Desktop vs Claude Desktop", ko:"Praxia vs ChatGPT Desktop vs Claude Desktop", es:"Praxia vs. ChatGPT Desktop vs. Claude Desktop", fr:"Praxia vs ChatGPT Desktop vs Claude Desktop", de:"Praxia vs. ChatGPT Desktop vs. Claude Desktop", "pt-BR":"Praxia vs. ChatGPT Desktop vs. Claude Desktop"},
    "compare.lead": {en:"The capabilities other AI desktops don't have today. As of June 2026.", ja:"他の AI デスクトップにはない機能（2026 年 6 月時点）。", "zh-CN":"目前其他 AI 桌面应用没有的能力(截至 2026 年 6 月)。", ko:"오늘날 다른 AI 데스크톱에 없는 기능 (2026 년 6 월 기준).", es:"Las capacidades que otros AI desktops no tienen hoy. A junio de 2026.", fr:"Les capacités que les autres bureaux IA n'ont pas aujourd'hui. Au mois de juin 2026.", de:"Funktionen, die andere KI-Desktops heute nicht haben. Stand Juni 2026.", "pt-BR":"As capacidades que outros AI desktops não têm hoje. A partir de junho de 2026."},
    "cmp.cron":   {en:"Cron schedules from natural language", ja:"自然言語から cron スケジュール作成", "zh-CN":"从自然语言创建 cron 计划", ko:"자연어로 cron 스케줄 생성", es:"Horarios cron desde lenguaje natural", fr:"Planifications cron depuis langage naturel", de:"Cron-Pläne aus natürlicher Sprache", "pt-BR":"Agendamentos cron a partir de linguagem natural"},
    "cmp.batch":  {en:"Parallel batch fan-out (one prompt per item)", ja:"並列バッチ実行(1 項目 1 プロンプト)", "zh-CN":"并行批处理(每项一个提示)", ko:"병렬 배치 fan-out (항목당 프롬프트 1 개)", es:"Lotes paralelos (un prompt por ítem)", fr:"Lots parallèles (un prompt par élément)", de:"Parallele Stapel (ein Prompt pro Element)", "pt-BR":"Lotes paralelos (um prompt por item)"},
    "cmp.watch":  {en:"Auto-re-index of local docs on file change", ja:"ローカル文書の変更を検出し自動再インデックス", "zh-CN":"本地文档变更时自动重新索引", ko:"로컬 문서 변경 시 자동 재색인", es:"Re-indexado automático de docs locales al cambiar", fr:"Ré-indexation auto des documents locaux", de:"Auto-Neuindex lokaler Docs bei Änderung", "pt-BR":"Re-indexação auto de docs locais ao mudar"},
    "cmp.designer": {en:"Code-gen PowerPoint with theme + charts", ja:"テーマ・図表付きの PowerPoint コード生成", "zh-CN":"带主题与图表的 PowerPoint 代码生成", ko:"테마 + 차트가 있는 PowerPoint 코드 생성", es:"PowerPoint con tema y gráficos generado por código", fr:"PowerPoint codégen avec thème et graphiques", de:"Code-Gen PowerPoint mit Theme + Charts", "pt-BR":"PowerPoint codegen com tema + gráficos"},
    "cmp.multi":  {en:"9+ LLM providers in one app", ja:"1 つのアプリで 9+ LLM プロバイダ", "zh-CN":"单个应用支持 9+ LLM 提供商", ko:"하나의 앱에서 9+ LLM 공급자", es:"9+ proveedores de LLM en una sola app", fr:"9+ fournisseurs de LLM dans une app", de:"9+ LLM-Anbieter in einer App", "pt-BR":"9+ provedores de LLM em um app"},
    "cmp.bring":  {en:"Bring your own API key (local-first, no SaaS proxy)", ja:"自分の API キー持込(ローカルファースト、SaaS プロキシ無し)", "zh-CN":"自带 API 密钥(本地优先,无 SaaS 代理)", ko:"자신의 API 키 사용 (로컬 우선, SaaS 프록시 없음)", es:"Trae tu propia API key (local-first, sin proxy SaaS)", fr:"Apportez votre propre clé API (local-first, pas de proxy SaaS)", de:"Eigener API-Key (Local-first, kein SaaS-Proxy)", "pt-BR":"Traga sua própria API key (local-first, sem proxy SaaS)"},
    "cmp.memory": {en:"Personal → organizational memory promotion", ja:"個人 → 組織のメモリ昇格", "zh-CN":"个人 → 组织记忆晋升", ko:"개인 → 조직 메모리 승격", es:"Promoción de memoria personal → organizacional", fr:"Promotion mémoire personnelle → organisationnelle", de:"Persönlich → Organisations-Speicher-Promotion", "pt-BR":"Promoção de memória pessoal → organizacional"},
    "cmp.i18n":   {en:"UI in 8 languages", ja:"8 言語の UI", "zh-CN":"8 种语言界面", ko:"8 개 언어 UI", es:"UI en 8 idiomas", fr:"UI en 8 langues", de:"UI in 8 Sprachen", "pt-BR":"UI em 8 idiomas"},
    "cmp.oss":    {en:"Open source (Apache 2.0 server)", ja:"オープンソース (Apache 2.0 サーバ)", "zh-CN":"开源 (Apache 2.0 服务端)", ko:"오픈 소스 (Apache 2.0 서버)", es:"Código abierto (servidor Apache 2.0)", fr:"Open source (serveur Apache 2.0)", de:"Open Source (Apache-2.0-Server)", "pt-BR":"Código aberto (servidor Apache 2.0)"},
    "compare.footnote": {en:"Information current as of June 2026, based on each product's public release notes. ChatGPT Desktop and Claude Desktop are excellent at what they do — Praxia just does different things, primarily around workflow automation and local-first document handling.", ja:"2026 年 6 月時点、各製品の公開リリースノートに基づく情報。ChatGPT Desktop / Claude Desktop はそれぞれ優れた製品です — Praxia は単に異なる方向性(ワークフロー自動化とローカルファーストの文書処理)を追求しています。", "zh-CN":"基于 2026 年 6 月各产品的公开发布说明。ChatGPT Desktop 与 Claude Desktop 各自优秀 — Praxia 只是聚焦于不同方向(工作流自动化与本地优先文档处理)。", ko:"2026 년 6 월 기준, 각 제품의 공개 릴리스 노트 기반. ChatGPT Desktop 과 Claude Desktop 은 각자 뛰어난 제품 — Praxia 는 단지 다른 방향(워크플로 자동화와 로컬 우선 문서 처리)에 집중하고 있을 뿐입니다.", es:"Información a junio de 2026, basada en las notas públicas de cada producto. ChatGPT Desktop y Claude Desktop son excelentes — Praxia simplemente hace cosas distintas, principalmente automatización de flujos y manejo de documentos local-first.", fr:"Informations à jour en juin 2026, basées sur les notes publiques de chaque produit. ChatGPT Desktop et Claude Desktop sont excellents — Praxia fait simplement des choses différentes, autour de l'automatisation de workflows et de la gestion locale des documents.", de:"Stand Juni 2026, basierend auf den öffentlichen Release-Notes. ChatGPT Desktop und Claude Desktop sind exzellent — Praxia tut einfach andere Dinge, vor allem Workflow-Automatisierung und Local-first-Dokumente.", "pt-BR":"Informação a junho de 2026, com base nas notas públicas. ChatGPT Desktop e Claude Desktop são excelentes — o Praxia simplesmente faz coisas diferentes, sobretudo automação de fluxos e documentos local-first."},

    "chip.schedules":  {en:"🗓 Chat → cron schedules (NL → POSIX)", ja:"🗓 チャット→cron スケジュール (自然文→POSIX)", "zh-CN":"🗓 聊天→cron 计划任务 (自然语言→POSIX)", ko:"🗓 채팅→cron 스케줄 (자연어→POSIX)", es:"🗓 Chat → horarios cron (NL → POSIX)", fr:"🗓 Chat → planifications cron (NL → POSIX)", de:"🗓 Chat → Cron-Pläne (NL → POSIX)", "pt-BR":"🗓 Chat → agendamentos cron (NL → POSIX)"},
    "chip.batches":    {en:"⚡ Chat → parallel batches", ja:"⚡ チャット→並列バッチ実行", "zh-CN":"⚡ 聊天→并行批处理", ko:"⚡ 채팅→병렬 배치", es:"⚡ Chat → lotes paralelos", fr:"⚡ Chat → lots parallèles", de:"⚡ Chat → parallele Stapel", "pt-BR":"⚡ Chat → lotes paralelos"},
    "chip.autowatch":  {en:"👀 Documents auto-watch on launch", ja:"👀 Documents 起動時自動監視", "zh-CN":"👀 Documents 启动自动监视", ko:"👀 Documents 시작 시 자동 감시", es:"👀 Documents auto-vigilancia al iniciar", fr:"👀 Surveillance auto des Documents au démarrage", de:"👀 Documents Auto-Überwachung beim Start", "pt-BR":"👀 Documents auto-monitoramento ao iniciar"},
    "chip.py":         {en:"🐍 Python 3.11+", ja:"🐍 Python 3.11+", "zh-CN":"🐍 Python 3.11+", ko:"🐍 Python 3.11+", es:"🐍 Python 3.11+", fr:"🐍 Python 3.11+", de:"🐍 Python 3.11+", "pt-BR":"🐍 Python 3.11+"},
    "chip.ltm":        {en:"🧠 6 LTM backends + multi-LTM fusion", ja:"🧠 LTM バックエンド 6 種 + 複数融合", "zh-CN":"🧠 6 种 LTM 后端 + 多 LTM 融合", ko:"🧠 LTM 백엔드 6 종 + 멀티 LTM 융합", es:"🧠 6 backends LTM + fusión multi-LTM", fr:"🧠 6 backends LTM + fusion multi-LTM", de:"🧠 6 LTM-Backends + Multi-LTM-Fusion", "pt-BR":"🧠 6 backends LTM + fusão multi-LTM"},
    "chip.llm":        {en:"🤖 Claude · ChatGPT · Gemini · Gemma · Qwen · DeepSeek · Mistral · Grok · Llama", ja:"🤖 Claude · ChatGPT · Gemini · Gemma · Qwen · DeepSeek · Mistral · Grok · Llama", "zh-CN":"🤖 Claude · ChatGPT · Gemini · Gemma · Qwen · DeepSeek · Mistral · Grok · Llama", ko:"🤖 Claude · ChatGPT · Gemini · Gemma · Qwen · DeepSeek · Mistral · Grok · Llama", es:"🤖 Claude · ChatGPT · Gemini · Gemma · Qwen · DeepSeek · Mistral · Grok · Llama", fr:"🤖 Claude · ChatGPT · Gemini · Gemma · Qwen · DeepSeek · Mistral · Grok · Llama", de:"🤖 Claude · ChatGPT · Gemini · Gemma · Qwen · DeepSeek · Mistral · Grok · Llama", "pt-BR":"🤖 Claude · ChatGPT · Gemini · Gemma · Qwen · DeepSeek · Mistral · Grok · Llama"},
    "chip.auth":       {en:"🔐 SSO + RBAC + audit · OAuth per-user", ja:"🔐 SSO + RBAC + 監査 · ユーザ毎 OAuth", "zh-CN":"🔐 SSO + RBAC + 审计 · 用户级 OAuth", ko:"🔐 SSO + RBAC + 감사 · 사용자별 OAuth", es:"🔐 SSO + RBAC + auditoría · OAuth por usuario", fr:"🔐 SSO + RBAC + audit · OAuth par utilisateur", de:"🔐 SSO + RBAC + Audit · OAuth pro Benutzer", "pt-BR":"🔐 SSO + RBAC + auditoria · OAuth por usuário"},
    "chip.acl":        {en:"🛡 Resource ACL", ja:"🛡 リソース ACL", "zh-CN":"🛡 资源 ACL", ko:"🛡 리소스 ACL", es:"🛡 ACL de recursos", fr:"🛡 ACL de ressources", de:"🛡 Ressourcen-ACL", "pt-BR":"🛡 ACL de recursos"},
    "chip.parsers":    {en:"📄 PDF · Word · Excel · PowerPoint", ja:"📄 PDF · Word · Excel · PowerPoint", "zh-CN":"📄 PDF · Word · Excel · PowerPoint", ko:"📄 PDF · Word · Excel · PowerPoint", es:"📄 PDF · Word · Excel · PowerPoint", fr:"📄 PDF · Word · Excel · PowerPoint", de:"📄 PDF · Word · Excel · PowerPoint", "pt-BR":"📄 PDF · Word · Excel · PowerPoint"},
    "chip.exporters":  {en:"🖨 HTML / PPTX / DOCX output", ja:"🖨 HTML / PPTX / DOCX 出力", "zh-CN":"🖨 HTML / PPTX / DOCX 输出", ko:"🖨 HTML / PPTX / DOCX 출력", es:"🖨 Salida HTML / PPTX / DOCX", fr:"🖨 Sortie HTML / PPTX / DOCX", de:"🖨 HTML / PPTX / DOCX-Ausgabe", "pt-BR":"🖨 Saída HTML / PPTX / DOCX"},
    "chip.voice":      {en:"🎙 Voice in / out (STT + TTS)", ja:"🎙 音声入出力 (STT + TTS)", "zh-CN":"🎙 语音输入/输出 (STT + TTS)", ko:"🎙 음성 입출력 (STT + TTS)", es:"🎙 Voz entrada/salida (STT + TTS)", fr:"🎙 Voix E/S (STT + TTS)", de:"🎙 Sprache I/O (STT + TTS)", "pt-BR":"🎙 Voz entrada/saída (STT + TTS)"},
    "chip.memmode":    {en:"🪪 Memory mode (accumulate / read-only)", ja:"🪪 メモリモード (accumulate / read-only)", "zh-CN":"🪪 记忆模式 (accumulate / read-only)", ko:"🪪 메모리 모드 (accumulate / read-only)", es:"🪪 Modo memoria (accumulate / read-only)", fr:"🪪 Mode mémoire (accumulate / read-only)", de:"🪪 Speichermodus (accumulate / read-only)", "pt-BR":"🪪 Modo memória (accumulate / read-only)"},
    "chip.sdk":        {en:"🌐 SDK · Streamlit UI · FastAPI HTTP", ja:"🌐 SDK · Streamlit UI · FastAPI HTTP", "zh-CN":"🌐 SDK · Streamlit UI · FastAPI HTTP", ko:"🌐 SDK · Streamlit UI · FastAPI HTTP", es:"🌐 SDK · Streamlit UI · FastAPI HTTP", fr:"🌐 SDK · Streamlit UI · FastAPI HTTP", de:"🌐 SDK · Streamlit UI · FastAPI HTTP", "pt-BR":"🌐 SDK · Streamlit UI · FastAPI HTTP"},
    "chip.kms":        {en:"🔑 KMS-backed encryption (AWS / Azure / GCP / Vault)", ja:"🔑 KMS ベース暗号化 (AWS / Azure / GCP / Vault)", "zh-CN":"🔑 KMS 加密 (AWS / Azure / GCP / Vault)", ko:"🔑 KMS 기반 암호화 (AWS / Azure / GCP / Vault)", es:"🔑 Cifrado KMS (AWS / Azure / GCP / Vault)", fr:"🔑 Chiffrement KMS (AWS / Azure / GCP / Vault)", de:"🔑 KMS-Verschlüsselung (AWS / Azure / GCP / Vault)", "pt-BR":"🔑 Criptografia KMS (AWS / Azure / GCP / Vault)"},
    "chip.ab":         {en:"⚖️ A/B experiments + LLM-quality eval", ja:"⚖️ A/B 実験 + LLM 品質評価", "zh-CN":"⚖️ A/B 实验 + LLM 质量评估", ko:"⚖️ A/B 실험 + LLM 품질 평가", es:"⚖️ Experimentos A/B + eval calidad LLM", fr:"⚖️ Expériences A/B + éval qualité LLM", de:"⚖️ A/B-Experimente + LLM-Qualitätsbewertung", "pt-BR":"⚖️ Experimentos A/B + avaliação LLM"},
    "chip.mcp":        {en:"🪐 MCP (stdio + remote HTTP/SSE)", ja:"🪐 MCP (stdio + リモート HTTP/SSE)", "zh-CN":"🪐 MCP (stdio + 远程 HTTP/SSE)", ko:"🪐 MCP (stdio + 원격 HTTP/SSE)", es:"🪐 MCP (stdio + HTTP/SSE remoto)", fr:"🪐 MCP (stdio + HTTP/SSE distant)", de:"🪐 MCP (stdio + Remote HTTP/SSE)", "pt-BR":"🪐 MCP (stdio + HTTP/SSE remoto)"},
    "chip.conn20":     {en:"🔗 20 connectors (Pull + Push) · Box / Notion / Slack / kintone / S3 / …", ja:"🔗 20 種コネクタ (Pull + Push) · Box / Notion / Slack / kintone / S3 等", "zh-CN":"🔗 20 个连接器 (Pull + Push) · Box / Notion / Slack / kintone / S3 等", ko:"🔗 20 종 커넥터 (Pull + Push) · Box / Notion / Slack / kintone / S3 등", es:"🔗 20 conectores (Pull + Push) · Box / Notion / Slack / kintone / S3 / …", fr:"🔗 20 connecteurs (Pull + Push) · Box / Notion / Slack / kintone / S3 / …", de:"🔗 20 Konnektoren (Pull + Push) · Box / Notion / Slack / kintone / S3 / …", "pt-BR":"🔗 20 conectores (Pull + Push) · Box / Notion / Slack / kintone / S3 / …"},
    "chip.responsive": {en:"📱 Mobile-responsive", ja:"📱 モバイル対応", "zh-CN":"📱 移动响应式", ko:"📱 모바일 반응형", es:"📱 Responsive móvil", fr:"📱 Responsive mobile", de:"📱 Mobile-responsive", "pt-BR":"📱 Responsivo móvel"},
    "chip.agent":      {en:"🤖 Autonomous agent (LLM-driven tool-use loop)", ja:"🤖 自律エージェント (LLM 駆動)", "zh-CN":"🤖 自主代理 (LLM 驱动)", ko:"🤖 자율 에이전트 (LLM 주도)", es:"🤖 Agente autónomo (guiado por LLM)", fr:"🤖 Agent autonome (guidé par LLM)", de:"🤖 Autonomer Agent (LLM-gesteuert)", "pt-BR":"🤖 Agente autônomo (guiado por LLM)"},
    "chip.designer":   {en:"✨ Prompt Designer (intent → polished template)", ja:"✨ プロンプトデザイナ (やりたいこと → 完成形)", "zh-CN":"✨ 提示设计器 (意图 → 完整模板)", ko:"✨ 프롬프트 디자이너 (의도 → 완성 템플릿)", es:"✨ Prompt Designer (intención → plantilla pulida)", fr:"✨ Prompt Designer (intention → template prêt)", de:"✨ Prompt Designer (Absicht → fertiges Template)", "pt-BR":"✨ Prompt Designer (intenção → template pronto)"},
    "chip.tests":      {en:"✅ Hermetic test harness (stubs & drivers)", ja:"✅ 密閉テスト基盤 (スタブ・ドライバ完備)", "zh-CN":"✅ 密闭测试基础设施 (桩与驱动)", ko:"✅ 봉인된 테스트 인프라 (스텁·드라이버)", es:"✅ Test harness hermético (stubs & drivers)", fr:"✅ Banc de test hermétique (stubs & drivers)", de:"✅ Hermetisches Test-Harness (Stubs & Driver)", "pt-BR":"✅ Test harness hermético (stubs & drivers)"},

    // ===== Feature card body texts (36 — concise summaries per locale) ======
    "feat.memory_loop.body":        {en:"Senior staff's \"magic prompts\" auto-promote into shared knowledge via three independent paths: frequency, outcome correlation, and LLM self-eval.", ja:"ベテランの「効くプロンプト」が頻度・成果連動・LLM 自己評価の 3 経路で自動的に組織知へ昇格。", "zh-CN":"资深员工的「魔法提示词」通过频率/成果关联/LLM 自评 3 条路径自动晋升为共享知识。", ko:"베테랑의 「잘 듣는 프롬프트」가 빈도·성과 연동·LLM 자가평가 3 경로로 조직 지식으로 자동 승격.", es:"Los \"prompts mágicos\" del personal sénior se promueven automáticamente al saber compartido por 3 vías: frecuencia, correlación de resultados y autoevaluación LLM.", fr:"Les \"prompts magiques\" des seniors se promeuvent automatiquement en savoir partagé par 3 voies : fréquence, corrélation des résultats et auto-évaluation LLM.", de:"Die magischen Prompts der erfahrenen Mitarbeiter werden über 3 unabhängige Pfade automatisch in geteiltes Wissen befördert: Häufigkeit, Ergebniskorrelation, LLM-Selbstbewertung.", "pt-BR":"Os \"prompts mágicos\" do pessoal sênior se promovem automaticamente para conhecimento compartilhado via 3 caminhos: frequência, correlação de resultado e autoavaliação LLM."},
    "feat.promotion_engine.body":   {en:"Frequency-based, outcome-correlated, LLM-scored. Run in parallel — never depending on a single signal. Configurable thresholds for auto-promote vs review.", ja:"頻度・成果連動・LLM スコアの 3 経路を並走。単一シグナル依存にせず、自動昇格 vs レビューの閾値を設定可能。", "zh-CN":"基于频率、成果关联、LLM 评分,并行运行 — 不依赖单一信号。可配置自动晋升 vs 审查阈值。", ko:"빈도·성과 연동·LLM 점수의 3 경로를 병행. 단일 신호 의존 회피, 자동 승격 vs 검토 임계값 설정 가능.", es:"Basado en frecuencia, correlacionado con resultados, puntuado por LLM. Se ejecutan en paralelo, sin depender de una sola señal. Umbrales configurables para auto-promoción vs revisión.", fr:"Basé sur la fréquence, corrélé aux résultats, noté par LLM. Exécution en parallèle, jamais dépendant d'un seul signal. Seuils configurables pour auto-promotion vs révision.", de:"Häufigkeitsbasiert, ergebniskorreliert, LLM-bewertet. Parallel ausgeführt – nie abhängig von einem einzelnen Signal. Konfigurierbare Schwellenwerte für Auto-Beförderung vs. Review.", "pt-BR":"Baseado em frequência, correlacionado a resultado, pontuado por LLM. Em paralelo — nunca dependendo de um único sinal. Limiares configuráveis para auto-promoção vs revisão."},
    "feat.workflow_flows.body":     {en:"Sales prep, logic checking, RAG self-correction — three production-ready multi-agent pipelines that run in 5 minutes. No bespoke orchestration code required.", ja:"営業準備・論理整合・RAG 自己修復の 3 本番向けマルチエージェントパイプラインを 5 分で実行。独自の調整コード不要。", "zh-CN":"销售准备、逻辑检查、RAG 自我纠正 — 3 条生产级多代理流水线 5 分钟即跑。无需定制编排代码。", ko:"영업 준비·논리 검증·RAG 자가 수정 — 5 분에 실행 가능한 프로덕션급 멀티 에이전트 파이프라인 3 종. 별도 조정 코드 불필요.", es:"Preparación de ventas, comprobación lógica, auto-corrección RAG — 3 pipelines multi-agente listos para producción que se ejecutan en 5 minutos. Sin código de orquestación a medida.", fr:"Préparation commerciale, vérification logique, auto-correction RAG — 3 pipelines multi-agents prêts pour la production, exécutables en 5 minutes. Aucun code d'orchestration sur mesure requis.", de:"Vertriebsvorbereitung, Logikprüfung, RAG-Selbstkorrektur – 3 produktionsreife Multi-Agent-Pipelines, in 5 Minuten ausführbar. Kein maßgeschneiderter Orchestrierungscode nötig.", "pt-BR":"Preparação de vendas, verificação lógica, autocorreção RAG — 3 pipelines multi-agente prontos para produção em 5 minutos. Sem código de orquestração sob medida."},
    "feat.business_skills.body":    {en:"Investment, sales, design, purchasing, patent, legal — domain-tuned agents with built-in guardrails (tax law, jurisdictional caveats, hallucination guards).", ja:"投資・営業・設計・購買・特許・法務 — 各業務向けに調整、税法・管轄注意・ハルシネーション防止のガードレール組込済。", "zh-CN":"投资、销售、设计、采购、专利、法务 — 领域调优代理,内置护栏(税法/管辖警示/幻觉防护)。", ko:"투자·영업·설계·구매·특허·법무 — 도메인 조정 에이전트, 가드레일 (세법·관할 주의·환각 방지) 내장.", es:"Inversión, ventas, diseño, compras, patentes, legal — agentes ajustados al dominio con guardarraíles incorporados (ley fiscal, salvedades jurisdiccionales, anti-alucinación).", fr:"Investissement, ventes, design, achats, brevets, juridique — agents adaptés au domaine avec garde-fous intégrés (droit fiscal, avertissements juridictionnels, anti-hallucination).", de:"Investment, Vertrieb, Design, Einkauf, Patent, Recht — domänenangepasste Agenten mit integrierten Leitplanken (Steuerrecht, Zuständigkeitshinweise, Halluzinationsschutz).", "pt-BR":"Investimento, vendas, design, compras, patente, jurídico — agentes ajustados ao domínio com guardrails integrados (direito tributário, ressalvas jurisdicionais, anti-alucinação)."},
    "feat.evidence.body":           {en:"Sentence-level hallucination detection and retrieval metrics ship as first-class modules. \"It works\" comes with proof attached.", ja:"文単位ハルシネーション検知と検索メトリクスを標準モジュールで同梱。「効く」根拠を必ず添付。", "zh-CN":"句级幻觉检测与检索指标作为一等模块同捆。「能用」附带证据。", ko:"문장 단위 환각 감지와 검색 지표를 일급 모듈로 동봉. 「작동」에 증거가 따라옴.", es:"Detección de alucinaciones a nivel de frase y métricas de recuperación como módulos de primera clase. \"Funciona\" viene con pruebas adjuntas.", fr:"Détection d'hallucination au niveau de la phrase et métriques de récupération en modules de première classe. « Ça marche » avec preuves jointes.", de:"Halluzinationserkennung auf Satzebene und Retrieval-Metriken als First-Class-Module. Es funktioniert kommt mit Belegen.", "pt-BR":"Detecção de alucinação em nível de frase e métricas de recuperação como módulos de primeira classe. \"Funciona\" vem com provas anexadas."},
    "feat.ltm_backends.body":       {en:"JSON, Mem0, LangMem, Letta, Zep, HindSight — switch with one line. Plus Graph layer (optional) for relationship-heavy domains. Zero vendor lock-in.", ja:"JSON / Mem0 / LangMem / Letta / Zep / HindSight を 1 行で切替。関係性重視の領域には Graph 層 (任意)。ベンダーロックイン無し。", "zh-CN":"JSON / Mem0 / LangMem / Letta / Zep / HindSight 一行切换。关系密集领域加 Graph 层(可选)。零厂商锁定。", ko:"JSON / Mem0 / LangMem / Letta / Zep / HindSight 한 줄로 전환. 관계 중심 영역에는 Graph 레이어 (옵션). 벤더 락인 없음.", es:"JSON / Mem0 / LangMem / Letta / Zep / HindSight — cambio en una línea. Más capa Graph (opcional) para dominios relacionales. Cero bloqueo de proveedor.", fr:"JSON / Mem0 / LangMem / Letta / Zep / HindSight — changement en une ligne. Plus couche Graph (optionnelle) pour les domaines relationnels. Zéro verrou fournisseur.", de:"JSON / Mem0 / LangMem / Letta / Zep / HindSight — Wechsel mit einer Zeile. Plus Graph-Schicht (optional) für beziehungsintensive Domänen. Null Vendor-Lock-in.", "pt-BR":"JSON / Mem0 / LangMem / Letta / Zep / HindSight — troca em uma linha. Mais camada Graph (opcional) para domínios relacionais. Zero lock-in."},
    "feat.multi_llm.body":          {en:"Claude, ChatGPT, Gemini, Gemma, Qwen, <strong>DeepSeek</strong>, <strong>Mistral / Codestral</strong>, <strong>Grok</strong>, Cohere Command R+, Perplexity Sonar, <strong>Llama 3.3</strong> (Groq fast or local Ollama), Phi — all with one-line aliases + 100+ more via LiteLLM. <strong>Same models on enterprise clouds</strong>: <code>azure/*</code> (Azure OpenAI), <code>azure_ai/*</code> (AI Foundry), <code>bedrock/*</code> (AWS Bedrock), <code>vertex_ai/*</code> (GCP Vertex AI). Auto-detect from env vars; switch model per-call.", ja:"Claude / ChatGPT / Gemini / Gemma / Qwen / <strong>DeepSeek</strong> / <strong>Mistral · Codestral</strong> / <strong>Grok</strong> / Cohere Command R+ / Perplexity Sonar / <strong>Llama 3.3</strong> (Groq 高速 or ローカル Ollama) / Phi — 1 行エイリアスで標準対応 + LiteLLM 経由で 100+。<strong>同じモデルをエンタープライズ・クラウドで</strong>: <code>azure/*</code> (Azure OpenAI) / <code>azure_ai/*</code> (AI Foundry) / <code>bedrock/*</code> (AWS Bedrock) / <code>vertex_ai/*</code> (GCP Vertex AI)。環境変数自動検出、呼出単位で切替可能。", "zh-CN":"Claude / ChatGPT / Gemini / Gemma / Qwen / <strong>DeepSeek</strong> / <strong>Mistral · Codestral</strong> / <strong>Grok</strong> / Cohere Command R+ / Perplexity Sonar / <strong>Llama 3.3</strong>(Groq 高速或本地 Ollama)/ Phi — 一行别名一类支持 + LiteLLM 100+。<strong>同样的模型也支持企业云</strong>:<code>azure/*</code>(Azure OpenAI)/ <code>azure_ai/*</code>(AI Foundry)/ <code>bedrock/*</code>(AWS Bedrock)/ <code>vertex_ai/*</code>(GCP Vertex AI)。从环境变量自动检测,每次调用切换模型。", ko:"Claude / ChatGPT / Gemini / Gemma / Qwen / <strong>DeepSeek</strong> / <strong>Mistral · Codestral</strong> / <strong>Grok</strong> / Cohere Command R+ / Perplexity Sonar / <strong>Llama 3.3</strong> (Groq 고속 또는 로컬 Ollama) / Phi — 한 줄 에이리어스 기본 지원 + LiteLLM 100+. <strong>동일 모델을 엔터프라이즈 클라우드에서</strong>: <code>azure/*</code> (Azure OpenAI) / <code>azure_ai/*</code> (AI Foundry) / <code>bedrock/*</code> (AWS Bedrock) / <code>vertex_ai/*</code> (GCP Vertex AI). 환경변수 자동 감지, 호출 단위 모델 전환.", es:"Claude / ChatGPT / Gemini / Gemma / Qwen / <strong>DeepSeek</strong> / <strong>Mistral · Codestral</strong> / <strong>Grok</strong> / Cohere Command R+ / Perplexity Sonar / <strong>Llama 3.3</strong> (Groq rápido o Ollama local) / Phi — todos con alias de una línea + 100+ más vía LiteLLM. <strong>Los mismos modelos en nubes empresariales</strong>: <code>azure/*</code> (Azure OpenAI), <code>azure_ai/*</code> (AI Foundry), <code>bedrock/*</code> (AWS Bedrock), <code>vertex_ai/*</code> (GCP Vertex AI). Auto-detección desde variables de entorno; cambio por llamada.", fr:"Claude / ChatGPT / Gemini / Gemma / Qwen / <strong>DeepSeek</strong> / <strong>Mistral · Codestral</strong> / <strong>Grok</strong> / Cohere Command R+ / Perplexity Sonar / <strong>Llama 3.3</strong> (Groq rapide ou Ollama local) / Phi — tous avec alias d'une ligne + 100+ via LiteLLM. <strong>Les mêmes modèles sur clouds entreprise</strong> : <code>azure/*</code> (Azure OpenAI), <code>azure_ai/*</code> (AI Foundry), <code>bedrock/*</code> (AWS Bedrock), <code>vertex_ai/*</code> (GCP Vertex AI). Détection automatique depuis les variables d'env ; changement par appel.", de:"Claude / ChatGPT / Gemini / Gemma / Qwen / <strong>DeepSeek</strong> / <strong>Mistral · Codestral</strong> / <strong>Grok</strong> / Cohere Command R+ / Perplexity Sonar / <strong>Llama 3.3</strong> (Groq schnell oder lokales Ollama) / Phi — alle mit Einzeilen-Aliasen + 100+ via LiteLLM. <strong>Dieselben Modelle in Enterprise-Clouds</strong>: <code>azure/*</code> (Azure OpenAI), <code>azure_ai/*</code> (AI Foundry), <code>bedrock/*</code> (AWS Bedrock), <code>vertex_ai/*</code> (GCP Vertex AI). Automatische Erkennung aus Umgebungsvariablen; Modellwechsel pro Aufruf.", "pt-BR":"Claude / ChatGPT / Gemini / Gemma / Qwen / <strong>DeepSeek</strong> / <strong>Mistral · Codestral</strong> / <strong>Grok</strong> / Cohere Command R+ / Perplexity Sonar / <strong>Llama 3.3</strong> (Groq rápido ou Ollama local) / Phi — todos com aliases de uma linha + 100+ via LiteLLM. <strong>Os mesmos modelos em nuvens empresariais</strong>: <code>azure/*</code> (Azure OpenAI), <code>azure_ai/*</code> (AI Foundry), <code>bedrock/*</code> (AWS Bedrock), <code>vertex_ai/*</code> (GCP Vertex AI). Auto-detecção de variáveis de ambiente; troca por chamada."},
    "feat.auth_in_oss.body":        {en:"API key + JWT + OIDC (Google/MS/Okta/GitHub/Keycloak) + 4 default roles + append-only audit log. Most competitors paywall this.", ja:"API キー + JWT + OIDC (Google/MS/Okta/GitHub/Keycloak) + 4 既定ロール + 追記専用監査ログ。多くの競合は有償化。", "zh-CN":"API 密钥 + JWT + OIDC (Google/MS/Okta/GitHub/Keycloak) + 4 默认角色 + 追加专属审计日志。多数竞品付费。", ko:"API 키 + JWT + OIDC (Google/MS/Okta/GitHub/Keycloak) + 기본 4 역할 + 추가 전용 감사 로그. 대부분 경쟁사는 유료.", es:"Clave API + JWT + OIDC (Google/MS/Okta/GitHub/Keycloak) + 4 roles por defecto + log de auditoría solo append. La mayoría de competidores cobran por esto.", fr:"Clé API + JWT + OIDC (Google/MS/Okta/GitHub/Keycloak) + 4 rôles par défaut + journal d'audit append-only. La plupart des concurrents le facturent.", de:"API-Key + JWT + OIDC (Google/MS/Okta/GitHub/Keycloak) + 4 Standard-Rollen + Append-only-Audit-Log. Die meisten Konkurrenten verlangen dafür Geld.", "pt-BR":"API key + JWT + OIDC (Google/MS/Okta/GitHub/Keycloak) + 4 papéis padrão + log de auditoria append-only. A maioria dos concorrentes cobra por isso."},
    "feat.skills_promoted.body":    {en:"Not just memory — your personal skills get tracked, scored, and promoted to the org skill catalog when they prove themselves.", ja:"メモリだけでなく — 個人スキルも追跡・スコア化・組織スキルカタログへ昇格 (実績を満たしたら)。", "zh-CN":"不只是记忆 — 个人技能被追踪、评分,达标后晋升至组织技能目录。", ko:"메모리뿐 아니라 — 개인 스킬도 추적·점수화·조직 스킬 카탈로그로 승격 (실적 충족 시).", es:"No solo memoria — tus habilidades personales se rastrean, puntúan y promueven al catálogo de la organización cuando se prueban.", fr:"Pas seulement la mémoire — vos compétences personnelles sont suivies, notées et promues au catalogue org quand elles font leurs preuves.", de:"Nicht nur Speicher — deine persönlichen Skills werden getrackt, bewertet und in den Org-Skill-Katalog befördert, wenn sie sich bewähren.", "pt-BR":"Não só memória — suas habilidades pessoais são rastreadas, pontuadas e promovidas ao catálogo da organização quando comprovadas."},
    "feat.mcp_compat.body":         {en:"Skills serialize to standard <code>SKILL.md</code>. Drop into Claude Skills, Cursor Skills, or any MCP-compatible registry without code changes.", ja:"スキルは標準 <code>SKILL.md</code> 形式でシリアライズ。Claude Skills / Cursor Skills / MCP 互換レジストリにコード変更なしで投入可能。", "zh-CN":"技能序列化为标准 <code>SKILL.md</code>。无需改代码即可投入 Claude Skills / Cursor Skills / 任何 MCP 兼容注册表。", ko:"스킬은 표준 <code>SKILL.md</code> 형식으로 직렬화. Claude Skills / Cursor Skills / MCP 호환 레지스트리에 코드 변경 없이 투입 가능.", es:"Las habilidades se serializan al formato estándar <code>SKILL.md</code>. Insértalas en Claude Skills, Cursor Skills o cualquier registro compatible con MCP sin cambios de código.", fr:"Les compétences sont sérialisées au format standard <code>SKILL.md</code>. Intégrez-les dans Claude Skills, Cursor Skills ou tout registre MCP sans modification de code.", de:"Skills werden in standardisiertes <code>SKILL.md</code> serialisiert. In Claude Skills, Cursor Skills oder jede MCP-kompatible Registry ohne Codeänderungen einsetzbar.", "pt-BR":"As habilidades são serializadas em <code>SKILL.md</code> padrão. Insira em Claude Skills, Cursor Skills ou qualquer registro compatível com MCP sem alterar código."},
    "feat.outcome_tracking.body":   {en:"<code>record_outcome()</code> attaches success/failure to episodes. The consolidator uses these signals statistically — no separate analytics pipeline needed.", ja:"<code>record_outcome()</code> で成功/失敗をエピソードに紐付け。Consolidator が統計的に活用 — 別途アナリティクス基盤不要。", "zh-CN":"<code>record_outcome()</code> 将成功/失败附加到回合。Consolidator 统计性使用 — 无需独立分析管道。", ko:"<code>record_outcome()</code> 로 성공/실패를 에피소드에 연결. Consolidator 가 통계적으로 활용 — 별도 분석 파이프라인 불필요.", es:"<code>record_outcome()</code> adjunta éxito/fracaso a los episodios. El consolidador los usa estadísticamente — sin necesidad de un pipeline analítico aparte.", fr:"<code>record_outcome()</code> attache succès/échec aux épisodes. Le consolidateur les utilise statistiquement — pas de pipeline analytique séparé.", de:"<code>record_outcome()</code> hängt Erfolg/Misserfolg an Episoden. Der Consolidator nutzt diese Signale statistisch – keine separate Analytics-Pipeline nötig.", "pt-BR":"<code>record_outcome()</code> anexa sucesso/falha aos episódios. O consolidador os usa estatisticamente — sem pipeline analítico separado."},
    "feat.apache_open.body":        {en:"Permissive license, commercial-friendly. NOTICE.md inventories every dependency's license. Open Core path for enterprise extras planned.", ja:"寛容ライセンス、商用利用可。NOTICE.md で全依存関係のライセンスを管理。エンタープライズ拡張への Open Core パス計画中。", "zh-CN":"宽松许可证,商用友好。NOTICE.md 列出每个依赖的许可证。规划企业增强的 Open Core 路径。", ko:"관대한 라이선스, 상용 친화적. NOTICE.md 가 모든 의존성 라이선스 관리. 엔터프라이즈 확장의 Open Core 경로 계획.", es:"Licencia permisiva, apta para uso comercial. NOTICE.md inventaria la licencia de cada dependencia. Ruta Open Core para extras empresariales planificada.", fr:"Licence permissive, compatible commercial. NOTICE.md inventorie la licence de chaque dépendance. Voie Open Core prévue pour extras entreprise.", de:"Permissive Lizenz, kommerzfreundlich. NOTICE.md listet die Lizenz jeder Abhängigkeit. Open-Core-Pfad für Enterprise-Extras geplant.", "pt-BR":"Licença permissiva, amigável a uso comercial. NOTICE.md inventaria a licença de cada dependência. Caminho Open Core para extras empresariais planejado."},
    "feat.acl.body":                {en:"Glob-pattern allow / deny rules per resource type (connector, memory, prompt, skill). Built for enterprise IS departments. Every decision audit-logged.", ja:"リソース種別ごと (コネクタ/メモリ/プロンプト/スキル) に Glob パターンの allow/deny ルール。情報システム部向け設計。全判定が監査ログ化。", "zh-CN":"按资源类型(连接器/记忆/提示/技能)Glob 模式 allow/deny 规则。面向 IS 部门设计。每次判定记入审计日志。", ko:"리소스 유형별 (커넥터/메모리/프롬프트/스킬) Glob 패턴 허용/거부 규칙. 정보시스템 부서 대상 설계. 모든 판단 감사 로그화.", es:"Reglas allow/deny tipo glob por tipo de recurso (conector, memoria, prompt, habilidad). Diseñado para departamentos IS empresariales. Cada decisión auditada.", fr:"Règles glob allow/deny par type de ressource (connecteur, mémoire, prompt, compétence). Conçu pour les services SI d'entreprise. Chaque décision auditée.", de:"Glob-Muster allow/deny-Regeln pro Ressourcentyp (Konnektor, Speicher, Prompt, Skill). Für Enterprise-IT-Abteilungen entwickelt. Jede Entscheidung im Audit-Log.", "pt-BR":"Regras allow/deny estilo glob por tipo de recurso (conector, memória, prompt, habilidade). Projetado para departamentos de TI corporativa. Cada decisão auditada."},
    "feat.admin_exports.body":      {en:"CSV / JSON / JSONL exports of audit log, users, usage, memory, policies — for compliance, SIEM, backups. Each export action self-audited.", ja:"監査ログ・ユーザ・利用量・メモリ・ポリシーを CSV / JSON / JSONL でエクスポート — 法令遵守・SIEM・バックアップ用。エクスポート操作自体も監査。", "zh-CN":"审计日志、用户、用量、记忆、策略以 CSV / JSON / JSONL 导出 — 合规/SIEM/备份用途。导出操作自身也审计。", ko:"감사 로그·사용자·사용량·메모리·정책을 CSV / JSON / JSONL 로 내보내기 — 규정 준수·SIEM·백업용. 내보내기 작업 자체도 감사.", es:"Exportaciones CSV / JSON / JSONL de log de auditoría, usuarios, uso, memoria, políticas — para cumplimiento, SIEM, copias. Cada exportación se autoaudita.", fr:"Exports CSV / JSON / JSONL du journal d'audit, utilisateurs, usage, mémoire, politiques — pour conformité, SIEM, sauvegardes. Chaque export est lui-même audité.", de:"CSV / JSON / JSONL-Exporte von Audit-Log, Nutzern, Nutzung, Speicher, Richtlinien — für Compliance, SIEM, Backups. Jede Exportaktion wird selbst auditiert.", "pt-BR":"Exportações CSV / JSON / JSONL de log de auditoria, usuários, uso, memória, políticas — para conformidade, SIEM, backups. Cada exportação é auto-auditada."},
    "feat.connectors.body":         {en:"Box, SharePoint, Dropbox, Google Drive, kintone, Salesforce — bidirectional Pull + Push. ACL-enforced before any external call.", ja:"Box / SharePoint / Dropbox / Google Drive / kintone / Salesforce の双方向 Pull + Push。外部呼出前に ACL チェック。", "zh-CN":"Box / SharePoint / Dropbox / Google Drive / kintone / Salesforce 双向 Pull + Push。任何外部调用前 ACL 强制。", ko:"Box / SharePoint / Dropbox / Google Drive / kintone / Salesforce 양방향 Pull + Push. 외부 호출 전 ACL 강제.", es:"Box, SharePoint, Dropbox, Google Drive, kintone, Salesforce — Pull + Push bidireccional. ACL aplicado antes de cualquier llamada externa.", fr:"Box, SharePoint, Dropbox, Google Drive, kintone, Salesforce — Pull + Push bidirectionnel. ACL appliquée avant tout appel externe.", de:"Box, SharePoint, Dropbox, Google Drive, kintone, Salesforce — bidirektionales Pull + Push. ACL-Prüfung vor jedem externen Aufruf.", "pt-BR":"Box, SharePoint, Dropbox, Google Drive, kintone, Salesforce — Pull + Push bidirecional. ACL aplicado antes de qualquer chamada externa."},
    "feat.dashboards.body":         {en:"Three headline KPIs (total runs · success rate · memory entries) plus a Top-skills bar chart for personal scope, and Active users / Org runs / Top users + Top skills for org scope. plotly with the Praxia palette — no separate analytics pipeline.", ja:"3 つの主要 KPI (総実行回数・成功率・メモリ件数) + Top スキルの横棒グラフ (個人)、アクティブユーザ・組織実行・Top ユーザ + Top スキル (組織)。plotly で Praxia パレット表示、別途分析基盤不要。", "zh-CN":"3 个主 KPI(总执行次数·成功率·记忆条目)+ Top 技能横条 (个人)、活跃用户·组织执行·Top 用户 + Top 技能 (组织)。plotly 使用 Praxia 配色,无需独立分析管道。", ko:"주요 KPI 3 개 (총 실행 수·성공률·메모리 항목) + Top 스킬 가로 막대 (개인), 활성 사용자·조직 실행·Top 사용자 + Top 스킬 (조직). plotly + Praxia 팔레트, 별도 분석 파이프라인 불필요.", es:"3 KPIs (ejecuciones totales · tasa de éxito · entradas de memoria) + barra de Top skills (personal), Usuarios activos · Ejecuciones org · Top users + Top skills (org). plotly con paleta Praxia.", fr:"3 KPI principaux (exécutions totales · taux de réussite · entrées mémoire) + barre Top compétences (personnel), Utilisateurs actifs · Exécutions org · Top users + Top skills (org). plotly avec palette Praxia.", de:"3 Top-KPIs (Gesamtläufe · Erfolgsrate · Speicher-Einträge) + Top-Skills-Balken (persönlich), aktive Nutzer · Org-Läufe · Top-Nutzer + Top-Skills (Org). plotly mit Praxia-Palette.", "pt-BR":"3 KPIs (execuções totais · taxa de sucesso · entradas de memória) + barra de Top skills (pessoal), Usuários ativos · Execuções org · Top users + Top skills (org). plotly com paleta Praxia."},
    "feat.prompts_distribution.body":{en:"Users save personal prompts. Admins promote them to org or push to specific roles / users. Three scopes with merge precedence.", ja:"ユーザは個人プロンプトを保存。管理者が組織に昇格、またはロール/ユーザ単位で配信。3 スコープのマージ優先順位付き。", "zh-CN":"用户保存个人提示。管理员晋升至组织级或按角色/用户分发。3 作用域合并优先级。", ko:"사용자는 개인 프롬프트를 저장. 관리자가 조직으로 승격 또는 역할/사용자 단위 배포. 3 스코프 병합 우선순위.", es:"Los usuarios guardan prompts personales. Los admins los promueven a organización o los envían a roles/usuarios concretos. Tres ámbitos con precedencia de fusión.", fr:"Les utilisateurs sauvegardent des prompts personnels. Les admins les promeuvent au niveau org ou les poussent vers rôles/utilisateurs spécifiques. Trois portées avec précédence de fusion.", de:"Nutzer speichern persönliche Prompts. Admins befördern sie in die Org oder verteilen sie an Rollen/Nutzer. Drei Geltungsbereiche mit Merge-Reihenfolge.", "pt-BR":"Usuários salvam prompts pessoais. Admins os promovem ao nível da organização ou os enviam a papéis/usuários específicos. Três escopos com precedência de mesclagem."},
    "feat.user_crud.body":          {en:"Create / update / delete / deactivate / rotate keys / change roles — all via CLI, UI, or SDK. All operations audited.", ja:"作成 / 更新 / 削除 / 無効化 / キーローテ / ロール変更 — CLI / UI / SDK で実行可能。全操作監査済み。", "zh-CN":"创建/更新/删除/停用/轮换密钥/角色变更 — 通过 CLI/UI/SDK。所有操作均审计。", ko:"생성 / 업데이트 / 삭제 / 비활성화 / 키 회전 / 역할 변경 — CLI / UI / SDK 로 실행. 모든 작업 감사.", es:"Crear / actualizar / eliminar / desactivar / rotar claves / cambiar roles — vía CLI, UI o SDK. Todas las operaciones auditadas.", fr:"Créer / mettre à jour / supprimer / désactiver / faire tourner les clés / changer les rôles — via CLI, UI ou SDK. Toutes les opérations auditées.", de:"Erstellen / aktualisieren / löschen / deaktivieren / Keys rotieren / Rollen ändern — via CLI, UI oder SDK. Alle Vorgänge auditiert.", "pt-BR":"Criar / atualizar / excluir / desativar / girar chaves / mudar papéis — via CLI, UI ou SDK. Todas as operações auditadas."},
    "feat.parsers.body":            {en:"Drop a file in — auto-dispatch by extension. PDF page-by-page, Word with heading detection, Excel as Markdown tables, PowerPoint with speaker notes. Custom formats register via entry points.", ja:"ファイル投入で拡張子により自動ディスパッチ。PDF 頁単位、Word は見出し検出、Excel は Markdown テーブル、PowerPoint は発表者ノート付き。独自形式は entry-point で登録。", "zh-CN":"放入文件 — 按扩展名自动分发。PDF 逐页、Word 含标题检测、Excel 转 Markdown 表、PowerPoint 含演讲者备注。自定义格式经入口点注册。", ko:"파일 투입 시 확장자별 자동 디스패치. PDF 페이지별, Word 헤딩 감지, Excel Markdown 테이블, PowerPoint 발표자 노트 포함. 사용자 정의 형식은 entry-point 로 등록.", es:"Suelta un archivo — despacho automático por extensión. PDF página a página, Word con detección de encabezados, Excel como tablas Markdown, PowerPoint con notas. Formatos personalizados se registran vía entry points.", fr:"Déposez un fichier — dispatch auto par extension. PDF page par page, Word avec détection de titres, Excel en tableaux Markdown, PowerPoint avec notes du présentateur. Formats personnalisés via entry points.", de:"Datei ablegen — automatischer Dispatch nach Erweiterung. PDF seitenweise, Word mit Heading-Erkennung, Excel als Markdown-Tabellen, PowerPoint mit Sprechernotizen. Eigene Formate via Entry Points registrierbar.", "pt-BR":"Solte um arquivo — despacho automático por extensão. PDF página a página, Word com detecção de cabeçalhos, Excel como tabelas Markdown, PowerPoint com notas do apresentador. Formatos próprios via entry points."},
    "feat.voice.body":              {en:"Speech-to-text (Whisper) and text-to-speech (OpenAI TTS / ElevenLabs / Piper). Embedded in Streamlit UI as record-and-go input and read-aloud output.", ja:"STT (Whisper) と TTS (OpenAI TTS / ElevenLabs / Piper)。Streamlit UI に録音入力と読み上げ出力として統合。", "zh-CN":"STT (Whisper) 与 TTS (OpenAI TTS / ElevenLabs / Piper)。Streamlit UI 内置录音输入和朗读输出。", ko:"STT (Whisper) 와 TTS (OpenAI TTS / ElevenLabs / Piper). Streamlit UI 에 녹음 입력과 낭독 출력으로 내장.", es:"Voz a texto (Whisper) y texto a voz (OpenAI TTS / ElevenLabs / Piper). Integrado en Streamlit UI como entrada por grabación y salida en lectura.", fr:"Voix vers texte (Whisper) et texte vers voix (OpenAI TTS / ElevenLabs / Piper). Intégré dans l'UI Streamlit en entrée enregistrée et sortie lecture.", de:"Sprache-zu-Text (Whisper) und Text-zu-Sprache (OpenAI TTS / ElevenLabs / Piper). In Streamlit-UI als Aufnahme-Eingabe und Vorlese-Ausgabe integriert.", "pt-BR":"Fala-para-texto (Whisper) e texto-para-fala (OpenAI TTS / ElevenLabs / Piper). Integrado na UI Streamlit como entrada por gravação e saída por leitura."},
    "feat.user_oauth.body":         {en:"Each Praxia user authorizes Box / Microsoft 365 / Dropbox / Drive / Salesforce / Notion / Atlassian / Slack / GitHub / HubSpot / Zendesk / Linear / kintone with their <em>own</em> credentials. The external system's native ACL is enforced per Praxia user — alice can only see what alice has access to. Self-service UI under Preferences → Service Connections.", ja:"各 Praxia ユーザが Box / Microsoft 365 / Dropbox / Drive / Salesforce / Notion / Atlassian / Slack / GitHub / HubSpot / Zendesk / Linear / kintone を自分の認証情報で認可。外部システム側 ACL がユーザ単位で適用 — alice は alice がアクセス可能な情報のみ見える。個人設定 → 外部サービス連携 からセルフサービスで接続。", "zh-CN":"每个 Praxia 用户用自己的凭据授权 Box / Microsoft 365 / Dropbox / Drive / Salesforce / Notion / Atlassian / Slack / GitHub / HubSpot / Zendesk / Linear / kintone。外部系统原生 ACL 按用户强制 — alice 只见 alice 有权访问的内容。在 偏好设置 → 外部服务集成 中自助连接。", ko:"각 Praxia 사용자가 Box / Microsoft 365 / Dropbox / Drive / Salesforce / Notion / Atlassian / Slack / GitHub / HubSpot / Zendesk / Linear / kintone 을 본인의 자격으로 인가. 외부 시스템 ACL 이 사용자별 적용 — alice 는 alice 접근 가능 정보만 표시. 환경 설정 → 외부 서비스 연동 에서 셀프서비스 연결.", es:"Cada usuario de Praxia autoriza Box / Microsoft 365 / Dropbox / Drive / Salesforce / Notion / Atlassian / Slack / GitHub / HubSpot / Zendesk / Linear / kintone con sus <em>propias</em> credenciales. La ACL nativa del sistema externo se aplica por usuario — alice solo ve lo que alice puede ver. Autoservicio en Preferencias → Conexiones de Servicio.", fr:"Chaque utilisateur Praxia autorise Box / Microsoft 365 / Dropbox / Drive / Salesforce / Notion / Atlassian / Slack / GitHub / HubSpot / Zendesk / Linear / kintone avec ses <em>propres</em> identifiants. L'ACL native du système externe s'applique par utilisateur — alice ne voit que ce qu'alice peut voir. Libre-service dans Préférences → Connexions de Service.", de:"Jeder Praxia-Nutzer autorisiert Box / Microsoft 365 / Dropbox / Drive / Salesforce / Notion / Atlassian / Slack / GitHub / HubSpot / Zendesk / Linear / kintone mit seinen <em>eigenen</em> Zugangsdaten. Die native ACL des externen Systems wird pro Nutzer durchgesetzt — alice sieht nur, was alice sehen darf. Self-Service unter Einstellungen → Dienstverbindungen.", "pt-BR":"Cada usuário Praxia autoriza Box / Microsoft 365 / Dropbox / Drive / Salesforce / Notion / Atlassian / Slack / GitHub / HubSpot / Zendesk / Linear / kintone com suas <em>próprias</em> credenciais. A ACL nativa do sistema externo é aplicada por usuário — alice só vê o que alice pode ver. Autoatendimento em Preferências → Conexões de Serviço."},
    "feat.legal_templates.body":    {en:"Terms of Service, Privacy Policy, Acceptable Use, Cookie Policy — starter templates wired into the portal sign-up. Marked clearly as templates requiring legal review before commercial use.", ja:"利用規約・プライバシーポリシー・利用規定・クッキーポリシー — ポータルサインアップに組込済のスターターテンプレ。商用利用前の法務レビュー必須を明記。", "zh-CN":"服务条款/隐私政策/可接受使用/Cookie 政策 — 入门模板已接入门户注册。明确标注商用前需法务审阅。", ko:"이용약관·개인정보보호정책·이용규정·쿠키정책 — 포털 가입에 통합된 스타터 템플릿. 상용 전 법무 검토 필수 명시.", es:"Términos de servicio, Política de privacidad, Uso aceptable, Política de cookies — plantillas iniciales conectadas al alta del portal. Marcadas como plantillas que requieren revisión legal antes de uso comercial.", fr:"Conditions d'utilisation, politique de confidentialité, usage acceptable, politique cookies — modèles de départ liés à l'inscription portail. Clairement marqués comme modèles nécessitant une revue juridique avant usage commercial.", de:"Nutzungsbedingungen, Datenschutzerklärung, Acceptable Use, Cookie-Richtlinie — Starter-Vorlagen in die Portal-Registrierung integriert. Klar als Vorlagen markiert, die vor kommerzieller Nutzung rechtlich geprüft werden müssen.", "pt-BR":"Termos de Serviço, Política de Privacidade, Uso Aceitável, Política de Cookies — modelos iniciais ligados ao cadastro do portal. Marcados claramente como modelos que requerem revisão jurídica antes de uso comercial."},
    "feat.multi_ltm.body":          {en:"Run several LTMs in parallel and fuse with Reciprocal Rank Fusion — or route per query (temporal → Zep, audit → JSON, entity → Mem0). English + Japanese keyword detection. Higher recall without picking a winner.", ja:"複数 LTM を並列実行し RRF で融合 — または質問単位ルーティング (時系列→Zep / 監査→JSON / エンティティ→Mem0)。英日キーワード検出。一つに絞らず高再現率。", "zh-CN":"多个 LTM 并行运行并以 RRF 融合 — 或按查询路由(时序→Zep / 审计→JSON / 实体→Mem0)。英日关键词检测。不必择一即可提高召回。", ko:"여러 LTM 을 병렬 실행하고 RRF 로 융합 — 또는 질의별 라우팅 (시계열 → Zep / 감사 → JSON / 엔티티 → Mem0). 영일 키워드 감지. 하나로 고르지 않아도 높은 재현율.", es:"Ejecuta varios LTM en paralelo y fusiona con RRF — o enruta por consulta (temporal → Zep, auditoría → JSON, entidad → Mem0). Detección de palabras clave inglés + japonés. Mayor recall sin elegir un único ganador.", fr:"Exécutez plusieurs LTM en parallèle et fusionnez avec RRF — ou routez par requête (temporel → Zep, audit → JSON, entité → Mem0). Détection de mots-clés EN + JA. Meilleur recall sans devoir choisir un gagnant.", de:"Mehrere LTMs parallel ausführen und mit RRF fusionieren — oder pro Anfrage routen (zeitlich → Zep, Audit → JSON, Entität → Mem0). Schlüsselworterkennung Englisch + Japanisch. Höhere Recall-Rate, ohne einen Gewinner küren zu müssen.", "pt-BR":"Execute vários LTMs em paralelo e funda com RRF — ou roteie por consulta (temporal → Zep, auditoria → JSON, entidade → Mem0). Detecção de palavras-chave EN + JA. Maior recall sem precisar eleger um único."},
    "feat.memory_mode.body":        {en:"Per-user switch: <code>accumulate</code> (default) or <code>read_only</code>. Read-only sessions silently drop writes — useful for sensitive content. Admins can lock the mode tenant-wide or by role.", ja:"ユーザ毎に <code>accumulate</code> (既定) / <code>read_only</code> 切替。read-only は書込を黙って破棄 — 機微情報利用時に有用。管理者がテナント全体やロール単位でロック可能。", "zh-CN":"每用户切换 <code>accumulate</code>(默认)/<code>read_only</code>。read-only 静默丢弃写入 — 适合敏感内容。管理员可按租户/角色锁定。", ko:"사용자별 <code>accumulate</code> (기본) / <code>read_only</code> 전환. read-only 는 쓰기 무음 폐기 — 민감 정보 처리 시 유용. 관리자가 테넌트 전체 또는 역할 단위로 잠금 가능.", es:"Conmutador por usuario: <code>accumulate</code> (por defecto) o <code>read_only</code>. Las sesiones de solo lectura descartan silenciosamente las escrituras — útil para contenido sensible. Los admins pueden bloquear el modo a nivel de tenant o por rol.", fr:"Bascule par utilisateur : <code>accumulate</code> (par défaut) ou <code>read_only</code>. Les sessions read-only abandonnent silencieusement les écritures — utile pour contenu sensible. Les admins peuvent verrouiller le mode au niveau tenant ou par rôle.", de:"Pro-Nutzer-Schalter: <code>accumulate</code> (Standard) oder <code>read_only</code>. Read-only-Sessions verwerfen Schreibzugriffe stillschweigend — nützlich für sensible Inhalte. Admins können den Modus tenantweit oder pro Rolle sperren.", "pt-BR":"Alternância por usuário: <code>accumulate</code> (padrão) ou <code>read_only</code>. Sessões read-only descartam escritas silenciosamente — útil para conteúdo sensível. Admins podem travar o modo no tenant ou por papel."},
    "feat.admin_ltm.body":          {en:"Pin which backend(s) users may pick and what the default mode is, at the tenant level. Resolution: admin enforced &gt; call-site &gt; user pref &gt; admin default.", ja:"テナント単位で利用可能バックエンドと既定モードを固定。解決順: admin 強制 &gt; 呼出側 &gt; ユーザ設定 &gt; admin 既定。", "zh-CN":"按租户固定可选后端与默认模式。解析顺序:admin 强制 &gt; 调用处 &gt; 用户偏好 &gt; admin 默认。", ko:"테넌트 단위로 선택 가능 백엔드와 기본 모드 고정. 해결 순서: admin 강제 &gt; 호출측 &gt; 사용자 설정 &gt; admin 기본.", es:"Fija qué backends pueden elegir los usuarios y cuál es el modo por defecto a nivel de tenant. Resolución: admin forzado &gt; sitio de llamada &gt; pref usuario &gt; admin por defecto.", fr:"Verrouillez les backends choisissables par les utilisateurs et le mode par défaut au niveau tenant. Résolution : admin forcé &gt; appelant &gt; préf utilisateur &gt; admin par défaut.", de:"Auf Tenant-Ebene festlegen, welche Backends Nutzer wählen dürfen und was der Standardmodus ist. Auflösung: admin erzwungen &gt; Aufrufstelle &gt; Nutzerpräferenz &gt; admin-Standard.", "pt-BR":"Fixe quais backends os usuários podem escolher e qual o modo padrão no nível do tenant. Resolução: admin forçado &gt; chamada &gt; pref do usuário &gt; admin padrão."},
    "feat.exporters.body":          {en:"Skills produce Markdown by default. <code>OutputFormatSkill</code> infers requested format from natural-language hints (\"パワポで\" → PPTX, \"as a Word doc\" → DOCX). Custom formats register via entry-point.", ja:"スキルは既定で Markdown 出力。<code>OutputFormatSkill</code> が自然言語ヒント (「パワポで」→ PPTX、\"as a Word doc\" → DOCX) から要求形式を推定。独自形式は entry-point で登録。", "zh-CN":"技能默认输出 Markdown。<code>OutputFormatSkill</code> 从自然语言提示推断格式(「パワポで」→ PPTX、\"as a Word doc\" → DOCX)。自定义格式经入口点注册。", ko:"스킬은 기본 Markdown 출력. <code>OutputFormatSkill</code> 가 자연어 힌트로 형식 추정 (「パワポで」 → PPTX, \"as a Word doc\" → DOCX). 사용자 정의 형식은 entry-point 등록.", es:"Las habilidades generan Markdown por defecto. <code>OutputFormatSkill</code> infiere el formato solicitado a partir de pistas en lenguaje natural (\"パワポで\" → PPTX, \"as a Word doc\" → DOCX). Formatos personalizados se registran vía entry-point.", fr:"Les compétences produisent du Markdown par défaut. <code>OutputFormatSkill</code> infère le format demandé d'après des indices en langage naturel (\"パワポで\" → PPTX, \"as a Word doc\" → DOCX). Formats personnalisés via entry-point.", de:"Skills erzeugen standardmäßig Markdown. <code>OutputFormatSkill</code> leitet das gewünschte Format aus natürlichsprachlichen Hinweisen ab (\"パワポで\" → PPTX, \"as a Word doc\" → DOCX). Eigene Formate via Entry-Point.", "pt-BR":"Habilidades produzem Markdown por padrão. <code>OutputFormatSkill</code> infere o formato a partir de pistas em linguagem natural (\"パワポで\" → PPTX, \"as a Word doc\" → DOCX). Formatos próprios via entry-point."},
    "feat.gemma.body":              {en:"Google's open-weight family added. <code>gemma</code> / <code>gemma-2b</code> / <code>gemma-9b</code> / <code>gemma-27b</code> via local Ollama; <code>gemma-cloud</code> via Google Vertex AI.", ja:"Google のオープンウェイト系を追加。<code>gemma</code> / <code>gemma-2b/9b/27b</code> はローカル Ollama、<code>gemma-cloud</code> は Google Vertex AI。", "zh-CN":"加入 Google 开放权重家族。<code>gemma</code> / <code>gemma-2b/9b/27b</code> 通过本地 Ollama,<code>gemma-cloud</code> 通过 Google Vertex AI。", ko:"Google 의 오픈 가중치 패밀리 추가. <code>gemma</code> / <code>gemma-2b/9b/27b</code> 는 로컬 Ollama, <code>gemma-cloud</code> 는 Google Vertex AI.", es:"Familia de pesos abiertos de Google añadida. <code>gemma</code> / <code>gemma-2b</code> / <code>gemma-9b</code> / <code>gemma-27b</code> vía Ollama local; <code>gemma-cloud</code> vía Google Vertex AI.", fr:"Famille de poids ouverts de Google ajoutée. <code>gemma</code> / <code>gemma-2b/9b/27b</code> via Ollama local ; <code>gemma-cloud</code> via Google Vertex AI.", de:"Googles Open-Weight-Familie hinzugefügt. <code>gemma</code> / <code>gemma-2b/9b/27b</code> via lokalem Ollama; <code>gemma-cloud</code> via Google Vertex AI.", "pt-BR":"Família de pesos abertos do Google adicionada. <code>gemma</code> / <code>gemma-2b/9b/27b</code> via Ollama local; <code>gemma-cloud</code> via Google Vertex AI."},
    "feat.deploy_modes.body":       {en:"Use Praxia as a brain behind your own frontend (SDK embed or <code>praxia serve</code> FastAPI HTTP API), or run the bundled Streamlit UI — sticky top-bar nav, sidebar Context picker, Run = Agent chat + Skill form, Knowledge/Data/Prompts/Stats/Preferences/Admin. Same auth, memory, skills underneath.", ja:"独自フロントエンドの裏側として利用 (SDK 埋込 or <code>praxia serve</code> の FastAPI HTTP API) するか、同梱 Streamlit UI を起動 — 固定トップバー、サイドバー Context picker、Run = Agent chat + Skill フォーム、Knowledge/Data/Prompts/Stats/Preferences/Admin。認証/メモリ/スキルは共通。", "zh-CN":"作为自有前端背后的大脑使用 (SDK 嵌入或 <code>praxia serve</code> FastAPI HTTP API),或运行内置 Streamlit UI — 固定顶栏、侧边 Context 选择器、Run = Agent 对话 + Skill 表单、Knowledge/Data/Prompts/Stats/Preferences/Admin。认证/记忆/技能共通。", ko:"자체 프런트엔드 뒤편의 두뇌로 사용 (SDK 임베드 또는 <code>praxia serve</code> FastAPI HTTP API) 하거나, 동봉 Streamlit UI 실행 — 고정 상단 nav, 사이드바 Context picker, Run = Agent chat + Skill 폼, Knowledge/Data/Prompts/Stats/Preferences/Admin. 인증/메모리/스킬 공통.", es:"Usa Praxia como cerebro detrás de tu propio frontend (SDK embebido o <code>praxia serve</code> FastAPI HTTP API), o lanza la UI Streamlit — top-bar fijo, Context picker en sidebar, Run = chat Agent + form Skill, Knowledge/Data/Prompts/Stats/Preferences/Admin. Mismos auth, memoria, habilidades.", fr:"Utilisez Praxia comme cerveau derrière votre propre frontend (SDK intégré ou <code>praxia serve</code> FastAPI HTTP API), ou lancez l'UI Streamlit — top-bar fixe, sidebar Context picker, Run = chat Agent + form Skill, Knowledge/Data/Prompts/Stats/Preferences/Admin. Même auth, mémoire, compétences.", de:"Praxia als Gehirn hinter eigener Frontend (SDK eingebettet oder <code>praxia serve</code> FastAPI HTTP-API) oder die Streamlit-UI starten — Sticky-Top-Bar, Sidebar Context-Picker, Run = Agent-Chat + Skill-Form, Knowledge/Data/Prompts/Stats/Preferences/Admin. Gleiche Auth, Speicher, Skills.", "pt-BR":"Use Praxia como cérebro por trás do seu próprio frontend (SDK embutido ou <code>praxia serve</code> FastAPI HTTP API), ou rode a UI Streamlit — top-bar fixo, sidebar Context picker, Run = chat Agent + form Skill, Knowledge/Data/Prompts/Stats/Preferences/Admin. Mesma auth, memória, habilidades."},
    "feat.kms.body":                {en:"OAuth tokens use envelope encryption — fresh DEK per write, AES-GCM payload, DEK wrapped by your KMS. 5 adapters: <code>local</code> / <code>aws</code> / <code>azure</code> / <code>gcp</code> / <code>vault</code>. Master key never lives on the application host.", ja:"OAuth トークンはエンベロープ暗号化 — 書込毎に新規 DEK、AES-GCM ペイロード、DEK は KMS で wrap。アダプタ 5 種 (<code>local</code> / <code>aws</code> / <code>azure</code> / <code>gcp</code> / <code>vault</code>)。マスターキーはアプリホストに置かない。", "zh-CN":"OAuth 令牌使用信封加密 — 每次写入新 DEK、AES-GCM 载荷、DEK 由 KMS 包装。5 适配器(<code>local</code> / <code>aws</code> / <code>azure</code> / <code>gcp</code> / <code>vault</code>)。主密钥从不驻留应用主机。", ko:"OAuth 토큰은 엔벨로프 암호화 — 쓰기마다 새 DEK, AES-GCM 페이로드, DEK 는 KMS 가 래핑. 5 어댑터 (<code>local</code> / <code>aws</code> / <code>azure</code> / <code>gcp</code> / <code>vault</code>). 마스터 키는 앱 호스트에 두지 않음.", es:"Los tokens OAuth usan cifrado envelope — DEK fresco por escritura, payload AES-GCM, DEK envuelto por tu KMS. 5 adaptadores: <code>local</code> / <code>aws</code> / <code>azure</code> / <code>gcp</code> / <code>vault</code>. La clave maestra nunca vive en el host de la app.", fr:"Les tokens OAuth utilisent un chiffrement envelope — DEK frais par écriture, payload AES-GCM, DEK enveloppé par votre KMS. 5 adaptateurs : <code>local</code> / <code>aws</code> / <code>azure</code> / <code>gcp</code> / <code>vault</code>. La clé maîtresse ne réside jamais sur l'hôte applicatif.", de:"OAuth-Tokens nutzen Envelope-Verschlüsselung — frischer DEK pro Schreibvorgang, AES-GCM-Payload, DEK von deinem KMS gewrappt. 5 Adapter: <code>local</code> / <code>aws</code> / <code>azure</code> / <code>gcp</code> / <code>vault</code>. Der Masterschlüssel liegt nie auf dem Anwendungs-Host.", "pt-BR":"Tokens OAuth usam criptografia envelope — DEK novo a cada escrita, payload AES-GCM, DEK encapsulado pelo seu KMS. 5 adaptadores: <code>local</code> / <code>aws</code> / <code>azure</code> / <code>gcp</code> / <code>vault</code>. A chave mestra nunca reside no host da aplicação."},
    "feat.oauth_web.body":          {en:"<code>praxia serve</code> exposes <code>/api/v1/oauth/{provider}/{start,callback,status}</code>. Multi-worker safe state cache (TTL-pruned JSON), pinned redirect URI via <code>PRAXIA_PUBLIC_URL</code>, optional success-redirect to your frontend.", ja:"<code>praxia serve</code> が <code>/api/v1/oauth/{provider}/{start,callback,status}</code> を公開。multi-worker 安全な state cache (TTL pruning の JSON)、<code>PRAXIA_PUBLIC_URL</code> で固定 redirect URI、成功時の任意フロント転送。", "zh-CN":"<code>praxia serve</code> 暴露 <code>/api/v1/oauth/{provider}/{start,callback,status}</code>。多 worker 安全的 state cache(TTL 修剪 JSON),<code>PRAXIA_PUBLIC_URL</code> 固定 redirect URI,可选成功重定向至前端。", ko:"<code>praxia serve</code> 가 <code>/api/v1/oauth/{provider}/{start,callback,status}</code> 공개. 멀티 워커 안전 state cache (TTL pruned JSON), <code>PRAXIA_PUBLIC_URL</code> 로 고정 redirect URI, 성공 시 프런트 리다이렉트 옵션.", es:"<code>praxia serve</code> expone <code>/api/v1/oauth/{provider}/{start,callback,status}</code>. State cache seguro multi-worker (JSON con TTL), redirect URI fijada vía <code>PRAXIA_PUBLIC_URL</code>, redirección de éxito opcional a tu frontend.", fr:"<code>praxia serve</code> expose <code>/api/v1/oauth/{provider}/{start,callback,status}</code>. State cache sûr en multi-worker (JSON TTL-pruné), URI de redirection fixée via <code>PRAXIA_PUBLIC_URL</code>, redirection succès optionnelle vers votre frontend.", de:"<code>praxia serve</code> stellt <code>/api/v1/oauth/{provider}/{start,callback,status}</code> bereit. Multi-Worker-sicherer State-Cache (TTL-bereinigtes JSON), feste Redirect-URI über <code>PRAXIA_PUBLIC_URL</code>, optionaler Erfolgs-Redirect zu Ihrem Frontend.", "pt-BR":"<code>praxia serve</code> expõe <code>/api/v1/oauth/{provider}/{start,callback,status}</code>. Cache de state seguro multi-worker (JSON com poda TTL), URI de redirect fixa via <code>PRAXIA_PUBLIC_URL</code>, redirect de sucesso opcional para seu frontend."},
    "feat.ab.body":                 {en:"Test prompt variants on real users with deterministic per-user assignment (SHA-256 bucket). Audience filter (roles / users / window). Outcome rollup + tentative winner detection. CLI + SDK.", ja:"プロンプト変種を決定論的にユーザ単位 (SHA-256 bucket) で実ユーザに割当。オーディエンスフィルタ (ロール/ユーザ/期間)、アウトカム集計 + 暫定 winner 検出、CLI + SDK 対応。", "zh-CN":"按用户确定性分配(SHA-256 bucket)在真实用户上测试提示变体。受众过滤(角色/用户/时段)、结果汇总 + 暂定 winner 检测、CLI + SDK 支持。", ko:"프롬프트 변형을 결정론적 사용자 단위 (SHA-256 bucket) 로 실사용자 배정. 오디언스 필터 (역할/사용자/기간), 결과 집계 + 잠정 winner 감지, CLI + SDK 지원.", es:"Prueba variantes de prompt en usuarios reales con asignación determinista por usuario (bucket SHA-256). Filtro de audiencia (roles / usuarios / ventana). Agregación de resultados + detección tentativa de ganador. CLI + SDK.", fr:"Testez des variantes de prompt sur de vrais utilisateurs avec attribution déterministe par utilisateur (bucket SHA-256). Filtre d'audience (rôles / utilisateurs / fenêtre). Agrégation des résultats + détection provisoire de gagnant. CLI + SDK.", de:"Prompt-Varianten an echten Nutzern testen mit deterministischer Zuordnung pro Nutzer (SHA-256-Bucket). Audience-Filter (Rollen / Nutzer / Zeitraum). Ergebnis-Aggregation + vorläufige Gewinnererkennung. CLI + SDK.", "pt-BR":"Teste variantes de prompt em usuários reais com atribuição determinística por usuário (bucket SHA-256). Filtro de audiência (papéis / usuários / janela). Agregação de resultados + detecção de vencedor provisório. CLI + SDK."},
    "feat.llm_eval.body":           {en:"Catch quality regressions before merge. <code>tests/llm_eval/</code> grades real LLM output against rubrics + a committed baseline. Score drop &gt; 5pt fails the build. Per-skill cases ship for all 6 skills.", ja:"品質デグレを merge 前に検知。<code>tests/llm_eval/</code> が実 LLM 出力をルーブリック + コミット済みベースラインで採点。5pt 超ドロップで build 失敗。6 スキル全件にケース同梱。", "zh-CN":"在合并前捕获质量回退。<code>tests/llm_eval/</code> 对真实 LLM 输出按评分卡 + 已提交基线打分。下降超过 5 分则构建失败。6 项技能均附用例。", ko:"머지 전 품질 회귀 감지. <code>tests/llm_eval/</code> 가 실 LLM 출력을 루브릭 + 커밋된 베이스라인 기준 채점. 5pt 초과 하락 시 빌드 실패. 6 스킬 전체 케이스 동봉.", es:"Detecta regresiones de calidad antes del merge. <code>tests/llm_eval/</code> califica salida LLM real contra rúbricas + un baseline comprometido. Caída &gt; 5pt rompe el build. Casos por habilidad para las 6 habilidades.", fr:"Détectez les régressions de qualité avant le merge. <code>tests/llm_eval/</code> note les sorties LLM réelles par rapport à des rubriques + une baseline committée. Une baisse &gt; 5pt fait échouer le build. Cas par compétence pour les 6 compétences.", de:"Qualitätsregressionen vor dem Merge erkennen. <code>tests/llm_eval/</code> bewertet echte LLM-Ausgaben gegen Rubriken + eine committete Baseline. Ein Abfall &gt; 5pt lässt den Build scheitern. Fälle pro Skill für alle 6 Skills.", "pt-BR":"Detecte regressões de qualidade antes do merge. <code>tests/llm_eval/</code> avalia saída LLM real contra rubricas + uma baseline commitada. Queda &gt; 5pt faz o build falhar. Casos por habilidade para as 6 habilidades."},
    "feat.tests.body":              {en:"Every public surface (auth / memory / fusion / exporters / OAuth / parsers / CLI / extensions / experiments / connectors / agent) ships with backend stubs, fixture factories, and protocol-conforming drivers — so contributors can write hermetic tests without standing up real services. CI runs them on every PR.", ja:"全公開面 (認証 / メモリ / 融合 / エクスポータ / OAuth / パーサ / CLI / 拡張 / 実験 / コネクタ / エージェント) にバックエンド・スタブ、フィクスチャ・ファクトリ、プロトコル準拠ドライバを同梱。実サービスを立てずに密閉テストを書ける状態。PR 毎に CI 実行。", "zh-CN":"每个公共面(认证/记忆/融合/导出器/OAuth/解析器/CLI/扩展/实验/连接器/代理)都附带后端桩、夹具工厂和协议对齐的驱动 — 贡献者无需启动真实服务即可写密闭测试。每 PR 运行 CI。", ko:"모든 공개 표면 (인증 / 메모리 / 융합 / 익스포터 / OAuth / 파서 / CLI / 확장 / 실험 / 커넥터 / 에이전트) 에 백엔드 스텁, 픽스처 팩토리, 프로토콜 준수 드라이버 동봉 — 실제 서비스 없이도 봉인된 테스트 작성 가능. PR 마다 CI 실행.", es:"Cada superficie pública (auth / memoria / fusión / exportadores / OAuth / parsers / CLI / extensiones / experimentos / conectores / agente) viene con stubs de backend, factorías de fixtures y drivers conformes al protocolo — los contribuidores pueden escribir tests herméticos sin levantar servicios reales. CI en cada PR.", fr:"Chaque surface publique (auth / mémoire / fusion / exportateurs / OAuth / parsers / CLI / extensions / expériences / connecteurs / agent) est livrée avec stubs de backend, factories de fixtures et drivers conformes au protocole — les contributeurs peuvent écrire des tests hermétiques sans démarrer de services réels. CI sur chaque PR.", de:"Jede öffentliche Oberfläche (Auth / Speicher / Fusion / Exporter / OAuth / Parser / CLI / Erweiterungen / Experimente / Konnektoren / Agent) bringt Backend-Stubs, Fixture-Factories und protokollkonforme Driver mit — Beitragende schreiben hermetische Tests ohne reale Services hochzufahren. CI bei jedem PR.", "pt-BR":"Cada superfície pública (auth / memória / fusão / exportadores / OAuth / parsers / CLI / extensões / experimentos / conectores / agente) vem com stubs de backend, fábricas de fixtures e drivers conformes ao protocolo — contribuidores podem escrever testes herméticos sem subir serviços reais. CI a cada PR."},
    "feat.connectors.body":         {en:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce + Notion / Confluence / Jira / Slack / Teams / GitHub / HubSpot / Zendesk / Linear / S3 / Azure Blob / GCS / WebDAV / Email. Per-user OAuth means alice only sees what alice can in each system.", ja:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce + Notion / Confluence / Jira / Slack / Teams / GitHub / HubSpot / Zendesk / Linear / S3 / Azure Blob / GCS / WebDAV / Email。ユーザ毎 OAuth で alice は各システムで alice 権限分のみ可視。", "zh-CN":"Box / SharePoint / Dropbox / Drive / kintone / Salesforce + Notion / Confluence / Jira / Slack / Teams / GitHub / HubSpot / Zendesk / Linear / S3 / Azure Blob / GCS / WebDAV / Email。用户级 OAuth 意味着 alice 在各系统仅见 alice 可访问的内容。", ko:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce + Notion / Confluence / Jira / Slack / Teams / GitHub / HubSpot / Zendesk / Linear / S3 / Azure Blob / GCS / WebDAV / Email. 사용자별 OAuth 로 alice 는 각 시스템에서 alice 권한 내 정보만 표시.", es:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce + Notion / Confluence / Jira / Slack / Teams / GitHub / HubSpot / Zendesk / Linear / S3 / Azure Blob / GCS / WebDAV / Email. OAuth por usuario significa que alice solo ve lo que alice puede ver en cada sistema.", fr:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce + Notion / Confluence / Jira / Slack / Teams / GitHub / HubSpot / Zendesk / Linear / S3 / Azure Blob / GCS / WebDAV / Email. OAuth par utilisateur : alice ne voit dans chaque système que ce qu'alice peut voir.", de:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce + Notion / Confluence / Jira / Slack / Teams / GitHub / HubSpot / Zendesk / Linear / S3 / Azure Blob / GCS / WebDAV / Email. OAuth pro Nutzer heißt: alice sieht in jedem System nur, was alice sehen darf.", "pt-BR":"Box / SharePoint / Dropbox / Drive / kintone / Salesforce + Notion / Confluence / Jira / Slack / Teams / GitHub / HubSpot / Zendesk / Linear / S3 / Azure Blob / GCS / WebDAV / Email. OAuth por usuário significa que alice só vê em cada sistema o que alice pode ver."},
    "feat.mcp_server.body":         {en:"Use Praxia from Claude Desktop / Cursor / Continue.dev. Local: <code>praxia mcp serve</code>. Remote (multi-host): <code>praxia serve</code> exposes <code>/api/v1/mcp</code> with auth + audit log. Every skill + flow becomes an MCP tool automatically.", ja:"Claude Desktop / Cursor / Continue.dev から Praxia を利用。ローカル: <code>praxia mcp serve</code>。リモート (multi-host): <code>praxia serve</code> が <code>/api/v1/mcp</code> を認証 + 監査ログ付きで公開。全スキル + フローが自動で MCP ツール化。", "zh-CN":"从 Claude Desktop / Cursor / Continue.dev 使用 Praxia。本地:<code>praxia mcp serve</code>。远程(多主机):<code>praxia serve</code> 暴露 <code>/api/v1/mcp</code>(含认证 + 审计日志)。每项技能 + 流程自动成为 MCP 工具。", ko:"Claude Desktop / Cursor / Continue.dev 에서 Praxia 사용. 로컬: <code>praxia mcp serve</code>. 원격 (멀티 호스트): <code>praxia serve</code> 가 인증 + 감사 로그 포함으로 <code>/api/v1/mcp</code> 공개. 모든 스킬 + 플로가 자동으로 MCP 도구화.", es:"Usa Praxia desde Claude Desktop / Cursor / Continue.dev. Local: <code>praxia mcp serve</code>. Remoto (multi-host): <code>praxia serve</code> expone <code>/api/v1/mcp</code> con auth + log de auditoría. Cada habilidad + flujo se convierte en herramienta MCP automáticamente.", fr:"Utilisez Praxia depuis Claude Desktop / Cursor / Continue.dev. Local : <code>praxia mcp serve</code>. Distant (multi-host) : <code>praxia serve</code> expose <code>/api/v1/mcp</code> avec auth + journal d'audit. Chaque compétence + flux devient outil MCP automatiquement.", de:"Praxia von Claude Desktop / Cursor / Continue.dev nutzen. Lokal: <code>praxia mcp serve</code>. Remote (Multi-Host): <code>praxia serve</code> stellt <code>/api/v1/mcp</code> mit Auth + Audit-Log bereit. Jeder Skill + Flow wird automatisch zum MCP-Tool.", "pt-BR":"Use o Praxia a partir de Claude Desktop / Cursor / Continue.dev. Local: <code>praxia mcp serve</code>. Remoto (multi-host): <code>praxia serve</code> expõe <code>/api/v1/mcp</code> com auth + log de auditoria. Cada habilidade + fluxo se torna ferramenta MCP automaticamente."},
    "feat.responsive.body":         {en:"Landing has chip-style nav on phones, scrollable tabs, ≥44px touch targets, prefers-reduced-motion respected. Streamlit UI ships with light + dark themes (auto / explicit per user, persisted) and 8 UI languages auto-detected from the browser.", ja:"ランディングはモバイル時 chip 型ナビ、スクロール可能タブ、≥44px タッチターゲット、prefers-reduced-motion 準拠。Streamlit UI はライト/ダーク両テーマ (auto / 個別、ユーザ毎に永続) + ブラウザ自動検出の 8 言語対応。", "zh-CN":"落地页移动端为 chip 式导航、可滚动 Tabs、≥44px 触摸目标、遵循 prefers-reduced-motion。Streamlit UI 内置 浅色/深色 主题(auto/按用户固定,持久化)+ 浏览器自动检测的 8 种 UI 语言。", ko:"랜딩은 모바일에서 chip 형 내비, 스크롤 가능 탭, ≥44px 터치 타깃, prefers-reduced-motion 준수. Streamlit UI 는 라이트/다크 테마 (auto / 사용자 별, 영속) + 브라우저 자동 감지 8 개 UI 언어 제공.", es:"La landing tiene nav tipo chip en móviles, pestañas desplazables, objetivos táctiles ≥44px, respeta prefers-reduced-motion. La UI Streamlit incluye temas claro + oscuro (auto / explícito por usuario, persistente) y 8 idiomas auto-detectados del navegador.", fr:"La landing utilise une nav en chip sur mobile, onglets défilables, cibles tactiles ≥44px, respecte prefers-reduced-motion. L'UI Streamlit fournit thèmes clair + sombre (auto / explicite par utilisateur, persistant) et 8 langues auto-détectées depuis le navigateur.", de:"Landing hat auf Smartphones Chip-Navigation, scrollbare Tabs, ≥44px Touch-Ziele, respektiert prefers-reduced-motion. Streamlit-UI liefert Hell- + Dunkel-Themen (auto / pro Nutzer, persistent) und 8 UI-Sprachen, automatisch aus dem Browser erkannt.", "pt-BR":"A landing tem nav estilo chip no mobile, abas roláveis, alvos de toque ≥44px, respeita prefers-reduced-motion. A UI Streamlit traz temas claro + escuro (auto / explícito por usuário, persistente) e 8 idiomas auto-detectados do navegador."},

    // ===== Architecture / Flows / Skills sections =====================
    "arch.kicker": {en:"Architecture", ja:"アーキテクチャ", "zh-CN":"架构", ko:"아키텍처", es:"Arquitectura", fr:"Architecture", de:"Architektur", "pt-BR":"Arquitetura"},
    "arch.h2":     {en:"Six layers that turn one expert's drawer into everyone's playbook.", ja:"一人の引き出しを全員のプレイブックに変える 6 層構造。", "zh-CN":"将一人的抽屉转化为众人手册的 6 层结构。", ko:"한 사람의 서랍을 모두의 플레이북으로 바꾸는 6 층 구조.", es:"Seis capas que convierten el cajón de un experto en el manual de todos.", fr:"Six couches qui transforment le tiroir d'un expert en manuel de tous.", de:"Sechs Schichten, die die Schublade eines Experten zum Playbook für alle machen.", "pt-BR":"Seis camadas que transformam a gaveta de um especialista no manual de todos."},
    "arch.top":    {en:"UI · CLI · SDK", ja:"UI · CLI · SDK", "zh-CN":"UI · CLI · SDK", ko:"UI · CLI · SDK", es:"UI · CLI · SDK", fr:"UI · CLI · SDK", de:"UI · CLI · SDK", "pt-BR":"UI · CLI · SDK"},
    "arch.orch":   {en:"Orchestrator · Flows · Skills", ja:"オーケストレータ · フロー · スキル", "zh-CN":"编排器 · 流程 · 技能", ko:"오케스트레이터 · 플로 · 스킬", es:"Orquestador · Flujos · Habilidades", fr:"Orchestrateur · Flux · Compétences", de:"Orchestrator · Flows · Skills", "pt-BR":"Orquestrador · Fluxos · Habilidades"},
    "arch.l1":     {en:"Layer 1 — Personal Memory (auto-extracted)", ja:"Layer 1 — 個人メモリ (自動抽出)", "zh-CN":"Layer 1 — 个人记忆(自动抽取)", ko:"Layer 1 — 개인 메모리 (자동 추출)", es:"Capa 1 — Memoria Personal (auto-extraída)", fr:"Couche 1 — Mémoire Personnelle (auto-extraite)", de:"Schicht 1 — Persönlicher Speicher (auto-extrahiert)", "pt-BR":"Camada 1 — Memória Pessoal (auto-extraída)"},
    "arch.l2":     {en:"Layer 2 — Sleep-time Consolidation · 3 promotion paths", ja:"Layer 2 — Sleep-time Consolidation · 3 経路昇格", "zh-CN":"Layer 2 — Sleep-time 整合 · 3 路晋升", ko:"Layer 2 — Sleep-time 통합 · 3 경로 승격", es:"Capa 2 — Consolidación Sleep-time · 3 vías de promoción", fr:"Couche 2 — Consolidation Sleep-time · 3 voies de promotion", de:"Schicht 2 — Sleep-time-Konsolidierung · 3 Beförderungspfade", "pt-BR":"Camada 2 — Consolidação Sleep-time · 3 caminhos de promoção"},
    "arch.l3":     {en:"Layer 3 — Shared Memory Blocks (living)", ja:"Layer 3 — 共有メモリブロック (living)", "zh-CN":"Layer 3 — 共享记忆块(实时)", ko:"Layer 3 — 공유 메모리 블록 (실시간)", es:"Capa 3 — Bloques de Memoria Compartida (vivos)", fr:"Couche 3 — Blocs de Mémoire Partagée (vivants)", de:"Schicht 3 — Geteilte Speicherblöcke (lebendig)", "pt-BR":"Camada 3 — Blocos de Memória Compartilhada (vivos)"},
    "arch.l4":     {en:"Layer 4 — Markdown + git frozen layer (stable)", ja:"Layer 4 — Markdown + git 凍結層 (安定)", "zh-CN":"Layer 4 — Markdown + git 冻结层(稳定)", ko:"Layer 4 — Markdown + git 동결 레이어 (안정)", es:"Capa 4 — Capa congelada Markdown + git (estable)", fr:"Couche 4 — Couche figée Markdown + git (stable)", de:"Schicht 4 — Markdown + git eingefrorene Schicht (stabil)", "pt-BR":"Camada 4 — Camada congelada Markdown + git (estável)"},
    "arch.l5":     {en:"Layer 5 — Graph layer (optional)", ja:"Layer 5 — Graph 層 (任意)", "zh-CN":"Layer 5 — Graph 层(可选)", ko:"Layer 5 — Graph 레이어 (선택)", es:"Capa 5 — Capa Graph (opcional)", fr:"Couche 5 — Couche Graph (optionnelle)", de:"Schicht 5 — Graph-Schicht (optional)", "pt-BR":"Camada 5 — Camada Graph (opcional)"},
    "arch.l6":     {en:"Layer 6 — Skills Registry (promotion-aware)", ja:"Layer 6 — スキルレジストリ (昇格対応)", "zh-CN":"Layer 6 — 技能注册表(支持晋升)", ko:"Layer 6 — 스킬 레지스트리 (승격 지원)", es:"Capa 6 — Registro de Habilidades (con promoción)", fr:"Couche 6 — Registre des Compétences (sensible à la promotion)", de:"Schicht 6 — Skills-Registry (beförderungsbewusst)", "pt-BR":"Camada 6 — Registro de Habilidades (com promoção)"},
    "arch.auth":   {en:"Auth · RBAC · Audit · SSO (OIDC / SAML)", ja:"認証 · RBAC · 監査 · SSO (OIDC / SAML)", "zh-CN":"认证 · RBAC · 审计 · SSO (OIDC / SAML)", ko:"인증 · RBAC · 감사 · SSO (OIDC / SAML)", es:"Auth · RBAC · Auditoría · SSO (OIDC / SAML)", fr:"Auth · RBAC · Audit · SSO (OIDC / SAML)", de:"Auth · RBAC · Audit · SSO (OIDC / SAML)", "pt-BR":"Auth · RBAC · Auditoria · SSO (OIDC / SAML)"},

    "flows.kicker":      {en:"Three workflow flows", ja:"3 つの業務フロー", "zh-CN":"3 个工作流", ko:"3 개 업무 플로", es:"3 flujos de trabajo", fr:"3 flux métier", de:"Drei Workflow-Flows", "pt-BR":"3 fluxos de trabalho"},
    "flows.h2":          {en:"Run a multi-agent pipeline in 30 seconds.", ja:"30 秒でマルチエージェントパイプラインを実行。", "zh-CN":"30 秒内运行多代理流水线。", ko:"30 초만에 멀티 에이전트 파이프라인 실행.", es:"Ejecuta un pipeline multi-agente en 30 segundos.", fr:"Exécutez un pipeline multi-agents en 30 secondes.", de:"Multi-Agent-Pipeline in 30 Sekunden ausführen.", "pt-BR":"Execute um pipeline multi-agente em 30 segundos."},
    "flows.sales.title": {en:"Sales Agent Flow", ja:"営業エージェントフロー", "zh-CN":"销售代理流程", ko:"영업 에이전트 플로", es:"Flujo Sales Agent", fr:"Flux Sales Agent", de:"Sales-Agent-Flow", "pt-BR":"Fluxo Sales Agent"},
    "flows.sales.body":  {en:"Customer IR + past minutes + RAG → hypotheses → FAQ → proposal outline.", ja:"顧客 IR + 過去議事録 + RAG → 仮説 → FAQ → 提案アウトライン。", "zh-CN":"客户 IR + 过往会议纪要 + RAG → 假设 → FAQ → 提案大纲。", ko:"고객 IR + 과거 의사록 + RAG → 가설 → FAQ → 제안 개요.", es:"IR del cliente + actas + RAG → hipótesis → FAQ → esquema de propuesta.", fr:"IR client + comptes-rendus + RAG → hypothèses → FAQ → plan de proposition.", de:"Kunden-IR + frühere Protokolle + RAG → Hypothesen → FAQ → Vorschlagsentwurf.", "pt-BR":"IR do cliente + atas + RAG → hipóteses → FAQ → esboço da proposta."},
    "flows.logic.title": {en:"Logic Checker Flow", ja:"論理チェッカーフロー", "zh-CN":"逻辑检查流程", ko:"로직 체커 플로", es:"Flujo Logic Checker", fr:"Flux Logic Checker", de:"Logic-Checker-Flow", "pt-BR":"Fluxo Logic Checker"},
    "flows.logic.body":  {en:"Three agents (structure / contradiction / reader) review long docs.", ja:"3 エージェント (構造 / 矛盾 / 読者) で長文を整合性レビュー。", "zh-CN":"3 个代理(结构/矛盾/读者)审阅长文档。", ko:"3 에이전트 (구조 / 모순 / 독자) 가 장문 문서 검토.", es:"Tres agentes (estructura / contradicción / lector) revisan docs largos.", fr:"Trois agents (structure / contradiction / lecteur) revoient les docs longs.", de:"Drei Agenten (Struktur / Widerspruch / Leser) prüfen lange Dokumente.", "pt-BR":"Três agentes (estrutura / contradição / leitor) revisam documentos longos."},
    "flows.rag.title":   {en:"RAG Optimization Flow", ja:"RAG 最適化フロー", "zh-CN":"RAG 优化流程", ko:"RAG 최적화 플로", es:"Flujo RAG Optimization", fr:"Flux RAG Optimization", de:"RAG-Optimierungs-Flow", "pt-BR":"Fluxo RAG Optimization"},
    "flows.rag.body":    {en:"Self-correcting RAG: query expansion → eval → hallucination check loop.", ja:"自己修復型 RAG: クエリ拡張 → 評価 → ハルシネーション検査ループ。", "zh-CN":"自我修正 RAG:查询扩展 → 评估 → 幻觉检查循环。", ko:"자가 수정형 RAG: 쿼리 확장 → 평가 → 환각 검사 루프.", es:"RAG autocorrectivo: expansión de consulta → eval → bucle de verificación de alucinación.", fr:"RAG auto-correctif : expansion de requête → éval → boucle de vérification d'hallucination.", de:"Selbstkorrigierendes RAG: Query-Erweiterung → Bewertung → Halluzinations-Check-Schleife.", "pt-BR":"RAG autocorretivo: expansão de consulta → avaliação → loop de verificação de alucinação."},

    "skills.kicker":              {en:"Six default business skills", ja:"6 業務向けスキル", "zh-CN":"6 项默认业务技能", ko:"6 가지 기본 업무 스킬", es:"6 habilidades de negocio por defecto", fr:"6 compétences métier par défaut", de:"Sechs Standard-Business-Skills", "pt-BR":"6 habilidades de negócio padrão"},
    "skills.h2":                  {en:"Domain-tuned agents, ready out of the box.", ja:"業務領域に最適化されたエージェントを即利用。", "zh-CN":"领域调优代理,开箱即用。", ko:"도메인 조정 에이전트, 즉시 사용 가능.", es:"Agentes ajustados al dominio, listos para usar.", fr:"Agents adaptés au domaine, prêts à l'emploi.", de:"Domänen-getunte Agenten, sofort einsatzbereit.", "pt-BR":"Agentes ajustados ao domínio, prontos para uso."},
    "skills.investment.tag":      {en:"Investment", ja:"投資", "zh-CN":"投资", ko:"투자", es:"Inversión", fr:"Investissement", de:"Investment", "pt-BR":"Investimento"},
    "skills.investment.body":     {en:"Equity research, due diligence, portfolio decisions with bull/bear analysis.", ja:"エクイティリサーチ、デューデリ、ポートフォリオ判断 (bull/bear 分析)。", "zh-CN":"股权研究、尽职调查、组合决策(多空分析)。", ko:"주식 리서치, 실사, 포트폴리오 결정 (bull/bear 분석).", es:"Investigación de equity, due diligence, decisiones de portafolio con análisis bull/bear.", fr:"Recherche actions, due diligence, décisions de portefeuille (analyse bull/bear).", de:"Equity-Research, Due Diligence, Portfolio-Entscheidungen mit Bull/Bear-Analyse.", "pt-BR":"Pesquisa de equity, due diligence, decisões de portfólio com análise bull/bear."},
    "skills.sales.tag":           {en:"Sales", ja:"営業", "zh-CN":"销售", ko:"영업", es:"Ventas", fr:"Ventes", de:"Vertrieb", "pt-BR":"Vendas"},
    "skills.sales.body":          {en:"Account research, proposal drafting, FAQ prep, objection handling.", ja:"アカウントリサーチ、提案ドラフト、FAQ 準備、反論対応。", "zh-CN":"客户调研、提案起草、FAQ 准备、异议处理。", ko:"계정 리서치, 제안서 초안, FAQ 준비, 반론 대응.", es:"Investigación de cuentas, borrador de propuesta, preparación de FAQ, manejo de objeciones.", fr:"Recherche compte, rédaction de proposition, préparation FAQ, gestion d'objections.", de:"Account-Research, Vorschlagsentwurf, FAQ-Vorbereitung, Einwandbehandlung.", "pt-BR":"Pesquisa de contas, rascunho de proposta, preparação de FAQ, tratamento de objeções."},
    "skills.design.tag":          {en:"Engineering", ja:"エンジニアリング", "zh-CN":"工程", ko:"엔지니어링", es:"Ingeniería", fr:"Ingénierie", de:"Engineering", "pt-BR":"Engenharia"},
    "skills.design.body":         {en:"System design review, requirements engineering, architecture trade-offs.", ja:"システム設計レビュー、要件工学、アーキテクチャトレードオフ。", "zh-CN":"系统设计评审、需求工程、架构权衡。", ko:"시스템 설계 리뷰, 요구사항 공학, 아키텍처 트레이드오프.", es:"Revisión de diseño de sistemas, ingeniería de requisitos, trade-offs arquitectónicos.", fr:"Revue de conception système, ingénierie des exigences, arbitrages d'architecture.", de:"Systemdesign-Review, Anforderungs-Engineering, Architektur-Trade-offs.", "pt-BR":"Revisão de design de sistema, engenharia de requisitos, trade-offs arquiteturais."},
    "skills.purchasing.tag":      {en:"Procurement", ja:"購買", "zh-CN":"采购", ko:"구매", es:"Compras", fr:"Achats", de:"Einkauf", "pt-BR":"Compras"},
    "skills.purchasing.body":     {en:"Supplier evaluation, RFQ analysis, TCO calculation, BCP risk scoring.", ja:"サプライヤー評価、RFQ 分析、TCO 計算、BCP リスクスコア。", "zh-CN":"供应商评估、RFQ 分析、TCO 计算、BCP 风险评分。", ko:"공급자 평가, RFQ 분석, TCO 계산, BCP 리스크 점수화.", es:"Evaluación de proveedores, análisis RFQ, cálculo TCO, scoring riesgo BCP.", fr:"Évaluation fournisseurs, analyse RFQ, calcul TCO, scoring risque BCP.", de:"Lieferantenbewertung, RFQ-Analyse, TCO-Berechnung, BCP-Risiko-Scoring.", "pt-BR":"Avaliação de fornecedores, análise RFQ, cálculo TCO, scoring de risco BCP."},
    "skills.patent.tag":          {en:"IP / Patent", ja:"知財 / 特許", "zh-CN":"知识产权/专利", ko:"IP / 특허", es:"PI / Patente", fr:"PI / Brevet", de:"IP / Patent", "pt-BR":"PI / Patente"},
    "skills.patent.body":         {en:"Prior-art search, claims drafting, patent maps, filing strategy.", ja:"先行技術調査、クレーム起案、特許マップ、出願戦略。", "zh-CN":"先行技术检索、权利要求起草、专利地图、申请战略。", ko:"선행기술 조사, 청구항 작성, 특허 맵, 출원 전략.", es:"Búsqueda prior-art, redacción de reivindicaciones, mapas de patentes, estrategia de presentación.", fr:"Recherche d'antériorité, rédaction de revendications, cartes de brevets, stratégie de dépôt.", de:"Stand-der-Technik-Recherche, Anspruchsentwurf, Patentkarten, Anmeldestrategie.", "pt-BR":"Busca de anterioridade, redação de reivindicações, mapas de patentes, estratégia de protocolo."},
    "skills.legal.tag":           {en:"Legal", ja:"法務", "zh-CN":"法务", ko:"법무", es:"Legal", fr:"Juridique", de:"Recht", "pt-BR":"Jurídico"},
    "skills.legal.body":          {en:"Contract review, compliance checks, M&A diligence, policy drafting.", ja:"契約レビュー、コンプラチェック、M&A デューデリ、ポリシー起案。", "zh-CN":"合同审查、合规检查、M&A 尽调、政策起草。", ko:"계약 검토, 컴플라이언스 점검, M&A 실사, 정책 초안.", es:"Revisión de contratos, comprobaciones de compliance, diligencia M&A, redacción de políticas.", fr:"Revue de contrats, contrôles compliance, diligence M&A, rédaction de politiques.", de:"Vertragsprüfung, Compliance-Checks, M&A-Due-Diligence, Policy-Entwurf.", "pt-BR":"Revisão de contratos, verificações de compliance, diligência M&A, redação de políticas."},

    // ===== How-it-works step bodies ===================================
    "how.s1.body": {en:"Run flows and skills via CLI / SDK / UI. Every interaction lands in your personal memory automatically — no <code>save()</code> calls in business code.", ja:"フロー / スキルを CLI / SDK / UI で実行。全操作が個人メモリに自動蓄積 — 業務コードに <code>save()</code> 呼出不要。", "zh-CN":"通过 CLI / SDK / UI 运行流程和技能。所有交互自动落入个人记忆 — 业务代码无需 <code>save()</code>。", ko:"CLI / SDK / UI 로 플로 / 스킬 실행. 모든 상호작용이 개인 메모리에 자동 누적 — 업무 코드에 <code>save()</code> 호출 불필요.", es:"Ejecuta flujos y habilidades vía CLI / SDK / UI. Cada interacción aterriza en tu memoria personal automáticamente — sin llamadas <code>save()</code> en el código de negocio.", fr:"Exécutez flux et compétences via CLI / SDK / UI. Chaque interaction atterrit automatiquement dans votre mémoire personnelle — aucun appel <code>save()</code> dans le code métier.", de:"Flows und Skills via CLI / SDK / UI ausführen. Jede Interaktion landet automatisch in deinem persönlichen Speicher — keine <code>save()</code>-Aufrufe im Business-Code.", "pt-BR":"Execute fluxos e habilidades via CLI / SDK / UI. Cada interação cai na sua memória pessoal automaticamente — sem chamadas <code>save()</code> no código de negócio."},
    "how.s2.body": {en:"When deals close, tests pass, or PRs merge, attach an outcome. The consolidator uses these to weight which patterns are <em>actually</em> effective.", ja:"商談成約 / テスト合格 / PR マージ時にアウトカムを紐付け。Consolidator が実際に効くパターンを重み付け。", "zh-CN":"成交、测试通过或 PR 合并时附加成果。Consolidator 据此加权<em>真正</em>有效的模式。", ko:"거래 성사 / 테스트 통과 / PR 병합 시 결과 연결. Consolidator 가 실제로 효과적인 패턴에 가중치 부여.", es:"Cuando se cierran tratos, pasan pruebas o se hacen merges, adjunta un outcome. El consolidador los usa para ponderar qué patrones funcionan <em>realmente</em>.", fr:"Quand les deals sont conclus, les tests passent ou les PRs sont fusionnés, attachez un résultat. Le consolidateur l'utilise pour pondérer les patterns <em>réellement</em> efficaces.", de:"Wenn Deals abgeschlossen, Tests bestanden oder PRs gemerged werden, einen Outcome anhängen. Der Consolidator gewichtet damit, welche Muster <em>tatsächlich</em> wirken.", "pt-BR":"Quando deals fecham, testes passam ou PRs mesclam, anexe um resultado. O consolidador usa para ponderar quais padrões <em>de fato</em> funcionam."},
    "how.s3.body": {en:"The Sleep-time Consolidator clusters similar memories across users, runs each through the 3-path engine, and auto-promotes the high-confidence ones.", ja:"Sleep-time Consolidator がユーザ横断で類似メモリをクラスタリング、3 経路エンジンで判定し高信頼度の項目を自動昇格。", "zh-CN":"Sleep-time Consolidator 跨用户聚类相似记忆,用 3 路引擎判定,高置信项自动晋升。", ko:"Sleep-time Consolidator 가 사용자 간 유사 메모리를 클러스터링, 3 경로 엔진으로 판정 후 고신뢰 항목 자동 승격.", es:"El Consolidador Sleep-time agrupa memorias similares entre usuarios, las pasa por el motor de 3 vías y auto-promueve las de alta confianza.", fr:"Le Consolidateur Sleep-time regroupe les mémoires similaires entre utilisateurs, les fait passer par le moteur à 3 voies et auto-promeut celles à haute confiance.", de:"Der Sleep-time-Consolidator clustert ähnliche Erinnerungen über Nutzer hinweg, lässt sie durch die 3-Pfad-Engine laufen und befördert automatisch die mit hoher Konfidenz.", "pt-BR":"O Consolidador Sleep-time agrupa memórias similares entre usuários, as passa pelo motor de 3 caminhos e auto-promove as de alta confiança."},
    "how.s4.body": {en:"Promoted shared blocks become living org knowledge. The most stable get frozen into Markdown + git for PR review. Every step is auditable.", ja:"昇格された共有ブロックは組織知として運用。最も安定したものは Markdown + git に凍結し PR レビュー対象に。全ステップ監査可能。", "zh-CN":"晋升的共享块成为组织知识。最稳定的冻结为 Markdown + git 以供 PR 审核。每一步可审计。", ko:"승격된 공유 블록이 조직 지식으로 운영. 가장 안정된 것은 Markdown + git 으로 동결 후 PR 검토 대상. 모든 단계 감사 가능.", es:"Los bloques compartidos promovidos se convierten en saber org vivo. Los más estables se congelan a Markdown + git para revisión PR. Cada paso es auditable.", fr:"Les blocs partagés promus deviennent du savoir org vivant. Les plus stables sont figés en Markdown + git pour revue PR. Chaque étape est auditable.", de:"Beförderte geteilte Blöcke werden zu lebendigem Org-Wissen. Die stabilsten werden in Markdown + git eingefroren für PR-Review. Jeder Schritt ist auditierbar.", "pt-BR":"Blocos compartilhados promovidos viram conhecimento org vivo. Os mais estáveis são congelados em Markdown + git para revisão PR. Cada passo é auditável."},

    // ===== Where it fits — list items =================================
    "fit.best.l1":  {en:"Teams where senior staff's tacit knowledge needs to compound", ja:"シニアの暗黙知を組織に蓄積したいチーム", "zh-CN":"需要让资深员工隐性知识不断累积的团队", ko:"시니어의 암묵지를 조직에 축적하고 싶은 팀", es:"Equipos donde el conocimiento tácito sénior debe acumularse", fr:"Équipes où le savoir tacite des seniors doit se cumuler", de:"Teams, deren Senior-Tacit-Knowledge sich aufbauen soll", "pt-BR":"Equipes onde o conhecimento tácito sênior precisa acumular"},
    "fit.best.l2":  {en:"Workflows in sales / legal / patent / design / purchasing / investment", ja:"営業 / 法務 / 特許 / 設計 / 購買 / 投資の業務フロー", "zh-CN":"销售/法务/专利/设计/采购/投资的工作流", ko:"영업 / 법무 / 특허 / 설계 / 구매 / 투자 업무 플로", es:"Flujos en ventas / legal / patentes / diseño / compras / inversión", fr:"Flux ventes / juridique / brevets / design / achats / investissement", de:"Workflows in Vertrieb / Recht / Patent / Design / Einkauf / Investment", "pt-BR":"Fluxos em vendas / jurídico / patente / design / compras / investimento"},
    "fit.best.l3":  {en:"Enterprises that need RBAC + ACL + audit out of the box", ja:"RBAC + ACL + 監査が標準で必要な企業", "zh-CN":"需要 RBAC + ACL + 审计开箱即用的企业", ko:"RBAC + ACL + 감사가 기본 필요한 기업", es:"Empresas que necesitan RBAC + ACL + auditoría de fábrica", fr:"Entreprises qui ont besoin de RBAC + ACL + audit clé en main", de:"Unternehmen, die RBAC + ACL + Audit out-of-the-box brauchen", "pt-BR":"Empresas que precisam RBAC + ACL + auditoria prontos"},
    "fit.best.l4":  {en:"Self-hosted / on-prem deployments (LLM + memory both)", ja:"セルフホスト / オンプレ運用 (LLM とメモリ両方)", "zh-CN":"自托管/本地部署(LLM 与记忆均如此)", ko:"셀프호스트 / 온프레미스 운영 (LLM 과 메모리 모두)", es:"Despliegues self-hosted / on-prem (LLM y memoria)", fr:"Déploiements self-hosted / on-prem (LLM et mémoire)", de:"Self-hosted / On-Prem-Deployments (LLM und Speicher)", "pt-BR":"Implantações self-hosted / on-prem (LLM e memória)"},
    "fit.less.l1":  {en:"You need a fully generic agent graph builder — try LangGraph", ja:"完全汎用なエージェントグラフビルダ — LangGraph がおすすめ", "zh-CN":"需要完全通用的代理图构建器 — 推荐 LangGraph", ko:"완전 범용 에이전트 그래프 빌더가 필요할 때 — LangGraph 추천", es:"Necesitas un builder de grafo agente totalmente genérico — prueba LangGraph", fr:"Vous voulez un constructeur de graphe d'agents totalement générique — essayez LangGraph", de:"Du brauchst einen vollständig generischen Agent-Graph-Builder — probier LangGraph", "pt-BR":"Você precisa de um construtor de grafo de agentes totalmente genérico — experimente LangGraph"},
    "fit.less.l2":  {en:"You want a hosted-only knowledge platform — try a SaaS", ja:"ホスト型限定の知識プラットフォーム — SaaS をどうぞ", "zh-CN":"想要只托管的知识平台 — 用 SaaS", ko:"호스팅 전용 지식 플랫폼이 필요 — SaaS 가 적합", es:"Quieres una plataforma de conocimiento solo hosted — prueba un SaaS", fr:"Vous voulez une plateforme de connaissance uniquement hébergée — utilisez un SaaS", de:"Du willst eine reine Hosted-Knowledge-Plattform — nimm ein SaaS", "pt-BR":"Você quer plataforma de conhecimento apenas hospedada — use um SaaS"},
    "fit.less.l3":  {en:"You're building a single-shot chatbot — Praxia is overkill", ja:"単発チャットボット構築 — Praxia は過剰", "zh-CN":"构建单次问答机器人 — Praxia 过重", ko:"일회성 챗봇 구축 — Praxia 는 과함", es:"Estás construyendo un chatbot de un solo turno — Praxia es excesivo", fr:"Vous construisez un chatbot one-shot — Praxia est surdimensionné", de:"Du baust einen Single-Shot-Chatbot — Praxia ist Overkill", "pt-BR":"Você está construindo um chatbot single-shot — Praxia é exagero"},
    "fit.less.l4":  {en:"Your team is a single user with no organizational learning need", ja:"単独ユーザで組織学習が不要", "zh-CN":"团队为单用户,无需组织学习", ko:"팀이 단일 사용자로 조직 학습 불필요", es:"Tu equipo es un único usuario sin necesidad de aprendizaje organizacional", fr:"Votre équipe est un seul utilisateur, pas besoin d'apprentissage organisationnel", de:"Dein Team ist ein einzelner Nutzer ohne Bedarf an Org-Lernen", "pt-BR":"Sua equipe é um único usuário sem necessidade de aprendizado organizacional"},
    "fit.plays.l1": {en:"Mem0 / LangMem / Letta / Zep / HindSight — Praxia uses them as backends, or several at once via Composite / Routed", ja:"Mem0 / LangMem / Letta / Zep / HindSight — Praxia がバックエンドとして利用、Composite / Routed で複数同時利用も可", "zh-CN":"Mem0 / LangMem / Letta / Zep / HindSight — Praxia 作为后端使用,可经 Composite / Routed 并行多个", ko:"Mem0 / LangMem / Letta / Zep / HindSight — Praxia 가 백엔드로 사용, Composite / Routed 로 다중 동시 가능", es:"Mem0 / LangMem / Letta / Zep / HindSight — Praxia los usa como backends, o varios a la vez vía Composite / Routed", fr:"Mem0 / LangMem / Letta / Zep / HindSight — Praxia les utilise comme backends, ou plusieurs en parallèle via Composite / Routed", de:"Mem0 / LangMem / Letta / Zep / HindSight — Praxia nutzt sie als Backends, oder mehrere gleichzeitig via Composite / Routed", "pt-BR":"Mem0 / LangMem / Letta / Zep / HindSight — Praxia os usa como backends, ou vários ao mesmo tempo via Composite / Routed"},
    "fit.plays.l2": {en:"Claude / ChatGPT / Gemini / <strong>Gemma</strong> / Qwen via LiteLLM (local Ollama or cloud)", ja:"Claude / ChatGPT / Gemini / <strong>Gemma</strong> / Qwen を LiteLLM 経由で (ローカル Ollama / クラウド)", "zh-CN":"Claude / ChatGPT / Gemini / <strong>Gemma</strong> / Qwen 通过 LiteLLM(本地 Ollama 或云)", ko:"Claude / ChatGPT / Gemini / <strong>Gemma</strong> / Qwen 을 LiteLLM 경유 (로컬 Ollama 또는 클라우드)", es:"Claude / ChatGPT / Gemini / <strong>Gemma</strong> / Qwen vía LiteLLM (Ollama local o nube)", fr:"Claude / ChatGPT / Gemini / <strong>Gemma</strong> / Qwen via LiteLLM (Ollama local ou cloud)", de:"Claude / ChatGPT / Gemini / <strong>Gemma</strong> / Qwen via LiteLLM (lokales Ollama oder Cloud)", "pt-BR":"Claude / ChatGPT / Gemini / <strong>Gemma</strong> / Qwen via LiteLLM (Ollama local ou nuvem)"},
    "fit.plays.l3": {en:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce connectors", ja:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce コネクタ", "zh-CN":"Box / SharePoint / Dropbox / Drive / kintone / Salesforce 连接器", ko:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce 커넥터", es:"Conectores Box / SharePoint / Dropbox / Drive / kintone / Salesforce", fr:"Connecteurs Box / SharePoint / Dropbox / Drive / kintone / Salesforce", de:"Box / SharePoint / Dropbox / Drive / kintone / Salesforce-Konnektoren", "pt-BR":"Conectores Box / SharePoint / Dropbox / Drive / kintone / Salesforce"},
    "fit.plays.l4": {en:"MCP / Claude Skills / Cursor Skills (skill format compatible)", ja:"MCP / Claude Skills / Cursor Skills (スキル形式互換)", "zh-CN":"MCP / Claude Skills / Cursor Skills(技能格式兼容)", ko:"MCP / Claude Skills / Cursor Skills (스킬 형식 호환)", es:"MCP / Claude Skills / Cursor Skills (formato de habilidades compatible)", fr:"MCP / Claude Skills / Cursor Skills (format de compétences compatible)", de:"MCP / Claude Skills / Cursor Skills (Skill-Format kompatibel)", "pt-BR":"MCP / Claude Skills / Cursor Skills (formato de habilidades compatível)"},
    "fit.plays.l5": {en:"Your own frontend (Next.js / Slack / mobile) — run <code>praxia serve</code> as the HTTP backend", ja:"独自フロントエンド (Next.js / Slack / モバイル) — <code>praxia serve</code> を HTTP バックエンドとして実行", "zh-CN":"您自己的前端(Next.js / Slack / 移动)— 运行 <code>praxia serve</code> 作为 HTTP 后端", ko:"자체 프런트엔드 (Next.js / Slack / 모바일) — <code>praxia serve</code> 를 HTTP 백엔드로 실행", es:"Tu propio frontend (Next.js / Slack / móvil) — ejecuta <code>praxia serve</code> como backend HTTP", fr:"Votre propre frontend (Next.js / Slack / mobile) — exécutez <code>praxia serve</code> comme backend HTTP", de:"Eigenes Frontend (Next.js / Slack / Mobile) — <code>praxia serve</code> als HTTP-Backend ausführen", "pt-BR":"Seu próprio frontend (Next.js / Slack / mobile) — rode <code>praxia serve</code> como backend HTTP"},

    // ===== Contact CTA ================================================
    "contact.h2":      {en:"Ready to make your team's tacit knowledge unforgettable?", ja:"チームの暗黙知を忘れられないものにしませんか?", "zh-CN":"准备好让团队的隐性知识不再消失了吗?", ko:"팀의 암묵지를 잊혀지지 않게 만들 준비됐나요?", es:"¿Listo para hacer inolvidable el conocimiento tácito de tu equipo?", fr:"Prêt à rendre le savoir tacite de votre équipe inoubliable ?", de:"Bereit, das Tacit Knowledge Ihres Teams unvergesslich zu machen?", "pt-BR":"Pronto para tornar o conhecimento tácito da sua equipe inesquecível?"},
    "contact.p":       {en:"Star us on GitHub, run the quickstart, or reach out for a tailored PoC.", ja:"GitHub にスターを、Quickstart を試すか、PoC のご相談をお待ちしています。", "zh-CN":"给我们 GitHub Star、运行 quickstart 或联系定制 PoC。", ko:"GitHub 스타, Quickstart 실행, 또는 맞춤 PoC 문의 환영합니다.", es:"Danos una estrella en GitHub, prueba el quickstart o contáctanos para un PoC.", fr:"Étoilez-nous sur GitHub, lancez le quickstart, ou contactez-nous pour un PoC sur mesure.", de:"Stern auf GitHub, Quickstart ausführen oder kontaktiere uns für einen maßgeschneiderten PoC.", "pt-BR":"Dê uma estrela no GitHub, rode o quickstart, ou entre em contato para um PoC sob medida."},
    "contact.star":    {en:"★ Star on GitHub", ja:"★ GitHub でスター", "zh-CN":"★ 在 GitHub 加星", ko:"★ GitHub 스타", es:"★ Star en GitHub", fr:"★ Étoile sur GitHub", de:"★ Auf GitHub starren", "pt-BR":"★ Star no GitHub"},
    "contact.portal":  {en:"Open Portal", ja:"ポータルを開く", "zh-CN":"打开门户", ko:"포털 열기", es:"Abrir Portal", fr:"Ouvrir le Portail", de:"Portal öffnen", "pt-BR":"Abrir Portal"},
    "contact.contact": {en:"Contact us", ja:"お問い合わせ", "zh-CN":"联系我们", ko:"문의하기", es:"Contáctanos", fr:"Contactez-nous", de:"Kontakt", "pt-BR":"Fale conosco"},

    // ===== Footer link labels =========================================
    "footer.product.features": {en:"Features", ja:"機能", "zh-CN":"功能", ko:"기능", es:"Funciones", fr:"Fonctionnalités", de:"Funktionen", "pt-BR":"Recursos"},
    "footer.product.flows":    {en:"Flows", ja:"フロー", "zh-CN":"流程", ko:"플로", es:"Flujos", fr:"Flux", de:"Flows", "pt-BR":"Fluxos"},
    "footer.product.skills":   {en:"Skills", ja:"スキル", "zh-CN":"技能", ko:"스킬", es:"Habilidades", fr:"Compétences", de:"Skills", "pt-BR":"Habilidades"},
    "footer.product.editions": {en:"Editions", ja:"エディション", "zh-CN":"版本", ko:"에디션", es:"Ediciones", fr:"Éditions", de:"Editionen", "pt-BR":"Edições"},
    "footer.res.github":       {en:"GitHub", ja:"GitHub", "zh-CN":"GitHub", ko:"GitHub", es:"GitHub", fr:"GitHub", de:"GitHub", "pt-BR":"GitHub"},
    "footer.res.quickstart":   {en:"Quickstart", ja:"クイックスタート", "zh-CN":"快速开始", ko:"퀵스타트", es:"Inicio rápido", fr:"Démarrage rapide", de:"Schnellstart", "pt-BR":"Início rápido"},
    "footer.res.arch":         {en:"Architecture", ja:"アーキテクチャ", "zh-CN":"架构", ko:"아키텍처", es:"Arquitectura", fr:"Architecture", de:"Architektur", "pt-BR":"Arquitetura"},
    "footer.res.deploy":       {en:"Deployment modes", ja:"デプロイモード", "zh-CN":"部署模式", ko:"배포 모드", es:"Modos de despliegue", fr:"Modes de déploiement", de:"Deployment-Modi", "pt-BR":"Modos de deployment"},
    "footer.res.connectors":   {en:"Custom connector guide", ja:"カスタムコネクタガイド", "zh-CN":"自定义连接器指南", ko:"커스텀 커넥터 가이드", es:"Guía de conectores personalizados", fr:"Guide connecteurs personnalisés", de:"Custom-Konnektor-Leitfaden", "pt-BR":"Guia de conectores personalizados"},
    "footer.res.specs":        {en:"Design specs (EN + JA)", ja:"設計仕様書 (英 + 日)", "zh-CN":"设计规范(英+日)", ko:"설계 사양서 (영 + 일)", es:"Specs de diseño (EN+JA)", fr:"Specs de conception (EN+JA)", de:"Designspezifikationen (EN+JA)", "pt-BR":"Specs de design (EN+JA)"},
    "footer.res.usecases":     {en:"Use cases", ja:"ユースケース", "zh-CN":"用例", ko:"사용 사례", es:"Casos de uso", fr:"Cas d'usage", de:"Anwendungsfälle", "pt-BR":"Casos de uso"},
    "footer.com.x":            {en:"Follow on X (@praxia_dev)", ja:"X でフォロー (@praxia_dev)", "zh-CN":"在 X 关注 (@praxia_dev)", ko:"X 에서 팔로우 (@praxia_dev)", es:"Síguenos en X (@praxia_dev)", fr:"Suivre sur X (@praxia_dev)", de:"Auf X folgen (@praxia_dev)", "pt-BR":"Seguir no X (@praxia_dev)"},
    "footer.com.discuss":      {en:"Discussions", ja:"ディスカッション", "zh-CN":"讨论", ko:"디스커션", es:"Discusiones", fr:"Discussions", de:"Diskussionen", "pt-BR":"Discussões"},
    "footer.com.issues":       {en:"Issues", ja:"Issue", "zh-CN":"Issue", ko:"이슈", es:"Issues", fr:"Issues", de:"Issues", "pt-BR":"Issues"},
    "footer.com.contribute":   {en:"Contributing", ja:"コントリビュート", "zh-CN":"参与贡献", ko:"기여하기", es:"Contribuir", fr:"Contribuer", de:"Mitwirken", "pt-BR":"Contribuir"},
    "footer.com.licenses":     {en:"Third-party licenses", ja:"サードパーティライセンス", "zh-CN":"第三方许可证", ko:"써드파티 라이선스", es:"Licencias de terceros", fr:"Licences tierces", de:"Drittanbieterlizenzen", "pt-BR":"Licenças de terceiros"},
    "footer.legal.terms":      {en:"Terms of Service", ja:"利用規約", "zh-CN":"服务条款", ko:"이용약관", es:"Términos del servicio", fr:"Conditions d'utilisation", de:"Nutzungsbedingungen", "pt-BR":"Termos de Serviço"},
    "footer.legal.privacy":    {en:"Privacy Policy", ja:"プライバシーポリシー", "zh-CN":"隐私政策", ko:"개인정보 보호정책", es:"Política de privacidad", fr:"Politique de confidentialité", de:"Datenschutzerklärung", "pt-BR":"Política de Privacidade"},
    "footer.legal.aup":        {en:"Acceptable Use", ja:"利用規定", "zh-CN":"可接受使用", ko:"이용규정", es:"Uso aceptable", fr:"Usage acceptable", de:"Acceptable Use", "pt-BR":"Uso aceitável"},
    "footer.legal.cookies":    {en:"Cookies", ja:"Cookie", "zh-CN":"Cookie", ko:"쿠키", es:"Cookies", fr:"Cookies", de:"Cookies", "pt-BR":"Cookies"},

    // ===== FAQ (19 Q/A pairs) — concise translations =================
    "faq.q1": {en:"Does Praxia send my data to a third party?", ja:"Praxia は私のデータを第三者に送りますか?", "zh-CN":"Praxia 会把我的数据发送给第三方吗?", ko:"Praxia 가 제 데이터를 제3자에게 전송합니까?", es:"¿Praxia envía mis datos a terceros?", fr:"Praxia envoie-t-il mes données à un tiers ?", de:"Sendet Praxia meine Daten an Dritte?", "pt-BR":"O Praxia envia meus dados a terceiros?"},
    "faq.a1": {en:"No. The default <code>json</code> backend stores everything on local disk. LLM calls go to whichever provider you configure — pick <code>qwen-local</code> (Ollama) for fully in-house operation. You choose the trust boundary.", ja:"いいえ。既定の <code>json</code> バックエンドはローカルディスクに保存。LLM 呼出は設定したプロバイダ次第 — 完全社内運用なら <code>qwen-local</code> (Ollama) を選択。信頼境界はあなたが決めます。", "zh-CN":"不会。默认 <code>json</code> 后端将一切存储于本地磁盘。LLM 调用走您配置的提供商 — 选 <code>qwen-local</code>(Ollama)实现完全内部运行。信任边界由您决定。", ko:"아닙니다. 기본 <code>json</code> 백엔드는 모두 로컬 디스크에 저장. LLM 호출은 설정한 프로바이더 — 완전 사내 운영이면 <code>qwen-local</code> (Ollama). 신뢰 경계는 사용자가 선택.", es:"No. El backend <code>json</code> por defecto almacena todo en disco local. Las llamadas LLM van al proveedor que configures — elige <code>qwen-local</code> (Ollama) para operación totalmente interna. Tú eliges el límite de confianza.", fr:"Non. Le backend <code>json</code> par défaut stocke tout en local. Les appels LLM vont vers le fournisseur configuré — choisissez <code>qwen-local</code> (Ollama) pour une opération entièrement interne. Vous choisissez la limite de confiance.", de:"Nein. Das Standard-<code>json</code>-Backend speichert alles lokal. LLM-Aufrufe gehen an den von dir konfigurierten Anbieter — wähle <code>qwen-local</code> (Ollama) für vollständig hausinterne Operation. Du wählst die Vertrauensgrenze.", "pt-BR":"Não. O backend padrão <code>json</code> guarda tudo em disco local. Chamadas LLM vão para o provedor que você configurar — escolha <code>qwen-local</code> (Ollama) para operação totalmente interna. Você escolhe a fronteira de confiança."},
    "faq.q2": {en:"How is this different from \"just using Mem0\"?", ja:"「Mem0 を使うだけ」と何が違いますか?", "zh-CN":"和「直接用 Mem0」有什么区别?", ko:"「그냥 Mem0 쓰는 것」과 무엇이 다릅니까?", es:"¿En qué se diferencia de \"simplemente usar Mem0\"?", fr:"En quoi est-ce différent de « simplement utiliser Mem0 » ?", de:"Was unterscheidet das von einfach Mem0 nutzen?", "pt-BR":"Como isso difere de \"só usar Mem0\"?"},
    "faq.a2": {en:"Mem0 is a memory layer. Praxia is the <strong>orchestrator + memory + skill registry + flows + eval + auth</strong>. Mem0 is one of six interchangeable backends inside Praxia.", ja:"Mem0 はメモリ層です。Praxia は <strong>オーケストレータ + メモリ + スキルレジストリ + フロー + 評価 + 認証</strong>。Mem0 は Praxia 内の交換可能な 6 バックエンドの 1 つ。", "zh-CN":"Mem0 是记忆层。Praxia 是 <strong>编排器 + 记忆 + 技能注册表 + 流程 + 评估 + 认证</strong> 的整体。Mem0 是 Praxia 内 6 个可互换后端之一。", ko:"Mem0 는 메모리 레이어. Praxia 는 <strong>오케스트레이터 + 메모리 + 스킬 레지스트리 + 플로 + 평가 + 인증</strong>. Mem0 는 Praxia 내 교체 가능한 6 백엔드 중 하나.", es:"Mem0 es una capa de memoria. Praxia es el <strong>orquestador + memoria + registro de habilidades + flujos + eval + auth</strong>. Mem0 es uno de seis backends intercambiables dentro de Praxia.", fr:"Mem0 est une couche mémoire. Praxia est l'<strong>orchestrateur + mémoire + registre de compétences + flux + éval + auth</strong>. Mem0 est l'un des six backends interchangeables dans Praxia.", de:"Mem0 ist eine Speicherschicht. Praxia ist der <strong>Orchestrator + Speicher + Skill-Registry + Flows + Eval + Auth</strong>. Mem0 ist eines von sechs austauschbaren Backends in Praxia.", "pt-BR":"Mem0 é uma camada de memória. Praxia é o <strong>orquestrador + memória + registro de habilidades + fluxos + eval + auth</strong>. Mem0 é um dos seis backends intercambiáveis dentro do Praxia."},
    "faq.q3": {en:"Is auto-promotion actually safe?", ja:"自動昇格は本当に安全ですか?", "zh-CN":"自动晋升真的安全吗?", ko:"자동 승격이 정말 안전합니까?", es:"¿La auto-promoción es realmente segura?", fr:"L'auto-promotion est-elle vraiment sûre ?", de:"Ist Auto-Beförderung wirklich sicher?", "pt-BR":"A auto-promoção é realmente segura?"},
    "faq.a3": {en:"Three guardrails: (1) auto-threshold defaults to 0.75 — high; (2) review queue catches mid-confidence items for human approval; (3) the audit log records every promotion so rollback is trivial.", ja:"3 つのガードレール: (1) 自動閾値は既定 0.75 と高め、(2) 中信頼度はレビューキューで人手承認、(3) 全昇格を監査ログ化、ロールバック容易。", "zh-CN":"三道护栏:(1) 自动阈值默认 0.75(高);(2) 中等置信度进入审核队列由人审批;(3) 所有晋升均记入审计日志,易于回滚。", ko:"3 가드레일: (1) 자동 임계값 기본 0.75 로 높음, (2) 중간 신뢰도는 검토 큐에서 사람 승인, (3) 모든 승격이 감사 로그화되어 롤백 용이.", es:"Tres salvaguardas: (1) umbral por defecto 0.75 — alto; (2) cola de revisión humana para mediana confianza; (3) cada promoción se audita, rollback trivial.", fr:"Trois garde-fous : (1) seuil par défaut 0,75 — élevé ; (2) file de revue humaine pour confiance moyenne ; (3) chaque promotion est auditée, rollback trivial.", de:"Drei Leitplanken: (1) Auto-Schwelle Standard 0,75 — hoch; (2) Review-Queue für mittlere Konfidenz mit menschlicher Freigabe; (3) jede Beförderung im Audit-Log, Rollback trivial.", "pt-BR":"Três proteções: (1) limiar padrão 0,75 — alto; (2) fila de revisão para confiança média com aprovação humana; (3) cada promoção fica no log de auditoria, rollback trivial."},
    "faq.q4": {en:"Can I run Praxia fully offline / on-prem?", ja:"Praxia を完全オフライン / オンプレで実行できますか?", "zh-CN":"我可以完全离线/本地运行 Praxia 吗?", ko:"Praxia 를 완전 오프라인 / 온프레미스로 실행할 수 있습니까?", es:"¿Puedo ejecutar Praxia totalmente offline / on-prem?", fr:"Puis-je exécuter Praxia totalement hors-ligne / on-prem ?", de:"Kann ich Praxia vollständig offline / on-prem betreiben?", "pt-BR":"Posso rodar o Praxia totalmente offline / on-prem?"},
    "faq.a4": {en:"Yes. Pick <code>qwen-local</code> (Ollama) for the LLM and <code>json</code> or self-hosted Mem0/HindSight for memory. No cloud calls.", ja:"はい。LLM は <code>qwen-local</code> (Ollama)、メモリは <code>json</code> またはセルフホストの Mem0 / HindSight を選択。クラウド呼出ゼロ。", "zh-CN":"可以。LLM 选 <code>qwen-local</code>(Ollama),记忆选 <code>json</code> 或自托管 Mem0 / HindSight。无云调用。", ko:"네. LLM 은 <code>qwen-local</code> (Ollama), 메모리는 <code>json</code> 또는 셀프호스트 Mem0 / HindSight 선택. 클라우드 호출 없음.", es:"Sí. Elige <code>qwen-local</code> (Ollama) para LLM y <code>json</code> o Mem0 / HindSight self-hosted para memoria. Sin llamadas cloud.", fr:"Oui. Choisissez <code>qwen-local</code> (Ollama) pour le LLM et <code>json</code> ou Mem0 / HindSight self-hosted pour la mémoire. Aucun appel cloud.", de:"Ja. <code>qwen-local</code> (Ollama) für das LLM und <code>json</code> oder selbst gehostetes Mem0 / HindSight für den Speicher wählen. Keine Cloud-Aufrufe.", "pt-BR":"Sim. Escolha <code>qwen-local</code> (Ollama) para LLM e <code>json</code> ou Mem0 / HindSight self-hosted para memória. Sem chamadas à nuvem."},
    "faq.q5": {en:"How does Praxia compare to LangGraph?", ja:"Praxia と LangGraph の比較は?", "zh-CN":"Praxia 与 LangGraph 相比如何?", ko:"Praxia 와 LangGraph 의 비교는?", es:"¿Cómo se compara Praxia con LangGraph?", fr:"Comment Praxia se compare-t-il à LangGraph ?", de:"Wie schneidet Praxia gegenüber LangGraph ab?", "pt-BR":"Como o Praxia se compara ao LangGraph?"},
    "faq.a5": {en:"LangGraph excels at general agent orchestration but doesn't ship workflow templates, business skills, memory cycling, or auth. Praxia is opinionated and batteries-included for the \"specialized multi-agent + organizational memory\" niche.", ja:"LangGraph は汎用エージェント調整に強いが、業務テンプレ・ビジネススキル・メモリ循環・認証は同梱せず。Praxia は「業務特化マルチエージェント + 組織メモリ」ニッチに同梱型。", "zh-CN":"LangGraph 擅长通用代理编排,但不附带业务模板、业务技能、记忆循环或认证。Praxia 在「业务特化多代理 + 组织记忆」领域是有主见的开箱即用方案。", ko:"LangGraph 는 범용 에이전트 조정에 강하지만 워크플로 템플릿/업무 스킬/메모리 순환/인증은 미포함. Praxia 는 「업무특화 멀티에이전트 + 조직 메모리」 틈새의 의견 있는 일체형 솔루션.", es:"LangGraph destaca en orquestación genérica pero no trae plantillas de workflow, habilidades de negocio, ciclo de memoria ni auth. Praxia es opinionado y \"baterías incluidas\" para el nicho \"multi-agente especializado + memoria organizacional\".", fr:"LangGraph excelle en orchestration générique mais ne fournit pas de templates de flux, compétences métier, cycle mémoire ou auth. Praxia est opinionné et tout-inclus pour la niche « multi-agents spécialisé + mémoire organisationnelle ».", de:"LangGraph glänzt in generischer Agent-Orchestrierung, liefert aber keine Workflow-Templates, Business-Skills, Memory-Cycling oder Auth. Praxia ist meinungsstark und voll ausgestattet für die Nische spezialisierte Multi-Agent + organisationale Erinnerung.", "pt-BR":"LangGraph se destaca em orquestração genérica, mas não inclui templates de workflow, habilidades de negócio, ciclo de memória ou auth. Praxia é opinativo e completo para o nicho \"multi-agente especializado + memória organizacional\"."},
    "faq.q6": {en:"Can I use this commercially?", ja:"商用利用は可能ですか?", "zh-CN":"可以商用吗?", ko:"상용 이용 가능합니까?", es:"¿Puedo usarlo comercialmente?", fr:"Puis-je l'utiliser commercialement ?", de:"Darf ich das kommerziell nutzen?", "pt-BR":"Posso usar comercialmente?"},
    "faq.a6": {en:"Yes — Apache 2.0. Even auth/SSO is in the OSS, where competitors typically paywall those features.", ja:"はい — Apache 2.0。auth / SSO も OSS 内に含む (競合は通常有償化)。", "zh-CN":"可以 — Apache 2.0。auth / SSO 也在 OSS 中(竞品通常付费)。", ko:"네 — Apache 2.0. auth / SSO 도 OSS 에 포함 (경쟁사는 통상 유료).", es:"Sí — Apache 2.0. Incluso auth / SSO están en el OSS, mientras que los competidores suelen cobrar.", fr:"Oui — Apache 2.0. Même auth / SSO sont dans l'OSS, alors que les concurrents les facturent souvent.", de:"Ja — Apache 2.0. Selbst Auth / SSO sind im OSS enthalten — bei Konkurrenten typischerweise hinter der Paywall.", "pt-BR":"Sim — Apache 2.0. Até auth / SSO estão no OSS, enquanto concorrentes normalmente cobram."},
    "faq.q7": {en:"Is the 6-skill set fixed?", ja:"6 スキルは固定ですか?", "zh-CN":"6 个技能是固定的吗?", ko:"6 스킬 세트는 고정입니까?", es:"¿El set de 6 habilidades es fijo?", fr:"L'ensemble de 6 compétences est-il figé ?", de:"Ist der 6-Skill-Satz fest?", "pt-BR":"O conjunto de 6 habilidades é fixo?"},
    "faq.a7": {en:"No. Add your own with ~20 lines. PRs that contribute new skills are very welcome.", ja:"いいえ。約 20 行で独自スキルを追加可能。新スキルの PR は大歓迎。", "zh-CN":"不是。约 20 行即可添加自有技能。欢迎贡献新技能的 PR。", ko:"아닙니다. 약 20 줄로 자체 스킬 추가 가능. 신규 스킬 PR 대환영.", es:"No. Añade las tuyas con ~20 líneas. Los PR con nuevas habilidades son muy bienvenidos.", fr:"Non. Ajoutez les vôtres en ~20 lignes. Les PR avec nouvelles compétences sont très bienvenues.", de:"Nein. Eigene mit ~20 Zeilen hinzufügen. PRs mit neuen Skills sind sehr willkommen.", "pt-BR":"Não. Adicione as suas com ~20 linhas. PRs com novas habilidades são muito bem-vindos."},
    "faq.q8": {en:"What about MCP / Claude Skills compatibility?", ja:"MCP / Claude Skills 互換性は?", "zh-CN":"MCP / Claude Skills 兼容性如何?", ko:"MCP / Claude Skills 호환성은?", es:"¿Y la compatibilidad MCP / Claude Skills?", fr:"Et la compatibilité MCP / Claude Skills ?", de:"Wie steht's mit MCP / Claude Skills-Kompatibilität?", "pt-BR":"E a compatibilidade MCP / Claude Skills?"},
    "faq.a8": {en:"Skills serialize to standard <code>SKILL.md</code> frontmatter. Drop any Praxia skill into Claude Skills, Cursor Skills, or any MCP registry without code changes.", ja:"スキルは標準 <code>SKILL.md</code> フロントマター形式でシリアライズ。Praxia スキルを Claude Skills / Cursor Skills / MCP レジストリにコード変更なしで投入可能。", "zh-CN":"技能序列化为标准 <code>SKILL.md</code> frontmatter。无需改代码即可投入 Claude Skills / Cursor Skills / 任何 MCP 注册表。", ko:"스킬은 표준 <code>SKILL.md</code> frontmatter 로 직렬화. Praxia 스킬을 Claude Skills / Cursor Skills / MCP 레지스트리에 코드 변경 없이 투입.", es:"Las habilidades se serializan al frontmatter estándar <code>SKILL.md</code>. Inserta cualquier habilidad Praxia en Claude Skills, Cursor Skills, o cualquier registro MCP sin cambios de código.", fr:"Les compétences sont sérialisées au frontmatter standard <code>SKILL.md</code>. Intégrez toute compétence Praxia dans Claude Skills, Cursor Skills, ou tout registre MCP sans modification de code.", de:"Skills werden in standardisiertes <code>SKILL.md</code>-Frontmatter serialisiert. Jeder Praxia-Skill in Claude Skills, Cursor Skills oder eine MCP-Registry ohne Codeänderungen einsetzbar.", "pt-BR":"Habilidades serializam para frontmatter <code>SKILL.md</code> padrão. Insira qualquer habilidade Praxia em Claude Skills, Cursor Skills, ou qualquer registro MCP sem alterar código."},
    "faq.q9": {en:"Is my org memory locked into Praxia?", ja:"組織メモリは Praxia にロックインされますか?", "zh-CN":"我的组织记忆会被 Praxia 锁定吗?", ko:"조직 메모리가 Praxia 에 잠깁니까?", es:"¿Mi memoria org queda bloqueada en Praxia?", fr:"Ma mémoire org est-elle verrouillée dans Praxia ?", de:"Ist mein Org-Speicher in Praxia eingesperrt?", "pt-BR":"Minha memória org fica presa no Praxia?"},
    "faq.a9": {en:"No. Layer 4 is plain Markdown in your git repo. Layer 3 exports to JSONL. Layer 1 personal memory is standard JSONL or your chosen backend's native format. You can leave at any time.", ja:"いいえ。Layer 4 は git 管理下の素の Markdown、Layer 3 は JSONL エクスポート可、Layer 1 個人メモリは標準 JSONL または選択 backend ネイティブ形式。いつでも離脱可能。", "zh-CN":"不会。Layer 4 是 git 仓库内的纯 Markdown,Layer 3 可导出 JSONL,Layer 1 个人记忆为标准 JSONL 或所选后端原生格式。随时可离开。", ko:"아닙니다. Layer 4 는 git 리포의 평문 Markdown, Layer 3 는 JSONL 내보내기 가능, Layer 1 개인 메모리는 표준 JSONL 또는 선택 백엔드 네이티브 형식. 언제든 떠날 수 있음.", es:"No. La Capa 4 es Markdown plano en tu repo git. La Capa 3 exporta a JSONL. La memoria personal de la Capa 1 es JSONL estándar o el formato nativo del backend elegido. Puedes irte cuando quieras.", fr:"Non. La Couche 4 est du Markdown brut dans votre dépôt git. La Couche 3 exporte en JSONL. La mémoire perso Couche 1 est en JSONL standard ou au format natif du backend choisi. Vous pouvez partir à tout moment.", de:"Nein. Schicht 4 ist reines Markdown in deinem Git-Repo. Schicht 3 exportiert in JSONL. Persönlicher Speicher Schicht 1 ist Standard-JSONL oder das native Format deines gewählten Backends. Du kannst jederzeit gehen.", "pt-BR":"Não. A Camada 4 é Markdown simples no seu repo git. A Camada 3 exporta para JSONL. A memória pessoal da Camada 1 é JSONL padrão ou o formato nativo do backend escolhido. Você pode sair a qualquer momento."},
    "faq.q10":{en:"How big can my org grow before hitting limits?", ja:"組織がどこまで大きくなるとリミットに到達しますか?", "zh-CN":"我的组织能扩展到多大才会触及上限?", ko:"조직이 얼마나 커지면 한계에 도달합니까?", es:"¿Hasta qué tamaño puede crecer mi organización antes de límites?", fr:"Jusqu'où mon organisation peut-elle grandir avant les limites ?", de:"Wie groß kann meine Organisation werden, bevor Grenzen greifen?", "pt-BR":"Até onde minha organização pode crescer antes de limites?"},
    "faq.a10":{en:"JSON backend handles ~10k users comfortably. Beyond that, switch to Mem0 + Qdrant/Pinecone or HindSight. The promotion engine scales with LLM tokens — budget 10–50 LLM calls per consolidation per cluster.", ja:"JSON バックエンドは約 10k ユーザまで快適。それ以上は Mem0 + Qdrant / Pinecone または HindSight へ切替。昇格エンジンは LLM トークンに比例 — クラスタ毎に 10〜50 LLM 呼出を見積もり。", "zh-CN":"JSON 后端约 10k 用户处理无压力。超过则切换 Mem0 + Qdrant/Pinecone 或 HindSight。晋升引擎随 LLM token 扩展 — 每集群预算 10〜50 次 LLM 调用。", ko:"JSON 백엔드는 약 10k 사용자까지 쾌적. 초과 시 Mem0 + Qdrant/Pinecone 또는 HindSight 로 전환. 승격 엔진은 LLM 토큰에 비례 — 클러스터당 10〜50 LLM 호출 예산.", es:"El backend JSON soporta cómodamente ~10k usuarios. Más allá, cambia a Mem0 + Qdrant/Pinecone o HindSight. El motor de promoción escala con tokens LLM — presupuesta 10–50 llamadas LLM por consolidación por cluster.", fr:"Le backend JSON gère ~10k utilisateurs aisément. Au-delà, passez à Mem0 + Qdrant/Pinecone ou HindSight. Le moteur de promotion évolue avec les tokens LLM — comptez 10–50 appels LLM par consolidation par cluster.", de:"Das JSON-Backend bewältigt ~10k Nutzer problemlos. Darüber hinaus auf Mem0 + Qdrant/Pinecone oder HindSight wechseln. Die Beförderungs-Engine skaliert mit LLM-Tokens — 10–50 LLM-Aufrufe pro Konsolidierung pro Cluster einplanen.", "pt-BR":"O backend JSON suporta ~10k usuários confortavelmente. Além disso, mude para Mem0 + Qdrant/Pinecone ou HindSight. O motor de promoção escala com tokens LLM — orce 10–50 chamadas LLM por consolidação por cluster."},
    "faq.q11":{en:"Can I use Praxia behind my own frontend (Next.js / mobile / Slack bot)?", ja:"独自フロントエンド (Next.js / モバイル / Slack ボット) の裏側で Praxia を使えますか?", "zh-CN":"我可以在自有前端(Next.js / 移动 / Slack 机器人)背后使用 Praxia 吗?", ko:"자체 프런트엔드 (Next.js / 모바일 / Slack 봇) 뒤에서 Praxia 를 사용할 수 있습니까?", es:"¿Puedo usar Praxia detrás de mi propio frontend (Next.js / móvil / Slack bot)?", fr:"Puis-je utiliser Praxia derrière mon propre frontend (Next.js / mobile / Slack bot) ?", de:"Kann ich Praxia hinter meinem eigenen Frontend (Next.js / Mobile / Slack-Bot) nutzen?", "pt-BR":"Posso usar o Praxia atrás do meu próprio frontend (Next.js / mobile / Slack bot)?"},
    "faq.a11":{en:"Yes — that's <strong>mode B</strong>. Two paths: embed the Python SDK directly if your backend is Python, or run <code>praxia serve</code> (FastAPI, 8 endpoints under <code>/api/v1</code>) and call it from any HTTP client. Same auth, RBAC, ACL, and audit log as the Streamlit UI. Setup recipe: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/deployment-modes.md\">deployment-modes.md</a>.", ja:"はい — <strong>mode B</strong>。2 経路: Python バックエンドなら SDK 直接埋込、または <code>praxia serve</code> (FastAPI、<code>/api/v1</code> 配下 8 エンドポイント) を任意 HTTP クライアントから呼出。Streamlit UI と同じ認証 / RBAC / ACL / 監査ログ。手順: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/deployment-modes.md\">deployment-modes.md</a>。", "zh-CN":"可以 — 即 <strong>mode B</strong>。两条路径:Python 后端则直接嵌入 SDK,或运行 <code>praxia serve</code>(FastAPI,<code>/api/v1</code> 下 8 个端点)并从任意 HTTP 客户端调用。与 Streamlit UI 同样的 auth / RBAC / ACL / 审计日志。配方:<a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/deployment-modes.md\">deployment-modes.md</a>。", ko:"네 — <strong>mode B</strong>. 두 경로: Python 백엔드면 SDK 직접 임베드, 또는 <code>praxia serve</code> (FastAPI, <code>/api/v1</code> 하위 8 엔드포인트) 를 임의 HTTP 클라이언트에서 호출. Streamlit UI 와 동일한 auth / RBAC / ACL / 감사 로그. 레시피: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/deployment-modes.md\">deployment-modes.md</a>.", es:"Sí — es el <strong>modo B</strong>. Dos caminos: incrusta el SDK Python si tu backend es Python, o ejecuta <code>praxia serve</code> (FastAPI, 8 endpoints bajo <code>/api/v1</code>) y llámalo desde cualquier cliente HTTP. Misma auth, RBAC, ACL y log de auditoría que la UI Streamlit. Receta: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/deployment-modes.md\">deployment-modes.md</a>.", fr:"Oui — c'est le <strong>mode B</strong>. Deux voies : intégrez le SDK Python directement si votre backend est Python, ou lancez <code>praxia serve</code> (FastAPI, 8 endpoints sous <code>/api/v1</code>) et appelez-le depuis n'importe quel client HTTP. Mêmes auth, RBAC, ACL, journal d'audit que l'UI Streamlit. Recette : <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/deployment-modes.md\">deployment-modes.md</a>.", de:"Ja — das ist <strong>Mode B</strong>. Zwei Wege: Python-SDK direkt einbetten, wenn dein Backend Python ist, oder <code>praxia serve</code> (FastAPI, 8 Endpunkte unter <code>/api/v1</code>) starten und von einem beliebigen HTTP-Client aufrufen. Gleiche Auth, RBAC, ACL und Audit-Log wie die Streamlit-UI. Anleitung: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/deployment-modes.md\">deployment-modes.md</a>.", "pt-BR":"Sim — é o <strong>modo B</strong>. Dois caminhos: embuta o SDK Python se seu backend for Python, ou rode <code>praxia serve</code> (FastAPI, 8 endpoints sob <code>/api/v1</code>) e chame de qualquer cliente HTTP. Mesma auth, RBAC, ACL e log de auditoria que a UI Streamlit. Receita: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/deployment-modes.md\">deployment-modes.md</a>."},
    "faq.q12":{en:"Does the user have to write to memory every time?", ja:"ユーザは毎回メモリに書込が必要ですか?", "zh-CN":"用户每次都需要写入记忆吗?", ko:"사용자는 매번 메모리에 써야 합니까?", es:"¿El usuario debe escribir en memoria cada vez?", fr:"L'utilisateur doit-il écrire en mémoire à chaque fois ?", de:"Muss der Nutzer jedes Mal in den Speicher schreiben?", "pt-BR":"O usuário precisa escrever na memória toda vez?"},
    "faq.a12":{en:"No. Personal memory accumulates implicitly during normal use. Per user, you can also flip <code>read_only</code> mode for sensitive sessions — writes are silently dropped, reads still work. Admins can lock the mode tenant-wide or per role.", ja:"いいえ。個人メモリは通常利用中に暗黙的に蓄積。機微セッションではユーザ毎に <code>read_only</code> へ切替可能 — 書込は黙って破棄、読込は動作。管理者がテナント全体やロール単位でロック可。", "zh-CN":"不需要。个人记忆在正常使用中隐式累积。敏感场景可按用户切换 <code>read_only</code> — 写入静默丢弃,读取仍可。管理员可在租户/角色级锁定。", ko:"아닙니다. 개인 메모리는 일반 이용 중 암시적으로 누적. 민감 세션은 사용자별 <code>read_only</code> 로 전환 가능 — 쓰기는 무음 폐기, 읽기는 동작. 관리자가 테넌트 / 역할 단위로 잠금 가능.", es:"No. La memoria personal se acumula implícitamente durante el uso normal. Por usuario también puedes cambiar a modo <code>read_only</code> para sesiones sensibles — las escrituras se descartan en silencio, las lecturas siguen funcionando. Los admins pueden bloquear el modo a nivel de tenant o rol.", fr:"Non. La mémoire personnelle s'accumule implicitement pendant l'usage normal. Par utilisateur, vous pouvez aussi basculer en mode <code>read_only</code> pour les sessions sensibles — les écritures sont silencieusement abandonnées, les lectures fonctionnent. Les admins peuvent verrouiller le mode au niveau tenant ou rôle.", de:"Nein. Persönlicher Speicher sammelt sich implizit während der normalen Nutzung an. Pro Nutzer kannst du auch in den <code>read_only</code>-Modus wechseln für sensible Sessions — Schreibvorgänge werden stillschweigend verworfen, Lesen funktioniert weiter. Admins können den Modus tenantweit oder pro Rolle sperren.", "pt-BR":"Não. A memória pessoal acumula implicitamente durante o uso normal. Por usuário você também pode alternar para o modo <code>read_only</code> em sessões sensíveis — escritas são descartadas silenciosamente, leituras seguem. Admins podem travar o modo no tenant ou por papel."},
    "faq.q13":{en:"How do I get a PowerPoint / Word output instead of just text?", ja:"テキストではなく PowerPoint / Word 出力を得るには?", "zh-CN":"怎么得到 PowerPoint / Word 输出而不仅是文本?", ko:"텍스트만이 아니라 PowerPoint / Word 출력을 얻으려면?", es:"¿Cómo obtengo salida PowerPoint / Word en vez de solo texto?", fr:"Comment obtenir une sortie PowerPoint / Word plutôt que du texte ?", de:"Wie bekomme ich PowerPoint / Word-Ausgabe statt nur Text?", "pt-BR":"Como obtenho saída PowerPoint / Word em vez de só texto?"},
    "faq.a13":{en:"Use <code>OutputFormatSkill</code> — it detects format hints in natural language (\"パワポで\" / \"as a Word doc\" / \"HTML please\") and renders via the matching exporter. CLI: <code>praxia export report.md slides.pptx</code>. Custom formats register via the <code>praxia.exporters</code> entry-point.", ja:"<code>OutputFormatSkill</code> を利用 — 自然言語ヒント (「パワポで」/ \"as a Word doc\" / \"HTML please\") を検出して該当エクスポータでレンダリング。CLI: <code>praxia export report.md slides.pptx</code>。独自形式は <code>praxia.exporters</code> entry-point で登録。", "zh-CN":"使用 <code>OutputFormatSkill</code> — 检测自然语言提示(「パワポで」/「as a Word doc」/「HTML please」)并经匹配的导出器渲染。CLI:<code>praxia export report.md slides.pptx</code>。自定义格式经 <code>praxia.exporters</code> 入口点注册。", ko:"<code>OutputFormatSkill</code> 사용 — 자연어 힌트 (「パワポで」/ \"as a Word doc\" / \"HTML please\") 감지하여 매칭 익스포터로 렌더링. CLI: <code>praxia export report.md slides.pptx</code>. 사용자 정의 형식은 <code>praxia.exporters</code> entry-point 등록.", es:"Usa <code>OutputFormatSkill</code> — detecta pistas de formato en lenguaje natural (\"パワポで\" / \"as a Word doc\" / \"HTML please\") y renderiza vía el exportador correspondiente. CLI: <code>praxia export report.md slides.pptx</code>. Formatos personalizados se registran vía el entry-point <code>praxia.exporters</code>.", fr:"Utilisez <code>OutputFormatSkill</code> — il détecte des indices de format en langage naturel (\"パワポで\" / \"as a Word doc\" / \"HTML please\") et rend via l'exportateur correspondant. CLI : <code>praxia export report.md slides.pptx</code>. Formats personnalisés via l'entry-point <code>praxia.exporters</code>.", de:"<code>OutputFormatSkill</code> nutzen — erkennt natürlichsprachliche Format-Hinweise (\"パワポで\" / \"as a Word doc\" / \"HTML please\") und rendert via passendem Exporter. CLI: <code>praxia export report.md slides.pptx</code>. Eigene Formate via <code>praxia.exporters</code>-Entry-Point.", "pt-BR":"Use <code>OutputFormatSkill</code> — detecta pistas de formato em linguagem natural (\"パワポで\" / \"as a Word doc\" / \"HTML please\") e renderiza via o exportador correspondente. CLI: <code>praxia export report.md slides.pptx</code>. Formatos próprios via entry-point <code>praxia.exporters</code>."},
    "faq.q14":{en:"Can I plug in a connector to a system you don't ship?", ja:"同梱されていないシステム向けコネクタを差し込めますか?", "zh-CN":"我能给你们没附带的系统接入连接器吗?", ko:"제공되지 않는 시스템용 커넥터를 연결할 수 있습니까?", es:"¿Puedo conectar un conector a un sistema que no incluyen?", fr:"Puis-je brancher un connecteur vers un système non livré ?", de:"Kann ich einen Konnektor zu einem nicht mitgelieferten System einbinden?", "pt-BR":"Posso conectar um conector para um sistema que vocês não fornecem?"},
    "faq.a14":{en:"Yes. The <code>Connector</code> protocol is two methods (<code>pull</code> / <code>push</code>) and ~50 lines. Per-user OAuth, ACL enforcement, and audit logging plug in for free. End-to-end Notion example: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/CUSTOM_CONNECTORS.md\">CUSTOM_CONNECTORS.md</a>.", ja:"はい。<code>Connector</code> プロトコルは 2 メソッド (<code>pull</code> / <code>push</code>) で約 50 行。ユーザ毎 OAuth・ACL 強制・監査ログが無償で組込まれる。Notion を例にしたエンドツーエンド: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/CUSTOM_CONNECTORS.md\">CUSTOM_CONNECTORS.md</a>。", "zh-CN":"可以。<code>Connector</code> 协议为两个方法(<code>pull</code> / <code>push</code>)约 50 行。用户级 OAuth、ACL 强制、审计日志免费集成。Notion 端到端示例:<a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/CUSTOM_CONNECTORS.md\">CUSTOM_CONNECTORS.md</a>。", ko:"네. <code>Connector</code> 프로토콜은 2 메서드 (<code>pull</code> / <code>push</code>) 약 50 줄. 사용자별 OAuth, ACL 강제, 감사 로그가 무료로 결합. Notion E2E 예시: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/CUSTOM_CONNECTORS.md\">CUSTOM_CONNECTORS.md</a>.", es:"Sí. El protocolo <code>Connector</code> son dos métodos (<code>pull</code> / <code>push</code>) y ~50 líneas. OAuth por usuario, aplicación ACL y log de auditoría se integran gratis. Ejemplo Notion end-to-end: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/CUSTOM_CONNECTORS.md\">CUSTOM_CONNECTORS.md</a>.", fr:"Oui. Le protocole <code>Connector</code> est deux méthodes (<code>pull</code> / <code>push</code>) et ~50 lignes. OAuth par utilisateur, application d'ACL et journal d'audit s'intègrent gratuitement. Exemple Notion end-to-end : <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/CUSTOM_CONNECTORS.md\">CUSTOM_CONNECTORS.md</a>.", de:"Ja. Das <code>Connector</code>-Protokoll besteht aus zwei Methoden (<code>pull</code> / <code>push</code>) und ~50 Zeilen. Pro-Nutzer-OAuth, ACL-Durchsetzung und Audit-Log werden kostenlos eingehängt. End-to-End-Notion-Beispiel: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/CUSTOM_CONNECTORS.md\">CUSTOM_CONNECTORS.md</a>.", "pt-BR":"Sim. O protocolo <code>Connector</code> são dois métodos (<code>pull</code> / <code>push</code>) e ~50 linhas. OAuth por usuário, aplicação de ACL e log de auditoria se integram de graça. Exemplo Notion ponta-a-ponta: <a href=\"https://github.com/praxia-dev/praxia/blob/main/docs/CUSTOM_CONNECTORS.md\">CUSTOM_CONNECTORS.md</a>."},
    "faq.q15":{en:"Is Gemma supported?", ja:"Gemma はサポートされますか?", "zh-CN":"支持 Gemma 吗?", ko:"Gemma 지원합니까?", es:"¿Soporta Gemma?", fr:"Gemma est-il supporté ?", de:"Wird Gemma unterstützt?", "pt-BR":"Gemma é suportado?"},
    "faq.a15":{en:"Yes. <code>gemma</code> / <code>gemma-2b</code> / <code>gemma-9b</code> / <code>gemma-27b</code> via local Ollama; <code>gemma-cloud</code> via Google Vertex AI. <code>PRAXIA_LOCAL_MODEL=gemma</code> makes <code>auto_detect()</code> fall back to Gemma instead of Qwen-local when no cloud key is set.", ja:"はい。<code>gemma</code> / <code>gemma-2b/9b/27b</code> はローカル Ollama、<code>gemma-cloud</code> は Google Vertex AI。<code>PRAXIA_LOCAL_MODEL=gemma</code> でクラウドキー未設定時の <code>auto_detect()</code> 落ち先を Qwen-local から Gemma に変更可能。", "zh-CN":"是的。<code>gemma</code> / <code>gemma-2b/9b/27b</code> 通过本地 Ollama;<code>gemma-cloud</code> 通过 Google Vertex AI。设置 <code>PRAXIA_LOCAL_MODEL=gemma</code> 可让 <code>auto_detect()</code> 在无云密钥时回落到 Gemma 而非 Qwen-local。", ko:"네. <code>gemma</code> / <code>gemma-2b/9b/27b</code> 는 로컬 Ollama; <code>gemma-cloud</code> 는 Google Vertex AI. <code>PRAXIA_LOCAL_MODEL=gemma</code> 로 클라우드 키 미설정 시 <code>auto_detect()</code> 의 폴백을 Qwen-local 에서 Gemma 로 전환 가능.", es:"Sí. <code>gemma</code> / <code>gemma-2b</code> / <code>gemma-9b</code> / <code>gemma-27b</code> vía Ollama local; <code>gemma-cloud</code> vía Google Vertex AI. <code>PRAXIA_LOCAL_MODEL=gemma</code> hace que <code>auto_detect()</code> caiga a Gemma en vez de Qwen-local cuando no hay clave cloud.", fr:"Oui. <code>gemma</code> / <code>gemma-2b/9b/27b</code> via Ollama local ; <code>gemma-cloud</code> via Google Vertex AI. <code>PRAXIA_LOCAL_MODEL=gemma</code> fait que <code>auto_detect()</code> bascule sur Gemma plutôt que Qwen-local quand aucune clé cloud n'est définie.", de:"Ja. <code>gemma</code> / <code>gemma-2b/9b/27b</code> via lokalem Ollama; <code>gemma-cloud</code> via Google Vertex AI. <code>PRAXIA_LOCAL_MODEL=gemma</code> lässt <code>auto_detect()</code> bei fehlender Cloud-Key auf Gemma statt Qwen-local zurückfallen.", "pt-BR":"Sim. <code>gemma</code> / <code>gemma-2b/9b/27b</code> via Ollama local; <code>gemma-cloud</code> via Google Vertex AI. <code>PRAXIA_LOCAL_MODEL=gemma</code> faz <code>auto_detect()</code> cair em Gemma em vez de Qwen-local quando não há chave de nuvem."},
    "faq.q16":{en:"How are OAuth tokens protected at rest?", ja:"OAuth トークンは保管時にどう保護されていますか?", "zh-CN":"OAuth 令牌静态如何保护?", ko:"OAuth 토큰은 보관 시 어떻게 보호됩니까?", es:"¿Cómo se protegen los tokens OAuth en reposo?", fr:"Comment les tokens OAuth sont-ils protégés au repos ?", de:"Wie werden OAuth-Tokens im Ruhezustand geschützt?", "pt-BR":"Como tokens OAuth são protegidos em repouso?"},
    "faq.a16":{en:"Envelope encryption: a fresh 256-bit DEK per token, AES-GCM payload encryption, and the DEK wrapped by a configurable <code>KmsAdapter</code>. 5 adapters ship: <code>local</code> (HKDF, dev), <code>aws</code> (AWS KMS CMK), <code>azure</code> (Key Vault Keys), <code>gcp</code> (Cloud KMS), <code>vault</code> (HashiCorp Transit). Master key never leaves the KMS / HSM. Switch with <code>PRAXIA_KMS_ADAPTER=aws</code>.", ja:"エンベロープ暗号化: トークン毎に 256bit DEK を新規生成、AES-GCM ペイロード暗号化、DEK は <code>KmsAdapter</code> で wrap。5 アダプタ同梱 — <code>local</code> (HKDF、開発用)、<code>aws</code> (AWS KMS CMK)、<code>azure</code> (Key Vault Keys)、<code>gcp</code> (Cloud KMS)、<code>vault</code> (HashiCorp Transit)。マスターキーは KMS / HSM 外に出ない。<code>PRAXIA_KMS_ADAPTER=aws</code> で切替。", "zh-CN":"信封加密:每个令牌一个新的 256 位 DEK,AES-GCM 载荷加密,DEK 由可配置的 <code>KmsAdapter</code> 包装。附 5 个适配器:<code>local</code>(HKDF,开发)、<code>aws</code>(AWS KMS CMK)、<code>azure</code>(Key Vault Keys)、<code>gcp</code>(Cloud KMS)、<code>vault</code>(HashiCorp Transit)。主密钥从不离开 KMS / HSM。用 <code>PRAXIA_KMS_ADAPTER=aws</code> 切换。", ko:"엔벨로프 암호화: 토큰마다 새 256bit DEK, AES-GCM 페이로드 암호화, DEK 는 구성 가능한 <code>KmsAdapter</code> 가 래핑. 5 어댑터 동봉 — <code>local</code> (HKDF, 개발), <code>aws</code> (AWS KMS CMK), <code>azure</code> (Key Vault Keys), <code>gcp</code> (Cloud KMS), <code>vault</code> (HashiCorp Transit). 마스터 키는 KMS / HSM 밖으로 나가지 않음. <code>PRAXIA_KMS_ADAPTER=aws</code> 로 전환.", es:"Cifrado envelope: una DEK fresca de 256 bits por token, payload AES-GCM, y la DEK envuelta por un <code>KmsAdapter</code> configurable. 5 adaptadores incluidos: <code>local</code> (HKDF, dev), <code>aws</code> (AWS KMS CMK), <code>azure</code> (Key Vault Keys), <code>gcp</code> (Cloud KMS), <code>vault</code> (HashiCorp Transit). La clave maestra nunca sale del KMS / HSM. Cambia con <code>PRAXIA_KMS_ADAPTER=aws</code>.", fr:"Chiffrement envelope : une DEK 256 bits fraîche par token, payload AES-GCM, DEK enveloppée par un <code>KmsAdapter</code> configurable. 5 adaptateurs livrés : <code>local</code> (HKDF, dev), <code>aws</code> (AWS KMS CMK), <code>azure</code> (Key Vault Keys), <code>gcp</code> (Cloud KMS), <code>vault</code> (HashiCorp Transit). La clé maîtresse ne quitte jamais le KMS / HSM. Basculez avec <code>PRAXIA_KMS_ADAPTER=aws</code>.", de:"Envelope-Verschlüsselung: ein frischer 256-bit-DEK pro Token, AES-GCM-Payload-Verschlüsselung, DEK von einem konfigurierbaren <code>KmsAdapter</code> gewrappt. 5 Adapter mitgeliefert: <code>local</code> (HKDF, Dev), <code>aws</code> (AWS KMS CMK), <code>azure</code> (Key Vault Keys), <code>gcp</code> (Cloud KMS), <code>vault</code> (HashiCorp Transit). Der Masterschlüssel verlässt nie das KMS / HSM. Mit <code>PRAXIA_KMS_ADAPTER=aws</code> umschalten.", "pt-BR":"Criptografia envelope: um DEK novo de 256 bits por token, payload AES-GCM, DEK encapsulado por um <code>KmsAdapter</code> configurável. 5 adaptadores: <code>local</code> (HKDF, dev), <code>aws</code> (AWS KMS CMK), <code>azure</code> (Key Vault Keys), <code>gcp</code> (Cloud KMS), <code>vault</code> (HashiCorp Transit). A chave mestra nunca sai do KMS / HSM. Troque com <code>PRAXIA_KMS_ADAPTER=aws</code>."},
    "faq.q17":{en:"Can I A/B test a new prompt before rolling it out?", ja:"ロールアウト前に新プロンプトを A/B テストできますか?", "zh-CN":"我可以在推广前 A/B 测试新提示吗?", ko:"롤아웃 전 새 프롬프트를 A/B 테스트할 수 있습니까?", es:"¿Puedo hacer A/B test de un nuevo prompt antes de lanzarlo?", fr:"Puis-je faire un test A/B d'un nouveau prompt avant le déploiement ?", de:"Kann ich einen neuen Prompt vor dem Rollout A/B-testen?", "pt-BR":"Posso testar A/B um novo prompt antes do rollout?"},
    "faq.a17":{en:"Yes — built into the OSS. Define an experiment with control / treatment variants, set traffic split, restrict the audience (roles / users / time window). Each user's assignment is deterministic (SHA-256 hash) so they always see the same variant during the experiment. Outcomes auto-track via the existing <code>record_outcome()</code> API. <code>praxia experiment results &lt;id&gt;</code> shows tentative winner.", ja:"はい — OSS に同梱。control / treatment 変種で実験定義、トラフィック分割、オーディエンス制限 (ロール / ユーザ / 期間)。各ユーザの割当は決定論的 (SHA-256 ハッシュ) なので実験中は同一変種を見ます。アウトカムは既存の <code>record_outcome()</code> API で自動追跡。<code>praxia experiment results &lt;id&gt;</code> で暫定 winner を表示。", "zh-CN":"可以 — 已内置于 OSS。定义 control / treatment 变体的实验、设置流量分配、限制受众(角色 / 用户 / 时间窗口)。每个用户的分配确定性(SHA-256 哈希),实验期内始终见同一变体。成果通过现有 <code>record_outcome()</code> API 自动追踪。<code>praxia experiment results &lt;id&gt;</code> 显示暂定 winner。", ko:"네 — OSS 에 내장. control / treatment 변종으로 실험 정의, 트래픽 분배 설정, 오디언스 제한 (역할 / 사용자 / 기간). 각 사용자 배정은 결정론적 (SHA-256 해시) — 실험 기간 내내 동일 변종 표시. 결과는 기존 <code>record_outcome()</code> API 로 자동 추적. <code>praxia experiment results &lt;id&gt;</code> 로 잠정 winner 표시.", es:"Sí — integrado en el OSS. Define un experimento con variantes control / treatment, establece división de tráfico, restringe audiencia (roles / usuarios / ventana). La asignación por usuario es determinista (hash SHA-256), siempre verá la misma variante durante el experimento. Los outcomes se rastrean automáticamente vía la API existente <code>record_outcome()</code>. <code>praxia experiment results &lt;id&gt;</code> muestra el ganador tentativo.", fr:"Oui — intégré dans l'OSS. Définissez une expérience avec variantes control / treatment, fixez la répartition du trafic, restreignez l'audience (rôles / utilisateurs / fenêtre). L'attribution par utilisateur est déterministe (hash SHA-256) — l'utilisateur voit toujours la même variante pendant l'expérience. Les résultats sont auto-suivis via l'API existante <code>record_outcome()</code>. <code>praxia experiment results &lt;id&gt;</code> affiche le gagnant provisoire.", de:"Ja — ins OSS integriert. Definiere ein Experiment mit Control / Treatment-Varianten, lege Traffic-Split fest, schränke Audience ein (Rollen / Nutzer / Zeitfenster). Die Zuordnung pro Nutzer ist deterministisch (SHA-256-Hash) — Nutzer sieht während des Experiments immer dieselbe Variante. Outcomes werden automatisch über die existierende <code>record_outcome()</code>-API verfolgt. <code>praxia experiment results &lt;id&gt;</code> zeigt den vorläufigen Gewinner.", "pt-BR":"Sim — embutido no OSS. Defina um experimento com variantes control / treatment, configure divisão de tráfego, restrinja audiência (papéis / usuários / janela). A atribuição por usuário é determinística (hash SHA-256) — o usuário sempre vê a mesma variante durante o experimento. Resultados são rastreados automaticamente via API existente <code>record_outcome()</code>. <code>praxia experiment results &lt;id&gt;</code> mostra o vencedor provisório."},
    "faq.q18":{en:"Can I use Praxia from Claude Desktop / Cursor over the network?", ja:"Claude Desktop / Cursor からネットワーク越しに Praxia を使えますか?", "zh-CN":"我能从 Claude Desktop / Cursor 通过网络使用 Praxia 吗?", ko:"Claude Desktop / Cursor 에서 네트워크 너머로 Praxia 를 사용할 수 있습니까?", es:"¿Puedo usar Praxia desde Claude Desktop / Cursor por red?", fr:"Puis-je utiliser Praxia depuis Claude Desktop / Cursor via le réseau ?", de:"Kann ich Praxia von Claude Desktop / Cursor übers Netzwerk nutzen?", "pt-BR":"Posso usar o Praxia a partir do Claude Desktop / Cursor pela rede?"},
    "faq.a18":{en:"Yes. Praxia is an MCP server in two flavors. <strong>Local</strong> (recommended for desktop): <code>praxia mcp serve</code> → configure Claude Desktop's <code>mcp.json</code> to spawn it via stdio. <strong>Remote</strong> (multi-host / team): run <code>praxia serve</code> and the MCP HTTP+SSE endpoints under <code>/api/v1/mcp</code> are available. Auth via API key, JWT, or a shared <code>X-MCP-Token</code>. Every business skill + multi-agent flow + memory search becomes an MCP tool automatically — no per-tool wiring required.", ja:"はい。Praxia は 2 種類の MCP サーバ。<strong>ローカル</strong> (デスクトップ推奨): <code>praxia mcp serve</code> → Claude Desktop の <code>mcp.json</code> に stdio 経由で spawn 設定。<strong>リモート</strong> (multi-host / チーム): <code>praxia serve</code> を実行し <code>/api/v1/mcp</code> の MCP HTTP+SSE エンドポイントを利用。認証は API キー / JWT / 共有 <code>X-MCP-Token</code>。全業務スキル + マルチエージェントフロー + メモリ検索が自動で MCP ツール化、個別配線不要。", "zh-CN":"可以。Praxia 提供两种 MCP 服务器。<strong>本地</strong>(桌面推荐):<code>praxia mcp serve</code> → 在 Claude Desktop 的 <code>mcp.json</code> 中以 stdio 方式 spawn。<strong>远程</strong>(多主机 / 团队):运行 <code>praxia serve</code>,<code>/api/v1/mcp</code> 下的 MCP HTTP+SSE 端点可用。认证通过 API 密钥、JWT 或共享 <code>X-MCP-Token</code>。每项业务技能 + 多代理流程 + 记忆搜索自动成为 MCP 工具,无需逐个配置。", ko:"네. Praxia 는 두 가지 MCP 서버 제공. <strong>로컬</strong> (데스크톱 권장): <code>praxia mcp serve</code> → Claude Desktop 의 <code>mcp.json</code> 에 stdio 로 spawn 설정. <strong>원격</strong> (멀티 호스트 / 팀): <code>praxia serve</code> 실행 후 <code>/api/v1/mcp</code> 하위 MCP HTTP+SSE 엔드포인트 이용. 인증은 API 키 / JWT / 공유 <code>X-MCP-Token</code>. 모든 업무 스킬 + 멀티에이전트 플로 + 메모리 검색이 자동으로 MCP 도구화 — 개별 배선 불필요.", es:"Sí. Praxia es servidor MCP en dos modalidades. <strong>Local</strong> (recomendado para desktop): <code>praxia mcp serve</code> → configura el <code>mcp.json</code> de Claude Desktop para spawn vía stdio. <strong>Remoto</strong> (multi-host / equipo): ejecuta <code>praxia serve</code> y los endpoints MCP HTTP+SSE bajo <code>/api/v1/mcp</code> están disponibles. Auth vía API key, JWT o <code>X-MCP-Token</code> compartido. Cada habilidad + flujo multi-agente + búsqueda de memoria se convierte en herramienta MCP automáticamente — sin cableado individual.", fr:"Oui. Praxia est un serveur MCP en deux variantes. <strong>Local</strong> (recommandé pour desktop) : <code>praxia mcp serve</code> → configurez le <code>mcp.json</code> de Claude Desktop pour spawner via stdio. <strong>Distant</strong> (multi-hôte / équipe) : exécutez <code>praxia serve</code> et les endpoints MCP HTTP+SSE sous <code>/api/v1/mcp</code> sont disponibles. Auth via clé API, JWT ou <code>X-MCP-Token</code> partagé. Chaque compétence métier + flux multi-agents + recherche mémoire devient un outil MCP automatiquement — pas de câblage par outil.", de:"Ja. Praxia ist MCP-Server in zwei Geschmacksrichtungen. <strong>Lokal</strong> (empfohlen für Desktop): <code>praxia mcp serve</code> → Claude Desktops <code>mcp.json</code> so konfigurieren, dass es via stdio gespawnt wird. <strong>Remote</strong> (Multi-Host / Team): <code>praxia serve</code> ausführen — die MCP-HTTP+SSE-Endpunkte unter <code>/api/v1/mcp</code> sind verfügbar. Auth via API-Key, JWT oder geteiltem <code>X-MCP-Token</code>. Jeder Business-Skill + Multi-Agent-Flow + Memory-Search wird automatisch zum MCP-Tool — keine Einzelverdrahtung nötig.", "pt-BR":"Sim. Praxia é servidor MCP em duas variantes. <strong>Local</strong> (recomendado para desktop): <code>praxia mcp serve</code> → configure o <code>mcp.json</code> do Claude Desktop para spawn via stdio. <strong>Remoto</strong> (multi-host / equipe): rode <code>praxia serve</code> e os endpoints MCP HTTP+SSE em <code>/api/v1/mcp</code> ficam disponíveis. Auth via API key, JWT ou <code>X-MCP-Token</code> compartilhado. Cada habilidade + fluxo multi-agente + busca de memória vira ferramenta MCP automaticamente — sem fiação por ferramenta."},
    "faq.q19":{en:"How do I prevent prompt changes from silently degrading quality?", ja:"プロンプト変更による品質劣化を黙って通さないには?", "zh-CN":"如何防止提示更改静默降低质量?", ko:"프롬프트 변경으로 인한 품질 저하를 어떻게 막습니까?", es:"¿Cómo evito que los cambios de prompt degraden silenciosamente la calidad?", fr:"Comment empêcher les changements de prompt de dégrader silencieusement la qualité ?", de:"Wie verhindere ich, dass Prompt-Änderungen die Qualität still verschlechtern?", "pt-BR":"Como evito que mudanças de prompt degradem silenciosamente a qualidade?"},
    "faq.a19":{en:"Run <code>tests/llm_eval/</code> in CI. Each PR runs 6 canonical cases (one per business skill) against the configured LLM and grades output with rubrics (keyword / structure / length / must-not-contain / LLM-as-judge). Scores below the committed baseline minus 5pt fail the build. Update the baseline with <code>--update-baselines</code> after a known-good change.", ja:"<code>tests/llm_eval/</code> を CI で実行。各 PR で業務スキル毎に 6 ケースを設定 LLM に投げ、ルーブリック (キーワード / 構造 / 長さ / NG ワード / LLM-as-judge) で採点。コミット済みベースラインから 5pt 超ドロップで build 失敗。良好な変更後は <code>--update-baselines</code> でベースライン更新。", "zh-CN":"在 CI 中运行 <code>tests/llm_eval/</code>。每个 PR 对每项业务技能跑 6 个规范用例,以评分卡(关键字 / 结构 / 长度 / 禁止包含 / LLM-as-judge)评分。低于已提交基线 5 分使构建失败。已知好变更后用 <code>--update-baselines</code> 更新基线。", ko:"<code>tests/llm_eval/</code> 를 CI 에서 실행. 각 PR 에서 업무 스킬별 6 케이스를 설정된 LLM 에 보내 루브릭 (키워드 / 구조 / 길이 / 금지어 / LLM-as-judge) 으로 채점. 커밋된 베이스라인 -5pt 이하로 빌드 실패. 좋은 변경 후 <code>--update-baselines</code> 로 베이스라인 갱신.", es:"Ejecuta <code>tests/llm_eval/</code> en CI. Cada PR corre 6 casos canónicos (uno por habilidad) contra el LLM configurado y califica con rúbricas (keyword / estructura / longitud / must-not-contain / LLM-as-judge). Puntuaciones bajo el baseline comprometido menos 5pt rompen el build. Actualiza el baseline con <code>--update-baselines</code> tras un cambio conocido bueno.", fr:"Exécutez <code>tests/llm_eval/</code> en CI. Chaque PR lance 6 cas canoniques (un par compétence) contre le LLM configuré et note la sortie selon des rubriques (keyword / structure / longueur / must-not-contain / LLM-as-judge). Les scores en dessous de la baseline committée -5pt font échouer le build. Mettez à jour la baseline avec <code>--update-baselines</code> après un changement connu bon.", de:"<code>tests/llm_eval/</code> im CI ausführen. Jeder PR führt 6 kanonische Fälle (einer pro Business-Skill) gegen das konfigurierte LLM aus und bewertet die Ausgabe mit Rubriken (Keyword / Struktur / Länge / Must-not-contain / LLM-as-judge). Punktzahlen unter der committeten Baseline minus 5pt lassen den Build scheitern. Baseline nach bekannt guter Änderung mit <code>--update-baselines</code> aktualisieren.", "pt-BR":"Rode <code>tests/llm_eval/</code> no CI. Cada PR roda 6 casos canônicos (um por habilidade) contra o LLM configurado e pontua com rubricas (palavra-chave / estrutura / tamanho / must-not-contain / LLM-as-judge). Pontuações abaixo da baseline commitada menos 5pt fazem o build falhar. Atualize a baseline com <code>--update-baselines</code> após uma mudança conhecida boa."},

    // ===== Persona card titles (7) ===================================
    "who.p1_title":              {en:"🏢 Information Systems / Platform team (300–5,000 employees)", ja:"🏢 情報システム / プラットフォーム部門 (300〜5,000 人規模)", "zh-CN":"🏢 信息系统 / 平台部门 (300-5,000 员工)", ko:"🏢 정보시스템 / 플랫폼 팀 (300-5,000 명 규모)", es:"🏢 Sistemas / Plataforma (300-5,000 empleados)", fr:"🏢 SI / Plateforme (300-5,000 employés)", de:"🏢 IT / Plattform-Team (300-5,000 Mitarbeiter)", "pt-BR":"🏢 TI / Plataforma (300-5,000 funcionários)"},
    "who.p2_title":              {en:"🏗️ Engineering / Product VP (50–500 in scope)", ja:"🏗️ エンジニアリング / プロダクト VP (50〜500 名スコープ)", "zh-CN":"🏗️ 工程 / 产品 VP (50-500 范围)", ko:"🏗️ 엔지니어링 / 제품 VP (50-500 명 범위)", es:"🏗️ VP Ingeniería / Producto (50-500)", fr:"🏗️ VP Ingénierie / Produit (50-500)", de:"🏗️ VP Engineering / Produkt (50-500)", "pt-BR":"🏗️ VP Engenharia / Produto (50-500)"},
    "who.p3_title":              {en:"⚖️ Legal / Compliance lead (regulated industry)", ja:"⚖️ 法務 / コンプライアンス責任者 (規制業界)", "zh-CN":"⚖️ 法务 / 合规负责人 (受监管行业)", ko:"⚖️ 법무 / 컴플라이언스 책임자 (규제 산업)", es:"⚖️ Líder Legal / Compliance (industria regulada)", fr:"⚖️ Responsable Juridique / Conformité (secteur régulé)", de:"⚖️ Leiter Recht / Compliance (regulierte Branche)", "pt-BR":"⚖️ Líder Jurídico / Compliance (setor regulado)"},
    "who.p4_title":              {en:"🧪 OSS / Research integrator (engineering team)", ja:"🧪 OSS / 研究開発インテグレータ (エンジニアリングチーム)", "zh-CN":"🧪 OSS / 研究集成方 (工程团队)", ko:"🧪 OSS / 연구 통합자 (엔지니어링 팀)", es:"🧪 Integrador OSS / I+D (equipo de ingeniería)", fr:"🧪 Intégrateur OSS / R&D (équipe ingénierie)", de:"🧪 OSS / R&D-Integrator (Engineering-Team)", "pt-BR":"🧪 Integrador OSS / P&D (equipe engenharia)"},
    "who.p5_title":              {en:"📈 Sales / Revenue Operations lead", ja:"📈 営業 / レベニューオペレーション責任者", "zh-CN":"📈 销售 / 收入运营负责人", ko:"📈 영업 / 레브뉴 오퍼레이션 책임자", es:"📈 Líder de Ventas / RevOps", fr:"📈 Responsable Ventes / RevOps", de:"📈 Vertriebs- / RevOps-Leiter", "pt-BR":"📈 Líder de Vendas / RevOps"},
    "who.p6_title":              {en:"🛒 Procurement / Supply Chain lead", ja:"🛒 購買 / サプライチェーン責任者", "zh-CN":"🛒 采购 / 供应链负责人", ko:"🛒 구매 / 공급망 책임자", es:"🛒 Líder Compras / Supply Chain", fr:"🛒 Responsable Achats / Supply Chain", de:"🛒 Einkaufs- / Supply-Chain-Leiter", "pt-BR":"🛒 Líder Compras / Supply Chain"},
    "who.p7_title":              {en:"📑 IP / Patent agent or in-house counsel", ja:"📑 知財 / 特許担当 (社内・社外)", "zh-CN":"📑 知识产权 / 专利代理 (内部 / 外部)", ko:"📑 IP / 특허 담당 (사내 / 사외)", es:"📑 Agente de Patentes / IP", fr:"📑 Conseil en IP / Brevets", de:"📑 IP- / Patentanwalt (intern oder extern)", "pt-BR":"📑 Agente de Patentes / IP"},

    // ===== OSS edge cards (6 short titles) ===========================
    "oss.c1":                    {en:"SSO + RBAC + audit are not paywalled", ja:"SSO + RBAC + 監査が有償化されていない", "zh-CN":"SSO + RBAC + 审计 不付费", ko:"SSO + RBAC + 감사 페이월 없음", es:"SSO + RBAC + auditoría sin paywall", fr:"SSO + RBAC + audit sans paywall", de:"SSO + RBAC + Audit ohne Paywall", "pt-BR":"SSO + RBAC + auditoria sem paywall"},
    "oss.c2":                    {en:"Memory format is not locked in", ja:"メモリ形式がロックインされない", "zh-CN":"记忆格式不锁定", ko:"메모리 포맷 잠금 없음", es:"Formato de memoria sin lock-in", fr:"Format mémoire sans verrouillage", de:"Speicherformat ohne Lock-in", "pt-BR":"Formato de memória sem lock-in"},
    "oss.c3":                    {en:"You can read every line", ja:"全コード読める", "zh-CN":"每一行代码可读", ko:"모든 코드 행 가독", es:"Puedes leer cada línea", fr:"Vous pouvez lire chaque ligne", de:"Sie können jede Zeile lesen", "pt-BR":"Você pode ler cada linha"},
    "oss.c4":                    {en:"Multi-LTM ensembles, not single-vendor", ja:"複数 LTM のアンサンブル運用 (単一ベンダーロックインなし)", "zh-CN":"多 LTM 集成,不是单供应商锁定", ko:"멀티 LTM 앙상블 (단일 벤더 종속 없음)", es:"Conjuntos multi-LTM, no un único proveedor", fr:"Ensembles multi-LTM, pas un seul fournisseur", de:"Multi-LTM-Ensembles, nicht Single-Vendor", "pt-BR":"Conjuntos multi-LTM, não vendor único"},
    "oss.c5":                    {en:"Per-user OAuth respects external ACL", ja:"ユーザ委譲 OAuth で連携先 ACL を尊重", "zh-CN":"每用户 OAuth 尊重外部 ACL", ko:"사용자별 OAuth 가 외부 ACL 존중", es:"OAuth por usuario respeta ACL externa", fr:"OAuth par utilisateur respecte l'ACL externe", de:"Benutzer-OAuth respektiert externe ACL", "pt-BR":"OAuth por usuário respeita ACL externa"},
    "oss.c6":                    {en:"Run fully on-prem with Gemma / Qwen", ja:"Gemma / Qwen で完全オンプレ動作", "zh-CN":"使用 Gemma / Qwen 完全本地部署", ko:"Gemma / Qwen 으로 완전 온프레미스 운용", es:"Funciona on-prem con Gemma / Qwen", fr:"Fonctionne 100% on-prem avec Gemma / Qwen", de:"Komplett on-prem mit Gemma / Qwen", "pt-BR":"Roda totalmente on-prem com Gemma / Qwen"},

    // ===== How-it-works step titles (4) ===============================
    "how.kicker":                {en:"How it works", ja:"仕組み", "zh-CN":"工作原理", ko:"작동 방식", es:"Cómo funciona", fr:"Comment ça marche", de:"Funktionsweise", "pt-BR":"Como funciona"},
    "how.h2":                    {en:"From individual usage to organizational standard — automatically.", ja:"個人利用から組織標準へ — 自動的に。", "zh-CN":"从个人使用到组织标准 — 自动完成。", ko:"개인 사용에서 조직 표준까지 — 자동으로.", es:"Del uso individual al estándar organizacional — automáticamente.", fr:"De l'usage individuel au standard organisationnel — automatiquement.", de:"Von individueller Nutzung zum Organisationsstandard — automatisch.", "pt-BR":"Do uso individual ao padrão organizacional — automaticamente."},
    "how.s1":                    {en:"You just work", ja:"普通に使うだけ", "zh-CN":"只管正常工作", ko:"평소대로 사용", es:"Solo trabajas normal", fr:"Travaillez normalement", de:"Sie arbeiten einfach", "pt-BR":"Você apenas trabalha"},
    "how.s2":                    {en:"Outcomes get attached", ja:"成果が紐付く", "zh-CN":"成果自动关联", ko:"성과가 연결됨", es:"Los resultados se vinculan", fr:"Les résultats s'attachent", de:"Ergebnisse werden zugeordnet", "pt-BR":"Resultados são anexados"},
    "how.s3":                    {en:"Nightly distillation", ja:"夜間に蒸留", "zh-CN":"夜间蒸馏", ko:"야간 증류", es:"Destilación nocturna", fr:"Distillation nocturne", de:"Nächtliche Destillation", "pt-BR":"Destilação noturna"},
    "how.s4":                    {en:"Living → frozen", ja:"ライブ → 凍結", "zh-CN":"活动 → 冻结", ko:"라이브 → 동결", es:"Vivo → congelado", fr:"Vivant → figé", de:"Lebend → eingefroren", "pt-BR":"Vivo → congelado"},

    // ===== Pricing tier names (3) =====================================
    "editions.kicker":           {en:"Editions", ja:"エディション", "zh-CN":"版本", ko:"에디션", es:"Ediciones", fr:"Éditions", de:"Editionen", "pt-BR":"Edições"},
    "editions.h2":               {en:"Self-host today, or join the hosted alpha.", ja:"今すぐセルフホスト、またはホスト版アルファに参加。", "zh-CN":"立即自托管,或加入托管版 alpha。", ko:"오늘 셀프호스트, 또는 호스트 알파에 참가.", es:"Self-host hoy, o únete al alpha hosted.", fr:"Self-host aujourd'hui, ou rejoignez l'alpha hébergé.", de:"Selbst hosten oder dem Hosted-Alpha beitreten.", "pt-BR":"Self-host hoje, ou junte-se ao alpha hospedado."},
    "editions.sub":              {en:"Praxia is fully open source under Apache 2.0 — every feature (SSO, RBAC, ACL, audit, OAuth, all skills, all connectors, AutonomousAgent) is in the OSS package. The hosted edition is invitation-only alpha while we tune onboarding; commercial pricing will be set at v1.0.", ja:"Praxia は Apache 2.0 で完全 OSS — 全機能 (SSO / RBAC / ACL / 監査 / OAuth / 全スキル / 全コネクタ / AutonomousAgent) を OSS に同梱。ホスト版はオンボーディング調整中の招待制アルファ — 商用料金は v1.0 で確定予定。", "zh-CN":"Praxia 在 Apache 2.0 下完全开源 — 所有功能(SSO / RBAC / ACL / 审计 / OAuth / 全部技能 / 全部连接器 / AutonomousAgent)都在 OSS 包中。托管版本目前为邀请制 alpha,正式商用定价将在 v1.0 设定。", ko:"Praxia 는 Apache 2.0 으로 완전 오픈소스 — 모든 기능 (SSO / RBAC / ACL / 감사 / OAuth / 모든 스킬 / 모든 커넥터 / AutonomousAgent) 이 OSS 에 포함. 호스트 에디션은 온보딩 튜닝 중인 초대 전용 알파 — 상용 요금은 v1.0 에서 확정.", es:"Praxia es totalmente open source bajo Apache 2.0 — todas las funciones (SSO / RBAC / ACL / auditoría / OAuth / todas las habilidades / todos los conectores / AutonomousAgent) están en el paquete OSS. La edición hosted es alpha solo por invitación mientras afinamos el onboarding; el precio comercial se fijará en v1.0.", fr:"Praxia est entièrement open source sous Apache 2.0 — chaque fonctionnalité (SSO / RBAC / ACL / audit / OAuth / toutes les compétences / tous les connecteurs / AutonomousAgent) est dans le paquet OSS. L'édition hébergée est en alpha sur invitation pendant que nous affinons l'onboarding ; les tarifs commerciaux seront fixés à la v1.0.", de:"Praxia ist vollständig Open Source unter Apache 2.0 — jede Funktion (SSO / RBAC / ACL / Audit / OAuth / alle Skills / alle Konnektoren / AutonomousAgent) ist im OSS-Paket. Die Hosted-Edition befindet sich im Invitation-only-Alpha, während wir das Onboarding feintunen; kommerzielle Preise werden zur v1.0 festgelegt.", "pt-BR":"Praxia é totalmente open source sob Apache 2.0 — toda funcionalidade (SSO / RBAC / ACL / auditoria / OAuth / todas as habilidades / todos os conectores / AutonomousAgent) está no pacote OSS. A edição hospedada é alpha apenas por convite enquanto ajustamos o onboarding; o preço comercial será definido na v1.0."},
    "editions.oss":              {en:"Open Source", ja:"オープンソース", "zh-CN":"开源", ko:"오픈 소스", es:"Open Source", fr:"Open Source", de:"Open Source", "pt-BR":"Open Source"},
    "editions.oss.sub":          {en:"forever · Apache 2.0", ja:"永久無料 · Apache 2.0", "zh-CN":"永久 · Apache 2.0", ko:"영구 · Apache 2.0", es:"para siempre · Apache 2.0", fr:"à vie · Apache 2.0", de:"für immer · Apache 2.0", "pt-BR":"para sempre · Apache 2.0"},
    "editions.oss.l1":           {en:"Full framework — every feature included, no paywall", ja:"全機能同梱 — paywall 無し", "zh-CN":"完整框架 — 所有功能,无 paywall", ko:"전체 프레임워크 — 모든 기능 포함, paywall 없음", es:"Framework completo — todas las funciones, sin paywall", fr:"Framework complet — toutes les fonctionnalités, aucun paywall", de:"Vollständiges Framework — alle Features, keine Paywall", "pt-BR":"Framework completo — todas as funcionalidades, sem paywall"},
    "editions.oss.l2":           {en:"Self-hosted on your infrastructure (cloud or air-gapped)", ja:"自社インフラでセルフホスト (クラウド / エアギャップ対応)", "zh-CN":"在您的基础设施上自托管(云或离线)", ko:"자체 인프라에서 셀프호스트 (클라우드 / 에어갭)", es:"Self-hosted en tu infraestructura (nube o air-gapped)", fr:"Auto-hébergé sur votre infrastructure (cloud ou air-gapped)", de:"Selbst gehostet auf eigener Infrastruktur (Cloud oder air-gapped)", "pt-BR":"Self-hosted na sua infraestrutura (nuvem ou air-gapped)"},
    "editions.oss.l3":           {en:"You run upgrades and operations", ja:"アップグレード・運用は自社で", "zh-CN":"由您负责升级和运维", ko:"업그레이드와 운영은 직접 수행", es:"Tú ejecutas upgrades y operación", fr:"Vous gérez upgrades et opérations", de:"Du betreibst Upgrades und Operationen", "pt-BR":"Você executa upgrades e operação"},
    "editions.oss.l4":           {en:"Community support (GitHub Discussions / Issues)", ja:"コミュニティサポート (GitHub Discussions / Issues)", "zh-CN":"社区支持(GitHub Discussions / Issues)", ko:"커뮤니티 지원 (GitHub Discussions / Issues)", es:"Soporte comunitario (GitHub Discussions / Issues)", fr:"Support communautaire (GitHub Discussions / Issues)", de:"Community-Support (GitHub Discussions / Issues)", "pt-BR":"Suporte comunitário (GitHub Discussions / Issues)"},
    "editions.oss.l5":           {en:"Apache 2.0 — commercial use, redistribution, embedding allowed", ja:"Apache 2.0 — 商用利用 / 再配布 / 組込み可", "zh-CN":"Apache 2.0 — 允许商用 / 再分发 / 嵌入", ko:"Apache 2.0 — 상용 / 재배포 / 임베드 허용", es:"Apache 2.0 — uso comercial, redistribución y embedding permitidos", fr:"Apache 2.0 — usage commercial, redistribution, intégration autorisés", de:"Apache 2.0 — kommerzielle Nutzung, Weitergabe, Einbettung erlaubt", "pt-BR":"Apache 2.0 — uso comercial, redistribuição e embedding permitidos"},
    "editions.oss.cta":          {en:"Install now", ja:"今すぐインストール", "zh-CN":"立即安装", ko:"지금 설치", es:"Instalar ahora", fr:"Installer maintenant", de:"Jetzt installieren", "pt-BR":"Instalar agora"},
    "editions.hosted":           {en:"Hosted (alpha)", ja:"ホスト版 (アルファ)", "zh-CN":"托管版 (alpha)", ko:"호스트 (알파)", es:"Hosted (alpha)", fr:"Hébergé (alpha)", de:"Hosted (Alpha)", "pt-BR":"Hospedado (alpha)"},
    "editions.hosted.price":     {en:"Invitation-only", ja:"招待制", "zh-CN":"仅限邀请", ko:"초대 전용", es:"Solo por invitación", fr:"Sur invitation", de:"Nur auf Einladung", "pt-BR":"Apenas por convite"},
    "editions.hosted.sub":       {en:"pricing TBD at v1.0 · waitlist open", ja:"v1.0 で価格決定 · 待機リスト受付中", "zh-CN":"v1.0 时定价 · 候补名单开放中", ko:"v1.0 에서 가격 결정 · 대기자 명단 모집 중", es:"precio TBD en v1.0 · lista de espera abierta", fr:"prix à définir en v1.0 · liste d'attente ouverte", de:"Preis bei v1.0 zu bestimmen · Warteliste offen", "pt-BR":"preço a definir na v1.0 · lista de espera aberta"},
    "editions.hosted.l1":        {en:"Same OSS framework — we run it for you", ja:"同じ OSS フレームワーク — 運用を当社が代行", "zh-CN":"同一 OSS 框架 — 由我们为您运维", ko:"동일 OSS 프레임워크 — 운영 대행", es:"Mismo framework OSS — lo operamos por ti", fr:"Même framework OSS — nous l'opérons pour vous", de:"Gleiches OSS-Framework — wir betreiben es für dich", "pt-BR":"Mesmo framework OSS — nós operamos para você"},
    "editions.hosted.l2":        {en:"Hosted infrastructure + automatic upgrades", ja:"ホスト型インフラ + 自動アップグレード", "zh-CN":"托管基础设施 + 自动升级", ko:"호스트 인프라 + 자동 업그레이드", es:"Infraestructura hosted + upgrades automáticos", fr:"Infrastructure hébergée + upgrades automatiques", de:"Hosted-Infrastruktur + automatische Upgrades", "pt-BR":"Infraestrutura hospedada + upgrades automáticos"},
    "editions.hosted.l3":        {en:"Onboarding session + best-practice templates", ja:"オンボーディングセッション + ベスプラテンプレ", "zh-CN":"上手会议 + 最佳实践模板", ko:"온보딩 세션 + 모범 사례 템플릿", es:"Sesión de onboarding + plantillas de mejores prácticas", fr:"Session d'onboarding + templates de bonnes pratiques", de:"Onboarding-Session + Best-Practice-Vorlagen", "pt-BR":"Sessão de onboarding + templates de boas práticas"},
    "editions.hosted.l4":        {en:"Selected pilots run free during alpha", ja:"アルファ期間中、選定パイロット案件は無償", "zh-CN":"alpha 期间精选试点免费", ko:"알파 기간 중 선정 파일럿 무료", es:"Pilotos seleccionados gratis durante alpha", fr:"Pilotes sélectionnés gratuits pendant l'alpha", de:"Ausgewählte Pilotprojekte sind während Alpha kostenlos", "pt-BR":"Pilotos selecionados gratuitos durante alpha"},
    "editions.hosted.l5":        {en:"Custom deployment (on-prem / VPC / air-gapped) negotiable per engagement", ja:"カスタム展開 (オンプレ / VPC / エアギャップ) は個別調整", "zh-CN":"定制部署(本地 / VPC / 离线)按合作协商", ko:"커스텀 배포 (온프레 / VPC / 에어갭) 는 건별 협상", es:"Despliegue personalizado (on-prem / VPC / air-gapped) negociable por engagement", fr:"Déploiement personnalisé (on-prem / VPC / air-gapped) négociable par engagement", de:"Custom-Deployment (on-prem / VPC / air-gapped) je Engagement verhandelbar", "pt-BR":"Deployment customizado (on-prem / VPC / air-gapped) negociável por engajamento"},
    "editions.hosted.note":      {en:"<strong>Alpha status:</strong> hosted backend is being stabilized. We onboard waitlist organizations in batches of ~10 as capacity allows. Need on-prem or compliance review? Mention it in the waitlist form and we'll coordinate.", ja:"<strong>アルファ段階:</strong> ホストバックエンドは現在安定化作業中。受入れ可能なキャパシティに応じて約 10 組織ずつ順次オンボーディング。オンプレやコンプラレビューが必要な場合は、待機リストフォームでお伝えください。", "zh-CN":"<strong>alpha 状态:</strong>托管后端仍在稳定中。按容量每批约 10 家组织接入候补名单。需要本地部署或合规审查?在候补名单表单中说明,我们会协调。", ko:"<strong>알파 상태:</strong> 호스트 백엔드는 안정화 작업 중. 가용 용량에 따라 약 10 개 조직씩 일괄 온보딩. 온프레미스 또는 컴플라이언스 검토 필요 시 대기자 폼에 명시 부탁드립니다.", es:"<strong>Estado alpha:</strong> el backend hosted se está estabilizando. Onboarding por lotes de ~10 organizaciones según capacidad. ¿Necesitas on-prem o revisión de compliance? Indícalo en el formulario de lista de espera y coordinamos.", fr:"<strong>Statut alpha :</strong> le backend hébergé est en cours de stabilisation. Onboarding par lots de ~10 organisations selon la capacité. Besoin d'on-prem ou de revue de conformité ? Mentionnez-le dans le formulaire de liste d'attente et nous coordonnerons.", de:"<strong>Alpha-Status:</strong> Hosted-Backend wird stabilisiert. Onboarding in Chargen von ~10 Organisationen je nach Kapazität. On-Prem oder Compliance-Review nötig? Im Warteliste-Formular erwähnen, wir koordinieren.", "pt-BR":"<strong>Status alpha:</strong> o backend hospedado está sendo estabilizado. Onboarding em lotes de ~10 organizações conforme capacidade. Precisa de on-prem ou revisão de compliance? Mencione no formulário da lista de espera e coordenamos."},
    "editions.hosted.cta":       {en:"Join waitlist", ja:"待機リストに登録", "zh-CN":"加入候补名单", ko:"대기자 명단 신청", es:"Unirse a la lista de espera", fr:"Rejoindre la liste d'attente", de:"Auf die Warteliste", "pt-BR":"Entrar na lista de espera"},
    "editions.foot":             {en:"Looking for OSS license interpretation, embedded use, or revenue share? See <a href=\"https://github.com/praxia-dev/praxia/blob/main/LICENSE\">LICENSE</a> and <a href=\"https://github.com/praxia-dev/praxia/blob/main/NOTICE.md\">NOTICE</a>.", ja:"OSS ライセンス解釈・組込み利用・レベニューシェアについては <a href=\"https://github.com/praxia-dev/praxia/blob/main/LICENSE\">LICENSE</a> と <a href=\"https://github.com/praxia-dev/praxia/blob/main/NOTICE.md\">NOTICE</a> を参照。", "zh-CN":"OSS 许可证解读 / 嵌入使用 / 收益分成,请参阅 <a href=\"https://github.com/praxia-dev/praxia/blob/main/LICENSE\">LICENSE</a> 与 <a href=\"https://github.com/praxia-dev/praxia/blob/main/NOTICE.md\">NOTICE</a>。", ko:"OSS 라이선스 해석 / 임베드 사용 / 수익 분배 관련은 <a href=\"https://github.com/praxia-dev/praxia/blob/main/LICENSE\">LICENSE</a> 와 <a href=\"https://github.com/praxia-dev/praxia/blob/main/NOTICE.md\">NOTICE</a> 참조.", es:"¿Buscas interpretación de licencia OSS, uso embebido o reparto de ingresos? Consulta <a href=\"https://github.com/praxia-dev/praxia/blob/main/LICENSE\">LICENSE</a> y <a href=\"https://github.com/praxia-dev/praxia/blob/main/NOTICE.md\">NOTICE</a>.", fr:"Vous cherchez l'interprétation de la licence OSS, l'usage embarqué ou le partage de revenus ? Consultez <a href=\"https://github.com/praxia-dev/praxia/blob/main/LICENSE\">LICENSE</a> et <a href=\"https://github.com/praxia-dev/praxia/blob/main/NOTICE.md\">NOTICE</a>.", de:"Auf der Suche nach OSS-Lizenzinterpretation, eingebetteter Nutzung oder Revenue Share? Siehe <a href=\"https://github.com/praxia-dev/praxia/blob/main/LICENSE\">LICENSE</a> und <a href=\"https://github.com/praxia-dev/praxia/blob/main/NOTICE.md\">NOTICE</a>.", "pt-BR":"Procurando interpretação de licença OSS, uso embutido ou revenue share? Veja <a href=\"https://github.com/praxia-dev/praxia/blob/main/LICENSE\">LICENSE</a> e <a href=\"https://github.com/praxia-dev/praxia/blob/main/NOTICE.md\">NOTICE</a>."},

    // ===== Where it fits =============================================
    "fit.kicker":                {en:"Where it fits", ja:"適合領域", "zh-CN":"适用场景", ko:"적합 영역", es:"Dónde encaja", fr:"Où ça s'inscrit", de:"Wo es passt", "pt-BR":"Onde se encaixa"},
    "fit.h2":                    {en:"What Praxia is best at.", ja:"Praxia が最も得意なこと。", "zh-CN":"Praxia 最擅长的领域。", ko:"Praxia 가 가장 잘하는 것.", es:"En qué Praxia es mejor.", fr:"Là où Praxia excelle.", de:"Worin Praxia am besten ist.", "pt-BR":"O que Praxia faz de melhor."},
    "fit.best":                  {en:"Best for…", ja:"最適なケース", "zh-CN":"最适合…", ko:"가장 적합한 경우", es:"Mejor para…", fr:"Idéal pour…", de:"Am besten für…", "pt-BR":"Melhor para…"},
    "fit.less":                  {en:"Less ideal when…", ja:"あまり向かないケース", "zh-CN":"不太适合…", ko:"적합하지 않은 경우", es:"Menos ideal cuando…", fr:"Moins idéal quand…", de:"Weniger ideal wenn…", "pt-BR":"Menos ideal quando…"},
    "fit.plays":                 {en:"Plays well with…", ja:"相性が良いもの", "zh-CN":"配合良好…", ko:"잘 어울리는 것", es:"Funciona bien con…", fr:"Compatible avec…", de:"Funktioniert gut mit…", "pt-BR":"Funciona bem com…"},

    // ===== Examples section ==========================================
    "ex.kicker":                 {en:"Concrete examples", ja:"具体例", "zh-CN":"具体示例", ko:"구체적 사례", es:"Ejemplos concretos", fr:"Exemples concrets", de:"Konkrete Beispiele", "pt-BR":"Exemplos concretos"},
    "ex.h2":                     {en:"One CLI invocation, real business output.", ja:"1 行の CLI 実行で、業務出力。", "zh-CN":"一条 CLI 命令,真实业务输出。", ko:"한 줄의 CLI 호출, 실제 업무 결과.", es:"Un comando CLI, salida de negocio real.", fr:"Une commande CLI, résultat métier réel.", de:"Ein CLI-Befehl, echte Geschäftsausgabe.", "pt-BR":"Um comando CLI, saída de negócio real."},

    // ===== UI tour ====================================================
    "uitour.kicker":             {en:"UI tour", ja:"UI ツアー", "zh-CN":"UI 演示", ko:"UI 투어", es:"Tour de UI", fr:"Visite de l'UI", de:"UI-Rundgang", "pt-BR":"Tour da UI"},
    "uitour.h2":                 {en:"The Streamlit dashboard at a glance.", ja:"Streamlit ダッシュボードの全体像。", "zh-CN":"Streamlit 仪表板一览。", ko:"Streamlit 대시보드 한눈에.", es:"El panel de Streamlit de un vistazo.", fr:"Le tableau de bord Streamlit en un coup d'œil.", de:"Das Streamlit-Dashboard auf einen Blick.", "pt-BR":"O painel Streamlit em um olhar."},

    // ===== Scenario picker (try-it section) ============================
    "scn.before":       {en:"Before", ja:"Before", "zh-CN":"Before", ko:"Before", es:"Antes", fr:"Avant", de:"Vorher", "pt-BR":"Antes"},
    "scn.after":        {en:"After",  ja:"After",  "zh-CN":"After",  ko:"After",  es:"Después", fr:"Après", de:"Nachher", "pt-BR":"Depois"},
    // Default task per role (the visible scenario when the page first loads / when a role chip is clicked)
    "scn.b2b-prep.title":  {en:"Pre-meeting research for a B2B account", ja:"B2B アカウントの事前リサーチ", "zh-CN":"B2B 客户的会前调研", ko:"B2B 어카운트 사전 리서치", es:"Investigación previa para una cuenta B2B", fr:"Recherche pré-rendez-vous pour un compte B2B", de:"Vorbereitungsrecherche für einen B2B-Account", "pt-BR":"Pesquisa pré-reunião para uma conta B2B"},
    "scn.b2b-prep.desc":   {en:"You're meeting Acme Manufacturing tomorrow at 14:00. Praxia ingests their IR, recent press, and your past wins → produces top-3 pain hypotheses, a 5-row FAQ with citations, and a proposal outline.", ja:"明日 14:00 に Acme Manufacturing と商談予定。Praxia が同社 IR・最近のプレス・過去成約を取り込み、仮説課題 TOP3 / 出典付き 5 行 FAQ / 提案アウトラインを生成。", "zh-CN":"明天 14:00 与 Acme Manufacturing 会面。Praxia 摄入其 IR、近期报道与过往成单 → 产出 TOP3 痛点假设、含引用的 5 行 FAQ 与提案大纲。", ko:"내일 14:00 Acme Manufacturing 미팅. Praxia 가 IR·최근 보도·과거 수주를 흡수해 가설 과제 TOP3 / 인용 있는 5 행 FAQ / 제안 개요를 생성.", es:"Mañana a las 14:00 reúnes con Acme Manufacturing. Praxia ingiere su IR, prensa reciente y tus deals ganados → produce top-3 hipótesis de pain, FAQ de 5 filas con citas y un outline de propuesta.", fr:"Demain 14h00 vous rencontrez Acme Manufacturing. Praxia avale leur IR, presse récente et vos deals gagnés → produit top-3 hypothèses de pain, FAQ 5 lignes avec citations et un plan de proposition.", de:"Du triffst Acme Manufacturing morgen 14:00. Praxia zieht deren IR, aktuelle Pressemitteilungen und deine Past-Wins ein → produziert Top-3-Pain-Hypothesen, 5-Zeilen-FAQ mit Zitaten und einen Vorschlagsentwurf.", "pt-BR":"Amanhã 14:00 você reúne com Acme Manufacturing. Praxia ingere o IR da empresa, imprensa recente e seus deals ganhos → produz top-3 hipóteses de dor, FAQ de 5 linhas com citações e um outline de proposta."},
    "scn.b2b-prep.extra":  {en:"Variation: attach .pdf board deck → Praxia auto-parses + cites it. Or pull straight from Salesforce → <code>praxia connector pull salesforce \"SELECT Id,Name FROM Account WHERE Id='001..'\"</code>.", ja:"バリエーション: .pdf 取締役会資料を添付 → Praxia が自動パース + 引用付き引用。または Salesforce 直接取得 → <code>praxia connector pull salesforce \"SELECT Id,Name FROM Account WHERE Id='001..'\"</code>。", "zh-CN":"变体:附加 .pdf 董事会材料 → Praxia 自动解析并引用。或直接从 Salesforce 拉取 → <code>praxia connector pull salesforce \"SELECT Id,Name FROM Account WHERE Id='001..'\"</code>。", ko:"변형: .pdf 이사회 자료 첨부 → Praxia 가 자동 파싱 + 인용. 또는 Salesforce 직접 풀 → <code>praxia connector pull salesforce \"SELECT Id,Name FROM Account WHERE Id='001..'\"</code>.", es:"Variación: adjunta .pdf del board deck → Praxia auto-parsea y cita. O extrae directamente de Salesforce → <code>praxia connector pull salesforce \"SELECT Id,Name FROM Account WHERE Id='001..'\"</code>.", fr:"Variation : joignez .pdf du board deck → Praxia auto-parse et cite. Ou tirez directement depuis Salesforce → <code>praxia connector pull salesforce \"SELECT Id,Name FROM Account WHERE Id='001..'\"</code>.", de:"Variante: .pdf-Board-Deck anhängen → Praxia parst und zitiert automatisch. Oder direkt aus Salesforce ziehen → <code>praxia connector pull salesforce \"SELECT Id,Name FROM Account WHERE Id='001..'\"</code>.", "pt-BR":"Variação: anexe .pdf do board deck → Praxia auto-parsa e cita. Ou puxe direto do Salesforce → <code>praxia connector pull salesforce \"SELECT Id,Name FROM Account WHERE Id='001..'\"</code>."},

    // ===== Persona body (p1-p7 × need/fit/result = 21 keys) ============
    "who.p1_need":   {en:"<strong>Need:</strong> Roll out AI tools across the org without handing every team a different vendor — and without paywalling SSO / RBAC / audit.", ja:"<strong>ニーズ:</strong> 組織全体で AI ツールを展開する際、各チームに別ベンダーを採用させず、かつ SSO / RBAC / 監査が paywall されない選択肢が必要。", "zh-CN":"<strong>需求:</strong> 全组织推广 AI 工具时不让各团队各用一家供应商,且 SSO / RBAC / 审计不被付费墙锁住。", ko:"<strong>요구:</strong> 조직 전체에 AI 도구를 도입하면서 팀마다 다른 벤더를 쓰지 않고, SSO / RBAC / 감사가 유료화되지 않는 선택지가 필요.", es:"<strong>Necesidad:</strong> Desplegar herramientas IA en toda la organización sin un vendor distinto por equipo y sin pagar extras por SSO / RBAC / auditoría.", fr:"<strong>Besoin :</strong> Déployer des outils IA à l'échelle de l'organisation sans un vendeur différent par équipe et sans paywall SSO / RBAC / audit.", de:"<strong>Bedarf:</strong> KI-Tools organisationsweit ausrollen, ohne dass jedes Team einen anderen Anbieter wählt, und ohne SSO / RBAC / Audit hinter einer Paywall.", "pt-BR":"<strong>Necessidade:</strong> Implantar ferramentas de IA em toda a organização sem um fornecedor diferente por equipe e sem paywall em SSO / RBAC / auditoria."},
    "who.p1_fit":    {en:"<strong>Fit:</strong> Auth + RBAC + ACL + per-user OAuth + audit log all in OSS, not behind an enterprise tier. Self-hostable on-prem or private cloud. Same code as the OSS, just operated by you.", ja:"<strong>適合:</strong> 認証 + RBAC + ACL + ユーザ毎 OAuth + 監査ログを OSS に内包、エンタープライズ tier 不要。オンプレ / プライベートクラウドでセルフホスト可能。OSS と同一コード、運用のみ自社。", "zh-CN":"<strong>匹配:</strong> 认证 + RBAC + ACL + 每用户 OAuth + 审计日志全部在 OSS 中,无需企业版。可在本地或私有云自托管。代码与 OSS 一致,仅运维由您负责。", ko:"<strong>적합성:</strong> 인증 + RBAC + ACL + 사용자별 OAuth + 감사 로그가 모두 OSS 에 포함, 엔터프라이즈 티어 불필요. 온프레 / 프라이빗 클라우드 셀프 호스트 가능. OSS 와 동일 코드, 운영만 자사가 담당.", es:"<strong>Encaje:</strong> Auth + RBAC + ACL + OAuth por usuario + log de auditoría todo en OSS, no detrás de un tier enterprise. Self-hosted on-prem o cloud privado. Mismo código del OSS, solo operado por ti.", fr:"<strong>Adéquation :</strong> Auth + RBAC + ACL + OAuth par utilisateur + journal d'audit, le tout dans l'OSS, pas derrière un tier entreprise. Auto-hébergeable on-prem ou cloud privé. Même code que l'OSS, uniquement opéré par vous.", de:"<strong>Passung:</strong> Auth + RBAC + ACL + Pro-Nutzer-OAuth + Audit-Log alle im OSS, nicht hinter einer Enterprise-Stufe. Selbst gehostet on-prem oder Private-Cloud. Gleicher Code wie im OSS, nur von dir betrieben.", "pt-BR":"<strong>Encaixe:</strong> Auth + RBAC + ACL + OAuth por usuário + log de auditoria, tudo no OSS, não atrás de um tier enterprise. Self-hosted on-prem ou nuvem privada. Mesmo código do OSS, apenas operado por você."},
    "who.p1_result": {en:"<strong>Typical year-1 result:</strong> 100 knowledge workers, <strong>~$1.25M net benefit</strong>, full audit trail, no per-seat licensing surprises.", ja:"<strong>1 年目の典型成果:</strong> 100 ナレッジワーカー、<strong>純利益 約 $1.25M</strong>、完全な監査トレイル、シート単価でのライセンスサプライズなし。", "zh-CN":"<strong>1 年期典型成果:</strong> 100 名知识工作者,<strong>净收益约 $1.25M</strong>,完整审计轨迹,无按席位许可意外。", ko:"<strong>1 년차 일반 성과:</strong> 지식 노동자 100 명, <strong>순이익 약 $1.25M</strong>, 완전한 감사 추적, 좌석 단가 라이선스 이벤트 없음.", es:"<strong>Resultado típico año 1:</strong> 100 knowledge workers, <strong>~$1.25M de beneficio neto</strong>, auditoría completa, sin sorpresas de licencia por puesto.", fr:"<strong>Résultat typique an 1 :</strong> 100 travailleurs du savoir, <strong>~1,25 M$ de bénéfice net</strong>, traçabilité complète, pas de surprise de licence par siège.", de:"<strong>Typisches Jahr-1-Ergebnis:</strong> 100 Knowledge Worker, <strong>~$1,25 Mio Nettonutzen</strong>, vollständiger Audit-Trail, keine Pro-Sitz-Lizenz-Überraschungen.", "pt-BR":"<strong>Resultado típico ano 1:</strong> 100 trabalhadores do conhecimento, <strong>~$1,25M de benefício líquido</strong>, auditoria completa, sem surpresas de licença por assento."},
    "who.p2_need":   {en:"<strong>Need:</strong> Senior architects' code-review and design intuition is the bottleneck. Junior PMs ramp in 12–18 months. Best practices live in Slack threads and one staff engineer's head.", ja:"<strong>ニーズ:</strong> シニアアーキテクトのコードレビュー / 設計直観がボトルネック。ジュニア PM の立ち上がり 12〜18 ヶ月。ベスプラが Slack スレッドや特定のスタッフエンジニアの頭の中に閉じ込められている。", "zh-CN":"<strong>需求:</strong> 资深架构师的代码审查/设计直觉成为瓶颈。初级 PM 上手需 12-18 个月。最佳实践埋在 Slack 线程或某位资深工程师脑中。", ko:"<strong>요구:</strong> 시니어 아키텍트의 코드 리뷰/설계 직관이 병목. 주니어 PM 안착에 12-18 개월. 베스트 프랙티스가 Slack 스레드나 특정 스태프 엔지니어의 머릿속에 갇힘.", es:"<strong>Necesidad:</strong> La intuición de revisión y diseño de los arquitectos senior es el cuello de botella. Los PM junior tardan 12-18 meses. Las buenas prácticas viven en hilos de Slack y en la cabeza de un staff engineer.", fr:"<strong>Besoin :</strong> L'intuition de revue de code/conception des architectes seniors est le goulot. Les PM juniors atteignent leur rythme en 12-18 mois. Les bonnes pratiques vivent dans des threads Slack et la tête d'un staff engineer.", de:"<strong>Bedarf:</strong> Die Code-Review- und Designintuition der Senior-Architekten ist der Engpass. Junior-PMs brauchen 12-18 Monate. Best Practices stecken in Slack-Threads und im Kopf einer Staff-Engineer.", "pt-BR":"<strong>Necessidade:</strong> A intuição de revisão de código/design dos arquitetos sêniores é o gargalo. PMs juniores levam 12-18 meses para se firmar. As boas práticas vivem em threads do Slack e na cabeça de um staff engineer."},
    "who.p2_fit":    {en:"<strong>Fit:</strong> DesignSkill + sleep-time consolidation distills \"how senior X reviews specs\" into reusable shared blocks. Markdown + git frozen layer fits existing PR review workflow.", ja:"<strong>適合:</strong> DesignSkill + Sleep-time Consolidation で「シニア X のレビュー観点」を再利用可能な共有ブロックに蒸留。Markdown + git の凍結層は既存 PR レビューワークフローに馴染む。", "zh-CN":"<strong>匹配:</strong> DesignSkill + Sleep-time Consolidation 把「资深 X 的评审视角」蒸馏为可复用的共享块。Markdown + git 冻结层契合现有 PR 评审工作流。", ko:"<strong>적합성:</strong> DesignSkill + Sleep-time Consolidation 으로 「시니어 X 의 리뷰 관점」을 재사용 가능한 공유 블록으로 증류. Markdown + git 동결 레이어가 기존 PR 리뷰 워크플로에 자연스럽게 맞음.", es:"<strong>Encaje:</strong> DesignSkill + Sleep-time Consolidation destilan \"cómo el senior X revisa specs\" en bloques compartidos reusables. La capa congelada Markdown + git encaja en el flujo de revisión de PR existente.", fr:"<strong>Adéquation :</strong> DesignSkill + Sleep-time Consolidation distillent « comment le senior X revoit les specs » en blocs partagés réutilisables. La couche figée Markdown + git s'intègre au flux de revue de PR existant.", de:"<strong>Passung:</strong> DesignSkill + Sleep-time-Consolidation destillieren wie Senior X Specs reviewt in wiederverwendbare geteilte Blöcke. Die Markdown + git Frozen-Layer passt in bestehende PR-Review-Workflows.", "pt-BR":"<strong>Encaixe:</strong> DesignSkill + Sleep-time Consolidation destilam \"como o sênior X revisa specs\" em blocos compartilhados reutilizáveis. A camada congelada Markdown + git se encaixa no fluxo de revisão de PR existente."},
    "who.p2_result": {en:"<strong>Typical year-1 result:</strong> Senior load 16h/wk → <strong>4h/wk</strong>, junior PM ramp <strong>6–9 months</strong>, NFR coverage 5–7 → <strong>15–20 axes</strong>.", ja:"<strong>1 年目の典型成果:</strong> シニア負荷 16h/週 → <strong>4h/週</strong>、ジュニア PM 立ち上がり <strong>6〜9 ヶ月</strong>、NFR カバー 5〜7 → <strong>15〜20 軸</strong>。", "zh-CN":"<strong>1 年期典型成果:</strong> 资深负荷 16h/周 → <strong>4h/周</strong>、初级 PM 上手 <strong>6-9 个月</strong>、NFR 覆盖 5-7 → <strong>15-20 维</strong>。", ko:"<strong>1 년차 일반 성과:</strong> 시니어 부하 16h/주 → <strong>4h/주</strong>, 주니어 PM 안착 <strong>6-9 개월</strong>, NFR 커버 5-7 → <strong>15-20 축</strong>.", es:"<strong>Resultado típico año 1:</strong> Carga senior 16h/sem → <strong>4h/sem</strong>, ramp PM junior <strong>6-9 meses</strong>, cobertura NFR 5-7 → <strong>15-20 ejes</strong>.", fr:"<strong>Résultat typique an 1 :</strong> Charge senior 16h/sem → <strong>4h/sem</strong>, montée en charge PM junior <strong>6-9 mois</strong>, couverture NFR 5-7 → <strong>15-20 axes</strong>.", de:"<strong>Typisches Jahr-1-Ergebnis:</strong> Senior-Auslastung 16h/Woche → <strong>4h/Woche</strong>, Junior-PM-Einarbeitung <strong>6-9 Monate</strong>, NFR-Abdeckung 5-7 → <strong>15-20 Achsen</strong>.", "pt-BR":"<strong>Resultado típico ano 1:</strong> Carga sênior 16h/sem → <strong>4h/sem</strong>, ramp PM júnior <strong>6-9 meses</strong>, cobertura NFR 5-7 → <strong>15-20 eixos</strong>."},
    "who.p3_need":   {en:"<strong>Need:</strong> 50–100 contracts/month bottlenecked on 2–3 people. Critical risk slips through under deadline. Need an <em>auditable</em> AI workflow with no vendor lock-in.", ja:"<strong>ニーズ:</strong> 月 50〜100 件の契約レビューが 2〜3 名に集中。期限プレッシャーで重大リスクの見落とし。ベンダーロックインなしの<em>監査可能</em>な AI ワークフローが必要。", "zh-CN":"<strong>需求:</strong> 每月 50-100 份合同集中在 2-3 人。期限压力下重大风险被漏看。需要无供应商锁定的<em>可审计</em> AI 工作流。", ko:"<strong>요구:</strong> 월 50-100 건의 계약이 2-3 명에 집중. 마감 압박으로 중대 리스크 누락. 벤더 락인 없는 <em>감사 가능한</em> AI 워크플로 필요.", es:"<strong>Necesidad:</strong> 50-100 contratos/mes embotellados en 2-3 personas. El riesgo crítico se escapa bajo presión. Se necesita un workflow IA <em>auditable</em>, sin vendor lock-in.", fr:"<strong>Besoin :</strong> 50-100 contrats/mois bloqués sur 2-3 personnes. Le risque critique passe sous deadline. Il faut un workflow IA <em>auditable</em> sans verrou fournisseur.", de:"<strong>Bedarf:</strong> 50-100 Verträge/Monat lasten auf 2-3 Personen. Kritisches Risiko rutscht unter Termindruck durch. Ein <em>auditierbarer</em> KI-Workflow ohne Vendor-Lock-in ist nötig.", "pt-BR":"<strong>Necessidade:</strong> 50-100 contratos/mês concentrados em 2-3 pessoas. Risco crítico escapa sob deadline. É preciso um workflow de IA <em>auditável</em> sem vendor lock-in."},
    "who.p3_fit":    {en:"<strong>Fit:</strong> LegalSkill (RACE framework) + read-only memory mode for sensitive contracts + per-user OAuth respects external system ACL + every action audited. Apache 2.0 means you can show the source to your auditors.", ja:"<strong>適合:</strong> LegalSkill (RACE フレーム) + 機微契約向け read-only メモリモード + ユーザ毎 OAuth で外部システム ACL 尊重 + 全アクション監査済み。Apache 2.0 なので監査人にソースを開示可能。", "zh-CN":"<strong>匹配:</strong> LegalSkill(RACE 框架)+ 敏感合同 read-only 记忆模式 + 每用户 OAuth 尊重外部系统 ACL + 所有动作审计。Apache 2.0 可向审计师展示源码。", ko:"<strong>적합성:</strong> LegalSkill (RACE 프레임) + 민감 계약용 read-only 메모리 모드 + 사용자별 OAuth 로 외부 시스템 ACL 준수 + 모든 액션 감사. Apache 2.0 이므로 감사인에게 소스 공개 가능.", es:"<strong>Encaje:</strong> LegalSkill (marco RACE) + modo memoria read-only para contratos sensibles + OAuth por usuario respeta ACL del sistema externo + cada acción auditada. Apache 2.0 permite mostrar el código a tus auditores.", fr:"<strong>Adéquation :</strong> LegalSkill (cadre RACE) + mode mémoire read-only pour contrats sensibles + OAuth par utilisateur respecte l'ACL du système externe + chaque action auditée. Apache 2.0 vous permet de montrer le code à vos auditeurs.", de:"<strong>Passung:</strong> LegalSkill (RACE-Framework) + Read-only-Speichermodus für sensible Verträge + Pro-Nutzer-OAuth respektiert externe System-ACL + jede Aktion auditiert. Apache 2.0 erlaubt es, Auditoren den Quellcode zu zeigen.", "pt-BR":"<strong>Encaixe:</strong> LegalSkill (framework RACE) + modo memória read-only para contratos sensíveis + OAuth por usuário respeita ACL do sistema externo + cada ação auditada. Apache 2.0 permite mostrar o código aos seus auditores."},
    "who.p3_result": {en:"<strong>Typical year-1 result:</strong> Per-contract review 60–90min → <strong>10–15min</strong>, throughput 50–80/mo → <strong>200–300/mo</strong>, critical-miss rate 5–10% → <strong>1–2%</strong>.", ja:"<strong>1 年目の典型成果:</strong> 1 件レビュー 60〜90 分 → <strong>10〜15 分</strong>、処理量 50〜80 件/月 → <strong>200〜300 件/月</strong>、重大見落とし率 5〜10% → <strong>1〜2%</strong>。", "zh-CN":"<strong>1 年期典型成果:</strong> 单合同审查 60-90 分钟 → <strong>10-15 分钟</strong>、处理量 50-80/月 → <strong>200-300/月</strong>、重大漏检率 5-10% → <strong>1-2%</strong>。", ko:"<strong>1 년차 일반 성과:</strong> 계약별 검토 60-90 분 → <strong>10-15 분</strong>, 처리량 50-80 건/월 → <strong>200-300 건/월</strong>, 중대 누락률 5-10% → <strong>1-2%</strong>.", es:"<strong>Resultado típico año 1:</strong> Revisión por contrato 60-90min → <strong>10-15min</strong>, throughput 50-80/mes → <strong>200-300/mes</strong>, tasa de error crítico 5-10% → <strong>1-2%</strong>.", fr:"<strong>Résultat typique an 1 :</strong> Revue par contrat 60-90min → <strong>10-15min</strong>, débit 50-80/mois → <strong>200-300/mois</strong>, taux d'erreur critique 5-10% → <strong>1-2%</strong>.", de:"<strong>Typisches Jahr-1-Ergebnis:</strong> Vertragsreview 60-90min → <strong>10-15min</strong>, Durchsatz 50-80/Monat → <strong>200-300/Monat</strong>, Critical-Miss-Rate 5-10% → <strong>1-2%</strong>.", "pt-BR":"<strong>Resultado típico ano 1:</strong> Revisão por contrato 60-90min → <strong>10-15min</strong>, throughput 50-80/mês → <strong>200-300/mês</strong>, taxa de falha crítica 5-10% → <strong>1-2%</strong>."},
    "who.p4_need":   {en:"<strong>Need:</strong> Build a domain-specific agent system over Mem0 / LangGraph / your-own-vector-DB without re-implementing auth, memory cycling, dashboards, exporters yourself.", ja:"<strong>ニーズ:</strong> Mem0 / LangGraph / 自前ベクトル DB の上にドメイン特化エージェントを作りたい — 認証 / メモリ循環 / ダッシュボード / エクスポータを 1 から実装したくない。", "zh-CN":"<strong>需求:</strong> 在 Mem0 / LangGraph / 自有向量 DB 之上构建领域特化代理 — 不想从零实现认证 / 记忆循环 / 仪表盘 / 导出器。", ko:"<strong>요구:</strong> Mem0 / LangGraph / 자체 벡터 DB 위에 도메인 특화 에이전트 구축 — 인증 / 메모리 순환 / 대시보드 / 익스포터를 0 부터 구현하고 싶지 않음.", es:"<strong>Necesidad:</strong> Construir un sistema agente específico de dominio sobre Mem0 / LangGraph / tu propio vector DB sin re-implementar auth, ciclo de memoria, dashboards, exportadores.", fr:"<strong>Besoin :</strong> Construire un système d'agent spécifique au domaine sur Mem0 / LangGraph / votre propre vector DB sans réimplémenter auth, cycle mémoire, dashboards, exportateurs.", de:"<strong>Bedarf:</strong> Ein domänenspezifisches Agentensystem auf Mem0 / LangGraph / eigener Vektor-DB bauen, ohne Auth, Memory-Cycling, Dashboards, Exporter selbst zu reimplementieren.", "pt-BR":"<strong>Necessidade:</strong> Construir um sistema de agente específico de domínio sobre Mem0 / LangGraph / seu próprio vector DB sem reimplementar auth, ciclo de memória, dashboards, exportadores."},
    "who.p4_fit":    {en:"<strong>Fit:</strong> 7 plugin types (~50 LoC each) — connectors, memory backends, parsers, exporters, OAuth providers, skills, flows. Use as a Python library, run <code>praxia serve</code> as a backend, embed in LangGraph. Apache 2.0.", ja:"<strong>適合:</strong> 7 種のプラグイン拡張ポイント (各 ~50 行) — コネクタ / メモリ backend / パーサ / エクスポータ / OAuth プロバイダ / スキル / フロー。Python ライブラリ利用、<code>praxia serve</code> バックエンドモード、LangGraph 内ノード埋込のいずれも可。Apache 2.0。", "zh-CN":"<strong>匹配:</strong> 7 类插件扩展点(各约 50 行)— 连接器/记忆后端/解析器/导出器/OAuth 提供方/技能/流程。可作 Python 库、运行 <code>praxia serve</code> 作后端、嵌入 LangGraph 节点。Apache 2.0。", ko:"<strong>적합성:</strong> 7 종 플러그인 확장점 (각 ~50 행) — 커넥터 / 메모리 백엔드 / 파서 / 익스포터 / OAuth 프로바이더 / 스킬 / 플로. Python 라이브러리 사용, <code>praxia serve</code> 백엔드 모드, LangGraph 노드 임베드 모두 가능. Apache 2.0.", es:"<strong>Encaje:</strong> 7 tipos de plugin (~50 LoC cada) — conectores, backends de memoria, parsers, exportadores, proveedores OAuth, habilidades, flujos. Úsalo como librería Python, ejecuta <code>praxia serve</code> como backend, embébelo en LangGraph. Apache 2.0.", fr:"<strong>Adéquation :</strong> 7 types de plugins (~50 LoC chacun) — connecteurs, backends mémoire, parsers, exportateurs, fournisseurs OAuth, compétences, flux. Utilisez comme bibliothèque Python, lancez <code>praxia serve</code> comme backend, intégrez dans LangGraph. Apache 2.0.", de:"<strong>Passung:</strong> 7 Plugin-Typen (~50 LoC je) — Konnektoren, Memory-Backends, Parser, Exporter, OAuth-Provider, Skills, Flows. Als Python-Bibliothek nutzen, <code>praxia serve</code> als Backend laufen lassen, in LangGraph einbetten. Apache 2.0.", "pt-BR":"<strong>Encaixe:</strong> 7 tipos de plugin (~50 LoC cada) — conectores, backends de memória, parsers, exportadores, provedores OAuth, habilidades, fluxos. Use como biblioteca Python, rode <code>praxia serve</code> como backend, embuta em LangGraph. Apache 2.0."},
    "who.p4_result": {en:"<strong>Typical day-30:</strong> domain skill PR'd, custom connector pip-installable, memory cycling working, <strong>~3 weeks ahead of building it from scratch</strong>.", ja:"<strong>30 日目の典型成果:</strong> ドメインスキル PR 提出、独自コネクタ pip 配布可、メモリ循環稼働、<strong>0 から構築するより約 3 週間先行</strong>。", "zh-CN":"<strong>30 天典型成果:</strong> 领域技能 PR 提交、自定义连接器 pip 安装、记忆循环运作,<strong>比从零构建提前约 3 周</strong>。", ko:"<strong>30 일차 일반 성과:</strong> 도메인 스킬 PR 제출, 커스텀 커넥터 pip 설치 가능, 메모리 순환 가동, <strong>0 부터 구축 대비 약 3 주 단축</strong>.", es:"<strong>Día 30 típico:</strong> habilidad de dominio en PR, conector personalizado pip-installable, ciclo de memoria funcionando, <strong>~3 semanas por delante de construir desde cero</strong>.", fr:"<strong>Jour 30 typique :</strong> compétence métier en PR, connecteur personnalisé pip-installable, cycle mémoire en marche, <strong>~3 semaines d'avance sur un build from-scratch</strong>.", de:"<strong>Tag 30 typisch:</strong> Domänen-Skill als PR, Custom-Konnektor pip-installierbar, Memory-Cycling läuft, <strong>~3 Wochen Vorsprung gegenüber From-Scratch-Build</strong>.", "pt-BR":"<strong>Dia 30 típico:</strong> habilidade de domínio em PR, conector personalizado pip-installable, ciclo de memória funcionando, <strong>~3 semanas à frente de construir do zero</strong>."},
    "who.p5_need":   {en:"<strong>Need:</strong> 50+ AEs prepping for meetings; quality of pre-call research is uneven. Senior reps win 2× more deals than juniors and the pattern doesn't transfer.", ja:"<strong>ニーズ:</strong> 50+ 名の AE が商談準備、事前リサーチの品質にばらつき。シニア営業はジュニアの 2 倍の受注率だが、そのパターンが伝承されない。", "zh-CN":"<strong>需求:</strong> 50+ AE 备会,预备调研质量参差。资深销售成单率是初级的 2 倍,但模式无法传承。", ko:"<strong>요구:</strong> AE 50+ 명이 미팅 준비, 사전 리서치 품질 편차 큼. 시니어 영업이 주니어 대비 2 배 수주율이나 패턴이 전수되지 않음.", es:"<strong>Necesidad:</strong> 50+ AEs preparan reuniones; la calidad de la investigación previa es irregular. Los reps senior ganan 2× más deals que los juniors y el patrón no se transfiere.", fr:"<strong>Besoin :</strong> 50+ AE préparent des rendez-vous ; la qualité de la recherche pré-appel est inégale. Les reps seniors gagnent 2× plus de deals que les juniors et le pattern ne se transfère pas.", de:"<strong>Bedarf:</strong> 50+ AEs bereiten Meetings vor; die Qualität der Vorrecherche schwankt. Senior-Reps gewinnen 2× mehr Deals als Juniors, das Muster überträgt sich nicht.", "pt-BR":"<strong>Necessidade:</strong> 50+ AEs preparando reuniões; a qualidade da pesquisa pré-call é irregular. Reps sêniores fecham 2× mais deals que juniores e o padrão não se transfere."},
    "who.p5_fit":    {en:"<strong>Fit:</strong> SalesSkill + memory cycling distills \"how senior X researches an account\" into shared playbooks. Salesforce + Slack + GitHub connectors feed real customer context. Per-user OAuth means each AE only sees their own pipeline.", ja:"<strong>適合:</strong> SalesSkill + メモリ循環で「シニア X のアカウント調査観点」を共有プレイブックに蒸留。Salesforce + Slack + GitHub コネクタで実顧客コンテキストを取得。ユーザ毎 OAuth で各 AE は自分のパイプラインのみ表示。", "zh-CN":"<strong>匹配:</strong> SalesSkill + 记忆循环将「资深 X 的客户调研观点」蒸馏为共享 playbook。Salesforce + Slack + GitHub 连接器提供真实客户上下文。每用户 OAuth 让每位 AE 仅见自己的 pipeline。", ko:"<strong>적합성:</strong> SalesSkill + 메모리 순환으로 「시니어 X 의 어카운트 리서치 관점」을 공유 플레이북으로 증류. Salesforce + Slack + GitHub 커넥터로 실고객 컨텍스트 수집. 사용자별 OAuth 로 각 AE 는 본인 파이프라인만 표시.", es:"<strong>Encaje:</strong> SalesSkill + ciclo de memoria destilan \"cómo el senior X investiga una cuenta\" en playbooks compartidos. Conectores Salesforce + Slack + GitHub aportan contexto real. OAuth por usuario hace que cada AE solo vea su pipeline.", fr:"<strong>Adéquation :</strong> SalesSkill + cycle mémoire distillent « comment le senior X étudie un compte » en playbooks partagés. Connecteurs Salesforce + Slack + GitHub apportent le contexte client réel. OAuth par utilisateur : chaque AE ne voit que son pipeline.", de:"<strong>Passung:</strong> SalesSkill + Memory-Cycling destillieren wie Senior X einen Account recherchiert in geteilte Playbooks. Salesforce + Slack + GitHub-Konnektoren liefern echten Kundenkontext. Pro-Nutzer-OAuth: jeder AE sieht nur die eigene Pipeline.", "pt-BR":"<strong>Encaixe:</strong> SalesSkill + ciclo de memória destilam \"como o sênior X pesquisa uma conta\" em playbooks compartilhados. Conectores Salesforce + Slack + GitHub trazem contexto real do cliente. OAuth por usuário faz cada AE ver só seu pipeline."},
    "who.p5_result": {en:"<strong>Typical year-1 result:</strong> AE prep time 6h → <strong>1h</strong>, win rate gap senior↔junior <strong>−40%</strong>, every account has full org-memory continuity.", ja:"<strong>1 年目の典型成果:</strong> AE 商談準備 6h → <strong>1h</strong>、シニア↔ジュニアの受注率ギャップ <strong>−40%</strong>、全アカウントに組織メモリの継続性。", "zh-CN":"<strong>1 年期典型成果:</strong> AE 备会 6h → <strong>1h</strong>、资深↔初级胜率差 <strong>−40%</strong>、每个客户都有完整的组织记忆延续。", ko:"<strong>1 년차 일반 성과:</strong> AE 미팅 준비 6h → <strong>1h</strong>, 시니어↔주니어 수주율 격차 <strong>−40%</strong>, 모든 어카운트에 조직 메모리 연속성.", es:"<strong>Resultado típico año 1:</strong> Tiempo prep AE 6h → <strong>1h</strong>, brecha de win rate senior↔junior <strong>−40%</strong>, cada cuenta con continuidad de memoria org.", fr:"<strong>Résultat typique an 1 :</strong> Temps de prep AE 6h → <strong>1h</strong>, écart de win rate senior↔junior <strong>−40%</strong>, chaque compte avec continuité de mémoire org.", de:"<strong>Typisches Jahr-1-Ergebnis:</strong> AE-Vorbereitungszeit 6h → <strong>1h</strong>, Win-Rate-Lücke Senior↔Junior <strong>−40%</strong>, jeder Account mit voller Org-Memory-Kontinuität.", "pt-BR":"<strong>Resultado típico ano 1:</strong> Tempo de prep do AE 6h → <strong>1h</strong>, gap de win rate sênior↔júnior <strong>−40%</strong>, cada conta com continuidade de memória org."},
    "who.p6_need":   {en:"<strong>Need:</strong> Supplier evaluation buried in Excel + email; quality varies by buyer. ESG / geopolitics risk discovery is ad-hoc.", ja:"<strong>ニーズ:</strong> サプライヤー評価が Excel + メールに散在、バイヤーによって品質ばらつき。ESG / 地政学リスクの発見は場当たり的。", "zh-CN":"<strong>需求:</strong> 供应商评估埋在 Excel + 邮件中,买家不同质量参差。ESG/地缘政治风险发现靠临时。", ko:"<strong>요구:</strong> 공급자 평가가 Excel + 메일에 흩어져 있고 바이어에 따라 품질 편차. ESG / 지정학 리스크 발견은 즉흥적.", es:"<strong>Necesidad:</strong> Evaluación de proveedores enterrada en Excel + email; calidad varía por comprador. Descubrimiento de riesgo ESG / geopolítica es ad-hoc.", fr:"<strong>Besoin :</strong> Évaluation fournisseurs enfouie dans Excel + email ; la qualité varie selon l'acheteur. La détection de risque ESG / géopolitique est ad-hoc.", de:"<strong>Bedarf:</strong> Lieferantenbewertung in Excel + E-Mail vergraben, Qualität schwankt pro Einkäufer. ESG-/Geopolitik-Risikoerkennung ist ad-hoc.", "pt-BR":"<strong>Necessidade:</strong> Avaliação de fornecedores enterrada em Excel + email; qualidade varia por comprador. Descoberta de risco ESG / geopolítica é ad-hoc."},
    "who.p6_fit":    {en:"<strong>Fit:</strong> PurchasingSkill + frozen layer for veteran buyer's TCO/QCDS frameworks. kintone + SharePoint connectors pull supplier DBs and RFQ responses. Read-only mode for strategic supplier info.", ja:"<strong>適合:</strong> PurchasingSkill + 凍結層でベテランバイヤーの TCO/QCDS フレームを永続化。kintone + SharePoint コネクタでサプライヤー DB / RFQ 回答書を取得。戦略サプライヤー情報は read-only モードで保護。", "zh-CN":"<strong>匹配:</strong> PurchasingSkill + 冻结层永久保存资深买家 TCO/QCDS 框架。kintone + SharePoint 连接器拉取供应商 DB / RFQ 响应。战略供应商信息以 read-only 模式保护。", ko:"<strong>적합성:</strong> PurchasingSkill + 동결 레이어로 베테랑 바이어 TCO/QCDS 프레임 영속화. kintone + SharePoint 커넥터로 공급자 DB / RFQ 응답 수집. 전략 공급자 정보는 read-only 모드로 보호.", es:"<strong>Encaje:</strong> PurchasingSkill + capa congelada para los marcos TCO/QCDS del comprador veterano. Conectores kintone + SharePoint extraen DBs de proveedores y respuestas RFQ. Modo read-only para info de proveedores estratégicos.", fr:"<strong>Adéquation :</strong> PurchasingSkill + couche figée pour les cadres TCO/QCDS de l'acheteur vétéran. Connecteurs kintone + SharePoint pour DB fournisseurs et réponses RFQ. Mode read-only pour les infos de fournisseurs stratégiques.", de:"<strong>Passung:</strong> PurchasingSkill + Frozen-Layer für TCO/QCDS-Frameworks des Veteran-Einkäufers. kintone- + SharePoint-Konnektoren ziehen Lieferanten-DBs und RFQ-Antworten. Read-only-Modus für strategische Lieferanteninfos.", "pt-BR":"<strong>Encaixe:</strong> PurchasingSkill + camada congelada para os frameworks TCO/QCDS do comprador veterano. Conectores kintone + SharePoint puxam DBs de fornecedores e respostas RFQ. Modo read-only para info de fornecedores estratégicos."},
    "who.p6_result": {en:"<strong>Typical year-1 result:</strong> 30-supplier eval 3-4wk → <strong>3-5 days</strong>, hidden cost discovery <strong>+30%</strong>, single-source risk caught <strong>+5×</strong>.", ja:"<strong>1 年目の典型成果:</strong> 30 社評価 3〜4 週 → <strong>3〜5 営業日</strong>、隠れコスト発見 <strong>+30%</strong>、単一供給リスク発見 <strong>+5 倍</strong>。", "zh-CN":"<strong>1 年期典型成果:</strong> 30 家供应商评估 3-4 周 → <strong>3-5 个工作日</strong>、隐藏成本发现 <strong>+30%</strong>、单一供应风险发现 <strong>+5 倍</strong>。", ko:"<strong>1 년차 일반 성과:</strong> 30 사 평가 3-4 주 → <strong>3-5 영업일</strong>, 숨은 원가 발견 <strong>+30%</strong>, 단일 공급 리스크 적발 <strong>+5 배</strong>.", es:"<strong>Resultado típico año 1:</strong> Evaluación 30 proveedores 3-4 sem → <strong>3-5 días</strong>, descubrimiento de costo oculto <strong>+30%</strong>, riesgo single-source detectado <strong>+5×</strong>.", fr:"<strong>Résultat typique an 1 :</strong> Évaluation 30 fournisseurs 3-4 sem → <strong>3-5 jours</strong>, découverte de coût caché <strong>+30%</strong>, risque single-source détecté <strong>+5×</strong>.", de:"<strong>Typisches Jahr-1-Ergebnis:</strong> 30-Lieferanten-Bewertung 3-4 Wochen → <strong>3-5 Tage</strong>, versteckte Kosten gefunden <strong>+30%</strong>, Single-Source-Risiko erkannt <strong>+5×</strong>.", "pt-BR":"<strong>Resultado típico ano 1:</strong> Avaliação 30 fornecedores 3-4 sem → <strong>3-5 dias</strong>, descoberta de custo oculto <strong>+30%</strong>, risco single-source detectado <strong>+5×</strong>."},
    "who.p7_need":   {en:"<strong>Need:</strong> Prior-art search + invention disclosure form review costs 30-50万円/case to outside counsel. Pre-filing confidentiality is critical.", ja:"<strong>ニーズ:</strong> 先行技術調査 + 発明提案書レビューに 1 件 30〜50 万円を弁理士費用として支払い。出願前の機密性確保が極めて重要。", "zh-CN":"<strong>需求:</strong> 先行技术检索 + 发明披露书审查每案花费 30-50 万日元给外部代理。出申请前保密至关重要。", ko:"<strong>요구:</strong> 선행기술 조사 + 발명 제안서 검토에 건당 30-50 만엔의 변리사 비용. 출원 전 기밀 유지가 필수.", es:"<strong>Necesidad:</strong> Búsqueda prior-art + revisión de invention disclosure cuesta 30-50万円/caso al outside counsel. La confidencialidad pre-presentación es crítica.", fr:"<strong>Besoin :</strong> Recherche d'antériorité + revue de fiche d'invention coûte 30-50万円/cas en conseil externe. La confidentialité pré-dépôt est critique.", de:"<strong>Bedarf:</strong> Stand-der-Technik-Recherche + Invention-Disclosure-Review kostet 30-50 万円/Fall an externe Anwälte. Pre-Filing-Vertraulichkeit ist kritisch.", "pt-BR":"<strong>Necessidade:</strong> Busca de anterioridade + revisão de invention disclosure custa 30-50万円/caso para outside counsel. Confidencialidade pré-protocolo é crítica."},
    "who.p7_fit":    {en:"<strong>Fit:</strong> PatentSkill (5-step framework) + Box / SharePoint connectors with strict ACL on inventor folders + read-only memory mode + audit trail. Bar-association compliance baked into the skill prompt.", ja:"<strong>適合:</strong> PatentSkill (5 ステップフレーム) + Box / SharePoint コネクタで発明者フォルダに厳格 ACL + read-only メモリモード + 監査ログ。弁理士法遵守をスキルプロンプトに組込済。", "zh-CN":"<strong>匹配:</strong> PatentSkill(5 步框架)+ Box / SharePoint 连接器对发明人文件夹严格 ACL + read-only 记忆模式 + 审计日志。弁理士法遵守内置于技能提示词。", ko:"<strong>적합성:</strong> PatentSkill (5 단계 프레임) + Box / SharePoint 커넥터에서 발명자 폴더에 엄격 ACL + read-only 메모리 모드 + 감사 로그. 변리사법 준수를 스킬 프롬프트에 내장.", es:"<strong>Encaje:</strong> PatentSkill (marco 5 pasos) + conectores Box / SharePoint con ACL estricta en carpetas de inventor + modo memoria read-only + auditoría. Cumplimiento del bar association integrado en el prompt de la skill.", fr:"<strong>Adéquation :</strong> PatentSkill (cadre 5 étapes) + connecteurs Box / SharePoint avec ACL stricte sur les dossiers d'inventeur + mode mémoire read-only + journal d'audit. Conformité au barreau intégrée dans le prompt de la compétence.", de:"<strong>Passung:</strong> PatentSkill (5-Schritte-Framework) + Box / SharePoint-Konnektoren mit strikter ACL auf Erfinderordnern + Read-only-Speichermodus + Audit-Log. Anwaltskammer-Compliance fest im Skill-Prompt eingebaut.", "pt-BR":"<strong>Encaixe:</strong> PatentSkill (framework 5 passos) + conectores Box / SharePoint com ACL estrita em pastas de inventor + modo memória read-only + log de auditoria. Conformidade com a ordem dos advogados embutida no prompt da skill."},
    "who.p7_result": {en:"<strong>Typical year-1 result:</strong> Per-case 1-2 days → <strong>2-4 hours</strong>, external-counsel fees <strong>−50-70%</strong>, cross-domain prior art catches <strong>+3×</strong>.", ja:"<strong>1 年目の典型成果:</strong> 1 件 1〜2 日 → <strong>2〜4 時間</strong>、弁理士費用 <strong>−50〜70%</strong>、ドメイン横断の先行技術発見 <strong>+3 倍</strong>。", "zh-CN":"<strong>1 年期典型成果:</strong> 单案 1-2 天 → <strong>2-4 小时</strong>、外部代理费 <strong>−50-70%</strong>、跨域先行技术发现 <strong>+3 倍</strong>。", ko:"<strong>1 년차 일반 성과:</strong> 건당 1-2 일 → <strong>2-4 시간</strong>, 변리사 비용 <strong>−50-70%</strong>, 도메인 횡단 선행기술 발견 <strong>+3 배</strong>.", es:"<strong>Resultado típico año 1:</strong> Por caso 1-2 días → <strong>2-4 horas</strong>, honorarios outside counsel <strong>−50-70%</strong>, prior art cross-domain detectado <strong>+3×</strong>.", fr:"<strong>Résultat typique an 1 :</strong> Par cas 1-2 jours → <strong>2-4 heures</strong>, honoraires outside counsel <strong>−50-70%</strong>, prior art cross-domaine détecté <strong>+3×</strong>.", de:"<strong>Typisches Jahr-1-Ergebnis:</strong> Pro Fall 1-2 Tage → <strong>2-4 Stunden</strong>, Outside-Counsel-Gebühren <strong>−50-70%</strong>, domänenübergreifender Stand der Technik erkannt <strong>+3×</strong>.", "pt-BR":"<strong>Resultado típico ano 1:</strong> Por caso 1-2 dias → <strong>2-4 horas</strong>, honorários outside counsel <strong>−50-70%</strong>, prior art cross-domain detectado <strong>+3×</strong>."},

    // ===== OSS edge bodies (c1-c9) =====================================
    "oss.c1.body": {en:"OIDC SSO (Google / Microsoft / Okta / GitHub / Keycloak) is in the OSS. Most agent frameworks ship without it; most agent platforms paywall it. Praxia treats it as table stakes.", ja:"OIDC SSO (Google / Microsoft / Okta / GitHub / Keycloak) を OSS に同梱。多くのエージェント FW は搭載せず、多くのエージェント基盤は paywall する。Praxia は標準装備。", "zh-CN":"OIDC SSO(Google / Microsoft / Okta / GitHub / Keycloak)已在 OSS 中。多数代理 FW 不附带,多数代理平台付费。Praxia 视为标准。", ko:"OIDC SSO (Google / Microsoft / Okta / GitHub / Keycloak) 가 OSS 에 포함. 대부분의 에이전트 FW 는 제공하지 않고, 대부분의 에이전트 플랫폼은 유료. Praxia 는 기본 탑재.", es:"OIDC SSO (Google / Microsoft / Okta / GitHub / Keycloak) está en el OSS. La mayoría de frameworks no lo trae; la mayoría de plataformas lo cobra. Praxia lo trata como base.", fr:"OIDC SSO (Google / Microsoft / Okta / GitHub / Keycloak) est dans l'OSS. La plupart des frameworks ne l'embarquent pas ; la plupart des plateformes le facturent. Praxia le considère comme standard.", de:"OIDC SSO (Google / Microsoft / Okta / GitHub / Keycloak) ist im OSS. Die meisten Agent-Frameworks liefern es nicht; die meisten Plattformen verlangen Geld dafür. Praxia behandelt es als Standard.", "pt-BR":"OIDC SSO (Google / Microsoft / Okta / GitHub / Keycloak) está no OSS. A maioria dos frameworks não inclui; a maioria das plataformas cobra. Praxia trata como básico."},
    "oss.c2.body": {en:"Layer 4 is plain Markdown in your git repo. Layer 3 exports to JSONL. Layer 1 is your chosen backend's native format. The framework doesn't hold your data hostage — leaving costs nothing.", ja:"Layer 4 は git 管理下の素の Markdown、Layer 3 は JSONL 出力可、Layer 1 は選択バックエンドのネイティブ形式。フレームワークがデータを人質に取らない — 離脱コストゼロ。", "zh-CN":"Layer 4 是 git 仓库内纯 Markdown,Layer 3 可导出 JSONL,Layer 1 是所选后端的原生格式。框架不绑架数据 — 离开零成本。", ko:"Layer 4 는 git 리포의 평문 Markdown, Layer 3 는 JSONL 내보내기 가능, Layer 1 은 선택 백엔드의 네이티브 형식. 프레임워크가 데이터를 인질로 잡지 않음 — 떠나는 비용 0.", es:"Capa 4 es Markdown plano en tu repo git. Capa 3 exporta a JSONL. Capa 1 es el formato nativo del backend que elijas. El framework no retiene tus datos — irse cuesta cero.", fr:"Couche 4 est du Markdown brut dans votre dépôt git. Couche 3 exporte en JSONL. Couche 1 est au format natif du backend choisi. Le framework ne prend pas vos données en otage — partir coûte zéro.", de:"Schicht 4 ist reines Markdown im Git-Repo. Schicht 3 exportiert in JSONL. Schicht 1 ist im nativen Format deines gewählten Backends. Das Framework hält deine Daten nicht als Geisel — Verlassen kostet nichts.", "pt-BR":"Camada 4 é Markdown simples no seu repo git. Camada 3 exporta para JSONL. Camada 1 é formato nativo do backend escolhido. O framework não retém seus dados — sair custa zero."},
    "oss.c3.body": {en:"Apache 2.0. Show the source to your auditors, your security team, your customers. No \"trust us, the SaaS is secure\" — inspect the auth manager yourself.", ja:"Apache 2.0。ソースを監査・セキュリティチーム・顧客に開示可能。「SaaS は安全だから信じて」ではなく、認証マネージャを自身で検証可能。", "zh-CN":"Apache 2.0。可向审计、安全团队、客户展示源代码。无需「相信 SaaS 是安全的」 — 自行检查 auth manager。", ko:"Apache 2.0. 감사 / 보안 팀 / 고객에게 소스 공개 가능. 「SaaS 가 안전하니 믿어라」가 아니라 직접 인증 매니저 검증 가능.", es:"Apache 2.0. Muestra el código a auditores, equipo de seguridad, clientes. No \"confía, el SaaS es seguro\" — inspecciona el auth manager tú mismo.", fr:"Apache 2.0. Montrez le code à vos auditeurs, équipe sécurité, clients. Pas de « faites-nous confiance, le SaaS est sûr » — inspectez l'auth manager vous-même.", de:"Apache 2.0. Zeige den Code Auditoren, Security-Team, Kunden. Kein vertraut-uns-das-SaaS-ist-sicher — den Auth-Manager selbst inspizieren.", "pt-BR":"Apache 2.0. Mostre o código a auditores, equipe de segurança, clientes. Sem \"confie, o SaaS é seguro\" — inspecione o auth manager você mesmo."},
    "oss.c4.body": {en:"Run Mem0 + Zep + HindSight in parallel and fuse with RRF, or route per query. No commercial agent platform exposes this — they pick a backend and lock you in. Praxia treats it as a first-class feature.", ja:"Mem0 + Zep + HindSight を並列実行し RRF で融合、もしくはクエリ毎にルーティング。商用エージェント基盤は単一バックエンドにロックインしがちだが、Praxia は第一級機能として提供。", "zh-CN":"Mem0 + Zep + HindSight 并行运行并以 RRF 融合,或按查询路由。商用代理平台多锁定单一后端,Praxia 视为一类功能。", ko:"Mem0 + Zep + HindSight 를 병렬 실행하고 RRF 로 융합, 또는 쿼리별 라우팅. 상용 에이전트 플랫폼은 단일 백엔드에 락인되기 쉬우나 Praxia 는 일급 기능.", es:"Ejecuta Mem0 + Zep + HindSight en paralelo y fusiona con RRF, o enruta por consulta. Ninguna plataforma comercial expone esto — eligen un backend y te bloquean. Praxia lo trata como función de primera clase.", fr:"Exécutez Mem0 + Zep + HindSight en parallèle et fusionnez avec RRF, ou routez par requête. Aucune plateforme commerciale n'expose cela — elles choisissent un backend et vous verrouillent. Praxia le traite en fonctionnalité de première classe.", de:"Mem0 + Zep + HindSight parallel ausführen und mit RRF fusionieren, oder pro Anfrage routen. Keine kommerzielle Plattform bietet das — sie wählen ein Backend und sperren dich ein. Praxia behandelt es als First-Class-Feature.", "pt-BR":"Execute Mem0 + Zep + HindSight em paralelo e funda com RRF, ou roteie por consulta. Nenhuma plataforma comercial expõe isso — escolhem um backend e te bloqueiam. Praxia trata como funcionalidade de primeira classe."},
    "oss.c5.body": {en:"When alice pulls from Box, Box's own ACL applies — alice only sees what alice can see. Service-account designs (typical SaaS shortcut) leak data across users. Praxia's per-user OAuth makes this the default.", ja:"alice が Box から pull する時、Box 側の ACL が適用 — alice は alice 権限分のみ可視。サービスアカウント運用 (典型的な SaaS ショートカット) はユーザ間でデータが漏れる。Praxia のユーザ毎 OAuth が既定。", "zh-CN":"alice 从 Box 拉取时,Box 自身 ACL 生效 — alice 仅见 alice 权限内的内容。服务账户设计(典型 SaaS 取巧)会跨用户泄漏数据。Praxia 的每用户 OAuth 默认开启。", ko:"alice 가 Box 에서 pull 할 때 Box 의 ACL 이 적용 — alice 는 alice 권한 내 정보만 표시. 서비스 계정 설계 (전형적 SaaS 지름길) 는 사용자 간 데이터 누수. Praxia 의 사용자별 OAuth 가 기본.", es:"Cuando alice extrae de Box, se aplica la ACL nativa de Box — alice solo ve lo que alice puede. Los diseños de service account (atajo SaaS típico) filtran datos entre usuarios. El OAuth por usuario de Praxia es el default.", fr:"Quand alice tire depuis Box, l'ACL native de Box s'applique — alice ne voit que ce qu'alice peut. Les designs service-account (raccourci SaaS typique) fuient des données entre utilisateurs. L'OAuth par utilisateur de Praxia est le défaut.", de:"Wenn alice aus Box zieht, gilt Box' eigene ACL — alice sieht nur, was alice darf. Service-Account-Designs (typischer SaaS-Shortcut) lecken Daten zwischen Nutzern. Praxias Pro-Nutzer-OAuth ist der Standard.", "pt-BR":"Quando alice puxa do Box, a ACL nativa do Box se aplica — alice só vê o que alice pode. Designs de service account (atalho típico de SaaS) vazam dados entre usuários. O OAuth por usuário do Praxia é o padrão."},
    "oss.c6.body": {en:"Set <code>PRAXIA_LOCAL_MODEL=gemma</code>, run Ollama, choose <code>backend=json</code>. No cloud LLM, no cloud vector DB, no telemetry. Air-gapped customers run identical code as cloud customers.", ja:"<code>PRAXIA_LOCAL_MODEL=gemma</code> を設定、Ollama を起動、<code>backend=json</code> を選択。クラウド LLM 不要、クラウドベクトル DB 不要、テレメトリ不要。エアギャップ顧客はクラウド顧客と同一コードを実行。", "zh-CN":"设置 <code>PRAXIA_LOCAL_MODEL=gemma</code>、运行 Ollama、选择 <code>backend=json</code>。无云 LLM、无云向量 DB、无遥测。气隙客户与云客户运行同一代码。", ko:"<code>PRAXIA_LOCAL_MODEL=gemma</code> 설정, Ollama 실행, <code>backend=json</code> 선택. 클라우드 LLM 불필요, 클라우드 벡터 DB 불필요, 텔레메트리 불필요. 에어갭 고객도 클라우드 고객과 동일 코드 실행.", es:"Establece <code>PRAXIA_LOCAL_MODEL=gemma</code>, ejecuta Ollama, elige <code>backend=json</code>. Sin LLM cloud, sin vector DB cloud, sin telemetría. Los clientes air-gapped ejecutan código idéntico al de cloud.", fr:"Définissez <code>PRAXIA_LOCAL_MODEL=gemma</code>, lancez Ollama, choisissez <code>backend=json</code>. Pas de LLM cloud, pas de vector DB cloud, pas de télémétrie. Les clients air-gapped font tourner le même code que les clients cloud.", de:"Setze <code>PRAXIA_LOCAL_MODEL=gemma</code>, starte Ollama, wähle <code>backend=json</code>. Kein Cloud-LLM, keine Cloud-Vektor-DB, keine Telemetrie. Air-gapped-Kunden fahren identischen Code wie Cloud-Kunden.", "pt-BR":"Defina <code>PRAXIA_LOCAL_MODEL=gemma</code>, rode Ollama, escolha <code>backend=json</code>. Sem LLM na nuvem, sem vector DB na nuvem, sem telemetria. Clientes air-gapped rodam código idêntico ao da nuvem."},
    "oss.c7":      {en:"KMS-backed token encryption (5 adapters)", ja:"KMS ベースのトークン暗号化 (5 アダプタ)", "zh-CN":"KMS 加密令牌(5 个适配器)", ko:"KMS 기반 토큰 암호화 (5 어댑터)", es:"Cifrado de tokens con KMS (5 adaptadores)", fr:"Chiffrement de tokens via KMS (5 adaptateurs)", de:"KMS-basierte Token-Verschlüsselung (5 Adapter)", "pt-BR":"Criptografia de tokens via KMS (5 adaptadores)"},
    "oss.c7.body": {en:"OAuth tokens are envelope-encrypted with the master key in AWS KMS, Azure Key Vault, GCP KMS, HashiCorp Vault — or locally for dev. Most agent frameworks store tokens with a local symmetric key; Praxia treats KMS as a first-class concern in the OSS.", ja:"OAuth トークンは AWS KMS / Azure Key Vault / GCP KMS / HashiCorp Vault のマスターキーで envelope 暗号化 (開発用にローカルも可)。多くのエージェント FW はローカル対称鍵で保存、Praxia は KMS を OSS の第一級扱い。", "zh-CN":"OAuth 令牌以 AWS KMS / Azure Key Vault / GCP KMS / HashiCorp Vault 主密钥进行信封加密(本地用于开发)。多数代理 FW 用本地对称密钥存储,Praxia 在 OSS 中将 KMS 列为一类关注。", ko:"OAuth 토큰을 AWS KMS / Azure Key Vault / GCP KMS / HashiCorp Vault 마스터 키로 엔벨로프 암호화 (개발용 로컬도 가능). 대부분의 에이전트 FW 는 로컬 대칭 키로 저장, Praxia 는 KMS 를 OSS 의 일급 관심사로 취급.", es:"Los tokens OAuth se cifran envelope con la clave maestra en AWS KMS / Azure Key Vault / GCP KMS / HashiCorp Vault — o localmente para dev. La mayoría de frameworks usan clave simétrica local; Praxia trata KMS como tema de primera clase en el OSS.", fr:"Les tokens OAuth sont chiffrés en envelope avec la clé maîtresse dans AWS KMS / Azure Key Vault / GCP KMS / HashiCorp Vault — ou en local pour dev. La plupart des frameworks stockent avec une clé symétrique locale ; Praxia traite KMS comme première classe dans l'OSS.", de:"OAuth-Tokens werden mit dem Masterkey in AWS KMS / Azure Key Vault / GCP KMS / HashiCorp Vault envelope-verschlüsselt — oder lokal für Dev. Die meisten Frameworks speichern mit lokalem symmetrischem Key; Praxia behandelt KMS im OSS als First-Class.", "pt-BR":"Tokens OAuth são criptografados envelope com a chave mestra em AWS KMS / Azure Key Vault / GCP KMS / HashiCorp Vault — ou localmente para dev. A maioria dos frameworks armazena com chave simétrica local; Praxia trata KMS como tema de primeira classe no OSS."},
    "oss.c8":      {en:"Production OAuth callback handler", ja:"本番 OAuth コールバックハンドラ", "zh-CN":"生产 OAuth 回调处理器", ko:"프로덕션 OAuth 콜백 핸들러", es:"Manejador de callback OAuth de producción", fr:"Gestionnaire de callback OAuth production", de:"Produktions-OAuth-Callback-Handler", "pt-BR":"Manipulador de callback OAuth de produção"},
    "oss.c8.body": {en:"Multi-worker safe — state cache survives across processes (TTL-pruned JSON file), redirect URI pinned via env var. Run <code>praxia serve</code> behind nginx and the callback works correctly with N replicas. Most OSS competitors only support CLI loopback.", ja:"Multi-worker 安全 — state cache がプロセス間で保持される (TTL pruning の JSON)、redirect URI は env で固定。<code>praxia serve</code> を nginx 配下に配置し N レプリカでもコールバックが正常動作。多くの OSS 競合は CLI ループバックのみ対応。", "zh-CN":"多 worker 安全 — state cache 跨进程保留(TTL 修剪的 JSON 文件),redirect URI 经环境变量固定。<code>praxia serve</code> 置于 nginx 之后,N 个副本下回调正常。多数 OSS 竞品仅支持 CLI 回环。", ko:"멀티 워커 안전 — state cache 가 프로세스 간 유지 (TTL pruned JSON), redirect URI 는 환경변수로 고정. <code>praxia serve</code> 를 nginx 뒤에 두고 N 레플리카에서도 콜백 정상 동작. 대부분의 OSS 경쟁자는 CLI 루프백만 지원.", es:"Seguro multi-worker — el state cache sobrevive entre procesos (JSON con TTL), redirect URI fijado vía env var. Ejecuta <code>praxia serve</code> tras nginx y el callback funciona con N réplicas. La mayoría de competidores OSS solo soporta loopback CLI.", fr:"Sûr en multi-worker — le state cache survit entre processus (JSON TTL-pruné), URI de redirect fixée via env. Lancez <code>praxia serve</code> derrière nginx et le callback fonctionne avec N réplicas. La plupart des concurrents OSS ne supportent que le loopback CLI.", de:"Multi-Worker-sicher — der State-Cache überlebt prozessübergreifend (TTL-bereinigtes JSON), Redirect-URI per Env-Variable fixiert. <code>praxia serve</code> hinter nginx läuft mit N Replikas korrekt. Die meisten OSS-Konkurrenten unterstützen nur CLI-Loopback.", "pt-BR":"Multi-worker seguro — o state cache sobrevive entre processos (JSON com TTL), redirect URI fixada via env var. Rode <code>praxia serve</code> atrás de nginx e o callback funciona com N réplicas. A maioria dos concorrentes OSS suporta apenas loopback CLI."},
    "oss.c9":      {en:"A/B testing + LLM quality eval included", ja:"A/B テスト + LLM 品質評価 を同梱", "zh-CN":"内置 A/B 测试 + LLM 质量评估", ko:"A/B 테스트 + LLM 품질 평가 동봉", es:"Pruebas A/B + eval calidad LLM incluidos", fr:"Tests A/B + éval qualité LLM inclus", de:"A/B-Tests + LLM-Qualitätsbewertung enthalten", "pt-BR":"Testes A/B + avaliação de qualidade LLM incluídos"},
    "oss.c9.body": {en:"Run controlled experiments on prompts / skills / LLMs with deterministic assignment + outcome tracking. CI-gate quality regressions with a baseline-flagging eval framework. Both in the OSS — no separate \"experimentation platform\" subscription.", ja:"プロンプト / スキル / LLM の制御実験を決定論的アサインメント + アウトカム追跡で実行。ベースラインフラグの eval フレームで品質デグレを CI ゲート。両方を OSS で提供 — 別途「実験プラットフォーム」課金不要。", "zh-CN":"以确定性分配 + 成果追踪运行提示词 / 技能 / LLM 的对照实验。用基线标记的 eval 框架在 CI 拦截质量回退。两者都在 OSS 中 — 无需额外「实验平台」订阅。", ko:"프롬프트 / 스킬 / LLM 의 통제 실험을 결정론적 배정 + 결과 추적으로 실행. 베이스라인 플래깅 eval 프레임으로 CI 게이트 품질 회귀. 양쪽 모두 OSS — 별도 「실험 플랫폼」 구독 불필요.", es:"Ejecuta experimentos controlados de prompts / habilidades / LLMs con asignación determinista + seguimiento de outcomes. Bloquea regresiones de calidad en CI con un eval framework de baseline. Ambos en el OSS — sin suscripción separada a \"plataforma de experimentación\".", fr:"Exécutez des expériences contrôlées sur prompts / compétences / LLMs avec attribution déterministe + suivi de résultats. Bloquez les régressions de qualité en CI avec un framework eval baseline. Les deux dans l'OSS — pas d'abonnement séparé « plateforme d'expérimentation ».", de:"Führe kontrollierte Experimente an Prompts / Skills / LLMs mit deterministischer Zuordnung + Ergebnis-Tracking durch. Blockiere Qualitätsregressionen im CI mit einem Baseline-flaggenden Eval-Framework. Beides im OSS — kein separates Experimentation-Plattform-Abo.", "pt-BR":"Execute experimentos controlados em prompts / habilidades / LLMs com atribuição determinística + rastreamento de resultados. Bloqueie regressões de qualidade no CI com um eval framework com baseline. Ambos no OSS — sem assinatura separada de \"plataforma de experimentação\"."},

    // ===== Use cases section =========================================
    "uc.kicker":                 {en:"Use cases", ja:"ユースケース", "zh-CN":"使用案例", ko:"활용 사례", es:"Casos de uso", fr:"Cas d'usage", de:"Anwendungsfälle", "pt-BR":"Casos de uso"},
    "uc.h2":                     {en:"Concrete Before / After across six business functions.", ja:"6 業務領域での具体的 Before / After。", "zh-CN":"6 个业务职能的具体 Before / After。", ko:"6 가지 업무 영역의 구체적 Before / After.", es:"Before / After concreto en 6 funciones.", fr:"Before / After concret sur 6 fonctions métiers.", de:"Konkrete Before / After über 6 Geschäftsbereiche.", "pt-BR":"Before / After concreto em 6 funções de negócio."},

    // ===== Extending section =========================================
    "ext.kicker":                {en:"Extensibility", ja:"拡張性", "zh-CN":"可扩展性", ko:"확장성", es:"Extensibilidad", fr:"Extensibilité", de:"Erweiterbarkeit", "pt-BR":"Extensibilidade"},
    "ext.h2":                    {en:"Built to grow with your team.", ja:"チームと共に成長する設計。", "zh-CN":"为与您的团队共同成长而构建。", ko:"팀과 함께 성장하도록 설계.", es:"Diseñado para crecer con tu equipo.", fr:"Conçu pour grandir avec votre équipe.", de:"Gebaut, um mit Ihrem Team zu wachsen.", "pt-BR":"Construído para crescer com sua equipe."},

    // ===== ROI section ===============================================
    "roi.kicker":                {en:"ROI projection", ja:"ROI 試算", "zh-CN":"ROI 预测", ko:"ROI 추정", es:"Proyección de ROI", fr:"Projection ROI", de:"ROI-Prognose", "pt-BR":"Projeção de ROI"},
    "roi.h2":                    {en:"Cumulative effect compounds with the memory loop.", ja:"メモリ循環で累積効果が複利的に拡大。", "zh-CN":"累积效应随记忆循环复合增长。", ko:"누적 효과가 메모리 순환으로 복리 성장.", es:"El efecto acumulado crece exponencialmente con el bucle de memoria.", fr:"L'effet cumulatif croît avec la boucle de mémoire.", de:"Kumulative Wirkung wächst mit dem Memory-Loop.", "pt-BR":"O efeito acumulado cresce com o ciclo de memória."},

    // ----- Translation status notice (for non-English) -----
    "i18n.notice": {
      en: "",
      ja: "※ 主要部分のみ翻訳済 — 詳細な FAQ・コード例・カード本文は英語表示のままです。",
      "zh-CN": "※ 仅核心区域已翻译 — 详细 FAQ、代码示例和正文卡片仍为英文显示。",
      ko: "※ 핵심 영역만 번역됨 — 상세 FAQ, 코드 예제, 카드 본문은 영어로 표시됩니다.",
      es: "※ Solo se han traducido las áreas principales — FAQs detallados, ejemplos de código y cuerpo de tarjetas siguen en inglés.",
      fr: "※ Seules les zones principales sont traduites — les FAQ détaillées, exemples de code et corps des cartes restent en anglais.",
      de: "※ Nur die Kernbereiche sind übersetzt — detaillierte FAQs, Code-Beispiele und Kartenkörper bleiben auf Englisch.",
      "pt-BR": "※ Apenas as áreas principais foram traduzidas — FAQs detalhados, exemplos de código e corpo dos cards permanecem em inglês.",
    },
  };

  // ---- Detection ----------------------------------------------------------

  function pickLang() {
    // 1. Manual override (localStorage)
    const stored = localStorage.getItem("praxia-lang");
    if (stored && SUPPORTED.includes(stored)) return stored;
    // 2. URL param ?lang=ja
    const param = new URLSearchParams(location.search).get("lang");
    if (param && SUPPORTED.includes(param)) return param;
    // 3. Browser language
    const browserLangs = navigator.languages || [navigator.language || "en"];
    for (const raw of browserLangs) {
      // Try exact match
      if (SUPPORTED.includes(raw)) return raw;
      // Try prefix match (e.g. "zh-CN" matches "zh-CN" but "zh-TW" matches "zh-CN" too)
      const prefix = raw.split("-")[0].toLowerCase();
      const match = SUPPORTED.find(s => s.toLowerCase().startsWith(prefix));
      if (match) return match;
    }
    return "en";
  }

  // ---- Apply --------------------------------------------------------------

  let _currentLang = "en";

  function applyLang(lang) {
    _currentLang = lang;
    document.documentElement.lang = lang;
    document.documentElement.setAttribute("data-praxia-lang", lang);

    // Replace text-content elements
    document.querySelectorAll("[data-i18n]").forEach(el => {
      const key = el.getAttribute("data-i18n");
      const dict = T[key];
      if (!dict) return;
      const value = dict[lang] || dict["en"];
      if (value !== undefined) el.innerHTML = value;
    });

    // Placeholders
    document.querySelectorAll("[data-i18n-placeholder]").forEach(el => {
      const key = el.getAttribute("data-i18n-placeholder");
      const dict = T[key];
      if (dict) el.placeholder = dict[lang] || dict["en"];
    });

    // Titles / aria-labels
    document.querySelectorAll("[data-i18n-title]").forEach(el => {
      const key = el.getAttribute("data-i18n-title");
      const dict = T[key];
      if (dict) el.title = dict[lang] || dict["en"];
    });

    // Show / hide translation-status notice
    const noticeEl = document.getElementById("i18n-notice");
    if (noticeEl) {
      const text = (T["i18n.notice"][lang] || "");
      if (text) {
        noticeEl.textContent = text;
        noticeEl.hidden = false;
      } else {
        noticeEl.hidden = true;
        noticeEl.textContent = "";
      }
    }

    // Update language switcher state
    document.querySelectorAll("[data-lang-option]").forEach(el => {
      el.classList.toggle(
        "lang-active",
        el.getAttribute("data-lang-option") === lang
      );
    });

    // Notify other modules (e.g. consent.js) so they can re-render
    document.dispatchEvent(
      new CustomEvent("praxia-lang-changed", {detail: {lang}})
    );
  }

  // Expose so other scripts can re-translate dynamically-injected nodes
  window.praxiaApplyI18n = function () { applyLang(_currentLang); };
  window.praxiaCurrentLang = function () { return _currentLang; };
  // Look up a translation by key in the active language (with English fallback).
  // Returns the supplied `fallback` (or the key itself) if the key is missing.
  window.praxiaT = function (key, fallback) {
    const dict = T[key];
    if (!dict) return fallback != null ? fallback : key;
    return dict[_currentLang] || dict["en"] || (fallback != null ? fallback : key);
  };

  // ---- Switcher UI --------------------------------------------------------

  function buildSwitcher() {
    const container = document.getElementById("lang-switcher");
    if (!container) return;
    SUPPORTED.forEach(code => {
      const btn = document.createElement("button");
      btn.type = "button";
      btn.className = "lang-option";
      btn.setAttribute("data-lang-option", code);
      btn.textContent = LANG_DISPLAY[code];
      btn.addEventListener("click", () => {
        localStorage.setItem("praxia-lang", code);
        applyLang(code);
      });
      container.appendChild(btn);
    });
  }

  // ---- Init ---------------------------------------------------------------

  document.addEventListener("DOMContentLoaded", () => {
    buildSwitcher();
    applyLang(pickLang());
  });
})();
