#!/usr/bin/env python3
"""Genereer REACH PPORD Notificatieconcepten DOCX — Phoenix Metals B.V. v1.0"""

from docx import Document
from docx.shared import Pt, Inches, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
import os, datetime

OUT = "/root/projects/jg/2026-reach-phoenix-metals-v2/deliverables/docx/REACH_PPORD_Notificatieconcepten_Phoenix_Metals_v1.0.docx"

DARK_BLUE = RGBColor(0x00, 0x33, 0x66)
ORANGE = RGBColor(0xFF, 0x66, 0x00)
BLACK = RGBColor(0, 0, 0)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)

doc = Document()

# --- Style defaults ---
style = doc.styles['Normal']
style.font.name = 'Calibri'
style.font.size = Pt(11)
style.font.color.rgb = BLACK
style.paragraph_format.space_after = Pt(6)

for level in range(1, 4):
    hs = doc.styles[f'Heading {level}']
    hs.font.name = 'Calibri'
    hs.font.color.rgb = DARK_BLUE
    hs.font.bold = True

def add_heading(text, level=1):
    h = doc.add_heading(text, level=level)
    for run in h.runs:
        run.font.color.rgb = DARK_BLUE
    # Add orange line after H1
    if level == 1:
        p = doc.add_paragraph()
        p.paragraph_format.space_before = Pt(0)
        p.paragraph_format.space_after = Pt(6)
        # orange border via XML
        pPr = p._element.get_or_add_pPr()
        pBdr = pPr.makeelement(qn('w:pBdr'), {})
        bottom = pBdr.makeelement(qn('w:bottom'), {
            qn('w:val'): 'single', qn('w:sz'): '12',
            qn('w:space'): '1', qn('w:color'): 'FF6600'
        })
        pBdr.append(bottom)
        pPr.append(pBdr)
    return h

def add_para(text, bold=False, italic=False):
    p = doc.add_paragraph()
    run = p.add_run(text)
    run.bold = bold
    run.italic = italic
    return p

def make_table(headers, rows, col_widths=None):
    table = doc.add_table(rows=1 + len(rows), cols=len(headers))
    table.style = 'Table Grid'
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    # Header row
    for i, h in enumerate(headers):
        cell = table.rows[0].cells[i]
        cell.text = ''
        p = cell.paragraphs[0]
        run = p.add_run(h)
        run.bold = True
        run.font.color.rgb = WHITE
        run.font.name = 'Calibri'
        run.font.size = Pt(10)
        # Dark blue background
        shading = cell._element.get_or_add_tcPr().makeelement(qn('w:shd'), {
            qn('w:fill'): '003366', qn('w:val'): 'clear'
        })
        cell._element.get_or_add_tcPr().append(shading)
    # Data rows
    for r_idx, row in enumerate(rows):
        for c_idx, val in enumerate(row):
            cell = table.rows[r_idx + 1].cells[c_idx]
            cell.text = ''
            p = cell.paragraphs[0]
            run = p.add_run(str(val))
            run.font.name = 'Calibri'
            run.font.size = Pt(10)
    return table

# ===================== DOCUMENT CONTENT =====================

# Title page
doc.add_paragraph()
doc.add_paragraph()
title = doc.add_paragraph()
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = title.add_run("REACH PPORD Notificatieconcepten")
run.font.size = Pt(28)
run.font.color.rgb = DARK_BLUE
run.bold = True

subtitle = doc.add_paragraph()
subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = subtitle.add_run("Phoenix Metals B.V.")
run.font.size = Pt(20)
run.font.color.rgb = ORANGE
run.bold = True

doc.add_paragraph()
meta = doc.add_paragraph()
meta.alignment = WD_ALIGN_PARAGRAPH.CENTER
for line in [
    "Conceptdocument — Direct bruikbaar als brief-/formulierconcept",
    "Alle in te vullen velden gemarkeerd met [VUL IN]",
    "",
    "Opdrachtgever: Phoenix Metals B.V. — Westerduinweg 3, IJmuiden",
    "HSE Manager: Jorick van Gemert",
    f"Datum: april 2026 | Versie: v1.0 | Status: Concept",
    "Vertrouwelijkheid: Vertrouwelijk"
]:
    run = meta.add_run(line + "\n")
    run.font.size = Pt(11)

