#!/usr/bin/env python3
"""Generate REACH D3 VIB/MSDS Strategie v4.0 for Phoenix Metals."""

from docx import Document
from docx.shared import Pt, Cm, RGBColor, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.enum.section import WD_ORIENT
import os
from datetime import datetime

OUTPUT = "/root/projects/jg/2026-reach-phoenix-metals/deliverables/docx/REACH_VIB_MSDS_Strategie_Phoenix_Metals_D3_v4.0.docx"
os.makedirs(os.path.dirname(OUTPUT), exist_ok=True)

doc = Document()

# --- Style setup ---
style = doc.styles['Normal']
font = style.font
font.name = 'Calibri'
font.size = Pt(11)
style.paragraph_format.space_after = Pt(6)
style.paragraph_format.line_spacing = 1.15

for level in range(1, 4):
    hs = doc.styles[f'Heading {level}']
    hs.font.color.rgb = RGBColor(0x1B, 0x3A, 0x5C)
    hs.font.name = 'Calibri'

# Margins
for section in doc.sections:
    section.top_margin = Cm(2.5)
    section.bottom_margin = Cm(2.5)
    section.left_margin = Cm(2.5)
    section.right_margin = Cm(2.5)

def add_table(doc, headers, rows, col_widths=None):
    table = doc.add_table(rows=1 + len(rows), cols=len(headers), style='Light Grid Accent 1')
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    for i, h in enumerate(headers):
        cell = table.rows[0].cells[i]
        cell.text = h
        for p in cell.paragraphs:
            for r in p.runs:
                r.bold = True
                r.font.size = Pt(9)
    for ri, row in enumerate(rows):
        for ci, val in enumerate(row):
            cell = table.rows[ri + 1].cells[ci]
            cell.text = str(val)
            for p in cell.paragraphs:
                for r in p.runs:
                    r.font.size = Pt(9)
    return table

# ===== TITELPAGINA =====
for _ in range(6):
    doc.add_paragraph()

tp = doc.add_paragraph()
tp.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = tp.add_run("REACH VIB/SDS Strategie")
run.bold = True
run.font.size = Pt(28)
run.font.color.rgb = RGBColor(0x1B, 0x3A, 0x5C)

tp2 = doc.add_paragraph()
tp2.alignment = WD_ALIGN_PARAGRAPH.CENTER
run2 = tp2.add_run("Phoenix Metals B.V.")
run2.bold = True
run2.font.size = Pt(22)
run2.font.color.rgb = RGBColor(0x1B, 0x3A, 0x5C)

tp3 = doc.add_paragraph()
tp3.alignment = WD_ALIGN_PARAGRAPH.CENTER
run3 = tp3.add_run("Deliverable D3 — Versie 4.0")
run3.font.size = Pt(16)
run3.font.color.rgb = RGBColor(0x55, 0x55, 0x55)

doc.add_paragraph()

tp4 = doc.add_paragraph()
tp4.alignment = WD_ALIGN_PARAGRAPH.CENTER
run4 = tp4.add_run("Veiligheidsinformatiebladen (SDS/VIB) en MSDS-beheer\nals FABRIKANT van recovered substances")
run4.font.size = Pt(13)
run4.font.color.rgb = RGBColor(0x33, 0x33, 0x33)

for _ in range(4):
    doc.add_paragraph()

meta_lines = [
    f"Datum: 19 april 2026",
    "Classificatie: Vertrouwelijk — Intern",
    "Auteur: HSEQ Division — Phoenix Metals",
    "Referentie: REACH-D3-v4.0",
]
for line in meta_lines:
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    r = p.add_run(line)
    r.font.size = Pt(10)
    r.font.color.rgb = RGBColor(0x66, 0x66, 0x66)

doc.add_page_break()

# ===== INHOUD =====
doc.add_heading("Inhoudsopgave", level=1)
toc_items = [
    "1. Managementsamenvatting",
    "2. H1: SDS-Verplichtingen als Fabrikant",
    "3. H2: SDS-Inhoud — 16 Rubrieken",
    "4. H3: CLP-Indeling Phoenix Metals Producten",
    "5. H4: SDS-Beheersysteem",
    "6. H5: Extended-SDS (eSDS) en Exposure Scenarios",
    "7. H6: Bronnen- en Templatebeheer",
    "8. Bronverwijzingen",
]
for item in toc_items:
    doc.add_paragraph(item, style='List Number')

doc.add_page_break()

# ===== 1. MANAGEMENTSAMENVATTING =====
doc.add_heading("1. Managementsamenvatting", level=1)

doc.add_paragraph(
    "Phoenix Metals B.V. herwint vanadium uit secundaire grondstoffen (SARU ash / staalslakken) en produceert "
    "daarmee vanadium-elektrolyt voor energieopslagsystemen. Als fabrikant van zogeheten 'recovered substances' "
    "rust op Phoenix Metals de wettelijke plicht om zelf veiligheidsinformatiebladen (SDS/VIB) op te stellen voor "
    "de producten die het bedrijf in de handel brengt. Het volstaat niet om uitsluitend te leunen op SDS'en van "
    "grondstofleveranciers (zoals Carl Roth)."
)

