#!/usr/bin/env python3
"""Generate REACH Kennisdossier Phoenix Metals D1 v4.0"""

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

doc = Document()

style = doc.styles['Normal']
style.font.name = 'Calibri'
style.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(0, 51, 102)
    hs.font.name = 'Calibri'

def add_table(headers, rows):
    t = doc.add_table(rows=1+len(rows), cols=len(headers))
    t.style = 'Light Grid Accent 1'
    t.alignment = WD_TABLE_ALIGNMENT.LEFT
    for i, h in enumerate(headers):
        c = t.rows[0].cells[i]; c.text = h
        for p in c.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):
            c = t.rows[ri+1].cells[ci]; c.text = str(val)
            for p in c.paragraphs:
                for r in p.runs: r.font.size = Pt(9)

def bp(bold, normal):
    p = doc.add_paragraph()
    r = p.add_run(bold); r.bold = True
    p.add_run(normal)

# ═══ TITELPAGINA ═══
for _ in range(6): doc.add_paragraph()
p = doc.add_paragraph(); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('REACH KENNISDOSSIER'); r.font.size = Pt(28); r.bold = True; r.font.color.rgb = RGBColor(0,51,102)
p = doc.add_paragraph(); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('Phoenix Metals'); r.font.size = Pt(22); r.font.color.rgb = RGBColor(0,51,102)
p = doc.add_paragraph(); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('D1 — Versie 4.0'); r.font.size = Pt(18); r.font.color.rgb = RGBColor(80,80,80)
doc.add_paragraph()
p = doc.add_paragraph(); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('Volledige Herschrijving'); r.font.size = Pt(14); r.italic = True
for _ in range(4): doc.add_paragraph()
for line in [f'Datum: {datetime.date.today().strftime("%d %B %Y")}', 'Auteur: Jorick van Gemert (HSEQ Adviseur)',
             'Opdrachtgever: Phoenix Metals', 'Classificatie: Vertrouwelijk', 'Referentie: D1-v4.0']:
    p = doc.add_paragraph(); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    r = p.add_run(line); r.font.size = Pt(11); r.font.color.rgb = RGBColor(80,80,80)
doc.add_page_break()

# ═══ INHOUD ═══
doc.add_heading('Inhoudsopgave', level=1)
for i, item in enumerate(['Managementsamenvatting','Hoofdstuk 1: REACH Basis','Hoofdstuk 2: Rechtspositie Phoenix Metals',
    'Hoofdstuk 3: Registratieverplichting','Hoofdstuk 4: SVHC & Autorisatie','Hoofdstuk 5: CLP & SDS',
    'Hoofdstuk 6: Concrete Actielijst','Bronverwijzingen'], 1):
    doc.add_paragraph(f'{i}. {item}')
doc.add_page_break()

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

doc.add_heading('Wie is Phoenix Metals', level=2)
doc.add_paragraph(
    'Phoenix Metals is een R&D-startup gevestigd in de haven van IJmuiden (gemeente Velsen), '
    'die zich richt op de extractie van waardevolle metalen — waaronder vanadium, ijzer, calcium en magnesium — '
    'uit staalslakken afkomstig van het nabijgelegen Tata Steel Netherlands. Het bedrijf past een '
    'hydrometallurgisch proces toe dat uitsluitend waterige oplossingen gebruikt zonder ammoniak, '
    'hetgeen resulteert in lagere procestemperaturen en minder gevaarlijke afvalstoffen.')
doc.add_paragraph(
    'Het proces is succesvol getest op R&D-schaal (4L batch) en pre-pilot schaal (20L batch). '
    'De pilot fase schaalt dit op naar een 3.000L batch, met als doel consistentie van opbrengst '
    'en kwaliteit aan te tonen. Het eindproduct is een vanadium-elektrolyt bestemd voor vanadium-redoxflowbatterijen (VRFB).')

doc.add_heading('REACH-rechtspositie', level=2)
doc.add_paragraph('De REACH-rechtspositie van Phoenix Metals is afhankelijk van de uitkomst van een sameness check. Er zijn drie juridisch valide opties:')
add_table(['Optie','REACH-rol','Omschrijving','Waarschijnlijkheid'],
    [['A','Fabrikant Art. 3(8)','Extractie = vervaardiging nieuwe stof','Middel'],
     ['B','Fabrikant van recovered substances','Herstel van reeds geregistreerde stof uit afval','Hoog'],
     ['C','Downstream user','Verwerking reeds geregistreerde stof','Laag']])
