#!/usr/bin/env python3
"""
Generate REACH & PGS 15 Herbeoordeling v1.2 — GENUANCEERDE Rechtspositie
Phoenix Metals B.V.
Date: 2026-04-19
"""

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

doc = Document()

# ── Style Setup ──
style = doc.styles['Normal']
font = style.font
font.name = 'Calibri'
font.size = Pt(11)

for i in range(1, 5):
    hs = doc.styles[f'Heading {i}']
    hs.font.color.rgb = RGBColor(0, 51, 102)
    hs.font.name = 'Calibri'

doc.styles['Heading 1'].font.size = Pt(18)
doc.styles['Heading 2'].font.size = Pt(14)
doc.styles['Heading 3'].font.size = Pt(12)

def add_table(doc, headers, rows):
    table = doc.add_table(rows=1 + len(rows), cols=len(headers))
    table.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

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

# ════════════════════════════════════════════════════════
# TITLE PAGE
# ════════════════════════════════════════════════════════
doc.add_paragraph()
doc.add_paragraph()
title = doc.add_paragraph()
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = title.add_run('REACH & PGS 15 Herbeoordeling\nPhoenix Metals B.V.')
run.bold = True
run.font.size = Pt(26)
run.font.color.rgb = RGBColor(0, 51, 102)

subtitle = doc.add_paragraph()
subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = subtitle.add_run('Kennisdossier — Juridische Analyse & Concrete Actielijst')
run.font.size = Pt(14)
run.font.color.rgb = RGBColor(80, 80, 80)

doc.add_paragraph()

meta_data = [
    ('Documentcode', 'PM-REACH-PGS15-HERB-v1.2'),
    ('Versie', '1.2'),
    ('Datum', '19 april 2026'),
    ('Status', 'Definitief'),
    ('Opdrachtgever', 'Phoenix Metals B.V.'),
    ('Auteur', 'Kas — HSEQ Specialist (Director of Operations)'),
    ('Classificatie', 'Vertrouwelijk — Alleen intern gebruik'),
]
add_table(doc, ['Veld', 'Waarde'], meta_data)

doc.add_paragraph()
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run('Gebaseerd op 57+ brondocumenten, PGS 15:2025, REACH-verordening (EG 1907/2006),\nCLP-verordening (EG 1272/2008), ECHA Guidance on Recovered Substances, en originele VPS-documenten.')
run.font.size = Pt(9)
run.italic = True

doc.add_page_break()

# ════════════════════════════════════════════════════════
# TABLE OF CONTENTS
# ════════════════════════════════════════════════════════
doc.add_heading('Inhoudsopgave', level=1)
toc_items = [
    '1. Managementsamenvatting',
    '2. DEEL 1: REACH Analyse',
    '   2A. Rechtspositie Phoenix Metals (Drie Opties)',
    '   2B. Sameness Check — Criteria & Relevante Stoffen',
    '   2C. Fase 1 — Demo (≤60 kg): PPORD-vrijstelling',
    '   2D. Fase 2 — Commercieel (>1 ton/jaar): Route A vs Route B',
    '   2E. SVHC Analyse',
    '   2F. CLP Verplichtingen',
    '   2G. REACH Concrete Actielijst',
    '3. DEEL 2: PGS 15 Analyse',
    '   3A. Toepasselijkheid',
    '   3B. Scenario Analyse',
    '   3C. Eisen (Bouwkundig, Veiligheid, Organisatorisch)',
    '   3D. Uitzonderingen pilot plant',
    '   3E. PGS 15 Concrete Actielijst',
    '4. Conclusies & Aanbevelingen',
    '5. Bronverwijzingen',
]
for item in toc_items:
    p = doc.add_paragraph(item)
    p.paragraph_format.space_after = Pt(2)

doc.add_page_break()

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

add_para(doc,
'Phoenix Metals B.V. exploiteert een proeffabriek (pilot plant / demonstrator) op PlantOne Rotterdam voor de hydrometallurgische extractie van vanadium uit SARU ash (reststroom olieraffinage). De schaal is beperkt: ≤60 kg ash verwerkt in batches van 3,5 kg, over een campagne van ≤3 maanden. Een locatie in IJmuiden (Westerduinweg 3) is in ontwikkeling voor opschaling naar 7.200 kg staalslakken/jaar.')

doc.add_heading('Genuanceerde rechtspositie — Belangrijkste wijziging t.o.v. v1.0/v1.1', level=2)

add_para(doc,
'Eerdere versies classificeerden Phoenix Metals als "downstream user" (v1.0) dan wel "fabrikant" (v1.1). De werkelijkheid is genuanceerder. Phoenix Metals is technisch een fabrikant (extractie = manufacturing), maar kan waarschijnlijk een uitzondering claimen onder de ECHA Guidance on Recovered Substances als de geëxtraheerde stof identiek blijkt aan een reeds geregistreerde stof.', bold=True)

add_para(doc,
'De REACH-positie van Phoenix Metals kent drie mogelijke routes:\n\n'
'OPTIE A — Fabrikant (REACH Art. 3(8)): Extractie van vanadium uit ash/valsslakken = "manufacturing" van de geëxtraheerde stof. Phoenix Metals is fabrikant van de vanadiumverbinding in het eindproduct. Volledige registratieverplichting boven 1 ton/jaar.\n\n'
'OPTIE B — Fabrikant van recovered substances (MEEST WAARSCHIJNLIJK): Volgens de ECHA Guidance on Recovered Substances kan een bedrijf dat een stof terugwint uit afval/reststromen terugvallen op een bestaande REACH-registratie, mits de teruggewonnen stof identiek is ("sameness check") aan een reeds geregistreerde stof. Het Vanadium Consortium heeft de relevante stoffen reeds geregistreerd. Phoenix Metals hoeft dan geen eigen dossier in te dienen, maar heeft wel een Letter of Access (LoA) nodig.\n\n'
'OPTIE C — Downstream user (MINST WAARSCHIJNLIJK): Alleen van toepassing als de grondstof (staalslakken) als "stof in de handel" wordt beschouwd en de vanadium al geregistreerd is door de leverancier. Onwaarschijnlijk omdat staalslakken een afvalstof/reststroom zijn.')

add_para(doc,
'⚠️ KERNBOODSCHAP: De definitieve REACH-route is pas bepaald NA de sameness check. Dit is de eerste prioriteit. Tot die tijd geldt het voorzorgsbeginsel: Phoenix Metals moet communiceren en rapporteren ALS fabrikant.', bold=True)