doc.add_paragraph(
    "Dit document (D3, versie 4.0) beschrijft de strategie voor het opstellen, beheren en distribueren van "
    "veiligheidsinformatiebladen conform REACH Titel IV, Hoofdstuk 1 (artikelen 31 en 32) en de CLP-verordening "
    "(EG nr. 1272/2008). De strategie omvat:"
)

bullets_mgmt = [
    "De wettelijke kadering: wie moet een SDS verstrekken, wanneer, en onder welke voorwaarden.",
    "Een systematische uitwerking van de 16 verplichte SDS-rubrieken, toegespitst op drie Phoenix Metals productgroepen: "
    "SARU ash (feedstock), vanadium-elektrolyt (eindproduct) en reststromen (filter cake, spoelwater).",
    "CLP-indeling en etikettering per product, inclusief UFI-toewijzing.",
    "Een formeel SDS-beheersysteem met versiebeheer, distributie en update-triggers.",
    "Richtlijnen voor extended-SDS (eSDS) bij commercieel gebruik >10 ton/jaar.",
    "Bronnen- en templatebeheer, inclusief ECHA-formaten en Vanadium Consortium-gegevens.",
]
for b in bullets_mgmt:
    doc.add_paragraph(b, style='List Bullet')

p = doc.add_paragraph()
r = p.add_run("Kernboodschap: ")
r.bold = True
p.add_run(
    "Phoenix Metals is registerhoudend fabrikant. De SDS is geen administratief bijproduct — het is een "
    "juridisch verplicht document dat de veiligheid van medewerkers, downstream users en het milieu waarborgt."
)

doc.add_page_break()

# ===== 2. H1: SDS-VERPLICHTINGEN ALS FABRIKANT =====
doc.add_heading("2. H1: SDS-Verplichtingen als Fabrikant", level=1)

doc.add_heading("2.1 Wettelijk kader: REACH Titel IV, Hoofdstuk 1", level=2)
doc.add_paragraph(
    "REACH (Verordening (EG) nr. 1907/2006) legt in Titel IV, Hoofdstuk 1 de verplichtingen vast rondom "
    "veiligheidsinformatiebladen. De belangrijkste artikelen voor Phoenix Metals zijn:"
)

doc.add_heading("Artikel 31 — Verstrekking van een veiligheidsinformatieblad", level=3)
doc.add_paragraph(
    "Een fabrikant, importeur of downstream user moet een veiligheidsinformatieblad (SDS) verstrekken aan de "
    "ontvanger van een stof of mengsel die voldoet aan de criteria voor indeling als gevaarlijk overeenkomstig "
    "de CLP-verordening. Dit is verplicht wanneer:"
)
art31_bullets = [
    "De stof of het mengsel is ingedeeld als gevaarlijk (enige uitzondering: artikelen 31(3) en 31(4)).",
    "De stof is PBT of vPvB volgens bijlage XIII van REACH.",
    "De stof is opgenomen op de kandidatenlijst (SVHC) in een concentratie ≥0,1% gewicht.",
    "CMR-stoffen (categorie 1A, 1B): altijd een SDS, ongeacht concentratie in het mengsel.",
]
for b in art31_bullets:
    doc.add_paragraph(b, style='List Bullet')

p = doc.add_paragraph()
r = p.add_run("Toepassing op Phoenix Metals: ")
r.bold = True
p.add_run(
    "De SARU ash bevat natriummetavanaat (CAS 13718-26-8) en vanadiumpentoxide (V₂O₅, CAS 1314-62-1). "
    "V₂O₅ is ingedeeld als CMR-stof (Carc. 1B, Repr. 2) en is tevens een SVHC. Dit betekent dat Phoenix Metals "
    "onder alle omstandigheden een SDS moet verstrekken voor producten die deze stoffen bevatten."
)

doc.add_heading("Artikel 32 — Informatie zonder SDS", level=3)
doc.add_paragraph(
    "Wanneer een SDS niet verplicht is (bijvoorbeeld omdat de stof niet gevaarlijk is ingedeeld), moet de leverancier "
    "desalniettemin voldoen aan de informatieverplichtingen van artikel 32. Dit omvat het verstrekken van de "
    "registratienummer(s), aanbevolen gebruiksmethoden en eventuele beperkingen. Voor Phoenix Metals is dit "
    "hoofdzakelijk theoretisch: de kernproducten zijn alle gevaarlijk ingedeeld, dus artikel 31 prevaleert."
)