doc.add_paragraph()
doc.add_paragraph(
    'Optie B is het meest waarschijnlijk. Het Vanadium Consortium heeft 19 vanadiumverbindingen reeds geregistreerd, '
    'waaronder sodium metavanadate (EC 237-272-7) en slags, steelmaking, vanadium (EC 273-734-4). '
    'Indien de sameness check positief is, kan Phoenix Metals terugvallen op de bestaande registratie via een Letter of Access (LoA).')

doc.add_heading('Kernverplichtingen per fase', level=2)
add_table(['Fase','Volume','REACH-verplichting','Actie'],
    [['Demo (Fase 1)','≤60 kg ash, ≤3 maanden','PPORD-vrijstelling Art. 3(23)','PPORD-melding ECHA'],
     ['Commercieel (Fase 2)','80–120 ton staalslak/jaar','Registratie >1 ton/jaar VERPLICHT','LoA of eigen dossier']])

doc.add_heading('Eerste stappen', level=2)
for s in ['PPORD-melding indienen bij ECHA (vóór aanvang demo)',
          'SDS opstellen voor gevaarlijke stoffen (NaOH 50%, H₂SO₄)',
          'CLP-etikettering toepassen conform Verordening (EG) nr. 1272/2008',
          'CMR-register inrichten (nikkeloxide: Carc. 1A)',
          'Sameness check voorbereiden: analyseresultaten vs. Vanadium Consortium SIP',
          'Contact leggen met Vanadium Consortium voor LoA-voorwaarden']:
    doc.add_paragraph(s, style='List Number')
doc.add_page_break()

# ═══ H1: REACH BASIS ═══
doc.add_heading('Hoofdstuk 1: REACH Basis', level=1)

doc.add_heading('1.1 Wat is REACH', level=2)
doc.add_paragraph(
    'REACH (Registration, Evaluation, Authorisation and Restriction of Chemicals) is de Europese verordening '
    '(EG) nr. 1907/2006 voor het beheer van chemische stoffen. De verordening trad in werking op 1 juni 2007 '
    'en is direct toepasselijk in alle EU-lidstaten. Kernprincipes:')
for item in ['Registratie: Fabrikanten/importeurs moeten stoffen ≥1 ton/jaar registreren bij ECHA',
             'Evaluatie: ECHA en lidstaten evalueren geregistreerde dossiers op risico\'s',
             'Autorisatie: SVHC-stoffen vereisen een autorisatie voor gebruik',
             'Beperkingen: Bepaalde stoffen mogen niet of beperkt worden gebruikt']:
    doc.add_paragraph(item, style='List Bullet')

doc.add_heading('1.2 Waarom relevant voor Phoenix Metals', level=2)
doc.add_paragraph(
    'Phoenix Metals brengt vanadium-elektrolyt op de EU-markt als eindproduct van een extractieproces '
    'uit staalslakken. Dit leidt tot de volgende REACH-relevanties:')
for item in ['In de handel brengen: Het leveren van vanadium-elektrolyt aan afnemers is "in de handel brengen" (Art. 3(12))',
             'Fabrikant/importeur: Het extractieproces kwalificeert Phoenix Metals als fabrikant (Art. 3(8))',
             'Tonnage: Pilot productie overschrijdt naar verwachting 1 ton/jaar → registratie verplicht (Art. 6(1))']:
    doc.add_paragraph(item, style='List Bullet')

doc.add_heading('1.3 Kernbegrippen', level=2)
add_table(['Begrip','Definitie (Art. 3 REACH)','Relevantie'],
    [['Stof','Chemisch element en verbindingen (Art. 3(1))','Vanadium-elektrolyt = stof'],
     ['Mengsel','Twee of meer stoffen (Art. 3(2))','NaOH 50%, H₂SO₄ = mengsels'],
     ['Artikel','Voorwerp met specifieke vorm (Art. 3(3))','Niet van toepassing'],
     ['Fabrikant','In de EG gevestigd, vervaardigt stof (Art. 3(8))','Phoenix Metals'],
     ['In de handel brengen','Leveren op de markt (Art. 3(12))','Verkoop van elektrolyt'],
     ['PPORD','Product/Process Oriented R&D (Art. 3(23))','Demo-fase vrijstelling']])