doc.add_page_break()

# Inhoudsopgave
add_heading("Inhoudsopgave", level=1)
toc_items = [
    "1. PPORD-kader: Artikel 9 REACH Verordening",
    "   1.1 Doel en juridische basis",
    "   1.2 Scope en voorwaarden",
    "   1.3 Termijnen: 5 + 5 jaar",
    "   1.4 PPORD vs. reguliere registratie",
    "2. Phoenix Metals: Specifieke Notificatieconcepten",
    "   2.1 V₂O₅ (CAS 1314-62-1) — PPORD-notificatie",
    "   2.2 Vanadium-elektrolyt (UVCB) — PPORD-notificatie",
    "   2.3 IJzeroxide Fe₂O₃ en gips CaSO₄ — SR&D (Art. 3(23))",
    "3. SDS-verplichtingen tijdens PPORD",
    "4. Overgang PPORD → Registratie",
    "   4.1 Fasering: Demo → Pilot → FOAK",
    "   4.2 Volume monitoring en triggers",
    "5. Correctietabel: REACH-status per product",
    "6. Bijlage: Checklist PPORD-indiening"
]
for item in toc_items:
    p = doc.add_paragraph(item)
    p.paragraph_format.space_after = Pt(2)

doc.add_page_break()

# ====== SECTION 1 ======
add_heading("1. PPORD-kader: Artikel 9 REACH Verordening", level=1)

add_heading("1.1 Doel en juridische basis", level=2)
add_para(
    "PPORD (Product- and Process Oriented Research and Development) is een uitzonderingsbepaling "
    "in de REACH Verordening (EG) nr. 1907/2006 die het mogelijk maakt om stoffen te produceren en "
    "te gebruiken voor onderzoek en ontwikkeling zonder dat een volledige REACH-registratie vereist is. "
    "De juridische grondslag is Artikel 9 van de REACH Verordening."
)
add_para(
    "Het doel van PPORD is innovatie niet te belemmeren door registratieverplichtingen in de R&D-fase. "
    "Bedrijven die nieuwe stoffen of processen ontwikkelen, kunnen onder strikte voorwaarden een PPORD-notificatie "
    "indienen bij ECHA, waarna zij de stof mogen produceren en gebruiken zonder volledig registratiedossier. "
    "Dit is met name relevant voor bedrijven in de opschalingsfase — van laboratorium naar pilot plant — "
    "waar de stof nog niet commercieel op de markt wordt gebracht."
)

add_heading("1.2 Scope en voorwaarden", level=2)
add_para("Artikel 9 REACH stelt de volgende voorwaarden aan PPORD-toepassing:", bold=True)

conditions = [
    "De stof wordt uitsluitend gebruikt voor product- en procesontwikkeling (R&D). Commerciële verkoop van de stof als zodanig is uitdrukkelijk verboden.",
    "De stof wordt onder gecontroleerde omstandigheden geproduceerd, verwerkt en gebruikt, met adequate risicobeheersmaatregelen voor mens en milieu.",
    "Bij een productievolume boven 1 ton/jaar per stof is een PPORD-melding bij ECHA verplicht via het REACH-IT portaal.",
    "Het maximale productievolume onder PPORD bedraagt 10 ton/jaar per stof.",
    "PPORD geldt NIET voor stoffen die als PBT (Persistent, Bioaccumulative, Toxic) of vPvB (very Persistent, very Bioaccumulative) zijn geïdentificeerd (Art. 9(5))."
]
for c in conditions:
    doc.add_paragraph(c, style='List Bullet')

add_para(
    "Belangrijke correctie: PPORD is géén onvoorwaardelijke vrijstelling. Bij overschrijding van de 1 ton/jaar "
    "drempel is een formele notificatie bij ECHA verplicht. Phoenix Metals produceert in de pilotfase circa "
    "7.200 kg/jaar vanadium-elektrolyt en tot 500 kg/jaar V₂O₅ — hiermee valt de vanadium-elektrolyt duidelijk "
    "boven de meldingsdrempel van 1 ton/jaar."
)