doc.add_heading('Kernbevindingen REACH per fase', level=2)
add_para(doc,
'FASE 1 — Demo (≤60 kg, ≤3 maanden):\n'
'• PPORD Art. 3(23) → vrijstelling van registratie\n'
'• Productie << 1 ton/jaar → geen registratieplicht\n'
'• Wel: CLP-indeling, SDS-beheer, CMR-maatregelen, RI&E\n\n'
'FASE 2 — Commercieel (>1 ton/jaar):\n'
'• Route A: Sameness check slaagt → terugvallen op bestaande registratie (LoA bij Vanadium Consortium)\n'
'• Route B: Sameness check faalt → eigen registratie vereist (volledig REACH-dossier)\n'
'• In BEIDE gevallen: SDS, CLP, communicatieverplichtingen als fabrikant')

doc.add_heading('Kernbevindingen PGS 15', level=2)
add_para(doc,
'1. PGS 15 is VAN TOEPASSING (≈405 kg ADR-klasse 8 > ondergrens 250 kg).\n'
'2. Basisveiligheidsniveau volstaat (onbrandbare bijtende stoffen, dedicated opslag).\n'
'3. Kritieke eis: scheiding H₂SO₄ en NaOH (onverenigbare combinatie).\n'
'4. Vergunningpositie: meldingsplichtig, niet vergunningplichtig (<10.000 kg).\n\n'
'Noot: Het PGS 15-deel is ongewijzigd ten opzichte van v1.0. De volledige PGS 15-analyse is opgenomen in DEEL 2.')

doc.add_page_break()

# ════════════════════════════════════════════════════════
# 2. DEEL 1: REACH ANALYSE
# ════════════════════════════════════════════════════════
doc.add_heading('2. DEEL 1: REACH Analyse', level=1)

# ── 2A. Rechtspositie ──
doc.add_heading('2A. Rechtspositie Phoenix Metals — Drie Opties', level=2)

doc.add_heading('2A.1 Feitelijke context', level=3)
add_para(doc,
'Uit de bronbestanden (16_pm_bedrijfsomschrijving, 23_pm_demo_process, 42_pm_fact_sheet_ash) volgt het proces:\n\n'
'• Grondstof: SARU ash (Shell Ash Recycling Unit) — reststroom uit olieraffinage. Mengsel van natriummetavanaat, trinatriumorthovanadate en nikkeloxide. Natuurlijk voorkomende radionucliden (U-238 serie).\n\n'
'• Proces: Ash → mengen met NaOH (leaching) → filtratie → kristallisatie → oplossen in H₂SO₄ → ionenwisseling → elektroreductie → vanadium(IV)sulfaat-oplossing.\n\n'
'• Schaal demo: ≤60 kg ash totaal, 3,5 kg per batch, ≤3 maanden campagne (PlantOne).\n\n'
'• Schaal IJmuiden (toekomstig): 7.200 kg staalslakken/jaar, 3.000 L batch.')

doc.add_heading('2A.2 Optie A: Fabrikant (REACH Art. 3(8))', level=3)
add_para(doc,
'Definitie: "Fabrikant" is elke natuurlijke of rechtspersoon die in de EER een stof vervaardigt (Art. 3(8)).\n\n'
'Argumenten vóór:\n'
'• Het hydrometallurgisch extractieproces isoleert en transformeert vanadiumverbindingen uit een mengsel (ash/valsslakken) tot een nieuw product\n'
'• De chemische transformatie (oplossen in H₂SO₄, ionenwisseling, elektroreductie) levert een andere stof op dan in de grondstof aanwezig was\n'
'• REACH-artikel 3(1): een stof wordt als "geproduceerd" beschouwd wanneer deze door een chemisch proces wordt verkregen\n\n'
'Argumenten tegen:\n'
'• Als het eindproduct chemisch identiek is aan een reeds bestaande stof, is er sprake van "terugwinning" eerder dan "productie van een nieuwe stof"\n'
'• De ECHA Guidance on Recovered Substances biedt een specifiek kader voor deze situatie\n\n'
'Gevolg: Volledige REACH-registratieverplichting boven 1 ton/jaar. Eigen dossier bij ECHA vereist.', bold=False)

doc.add_heading('2A.3 Optie B: Fabrikant van recovered substances (MEEST WAARSCHIJNLIJK)', level=3)
add_para(doc,
'Juridisch kader: ECHA Guidance on requirements for substances in products manufactured from waste recovered substances (zwakte van de richtlijn: geen specifiek REACH-artikel, maar afgeleid uit Art. 2(7)(d) en de algemene registratiebepalingen).\n\n'
'Principe: Als een bedrijf een stof terugwint uit afval en deze stof identiek is aan een reeds geregistreerde stof, hoeft het bedrijf geen nieuwe registratie in te dienen. Het kan terugvallen op de bestaande registratie.\n\n'
'Voorwaarden:\n'
'1. De teruggewonnen stof moet identiek zijn aan een reeds geregistreerde stof ("sameness check")\n'
'2. Het bedrijf moet toegang hebben tot de registratiegegevens (via LoA of consortiumlidmaatschap)\n'
'3. De stof mag niet zijn gewijzigd tijdens het terugwinningsproces\n\n'
'Waarom dit de meest waarschijnlijke optie is:\n'
'• SARU ash en staalslakken zijn reststromen/afvalstoffen — het terugwinningskader is toepasselijk\n'
'• Het Vanadium Consortium heeft de relevante stoffen reeds geregistreerd (zie §2B)\n'
'• De kans is groot dat het eindproduct chemisch identiek is aan een reeds geregistreerde stof\n\n'
'Onzekerheid: De sameness check is nog niet uitgevoerd. Pas na de sameness check is met zekerheid te zeggen of Optie B geldt.', bold=True)

doc.add_heading('2A.4 Optie C: Downstream user (MINST WAARSCHIJNLIJK)', level=3)
add_para(doc,
'Definitie: "Downstream user" is elke persoon die een stof als zodanig of in een mengsel gebruikt in het kader van zijn beroepsactiviteiten, anders dan als fabrikant of importeur (Art. 3(13)).\n\n'
'Argumenten vóór:\n'
'• Phoenix Metals ontvangt de ash van Shell/SARU en "gebruikt" deze\n'
'• De ingekochte chemicaliën (H₂SO₄, NaOH) worden gebruikt, niet geproduceerd\n\n'
'Argumenten tegen:\n'
'• Het extractieproces produceert een nieuwe stof — dit gaat verder dan "gebruik" van de grondstof\n'
'• Staalslakken en SARU ash zijn geen "stoffen in de handel" maar reststromen/afvalstoffen\n'
'• De leverancier (Shell/Tata Steel) heeft de vanadiumverbindingen in de slakken niet als zodanig geregistreerd\n\n'
'Conclusie: Optie C is onwaarschijnlijk. Phoenix Metals onttrekt actief een stof aan een reststroom — dit is manufacturing, niet gebruik.', bold=True)