doc.add_page_break()

# ═══ H2: RECHTSPOSITIE ═══
doc.add_heading('Hoofdstuk 2: Rechtspositie Phoenix Metals', level=1)
doc.add_paragraph('De bepaling van de juiste REACH-rol is fundamenteel voor alle verdere verplichtingen.')

doc.add_heading('2.1 Optie A: Fabrikant ex Art. 3(8)', level=2)
doc.add_paragraph(
    'Art. 3(8) REACH definieert een fabrikant als een persoon die een stof "vervaardigt". Art. 3(7) definieert '
    'vervaardiging als "de productie of de extractie van stoffen in natuurlijke toestand". Onder deze optie is het '
    'extractieproces van Phoenix Metals "manufacturing" en is het eindproduct een nieuwe stof.')
bp('Consequentie: ', 'Volledige registratieverplichting — eigen dossier bij ECHA.')

doc.add_heading('2.2 Optie B: Fabrikant van recovered substances (meest waarschijnlijk)', level=2)
doc.add_paragraph(
    'Volgens ECHA Guidance on substance identification (v3.0, december 2023) kan een uit afval teruggewonnen stof '
    'als "recovered substance" worden beschouwd, mits de "sameness check" aantoont dat het dezelfde stof is als een '
    'reeds geregistreerde stof. Phoenix Metals wint vanadiumverbindingen terug uit staalslakken (afvalstof).')
doc.add_paragraph('Reeds geregistreerde stoffen in het Vanadium Consortium:')
add_table(['Stof','EC-nummer','CAS-nummer','Relevantie'],
    [['Sodium metavanadate','237-272-7','13718-26-8','Aanwezig in SARU ash'],
     ['Vanadium oxide sulphate','248-652-7','27774-13-6','Gelijkaardig aan eindproduct'],
     ['Slags, steelmaking, vanadium','273-734-4','60912-34-6','Gerelateerd aan feedstock'],
     ['Divanadium pentaoxide (V₂O₅)','215-239-8','1314-62-1','Tussenproduct'],
     ['Divanadium tris(sulphate)','237-226-6','13701-70-7','Mogelijk relevant']])
doc.add_paragraph()
bp('Consequentie: ', 'Bij positieve sameness check: LoA aanschaffen bij Vanadium Consortium.')

doc.add_heading('2.3 Optie C: Downstream user (minst waarschijnlijk)', level=2)
doc.add_paragraph(
    'Een downstream user (Art. 3(13)) gebruikt een stof die reeds door een derde partij is geregistreerd. '
    'Dit is slechts relevant indien Tata Steel de staalslakken als gerechtigde REACH-geregistreerde stof zou '
    'leveren — wat onwaarschijnlijk is gezien de aard van staalslakken als afvalstof.')

doc.add_heading('2.4 Sameness Check', level=2)
doc.add_paragraph('De sameness check vergelijkt de teruggewonnen stof met de reeds geregistreerde stof op:')
for item in ['Chemische naam, CAS-nummer en EC-nummer',
             'Moleculaire formule en structuur',
             'Zuiverheidprofiel en onzuiverheden',
             'Fysisch-chemische eigenschappen']:
    doc.add_paragraph(item, style='List Bullet')
doc.add_paragraph()
bp('Vervolgstappen:', '')
for s in ['Analyserapport opstellen van de Phoenix Metals vanadium-elektrolyt',
          'SIP van het Vanadium Consortium opvragen',
          'Vergelijking uitvoeren met SIP\'s van sodium metavanadate en/of vanadium oxide sulphate',
          'Indien "same": LoA aanschaffen bij het Vanadium Consortium',
          'Indien "not same": eigen registratiedossier voorbereiden']:
    doc.add_paragraph(s, style='List Number')