doc.add_heading("2.2 Phoenix Metals als fabrikant: eigen SDS-verplichting", level=2)
doc.add_paragraph(
    "Phoenix Metals herwint vanadium uit SARU ash/staalslakken. Het bedrijf is hiermee kwalificeerbaar als "
    "'fabrikant' in de zin van REACH artikel 3(8): een natuurlijke of rechtspersoon die een stof in de EG "
    "vervaardigt. De herwinning van substanties uit afvalstromen resulteert in 'recovered substances'. Indien "
    "deze substanties niet langer als afval zijn aangemerkt (einde-afvalstatus), zijn zij onderworpen aan de "
    "volledige REACH-verplichtingen — inclusief SDS-verstrekking."
)

doc.add_paragraph(
    "Kritisch onderscheid: Phoenix Metals kan NIET volstaan met het doorgeven van SDS'en van leveranciers "
    "(zoals Carl Roth voor zwavelzuur of NaOH). Als fabrikant van het eindproduct (vanadium-elektrolyt) en "
    "als beheerder van de feedstock (SARU ash) stelt Phoenix Metals ZELF de SDS op voor deze producten."
)

doc.add_page_break()

# ===== 3. H2: SDS-INHOUD — 16 RUBRIEKEN =====
doc.add_heading("3. H2: SDS-Inhoud — 16 Rubrieken", level=1)

doc.add_paragraph(
    "Een veiligheidsinformatieblad conform REACH Bijlage II (zoals gewijzigd door Verordening (EU) 2020/878) "
    "bestaat uit 16 rubrieken. Hierna volgt per rubriek de beschrijving en de specifieke invulling voor de drie "
    "Phoenix Metals productgroepen."
)

