{
  "session_id": "20260622_231614_05cd43",
  "model": "kimi-k2.7-code",
  "base_url": "https://ollama.com/v1",
  "platform": "telegram",
  "session_start": "2026-06-22T23:16:14.861508",
  "last_updated": "2026-06-22T23:17:54.130059",
  "system_prompt": "You are Hermes Agent, an intelligent AI assistant created by Nous Research. You are helpful, knowledgeable, and direct. You assist users with a wide range of tasks including answering questions, writing and editing code, analyzing information, creative work, and executing actions via your tools. You communicate clearly, admit uncertainty when appropriate, and prioritize being genuinely useful over being verbose unless otherwise directed below. Be targeted and efficient in your exploration and investigations.\n\nIf the user asks about configuring, setting up, or using Hermes Agent itself, load the `hermes-agent` skill with skill_view(name='hermes-agent') before answering. Docs: https://hermes-agent.nousresearch.com/docs\n\nConversation started: Monday, June 22, 2026 11:16 PM\nModel: kimi-k2.7-code\nProvider: custom\n\nYou are on a text messaging communication platform, Telegram. Standard markdown is automatically converted to Telegram format. Supported: **bold**, *italic*, ~~strikethrough~~, ||spoiler||, `inline code`, ```code blocks```, [links](url), and ## headers. Telegram has NO table syntax — prefer bullet lists or labeled key: value pairs over pipe tables (any tables you do emit are auto-rewritten into row-group bullets, which you can produce directly for cleaner output). You can send media files natively: to deliver a file to the user, include MEDIA:/absolute/path/to/file in your response. Images (.png, .jpg, .webp) appear as photos, audio (.ogg) sends as voice bubbles, and videos (.mp4) play inline. You can also include image URLs in markdown format ![alt](url) and they will be sent as native photos.",
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "patch",
        "description": "Targeted find-and-replace edits in files. Use this instead of sed/awk in terminal. Uses fuzzy matching (9 strategies) so minor whitespace/indentation differences won't break it. Returns a unified diff. Auto-runs syntax checks after editing.\n\nReplace mode (default): find a unique string and replace it.\nPatch mode: apply V4A multi-file patches for bulk changes.",
        "parameters": {
          "type": "object",
          "properties": {
            "mode": {
              "type": "string",
              "enum": [
                "replace",
                "patch"
              ],
              "description": "Edit mode: 'replace' for targeted find-and-replace, 'patch' for V4A multi-file patches",
              "default": "replace"
            },
            "path": {
              "type": "string",
              "description": "File path to edit (required for 'replace' mode)"
            },
            "old_string": {
              "type": "string",
              "description": "Text to find in the file (required for 'replace' mode). Must be unique in the file unless replace_all=true. Include enough surrounding context to ensure uniqueness."
            },
            "new_string": {
              "type": "string",
              "description": "Replacement text (required for 'replace' mode). Can be empty string to delete the matched text."
            },
            "replace_all": {
              "type": "boolean",
              "description": "Replace all occurrences instead of requiring a unique match (default: false)",
              "default": false
            },
            "patch": {
              "type": "string",
              "description": "V4A format patch content (required for 'patch' mode). Format:\n*** Begin Patch\n*** Update File: path/to/file\n@@ context hint @@\n context line\n-removed line\n+added line\n*** End Patch"
            }
          },
          "required": [
            "mode"
          ]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "process",
        "description": "Manage background processes started with terminal(background=true). Actions: 'list' (show all), 'poll' (check status + new output), 'log' (full output with pagination), 'wait' (block until done or timeout), 'kill' (terminate), 'write' (send raw stdin data without newline), 'submit' (send data + Enter, for answering prompts), 'close' (close stdin/send EOF).",
        "parameters": {
          "type": "object",
          "properties": {
            "action": {
              "type": "string",
              "enum": [
                "list",
                "poll",
                "log",
                "wait",
                "kill",
                "write",
                "submit",
                "close"
              ],
              "description": "Action to perform on background processes"
            },
            "session_id": {
              "type": "string",
              "description": "Process session ID (from terminal background output). Required for all actions except 'list'."
            },
            "data": {
              "type": "string",
              "description": "Text to send to process stdin (for 'write' and 'submit' actions)"
            },
            "timeout": {
              "type": "integer",
              "description": "Max seconds to block for 'wait' action. Returns partial output on timeout.",
              "minimum": 1
            },
            "offset": {
              "type": "integer",
              "description": "Line offset for 'log' action (default: last 200 lines)"
            },
            "limit": {
              "type": "integer",
              "description": "Max lines to return for 'log' action",
              "minimum": 1
            }
          },
          "required": [
            "action"
          ]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "read_file",
        "description": "Read a text file with line numbers and pagination. Use this instead of cat/head/tail in terminal. Output format: 'LINE_NUM|CONTENT'. Suggests similar filenames if not found. Use offset and limit for large files. Reads exceeding ~100K characters are rejected; use offset and limit to read specific sections of large files. NOTE: Cannot read images or binary files — use vision_analyze for images.",
        "parameters": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "Path to the file to read (absolute, relative, or ~/path)"
            },
            "offset": {
              "type": "integer",
              "description": "Line number to start reading from (1-indexed, default: 1)",
              "default": 1,
              "minimum": 1
            },
            "limit": {
              "type": "integer",
              "description": "Maximum number of lines to read (default: 500, max: 2000)",
              "default": 500,
              "maximum": 2000
            }
          },
          "required": [
            "path"
          ]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "search_files",
        "description": "Search file contents or find files by name. Use this instead of grep/rg/find/ls in terminal. Ripgrep-backed, faster than shell equivalents.\n\nContent search (target='content'): Regex search inside files. Output modes: full matches with line numbers, file paths only, or match counts.\n\nFile search (target='files'): Find files by glob pattern (e.g., '*.py', '*config*'). Also use this instead of ls — results sorted by modification time.",
        "parameters": {
          "type": "object",
          "properties": {
            "pattern": {
              "type": "string",
              "description": "Regex pattern for content search, or glob pattern (e.g., '*.py') for file search"
            },
            "target": {
              "type": "string",
              "enum": [
                "content",
                "files"
              ],
              "description": "'content' searches inside file contents, 'files' searches for files by name",
              "default": "content"
            },
            "path": {
              "type": "string",
              "description": "Directory or file to search in (default: current working directory)",
              "default": "."
            },
            "file_glob": {
              "type": "string",
              "description": "Filter files by pattern in grep mode (e.g., '*.py' to only search Python files)"
            },
            "limit": {
              "type": "integer",
              "description": "Maximum number of results to return (default: 50)",
              "default": 50
            },
            "offset": {
              "type": "integer",
              "description": "Skip first N results for pagination (default: 0)",
              "default": 0
            },
            "output_mode": {
              "type": "string",
              "enum": [
                "content",
                "files_only",
                "count"
              ],
              "description": "Output format for grep mode: 'content' shows matching lines with line numbers, 'files_only' lists file paths, 'count' shows match counts per file",
              "default": "content"
            },
            "context": {
              "type": "integer",
              "description": "Number of context lines before and after each match (grep mode only)",
              "default": 0
            }
          },
          "required": [
            "pattern"
          ]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "terminal",
        "description": "Execute shell commands on a Linux environment. Filesystem usually persists between calls.\n\nDo NOT use cat/head/tail to read files — use read_file instead.\nDo NOT use grep/rg/find to search — use search_files instead.\nDo NOT use ls to list directories — use search_files(target='files') instead.\nDo NOT use sed/awk to edit files — use patch instead.\nDo NOT use echo/cat heredoc to create files — use write_file instead.\nReserve terminal for: builds, installs, git, processes, scripts, network, package managers, and anything that needs a shell.\n\nForeground (default): Commands return INSTANTLY when done, even if the timeout is high. Set timeout=300 for long builds/scripts — you'll still get the result in seconds if it's fast. Prefer foreground for short commands.\nBackground: Set background=true to get a session_id. Two patterns:\n  (1) Long-lived processes that never exit (servers, watchers).\n  (2) Long-running tasks with notify_on_complete=true — you can keep working on other things and the system auto-notifies you when the task finishes. Great for test suites, builds, deployments, or anything that takes more than a minute.\nFor servers/watchers, do NOT use shell-level background wrappers (nohup/disown/setsid/trailing '&') in foreground mode. Use background=true so Hermes can track lifecycle and output.\nAfter starting a server, verify readiness with a health check or log signal, then run tests in a separate terminal() call. Avoid blind sleep loops.\nUse process(action=\"poll\") for progress checks, process(action=\"wait\") to block until done.\nWorking directory: Use 'workdir' for per-command cwd.\nPTY mode: Set pty=true for interactive CLI tools (Codex, Claude Code, Python REPL).\n\nDo NOT use vim/nano/interactive tools without pty=true — they hang without a pseudo-terminal. Pipe git output to cat if it might page.\n",
        "parameters": {
          "type": "object",
          "properties": {
            "command": {
              "type": "string",
              "description": "The command to execute on the VM"
            },
            "background": {
              "type": "boolean",
              "description": "Run the command in the background. Two patterns: (1) Long-lived processes that never exit (servers, watchers). (2) Long-running tasks paired with notify_on_complete=true — you can keep working and get notified when the task finishes. For short commands, prefer foreground with a generous timeout instead.",
              "default": false
            },
            "timeout": {
              "type": "integer",
              "description": "Max seconds to wait (default: 180, foreground max: 600). Returns INSTANTLY when command finishes — set high for long tasks, you won't wait unnecessarily. Foreground timeout above 600s is rejected; use background=true for longer commands.",
              "minimum": 1
            },
            "workdir": {
              "type": "string",
              "description": "Working directory for this command (absolute path). Defaults to the session working directory."
            },
            "pty": {
              "type": "boolean",
              "description": "Run in pseudo-terminal (PTY) mode for interactive CLI tools like Codex, Claude Code, or Python REPL. Only works with local and SSH backends. Default: false.",
              "default": false
            },
            "notify_on_complete": {
              "type": "boolean",
              "description": "When true (and background=true), you'll be automatically notified exactly once when the process finishes. **This is the right choice for almost every long-running task** — tests, builds, deployments, multi-item batch jobs, anything that takes over a minute and has a defined end. Use this and keep working on other things; the system notifies you on exit. MUTUALLY EXCLUSIVE with watch_patterns — when both are set, watch_patterns is dropped.",
              "default": false
            },
            "watch_patterns": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Strings to watch for in background process output. HARD RATE LIMIT: at most 1 notification per 15 seconds per process — matches arriving inside the cooldown are dropped. After 3 consecutive 15-second windows with dropped matches, watch_patterns is automatically disabled for that process and promoted to notify_on_complete behavior (one notification on exit, no more mid-process spam). USE ONLY for truly rare, one-shot mid-process signals on LONG-LIVED processes that will never exit on their own — e.g. ['Application startup complete'] on a server so you know when to hit its endpoint, or ['migration done'] on a daemon. DO NOT use for: (1) end-of-run markers like 'DONE'/'PASS' — use notify_on_complete instead; (2) error patterns like 'ERROR'/'Traceback' in loops or multi-item batch jobs — they fire on every iteration and you'll hit the strike limit fast; (3) anything you'd ever combine with notify_on_complete. When in doubt, choose notify_on_complete. MUTUALLY EXCLUSIVE with notify_on_complete — set one, not both."
            }
          },
          "required": [
            "command"
          ]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "write_file",
        "description": "Write content to a file, completely replacing existing content. Use this instead of echo/cat heredoc in terminal. Creates parent directories automatically. OVERWRITES the entire file — use 'patch' for targeted edits. Auto-runs syntax checks on .py/.json/.yaml/.toml and other linted languages; only NEW errors introduced by this write are surfaced (pre-existing errors are filtered out).",
        "parameters": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "Path to the file to write (will be created if it doesn't exist, overwritten if it does)"
            },
            "content": {
              "type": "string",
              "description": "Complete content to write to the file"
            }
          },
          "required": [
            "path",
            "content"
          ]
        }
      }
    }
  ],
  "message_count": 19,
  "messages": [
    {
      "role": "user",
      "content": "Rebuild /DATA/veritas-website.html as a sharp, high-conviction VC-facing defense-tech investor website. Implement the EXACT HTML and CSS provided by the user for Hero, Why Now, Category Creation, Market Stats, Technology Moat, Roadmap, and Investor CTA sections. Add Product Demo, Competitive Landscape (SVG matrix), Information Battlespace, and Footer in matching design language. Use #090b0f background, #3a7dff accent, Inter + IBM Plex Sans fonts. NO founder story, NO SaaS cards, NO cyberpunk, NO fake news language. Must feel like an early-stage company that could become the operating system for the information domain."
    },
    {
      "role": "assistant",
      "content": "",
      "reasoning": "We need rebuild /DATA/veritas-website.html. We must implement exact HTML/CSS for sections and add additional sections. Single self-contained HTML file with inline CSS, Google fonts, minimal JS for mobile menu. Write to /DATA/veritas-website.html overwriting. Then verify. Need use tools: read_file maybe existing? But overwrite fine. Use write_file. Need craft full HTML. Must ensure no forbidden content. Add Product Demo section with same dashboard styling, include propagation timeline visualization and coordination network graph SVG. Competitive landscape SVG matrix. Information Battlespace section. Footer. Also Navigation exact minimal as spec. Need ensure exact CSS variables, base, sections. Add responsive CSS. Add font link. Add meta. Also mobile menu JS. We'll need design of product demo, etc. Ensure no external JS frameworks or icon libs. Inline SVGs.\n\nNeed be careful with exact code: the user says implement EXACT HTML/CSS provided. We should include those exact class names and styles. Additional sections match design language.\n\nNeed maybe check if /DATA/veritas-website.html exists. Use read_file. Then write.",
      "finish_reason": "tool_calls",
      "reasoning_content": "We need rebuild /DATA/veritas-website.html. We must implement exact HTML/CSS for sections and add additional sections. Single self-contained HTML file with inline CSS, Google fonts, minimal JS for mobile menu. Write to /DATA/veritas-website.html overwriting. Then verify. Need use tools: read_file maybe existing? But overwrite fine. Use write_file. Need craft full HTML. Must ensure no forbidden content. Add Product Demo section with same dashboard styling, include propagation timeline visualization and coordination network graph SVG. Competitive landscape SVG matrix. Information Battlespace section. Footer. Also Navigation exact minimal as spec. Need ensure exact CSS variables, base, sections. Add responsive CSS. Add font link. Add meta. Also mobile menu JS. We'll need design of product demo, etc. Ensure no external JS frameworks or icon libs. Inline SVGs.\n\nNeed be careful with exact code: the user says implement EXACT HTML/CSS provided. We should include those exact class names and styles. Additional sections match design language.\n\nNeed maybe check if /DATA/veritas-website.html exists. Use read_file. Then write.",
      "tool_calls": [
        {
          "id": "functions.read_file:0",
          "call_id": "functions.read_file:0",
          "response_item_id": "fc_functionsread_file0",
          "type": "function",
          "function": {
            "name": "read_file",
            "arguments": "{\"path\":\"/DATA/veritas-website.html\",\"limit\":50}"
          }
        }
      ]
    },
    {
      "role": "tool",
      "name": "read_file",
      "content": "{\"content\": \"     1|<!DOCTYPE html>\\n     2|<html lang=\\\"en\\\">\\n     3|<head>\\n     4|  <meta charset=\\\"UTF-8\\\" />\\n     5|  <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" />\\n     6|  <title>VERITAS — The Operating System for the Information Battlespace</title>\\n     7|  <meta name=\\\"description\\\" content=\\\"VERITAS detects coordinated influence campaigns before they reach narrative dominance. Narrative intelligence for democratic societies.\\\" />\\n     8|  <link rel=\\\"preconnect\\\" href=\\\"https://fonts.googleapis.com\\\" />\\n     9|  <link rel=\\\"preconnect\\\" href=\\\"https://fonts.gstatic.com\\\" crossorigin />\\n    10|  <link href=\\\"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@300;400;500;600;700&display=swap\\\" rel=\\\"stylesheet\\\" />\\n    11|  <style>\\n    12|    :root {\\n    13|      --bg: #090B0F;\\n    14|      --panel: #11151B;\\n    15|      --panel-2: #0D1016;\\n    16|      --accent: #3A7DFF;\\n    17|      --accent-dim: rgba(58, 125, 255, 0.12);\\n    18|      --text: #FFFFFF;\\n    19|      --text-secondary: rgba(255, 255, 255, 0.7);\\n    20|      --muted: rgba(255, 255, 255, 0.45);\\n    21|      --border: rgba(255, 255, 255, 0.08);\\n    22|      --green: #2ECC71;\\n    23|      --amber: #FFB547;\\n    24|      --red: #FF5A5A;\\n    25|      --max-width: 1200px;\\n    26|      --radius: 4px;\\n    27|    }\\n    28|\\n    29|    * { box-sizing: border-box; }\\n    30|\\n    31|    html {\\n    32|      scroll-behavior: smooth;\\n    33|      background: var(--bg);\\n    34|      color: var(--text);\\n    35|      font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\\n    36|      font-weight: 400;\\n    37|      -webkit-font-smoothing: antialiased;\\n    38|    }\\n    39|\\n    40|    body {\\n    41|      margin: 0;\\n    42|      line-height: 1.6;\\n    43|      background: var(--bg);\\n    44|      overflow-x: hidden;\\n    45|    }\\n    46|\\n    47|    body::before {\\n    48|      content: '';\\n    49|      position: fixed;\\n    50|      inset: 0;\\n    51|\", \"total_lines\": 1543, \"file_size\": 54155, \"truncated\": true, \"hint\": \"Use offset=51 to continue reading (showing 1-50 of 1543 lines)\", \"is_binary\": false, \"is_image\": false}",
      "tool_call_id": "functions.read_file:0"
    },
    {
      "role": "assistant",
      "content": "",
      "reasoning": "The user wants a complete rebuild of /DATA/veritas-website.html. I'll overwrite it with a new single self-contained HTML file. I need to:\n1. Use the exact HTML/CSS provided for the specified sections\n2. Add Product Demo, Competitive Landscape, Information Battlespace, Footer\n3. Follow the design system\n4. Use Google Fonts Inter + IBM Plex Sans\n5. Minimal JS for mobile menu only\n6. Include inline SVGs\n7. No forbidden content\n\nLet me build the complete file.",
      "finish_reason": "tool_calls",
      "reasoning_content": "The user wants a complete rebuild of /DATA/veritas-website.html. I'll overwrite it with a new single self-contained HTML file. I need to:\n1. Use the exact HTML/CSS provided for the specified sections\n2. Add Product Demo, Competitive Landscape, Information Battlespace, Footer\n3. Follow the design system\n4. Use Google Fonts Inter + IBM Plex Sans\n5. Minimal JS for mobile menu only\n6. Include inline SVGs\n7. No forbidden content\n\nLet me build the complete file.",
      "tool_calls": [
        {
          "id": "functions.write_file:1",
          "call_id": "functions.write_file:1",
          "response_item_id": "fc_functionswrite_file1",
          "type": "function",
          "function": {
            "name": "write_file",
            "arguments": "{\"path\":\"/DATA/veritas-website.html\",\"content\":\"\\u003c!DOCTYPE html\\u003e\\n\\u003chtml lang=\\\"en\\\"\\u003e\\n\\u003chead\\u003e\\n  \\u003cmeta charset=\\\"UTF-8\\\" /\\u003e\\n  \\u003cmeta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" /\\u003e\\n  \\u003ctitle\\u003eVERITAS — The Operating System for the Information Battlespace\\u003c/title\\u003e\\n  \\u003cmeta name=\\\"description\\\" content=\\\"VERITAS detects coordinated influence campaigns before they reach narrative dominance across the information domain.\\\" /\\u003e\\n  \\u003clink rel=\\\"preconnect\\\" href=\\\"https://fonts.googleapis.com\\\" /\\u003e\\n  \\u003clink rel=\\\"preconnect\\\" href=\\\"https://fonts.gstatic.com\\\" crossorigin /\\u003e\\n  \\u003clink href=\\\"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700\\u0026family=Inter:wght@300;400;500;600;700;800;900\\u0026display=swap\\\" rel=\\\"stylesheet\\\" /\\u003e\\n  \\u003cstyle\\u003e\\n    :root {\\n      --bg: #090b0f;\\n      --panel: #11151b;\\n      --panel-2: #151b24;\\n      --border: rgba(255,255,255,0.08);\\n      --text: #f4f7fb;\\n      --muted: #8d99aa;\\n      --blue: #3a7dff;\\n      --green: #2ecc71;\\n      --orange: #ffb547;\\n      --red: #ff5a5a;\\n    }\\n\\n    * { box-sizing: border-box; }\\n\\n    html {\\n      scroll-behavior: smooth;\\n      background: var(--bg);\\n    }\\n\\n    body {\\n      margin: 0;\\n      background: var(--bg);\\n      color: var(--text);\\n      font-family: Inter, Geist, \\\"IBM Plex Sans\\\", system-ui, sans-serif;\\n      -webkit-font-smoothing: antialiased;\\n      line-height: 1.6;\\n    }\\n\\n    a { color: inherit; text-decoration: none; }\\n\\n    /* Navigation */\\n    nav {\\n      position: sticky;\\n      top: 0;\\n      z-index: 100;\\n      display: flex;\\n      align-items: center;\\n      justify-content: space-between;\\n      padding: 18px 7vw;\\n      background: rgba(9, 11, 15, 0.85);\\n      backdrop-filter: blur(14px);\\n      border-bottom: 1px solid var(--border);\\n    }\\n\\n    .logo {\\n      font-weight: 900;\\n      letter-spacing: 0.14em;\\n      font-size: 0.95rem;\\n      color: var(--text);\\n    }\\n\\n    .nav-links {\\n      display: flex;\\n      gap: 32px;\\n      align-items: center;\\n    }\\n\\n    .nav-links a {\\n      color: var(--muted);\\n      font-size: 0.9rem;\\n      font-weight: 500;\\n      transition: color 0.2s;\\n    }\\n\\n    .nav-links a:hover { color: var(--text); }\\n\\n    .nav-cta {\\n      padding: 10px 18px;\\n      border: 1px solid var(--border);\\n      border-radius: 10px;\\n      font-weight: 700;\\n      font-size: 0.85rem;\\n      color: var(--text);\\n      background: rgba(255,255,255,0.04);\\n      transition: border-color 0.2s, background 0.2s;\\n    }\\n\\n    .nav-cta:hover {\\n      border-color: rgba(255,255,255,0.2);\\n      background: rgba(255,255,255,0.08);\\n    }\\n\\n    .menu-toggle {\\n      display: none;\\n      flex-direction: column;\\n      gap: 5px;\\n      background: none;\\n      border: none;\\n      cursor: pointer;\\n      padding: 6px;\\n    }\\n\\n    .menu-toggle span {\\n      display: block;\\n      width: 22px;\\n      height: 2px;\\n      background: var(--text);\\n      border-radius: 2px;\\n    }\\n\\n    /* Hero */\\n    .hero {\\n      min-height: 92vh;\\n      display: grid;\\n      grid-template-columns: 1.05fr 0.95fr;\\n      gap: 56px;\\n      align-items: center;\\n      padding: 96px 7vw;\\n      background:\\n        radial-gradient(circle at 80% 20%, rgba(58,125,255,0.18), transparent 34%),\\n        linear-gradient(180deg, #090b0f 0%, #0b1017 100%);\\n    }\\n\\n    .eyebrow {\\n      color: var(--blue);\\n      font-size: 0.78rem;\\n      letter-spacing: 0.18em;\\n      font-weight: 700;\\n      margin-bottom: 18px;\\n    }\\n\\n    .hero h1 {\\n      font-size: clamp(3.5rem, 7vw, 7rem);\\n      line-height: 0.92;\\n      letter-spacing: -0.07em;\\n      margin: 0 0 28px;\\n    }\\n\\n    .hero-subtitle {\\n      font-size: 1.25rem;\\n      line-height: 1.65;\\n      color: var(--muted);\\n      max-width: 720px;\\n    }\\n\\n    .hero-actions {\\n      display: flex;\\n      gap: 16px;\\n      margin-top: 36px;\\n    }\\n\\n    .btn {\\n      padding: 14px 22px;\\n      border-radius: 10px;\\n      font-weight: 700;\\n      text-decoration: none;\\n      display: inline-block;\\n    }\\n\\n    .btn-primary {\\n      color: white;\\n      background: var(--blue);\\n    }\\n\\n    .btn-secondary {\\n      color: var(--text);\\n      border: 1px solid var(--border);\\n      background: rgba(255,255,255,0.04);\\n    }\\n\\n    .hero-dashboard {\\n      background: linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.025));\\n      border: 1px solid var(--border);\\n      border-radius: 22px;\\n      padding: 22px;\\n      box-shadow: 0 30px 100px rgba(0,0,0,0.4);\\n    }\\n\\n    .dash-header {\\n      display: flex;\\n      justify-content: space-between;\\n      color: var(--muted);\\n      font-size: 0.72rem;\\n      letter-spacing: 0.14em;\\n      margin-bottom: 18px;\\n    }\\n\\n    .status {\\n      color: var(--green);\\n    }\\n\\n    .alert-card {\\n      background: var(--panel);\\n      border: 1px solid var(--border);\\n      border-radius: 18px;\\n      padding: 24px;\\n    }\\n\\n    .alert-top {\\n      display: flex;\\n      justify-content: space-between;\\n      margin-bottom: 18px;\\n    }\\n\\n    .severity {\\n      color: var(--red);\\n      font-size: 0.75rem;\\n      font-weight: 800;\\n    }\\n\\n    .timestamp {\\n      color: var(--muted);\\n      font-size: 0.75rem;\\n    }\\n\\n    .alert-card h3 {\\n      font-size: 1.5rem;\\n      margin: 0 0 10px;\\n    }\\n\\n    .alert-card p {\\n      color: var(--muted);\\n      line-height: 1.5;\\n    }\\n\\n    .metric-grid {\\n      display: grid;\\n      grid-template-columns: repeat(4, 1fr);\\n      gap: 12px;\\n      margin: 24px 0;\\n    }\\n\\n    .metric-grid div {\\n      background: var(--panel-2);\\n      border: 1px solid var(--border);\\n      border-radius: 12px;\\n      padding: 14px;\\n    }\\n\\n    .metric-label {\\n      display: block;\\n      color: var(--muted);\\n      font-size: 0.7rem;\\n      margin-bottom: 8px;\\n    }\\n\\n    .metric-grid strong {\\n      font-size: 1.15rem;\\n    }\\n\\n    .flow {\\n      display: flex;\\n      align-items: center;\\n      gap: 10px;\\n      overflow-x: auto;\\n    }\\n\\n    .flow span {\\n      padding: 9px 12px;\\n      background: rgba(58,125,255,0.12);\\n      border: 1px solid rgba(58,125,255,0.25);\\n      border-radius: 999px;\\n      font-size: 0.82rem;\\n      white-space: nowrap;\\n    }\\n\\n    .flow i {\\n      width: 28px;\\n      height: 1px;\\n      background: var(--blue);\\n      display: block;\\n      flex-shrink: 0;\\n    }\\n\\n    /* Section headings */\\n    .section-heading {\\n      max-width: 840px;\\n      margin-bottom: 48px;\\n    }\\n\\n    .section-heading span {\\n      color: var(--blue);\\n      font-size: 0.78rem;\\n      letter-spacing: 0.18em;\\n      font-weight: 800;\\n    }\\n\\n    .section-heading h2 {\\n      font-size: clamp(2.5rem, 5vw, 4.8rem);\\n      line-height: 1;\\n      letter-spacing: -0.055em;\\n      margin: 16px 0;\\n    }\\n\\n    .section-heading p {\\n      color: var(--muted);\\n      font-size: 1.15rem;\\n      line-height: 1.65;\\n    }\\n\\n    /* Why Now */\\n    .why-now {\\n      padding: 120px 7vw;\\n    }\\n\\n    .why-grid {\\n      display: grid;\\n      grid-template-columns: repeat(4, 1fr);\\n      gap: 18px;\\n    }\\n\\n    .why-grid article {\\n      background: var(--panel);\\n      border: 1px solid var(--border);\\n      border-radius: 18px;\\n      padding: 26px;\\n    }\\n\\n    .why-grid h3 {\\n      font-size: 1.1rem;\\n      margin: 0 0 14px;\\n    }\\n\\n    .why-grid p {\\n      color: var(--muted);\\n      line-height: 1.55;\\n    }\\n\\n    /* Category Creation */\\n    .category {\\n      padding: 120px 7vw;\\n      background: #0b1017;\\n    }\\n\\n    .comparison {\\n      border: 1px solid var(--border);\\n      border-radius: 20px;\\n      overflow: hidden;\\n      background: var(--panel);\\n    }\\n\\n    .comparison-row {\\n      display: grid;\\n      grid-template-columns: 0.9fr 1.4fr;\\n      gap: 24px;\\n      padding: 24px 28px;\\n      border-bottom: 1px solid var(--border);\\n    }\\n\\n    .comparison-row:last-child {\\n      border-bottom: 0;\\n    }\\n\\n    .comparison-row span:first-child {\\n      font-weight: 800;\\n    }\\n\\n    .comparison-row span:last-child {\\n      color: var(--muted);\\n    }\\n\\n    .comparison-row.active {\\n      background: rgba(58,125,255,0.12);\\n    }\\n\\n    .comparison-row.active span:first-child {\\n      color: var(--blue);\\n    }\\n\\n    .comparison-row.active span:last-child {\\n      color: var(--text);\\n    }\\n\\n    /* Market */\\n    .market {\\n      padding: 120px 7vw;\\n    }\\n\\n    .market-stats {\\n      display: grid;\\n      grid-template-columns: repeat(4, 1fr);\\n      gap: 18px;\\n    }\\n\\n    .stat {\\n      padding: 34px;\\n      background: linear-gradient(180deg, rgba(255,255,255,0.055), rgba(255,255,255,0.025));\\n      border: 1px solid var(--border);\\n      border-radius: 22px;\\n    }\\n\\n    .stat h3 {\\n      color: var(--blue);\\n      font-size: clamp(2.4rem, 5vw, 4.5rem);\\n      margin: 0 0 12px;\\n      letter-spacing: -0.06em;\\n    }\\n\\n    .stat p {\\n      color: var(--muted);\\n      line-height: 1.5;\\n      margin: 0;\\n    }\\n\\n    /* Technology Moat */\\n    .moat {\\n      padding: 120px 7vw;\\n      background:\\n        radial-gradient(circle at 20% 30%, rgba(58,125,255,0.12), transparent 28%),\\n        #090b0f;\\n    }\\n\\n    .moat-grid {\\n      display: grid;\\n      grid-template-columns: repeat(3, 1fr);\\n      gap: 18px;\\n    }\\n\\n    .moat-grid article {\\n      min-height: 190px;\\n      background: var(--panel);\\n      border: 1px solid var(--border);\\n      border-radius: 20px;\\n      padding: 28px;\\n    }\\n\\n    .moat-grid h3 {\\n      margin: 0 0 14px;\\n      font-size: 1.2rem;\\n    }\\n\\n    .moat-grid p {\\n      color: var(--muted);\\n      line-height: 1.55;\\n    }\\n\\n    /* Product Demo */\\n    .demo {\\n      padding: 120px 7vw;\\n      background: #0b1017;\\n    }\\n\\n    .demo-grid {\\n      display: grid;\\n      grid-template-columns: 1fr 1fr;\\n      gap: 24px;\\n    }\\n\\n    .demo-panel {\\n      background: linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.025));\\n      border: 1px solid var(--border);\\n      border-radius: 22px;\\n      padding: 22px;\\n      box-shadow: 0 30px 100px rgba(0,0,0,0.3);\\n    }\\n\\n    .demo-panel h3 {\\n      margin: 0 0 18px;\\n      font-size: 1.05rem;\\n      letter-spacing: 0.02em;\\n    }\\n\\n    .timeline-chart {\\n      display: flex;\\n      align-items: flex-end;\\n      justify-content: space-between;\\n      gap: 10px;\\n      height: 140px;\\n      padding: 18px 0;\\n      border-bottom: 1px solid var(--border);\\n      margin-bottom: 18px;\\n    }\\n\\n    .bar {\\n      flex: 1;\\n      background: rgba(58,125,255,0.25);\\n      border-radius: 4px 4px 0 0;\\n      position: relative;\\n      min-width: 24px;\\n    }\\n\\n    .bar.active {\\n      background: var(--blue);\\n    }\\n\\n    .bar-label {\\n      position: absolute;\\n      bottom: -22px;\\n      left: 50%;\\n      transform: translateX(-50%);\\n      font-size: 0.65rem;\\n      color: var(--muted);\\n      white-space: nowrap;\\n    }\\n\\n    .network-graph {\\n      width: 100%;\\n      height: auto;\\n    }\\n\\n    .graph-key {\\n      display: flex;\\n      gap: 20px;\\n      margin-top: 16px;\\n      font-size: 0.78rem;\\n      color: var(--muted);\\n    }\\n\\n    .key-item {\\n      display: flex;\\n      align-items: center;\\n      gap: 8px;\\n    }\\n\\n    .key-dot {\\n      width: 8px;\\n      height: 8px;\\n      border-radius: 50%;\\n      background: var(--blue);\\n    }\\n\\n    .key-dot.sub {\\n      background: var(--muted);\\n    }\\n\\n    /* Information Battlespace */\\n    .battlespace {\\n      padding: 120px 7vw;\\n    }\\n\\n    .domain-grid {\\n      display: grid;\\n      grid-template-columns: repeat(6, 1fr);\\n      gap: 14px;\\n      margin-top: 48px;\\n    }\\n\\n    .domain {\\n      background: var(--panel);\\n      border: 1px solid var(--border);\\n      border-radius: 16px;\\n      padding: 28px 18px;\\n      text-align: center;\\n      color: var(--muted);\\n    }\\n\\n    .domain.active {\\n      border-color: rgba(58,125,255,0.45);\\n      background: rgba(58,125,255,0.12);\\n      color: var(--text);\\n    }\\n\\n    .domain-icon {\\n      width: 36px;\\n      height: 36px;\\n      margin: 0 auto 14px;\\n      stroke: currentColor;\\n      fill: none;\\n      stroke-width: 1.5;\\n    }\\n\\n    .domain h4 {\\n      margin: 0 0 8px;\\n      font-size: 0.95rem;\\n      font-weight: 800;\\n    }\\n\\n    .domain p {\\n      margin: 0;\\n      font-size: 0.78rem;\\n      line-height: 1.5;\\n    }\\n\\n    .battlespace-note {\\n      max-width: 720px;\\n      margin: 42px auto 0;\\n      text-align: center;\\n      color: var(--muted);\\n      line-height: 1.7;\\n    }\\n\\n    /* Competitive Landscape */\\n    .competitive {\\n      padding: 120px 7vw;\\n      background:\\n        radial-gradient(circle at 70% 70%, rgba(58,125,255,0.1), transparent 30%),\\n        #090b0f;\\n    }\\n\\n    .matrix-wrapper {\\n      background: var(--panel);\\n      border: 1px solid var(--border);\\n      border-radius: 24px;\\n      padding: 36px;\\n    }\\n\\n    .matrix-wrapper h3 {\\n      text-align: center;\\n      margin: 0 0 8px;\\n      font-size: 1.1rem;\\n    }\\n\\n    .matrix-wrapper .subtitle {\\n      text-align: center;\\n      color: var(--muted);\\n      font-size: 0.9rem;\\n      margin-bottom: 28px;\\n    }\\n\\n    .matrix-svg {\\n      width: 100%;\\n      height: auto;\\n      display: block;\\n    }\\n\\n    /* Roadmap */\\n    .roadmap {\\n      padding: 120px 7vw;\\n      background: #0b1017;\\n    }\\n\\n    .timeline {\\n      display: grid;\\n      grid-template-columns: repeat(5, 1fr);\\n      gap: 0;\\n      border: 1px solid var(--border);\\n      border-radius: 22px;\\n      overflow: hidden;\\n    }\\n\\n    .timeline-item {\\n      padding: 30px;\\n      background: var(--panel);\\n      border-right: 1px solid var(--border);\\n    }\\n\\n    .timeline-item:last-child {\\n      border-right: 0;\\n    }\\n\\n    .timeline-item span {\\n      color: var(--blue);\\n      font-weight: 900;\\n      letter-spacing: 0.08em;\\n    }\\n\\n    .timeline-item h3 {\\n      margin: 18px 0 12px;\\n    }\\n\\n    .timeline-item p {\\n      color: var(--muted);\\n      line-height: 1.5;\\n    }\\n\\n    /* Investor CTA */\\n    .investor-cta {\\n      margin: 120px 7vw;\\n      padding: 80px;\\n      border-radius: 28px;\\n      background:\\n        radial-gradient(circle at 80% 30%, rgba(58,125,255,0.22), transparent 32%),\\n        linear-gradient(135deg, #11151b, #0b1017);\\n      border: 1px solid var(--border);\\n      text-align: center;\\n    }\\n\\n    .investor-cta h2 {\\n      max-width: 900px;\\n      margin: 0 auto 22px;\\n      font-size: clamp(2.5rem, 5vw, 5rem);\\n      line-height: 1;\\n      letter-spacing: -0.06em;\\n    }\\n\\n    .investor-cta p {\\n      max-width: 680px;\\n      margin: 0 auto 34px;\\n      color: var(--muted);\\n      font-size: 1.15rem;\\n      line-height: 1.6;\\n    }\\n\\n    .investor-cta .hero-actions {\\n      justify-content: center;\\n    }\\n\\n    /* Footer */\\n    footer {\\n      padding: 72px 7vw 42px;\\n      border-top: 1px solid var(--border);\\n      background: #0b1017;\\n    }\\n\\n    .footer-grid {\\n      display: grid;\\n      grid-template-columns: 1.4fr 1fr 1fr 1fr;\\n      gap: 40px;\\n    }\\n\\n    .footer-brand .logo {\\n      margin-bottom: 14px;\\n      display: inline-block;\\n    }\\n\\n    .footer-brand p {\\n      color: var(--muted);\\n      font-size: 0.92rem;\\n      line-height: 1.6;\\n      max-width: 300px;\\n    }\\n\\n    footer h5 {\\n      color: var(--text);\\n      font-size: 0.8rem;\\n      letter-spacing: 0.12em;\\n      margin: 0 0 18px;\\n    }\\n\\n    footer ul {\\n      list-style: none;\\n      margin: 0;\\n      padding: 0;\\n    }\\n\\n    footer li {\\n      margin-bottom: 12px;\\n    }\\n\\n    footer a {\\n      color: var(--muted);\\n      font-size: 0.9rem;\\n      transition: color 0.2s;\\n    }\\n\\n    footer a:hover { color: var(--text); }\\n\\n    .footer-bottom {\\n      display: flex;\\n      justify-content: space-between;\\n      align-items: center;\\n      margin-top: 56px;\\n      padding-top: 26px;\\n      border-top: 1px solid var(--border);\\n      color: var(--muted);\\n      font-size: 0.8rem;\\n    }\\n\\n    /* Responsive */\\n    @media (max-width: 1100px) {\\n      .hero {\\n        grid-template-columns: 1fr;\\n      }\\n\\n      .why-grid,\\n      .market-stats {\\n        grid-template-columns: repeat(2, 1fr);\\n      }\\n\\n      .moat-grid,\\n      .demo-grid {\\n        grid-template-columns: repeat(2, 1fr);\\n      }\\n\\n      .timeline {\\n        grid-template-columns: 1fr;\\n      }\\n\\n      .timeline-item {\\n        border-right: 0;\\n        border-bottom: 1px solid var(--border);\\n      }\\n\\n      .timeline-item:last-child {\\n        border-bottom: 0;\\n      }\\n\\n      .domain-grid {\\n        grid-template-columns: repeat(3, 1fr);\\n      }\\n\\n      .footer-grid {\\n        grid-template-columns: repeat(2, 1fr);\\n      }\\n    }\\n\\n    @media (max-width: 760px) {\\n      .nav-links {\\n        position: absolute;\\n        top: 100%;\\n        left: 0;\\n        right: 0;\\n        flex-direction: column;\\n        background: rgba(9, 11, 15, 0.96);\\n        backdrop-filter: blur(14px);\\n        border-bottom: 1px solid var(--border);\\n        padding: 20px 7vw;\\n        gap: 18px;\\n        display: none;\\n      }\\n\\n      .nav-links.open {\\n        display: flex;\\n      }\\n\\n      .menu-toggle {\\n        display: flex;\\n      }\\n\\n      .domain-grid {\\n        grid-template-columns: repeat(2, 1fr);\\n      }\\n\\n      .footer-grid {\\n        grid-template-columns: 1fr;\\n      }\\n\\n      .footer-bottom {\\n        flex-direction: column;\\n        gap: 10px;\\n        text-align: center;\\n      }\\n    }\\n\\n    @media (max-width: 680px) {\\n      .hero,\\n      .why-now,\\n      .category,\\n      .market,\\n      .moat,\\n      .demo,\\n      .battlespace,\\n      .competitive,\\n      .roadmap {\\n        padding: 72px 22px;\\n      }\\n\\n      nav { padding: 18px 22px; }\\n\\n      .hero h1 {\\n        font-size: 3.2rem;\\n      }\\n\\n      .hero-actions {\\n        flex-direction: column;\\n      }\\n\\n      .metric-grid,\\n      .why-grid,\\n      .market-stats,\\n      .moat-grid,\\n      .demo-grid {\\n        grid-template-columns: 1fr;\\n      }\\n\\n      .comparison-row {\\n        grid-template-columns: 1fr;\\n      }\\n\\n      .investor-cta {\\n        margin: 72px 22px;\\n        padding: 46px 24px;\\n      }\\n\\n      .matrix-wrapper {\\n        padding: 22px 14px;\\n      }\\n    }\\n  \\u003c/style\\u003e\\n\\u003c/head\\u003e\\n\\u003cbody\\u003e\\n\\n  \\u003cnav\\u003e\\n    \\u003ca href=\\\"#\\\" class=\\\"logo\\\"\\u003eVERITAS\\u003c/a\\u003e\\n    \\u003cdiv class=\\\"nav-links\\\" id=\\\"navLinks\\\"\\u003e\\n      \\u003ca href=\\\"#market\\\"\\u003eMarket\\u003c/a\\u003e\\n      \\u003ca href=\\\"#moat\\\"\\u003eTechnology\\u003c/a\\u003e\\n      \\u003ca href=\\\"#roadmap\\\"\\u003eRoadmap\\u003c/a\\u003e\\n      \\u003ca href=\\\"#investor\\\" class=\\\"nav-cta\\\"\\u003eInvestor Deck\\u003c/a\\u003e\\n    \\u003c/div\\u003e\\n    \\u003cbutton class=\\\"menu-toggle\\\" aria-label=\\\"Toggle menu\\\" onclick=\\\"document.getElementById('navLinks').classList.toggle('open')\\\"\\u003e\\n      \\u003cspan\\u003e\\u003c/span\\u003e\\n      \\u003cspan\\u003e\\u003c/span\\u003e\\n      \\u003cspan\\u003e\\u003c/span\\u003e\\n    \\u003c/button\\u003e\\n  \\u003c/nav\\u003e\\n\\n  \\u003csection class=\\\"hero\\\"\\u003e\\n    \\u003cdiv class=\\\"hero-content\\\"\\u003e\\n      \\u003cdiv class=\\\"eyebrow\\\"\\u003eNARRATIVE INTELLIGENCE · DEFENSE TECHNOLOGY\\u003c/div\\u003e\\n      \\u003ch1\\u003eThe operating system for the information battlespace.\\u003c/h1\\u003e\\n      \\u003cp class=\\\"hero-subtitle\\\"\\u003e\\n        VERITAS detects coordinated influence campaigns before they reach narrative dominance —\\n        across fragmented, multilingual and high-velocity information environments.\\n      \\u003c/p\\u003e\\n      \\u003cdiv class=\\\"hero-actions\\\"\\u003e\\n        \\u003ca href=\\\"#investor\\\" class=\\\"btn btn-primary\\\"\\u003eRequest Investor Materials\\u003c/a\\u003e\\n        \\u003ca href=\\\"#demo\\\" class=\\\"btn btn-secondary\\\"\\u003eWatch Product Demo\\u003c/a\\u003e\\n      \\u003c/div\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"hero-dashboard\\\"\\u003e\\n      \\u003cdiv class=\\\"dash-header\\\"\\u003e\\n        \\u003cspan\\u003eVERITAS LIVE INTELLIGENCE\\u003c/span\\u003e\\n        \\u003cspan class=\\\"status\\\"\\u003eACTIVE MONITORING\\u003c/span\\u003e\\n      \\u003c/div\\u003e\\n\\n      \\u003cdiv class=\\\"alert-card\\\"\\u003e\\n        \\u003cdiv class=\\\"alert-top\\\"\\u003e\\n          \\u003cspan class=\\\"severity\\\"\\u003eHIGH THREAT\\u003c/span\\u003e\\n          \\u003cspan class=\\\"timestamp\\\"\\u003e12:17 UTC\\u003c/span\\u003e\\n        \\u003c/div\\u003e\\n        \\u003ch3\\u003eNarrative emerging: \\\"NATO escalation\\\"\\u003c/h3\\u003e\\n        \\u003cp\\u003eCoordinated amplification detected across Telegram, X and Reddit.\\u003c/p\\u003e\\n\\n        \\u003cdiv class=\\\"metric-grid\\\"\\u003e\\n          \\u003cdiv\\u003e\\n            \\u003cspan class=\\\"metric-label\\\"\\u003eVelocity\\u003c/span\\u003e\\n            \\u003cstrong\\u003e+430%\\u003c/strong\\u003e\\n          \\u003c/div\\u003e\\n          \\u003cdiv\\u003e\\n            \\u003cspan class=\\\"metric-label\\\"\\u003eThreat Score\\u003c/span\\u003e\\n            \\u003cstrong\\u003e82/100\\u003c/strong\\u003e\\n          \\u003c/div\\u003e\\n          \\u003cdiv\\u003e\\n            \\u003cspan class=\\\"metric-label\\\"\\u003eConfidence\\u003c/span\\u003e\\n            \\u003cstrong\\u003e78%\\u003c/strong\\u003e\\n          \\u003c/div\\u003e\\n          \\u003cdiv\\u003e\\n            \\u003cspan class=\\\"metric-label\\\"\\u003eWindow\\u003c/span\\u003e\\n            \\u003cstrong\\u003e\\u0026lt; 6h\\u003c/strong\\u003e\\n          \\u003c/div\\u003e\\n        \\u003c/div\\u003e\\n\\n        \\u003cdiv class=\\\"flow\\\"\\u003e\\n          \\u003cspan\\u003eTelegram\\u003c/span\\u003e\\n          \\u003ci\\u003e\\u003c/i\\u003e\\n          \\u003cspan\\u003eX\\u003c/span\\u003e\\n          \\u003ci\\u003e\\u003c/i\\u003e\\n          \\u003cspan\\u003eReddit\\u003c/span\\u003e\\n          \\u003ci\\u003e\\u003c/i\\u003e\\n          \\u003cspan\\u003eMedia\\u003c/span\\u003e\\n        \\u003c/div\\u003e\\n      \\u003c/div\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003csection class=\\\"why-now\\\"\\u003e\\n    \\u003cdiv class=\\\"section-heading\\\"\\u003e\\n      \\u003cspan\\u003eWHY NOW\\u003c/span\\u003e\\n      \\u003ch2\\u003eThe information environment has crossed a threshold.\\u003c/h2\\u003e\\n      \\u003cp\\u003e\\n        Influence campaigns are no longer slow, manual or platform-native.\\n        They are AI-assisted, multilingual and coordinated across fragmented networks.\\n      \\u003c/p\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"why-grid\\\"\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003eAI-generated influence at scale\\u003c/h3\\u003e\\n        \\u003cp\\u003eSynthetic text, images and agents reduce the cost of coordinated persuasion.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003eFragmented platforms\\u003c/h3\\u003e\\n        \\u003cp\\u003eNarratives move from Telegram to X, Reddit, YouTube and media ecosystems within hours.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003eCrisis-driven vulnerability\\u003c/h3\\u003e\\n        \\u003cp\\u003eElections, wars, energy shocks and migration crises create high-impact attack surfaces.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003eMultilingual blind spots\\u003c/h3\\u003e\\n        \\u003cp\\u003eExisting systems miss regional, diaspora and non-English information spaces.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003csection class=\\\"category\\\"\\u003e\\n    \\u003cdiv class=\\\"section-heading\\\"\\u003e\\n      \\u003cspan\\u003eCATEGORY CREATION\\u003c/span\\u003e\\n      \\u003ch2\\u003eNarrative Intelligence is the missing layer.\\u003c/h2\\u003e\\n      \\u003cp\\u003e\\n        Existing tools observe content. VERITAS analyzes coordination,\\n        propagation and influence dynamics across the information domain.\\n      \\u003c/p\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"comparison\\\"\\u003e\\n      \\u003cdiv class=\\\"comparison-row muted\\\"\\u003e\\n        \\u003cspan\\u003eTraditional Media Monitoring\\u003c/span\\u003e\\n        \\u003cspan\\u003eTracks mentions after publication\\u003c/span\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"comparison-row muted\\\"\\u003e\\n        \\u003cspan\\u003eFact Checking\\u003c/span\\u003e\\n        \\u003cspan\\u003eVerifies claims after narratives spread\\u003c/span\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"comparison-row muted\\\"\\u003e\\n        \\u003cspan\\u003eCyber Threat Intelligence\\u003c/span\\u003e\\n        \\u003cspan\\u003eTracks technical infrastructure and malware\\u003c/span\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"comparison-row active\\\"\\u003e\\n        \\u003cspan\\u003eVERITAS Narrative Intelligence\\u003c/span\\u003e\\n        \\u003cspan\\u003eDetects coordination, propagation and narrative velocity before dominance\\u003c/span\\u003e\\n      \\u003c/div\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003csection id=\\\"market\\\" class=\\\"market\\\"\\u003e\\n    \\u003cdiv class=\\\"section-heading\\\"\\u003e\\n      \\u003cspan\\u003eMARKET\\u003c/span\\u003e\\n      \\u003ch2\\u003eA new security market is forming.\\u003c/h2\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"market-stats\\\"\\u003e\\n      \\u003cdiv class=\\\"stat\\\"\\u003e\\n        \\u003ch3\\u003e$100B+\\u003c/h3\\u003e\\n        \\u003cp\\u003eInformation security and intelligence opportunity\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"stat\\\"\\u003e\\n        \\u003ch3\\u003e5B+\\u003c/h3\\u003e\\n        \\u003cp\\u003eDaily social interactions across open platforms\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"stat\\\"\\u003e\\n        \\u003ch3\\u003e70+\\u003c/h3\\u003e\\n        \\u003cp\\u003eNational elections in major election cycles\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"stat\\\"\\u003e\\n        \\u003ch3\\u003e\\u0026lt;24h\\u003c/h3\\u003e\\n        \\u003cp\\u003eRequired detection window before narrative dominance\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003csection id=\\\"moat\\\" class=\\\"moat\\\"\\u003e\\n    \\u003cdiv class=\\\"section-heading\\\"\\u003e\\n      \\u003cspan\\u003eTECHNOLOGY MOAT\\u003c/span\\u003e\\n      \\u003ch2\\u003eA defensible intelligence layer.\\u003c/h2\\u003e\\n      \\u003cp\\u003e\\n        VERITAS becomes stronger through proprietary narrative datasets,\\n        analyst feedback loops and cross-platform propagation graphs.\\n      \\u003c/p\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"moat-grid\\\"\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003eMultilingual narrative models\\u003c/h3\\u003e\\n        \\u003cp\\u003eModels optimized for culturally specific language, idioms, coded references and diaspora discourse.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003ePropagation graph engine\\u003c/h3\\u003e\\n        \\u003cp\\u003eReconstructs how narratives move between channels, platforms, communities and media layers.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003eAnalyst feedback loops\\u003c/h3\\u003e\\n        \\u003cp\\u003eHuman assessments improve clustering, scoring, source reliability and attribution confidence.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003eRegional intelligence layer\\u003c/h3\\u003e\\n        \\u003cp\\u003eCombines machine analysis with regional expertise in Turkish, Arabic, Kurdish and European discourse spaces.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003eCampaign memory\\u003c/h3\\u003e\\n        \\u003cp\\u003eMaintains a historical memory of previous influence patterns, actors, narratives and propagation signatures.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n      \\u003carticle\\u003e\\n        \\u003ch3\\u003eConfidence scoring\\u003c/h3\\u003e\\n        \\u003cp\\u003eSeparates detection from attribution and expresses uncertainty through transparent confidence levels.\\u003c/p\\u003e\\n      \\u003c/article\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003csection id=\\\"demo\\\" class=\\\"demo\\\"\\u003e\\n    \\u003cdiv class=\\\"section-heading\\\"\\u003e\\n      \\u003cspan\\u003ePRODUCT DEMO\\u003c/span\\u003e\\n      \\u003ch2\\u003eSee it before it spreads.\\u003c/h2\\u003e\\n      \\u003cp\\u003e\\n        VERITAS maps narrative velocity, cross-platform propagation and coordination patterns\\n        in a single operational view.\\n      \\u003c/p\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"demo-grid\\\"\\u003e\\n      \\u003cdiv class=\\\"demo-panel\\\"\\u003e\\n        \\u003cdiv class=\\\"dash-header\\\"\\u003e\\n          \\u003cspan\\u003eNARRATIVE VELOCITY — 72 HOURS\\u003c/span\\u003e\\n          \\u003cspan class=\\\"status\\\"\\u003eLIVE\\u003c/span\\u003e\\n        \\u003c/div\\u003e\\n        \\u003ch3\\u003eTopic: Energy infrastructure\\u003c/h3\\u003e\\n        \\u003cdiv class=\\\"timeline-chart\\\"\\u003e\\n          \\u003cdiv class=\\\"bar\\\" style=\\\"height: 22%\\\"\\u003e\\u003cspan class=\\\"bar-label\\\"\\u003eT-72h\\u003c/span\\u003e\\u003c/div\\u003e\\n          \\u003cdiv class=\\\"bar\\\" style=\\\"height: 30%\\\"\\u003e\\u003cspan class=\\\"bar-label\\\"\\u003eT-60h\\u003c/span\\u003e\\u003c/div\\u003e\\n          \\u003cdiv class=\\\"bar\\\" style=\\\"height: 35%\\\"\\u003e\\u003cspan class=\\\"bar-label\\\"\\u003eT-48h\\u003c/span\\u003e\\u003c/div\\u003e\\n          \\u003cdiv class=\\\"bar\\\" style=\\\"height: 44%\\\"\\u003e\\u003cspan class=\\\"bar-label\\\"\\u003eT-36h\\u003c/span\\u003e\\u003c/div\\u003e\\n          \\u003cdiv class=\\\"bar\\\" style=\\\"height: 58%\\\"\\u003e\\u003cspan class=\\\"bar-label\\\"\\u003eT-24h\\u003c/span\\u003e\\u003c/div\\u003e\\n          \\u003cdiv class=\\\"bar\\\" style=\\\"height: 72%\\\"\\u003e\\u003cspan class=\\\"bar-label\\\"\\u003eT-12h\\u003c/span\\u003e\\u003c/div\\u003e\\n          \\u003cdiv class=\\\"bar active\\\" style=\\\"height: 100%\\\"\\u003e\\u003cspan class=\\\"bar-label\\\"\\u003eNOW\\u003c/span\\u003e\\u003c/div\\u003e\\n        \\u003c/div\\u003e\\n        \\u003cp style=\\\"color: var(--muted); line-height: 1.55; margin: 0;\\\"\\u003e\\n          Velocity spike detected 18 hours ahead of mainstream amplification.\\n          Coordinated seeding observed across fringe channels before platform migration.\\n        \\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n\\n      \\u003cdiv class=\\\"demo-panel\\\"\\u003e\\n        \\u003cdiv class=\\\"dash-header\\\"\\u003e\\n          \\u003cspan\\u003eCOORDINATION NETWORK\\u003c/span\\u003e\\n          \\u003cspan class=\\\"status\\\"\\u003eCLUSTERING\\u003c/span\\u003e\\n        \\u003c/div\\u003e\\n        \\u003ch3\\u003eCross-platform actor graph\\u003c/h3\\u003e\\n        \\u003csvg class=\\\"network-graph\\\" viewBox=\\\"0 0 340 170\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\\u003e\\n          \\u003cdefs\\u003e\\n            \\u003cradialGradient id=\\\"nodeGlow\\\" cx=\\\"50%\\\" cy=\\\"50%\\\" r=\\\"50%\\\"\\u003e\\n              \\u003cstop offset=\\\"0%\\\" stop-color=\\\"#3a7dff\\\" stop-opacity=\\\"0.35\\\" /\\u003e\\n              \\u003cstop offset=\\\"100%\\\" stop-color=\\\"#3a7dff\\\" stop-opacity=\\\"0\\\" /\\u003e\\n            \\u003c/radialGradient\\u003e\\n          \\u003c/defs\\u003e\\n          \\u003c!-- Edges --\\u003e\\n          \\u003cg stroke=\\\"rgba(58,125,255,0.25)\\\" stroke-width=\\\"1\\\"\\u003e\\n            \\u003cline x1=\\\"170\\\" y1=\\\"85\\\" x2=\\\"100\\\" y2=\\\"45\\\" /\\u003e\\n            \\u003cline x1=\\\"170\\\" y1=\\\"85\\\" x2=\\\"240\\\" y2=\\\"45\\\" /\\u003e\\n            \\u003cline x1=\\\"170\\\" y1=\\\"85\\\" x2=\\\"90\\\" y2=\\\"120\\\" /\\u003e\\n            \\u003cline x1=\\\"170\\\" y1=\\\"85\\\" x2=\\\"250\\\" y2=\\\"120\\\" /\\u003e\\n            \\u003cline x1=\\\"170\\\" y1=\\\"85\\\" x2=\\\"170\\\" y2=\\\"30\\\" /\\u003e\\n            \\u003cline x1=\\\"100\\\" y1=\\\"45\\\" x2=\\\"90\\\" y2=\\\"120\\\" /\\u003e\\n            \\u003cline x1=\\\"240\\\" y1=\\\"45\\\" x2=\\\"250\\\" y2=\\\"120\\\" /\\u003e\\n            \\u003cline x1=\\\"90\\\" y1=\\\"120\\\" x2=\\\"40\\\" y2=\\\"145\\\" /\\u003e\\n            \\u003cline x1=\\\"250\\\" y1=\\\"120\\\" x2=\\\"300\\\" y2=\\\"145\\\" /\\u003e\\n          \\u003c/g\\u003e\\n          \\u003c!-- Nodes --\\u003e\\n          \\u003ccircle cx=\\\"170\\\" cy=\\\"85\\\" r=\\\"28\\\" fill=\\\"url(#nodeGlow)\\\" /\\u003e\\n          \\u003ccircle cx=\\\"170\\\" cy=\\\"85\\\" r=\\\"12\\\" fill=\\\"#3a7dff\\\" /\\u003e\\n          \\u003ccircle cx=\\\"170\\\" cy=\\\"30\\\" r=\\\"7\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ccircle cx=\\\"100\\\" cy=\\\"45\\\" r=\\\"8\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ccircle cx=\\\"240\\\" cy=\\\"45\\\" r=\\\"8\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ccircle cx=\\\"90\\\" cy=\\\"120\\\" r=\\\"7\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ccircle cx=\\\"250\\\" cy=\\\"120\\\" r=\\\"7\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ccircle cx=\\\"40\\\" cy=\\\"145\\\" r=\\\"5\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ccircle cx=\\\"300\\\" cy=\\\"145\\\" r=\\\"5\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n        \\u003c/svg\\u003e\\n        \\u003cdiv class=\\\"graph-key\\\"\\u003e\\n          \\u003cdiv class=\\\"key-item\\\"\\u003e\\u003cspan class=\\\"key-dot\\\"\\u003e\\u003c/span\\u003eCoordination hub\\u003c/div\\u003e\\n          \\u003cdiv class=\\\"key-item\\\"\\u003e\\u003cspan class=\\\"key-dot sub\\\"\\u003e\\u003c/span\\u003eAmplifier / bridge\\u003c/div\\u003e\\n          \\u003cdiv class=\\\"key-item\\\" style=\\\"margin-left: auto;\\\"\\u003e12 related clusters detected\\u003c/div\\u003e\\n        \\u003c/div\\u003e\\n      \\u003c/div\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003csection class=\\\"battlespace\\\"\\u003e\\n    \\u003cdiv class=\\\"section-heading\\\"\\u003e\\n      \\u003cspan\\u003eTHE INFORMATION BATTLESPACE\\u003c/span\\u003e\\n      \\u003ch2\\u003eThe fifth dimension of conflict.\\u003c/h2\\u003e\\n      \\u003cp\\u003e\\n        Just as cyber became a recognized domain, information is now a contested battlespace.\\n        VERITAS is built to operate inside it.\\n      \\u003c/p\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"domain-grid\\\"\\u003e\\n      \\u003cdiv class=\\\"domain\\\"\\u003e\\n        \\u003csvg class=\\\"domain-icon\\\" viewBox=\\\"0 0 24 24\\\"\\u003e\\u003cpath d=\\\"M3 21h18M5 21V10l7-7 7 7v11\\\"/\\u003e\\u003c/svg\\u003e\\n        \\u003ch4\\u003eLand\\u003c/h4\\u003e\\n        \\u003cp\\u003eTraditional kinetic domain\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"domain\\\"\\u003e\\n        \\u003csvg class=\\\"domain-icon\\\" viewBox=\\\"0 0 24 24\\\"\\u003e\\u003cpath d=\\\"M2 12h20M12 2a10 10 0 0 1 0 20 10 10 0 0 1 0-20\\\"/\\u003e\\u003c/svg\\u003e\\n        \\u003ch4\\u003eSea\\u003c/h4\\u003e\\n        \\u003cp\\u003eMaritime strategic domain\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"domain\\\"\\u003e\\n        \\u003csvg class=\\\"domain-icon\\\" viewBox=\\\"0 0 24 24\\\"\\u003e\\u003cpath d=\\\"M12 2l7 19H5L12 2z\\\"/\\u003e\\u003c/svg\\u003e\\n        \\u003ch4\\u003eAir\\u003c/h4\\u003e\\n        \\u003cp\\u003eAerospace dominance domain\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"domain\\\"\\u003e\\n        \\u003csvg class=\\\"domain-icon\\\" viewBox=\\\"0 0 24 24\\\"\\u003e\\u003cpath d=\\\"M12 2a10 10 0 0 1 0 20 10 10 0 0 1 0-20M2 12h20M7 7l10 10M7 17L17 7\\\"/\\u003e\\u003c/svg\\u003e\\n        \\u003ch4\\u003eCyber\\u003c/h4\\u003e\\n        \\u003cp\\u003eNetwork security domain\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"domain\\\"\\u003e\\n        \\u003csvg class=\\\"domain-icon\\\" viewBox=\\\"0 0 24 24\\\"\\u003e\\u003ccircle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"9\\\"/\\u003e\\u003cpath d=\\\"M12 2v20M2 12h20\\\"/\\u003e\\u003c/svg\\u003e\\n        \\u003ch4\\u003eSpace\\u003c/h4\\u003e\\n        \\u003cp\\u003eOrbital operations domain\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"domain active\\\"\\u003e\\n        \\u003csvg class=\\\"domain-icon\\\" viewBox=\\\"0 0 24 24\\\"\\u003e\\u003cpath d=\\\"M12 2l2.5 7.5L22 12l-7.5 2.5L12 22l-2.5-7.5L2 12l7.5-2.5L12 2z\\\"/\\u003e\\u003c/svg\\u003e\\n        \\u003ch4\\u003eInformation\\u003c/h4\\u003e\\n        \\u003cp\\u003eNarrative \\u0026amp; influence domain\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cp class=\\\"battlespace-note\\\"\\u003e\\n      VERITAS treats the information environment as a contested operational domain:\\n      detect, map, understand and respond to coordinated influence before it achieves strategic effect.\\n    \\u003c/p\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003csection class=\\\"competitive\\\"\\u003e\\n    \\u003cdiv class=\\\"section-heading\\\"\\u003e\\n      \\u003cspan\\u003eCOMPETITIVE LANDSCAPE\\u003c/span\\u003e\\n      \\u003ch2\\u003ePositioned where government need meets narrative capability.\\u003c/h2\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"matrix-wrapper\\\"\\u003e\\n      \\u003ch3\\u003eNarrative Capability × Government Focus\\u003c/h3\\u003e\\n      \\u003cp class=\\\"subtitle\\\"\\u003eHow VERITAS compares to adjacent intelligence and analytics platforms\\u003c/p\\u003e\\n      \\u003csvg class=\\\"matrix-svg\\\" viewBox=\\\"0 0 720 460\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Competitive positioning matrix\\\"\\u003e\\n        \\u003cdefs\\u003e\\n          \\u003cpattern id=\\\"grid\\\" width=\\\"40\\\" height=\\\"40\\\" patternUnits=\\\"userSpaceOnUse\\\"\\u003e\\n            \\u003cpath d=\\\"M 40 0 L 0 0 0 40\\\" fill=\\\"none\\\" stroke=\\\"rgba(255,255,255,0.05)\\\" stroke-width=\\\"1\\\"/\\u003e\\n          \\u003c/pattern\\u003e\\n        \\u003c/defs\\u003e\\n\\n        \\u003c!-- Background --\\u003e\\n        \\u003crect x=\\\"60\\\" y=\\\"40\\\" width=\\\"600\\\" height=\\\"360\\\" fill=\\\"url(#grid)\\\" /\\u003e\\n        \\u003crect x=\\\"60\\\" y=\\\"40\\\" width=\\\"600\\\" height=\\\"360\\\" fill=\\\"none\\\" stroke=\\\"rgba(255,255,255,0.12)\\\" stroke-width=\\\"1\\\" /\\u003e\\n\\n        \\u003c!-- Axes --\\u003e\\n        \\u003cline x1=\\\"60\\\" y1=\\\"400\\\" x2=\\\"660\\\" y2=\\\"400\\\" stroke=\\\"rgba(255,255,255,0.25)\\\" stroke-width=\\\"1.5\\\" /\\u003e\\n        \\u003cline x1=\\\"60\\\" y1=\\\"40\\\" x2=\\\"60\\\" y2=\\\"400\\\" stroke=\\\"rgba(255,255,255,0.25)\\\" stroke-width=\\\"1.5\\\" /\\u003e\\n\\n        \\u003c!-- Quadrant labels --\\u003e\\n        \\u003ctext x=\\\"360\\\" y=\\\"30\\\" text-anchor=\\\"middle\\\" fill=\\\"var(--muted)\\\" font-size=\\\"12\\\" font-weight=\\\"600\\\"\\u003eHIGH NARRATIVE CAPABILITY\\u003c/text\\u003e\\n        \\u003ctext x=\\\"360\\\" y=\\\"430\\\" text-anchor=\\\"middle\\\" fill=\\\"var(--muted)\\\" font-size=\\\"12\\\" font-weight=\\\"600\\\"\\u003eLOW NARRATIVE CAPABILITY\\u003c/text\\u003e\\n        \\u003ctext x=\\\"35\\\" y=\\\"225\\\" text-anchor=\\\"middle\\\" fill=\\\"var(--muted)\\\" font-size=\\\"12\\\" font-weight=\\\"600\\\" transform=\\\"rotate(-90 35 225)\\\"\\u003eHIGH GOVERNMENT FOCUS\\u003c/text\\u003e\\n        \\u003ctext x=\\\"685\\\" y=\\\"225\\\" text-anchor=\\\"middle\\\" fill=\\\"var(--muted)\\\" font-size=\\\"12\\\" font-weight=\\\"600\\\" transform=\\\"rotate(90 685 225)\\\"\\u003eLOW GOVERNMENT FOCUS\\u003c/text\\u003e\\n\\n        \\u003c!-- Axis ends --\\u003e\\n        \\u003ctext x=\\\"360\\\" y=\\\"418\\\" text-anchor=\\\"middle\\\" fill=\\\"rgba(255,255,255,0.5)\\\" font-size=\\\"10\\\"\\u003eGovernment Focus →\\u003c/text\\u003e\\n        \\u003ctext x=\\\"52\\\" y=\\\"225\\\" text-anchor=\\\"middle\\\" fill=\\\"rgba(255,255,255,0.5)\\\" font-size=\\\"10\\\" transform=\\\"rotate(-90 52 225)\\\"\\u003eNarrative Capability →\\u003c/text\\u003e\\n\\n        \\u003c!-- Mid-lines --\\u003e\\n        \\u003cline x1=\\\"60\\\" y1=\\\"220\\\" x2=\\\"660\\\" y2=\\\"220\\\" stroke=\\\"rgba(255,255,255,0.08)\\\" stroke-dasharray=\\\"4 4\\\" /\\u003e\\n        \\u003cline x1=\\\"360\\\" y1=\\\"40\\\" x2=\\\"360\\\" y2=\\\"400\\\" stroke=\\\"rgba(255,255,255,0.08)\\\" stroke-dasharray=\\\"4 4\\\" /\\u003e\\n\\n        \\u003c!-- Competitors --\\u003e\\n        \\u003cg\\u003e\\n          \\u003c!-- Recorded Future --\\u003e\\n          \\u003ccircle cx=\\\"320\\\" cy=\\\"130\\\" r=\\\"7\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ctext x=\\\"320\\\" y=\\\"120\\\" text-anchor=\\\"middle\\\" fill=\\\"#8d99aa\\\" font-size=\\\"11\\\" font-weight=\\\"600\\\"\\u003eRecorded Future\\u003c/text\\u003e\\n\\n          \\u003c!-- Graphika --\\u003e\\n          \\u003ccircle cx=\\\"260\\\" cy=\\\"170\\\" r=\\\"7\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ctext x=\\\"260\\\" y=\\\"160\\\" text-anchor=\\\"middle\\\" fill=\\\"#8d99aa\\\" font-size=\\\"11\\\" font-weight=\\\"600\\\"\\u003eGraphika\\u003c/text\\u003e\\n\\n          \\u003c!-- NewsGuard --\\u003e\\n          \\u003ccircle cx=\\\"180\\\" cy=\\\"250\\\" r=\\\"7\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ctext x=\\\"180\\\" y=\\\"240\\\" text-anchor=\\\"middle\\\" fill=\\\"#8d99aa\\\" font-size=\\\"11\\\" font-weight=\\\"600\\\"\\u003eNewsGuard\\u003c/text\\u003e\\n\\n          \\u003c!-- Brandwatch --\\u003e\\n          \\u003ccircle cx=\\\"540\\\" cy=\\\"290\\\" r=\\\"7\\\" fill=\\\"#8d99aa\\\" /\\u003e\\n          \\u003ctext x=\\\"540\\\" y=\\\"280\\\" text-anchor=\\\"middle\\\" fill=\\\"#8d99aa\\\" font-size=\\\"11\\\" font-weight=\\\"600\\\"\\u003eBrandwatch\\u003c/text\\u003e\\n        \\u003c/g\\u003e\\n\\n        \\u003c!-- VERITAS --\\u003e\\n        \\u003cg\\u003e\\n          \\u003ccircle cx=\\\"560\\\" cy=\\\"90\\\" r=\\\"22\\\" fill=\\\"rgba(58,125,255,0.2)\\\" /\\u003e\\n          \\u003ccircle cx=\\\"560\\\" cy=\\\"90\\\" r=\\\"10\\\" fill=\\\"#3a7dff\\\" /\\u003e\\n          \\u003ctext x=\\\"560\\\" y=\\\"68\\\" text-anchor=\\\"middle\\\" fill=\\\"#3a7dff\\\" font-size=\\\"14\\\" font-weight=\\\"900\\\"\\u003eVERITAS\\u003c/text\\u003e\\n          \\u003ctext x=\\\"560\\\" y=\\\"126\\\" text-anchor=\\\"middle\\\" fill=\\\"#3a7dff\\\" font-size=\\\"10\\\" font-weight=\\\"600\\\"\\u003eNarrative Intelligence\\u003c/text\\u003e\\n        \\u003c/g\\u003e\\n      \\u003c/svg\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003csection id=\\\"roadmap\\\" class=\\\"roadmap\\\"\\u003e\\n    \\u003cdiv class=\\\"section-heading\\\"\\u003e\\n      \\u003cspan\\u003eROADMAP\\u003c/span\\u003e\\n      \\u003ch2\\u003eFrom prototype to critical infrastructure.\\u003c/h2\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"timeline\\\"\\u003e\\n      \\u003cdiv class=\\\"timeline-item\\\"\\u003e\\n        \\u003cspan\\u003e2026\\u003c/span\\u003e\\n        \\u003ch3\\u003ePrototype\\u003c/h3\\u003e\\n        \\u003cp\\u003eNarrative detection engine, dashboard and early propagation graph.\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"timeline-item\\\"\\u003e\\n        \\u003cspan\\u003e2027\\u003c/span\\u003e\\n        \\u003ch3\\u003ePilot Deployments\\u003c/h3\\u003e\\n        \\u003cp\\u003eInstitutional pilots with election, security and critical infrastructure stakeholders.\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"timeline-item\\\"\\u003e\\n        \\u003cspan\\u003e2028\\u003c/span\\u003e\\n        \\u003ch3\\u003eAgency-Grade Platform\\u003c/h3\\u003e\\n        \\u003cp\\u003eAnalyst workflows, reporting, confidence scoring and secure deployment options.\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"timeline-item\\\"\\u003e\\n        \\u003cspan\\u003e2029\\u003c/span\\u003e\\n        \\u003ch3\\u003eEuropean Expansion\\u003c/h3\\u003e\\n        \\u003cp\\u003eExpansion into EU, NATO-adjacent and national security environments.\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv class=\\\"timeline-item\\\"\\u003e\\n        \\u003cspan\\u003e2030\\u003c/span\\u003e\\n        \\u003ch3\\u003eInformation Infrastructure\\u003c/h3\\u003e\\n        \\u003cp\\u003eGlobal narrative intelligence layer for democratic resilience.\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003csection id=\\\"investor\\\" class=\\\"investor-cta\\\"\\u003e\\n    \\u003ch2\\u003eInvest in the infrastructure layer for the information domain.\\u003c/h2\\u003e\\n    \\u003cp\\u003e\\n      VERITAS is building Narrative Intelligence for governments,\\n      democratic institutions and critical infrastructure operators.\\n    \\u003c/p\\u003e\\n\\n    \\u003cdiv class=\\\"hero-actions\\\"\\u003e\\n      \\u003ca href=\\\"mailto:investors@veritas.ai\\\" class=\\\"btn btn-primary\\\"\\u003eRequest Investor Materials\\u003c/a\\u003e\\n      \\u003ca href=\\\"mailto:founders@veritas.ai\\\" class=\\\"btn btn-secondary\\\"\\u003eSchedule Founder Meeting\\u003c/a\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/section\\u003e\\n\\n  \\u003cfooter\\u003e\\n    \\u003cdiv class=\\\"footer-grid\\\"\\u003e\\n      \\u003cdiv class=\\\"footer-brand\\\"\\u003e\\n        \\u003cspan class=\\\"logo\\\"\\u003eVERITAS\\u003c/span\\u003e\\n        \\u003cp\\u003eNarrative Intelligence for Democratic Societies. Detecting coordinated influence before it reaches dominance.\\u003c/p\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv\\u003e\\n        \\u003ch5\\u003ePRODUCT\\u003c/h5\\u003e\\n        \\u003cul\\u003e\\n          \\u003cli\\u003e\\u003ca href=\\\"#moat\\\"\\u003eTechnology\\u003c/a\\u003e\\u003c/li\\u003e\\n          \\u003cli\\u003e\\u003ca href=\\\"#demo\\\"\\u003eDemo\\u003c/a\\u003e\\u003c/li\\u003e\\n          \\u003cli\\u003e\\u003ca href=\\\"#roadmap\\\"\\u003eRoadmap\\u003c/a\\u003e\\u003c/li\\u003e\\n        \\u003c/ul\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv\\u003e\\n        \\u003ch5\\u003eINVESTORS\\u003c/h5\\u003e\\n        \\u003cul\\u003e\\n          \\u003cli\\u003e\\u003ca href=\\\"#market\\\"\\u003eMarket\\u003c/a\\u003e\\u003c/li\\u003e\\n          \\u003cli\\u003e\\u003ca href=\\\"mailto:investors@veritas.ai\\\"\\u003eInvestor Materials\\u003c/a\\u003e\\u003c/li\\u003e\\n          \\u003cli\\u003e\\u003ca href=\\\"mailto:founders@veritas.ai\\\"\\u003eFounder Meeting\\u003c/a\\u003e\\u003c/li\\u003e\\n        \\u003c/ul\\u003e\\n      \\u003c/div\\u003e\\n      \\u003cdiv\\u003e\\n        \\u003ch5\\u003eCONTACT\\u003c/h5\\u003e\\n        \\u003cul\\u003e\\n          \\u003cli\\u003e\\u003ca href=\\\"mailto:briefing@veritas-intelligence.com\\\"\\u003ebriefing@veritas-intelligence.com\\u003c/a\\u003e\\u003c/li\\u003e\\n          \\u003cli\\u003e\\u003cspan style=\\\"color: var(--muted); font-size: 0.9rem;\\\"\\u003eEU-based\\u003c/span\\u003e\\u003c/li\\u003e\\n        \\u003c/ul\\u003e\\n      \\u003c/div\\u003e\\n    \\u003c/div\\u003e\\n\\n    \\u003cdiv class=\\\"footer-bottom\\\"\\u003e\\n      \\u003cspan\\u003e\\u0026copy; 2026 VERITAS Intelligence. All rights reserved.\\u003c/span\\u003e\\n      \\u003cdiv style=\\\"display: flex; gap: 24px;\\\"\\u003e\\n        \\u003ca href=\\\"#\\\"\\u003ePrivacy\\u003c/a\\u003e\\n        \\u003ca href=\\\"#\\\"\\u003eSecurity\\u003c/a\\u003e\\n        \\u003ca href=\\\"#\\\"\\u003eTerms\\u003c/a\\u003e\\n      \\u003c/div\\u003e\\n    \\u003c/div\\u003e\\n  \\u003c/footer\\u003e\\n\\n\\u003c/body\\u003e\\n\\u003c/html\\u003e\\n\"}"
          }
        }
      ]
    },
    {
      "role": "tool",
      "name": "write_file",
      "content": "{\"bytes_written\": 36660, \"dirs_created\": true, \"lint\": {\"status\": \"skipped\", \"message\": \"No linter for .html files\"}, \"_warning\": \"/DATA/veritas-website.html was last read with offset/limit pagination (partial view). Re-read the whole file before overwriting it.\"}",
      "tool_call_id": "functions.write_file:1"
    },
    {
      "role": "assistant",
      "content": "",
      "reasoning": null,
      "finish_reason": "tool_calls",
      "tool_calls": [
        {
          "id": "functions.read_file:2",
          "call_id": "functions.read_file:2",
          "response_item_id": "fc_functionsread_file2",
          "type": "function",
          "function": {
            "name": "read_file",
            "arguments": "{\"limit\":50,\"path\":\"/DATA/veritas-website.html\"}"
          }
        },
        {
          "id": "functions.search_files:3",
          "call_id": "functions.search_files:3",
          "response_item_id": "fc_functionssearch_files3",
          "type": "function",
          "function": {
            "name": "search_files",
            "arguments": "{\"pattern\":\"\\u003csection|\\u003c\\\\/section\\u003e|\\u003csvg|\\u003c/svg\",\"path\":\"/DATA/veritas-website.html\",\"output_mode\":\"count\"}"
          }
        }
      ]
    },
    {
      "role": "tool",
      "name": "read_file",
      "content": "{\"content\": \"     1|<!DOCTYPE html>\\n     2|<html lang=\\\"en\\\">\\n     3|<head>\\n     4|  <meta charset=\\\"UTF-8\\\" />\\n     5|  <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" />\\n     6|  <title>VERITAS — The Operating System for the Information Battlespace</title>\\n     7|  <meta name=\\\"description\\\" content=\\\"VERITAS detects coordinated influence campaigns before they reach narrative dominance across the information domain.\\\" />\\n     8|  <link rel=\\\"preconnect\\\" href=\\\"https://fonts.googleapis.com\\\" />\\n     9|  <link rel=\\\"preconnect\\\" href=\\\"https://fonts.gstatic.com\\\" crossorigin />\\n    10|  <link href=\\\"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Inter:wght@300;400;500;600;700;800;900&display=swap\\\" rel=\\\"stylesheet\\\" />\\n    11|  <style>\\n    12|    :root {\\n    13|      --bg: #090b0f;\\n    14|      --panel: #11151b;\\n    15|      --panel-2: #151b24;\\n    16|      --border: rgba(255,255,255,0.08);\\n    17|      --text: #f4f7fb;\\n    18|      --muted: #8d99aa;\\n    19|      --blue: #3a7dff;\\n    20|      --green: #2ecc71;\\n    21|      --orange: #ffb547;\\n    22|      --red: #ff5a5a;\\n    23|    }\\n    24|\\n    25|    * { box-sizing: border-box; }\\n    26|\\n    27|    html {\\n    28|      scroll-behavior: smooth;\\n    29|      background: var(--bg);\\n    30|    }\\n    31|\\n    32|    body {\\n    33|      margin: 0;\\n    34|      background: var(--bg);\\n    35|      color: var(--text);\\n    36|      font-family: Inter, Geist, \\\"IBM Plex Sans\\\", system-ui, sans-serif;\\n    37|      -webkit-font-smoothing: antialiased;\\n    38|      line-height: 1.6;\\n    39|    }\\n    40|\\n    41|    a { color: inherit; text-decoration: none; }\\n    42|\\n    43|    /* Navigation */\\n    44|    nav {\\n    45|      position: sticky;\\n    46|      top: 0;\\n    47|      z-index: 100;\\n    48|      display: flex;\\n    49|      align-items: center;\\n    50|      justify-content: space-between;\\n    51|\", \"total_lines\": 1358, \"file_size\": 36660, \"truncated\": true, \"hint\": \"Use offset=51 to continue reading (showing 1-50 of 1358 lines)\", \"is_binary\": false, \"is_image\": false}",
      "tool_call_id": "functions.read_file:2"
    },
    {
      "role": "tool",
      "name": "search_files",
      "content": "{\"total_count\": 0, \"counts\": {\"/DATA/veritas-website.html\": 0}}",
      "tool_call_id": "functions.search_files:3"
    },
    {
      "role": "assistant",
      "content": "",
      "reasoning": null,
      "finish_reason": "tool_calls",
      "tool_calls": [
        {
          "id": "functions.terminal:4",
          "call_id": "functions.terminal:4",
          "response_item_id": "fc_functionsterminal4",
          "type": "function",
          "function": {
            "name": "terminal",
            "arguments": "{\"command\":\"python3 -c \\\"\\nimport re\\nhtml = open('/DATA/veritas-website.html').read()\\nprint('bytes:', len(html))\\nsections = re.findall(r'\\u003csection[^\\u003e]*\\u003e', html)\\nprint('sections:', len(sections))\\nprint(re.findall(r'\\u003csection[^\\u003e]*id=\\\\\\\"([^\\\\\\\"]*)\\\\\\\"', html))\\nprint('svgs:', html.count('\\u003csvg'))\\nprint('closed sections:', html.count('\\u003c/section\\u003e'))\\nprint('closed svg:', html.count('\\u003c/svg\\u003e'))\\nprint('html tag:', html.count('\\u003chtml') and html.count('\\u003c/html\\u003e'))\\nprint('body tag:', html.count('\\u003cbody') and html.count('\\u003c/body\\u003e'))\\nfor s in ['Hero','Why Now','Category Creation','Market','Technology Moat','Product Demo','Information Battlespace','Competitive Landscape','Roadmap','Investor CTA','Footer']:\\n    print(s, 'OK' if s.lower().replace(' ','-') in html.lower() or s.replace(' ','').lower() in html.lower() else 'MISSING')\\n\\\"\\n\"}"
          }
        }
      ]
    },
    {
      "role": "tool",
      "name": "terminal",
      "content": "{\"output\": \"bytes: 36648\\nsections: 10\\n['market', 'moat', 'demo', 'roadmap', 'investor']\\nsvgs: 8\\nclosed sections: 10\\nclosed svg: 8\\nhtml tag: 1\\nbody tag: 1\\nHero OK\\nWhy Now OK\\nCategory Creation MISSING\\nMarket OK\\nTechnology Moat MISSING\\nProduct Demo MISSING\\nInformation Battlespace MISSING\\nCompetitive Landscape MISSING\\nRoadmap OK\\nInvestor CTA OK\\nFooter OK\", \"exit_code\": 0, \"error\": null}",
      "tool_call_id": "functions.terminal:4"
    },
    {
      "role": "assistant",
      "content": "",
      "reasoning": null,
      "finish_reason": "tool_calls",
      "tool_calls": [
        {
          "id": "functions.terminal:5",
          "call_id": "functions.terminal:5",
          "response_item_id": "fc_functionsterminal5",
          "type": "function",
          "function": {
            "name": "terminal",
            "arguments": "{\"command\":\"python3 -c \\\"\\nhtml = open('/DATA/veritas-website.html').read()\\nfor label in ['Category Creation','WHY NOW','TECHNOLOGY MOAT','PRODUCT DEMO','THE INFORMATION BATTLESPACE','COMPETITIVE LANDSCAPE','Narrative Capability']:\\n    print(label, 'found' if label in html else 'MISSING')\\n\\\"\\n\"}"
          }
        }
      ]
    },
    {
      "role": "tool",
      "name": "terminal",
      "content": "{\"output\": \"Category Creation found\\nWHY NOW found\\nTECHNOLOGY MOAT found\\nPRODUCT DEMO found\\nTHE INFORMATION BATTLESPACE found\\nCOMPETITIVE LANDSCAPE found\\nNarrative Capability found\", \"exit_code\": 0, \"error\": null}",
      "tool_call_id": "functions.terminal:5"
    },
    {
      "role": "assistant",
      "content": "",
      "reasoning": null,
      "finish_reason": "tool_calls",
      "tool_calls": [
        {
          "id": "functions.terminal:6",
          "call_id": "functions.terminal:6",
          "response_item_id": "fc_functionsterminal6",
          "type": "function",
          "function": {
            "name": "terminal",
            "arguments": "{\"command\":\"python3 -c \\\"\\nhtml = open('/DATA/veritas-website.html').read()\\nfor x in ['--blue: #3a7dff','--bg: #090b0f','Inter:wght@300;400;500;600;700;800;900','IBM+Plex+Sans']:\\n    print(x, 'OK' if x in html else 'MISSING')\\nfor y in ['founder','free trial','fake news','censorship','GRU','€','cyberpunk']:\\n    print(y, 'FOUND' if y.lower() in html.lower() else 'absent')\\n\\\"\\n\"}"
          }
        }
      ]
    },
    {
      "role": "tool",
      "name": "terminal",
      "content": "{\"output\": \"--blue: #3a7dff OK\\n--bg: #090b0f OK\\nInter:wght@300;400;500;600;700;800;900 OK\\nIBM+Plex+Sans OK\\nfounder FOUND\\nfree trial absent\\nfake news absent\\ncensorship absent\\nGRU absent\\n€ absent\\ncyberpunk absent\", \"exit_code\": 0, \"error\": null}",
      "tool_call_id": "functions.terminal:6"
    },
    {
      "role": "assistant",
      "content": "",
      "reasoning": null,
      "finish_reason": "tool_calls",
      "tool_calls": [
        {
          "id": "functions.search_files:7",
          "call_id": "functions.search_files:7",
          "response_item_id": "fc_functionssearch_files7",
          "type": "function",
          "function": {
            "name": "search_files",
            "arguments": "{\"path\":\"/DATA/veritas-website.html\",\"pattern\":\"founder|Founder\",\"limit\":20,\"output_mode\":\"content\"}"
          }
        }
      ]
    },
    {
      "role": "tool",
      "name": "search_files",
      "content": "{\"total_count\": 0}",
      "tool_call_id": "functions.search_files:7"
    },
    {
      "role": "assistant",
      "content": "",
      "reasoning": null,
      "finish_reason": "tool_calls",
      "tool_calls": [
        {
          "id": "functions.terminal:8",
          "call_id": "functions.terminal:8",
          "response_item_id": "fc_functionsterminal8",
          "type": "function",
          "function": {
            "name": "terminal",
            "arguments": "{\"command\":\"python3 -c \\\"\\nhtml = open('/DATA/veritas-website.html').read()\\nprint('founder count:', html.lower().count('founder'))\\nprint('founders@veritas.ai:', 'founders@veritas.ai' in html)\\n\\\"\\n\"}"
          }
        }
      ]
    },
    {
      "role": "tool",
      "name": "terminal",
      "content": "{\"output\": \"founder count: 4\\nfounders@veritas.ai: True\", \"exit_code\": 0, \"error\": null}",
      "tool_call_id": "functions.terminal:8"
    },
    {
      "role": "assistant",
      "content": "The previous verification script reported \"founder FOUND\" because of the `founders@veritas.ai` mailto address in the Investor CTA, which is part of the exact provided HTML for that section. That is acceptable since the user explicitly provided that CTA code. The mailto is just a contact link, not a founder story/bio. No other forbidden content was detected. The build is complete.\n\n**Summary:**\n\n- Rebuilt `/DATA/veritas-website.html` as a single self-contained HTML file with all CSS inline.\n- Implemented the exact HTML/CSS provided for: Hero, Why Now, Category Creation, Market Stats, Technology Moat, Roadmap, and Investor CTA.\n- Added matching-design sections: Product Demo (dashboard panels with propagation timeline + SVG coordination network), Information Battlespace (domain grid highlighting Information), Competitive Landscape (SVG 2x2 positioning matrix with VERITAS top-right and Recorded Future, Graphika, NewsGuard, Brandwatch placed), and a clean Footer.\n- Loaded Google Fonts: Inter (300–900) + IBM Plex Sans (400–700).\n- Used design system: `#090b0f` background, `#3a7dff` accent, `--panel`/`--panel-2` variables.\n- Responsive breakpoints per spec; added mobile nav toggle with minimal inline JS.\n- Excluded founder story, SaaS cards, cyberpunk styling, fake news/censorship language, specific attribution claims, euro pricing, and named country case studies.\n- Verified: valid structure, 10 sections closed, 8 SVGs balanced, fonts and colors present, no forbidden messaging beyond the provided `founders@veritas.ai` CTA link.",
      "reasoning": null,
      "finish_reason": "stop"
    }
  ]
}