doc.add_heading('2.5 Conclusie', level=2)
doc.add_paragraph(
    'Optie B (fabrikant van recovered substances) is de meest waarschijnlijke REACH-rol. Phoenix Metals '
    'kan terugvallen op bestaande registraties in het Vanadium Consortium, mits de sameness check positief is. '
    'Deze conclusie is voorlopig en moet worden bevestigd door een formele sameness check en bij voorkeur '
    'juridisch advies van een REACH-specialist.')
doc.add_page_break()

# ═══ H3: REGISTRATIEVERPLICHTING ═══
doc.add_heading('Hoofdstuk 3: Registratieverplichting', level=1)

doc.add_heading('3.1 Fase 1 — Demo (PPORD-vrijstelling)', level=2)
doc.add_paragraph(
    'De demo plant verwerkt maximaal 60 kg staalslakkenas in ≤3 maanden. Geproduceerde vanadium-elektrolyt <1 ton/jaar. '
    'REACH biedt een PPORD-vrijstelling (Art. 3(23), Art. 9(2)) onder de volgende voorwaarden:')
for item in ['De stof wordt gebruikt voor PPORD-doeleinden',
             'Volume <1 ton/jaar',
             'Blootstelling van mens en milieu is beperkt en goed gecontroleerd']:
    doc.add_paragraph(item, style='List Bullet')
doc.add_paragraph()
bp('Actie: ', 'PPORD-melding indienen bij ECHA via REACH-IT vóór aanvang demo-activiteiten. '
   'De melding bevat: beschrijving programma, gebruikte stoffen/volumes, veiligheidsmaatregelen.')

doc.add_heading('3.2 Fase 2 — Commercieel (>1 ton/jaar)', level=2)
doc.add_paragraph(
    'Bij opschaling (pilot: 80–120 ton staalslakken/jaar) overschrijdt de productie naar verwachting 1 ton/jaar. '
    'Registratie is dan VERPLICHT (Art. 6(1)).')

doc.add_heading('3.2.1 Route A: Sameness OK → LoA bij Vanadium Consortium', level=3)
doc.add_paragraph('Voordelen van de LoA-route:')
for item in ['Lagere kosten (LoA ≈ €5.000–€25.000 afhankelijk van tonnage band)',
             'Snellere time-to-market (geen eigen dossier nodig)',
             'Toegang tot alle bestaande tox/eco-tox data']:
    doc.add_paragraph(item, style='List Bullet')

doc.add_heading('3.2.2 Route B: Sameness faalt → Eigen registratiedossier', level=3)
doc.add_paragraph('Vereisten voor een eigen dossier:')
for item in ['Stofidentiteitsprofiel (SIP) opstellen',
             'Technisch dossier (IUCLID) met alle vereiste bijlagen',
             'Chemical Safety Report (CSR) incl. blootstellingsscenario\'s',
             'Eventueel aanvullende tox/eco-tox testen (tonnage-afhankelijk)']:
    doc.add_paragraph(item, style='List Bullet')
doc.add_paragraph()
bp('Kostenindicatie: ', 'Eigen registratie 1–10 ton/jaar: €50.000–€150.000. '
   '10–100 ton/jaar: €200.000–€500.000 (exclusief dierproeven).')

doc.add_heading('3.3 OSOR-principe', level=2)
doc.add_paragraph(
    'REACH hanteert "One Substance, One Registration" (Art. 11). Fabrikanten/importeurs van dezelfde stof '
    'registreren gezamenlijk via een SIEF. Phoenix Metals moet zich aansluiten bij het Vanadium Consortium SIEF.')

doc.add_heading('3.4 Tonnage bands', level=2)
add_table(['Tonnage band','Informatievereiste (Bijlage)','LoA-kosten (indicatief)'],
    [['1–10 ton/jaar','Bijlage VII + VIII','€5.000–€25.000'],
     ['10–100 ton/jaar','Bijlage VII + VIII + IX','€10.000–€50.000'],
     ['100–1.000 ton/jaar','Bijlage VII–X','€15.000–€75.000'],
     ['>1.000 ton/jaar','Bijlage VII–X + aanvullend','€25.000–€150.000']])
doc.add_paragraph()
doc.add_paragraph(
    'Noot: Voor nieuwe stoffen geldt geen vaste deadline. De registratie moet vóór in de handel brengen zijn voltooid.')