add_heading("1.3 Termijnen: 5 + 5 jaar", level=2)
add_para(
    "Een PPORD-notificatie is maximaal 5 jaar geldig, gerekend vanaf de datum van indiening bij ECHA. "
    "De notificatie kan eenmalig worden verlengd met 5 jaar, waardoor de maximale totale looptijd 10 jaar bedraagt. "
    "De verlenging moet tijdig — voorafgaand aan het verstrijken van de oorspronkelijke termijn — worden aangevraagd "
    "via REACH-IT. Na afloop van de PPORD-termijn moet de stof ofwel volledig zijn geregistreerd (Art. 5-6), "
    "ofwel mag de productie worden gestaakt."
)
add_para(
    "Voor Phoenix Metals betekent dit: indiening PPORD-notificatie in Q3 2026 (start pilot) → geldig tot Q3 2031. "
    "Verlenging mogelijk tot Q3 2036. Binnen deze periode moet de overgang naar volledige REACH-registratie zijn "
    "gerealiseerd, inclusief eventuele toetreding tot het Vanadium Consortium via een Letter of Access (LoA)."
)

add_heading("1.4 PPORD vs. reguliere registratie", level=2)
make_table(
    ["Aspect", "PPORD (Art. 9)", "Reguliere registratie (Art. 5-6)"],
    [
        ["Doel", "R&D, product-/procesontwikkeling", "Commerciële marktintroductie"],
        ["Volume", "Max. 10 ton/jaar per stof", "≥1 ton/jaar (geen maximum)"],
        ["Geldigheid", "5 jaar (+ 1× verlenging 5 jaar)", "Onbeperkt (mits dossier actueel)"],
        ["Dossiervereisten", "Beperkt: identiteit, R&D-plan, risicobeheersing", "Volledig: Bijlage VII-X, CSR bij ≥10 ton/jaar"],
        ["Kosten ECHA", "Geen registratiekosten", "€1.700–€31.000 afhankelijk van tonnage"],
        ["Commerciële verkoop", "Verboden", "Toegestaan"],
        ["Data sharing", "Geen OSOR/SIEF-verplichting", "OSOR-verplicht, SIEF/data sharing"],
        ["PBT/vPvB-stoffen", "NIET toegestaan (Art. 9(5))", "Wel toegestaan (met extra eisen)"],
    ]
)

doc.add_page_break()

# ====== SECTION 2 ======
add_heading("2. Phoenix Metals: Specifieke Notificatieconcepten", level=1)

add_heading("2.1 V₂O₅ (CAS 1314-62-1) — PPORD-notificatie", level=2)

add_para("⚠️ SVHC-STATUS: V₂O₅ (divanadiumpentoxide) is sinds 2023 opgenomen op de ECHA Kandidaatlijst als "
         "SVHC (Substance of Very High Concern) wegens reprotoxiciteit categorie 1B (H361fd: 'Vermoedelijk schadelijk "
         "voor de vruchtbaarheid; kan het ongeboren kind schaden').", bold=True)

add_para(
    "De SVHC-status heeft belangrijke implicaties voor de PPORD-notificatie van V₂O₅. Hoewel V₂O₅ "
    "geen PBT- of vPvB-stof is (en derhalve niet valt onder de uitsluiting van Art. 9(5)), brengt de SVHC-status "
    "aanvullende verplichtingen met zich mee, waaronder communicatie in de toeleveringsketen (Art. 33) en "
    "toekomstige autorisatieverplichtingen indien de stof wordt opgenomen in Bijlage XIV."
)

add_para("PPORD-notificatieprocedure V₂O₅:", bold=True)
steps_v2o5 = [
    "Stap 1: REACH-IT account aanmaken (rechtspersoon Phoenix Metals B.V.)",
    "Stap 2: Inquiry bij ECHA (Art. 26) — vaststellen of V₂O₅ reeds is geregistreerd (ja: door Vanadium Consortium)",
    "Stap 3: PPORD-notificatie invullen in REACH-IT met de volgende kernvelden:",
]
for s in steps_v2o5:
    doc.add_paragraph(s, style='List Bullet')