doc.add_heading('2A.5 Samenvattende tabel: Drie opties vergeleken', level=3)
add_table(doc,
    ['Criterium', 'Optie A: Fabrikant', 'Optie B: Recovered substances', 'Optie C: Downstream user'],
    [
        ['Juridische basis', 'REACH Art. 3(8)', 'ECHA Guidance Recovered Substances', 'REACH Art. 3(13)'],
        ['Waarschijnlijkheid', 'Mogelijk', 'Meest waarschijnlijk', 'Onwaarschijnlijk'],
        ['Registratieverplichting', 'Ja (>1 ton/jaar)', 'Vervalt bij sameness OK + LoA', 'Nee (rust op leverancier)'],
        ['Kosten', '€120k-€290k (volledig dossier)', '€15k-€40k (LoA/consortium)', 'Geen'],
        ['Vereiste actie', 'Eigen REACH-dossier bij ECHA', 'Sameness check + LoA', 'Geen'],
        ['Risico bij afwijzing', 'Volledige compliance kost', 'Terugval naar Optie A', 'Niet toepasbaar'],
    ])

doc.add_page_break()

# ── 2B. Sameness Check ──
doc.add_heading('2B. Sameness Check — Criteria & Relevante Stoffen', level=2)

doc.add_heading('2B.1 Wat is een sameness check?', level=3)
add_para(doc,
'De sameness check is de vergelijking van de teruggewonnen stof met een reeds geregistreerde stof om vast te stellen of deze "identiek" zijn in de zin van REACH. Volgens de ECHA Guidance on Substance Identification (RIP 3.10) omvat de sameness check:\n\n'
'1. Chemische identiteit: Zelfde CAS-nummer, EC-nummer en IUPAC-naam\n'
'2. Molecuulstructuur: Identiek structuurformule en stereochemie\n'
'3. Zuiverheidsprofiel: Vergelijkbaar onzuiverhedenprofiel (type en concentratie)\n'
'4. Spectroscopische data: IR, NMR, massaspectrometrie ter bevestiging\n\n'
'De sameness check hoeft niet te bewijzen dat de stoffen 100% identiek zijn — kleine variaties in onzuiverheden zijn acceptabel mits deze niet leiden tot een andere classificatie.')

doc.add_heading('2B.2 Relevante reeds geregistreerde stoffen (Vanadium Consortium)', level=3)
add_para(doc,
'Het Vanadium REACH Consortium (vanadiumconsortium.com) heeft 19 vanadiumverbindingen geregistreerd. Voor Phoenix Metals zijn de volgende kandidaten voor de sameness check:')

add_table(doc,
    ['Stof', 'CAS-nummer', 'EC-nummer', 'Relevantie voor sameness check'],
    [
        ['Sodium metavanadate (NaVO₃)', '13718-26-8', '237-272-7', 'Bestanddeel van SARU ash. Indien Phoenix Metals NaVO₃ als zodanig op de markt brengt.'],
        ['Vanadium oxide sulphate (VOSO₄)', '27774-13-6', '248-652-7', 'EINDPRODUCT demo. Sterkste kandidaat voor sameness check.'],
        ['Divanadium pentaoxide (V₂O₅)', '1314-62-1', '215-239-8', 'Mogelijk relevant bij opschaling of andere procesroutes.'],
        ['Divanadium tris(sulphate)', '13701-70-7', '237-226-6', 'Mogelijk relevant bij opschaling.'],
        ['Slags, steelmaking, vanadium', '60912-34-6', '273-734-4', 'GRONDSTOF voor IJmuiden. Letterlijk de UCL-gecertificeerde stof die Tata Steel levert.'],
    ])

doc.add_heading('2B.3 Uitvoering sameness check — Wat moet Phoenix Metals doen', level=3)
add_para(doc,
'Stap 1 — Identificeer de doelstof: Bepaal de exacte chemische identiteit van het eindproduct (na extractie). Dit is hoogstwaarschijnlijk VOSO₄ (vanadium(IV)sulfaat) in waterige H₂SO₄-oplossing.\n\n'
'Stap 2 — Verkrijg referentiedata: Neem contact op met het Vanadium Consortium voor de registratiegegevens van VOSO₄ (EC 248-652-7). Dit vereist een LoA of consortiumlidmaatschap.\n\n'
'Stap 3 — Laboratoriumanalyse: Laat het eindproduct analyseren op:\n'
'   • Elementaire samenstelling (ICP-OES of ICP-MS)\n'
'   • Zuiverheid en onzuiverhedenprofiel\n'
'   • Spectroscopische karakterisering (IR, UV-Vis)\n'
'   • Fysicochemische parameters (pH, dichtheid, oplosbaarheid)\n\n'
'Stap 4 — Vergelijk: Toets de analyseresultaten aan de registratiegegevens van het Vanadium Consortium.\n\n'
'Stap 5 — Documentatie: Stel een sameness-rapport op, bij voorkeur laten beoordelen door een REACH-deskundige.\n\n'
'⚠️ Belangrijk: De sameness check moet worden uitgevoerd door een gekwalificeerd laboratorium en beoordeeld door een REACH-deskundige. De uitkomst bepaalt de REACH-route (Optie A of B).', bold=True)

doc.add_heading('2B.4 Scenario-uitkomsten sameness check', level=3)
add_table(doc,
    ['Uitkomst', 'REACH-positie', 'Vervolgactie', 'Kostenindicatie'],
    [
        ['Sameness OK — VOSO₄ identiek', 'Optie B: Recovered substances', 'LoA bij Vanadium Consortium + communicatieverplichtingen', '€15.000-€40.000'],
        ['Sameness OK — Slags EC 273-734-4', 'Optie B: Recovered substances', 'LoA bij Vanadium Consortium + communicatieverplichtingen', '€15.000-€40.000'],
        ['Sameness FAALT', 'Optie A: Fabrikant', 'Volledig REACH-registratiedossier bij ECHA', '€120.000-€290.000'],
        ['Onzeker (grensgeval)', 'Voorzorg: Optie A aannemen', 'REACH-deskundige inschakelen + nader onderzoek', 'Variabel'],
    ])

doc.add_page_break()

# ── 2C. Fase 1 — Demo ──
doc.add_heading('2C. Fase 1 — Demo (≤60 kg): PPORD-vrijstelling', level=2)