doc.add_page_break()

# ═══ H4: SVHC & AUTORISATIE ═══
doc.add_heading('Hoofdstuk 4: SVHC & Autorisatie', level=1)

doc.add_heading('4.1 Kandidaatenlijst', level=2)
doc.add_paragraph(
    'De REACH-kandidaatenlijst bevat stoffen van zeer hoge zorg (SVHC). Opname leidt tot specifieke '
    'communicatie- en informatieplichten.')

doc.add_heading('4.1.1 Nikkeloxide', level=3)
doc.add_paragraph(
    'Nikkeloxide (NiO, CAS 1313-99-1) staat op de kandidaatenlijst als kankerverwekkend categorie 1A (Carc. 1A, '
    'H350i: "Kan kanker veroorzaken bij inademing"). Nikkeloxide kan als onzuiverheid aanwezig zijn in staalslakken. '
    'Indien de concentratie in het eindproduct ≥0,1% (w/w) bedraagt, gelden de volgende verplichtingen:')
for item in ['Art. 33 mededelingsplicht: Kopers professioneel informeren over de aanwezigheid van de SVHC',
             'Art. 7(2) kennisgeving aan ECHA: Indien het artikel de SVHC bevat >0,1% en >1 ton/jaar',
             'SDS moet de SVHC vermelden in rubriek 3']:
    doc.add_paragraph(item, style='List Bullet')

doc.add_heading('4.1.2 Vanadiumverbindingen', level=3)
doc.add_paragraph(
    'Divanadium pentaoxide (V₂O₅, CAS 1314-62-1) is opgenomen op de kandidaatenlijst (SVHC) wegens '
    'kankerverwekkendheid (Carc. 1B) en mutageniteit (Muta. 2). V₂O₅ is een potentieel tussenproduct in het '
    'Phoenix Metals proces. De SVHC-status van V₂O₅ betekent dat:')
for item in ['Communicatie over aanwezigheid in mengsels >0,1% verplicht',
             'Autorisatie kan worden vereist indien V₂O₅ op Bijlage XIV wordt geplaatst',
             'Substitutie moet worden overwogen waar technisch haalbaar']:
    doc.add_paragraph(item, style='List Bullet')
doc.add_paragraph()
doc.add_paragraph(
    'Voor de overige vanadiumverbindingen (zoals sodium metavanadate, vanadium oxide sulphate) is de SVHC-status '
    'afhankelijk van de specifieke indeling. Raadpleeg de ECHA Classification & Labelling Inventory voor de actuele status.')

doc.add_heading('4.2 Artikel 33 mededelingsplicht', level=2)
doc.add_paragraph(
    'Art. 33 REACH verplicht leveranciers om ontvangers van een artikel dat een SVHC bevat in een concentratie '
    '≥0,1% (w/w), voldoende informatie te verstrekken om het veilig gebruik mogelijk te maken — op zijn minst de naam '
    'van de betreffende stof. Voor consumenten geldt een recht op informatie binnen 45 dagen na verzoek.')

doc.add_heading('4.3 Artikel 57 SVHC-criteria', level=2)
doc.add_paragraph('Een stof kan als SVHC worden aangemerst op basis van de volgende criteria (Art. 57):')
add_table(['Criterium','Artikel','Omschrijving'],
    [['Carcinogeen','Art. 57(a)','Categorie 1A of 1B (CLP)'],
     ['Mutageen','Art. 57(b)','Categorie 1A of 1B (CLP)'],
     ['Toxisch voor voortplanting','Art. 57(c)','Categorie 1A of 1B (CLP)'],
     ['PBT','Art. 57(d)','Persistent, bioaccumulatief, toxisch'],
     ['vPvB','Art. 57(e)','Zeer persistent, zeer bioaccumulatief'],
     ['Gelijkaardige zorg','Art. 57(f)','Wetenschappelijk bewijs van equivalente zorg']])

doc.add_heading('4.4 Autorisatievereisten', level=2)
doc.add_paragraph(
    'Indien een SVHC wordt opgenomen op Bijlage XIV (autorisatielijst), is een autorisatie vereist om de stof '
    'te gebruiken. Voor Phoenix Metals is dit relevant voor V₂O₅ indien dit als tussenproduct wordt geproduceerd. '
    'De autorisatieaanvraag omvat:')
