... quote line)
- If nothing fits, return "codes": [].
- Output MUST be a SINGLE JSON object. No extra text.

OUTPUT JSON SCHEMA:
{{
  "block_id": "{block_id}",
  "codes": [
    {{"code":"...", "quote":"...", "line":"L0123"}}
  ]
}}

CODEBOOK v2.0 (use only codes from here):
{codebook_text}

TEXT BLOCK (line-numbered):
{numbered}
""".strip()

    resp = call_ollama_generate(args.ollama_url, args.model, ...