doc.add_heading('2C.1 PPORD-uitzondering (artikel 3(23))', level=3)
add_para(doc,
'REACH artikel 3(23) definieert "product- en procesgeoriënteerd onderzoek en ontwikkeling" (PPORD) als elke wetenschappelijke ontwikkeling, productontwikkeling of procesontwikkeling, waaronder het opschalen, testen van een productieproces en testen van de toepassing van de stof.\n\n'
'De Phoenix Metals pilot plant voldoet aan alle PPORD-criteria:\n'
'• Het is een demonstrator/proeffabriek, geen commercieel productiemiddel\n'
'• Het doel is procesvalidatie en productkwaliteitbewijs\n'
'• De schaal is beperkt (≤60 kg ash, ≤3 maanden)\n'
'• Er is geen commerciële afzet van het eindproduct\n\n'
'PPORD-melding bij ECHA (artikel 9(2)):\n'
'• Verplicht bij productie ≥1 ton/jaar voor PPORD-doeleinden\n'
'• Phoenix Metals produceert <<1 ton/jaar → PPORD-melding NIET vereist\n'
'• Advies: Documenteer dat de pilot plant als PPORD kwalificeert ter onderbouwing', bold=True)

doc.add_heading('2C.2 Vrijgestelde stoffen (artikel 2(7))', level=3)
add_para(doc,
'Geen van de door Phoenix Metals gebruikte stoffen (H₂SO₄, NaOH, aluminiumsulfaat, calciumoxide, vanadiumverbindingen) valt onder de vrijstelling van artikel 2(7). Echter, Phoenix Metals koopt deze stoffen van geregistreerde leveranciers — de vrijstellingsvraag is niet aan de orde voor een fabrikant van recovered substances.')

doc.add_heading('2C.3 Overige Fase 1-verplichtingen', level=3)
add_para(doc,
'Ondanks de PPORD-vrijstelling gelden de volgende verplichtingen OOK in de demo-fase:\n\n'
'1. CLP-indeling: Alle stoffen correct indelen en etiketteren (zie §2F)\n'
'2. SDS-beheer: SDS beschikbaar voor alle werknemers (REACH Art. 31)\n'
'3. CMR-maatregelen: Natriummetavanaat (reprotoxisch cat. 2) en nikkeloxide (kankerverwekkend cat. 1B) vereisen specifieke arbeidsmaatregelen (Arbobesluit hfdst 4 §2)\n'
'4. RI&E: Risico-inventarisatie inclusief SVHC/CMR-stoffen en stralingsverantwoording\n'
'5. Afvoer reststromen: SVHC-bevattende resten als gevaarlijk afval (Eural 060204)')

doc.add_page_break()

# ── 2D. Fase 2 — Commercieel ──
doc.add_heading('2D. Fase 2 — Commercieel (>1 ton/jaar): Route A vs Route B', level=2)

doc.add_heading('2D.1 Route A: Sameness check slaagt', level=3)
add_para(doc,
'Als de sameness check aantoont dat het eindproduct identiek is aan een reeds geregistreerde stof ( hoogstwaarschijnlijk VOSO₄, EC 248-652-7):\n\n'
'1. Phoenix Metals kan terugvallen op de bestaande registratie van het Vanadium Consortium\n'
'2. Een Letter of Access (LoA) is vereist om toegang te krijgen tot de registratiegegevens\n'
'3. Phoenix Metals meldt zich aan bij ECHA REACH-IT als "registrant" die terugvalt op een bestaande registratie\n'
'4. De OSOR-regel (One Substance, One Registration) wordt gerespecteerd\n\n'
'Kosten: €15.000-€40.000 (LoA + consortiumkosten)\n'
'Termijn: 3-6 maanden na sameness check', bold=False)

doc.add_heading('2D.2 Route B: Sameness check faalt', level=3)
add_para(doc,
'Als de sameness check aantoont dat het eindproduct NIET identiek is aan een reeds geregistreerde stof:\n\n'
'1. Phoenix Metals is volledig fabrikant (Optie A) en moet een eigen REACH-registratiedossier indienen\n'
'2. Het dossier moet bevatten: chemische identiteit, fysisch-chemische eigenschappen, toxicologische gegevens, ecotoxicologische gegevens, blootstellingsscenario\'s\n'
'3. Toetreding tot het Vanadium Consortium is nog steeds aanbevolen voor data sharing\n'
'4. Het volledige traject omvat: pre-registratie, dossieropstelling, ECHA-beoordeling, eventuele aanvullingen\n\n'
'Kosten: €120.000-€290.000 (volledig traject)\n'
'Termijn: 12-24 maanden\n\n'
'⚠️ Dit scenario is het minst waarschijnlijk maar moet als worst-case worden meegenomen in de planning.', bold=True)

doc.add_heading('2D.3 Gemeenschappelijke verplichtingen (Route A én B)', level=3)
add_para(doc,
'Onafhankelijk van de uitkomst van de sameness check gelden bij commerciële productie (>1 ton/jaar):\n\n'
'1. SDS als fabrikant: Phoenix Metals stelt eigen SDS op voor het eindproduct (REACH Art. 31)\n'
'2. CLP-indeling: Eigen indeling, etikettering en verpakking (CLP-verordening)\n'
'3. Communicatieverplichtingen: Doorgeven van veiligheidsinformatie aan afnemers\n'
'4. Blootstellingsscenario: Chemical Safety Report (CSR) als >10 ton/jaar\n'
'5. SVHC-monitoring: Controleren of vanadiumverbindingen op de kandidaatlijst worden geplaatst')

doc.add_heading('2D.4 Jaargrenzen en drempelwaarden', level=3)
add_table(doc,
    ['Drempel', 'Verplichting', 'Toepassing Phoenix Metals'],
    [
        ['<1 ton/jaar', 'Geen registratie, geen PPORD-melding', 'Demo: JA. IJmuiden (7.200 kg slakken, ≈72-360 kg V): JA'],
        ['≥1 ton/jaar', 'REACH-registratie of LoA (recovered)', 'Niet in huidige planning. Bij commerciële opschaling: JA'],
        ['≥10 ton/jaar', 'CSR + blootstellingscenario\'s', 'Ver toekomstperspectief'],
        ['≥100 ton/jaar', 'Uitgebreid dossier (Annex IX)', 'Niet relevant op korte termijn'],
    ])

doc.add_page_break()

# ── 2E. SVHC Analyse ──
doc.add_heading('2E. SVHC Analyse', level=2)

doc.add_heading('2E.1 SVHC-stoffen in de SARU ash', level=3)
add_table(doc,
    ['Component', 'CAS', 'SVHC-status', 'Kader'],
    [
        ['Natriummetavanaat (NaVO₃)', '13718-26-8', 'Kandidaatlijst sinds 2015 (Art. 57(c) CMR cat. 2 — reprotoxisch)', 'REACH art. 57(c)'],
        ['Trinatriumorthovanadate (Na₃VO₄)', '13718-26-8*', 'Kandidaatlijst (vanadiumverbindingen)', 'REACH art. 57(c)'],
        ['Nikkeloxide (NiO)', '1313-99-1', 'Kandidaatlijst sinds 2009 (Art. 57(a) CMR cat. 1B — kankerverwekkend)', 'REACH art. 57(a)'],
        ['Natuurlijk voorkomende radionucliden', 'U-238 serie', 'Niet SVHC (straling valt onder Bbs)', 'Besluit basisveiligheidsnormen stralingsbescherming'],
    ])