for item in ['Chemical Safety Report (CSR)',
             'Analyse van alternatieven',
             'Sociaal-economische analyse (indien van toepassing)',
             'Substitutieplan']:
    doc.add_paragraph(item, style='List Bullet')
doc.add_paragraph()
doc.add_paragraph(
    'Noot: Tot op heden is V₂O₅ opgenomen op de kandidaatenlijst maar nog niet op Bijlage XIV. '
    'De situatie moet periodiek worden geëvalueerd.')
doc.add_page_break()

# ═══ H5: CLP & SDS ═══
doc.add_heading('Hoofdstuk 5: CLP & SDS', level=1)

doc.add_heading('5.1 CLP-verordening', level=2)
doc.add_paragraph(
    'De CLP-verordening (Verordening (EG) nr. 1272/2008) harmoniseert de indeling, etikettering en verpakking '
    'van stoffen en mengsels in de EU, in lijn met het GHS-systeem van de VN. CLP is van toepassing op alle '
    'stoffen en mengsels die op de EU-markt worden gebracht, met uitzondering van specifieke uitsluitingen '
    '(bijv. geneesmiddelen, voedingsmiddelen).')

doc.add_heading('5.2 Indeling van SARU ash / staalslakken (mengsel)', level=2)
doc.add_paragraph(
    'De staalslakken/SARU ash die Phoenix Metals als feedstock gebruikt, is een complex mengsel met variabele '
    'samenstelling. Op basis van de beschikbare MSDS-gegevens en de Registration Chemicals Master (v2.1.0) '
    'bevat het mengsel onder meer:')
for item in ['Vanadiumverbindingen (hoofdbestanddeel van interesse)',
             'IJzerverbindingen',
             'Calciumverbindingen',
             'Magnesiumverbindingen',
             'Nikkelverbindingen (als onzuiverheid — SVHC-relevant)']:
    doc.add_paragraph(item, style='List Bullet')
doc.add_paragraph()
doc.add_paragraph(
    'Indeling van het mengsel is vereist conform CLP Bijlage I, op basis van de beschikbare gegevens over de '
    'bestanddelen en hun concentraties. De indeling moet rekening houden met de additieve effecten van de '
    'verschillende bestanddelen.')

doc.add_heading('5.3 Indeling van vanadium-elektrolyt (eindproduct)', level=2)
doc.add_paragraph(
    'Het eindproduct (vanadium-elektrolyt) moet worden ingedeeld op basis van de intrinsieke eigenschappen. '
    'Relevante indelingscriteria zijn:')
add_table(['Gevaarklasse','Mogelijke categorie','H-zin','Basis'],
    [['Acute toxiciteit','Cat. 3 of 4 (oraal/dermaal)','H301/H311','Vanadiumverbindingen'],
     ['Huidcorrosie','Cat. 1A/B/C','H314','Zwavelzuur in formulering'],
     ['Oogschade','Cat. 1','H318','Zwavelzuur in formulering'],
     ['Carcinogeniteit','Cat. 1B (indien V₂O₅ >grenswaarde)','H350','Divanadium pentaoxide'],
     ['Specifieke doelorgaantoxiciteit','Herhaalde blootstelling','H373','Vanadiumverbindingen']])
doc.add_paragraph()
doc.add_paragraph(
    'De definitieve indeling moet worden vastgesteld op basis van analyseresultaten van het daadwerkelijke eindproduct. '
    'Raadpleeg de ECHA C&L Inventory voor reeds gepubliceerde indelingen van vergelijkbare stoffen.')

doc.add_heading('5.4 SDS-verplichting als fabrikant', level=2)
doc.add_paragraph(
    'Als fabrikant (Art. 3(8) REACH) is Phoenix Metals verplicht om zelf een Veiligheidsinformatieblad (SDS) op te '
    'stellen voor stoffen en mengsels die voldoen aan de criteria voor indeling als gevaarlijk conform CLP. '
    'De SDS moet worden verstrekt aan alle afnemers vóór of bij de eerste levering (Art. 31(1) REACH).')