make_table(
    ["Veld", "Inhoud V₂O₅ PPORD", "Status"],
    [
        ["Naam notifier", "Phoenix Metals B.V., Westerduinweg 3, IJmuiden", "[VUL IN: KVK]"],
        ["Stofidentiteit", "Divanadiumpentoxide (V₂O₅), CAS 1314-62-1, EC 215-239-8", "Vastgesteld"],
        ["Tonnage", "<0,5 ton/jaar (pilotfase)", "Onder 1 ton → melding optioneel"],
        ["R&D-omschrijving", "Hydrometallurgische extractie V₂O₅ uit staalslakken/SARU ash, batch 3.000L", "Concept"],
        ["Risicobeheersing", "PBM (gelaatsmasker, handschoenen), afzuiging, containment", "[VUL IN: details]"],
        ["Duur R&D", "5 jaar (Q3 2026 – Q3 2031)", "Voorgesteld"],
    ]
)

add_para(
    "Let op: Hoewel het verwachte volume V₂O₅ in de pilotfase onder 1 ton/jaar blijft, is het sterk "
    "aanbevolen om toch een PPORD-notificatie in te dienen. Reden: V₂O₅ is SVHC — proactieve notificatie "
    "toont compliance en voorkomt discussies met toezichthouders (ODIJ)."
)

add_heading("2.2 Vanadium-elektrolyt (UVCB) — PPORD-notificatie", level=2)
add_para(
    "Vanadium-elektrolyt is een UVCB-stof (Unknown/Variable composition, Complex reaction products, "
    "Biological materials). De exacte samenstelling varieert per batch en is afhankelijk van de "
    "grondstofsamenstelling (staalslakken, SARU ash) en procescondities. Typische componenten zijn "
    "vanadiumoxosulfaat, divanadiumtrisulfaat en natriummetavanaadaat."
)
add_para(
    "Voor UVCB-stoffen gelden specifieke identificatievereisten onder REACH. De stofidentificatie is "
    "gebaseerd op bronmateriaal + procedé (source + process naming), niet op een vaste chemische formule. "
    "De PPORD-notificatie voor vanadium-elektrolyt moet bevatten:"
)
uvcb_items = [
    "Bronbeschrijving: staalslakken (Tata Steel, CAS 60912-34-6) en SARU ash (Shell)",
    "Procesbeschrijving: hydrometallurgische extractie met H₂SO₄, batch 3.000L",
    "Samenstellingsbereik: V-gehalte, sulfaatgehalte, pH-bereik, onzuiverheden (Fe, Na, Ca)",
    "Verwachte tonnage: ~7.200 kg/jaar (boven 1 ton → PPORD-melding verplicht)",
    "Risicobeheersmaatregelen: specifieke PBM-lijst, ventilatieclassificatie, containmentsysteem"
]
for item in uvcb_items:
    doc.add_paragraph(item, style='List Bullet')

add_para(
    "PPORD-melding is hier VERPLICHT omdat het verwachte volume boven 1 ton/jaar uitkomt. "
    "De notificatie moet uiterlijk worden ingediend vóór het moment waarop de productie de 1 ton/jaar "
    "drempel overschrijdt."
)

add_heading("2.3 IJzeroxide Fe₂O₃ en gips CaSO₄ — SR&D (Art. 3(23))", level=2)
add_para(
    "IJzeroxide (Fe₂O₃, CAS 1309-37-1) en gips (CaSO₄, CAS 7778-18-9) zijn bijproducten van het "
    "vanadiumextractieproces. Hun REACH-status verschilt fundamenteel van V₂O₅ en vanadium-elektrolyt."
)

add_para("IJzeroxide Fe₂O₃:", bold=True)
add_para(
    "IJzeroxide valt onder het regime van 'scientific research and development' (SR&D, Art. 3(23) REACH) "
    "wanneer het volume onder 1 ton/jaar blijft én de stof uitsluitend voor R&D-doeleinden wordt geproduceerd. "
    "Fe₂O₃ is een reeds ruim geregistreerde stof in de EU met een uitgebreide toxicologische database. "
    "Indien Phoenix Metals Fe₂O₃ als bijproduct produceert en niet commercieel op de markt brengt, is geen "
    "PPORD-notificatie nodig zolang het volume onder 1 ton/jaar blijft."
)