add_para(doc, '\n*Opmerking: Natriummetavanaat en trinatriumorthovanadate worden vaak onder één CAS/EC-nummer geregistreerd als "reaction mass."')

doc.add_heading('2E.2 Artikel 33 — Mededelingsplicht', level=3)
add_para(doc,
'REACH artikel 33 verplicht leveranciers van artikelen die SVHC-stoffen bevatten (>0,1% gewicht) om de ontvanger hiervan in te lichten.\n\n'
'SARU ash is geen "artikel" onder REACH (Art. 3(3)) — het is een poeder/mengsel. Artikel 33 is NIET VAN TOEPASSING op de ash.\n\n'
'Wel van toepassing:\n'
'• REACH artikel 31: Leverancier (Shell/SARU) moet SDS verstrekken (bevestigd: "SDS available")\n'
'• REACH artikel 32: Informatieverplichting voor downstream users\n'
'• Als de ash een afvalstof wordt: Eural-code 060204', bold=True)

doc.add_heading('2E.3 SVHC-implicaties per REACH-positie', level=3)
add_para(doc,
'Onafhankelijk van de REACH-positie (Optie A, B of C) gelden:\n\n'
'1. RI&E: De aanwezigheid van SVHC-stoffen MOET worden meegenomen in de Risico-Inventarisatie & -Evaluatie (Arbobesluit hoofdstuk 4, §2)\n'
'2. H-zinnen: H350i (kankerverwekkend bij inademing), H361d (mogelijk schadelijk voor voortplanting), H301 (giftig bij inslikken), H317 (allergische huidreactie), H372 (schade organen), H411 (milieugevaarlijk)\n'
'3. Afvoer: Restanten die SVHC-stoffen bevatten als gevaarlijk afval afvoeren (Eural 060204)\n'
'4. Autorisatie: Natriummetavanaat staat op kandidaatlijst maar (nog) NIET op Bijlage XIV. Geen autorisatieplicht — maar monitor de ECHA-beslissingen.')

doc.add_page_break()

# ── 2F. CLP Verplichtingen ──
doc.add_heading('2F. CLP Verplichtingen', level=2)

doc.add_heading('2F.1 Indeling SARU ash', level=3)
add_table(doc,
    ['Aspect', 'Indeling SARU ash'],
    [
        ['Signaalwoord', 'GEVAAR'],
        ['H350i', 'Kan kanker veroorzaken bij inademing'],
        ['H361d', 'Vermoedelijk schadelijk voor het ongeboren kind'],
        ['H301', 'Giftig bij inslikken'],
        ['H317', 'Kan een allergische huidreactie veroorzaken'],
        ['H372', 'Veroorzaakt schade aan organen bij langdurige of herhaalde blootstelling'],
        ['H332', 'Schadelijk bij inademing'],
        ['H319', 'Veroorzaakt ernstige oogirritatie'],
        ['H411', 'Giftig voor in het water levende organismen, met langdurige gevolgen'],
        ['Pictogrammen', 'GHS08, GHS06, GHS07, GHS09'],
        ['ADR-klasse', 'Waarschijnlijk 6.1 (giftig), VG III'],
    ])

doc.add_heading('2F.2 Indeling vanadiumsulfaat-eindproduct', level=3)
add_para(doc,
'Het eindproduct (vanadium(IV)sulfaat-oplossing in H₂SO₄) moet worden ingedeeld op basis van:\n'
'• Gevaarseigenschappen van VOSO₄ (toxisch, milieugevaarlijk)\n'
'• Concentratie H₂SO₄ in de oplossing\n'
'• CLP-verordening bijlage I\n\n'
'Voorgestelde indeling (gebaseerd op SDS-gegevens vergelijkbare producten):\n'
'• Acuut toxisch cat. 3/4 (H331, H302)\n'
'• Huidirritatie (H315)\n'
'• Ernstige oogschade (H318)\n'
'• Specifieke orgaantoxiciteit (H372)\n'
'• Milieugevaarlijk (H411)')

doc.add_heading('2F.3 SDS-verplichtingen als (recovered) fabrikant', level=3)
add_para(doc,
'Phoenix Metals heeft — onafhankelijk van Optie A of B — de volgende CLP/SDS-verplichtingen:\n\n'
'1. SDS ontvangen: Van alle leveranciers (Shell/SARU, Carl Roth, Merck). Bevestigd: "MSDS (Hardcopy): Yes" voor alle stoffen.\n\n'
'2. SDS beschikbaar houden: Voor alle werknemers toegankelijk (REACH Art. 31, Arbobesluit art. 4.1a).\n\n'
'3. Eigen SDS opstellen: Als (recovered) fabrikant MOET Phoenix Metals een eigen SDS opstellen voor het eindproduct zodra dit wordt doorgeleverd aan derden. Voor intern gebruik in de demo-fase volstaat de SDS van de grondstoffen.\n\n'
'4. PCN/UFI-melding: Voor gevaarlijke mengsels op de markt. Niet van toepassing in de demo-fase (geen verkoop). Bij commerciële afzet: verplicht.')

doc.add_page_break()

# ── 2G. REACH Concrete Actielijst ──
doc.add_heading('2G. REACH Concrete Actielijst', level=2)

add_para(doc, '⚠️ Onzekerheden gemarkeerd met [ONZEKER] — vereist nadere beoordeling door REACH-deskundige', bold=True)

add_table(doc,
    ['Actie', 'Fase', 'Prioriteit', 'Termijn', 'Toelichting'],
    [
        ['Sameness check uitvoeren', '2', 'KRITIEK', 'Voor opschaling',
         'Analyse eindproduct vs. geregistreerde VOSO₄. Bepaalt REACH-route. [ONZEKER: uitkomst onbekend]'],
        ['REACH-deskundige inschakelen', '1+2', 'KRITIEK', 'Direct',
         'Beoordeling rechtspositie en sameness check. [ONZEKER: definitief advies vereist]'],
        ['SDS-beheer actualiseren', '1', 'HOOG', 'Direct',
         'Alle SDS actueel, digitaal beschikbaar, geïntegreerd in RI&E.'],
        ['SVHC-register opzetten', '1', 'HOOG', 'Direct',
         'Documenteer natriummetavanaat, nikkeloxide. Verwijs naar SDS en H-zinnen.'],
        ['RI&E actualiseren CMR', '1', 'HOOG', 'Direct',
         'CMR-stoffen (H350i, H361d): vervanging overwegen, blootstelling minimaliseren, werknemersregister.'],
        ['Stralingsverantwoording RI&E', '1', 'HOOG', 'Direct',
         'Bbs: <1000 kg ash is intrinsiek veilig, maar verantwoording in RI&E vereist.'],
        ['Vanadium Consortium contact', '2', 'MIDDEN', 'Bij opschaling >1 ton',
         'Toetreding via LoA of full membership. Kosten €15k-€40k.'],
        ['CLP-indeling eindproduct', '1', 'MIDDEN', 'Voor IJmuiden',
         'Documenteer CLP-indeling van vanadiumsulfaat-eindproduct. Nodig voor ADR + PGS 15.'],
        ['Eigen SDS eindproduct', '2', 'MIDDEN', 'Bij commerciële afzet',
         'Verplicht als (recovered) fabrikant bij doorlevering aan derden.'],
        ['PPORD-documentatie', '1', 'LAAG', 'Direct',
         'Documenteer PPORD-kwalificatie. Melding niet nodig <1 ton.'],
        ['REACH-registratie', '2', 'ROUTE-AFHANKELIJK', 'Indien sameness faalt',
         'Volledig dossier bij ECHA. €120k-€290k. [ONZEKER: alleen als Route B faalt]'],
        ['Autorisatieaanvraag', 'N.v.t.', 'NIET VAN TOEPASSING', 'Niet nodig',
         'Natriummetavanaat staat op kandidaatlijst, niet op Bijlage XIV.'],
    ])