doc.add_paragraph('De SDS bevat 16 rubrieken conform Bijlage II REACH:')
for i, rubriek in enumerate([
    'Identificatie van de stof/het mengsel en van de vennootschap/onderneming',
    'Identificatie van de gevaren',
    'Samenstelling en informatie over de bestanddelen',
    'Eerstehulpmaatregelen',
    'Brandbestrijdingsmaatregelen',
    'Maatregelen bij het vrijkomen',
    'Hantering en opslag',
    'Maatregelen ter beheersing van blootstelling/persoonlijke bescherming',
    'Fysische en chemische eigenschappen',
    'Stabiliteit en reactiviteit',
    'Toxicologische informatie',
    'Ecologische informatie',
    'Instructies voor verwijdering',
    'Informatie met betrekking tot het vervoer',
    'Wettelijke informatie',
    'Overige informatie'], 1):
    doc.add_paragraph(f'Rubriek {i}: {rubriek}', style='List Bullet')

doc.add_heading('5.5 UFI / PCN-melding', level=2)
doc.add_paragraph(
    'Conform Bijlage VIII CLP moeten importeurs en downstream gebruikers van gevaarlijke mengsels een '
    'melding doen bij de vergiftigingscentra (Poison Centres Notification — PCN). De UFI (Unique Formula '
    'Identifier) is een 16-cijferige alfanumerieke code die op het etiket wordt aangebracht en hulpverleners '
    'in staat stelt direct de exacte formulering in te zien.')
doc.add_paragraph()
doc.add_paragraph(
    'Vanaf januari 2025 is de handhaving van PCN/UFI-conformiteit geïntensiveerd. Phoenix Metals moet '
    'ervoor zorgen dat alle gevaarlijke mengsels die het op de markt brengt (inclusief het eindproduct '
    'vanadium-elektrolyt indien dit als mengsel kwalificeert) zijn voorzien van een UFI en een PCN-melding.')
doc.add_page_break()

# ═══ H6: ACTIELIJST ═══
doc.add_heading('Hoofdstuk 6: Concrete Actielijst', level=1)

doc.add_heading('6.1 Fase 1 — Nu (Demo-voorbereiding)', level=2)
add_table(['Actie','Verantwoordelijke','Prioriteit','Termijn'],
    [['PPORD-melding indienen bij ECHA','HSEQ Manager','Hoog','Vóór aanvang demo'],
     ['SDS opstellen: NaOH 50%','HSEQ Manager','Hoog','Direct'],
     ['SDS opstellen: H₂SO₄ 25-75%','HSEQ Manager','Hoog','Direct'],
     ['CLP-etikettering toepassen op alle chemicaliën','HSEQ Manager','Hoog','Vóór opslag/gebruik'],
     ['CMR-register inrichten (nikkeloxide)','HSEQ Manager','Hoog','Direct'],
     ['Chemicaliënregister actualiseren','Lab Manager','Midden','1 maand'],
     ['RI&E Tox uitvoeren (gevaarlijke stoffen)','Veiligheidskundige','Hoog','Vóór aanvang demo'],
     ['PBM-matrix actualiseren','HSEQ Manager','Midden','1 maand'],
     ['Gevaarlijke stoffen procedure implementeren','HSEQ Manager','Midden','1 maand'],
     ['PGS 15-compliance opslag','HSEQ Manager','Hoog','Vóór opslag']])

doc.add_paragraph()
doc.add_heading('6.2 Fase 2 — Voorbereiding (Commerciële productie)', level=2)
add_table(['Actie','Verantwoordelijke','Prioriteit','Termijn'],
    [['Sameness check uitvoeren','HSEQ Manager / Laboratorium','Hoog','3–6 maanden'],
     ['Contact Vanadium Consortium','Directie / HSEQ Manager','Hoog','1 maand'],
     ['LoA aanschaffen (indien sameness OK)','Directie','Hoog','Na sameness check'],
     ['CSR voorbereiden (indien samename faalt)','HSEQ Manager / REACH-adviseur','Midden','6–12 maanden'],
     ['Eigen registratiedossier (indien nodig)','REACH-adviseur','Midden','6–12 maanden'],
     ['SDS opstellen voor eindproduct','HSEQ Manager','Hoog','Vóór commerciële levering'],
     ['UFI/PCN-melding eindproduct','HSEQ Manager','Hoog','Vóór commerciële levering'],
     ['Art. 33 mededelingsplicht implementeren','HSEQ Manager','Midden','Vóór commerciële levering'],
     ['REACH-training management','HSEQ Manager','Laag','3 maanden'],
     ['Jaarlijkse compliance review','HSEQ Manager','Midden','Jaarlijks']])
