#!/usr/bin/env python3
"""Build reference-letter.docx (pandoc --reference-doc) for supplier DRAFT letters.
Patches pandoc's default reference.docx: Times New Roman 11pt body, black headings,
2.5cm margins, DRAFT footer on every page. Run once; output committed as shared asset."""
import subprocess, sys
from docx import Document
from docx.shared import Pt, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH

OUT = "plans/reports/supplier-drafts/assets/reference-letter.docx"
raw = subprocess.run(["pandoc", "--print-default-data-file", "reference.docx"],
                     capture_output=True, check=True).stdout
with open("/tmp/pandoc-reference.docx", "wb") as f:
    f.write(raw)

doc = Document("/tmp/pandoc-reference.docx")

# Body style
normal = doc.styles["Normal"]
normal.font.name = "Times New Roman"
normal.font.size = Pt(11)
normal.font.color.rgb = RGBColor(0, 0, 0)
normal.paragraph_format.space_after = Pt(6)
normal.paragraph_format.line_spacing = 1.15

# Headings: black, serif, modest sizes
for name, size in (("Title", 16), ("Heading 1", 13), ("Heading 2", 12), ("Heading 3", 11)):
    try:
        st = doc.styles[name]
        st.font.name = "Times New Roman"
        st.font.size = Pt(size)
        st.font.bold = True
        st.font.color.rgb = RGBColor(0, 0, 0)
    except KeyError:
        pass

# Margins 2.5cm all around
for sec in doc.sections:
    sec.top_margin = Cm(2.5); sec.bottom_margin = Cm(2.5)
    sec.left_margin = Cm(2.5); sec.right_margin = Cm(2.5)
    # Footer: DRAFT marking on every page
    footer = sec.footer
    fp = footer.paragraphs[0] if footer.paragraphs else footer.add_paragraph()
    fp.text = ""
    fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = fp.add_run("DRAFT — FOR SUPPLIER REVIEW AND SIGNATURE · NOT VALID UNTIL SIGNED AND STAMPED")
    run.font.size = Pt(8)
    run.font.name = "Times New Roman"
    run.font.color.rgb = RGBColor(0x88, 0x00, 0x00)

doc.save(OUT)
print("reference written:", OUT)