add_para("Gips CaSO₄:", bold=True)
add_para(
    "Gips (CaSO₄) ontstaat als nevenproduct bij de neutralisatiestap van het extractieproces. De REACH-status "
    "van gips is afhankelijk van de End-of-Waste (EoW) beoordeling: zolang het materiaal als afval wordt "
    "geclassificeerd, is REACH niet van toepassing. Pas na EoW-status wordt REACH-trigger geactiveerd. "
    "Gips is een stof die in grote volumes in de EU is geregistreerd; een PPORD-notificatie is alleen nodig "
    "indien Phoenix Metals het product als zodanig op de markt brengt boven 1 ton/jaar."
)

add_para(
    "Daarnaast kan de vrijstelling voor 'recovered substances' (Art. 2(7)(d)) van toepassing zijn: "
    "indien kan worden aangetoond dat de bijproducten identiek ('sameness') zijn aan reeds geregistreerde "
    "stoffen, geldt een registratievrijstelling. Hiervoor is een sameness check vereist tegenover de "
    "geregistreerde stof in de ECHA-database."
)

doc.add_page_break()

# ====== SECTION 3 ======
add_heading("3. SDS-verplichtingen tijdens PPORD", level=1)

add_para(
    "Ook onder een PPORD-regime blijven veiligheidsinformatieblad (SDS)-verplichtingen van kracht. "
    "REACH Artikel 31 verplicht het beschikbaar stellen van een SDS voor elke stof die als gevaarlijk "
    "is ingedeeld onder CLP, of die PBT/vPvB-eigenschappen heeft, of die op de SVHC-kandidaatlijst staat."
)

add_para("SDS-verplichtingen Phoenix Metals tijdens PPORD:", bold=True)

make_table(
    ["Stof", "SDS-verplichting", "Grondslag", "Actie"],
    [
        ["V₂O₅", "Ja — verplicht (SVHC + gevaarlijk)", "Art. 31, CLP", "Eigen SDS opstellen; SVHC-vermelding in rubriek 2+15"],
        ["Vanadium-elektrolyt", "Ja — verplicht (gevaarlijk mengsel)", "Art. 31, CLP", "Eigen SDS opstellen; UVCB-samenstelling in rubriek 3"],
        ["Fe₂O₃ (bijproduct)", "Alleen bij marktintroductie", "Art. 31", "Niet nodig in R&D-fase; bewaren bij opschaling"],
        ["CaSO₄ (bijproduct)", "Alleen bij marktintroductie", "Art. 31", "Niet nodig in R&D-fase; EoW-status bepalen"],
        ["H₂SO₄ (grondstof)", "Ja — leverancier-SDS", "Art. 31", "SDS opvragen bij leverancier; Phoenix Metals is DU"],
        ["NaOH (grondstof)", "Ja — leverancier-SDS", "Art. 31", "SDS opvragen bij leverancier; Phoenix Metals is DU"],
    ]
)

add_para("")
add_para(
    "Phoenix Metals is voor de grondstoffen zwavelzuur (H₂SO₄) en natriumhydroxide (NaOH) een downstream "
    "gebruiker (DU). Deze stoffen zijn reeds geregistreerd door de respectievelijke producenten/importeurs. "
    "De DU-verplichtingen (Art. 37-39) zijn van toepassing: Phoenix Metals moet het gebruik van deze stoffen "
    "controleren tegen de blootstellingsscenario's in de ontvangen e-SDS'en en, indien het gebruik niet is "
    "gedekt, contact opnemen met de leverancier of een eigen DU-CSR opstellen."
)

add_para("SDS-opmaakvereisten (Bijlage II REACH):", bold=True)
sds_items = [
    "16 rubrieken conform Bijlage II REACH Verordening",
    "Taal: Nederlands (officiële taal lidstaat waar de stof wordt verhandeld)",
    "SDS binnen 3 jaar actualiseren bij geen wijzigingen; onmiddellijk bij nieuwe risico-informatie",
    "SVHC-stoffen (V₂O₅): specifieke vermelding in rubriek 2 (gevarenidentificatie) en rubriek 15 (regelgeving)",
    "Bewaarplicht: 10 jaar na laatste levering of gebruik (Art. 36)"
]
for item in sds_items:
    doc.add_paragraph(item, style='List Bullet')