sections_16 = [
    ("Rubriek 1: Identificatie van de stof/het mengsel en van de vennootschap/onderneming",
     "Productidentificatie (naam, CAS, EG-nummer), relevante gebruiksmethoden, en contactgegevens van Phoenix Metals B.V. inclusief noodtelefoon.",
     [
         ("SARU ash / staalslakken", "Naam: 'SARU Ash (Steel Slag Residue)'; CAS: UVCB-stof (geen enkelvoudig CAS-nummer); EG: 273-734-4 (Slags, steelmaking, vanadium). Identificatie als feedstock mengsel."),
         ("Vanadium-elektrolyt", "Naam: 'Vanadium Oxide Sulphate Solution'; CAS: 27774-13-6; EC: 248-652-7. Eindproduct voor VRFB-toepassingen."),
         ("Reststromen", "Filter cake: 'Vanadium-depleted filter residue'; Spoelwater: 'Process rinse water (low V-concentration)'. Casus-afhankelijke identificatie."),
     ]),
    ("Rubriek 2: Identificatie van de gevaren",
     "CLP-indeling van het product met gevarenklassen, -categorieën en H-zinnen.",
     [
         ("SARU ash", "Carc. 1B (H350i), Repr. 2 (H361fd), Acute Tox. 3 (H331), Skin Corr. 1A (H314). GHS08 + GHS06 + GHS05."),
         ("Vanadium-elektrolyt", "Carc. 1B (H350i), Repr. 2 (H361fd), Acute Tox. 4 (H332), Eye Irrit. 2 (H319). GHS08 + GHS07."),
         ("Reststromen", "Afhankelijk van samenstelling. Filter cake: mogelijk Skin Irrit. 2 (H315). Spoelwater: pH-bepalend, potentieel Met. Corr. 1 (H290)."),
     ]),
    ("Rubriek 3: Samenstelling/informatie over bestanddelen",
     "Chemische samenstelling met concentratiebereiken, CAS-nummers en indeling van bestanddelen.",
     [
         ("SARU ash", "V₂O₅ (5-15%), Fe₂O₃ (30-50%), CaO (10-25%), SiO₂ (5-15%), NaVO₃ (<5%), MnO (<5%). UVCB-mengsel."),
         ("Vanadium-elektrolyt", "VOSO₄ (1,5-2,0 M in H₂SO₄-oplossing). H₂SO₄ als drager: 2-3 M. Bevat vanadium(IV) en vanadium(V) species."),
         ("Reststromen", "Filter cake: V₂O₅ (<1%), Fe-hydroxiden, CaSO₄. Spoelwater: V <50 mg/l, pH 2-3."),
     ]),
    ("Rubriek 4: Eerstehulpmaatregelen",
     "Maatregelen per blootstellingsroute (inhalatie, huid, ogen, inslikken). Symptomen en directe acties.",
     [
         ("Algemeen", "Bij blootstelling aan V₂O₅-bevattende stoffen: onmiddellijk medische hulp inschakelen. Symptomen: hoest, luchtwegirritatie, groene verkleuring tong (vanadium-kenmerk)."),
     ]),
    ("Rubriek 5: Brandbestrijdingsmaatregelen",
     "Geschikte en ongeschikte blusmiddelen, specifieke gevaren bij brand, beschermingsmiddelen brandweer.",
     [
         ("Algemeen", "SARU ash en vanadium-elektrolyt zijn niet brandbaar. Bij brand in de omgeving: POEDER, CO₂ of schuim. GEEN waterstraal op gesmolten V₂O₅ — kan spatten."),
     ]),
    ("Rubriek 6: Maatregelen bij accidenteel vrijkomen",
     "Persoonlijke voorzorgsmaatregelen, milieumaatregelen, reinigingsmethoden.",
     [
         ("Algemeen", "Stofvorming voorkomen. Droog zand/absorbens gebruiken. Niet in riolering of waterlopen laten terechtkomen. PBM: FFP3-masker, zuurbestendige handschoenen, veiligheidsbril."),
     ]),
    ("Rubriek 7: Hantering en opslag",
     "Veilige hantering (stofvorming voorkomen, ventilatie) en opslagcondities (compatibiliteit, temperatuur).",
     [
         ("SARU ash", "Droog, afgesloten opslag. Gescheiden van zuren en brandstoffen. Ventilatie: lokale afzuiging bij overladen."),
         ("Vanadium-elektrolyt", "Opslag in zuurbestendige containers (HDPE, PP). Temperatuur: 5-30°C. Niet in de buurt van metalen (corrosie)."),
     ]),
    ("Rubriek 8: Maatregelen ter beheersing van blootstelling / persoonlijke bescherming",
     "OEL's, technische maatregelen, PBM-eisen. Grenswaarden vanadiumverbindingen.",
     [
         ("OEL's", "V₂O₅ (inhalabele fractie): 0,05 mg/m³ (8-uur TWA), 0,1 mg/m³ (STEL). Bron: SER-publicatie."),
         ("PBM", "FFP3-masker (stof), zuurbestendige handschoenen (nitrile ≥0,5 mm), veiligheidsbril + gelaatscherm, zuurbestendig schort. Bij elektrolyt: volledige zuurbescherming."),
     ]),
    ("Rubriek 9: Fysische en chemische eigenschappen",
     "Uiterlijk, geur, pH, smeltpunt, ontvlambaarheid, dichtheid, oplosbaarheid.",
     [
         ("SARU ash", "Vast, grijs-bruin poeder. Geurloos. Dichtheid: 3,0-3,5 g/cm³. Onoplosbaar in water (deels reagerend)."),
         ("Vanadium-elektrolyt", "Vloeibaar, blauw (V⁴⁺) / geel (V⁵⁺) oplossing. pH: <1 (zwavelzuurhoudend). Dichtheid: 1,2-1,4 g/cm³."),
     ]),
    ("Rubriek 10: Stabiliteit en reactiviteit",
     "Stabiliteit, te vermijden stoffen/condities, gevaarlijke ontledingsproducten.",
     [
         ("Algemeen", "Stabiel onder normale omstandigheden. Reactie met sterke zuren (SARU ash) kan Hitte genereren. V₂O₅ is een oxidator — contact met reducerende stoffen vermijden."),
     ]),
    ("Rubriek 11: Toxicologische informatie",
     "Acute toxiciteit, irritatie, sensitisatie, CMR-eigenschappen, STOT.",
     [
         ("V₂O₅", "LD50 (oraal, rat): 98 mg/kg (Acute Tox. 3). Carc. 1B, Repr. 2. STOT RE 1 (luchtwegen). IARC Group 2B."),
         ("VOSO₄", "Acute Tox. 4 (inhalatie). Irriterend aan ogen en luchtwegen. Langdurige blootstelling: longschade."),
     ]),
    ("Rubriek 12: Ecologische informatie",
     "Ecotoxiciteit, persistentie, bioaccumulatie, mobiliteit in bodem.",
     [
         ("Vanadiumverbindingen", "Giftig voor aquatische organismen. V₂O₅: EC50 (Daphnia magna): 1,5 mg/l (48h). Niet-readily biodegradable. Log Kow <3 (lage bioaccumulatie)."),
     ]),
    ("Rubriek 13: Instructies voor verwijdering",
     "Afvalverwerkingsmethoden voor reststoffen en verpakking. EURAL-codering.",
     [
         ("SARU ash restanten", "EURAL 06 04 05 (afval bevattende andere zware metalen). Afvoer via erkend afvalverwerker."),
         ("Elektrolyt restanten", "EURAL 06 01 01 (zwavelzuur). Neutralisatie met NaOH → neerslag → EURAL 06 04 05."),
     ]),
    ("Rubriek 14: Informatie met betrekking tot het vervoer",
     "UN-nummer, ADR-klasse, verpakking groep, milieugevaren.",
     [
         ("SARU ash", "Niet-klasseerbaar voor vervoer indien niet-stuivend. Bij stofvorming: ADR 6.1, UN 3288, PG III (toxische anorganische vaste stof)."),
         ("Vanadium-elektrolyt", "ADR 8, UN 2796, PG II (zwavelzuur). Corrosief vloeibaar."),
     ]),
    ("Rubriek 15: Wettelijke informatie",
     "Wet- en regelgeving van toepassing: REACH, CLP, ARBO-wetgeving, Wms, Besluit activiteiten leefomgeving (Bal).",
     [
         ("Algemeen", "REACH (EG 1907/2006), CLP (EG 1272/2008), Wet milieubeheer, Wet werken met stoffen (Wms), Arbowet. Gemeentelijke milieuvergunning (Wmb/Bal)."),
     ]),
    ("Rubriek 16: Overige informatie",
     "Wijzigingsgeschiedenis, volledige tekst H-zinnen, afkortingen, disclaimer.",
     [
         ("Algemeen", "Volledige tekst van alle H-zinnen vermeld in rubriek 2 en 3. Lijst met afkortingen (CMR, PBT, SVHC, SDS, VIB). Aanpassingsdatum en versienummer."),
     ]),
]