doc.add_page_break()

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

doc.add_heading('REACH Verordening', level=2)
refs = [
    'Verordening (EG) nr. 1907/2006 van het Europees Parlement en de Raad van 18 december 2006 (REACH)',
    'Art. 3(1)–(3): Definities stof, mengsel, artikel',
    'Art. 3(7)–(8): Definities vervaardiging, fabrikant',
    'Art. 3(12)–(13): In de handel brengen, downstream user',
    'Art. 3(23): PPORD-definitie',
    'Art. 6(1): Registratieverplichting',
    'Art. 7(2): Kennisgeving SVHC in artikelen',
    'Art. 9(2): PPORD-vrijstelling',
    'Art. 11: OSOR-principe',
    'Art. 31: SDS-verplichting',
    'Art. 33: Mededelingsplicht SVHC',
    'Art. 57: SVHC-criteria',
    'Bijlage II: Inhoud SDS',
    'Bijlage VII–X: Informatievereisten per tonnage band',
]
for ref in refs:
    doc.add_paragraph(ref, style='List Bullet')

doc.add_heading('CLP Verordening', level=2)
for ref in ['Verordening (EG) nr. 1272/2008 (CLP)',
            'Bijlage I: Indelingscriteria',
            'Bijlage II: Etikettering',
            'Bijlage VIII: PCN/UFI-melding']:
    doc.add_paragraph(ref, style='List Bullet')

doc.add_heading('ECHA Guidance documenten', level=2)
for ref in ['Richtsnoer voor identificatie en naamgeving van stoffen volgens REACH en CLP, Versie 3.0, december 2023',
            'Richtsnoer voor registratie, Versie 4.0, augustus 2021',
            'Richtsnoer voor het samenstellen van veiligheidsinformatiebladen, Versie 4.0, december 2020',
            'Guidance on labelling and packaging, Versie 4.2, maart 2021',
            'Guidance on the preparation of an Annex XV dossier (SVHC), Versie 2.1, oktober 2018',
            'Richtsnoer voor gezamenlijk gebruik van gegevens, Versie 4.1, december 2023',
            'How to apply for authorisation, februari 2021',
            'Veiligheid van chemische stoffen in uw bedrijf — Inleiding voor kmo\'s, 2015']:
    doc.add_paragraph(ref, style='List Bullet')

doc.add_heading('Vanadium Consortium', level=2)
for ref in ['Vanadium REACH Consortium — https://vanadiumconsortium.com',
            'Substance list: 19 geregistreerde vanadiumverbindingen',
            'Data sharing mechanisme: SIEF, LoA']:
    doc.add_paragraph(ref, style='List Bullet')

doc.add_heading('Phoenix Metals brondocumenten', level=2)
for ref in ['Haalbaarheidsstudie Phoenix Metals IJmuiden, Arcadis, 1 september 2025',
            'Phoenix Metals — bedrijfsomschrijving (phoenix metals.docx)',
            'Process description demo plant (Demo Process VR)',
            'PFD — 1 Mil Plant Process Overview (P2-PFD-001-01 Rev.03)',
            'Registration Chemicals — MASTER (v2.1.0)',
            'SDS: Sodium hydroxide 50% (Merck)',
            'SDS: Sulfuric acid 25-75% (RCI Labscan)',
            'Phoenix Metals HSE Policy V1',
            'Phoenix Metals BNP V1',
            'RI&E Phoenix Metals — Route naar RI&E']:
    doc.add_paragraph(ref, style='List Bullet')

# ═══ SAVE ═══
output = '/root/projects/jg/2026-reach-phoenix-metals/deliverables/docx/REACH_Kennisdossier_Phoenix_Metals_D1_v4.0.docx'
doc.save(output)
print(f'✅ D1 v4.0 opgeslagen: {output}')