doc.add_page_break()

# ====== SECTION 4 ======
add_heading("4. Overgang PPORD → Registratie", level=1)

add_heading("4.1 Fasering: Demo → Pilot → FOAK", level=2)
add_para(
    "Phoenix Metals doorloopt drie fasen in de ontwikkeling van het vanadiumextractieproces. "
    "Elke fase heeft een ander REACH-regime en andere verplichtingen. De overgang van PPORD naar "
    "volledige registratie moet tijdig worden gepland om compliance-gaten te voorkomen."
)

make_table(
    ["Fase", "Periode", "Volume", "REACH-regime", "Actie"],
    [
        ["Demo", "Huidig – Q2 2026", "≤60 kg/jaar", "PPORD/SR&D (onder 1 ton)", "Geen notificatieplicht; SDS aanbevolen"],
        ["Pilot", "Q3 2026 – Q4 2027", "0,5–3 ton/jaar", "PPORD (Art. 9) + DU", "PPORD-notificatie ECHA; volume bewaken"],
        ["FOAK", "2028+", ">1–10 ton/jaar", "Volledige registratie", "CSR, Bijlage VII-VIII, LoA Consortium"],
    ]
)

add_heading("4.2 Volume monitoring en triggers", level=2)
add_para(
    "Tijdens de PPORD-periode moet Phoenix Metals het productievolume per stof strikt monitoren. "
    "De volgende triggers zijn van belang:"
)
triggers = [
    ">1 ton/jaar: PPORD-notificatie bij ECHA VERPLICHT (indien nog niet gedaan)",
    ">10 ton/jaar: PPORD-maximum overschreden → volledige registratie vereist",
    "Commerciële marktintroductie: PPORD vervalt onmiddellijk → registratieplicht",
    "Verlenging PPORD: uiterlijk 6 maanden voor afloop aanvragen via REACH-IT",
    "Nieuwe stofidentificatie (bijv. gewijzigde UVCB-samenstelling): dossierwijziging indienen binnen 3 maanden (Art. 22)"
]
for t in triggers:
    doc.add_paragraph(t, style='List Bullet')

add_para(
    "Aanbeveling: implementeer een maandelijks volume-rapportagesysteem per CAS-nummer. "
    "Dit dient als bewijsmateriaal bij ECHA-audits en faciliteert een tijdige overgang naar "
    "volledige registratie. Bij het naderen van de 10 ton/jaar grens moet ten minste 12 maanden "
    "voorafgaand aan de verwachte overschrijding worden gestart met de voorbereiding van het "
    "registratiedossier."
)

doc.add_page_break()

# ====== SECTION 5 ======
add_heading("5. Correctietabel: REACH-status per product", level=1)

add_para(
    "Onderstaande tabel biedt een compleet overzicht van de REACH-status, notificatieplicht en "
    "geldende termijnen voor alle relevante stoffen van Phoenix Metals."
)

make_table(
    ["Product", "CAS", "Volume (kg/jaar)", "REACH-status", "Regime", "Notificatieplicht", "Termijn"],
    [
        ["V₂O₅ (eindproduct)", "1314-62-1", "<500", "SVHC (Kandidaatlijst 2023); geregistreerd door Consortium",
         "PPORD Art. 9", "Aanbevolen (proactief)", "5 jaar (+5 jaar verlenging)"],
        ["Vanadium-elektrolyt (UVCB)", "Niet toegewezen", "~7.200", "Niet individueel geregistreerd",
         "PPORD Art. 9", "VERPLICHT (>1 ton/jaar)", "5 jaar (+5 jaar verlenging)"],
        ["Fe₂O₃ (bijproduct)", "1309-37-1", "<500", "Ruimschoots geregistreerd",
         "SR&D Art. 3(23) / Art. 2(7)(d)", "Geen (onder 1 ton, R&D)", "Geen"],
        ["CaSO₄ / gips (bijproduct)", "7778-18-9", "<1.000", "Ruimschoots geregistreerd",
         "SR&D Art. 3(23) / Art. 2(7)(d)", "Geen (onder 1 ton, R&D); EoW bepalen", "Geen"],
        ["H₂SO₄ (grondstof)", "7664-93-9", "<5.000", "Geregistreerd", "DU (Art. 37-39)", "SDS opvragen leverancier", "Doorlopend"],
        ["NaOH (grondstof)", "1310-73-2", "<10.000", "Geregistreerd", "DU (Art. 37-39)", "SDS opvragen leverancier", "Doorlopend"],
        ["Al₂(SO₄)₃ (grondstof)", "10043-01-3", "<2.000", "Geregistreerd", "DU (Art. 37-39)", "SDS opvragen leverancier", "Doorlopend"],
        ["CaO (grondstof)", "1305-78-8", "<1.000", "Geregistreerd", "DU (Art. 37-39)", "SDS opvragen leverancier", "Doorlopend"],
        ["Staalslakken (grondstof)", "60912-34-6", "Variabel", "Geregistreerd (Consortium)", "Grondstof / LoA", "LoA aanvragen Consortium", "Na EoW"],
        ["SARU ash (grondstof)", "Niet toegewezen", "Variabel", "Te bevestigen", "Grondstof", "Registratie + SDS check", "Na EoW"],
    ]
)