for title, desc, products in sections_16:
    doc.add_heading(title, level=2)
    doc.add_paragraph(desc)
    for prod_name, prod_desc in products:
        p = doc.add_paragraph()
        r = p.add_run(f"{prod_name}: ")
        r.bold = True
        p.add_run(prod_desc)
    doc.add_paragraph()  # spacing

doc.add_page_break()

# ===== 4. H3: CLP-INDELING =====
doc.add_heading("4. H3: CLP-Indeling Phoenix Metals Producten", level=1)

doc.add_heading("4.1 Overzicht indelingen", level=2)

clp_headers = ["Product", "Gevaarklasse(n)", "H-zinnen", "GHS-pictogrammen", "Signaalwoord"]
clp_rows = [
    ["SARU ash / staalslakken",
     "Carc. 1B\nRepr. 2\nAcute Tox. 3\nSkin Corr. 1A\nSTOT RE 1",
     "H350i, H361fd, H331, H314, H372",
     "GHS08 (gezondheidsgevaar)\nGHS06 (dodenkop)\nGHS05 (corrosie)",
     "GEVAAR"],
    ["Vanadium-elektrolyt",
     "Carc. 1B\nRepr. 2\nAcute Tox. 4\nEye Irrit. 2",
     "H350i, H361fd, H332, H319",
     "GHS08 (gezondheidsgevaar)\nGHS07 (uitroepteken)",
     "GEVAAR"],
    ["Zwavelzuur 25-75%",
     "Met. Corr. 1\nSkin Corr. 1A\nEye Dam. 1",
     "H290, H314, H318",
     "GHS05 (corrosie)",
     "GEVAAR"],
    ["NaOH-oplossing 50%",
     "Met. Corr. 1\nSkin Corr. 1A\nEye Dam. 1",
     "H290, H314, H318",
     "GHS05 (corrosie)",
     "GEVAAR"],
]
add_table(doc, clp_headers, clp_rows)

doc.add_paragraph()

doc.add_heading("4.2 Etiketteringseisen per product", level=2)
doc.add_paragraph(
    "Elk product dat Phoenix Metals in de handel brengt, moet zijn voorzien van een CLP-conform etiket met "
    "de volgende elementen:"
)
label_items = [
    "Productidentificatie (naam van de stof/het mengsel).",
    "Naam, adres en telefoonnummer van Phoenix Metals B.V.",
    "GHS-pictogrammen (minimaal 1 cm² per pictogram voor verpakkingen ≤3 liter).",
    "Signaalwoord: GEVAAR of WAARSCHUWING.",
    "Gevaarzinnen (H-zinnen): volledig uitgeschreven.",
    "Voorzorgszinnen (P-zinnen): minimaal preventie, respons en opslag.",
    "Aanvullende informatie: EUH-zinnen indien van toepassing (bijv. EUH210 — op verzoek beschikbare SDS).",
    "UFI-code (Unique Formula Identifier): verplicht voor mengsels die aan het grote publiek worden geleverd; voor B2B sterk aanbevolen voor productidentificatie en vergiftigingscentra.",
]
for item in label_items:
    doc.add_paragraph(item, style='List Bullet')

doc.add_heading("4.3 UFI-toewijzing", level=2)
doc.add_paragraph(
    "De UFI (Unique Formula Identifier) is verplicht voor mengsels bestemd voor consumenten (CLP artikel 45). "
    "Voor B2B-producten (zoals vanadium-elektrolyt) is UFI-toewijzing sterk aanbevolen. Phoenix Metals "
    "genereert UFI's via de ECHA Poison Centres Notification (PCN)-portal en registreert deze in het interne "
    "chemicaliënbeheersysteem."
)