doc.add_page_break()

# ════════════════════════════════════════════════════════
# 3. DEEL 2: PGS 15 ANALYSE (ongewijzigd t.o.v. v1.0)
# ════════════════════════════════════════════════════════
doc.add_heading('3. DEEL 2: PGS 15 Analyse', level=1)
add_para(doc, 'Noot: Het PGS 15-deel is ongewijzigd ten opzichte van v1.0. De REACH-herbeoordeling heeft geen impact op de PGS 15-verplichtingen.', italic=True)

doc.add_heading('3A. Toepasselijkheid', level=2)
doc.add_heading('3A.1 Is PGS 15 van toepassing?', level=3)
add_para(doc,
'PGS 15:2025 is van toepassing op de opslag van verpakte gevaarlijke stoffen. De H₂SO₄, NaOH (ADR-klasse 8, VG II) en vanadiumoplossingen (ADR-klasse 9) vallen binnen het toepassingsgebied. PGS 15 kent geen uitzondering voor pilot plants.', bold=True)

doc.add_heading('3A.2 Ondergrenzen', level=3)
add_table(doc,
    ['Stof', 'ADR-klasse', 'VG', 'Hoeveelheid', 'Ondergrens', 'PGS 15?'],
    [
        ['NaOH 50%', '8', 'II', '100L (≈130 kg)', '250 kg', 'Nee'],
        ['H₂SO₄ 75%', '8', 'II', '30L (≈45 kg)', '250 kg', 'Nee'],
        ['H₂SO₄ 50%', '8', 'II', '70L (≈105 kg)', '250 kg', 'Nee'],
        ['H₂SO₄ 25%', '8', 'II', '100L (≈125 kg)', '250 kg', 'Nee'],
        ['TOTAAL ADR-klasse 8', '8', 'II', '≈405 kg', '250 kg', 'JA'],
    ])

add_para(doc, '\nConclusie: Totale ADR-klasse 8 ≈405 kg > 250 kg → PGS 15 VAN TOEPASSING.', bold=True)

doc.add_heading('3A.3 Vergunningspositie', level=3)
add_para(doc,
'• <10.000 kg (geen VG I): meldingsplichtig, niet vergunningplichtig (Bal art. 3.27)\n'
'• BRZO/Seveso: Niet van toepassing (ver onder drempelwaarden)')

doc.add_page_break()

doc.add_heading('3B. Scenario Analyse', level=2)

doc.add_heading('3B.1 Opslagclassificatie', level=3)
add_table(doc,
    ['Stof', 'UN-nummer', 'ADR-klasse', 'VG', 'Brandbaar?', 'Opslagklasse'],
    [
        ['H₂SO₄ 25-75%', 'UN 1830/1832', '8', 'II', 'Onbrandbaar', 'ADR 8 zuur'],
        ['NaOH 50%', 'UN 1824', '8', 'II', 'Onbrandbaar', 'ADR 8 base'],
        ['Vanadiumoplossing', 'UN 3082', '9', '—', 'Onbrandbaar', 'ADR 9'],
        ['SARU ash', 'UN 3077 (mogelijk)', '9', 'III', 'Onbrandbaar', 'ADR 9'],
    ])

doc.add_heading('3B.2 Veiligheidsniveau', level=3)
add_para(doc,
'ADR-klasse 8, VG II, onbrandbaar → Basisveiligheidsniveau.\n'
'• Geen Wbdbo-eis\n'
'• Geen VBB-installatie\n'
'• Geen branddetectie\n'
'• Wel: alle basismaatregelen uit PGS 15 H7.2 + H7.3', bold=True)

doc.add_heading('3B.3 Scheiding H₂SO₄ en NaOH — VERPLICHT', level=3)
add_para(doc,
'PGS 15 Bijlage E: zuren en basen binnen ADR-klasse 8 MOETEN gescheiden opgeslagen worden.\n\n'
'Opties: vakscheiding (lekbak), fysieke afscheiding (muurtje), of aparte opslagvoorzieningen.')

doc.add_heading('3B.4 Maximale hoeveelheden', level=3)
add_para(doc,
'• >2.500 kg ADR-8/9 → aanvullend veiligheidsniveau. Phoenix Metals: ≈405 kg → ruim onder grens.\n'
'• Tijdelijke opslag: Max 10.000 kg per brandcompartiment.')

doc.add_page_break()

doc.add_heading('3C. Eisen — Bouwkundig, Veiligheid, Organisatorisch', level=2)

doc.add_heading('3C.1 Bouwkundige eisen', level=3)
add_table(doc,
    ['Eis', 'PGS 15 ref.', 'Toepassing Phoenix Metals'],
    [
        ['Wbdbo', 'M21', 'NIET vereist — onbrandbare ADR-8 VG II'],
        ['Opvangcapaciteit', 'M30', '110% grootste verpakking of 10% totaal. Minimaal 41 l opvang.'],
        ['Geen verbinding riool', 'M29', 'Geen openingen met directe verbinding riolering/water'],
        ['Constructiebestendigheid', 'M30', 'Opvang bestand tegen bijtende stof'],
        ['Ventilatie', 'M30, M35', 'Adequate ventilatie; H₂SO₄ produceert dampen'],
        ['Vrije ruimte', 'M21', '2 m tot andere activiteiten'],
    ])

