"""One-shot: convert TOB April cover markdown to a branded PDF via Edge headless."""
import subprocess
import sys
from pathlib import Path

import markdown as md

ROOT = Path(__file__).parent
MD_FILE = ROOT / "TOB_April_2026_client_cover.md"
HTML_FILE = ROOT / "_TOB_April_2026_client_cover.html"
PDF_FILE = ROOT / "TOB_April_2026_client_cover.pdf"
EDGE = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"

# J2 brand colors
GREEN = "#25a354"
ORANGE = "#ffa333"
CORAL = "#e66c50"

CSS = f"""
@page {{ size: Letter; margin: 0.75in 0.75in 0.85in 0.75in; }}
* {{ box-sizing: border-box; }}
body {{
    font-family: 'Segoe UI', Calibri, Arial, sans-serif;
    color: #222;
    font-size: 10.5pt;
    line-height: 1.45;
    margin: 0;
}}
h1 {{
    color: {GREEN};
    font-size: 22pt;
    margin: 0 0 4pt 0;
    border-bottom: 3px solid {GREEN};
    padding-bottom: 6pt;
}}
h2 {{
    color: {GREEN};
    font-size: 13pt;
    margin: 18pt 0 6pt 0;
    border-bottom: 1px solid #ddd;
    padding-bottom: 3pt;
}}
h3 {{
    color: {CORAL};
    font-size: 11pt;
    margin: 12pt 0 4pt 0;
}}
hr {{ border: none; border-top: 1px solid #ccc; margin: 14pt 0; }}
strong {{ color: #111; }}
p, ul, ol {{ margin: 4pt 0 8pt 0; }}
ul, ol {{ padding-left: 18pt; }}
li {{ margin: 2pt 0; }}
table {{
    border-collapse: collapse;
    margin: 8pt 0 12pt 0;
    width: 100%;
    font-size: 10pt;
}}
th {{
    background: {GREEN};
    color: white;
    text-align: left;
    padding: 5pt 8pt;
    font-weight: 600;
}}
th:nth-child(n+2), td:nth-child(n+2) {{ text-align: right; }}
th:first-child, td:first-child {{ text-align: left; }}
td {{
    padding: 4pt 8pt;
    border-bottom: 1px solid #e8e8e8;
}}
tr:nth-child(even) td {{ background: #fafafa; }}
em {{ color: #666; }}
.header-meta {{
    color: #555;
    font-size: 9.5pt;
    margin: 0 0 10pt 0;
}}
.header-meta p {{ margin: 1pt 0; }}
"""

def build_html(body_html: str) -> str:
    return f"""<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>TOB April 2026 — Financial Summary</title>
<style>{CSS}</style>
</head>
<body>
{body_html}
</body>
</html>"""

def main() -> int:
    src = MD_FILE.read_text(encoding="utf-8")
    body = md.markdown(src, extensions=["tables", "fenced_code", "sane_lists"])
    HTML_FILE.write_text(build_html(body), encoding="utf-8")

    cmd = [
        EDGE,
        "--headless=new",
        "--disable-gpu",
        "--no-pdf-header-footer",
        f"--print-to-pdf={PDF_FILE}",
        HTML_FILE.as_uri(),
    ]
    r = subprocess.run(cmd, capture_output=True, text=True, timeout=60)
    if not PDF_FILE.exists():
        print("Edge stdout:", r.stdout)
        print("Edge stderr:", r.stderr)
        return 1
    print(f"OK: {PDF_FILE} ({PDF_FILE.stat().st_size:,} bytes)")
    HTML_FILE.unlink(missing_ok=True)  # tidy
    return 0

if __name__ == "__main__":
    sys.exit(main())