ufi_headers = ["Product", "UFI vereist?", "Status"]
ufi_rows = [
    ["SARU ash (mengsel)", "Aanbevolen (B2B)", "Te genereren bij eerste levering"],
    ["Vanadium-elektrolyt (mengsel)", "Aanbevolen (B2B)", "Te genereren bij eerste levering"],
    ["Zwavelzuur (stof, geen mengsel)", "Niet van toepassing", "NVT — stof, geen mengsel"],
    ["NaOH-oplossing (mengsel)", "Aanbevolen (B2B)", "Te genereren bij eerste levering"],
]
add_table(doc, ufi_headers, ufi_rows)

doc.add_page_break()

# ===== 5. H4: SDS-BEHEERSYSTEEM =====
doc.add_heading("5. H4: SDS-Beheersysteem", level=1)

doc.add_heading("5.1 Procesflow: ontwerp tot distributie", level=2)

flow_headers = ["Fase", "Verantwoordelijke", "Actie", "Output"]
flow_rows = [
    ["1. Ontwerp", "HSEQ Specialist", "SDS opstellen conform REACH Bijlage II / ECHA-template", "Concept-SDS (draft)"],
    ["2. Review", "HSEQ Manager + Lab", "Technische validatie: samenstelling, toxicologie, CLP-indeling", "Reviewed SDS"],
    ["3. Goedkeuring", "Directie (JH)", "Formele vrijgave en ondertekening", "Goedgekeurde SDS (vX.X)"],
    ["4. Distributie", "Logistiek / Sales", "SDS meesturen bij eerste levering + bij updates", "Distributielogboek"],
    ["5. Archivering", "HSEQ Specialist", "Oude versies archiveren, nieuwe versie in documentbeheersysteem", "Versiehistorie"],
]
add_table(doc, flow_headers, flow_rows)

doc.add_paragraph()

doc.add_heading("5.2 Versiebeheer", level=2)
doc.add_paragraph(
    "Elke SDS ontvangt een uniek versienummer (formaat vX.X). Een nieuwe versie wordt gepubliceerd bij:"
)
version_triggers = [
    "Wijziging in chemische samenstelling of concentratiebereiken.",
    "Nieuwe of gewijzigde CLP-indeling (bijv. nieuwe harmonisatie door ECHA).",
    "Actualisatie van toxicologische of ecotoxicologische data.",
    "Wijziging in REACH- of CLP-wetgeving (bijv. nieuwe ATP).",
    "Signalering via downstream user of incident (art. 31(9)).",
]
for vt in version_triggers:
    doc.add_paragraph(vt, style='List Bullet')

doc.add_paragraph(
    "Minimale herzieningsfrequentie: bij elke relevante wijziging, en uiterlijk elke 3 jaar een proactieve review."
)

doc.add_heading("5.3 Distributie aan downstream users", level=2)
doc.add_paragraph(
    "Conform REACH artikel 31(1) wordt de SDS kosteloos verstrekt aan elke ontvanger van het product, "
    "uiterlijk bij de eerste levering. Bij een wezenlijke update wordt de herziene SDS automatisch verzonden "
    "naar alle bekende downstream users. Distributie vindt plaats via:"
)
dist_items = [
    "Elektronisch (PDF) — standaardmethode, met leesbevestiging.",
    "Papier — op verzoek van de ontvanger.",
    "Via het ECHA-Submission-portaal (voor PCN-notificaties).",
]
for d in dist_items:
    doc.add_paragraph(d, style='List Bullet')

doc.add_heading("5.4 Update-triggers", level=2)

trigger_headers = ["Trigger", "Bron", "Actie"]
trigger_rows = [
    ["Nieuwe wetgeving (ATP, REACH-amendement)", "ECHA / RIVM / overheid", "Impactanalyse → SDS-update → herziening"],
    ["Nieuwe toxicologische data", "Wetenschappelijke literatuur / ECHA", "Beoordeling → mogelijke herindeling → SDS-update"],
    ["Incident of klacht downstream user", "Klant / HSE-melding", "Onderzoek → zo nodig SDS-aanpassing"],
    ["Wijziging productieproces of samenstelling", "Lab / Productie", "Nieuwe samenstelling → SDS-revisie"],
    ["SVHC-toevoeging aan kandidatenlijst", "ECHA (tweemaal per jaar)", "Check of stof in product → artikel 33 communicatie + SDS-update"],
]
add_table(doc, trigger_headers, trigger_rows)

doc.add_paragraph()

doc.add_heading("5.5 Oplevering in RETAIL-formaat", level=2)
doc.add_paragraph(
    "Alle SDS'en worden opgeleverd conform het RETAIL-principe:"
)
retail_items = [
    "R — Readable: heldere taal, gestructureerde lay-out, leesbaar voor niet-chemici.",
    "E — Exact: juiste CAS-nummers, concentratiebereiken, indelingen — geen afrondingen.",
    "T — Timely: binnen 24 uur na eerste levering beschikbaar; updates binnen 14 dagen na trigger.",
    "A — Accessible: digitaal beschikbaar, 24/7 raadpleegbaar voor downstream users.",
    "I — Identified: unieke versienummer, datum, en goedkeurder per SDS traceerbaar.",
    "L — Legal: volledig conform REACH Bijlage II, CLP, en nationale wetgeving.",
]
for item in retail_items:
    doc.add_paragraph(item, style='List Bullet')