doc.add_heading('3C.2 Veiligheidsvoorzieningen', level=3)
add_table(doc,
    ['Eis', 'PGS 15 ref.', 'Toepassing'],
    [
        ['Brandblusmiddelen', 'M95', 'Minimaal 2× 6 kg poederblusser'],
        ['PBM\'s', 'M85, M88', 'Zuurbestendige handschoenen, veiligheidsbril, face shield'],
        ['Neutralisatiemiddelen', 'M119', 'Soda (Na₂CO₃) voor zuur; citroenzuur voor base'],
        ['Absorptiemateriaal', 'M119', 'Zuur/base-bestendig (vermiculite, chemische pads)'],
        ['Lekkage-instructie', 'M120', 'Procedure bij lekkage, zichtbaar aanwezig'],
        ['Noodplan', 'M115', 'Intern noodplan'],
    ])

doc.add_heading('3C.3 Organisatorische eisen', level=3)
add_table(doc,
    ['Eis', 'PGS 15 ref.', 'Toepassing'],
    [
        ['Stoffenlijst', 'M116', 'Actueel overzicht opgeslagen gevaarlijke stoffen'],
        ['VIB/SDS beschikbaar', 'M137', 'Voor alle stoffen, toegankelijk voor werknemers'],
        ['Plattegrond', 'M116', 'Actuele plattegrond met ligging stoffen + voorzieningen'],
        ['Calamiteiteninstructie', 'M121', 'Zichtbaar bij toegang + contactgegevens'],
        ['Deskundigheid', 'M85', 'Periodieke training werknemers'],
        ['Toegangsbeperking', 'M36', 'Alleen bevoegd en deskundig personeel'],
        ['Signalering', 'M135-136', 'ADR-etiket 8 aan buitenzijde opslag ≥20×20 cm'],
    ])

doc.add_page_break()

doc.add_heading('3D. Uitzonderingen pilot plant', level=2)
add_para(doc,
'PGS 15 kent geen algemene R&D-uitzondering. Toepasselijkheid wordt bepaald door stofeigenschappen en hoeveelheden.\n\n'
'Relevante verlichtingen:\n'
'• Basisveiligheidsniveau volstaat (onbrandbaar, dedicated opslag)\n'
'• Geen Wbdbo, geen VBB, geen branddetectie\n'
'• Werkvoorraad: max 1 aangebroken + 1 nieuwe per stof (M14)')

doc.add_heading('3E. PGS 15 Concrete Actielijst', level=2)
add_table(doc,
    ['Nr.', 'Actie', 'Prioriteit', 'PGS 15 ref.', 'Toelichting'],
    [
        ['1', 'Scheiding H₂SO₄ en NaOH', 'HOOG', 'Bijlage E, H7.3.3', 'Zuren en basen GESCHEIDEN.'],
        ['2', 'Opvangvoorziening', 'HOOG', 'M30', '110% grootste of 10% totaal.'],
        ['3', 'Neutralisatiemiddelen', 'HOOG', 'M119', 'Soda + citroenzuur + absorptiemateriaal.'],
        ['4', 'Brandblussers', 'HOOG', 'M95', 'Minimaal 2× 6 kg poederblusser.'],
        ['5', 'Calamiteiteninstructie', 'HOOG', 'M121', 'Zichtbaar bij toegang.'],
        ['6', 'Lekkage-instructie', 'HOOG', 'M120', 'Procedure bij lekkage.'],
        ['7', 'ADR-etikettering', 'HOOG', 'M135-136', 'ADR 8 ≥20×20 cm buitenzijde.'],
        ['8', 'Rook-/vuurverbod bord', 'HOOG', 'M134', 'NEN-EN-ISO 7010.'],
        ['9', 'Stoffenlijst', 'MIDDEN', 'M116', 'Actueel overzicht + SDS.'],
        ['10', 'Plattegrond opslag', 'MIDDEN', 'M116', 'Voor brandweer.'],
        ['11', 'Inspectieregime', 'MIDDEN', 'M45', 'Wekelijks visueel.'],
        ['12', 'Training personeel', 'MIDDEN', 'M85', 'Periodiek.'],
        ['13', 'Toegangsbeperking', 'MIDDEN', 'M36', 'Bevoegd personeel.'],
        ['14', 'Melding Bal art. 3.27', 'LAAG', 'Bal art. 3.27', 'Voor IJmuiden bij >1.000 kg.'],
        ['15', 'Vrije ruimte markeren', 'LAAG', 'M134', '2 m rond opslag.'],
    ])

doc.add_page_break()

# ════════════════════════════════════════════════════════
# 4. CONCLUSIES & AANBEVELINGEN
# ════════════════════════════════════════════════════════
doc.add_heading('4. Conclusies & Aanbevelingen', level=1)

doc.add_heading('4.1 Conclusies', level=2)

add_para(doc, 'REACH — Genuanceerde rechtspositie:', bold=True)
add_para(doc,
'1. Phoenix Metals is technisch een fabrikant (extractie = manufacturing), maar de meest waarschijnlijke positie is fabrikant van recovered substances (Optie B).\n'
'2. De definitieve REACH-route is pas bepaald NA de sameness check. Dit is de EERSTE PRIORITEIT.\n'
'3. Fase 1 (Demo ≤60 kg): Geen registratieplicht. PPORD-kwalificatie gedocumenteerd. Wel CLP, SDS, CMR.\n'
'4. Fase 2 (Commercieel): Route A (sameness OK → LoA, €15k-€40k) of Route B (sameness faalt → volledig dossier, €120k-€290k).\n'
'5. SVHC-stoffen aanwezig (natriummetavanaat, nikkeloxide) → RI&E-verplichting onafhankelijk van positie.\n'
'6. Het Vanadium Consortium heeft 19 stoffen geregistreerd, waaronder de meest relevante kandidaten voor sameness.\n'
'7. Onzekerheid: Het is niet 100% zeker dat registratie vereist is. Dit moet transparant worden gecommuniceerd.')

add_para(doc, 'PGS 15 (ongewijzigd):', bold=True)
add_para(doc,
'1. PGS 15 VAN TOEPASSING (≈405 kg ADR-8 > 250 kg ondergrens).\n'
'2. Basisveiligheidsniveau volstaat.\n'
'3. Kritiek: scheiding H₂SO₄/NaOH.\n'
'4. Meldingsplichtig, niet vergunningplichtig.')

doc.add_heading('4.2 Aanbevelingen — Geprioriteerd', level=2)

add_para(doc, '1. ONMIDDELLIJK (vóór IJmuiden):', bold=True)
add_para(doc,
'a. Schakel een REACH-deskundige in voor beoordeling van de rechtspositie en begeleiding sameness check.\n'
'b. Voer de sameness check uit op het eindproduct (VOSO₄) t.o.v. de registratie van het Vanadium Consortium.\n'
'c. Implementeer de 15 acties uit de PGS 15-actielijst, in het bijzonder scheiding H₂SO₄/NaOH en opvang.\n'
'd. Actualiseer de RI&E met SVHC/CMR en stralingsverantwoording.')