doc.add_page_break()

# ====== SECTION 6 ======
add_heading("6. Bijlage: Checklist PPORD-indiening", level=1)

make_table(
    ["#", "Actie", "Verantwoordelijke", "Deadline"],
    [
        ["1", "REACH-IT account aanmaken (rechtspersoon)", "Jorick van Gemert", "[VUL IN]"],
        ["2", "Exacte stofsamenstelling + CAS-nummers vaststellen (labanalyse)", "Laboratorium", "[VUL IN]"],
        ["3", "SVHC-status V₂O₅ verifiëren in ECHA C&L-inventaris", "Jorick van Gemert", "[VUL IN]"],
        ["4", "Sameness check Fe₂O₃ en CaSO₄ (Art. 2(7)(d)) uitvoeren", "Jorick van Gemert + Arcadis", "[VUL IN]"],
        ["5", "Blootstellingsscenario's opstellen (werkplekanalyse pilot plant)", "Jorick van Gemert + Arcadis", "[VUL IN]"],
        ["6", "Risicobeheersmaatregelen documenteren (PBM-lijst, ventilatieplan)", "Jorick van Gemert", "[VUL IN]"],
        ["7", "PPORD-dossier samenstellen in REACH-IT", "Jorick van Gemert", "[VUL IN]"],
        ["8", "PPORD-notificatie indienen bij ECHA via REACH-IT portaal", "Jorick van Gemert", "[VUL IN]"],
        ["9", "Bevestiging PPORD-nummer ontvangen en archiveren", "Jorick van Gemert", "[VUL IN]"],
        ["10", "SDS'en opstellen voor V₂O₅ en vanadium-elektrolyt", "Jorick van Gemert + Arcadis", "[VUL IN]"],
        ["11", "DU-check uitvoeren voor H₂SO₄ en NaOH (leverancier-SDS'en)", "Jorick van Gemert", "[VUL IN]"],
        ["12", "Volume monitoring systeem implementeren per CAS-nummer", "Jorick van Gemert", "[VUL IN]"],
        ["13", "Interne communicatie naar directie (Stijn van Zelst)", "Jorick van Gemert", "[VUL IN]"],
        ["14", "Contact ODIJ (omgevingsdienst) over PPORD-status en vergunningen", "Jorick van Gemert + Arcadis", "[VUL IN]"],
    ]
)

# Footer
doc.add_paragraph()
p = doc.add_paragraph()
run = p.add_run("— Einde document —")
run.italic = True
run.font.color.rgb = DARK_BLUE
p2 = doc.add_paragraph()
run2 = p2.add_run("Dit document is opgesteld in opdracht van Phoenix Metals B.V. Alle rechten voorbehouden.")
run2.font.size = Pt(9)
run2.italic = True

# Save
os.makedirs(os.path.dirname(OUT), exist_ok=True)
doc.save(OUT)
print(f"✅ Document opgeslagen: {OUT}")

# Word count
import re
text = []
for para in doc.paragraphs:
    text.append(para.text)
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            text.append(cell.text)
full = ' '.join(text)
words = len(re.findall(r'\b\w+\b', full))
print(f"📊 Woordenaantal: {words}")