doc.add_page_break()

# ===== 6. H5: EXTENDED-SDS =====
doc.add_heading("6. H5: Extended-SDS (eSDS) en Exposure Scenarios", level=1)

doc.add_heading("6.1 Wanneer is een eSDS vereist?", level=2)
doc.add_paragraph(
    "Een extended-SDS (eSDS) is vereist wanneer Phoenix Metals een chemische veiligheidsbeoordeling (CSA) "
    "moet uitvoeren. Dit is het geval wanneer:"
)
esds_triggers = [
    "De stof wordt geproduceerd of geïmporteerd in een hoeveelheid ≥10 ton/jaar (REACH artikel 14).",
    "De stof is ingedeeld als gevaarlijk of is PBT/vPvB.",
    "Phoenix Metals als fabrikant verantwoordelijk is voor de registratie.",
]
for t in esds_triggers:
    doc.add_paragraph(t, style='List Bullet')

doc.add_paragraph(
    "Voor de huidige pilotfase (≤60 kg ash) is een eSDS niet verplicht. Bij opschaling naar commercieel "
    "productieniveau (>10 ton/jaar) wordt deze wel vereist. De voorbereiding hierop is onderdeel van deze strategie."
)

doc.add_heading("6.2 Exposure Scenarios voor Phoenix Metals", level=2)
doc.add_paragraph(
    "Indien een eSDS vereist is, worden de volgende exposure scenarios (ES) verwacht:"
)

es_headers = ["ES-nummer", "Scenario", "Beschrijving", "Target users"]
es_rows = [
    ["ES1", "Productie van vanadium-elektrolyt", "Leaching, zuurextractie, elektrolyse uit SARU ash", "Phoenix Metals eigen medewerkers"],
    ["ES2", "Opslag en distributie", "Opslag in IBC's/tanks, laden/lossen transportvoertuigen", "Logistiek personeel, transporteurs"],
    ["ES3", "Gebruik in VRFB-systemen", "Elektrolyt vullen in batterijtanks, onderhoud", "VRFB-fabrikanten, installateurs"],
    ["ES4", "Onderhoud en reiniging", "Reiniging apparatuur, afvoer reststromen", "Onderheidspersoneel"],
]
add_table(doc, es_headers, es_rows)

doc.add_paragraph()

doc.add_heading("6.3 Communicatie aan downstream users", level=2)
doc.add_paragraph(
    "Bij een eSDS ontvangt de downstream user niet alleen het veiligheidsinformatieblad, maar ook de relevante "
    "exposure scenarios als bijlage. De downstream user moet bevestigen dat zijn gebruik binnen het beschreven "
    "scenario valt. Indien niet, moet hij Phoenix Metals hierover informeren (REACH artikel 38). "
    "Phoenix Metals registreert deze communicatie in het klantbeheersysteem."
)

doc.add_page_break()

# ===== 7. H6: BRONNEN- EN TEMPLATEBEHEER =====
doc.add_heading("7. H6: Bronnen- en Templatebeheer", level=1)

doc.add_heading("7.1 SDS-templates", level=2)
doc.add_paragraph(
    "Phoenix Metals hanteert het ECHA-standaardformaat voor veiligheidsinformatiebladen. Templates zijn "
    "beschikbaar via:"
)
template_sources = [
    "ECHA SDS-template (ECHA website, 'Practical Guide' sectie).",
    "ECHA Comply — online tool voor SDS-opstelling en validatie.",
    "Branchegenoot templates (via Vanadium Consortium).",
    "Interne template: opgeslagen in /deliverables/templates/ met Phoenix Metals huisstijl.",
]
for ts in template_sources:
    doc.add_paragraph(ts, style='List Bullet')

doc.add_heading("7.2 Brondata: MSDS's van leveranciers", level=2)
doc.add_paragraph(
    "De volgende MSDS's van leveranciers vormen de brongegevens voor de eigen SDS-opstelling:"
)

msds_headers = ["Stof", "Leverancier", "Document", "Versie"]
msds_rows = [
    ["Zwavelzuur 25-75%", "Carl Roth / RCI Labscan", "Sulfuric acid 25-75% SDS", "RV.00, juli 2021"],
    ["NaOH 50%", "Carl Roth / Merck", "Sodium hydroxide 50% SDS", "v6.9, juli 2024"],
    ["Vanadium concentrate", "Shell Pernis (historisch)", "Vanadium concentrate V1", "Versie 1"],
    ["Aluminiumsulfaat", "Carl Roth", "Aluminum sulfate SDS", "Leveranciersversie"],
    ["Calciumoxide", "Carl Roth", "Calcium oxide SDS", "Leveranciersversie"],
]
add_table(doc, msds_headers, msds_rows)