add_para(doc, '2. VOORBEREIDING IJmuiden:', bold=True)
add_para(doc,
'e. Neem contact op met Vanadium Consortium voor LoA-condities.\n'
'f. Stel CLP-indeling op voor eindproduct.\n'
'g. Werk massabalans uit en toets 1 ton/jaar-drempel per stof.\n'
'h. Dien melding Bal art. 3.27 in bij aanvang.')

add_para(doc, '3. COMMERCIËLE OPSCHALING:', bold=True)
add_para(doc,
'i. Bij sameness OK: LoA + REACH-IT registratie als recovered substance registrant.\n'
'j. Bij sameness faalt: Volledig REACH-registratiedossier. Budget reserveren: €120k-€290k.\n'
'k. ECHA REACH-IT account aanmaken als voorbereiding.\n'
'l. Monitor ECHA-beslissingen rond SVHC-kandidaatlijst (natriummetavanaat → Bijlage XIV).')

doc.add_page_break()

# ════════════════════════════════════════════════════════
# 5. BRONVERWIJZINGEN
# ════════════════════════════════════════════════════════
doc.add_heading('5. Bronverwijzingen', level=1)

doc.add_heading('5.1 REACH-bronbestanden', level=2)
add_table(doc, ['Bestand', 'Inhoud'], [
    ['01_reach_basis.md', 'REACH basisinformatie, kader, autoriteiten'],
    ['02_registration_nl.md', 'ECHA Richtsnoer voor registratie v4.0 (aug 2021)'],
    ['03_substance_id_nl.md', 'Richtsnoer identificatie en naamgeving stoffen v3.0 (dec 2023)'],
    ['04_svhc_en.md', 'Guidance Annex XV SVHC dossier v2.1 (okt 2018)'],
    ['14_autorisatie.md', 'How to apply for authorisation (ECHA, feb 2021)'],
    ['15_clp_basisgids.md', 'Basisgids CLP (EG 1272/2008)'],
    ['16_pm_bedrijfsomschrijving.md', 'Phoenix Metals brief HSE Manager (Jorick van Gemert)'],
    ['23_pm_demo_process.md', 'Process description demo plant — 26 processtappen'],
    ['26_pm_chemicals_master.md', 'Registration Chemicals MASTER v2.1.0 (29-11-2024)'],
    ['27_msds_vanadium.md', 'MSDS Vanadium concentrate (SARU)'],
    ['28_msds_zwavelzuur.md', 'SDS Sulfuric acid 75% (RCI Labscan)'],
    ['29_msds_naoh.md', 'SDS NaOH 50% (Merck/Millipore v6.9, jul 2024)'],
    ['42_pm_fact_sheet_ash.md', 'Factsheet SARU ash v1.0 (28-11-2024)'],
    ['44_pm_legal_compliance.md', 'Legal compliance governance (Wintershall)'],
    ['47_pm_brzo_overzicht.md', 'Relatie BRZO elementen en VBS'],
    ['57_vanadium_consortium.md', 'Vanadium REACH Consortium — data sharing & substances'],
])

doc.add_heading('5.2 PGS 15-bronbestanden', level=2)
add_table(doc, ['Bestand', 'Inhoud'], [
    ['01_pgs15_2025_voorschriften.md', 'PGS 15:2025 volledige voorschriftenextractie (16 apr 2026)'],
    ['PGS_15_2025_versie_1.0_januari_2025.pdf', 'PGS 15:2025 originele publicatie (238 pag)'],
    ['02_haalbaarheidsstudie.md', 'Haalbaarheidsstudie Phoenix Metals IJmuiden'],
    ['04_vooroverleg.md', 'Verslag vooroverleg ODIJ (23-09-2025)'],
    ['05_uitgangspunten.md', 'Uitgangspunten vergunningtraject'],
])

doc.add_heading('5.3 Wettelijke referenties', level=2)
add_table(doc,
    ['Referentie', 'Beschrijving'],
    [
        ['REACH — Verordening (EG) 1907/2006', 'Art. 3 (begrippen), Art. 5, Art. 6 (registratie), Art. 9 (PPORD), Art. 31 (SDS), Art. 32, Art. 33, Art. 57 (SVHC-criteria)'],
        ['ECHA Guidance on Recovered Substances', 'Requirements for substances recovered from waste — terugvallen op bestaande registratie bij sameness'],
        ['ECHA Guidance on Substance Identification (RIP 3.10)', 'Sameness check criteria: chemische identiteit, zuiverheid, spectroscopie'],
        ['CLP — Verordening (EG) 1272/2008', 'Indeling, etikettering, verpakking'],
        ['PGS 15:2025 versie 1.0', 'Opslag verpakte gevaarlijke stoffen'],
        ['Besluit activiteiten leefomgeving (Bal)', 'Art. 3.27 (opslag gevaarlijke stoffen)'],
        ['Arbeidsomstandighedenwet / Arbobesluit', 'Art. 5 (RI&E), Hfdst 4 §2 (CMR-stoffen)'],
        ['Besluit basisveiligheidsnormen stralingsbescherming', 'Art. 2.2, 4.2, 7.6'],
        ['ADR 2025', 'Classificatie H₂SO₄, NaOH, VOSO₄-oplossing'],
    ])

doc.add_heading('5.4 Originele VPS-documenten', level=2)
add_table(doc, ['Bestand', 'Inhoud'], [
    ['phoenix metals.docx', 'Motivatiebrief HSE Manager'],
    ['REACH/REACH registratie [phoenix metals).docx', 'Projectaanpak REACH-registratie (10 fasen, budget, risico\'s)'],
    ['Vergunning/Rapport haalbaarheidsstudie V04.docx', 'Arcadis haalbaarheidsstudie (12-12-2025)'],
    ['Vergunning/2025-09-23, verslag vooroverleg.docx', 'Vooroverleg ODIJ'],
    ['Info Ash/Fact sheet Ash 2025.docx', 'Factsheet SARU ash'],
    ['Info Ash/P1310-SARU-as-ProductInformatieKaart 2024.pdf', 'Werkvloerinstructiekaart — H-zinnen, PBM\'s'],
])

# ── Footer ──
doc.add_paragraph()
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run('— EINDE DOCUMENT —\n\nPhoenix Metals REACH & PGS 15 Herbeoordeling v1.2\nGegenereerd op 19 april 2026 door Kas (HSEQ Specialist)')
run.font.size = Pt(9)
run.italic = True

# ── Save ──
output_path = '/root/projects/jg/2026-reach-phoenix-metals/deliverables/docx/REACH_PGS15_Herbeoordeling_Phoenix_Metals_v1.0.docx'
doc.save(output_path)
print(f'Document saved: {output_path}')
print(f'File size: {os.path.getsize(output_path)} bytes')