doc.add_paragraph()
doc.add_paragraph(
    "Let op: deze SDS'en gelden ALS BRON voor samenstellings- en indelingsinformatie. Phoenix Metals stelt "
    "ZELF de SDS op voor de eindproducten en mengsels."
)

doc.add_heading("7.3 Vanadium Consortium registratiegegevens", level=2)
doc.add_paragraph(
    "Het Vanadium REACH Consortium (vanadiumconsortium.com) heeft 19 stoffen geregistreerd. Voor Phoenix "
    "Metals zijn de volgende registraties relevant:"
)

consortium_headers = ["Stof", "EC-nummer", "CAS-nummer", "Relevantie"]
consortium_rows = [
    ["Sodium metavanadate", "237-272-7", "13718-26-8", "Bestanddeel van SARU ash"],
    ["Divanadium pentaoxide (V₂O₅)", "215-239-8", "1314-62-1", "Primair gevaarlijk bestanddeel"],
    ["Vanadium oxide sulphate", "248-652-7", "27774-13-6", "Eindproduct (elektrolyt)"],
    ["Slags, steelmaking, vanadium", "273-734-4", "60912-34-6", "Feedstock (SARU ash UVCB)"],
    ["Divanadium tris(sulphate)", "237-226-6", "13701-70-7", "Mogelijk bijproduct"],
]
add_table(doc, consortium_headers, consortium_rows)

doc.add_paragraph()

doc.add_heading("7.4 Externe database-referenties", level=2)
db_items = [
    "ECHA Classification & Labelling Inventory — echa.europa.eu/information-on-chemicals/cl-inventory",
    "ESIS (European chemical Substances Information System) — esis.jrc.ec.europa.eu",
    "Chemwatch (indien geabonneerd) — chemwatch.net",
    "IARC Monographs — monographs.iarc.who.int (V₂O₅: Group 2B)",
    "RIVM ZNH-lijst (Zone-Nieuwe-Stoffen) — rivm.nl",
    "SER Grenswaardenlijst — ser.nl (V₂O₅: 0,05 mg/m³ TWA)",
]
for db in db_items:
    doc.add_paragraph(db, style='List Bullet')

doc.add_page_break()

# ===== 8. BRONVERWIJZINGEN =====
doc.add_heading("8. Bronverwijzingen", level=1)

refs = [
    "1. REACH — Verordening (EG) nr. 1907/2006, Titel IV, Hoofdstuk 1 (Art. 31-32).",
    "2. CLP — Verordening (EG) nr. 1272/2008, inclusief ATP's t/m de 19e ATP.",
    "3. ECHA (2020), Richtsnoer voor het samenstellen van veiligheidsinformatiebladen, Versie 4.0, December 2020. Ref: ECHA-20-H-25-EN.",
    "4. ECHA (2021), Guidance on Labelling and Packaging in accordance with Regulation (EC) No 1272/2008, Versie 4.2, Maart 2021. Ref: ECHA-21-G-02-EN.",
    "5. ECHA (2012), Practical Guide 15: How to undertake a qualitative human health assessment. Ref: ECHA-12-B-49-EN.",
    "6. ECHA (2012), Part G: Guidance on the Compilation of Safety Data Sheets (IR&CSA).",
    "7. Verordening (EU) 2020/878 — wijziging van REACH Bijlage II (SDS-formaat).",
    "8. Phoenix Metals (2024), Registration Chemicals — MASTER (v2.1.0). Intern document.",
    "9. Carl Roth / RCI Labscan, Sulfuric acid 25-75% SDS (RV.00, juli 2021).",
    "10. Merck / MilliporeSigma, Sodium hydroxide 50% SDS (v6.9, juli 2024).",
    "11. Vanadium REACH Consortium, vanadiumconsortium.com — Substances & Data Sharing.",
    "12. SER (2024), Grenswaardenlijst gevaarlijke stoffen — Vanadiumpentoxide.",
    "13. IARC (2024), IARC Monographs, Volume 100F — Vanadium pentoxide (Group 2B).",
    "14. Phoenix Metals (2024), RI&E Gevaarlijke stoffen V3.0 — Rapportage verdiepend.",
    "15. Phoenix Metals (2024), HSE Policy document.",
]
for ref in refs:
    doc.add_paragraph(ref)

# ===== FOOTER =====
doc.add_paragraph()
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run("— Einde document —")
r.font.size = Pt(10)
r.font.color.rgb = RGBColor(0x99, 0x99, 0x99)

p2 = doc.add_paragraph()
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
r2 = p2.add_run("Phoenix Metals B.V. | REACH D3 v4.0 | 19 april 2026 | Vertrouwelijk")
r2.font.size = Pt(8)
r2.font.color.rgb = RGBColor(0x99, 0x99, 0x99)

# Save
doc.save(OUTPUT)
print(f"✅ Document opgeslagen: {OUTPUT}")
