#!/usr/bin/env python3
"""Generate REACH & PGS 15 Herbeoordeling Phoenix Metals DOCX."""

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

doc = Document()

# --- Styles ---
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(0, 51, 102)
    hs.font.name = 'Calibri'

def add_para(text, bold=False, italic=False, align=None, space_after=Pt(6)):
    p = doc.add_paragraph()
    run = p.add_run(text)
    run.bold = bold
    run.italic = italic
    if align:
        p.alignment = align
    p.paragraph_format.space_after = space_after
    return p

def add_bullet(text, level=0):
    p = doc.add_paragraph(text, style='List Bullet')
    p.paragraph_format.left_indent = Cm(1.5 + level * 1.0)
    return p

def add_table(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(10)
    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(10)
    return table

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

add_para('REACH & PGS 15 Herbeoordeling', bold=True, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=Pt(4))
add_para('Phoenix Metals — PlantOne Rotterdam', bold=True, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=Pt(24))

add_para(f'Datum: 19 april 2026', align=WD_ALIGN_PARAGRAPH.CENTER)
add_para('Auteur: Kas / HSEQ Specialist', align=WD_ALIGN_PARAGRAPH.CENTER)
add_para('Versie: 1.0', align=WD_ALIGN_PARAGRAPH.CENTER)
add_para('Classificatie: Vertrouwelijk', align=WD_ALIGN_PARAGRAPH.CENTER)

doc.add_page_break()

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

add_para(
    'Dit dokument betreft de herbeoordeling van de REACH- en PGS 15:2025-regelgeving '
    'van toepassing op Phoenix Metals, een proeffabriek (pilot plant) gevestigd op het '
    'PlantOne-terrein in Rotterdam. De installatie is gericht op hydrometallurgische '
    'extractie van vanadium uit SARU ash via leaching met natriumhydroxide en zwavelzuur. '
    'De operationele schaal bedraagt maximaal 60 kg ash, 3,5 kg per batch, over een '
    'demonstratieperiode van maximaal drie maanden.'
)

add_para('REACH — Kernbevindingen:', bold=True)
add_bullet('Phoenix Metals fungeert als downstream user en is geen fabrikant of importeur van stoffen boven de 1 ton/jaar-drempel.')
add_bullet('De in de ash aanwezige vanadiumverbindingen (natriummetavanaat, vanadium oxide sulphate) zijn reeds geregistreerd door het Vanadium Consortium.')
add_bullet('De PPORD-uitzondering (Product and Process Oriented Research and Development, REACH art. 3(23)) is mogelijk van toepassing op de demonstratie.')
add_bullet('Nikkeloxide, een bestanddeel van SARU ash, staat op de SVHC-kandidaatenlijst (Carc. 1A). Mededelingsplicht op grond van art. 33 REACH is aanwezig.')
add_bullet('CLP-verplichtingen (indeling, etikettering, SDS) gelden voor de ash als mengsel met CMR-stoffen.')

add_para('PGS 15:2025 — Kernbevindingen:', bold=True)
add_bullet('PGS 15 is van toepassing op de opslag van verpakte gevaarlijke stoffen. Er bestaat geen expliciete vrijstelling voor pilot plants.')
add_bullet('De betrokken chemicaliën (NaOH 50%, H₂SO₄, CMR-houdende ash) vallen binnen het toepassingsbereik.')
add_bullet('De geringe hoeveelheden resulteren in een lage risicoklasse, met beperkte bouwkundige en organisatorische eisen.')
add_bullet('Ondergrenzen in H1.2 van PGS 15 kunnen leiden tot (gedeeltelijke) vrijstelling voor specifieke opslagklassen.')

add_para(
    'Conclusie: De REACH-registratieverplichting is voor Phoenix Metals niet aan de orde. '
    'De PGS 15:2025-toepassing leidt tot beperkte additionele eisen gezien de lage volumes. '
    'De grootste aandachtsputten zijn de SVHC-mededelingsplicht (nikkeloxide) en adequate '
    'CLP-classificatie van de SARU ash.',
    bold=False, italic=True
)

doc.add_page_break()

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

# --- 1A Rechtspositie ---
doc.add_heading('1.A Rechtspositie Phoenix Metals', level=2)

add_para(
    'Op grond van REACH (Verordening (EG) nr. 1907/2006) gelden registratieverplichtingen '
    'voor fabrikanten en importeurs van stoffen als zodanig of in mengsels, wanneer de '
    'geproduceerde of ingevoerde hoeveelheid 1 ton per jaar of meer bedraagt (art. 5 en 6 REACH).'
)

add_para('Phoenix Metals', bold=True)
add_para(
    'Phoenix Metals is een proeffabriek die SARU ash verwerkt tot vanadiumhoudende producten. '
    'De activiteit kwalificeert niet als fabricage van een nieuwe stof in de zin van REACH: '
    'de vanadiumverbindingen in de ash reeds bestaan als zodanig op de markt. De totale '
    'hoeveelheid ash bedraagt maximaal 60 kg over een periode van maximaal drie maanden, '
    'hetgeen ver beneden de 1 ton/jaar-drempel blijft.'
)

add_table(
    ['Criterium', 'Beoordeling', 'REACH Artikel'],
    [
        ['Rol', 'Downstream user', 'Art. 3(13)'],
        ['Tonrage (ash)', '< 1 ton/jaar (~60 kg totaal)', 'Art. 5, 6'],
        ['Fabricage nieuwe stof', 'Nee — extractie uit bestaand mengsel', 'Art. 3(1)'],
        ['Import uit derde landen', 'Niet van toepassing', 'Art. 3(10)'],
    ]
)

add_para(
    'Conclusie: Phoenix Metals is downstream user. Er is geen zelfstandige '
    'registratieverplichting op grond van REACH Hoofdstuk II.',
    bold=True
)

# --- 1B Registratieverplichting ---
doc.add_heading('1.B Registratieverplichting (OSOR)', level=2)

add_para(
    'Het One Substance One Registration (OSOR)-principe (art. 10, 11 en 27 REACH) vereist '
    'dat elke stof één gezamenlijke registratie kent. Het Vanadium Consortium heeft de '
    'volgende stoffen reeds geregistreerd bij ECHA:'
)

add_table(
    ['Stof', 'EC-nummer', 'CAS-nummer', 'Status'],
    [
        ['Natriummetavanaat', '237-261-3', '13718-26-8', 'Geregistreerd via Vanadium Consortium'],
        ['Vanadium oxide sulphate', '—', '—', 'Geregistreerd via Vanadium Consortium'],
        ['Trinatriumorthovanaat', '—', '—', 'Onderdeel van ash-mengsel'],
    ]
)

add_para(
    'Aangezien de vanadiumverbindingen reeds geregistreerd zijn en Phoenix Metals de '
    '1 ton/jaar-drempel niet bereikt, is separate registratie niet vereist. Indien Phoenix '
    'Metals als downstream user de stoffen in een toepassing gebruikt die buiten het '
    'geregistreerde toepassingsgebied valt (art. 37(4)), dient een downstream user rapport '
    'te worden opgesteld. Gezien de aard van de activiteit (R&D/demo) wordt dit niet '
    'verwacht.'
)

# --- 1C Uitzonderingen ---
doc.add_heading('1.C Uitzonderingen — PPORD', level=2)

add_para(
    'REACH art. 3(23) definieert Product and Process Oriented Research and Development '
    '(PPORD) als "elke wetenschappelijke ontwikkeling die verband houdt met productontwikkeling '
    'of de verdere ontwikkeling van een stof, onafhankelijk van de wijze waarop deze wordt gebruikt".'
)

add_para('Toepassing op Phoenix Metals:', bold=True)
add_bullet('De activiteit betreft een proeffabriek (demonstratie-installatie) gericht op procesontwikkeling.')
add_bullet('Schaal: ≤60 kg ash, 3,5 kg/batch, ≤3 maanden operationeel.')
add_bullet('Doel: validatie van het hydrometallurgische extractieproces op semi-industriële schaal.')

add_para(
    'Op grond van art. 9(2) REACH kan de bevoegde autoriteit (in Nederland: het Ctgb) '
    'een PPORD-melding eisen. De stoffen die niet reeds zijn geregistreerd of die in '
    'hoeveelheden ≥1 ton/jaar worden geproduceerd, vereisen een PPORD-melding bij ECHA '
    '(art. 9(1)). Gezien de volumes (< 1 ton/jaar) en de reeds geregistreerde vanadiumverbindingen '
    'is een PPORD-melding formeel niet vereist, maar wordt deze aanbevolen als best practice.'
)

add_para(
    'Aanbeveling: Dien een vrijwillige PPORD-melding in bij ECHA via het Ctgb ter '
    'verduidelijking van de rechtspositie en ter voorkoming van discussie met toezichthouders.',
    italic=True
)

# --- 1D SVHC Analyse ---
doc.add_heading('1.D SVHC Analyse — Nikkeloxide', level=2)

add_para(
    'SARU ash bevat naast vanadiumverbindingen ook nikkeloxide (NiO). Nikkeloxide staat op '
    'de REACH-kandidaatenlijst van Stoffen van Zeer Hoge Zorg (SVHC) wegens de classificatie '
    'als Carc. 1A (H350i — Kan kanker veroorzaken bij inademing).'
)

add_table(
    ['Stof', 'Classificatie', 'Kandidaatenlijst', 'Toelichting'],
    [
        ['Nikkeloxide (NiO)', 'Carc. 1A; STOT RE 1; Skin Sens. 1B', 'Ja (sinds 2009)', 'Bestanddeel van SARU ash'],
    ]
)

add_para('Artikel 33 REACH — Mededelingsplicht:', bold=True)
add_para(
    'Art. 33(1) REACH verplicht leveranciers van artikelen die een SVHC bevatten in een '
    'concentratie > 0,1% (gewichtspercentage) tot het verstrekken van voldoende informatie '
    'aan de ontvanger om een veilig gebruik mogelijk te maken. Bij consumenten geldt een '
    'verplichting tot reactie op verzoeken binnen 45 dagen (art. 33(2)).'
)

add_para(
    'De SARU ash is een mengsel, geen artikel in de zin van art. 3(3) REACH. De '
    'mededelingsplicht van art. 33 is daarmee formeel niet van toepassing op het mengsel zelf. '
    'Echter, de Duty of Care (art. 1(3)) en de algemene communicatieverplichtingen via de '
    'veiligheidsinformatieblad (SDS) vereisen dat de aanwezigheid van nikkeloxide in de ash '
    'transparant wordt gecommuniceerd aan alle gebruikers in de keten.',
    bold=False
)

add_para('Aanbevelingen SVHC:', bold=True)
add_bullet('Verifieer de exacte concentratie nikkeloxide in de SARU ash via analyserapport.')
add_bullet('Verwerk de SVHC-status van nikkeloxide in het SDS van de ash.')
add_bullet('Communiceer de CMR-classificatie aan alle betrokken medewerkers via een TRA (Technisch Risico Analyserapport).')

# --- 1E CLP Verplichtingen ---
doc.add_heading('1.E CLP Verplichtingen', level=2)

add_para(
    'De CLP-Verordening (Verordening (EG) nr. 1272/2008) regelt de indeling, etikettering '
    'en verpakking van stoffen en mengsels. SARU ash kwalificeert als mengsel in de zin van '
    'art. 2(8) CLP en bevat de volgende gevaarlijke componenten:'
)

add_table(
    ['Component', 'Gevaarsklasse', 'H-zin', 'Concentratiegebied'],
    [
        ['Natriummetavanaat', 'Acute Tox. 3 (H331)', 'Toxic bij inademing', 'Hoog (hoofdbestanddeel)'],
        ['Trinatriumorthovanaat', 'Acute Tox. 3 (H301)', 'Toxic bij inslikken', 'Gemiddeld'],
        ['Nikkeloxide', 'Carc. 1A (H350i)', 'Kan kanker veroorzaken bij inademing', 'Laag (verontreiniging)'],
    ]
)

add_para('CLP-verplichtingen voor Phoenix Metals:', bold=True)
add_bullet('Indeling: Het mengsel (SARU ash) moet worden ingedeeld op basis van de componenten (art. 11 CLP). De aanwezigheid van een Carc. 1A-stof boven de generieke concentratiegrens (≥0,1%) leidt tot classificatie van het mengsel als Carc. 1A.')
add_bullet('Etikettering: Het etiket dient te bevatten: naam/adres leverancier, productidentificator, gevarenpictogrammen (GHS08, GHS06), signaalwoord "GEVAAR", H- en P-zinnen (art. 17-25 CLP).')
add_bullet('SDS: Een veiligheidsinformatieblad (Safety Data Sheet) is vereist op grond van art. 31 REACH voor mengsels die gevaarlijke stoffen bevatten. Het SDS dient te voldoen aan de structuur van Bijlage II REACH.')
add_bullet('Verpakking: Kinderveilige sluitingen (art. 35 CLP) en tastbare gevarenindicatie (art. 35(1)(c)) zijn vereist voor stoffen bestemd voor het grote publiek. Voor industriële toepassingen gelden de algemene verpakkingsvereisten van art. 35(2).')

# --- 1F Actielijst REACH ---
doc.add_heading('1.F Concrete Actielijst REACH', level=2)

add_table(
    ['#', 'Actie', 'Verantwoordelijke', 'Termijn', 'Prioriteit'],
    [
        ['R1', 'Verifieer PPORD-status: bepaal of een vrijwillige PPORD-melding bij Ctgb/ECHA noodzakelijk is', 'HSEQ Specialist', 'Voor start demo', 'Hoog'],
        ['R2', 'Verkrijg SDS van SARU ash van leverancier; verifieer volledigheid (16 secties, Bijlage II REACH)', 'Inkoop/HSEQ', 'Voor start demo', 'Hoog'],
        ['R3', 'Verifieer concentratie nikkeloxide in ash via analysecertificaat', 'Lab/HSEQ', 'Voor start demo', 'Hoog'],
        ['R4', 'Zorg voor adequate CLP-etikettering op alle verpakkingen van ash', 'Operations', 'Voor start demo', 'Medium'],
        ['R5', 'Richt een TRA op met CMR-maatregelen (inademing, blootstellingspreventie)', 'HSEQ Specialist', 'Voor start demo', 'Hoog'],
        ['R6', 'Documenteer downstream user status en bewaar registratiegegevens Vanadium Consortium', 'HSEQ Specialist', 'Voor start demo', 'Medium'],
        ['R7', 'Controleer of geregistreerde toepassingen van het Vanadium Consortium dekken wat Phoenix Metals doet', 'HSEQ Specialist', '4 weken', 'Medium'],
    ]
)

doc.add_page_break()

# ============================================================
# DEEL 2: PGS 15:2025 ANALYSE
# ============================================================
doc.add_heading('DEEL 2: PGS 15:2025 Analyse', level=1)

# --- 2A Toepasselijkheid ---
doc.add_heading('2.A Toepasselijkheid', level=2)

add_para(
    'PGS 15:2025 (Publicatiereeks Gevaarlijke Stoffen, versie 1.0, januari 2025) is de '
    'Nederlandse richtlijn voor de veilige opslag van verpakte gevaarlijke stoffen. Het '
    'toepassingsbereik is gedefinieerd in Hoofdstuk 1, paragraaf H1.2.'
)

add_para('Toepassingscriteria PGS 15:', bold=True)
add_bullet('Opslag van verpakte gevaarlijke stoffen (vaten, IBC\'s, drums, kleinverpakking).')
add_bullet('Stoffen ingedeeld op grond van CLP of opgenomen in de Bijlagen van PGS 15.')
add_bullet('Ondergrenzen: PGS 15 is niet van toepassing onder bepaalde minimale hoeveelheden (H1.2).')

add_para(
    'Phoenix Metals slaat de volgende gevaarlijke stoffen op in verpakte vorm:'
)

add_table(
    ['Stof', 'Gevaarlijkheid', 'Volume', 'ADR-klasse', 'PGS 15-opslagklasse'],
    [
        ['NaOH 50%', 'Bijtend (Skin Corr. 1A)', '~100 L', 'ADR 8', 'Klasse 8 (bijtend)'],
        ['H₂SO₄', 'Bijtend (Skin Corr. 1A)', '~200 L', 'ADR 8', 'Klasse 8 (bijtend)'],
        ['SARU ash', 'Carc. 1A (nikkeloxide), Acute Tox. 3', '~60 kg', 'ADR 6.1 (indien van toepassing)', 'Klasse 6.1 / CMR'],
    ]
)

add_para(
    'Gezien de aanwezigheid van CMR-stoffen (via nikkeloxide in de ash) geldt PGS 15 '
    'onverkort, tenzij de hoeveelheden onder de drempelwaarden van H1.2 vallen.'
)

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

add_para(
    'Op basis van de betrokken stoffen en volumes worden de volgende scenario\'s geanalyseerd:'
)

add_para('Scenario 1: Lekkage bijtende vloeistoffen (NaOH, H₂SO₄)', bold=True)
add_bullet('Volume: beperkt (100–200 L per chemische stof).')
add_bullet('Risico: huid- en oogletsel, milieuschade bij onvoldoende lekbak.')
add_bullet('PGS 15-maatregel: lekbak/vloeistofdichte opslagruimte (H4.3), toegang tot spoelvoorzieningen.')
add_bullet('Beoordeling: met adequate lekbak en persoonlijke beschermingsmiddelen is het risico beheersbaar.')

add_para('Scenario 2: Blootstelling CMR-stof (nikkeloxide in ash)', bold=True)
add_bullet('Volume: maximaal 60 kg ash, waarvan nikkeloxide een klein deel uitmaakt.')
add_bullet('Risico: carcinogeen bij inademing (Carc. 1A, H350i).')
add_bullet('PGS 15-maatregel: stofvrije opslag (afgesloten verpakking), ventilatievereisten (H5).')
add_bullet('Beoordeling: bij gesloten verpakking en adequate afzuiging is blootstelling verwaarloosbaar.')

add_para('Scenario 3: Brand (reactie bijtende stoffen)', bold=True)
add_bullet('Risico: reactie bij menging NaOH + H₂SO₄ (exotherm, warmte-ontwikkeling).')
add_bullet('PGS 15-maatregel: scheiding van onverenigbare stoffen (H4.4, segregatietafel).')
add_bullet('Beoordeling: fysieke scheiding volstaat; gezamenlijke opslag is verboden.')

add_table(
    ['Scenario', 'Kans', 'Effect', 'Risicoklasse', 'Maatregel'],
    [
        ['Lekkage NaOH/H₂SO₄', 'Laag', 'Beperkt (lokaal)', 'Laag', 'Lekbak + PBM'],
        ['Blootstelling NiO (CMR)', 'Laag', 'Ernstig (carcinogeen)', 'Medium', 'Gesloten opslag + afzuiging'],
        ['Brand/reactie', 'Zeer laag', 'Beperkt', 'Laag', 'Scheiding onverenigbare stoffen'],
    ]
)

# --- 2C Eisen ---
doc.add_heading('2.C Eisen per Aspect', level=2)

add_para('Bouwkundige eisen (H4 PGS 15):', bold=True)
add_bullet('Opslagruimte: voldoende geventileerd, vloeistofdichte vloer met lekbak/opvang.')
add_bullet('Brandwerendheid: opslag van CMR-stoffen in afgesloten ruimte; brandwerende scheiding indien > drempelwaarde.')
add_bullet('Voorzieningen: oogdouche/nooddouche binnen 10 seconden loopafstand (H4.7).')
add_bullet('Verlichting: voldoende verlichting voor veilig werken.')

add_para('Veiligheidseisen (H5 PGS 15):', bold=True)
add_bullet('Ventilatie: bij opslag van CMR-stoffen is adequate ventilatie vereist (natuurlijk of mechanisch).')
add_bullet('Lekkagedetectie: visuele inspectie op lekkage; bij grotere volumes lekdetectiesysteem.')
add_bullet('PBM: veiligheidsbril, handschoenen (chemisch bestendig), ademhalingsbescherming bij stof-ash handeling.')

add_para('Organisatorische eisen (H6-H7 PGS 15):', bold=True)
add_bullet('Inventarisatie: up-to-date inventarislijst van opgeslagen stoffen (H6.1).')
add_bullet('SDS beschikbaar: veiligheidsinformatiebladen voor alle stoffen direct raadpleegbaar.')
add_bullet('Procedure: schriftelijke procedure voor laden/lossen, omgang met lekkage, noodsituaties.')
add_bullet('Instruktie: medewerkers geïnstrueerd in gevaren en maatregelen (H7).')
add_bullet('Inspectie: regelmatige inspectie van opslagfaciliteiten (H7.4).')

# --- 2D Uitzonderingen pilot plant ---
doc.add_heading('2.D Uitzonderingen Pilot Plant', level=2)

add_para(
    'PGS 15:2025 kent geen expliciete vrijstelling voor pilot plants, proeffabrieken of '
    'laboratoria. Echter, de volgende overwegingen zijn relevant:'
)

add_bullet('De hoeveelheden bij Phoenix Metals zijn zeer beperkt (totaal < 300 L vloeistof, 60 kg vast).')
add_bullet('De ondergrenzen in H1.2 van PGS 15 geven aan dat bij zeer kleine hoeveelheden de volledige PGS 15 niet van toepassing hoeft te zijn.')
add_bullet('De operationele duur is beperkt (≤3 maanden), hetgeen de cumulatieve risico\'reduceert.')
add_bullet('Individuele bepalingen kunnen worden gehanteerd als "best practice" ook als de formele drempels niet worden overschreden.')

add_para(
    'Advies: Pas PGS 15 toe als toetsingskader, maar documenteer per eis de motivatie waarom '
    '(delen van) de richtlijn al dan niet van toepassing zijn gezien de specifieke volumes en '
    'omstandigheden van de pilot plant.',
    italic=True
)

# --- 2E Actielijst PGS 15 ---
doc.add_heading('2.E Concrete Actielijst PGS 15', level=2)

add_table(
    ['#', 'Actie', 'Verantwoordelijke', 'Termijn', 'Prioriteit'],
    [
        ['P1', 'Bepaal exacte volumes per opslagklasse en toets tegen H1.2-ondergrenzen', 'HSEQ Specialist', 'Voor start demo', 'Hoog'],
        ['P2', 'Zorg voor vloeistofdichte opslag met lekbak voor NaOH en H₂SO₄', 'Operations', 'Voor start demo', 'Hoog'],
        ['P3', 'Plaats oogdouche/nooddouze binnen 10 sec loopafstand', 'Operations', 'Voor start demo', 'Hoog'],
        ['P4', 'Realiseer fysieke scheiding tussen NaOH en H₂SO₄ (segregatie)', 'Operations', 'Voor start demo', 'Hoog'],
        ['P5', 'Sla ash op in gesloten, stofdichte verpakking met CMP-etikettering', 'Operations', 'Voor start demo', 'Hoog'],
        ['P6', 'Stel inventarislijst op van alle opgeslagen gevaarlijke stoffen', 'HSEQ Specialist', 'Voor start demo', 'Medium'],
        ['P7', 'Zorg voor adequate ventilatie in opslagruimte (minimaal natuurlijke ventilatie)', 'Operations', 'Voor start demo', 'Medium'],
        ['P8', 'Schrijf noodsituatieprocedures (lekkage, brand, blootstelling)', 'HSEQ Specialist', 'Voor start demo', 'Hoog'],
        ['P9', 'Instrueer medewerkers over gevaren, PBM-gebruik en noodprocedures', 'Operations/HSEQ', 'Voor start demo', 'Hoog'],
        ['P10', 'Documenteer PGS 15-toepasbaarheidstoets met motivatie per eis', 'HSEQ Specialist', '2 weken', 'Medium'],
    ]
)

doc.add_page_break()

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

add_para('REACH:', bold=True)
add_bullet('Phoenix Metals is downstream user; geen registratieverplichting (volumes < 1 ton/jaar, stoffen reeds geregistreerd via Vanadium Consortium).')
add_bullet('PPORD-uitzondering is toepasbaar; een vrijwillige melding bij Ctgb/ECHA wordt aanbevolen als best practice.')
add_bullet('Nikkeloxide in SARU ash is SVHC (Carc. 1A); communicatie via SDS is vereist.')
add_bullet('CLP-indeling, etikettering en SDS voor de ash zijn verplicht.')

add_para('PGS 15:2025:', bold=True)
add_bullet('PGS 15 is formeel van toepassing, maar de beperkte volumes resulteren in een lage risicoklasse.')
add_bullet('De kritieke maatregelen zijn: lekbakken, scheiding onverenigbare stoffen, gesloten CMR-opslag, en noodvoorzieningen.')
add_bullet('Een formele toepasbaarheidstoets met documentatie per eis wordt aanbevolen.')

add_para('Overkoepelende aanbeveling:', bold=True)
add_para(
    'Start de demo pas nadat de acties met prioriteit "Hoog" uit de actielijsten (R1–R5, R6 '
    'en P1–P5, P8–P9) zijn afgerond en gedocumenteerd. De overige acties (prioriteit "Medium") '
    'kunnen parallel worden uitgevoerd tijdens de eerste fase van de demonstratie.'
)

doc.add_page_break()

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

refs = [
    'Verordening (EG) nr. 1907/2006 (REACH), artikelen 3, 5, 6, 9, 10, 11, 27, 31, 33, 37.',
    'Verordening (EG) nr. 1272/2008 (CLP), artikelen 2, 11, 17–25, 31, 35.',
    'PGS 15:2025 — Opslag van verpakte gevaarlijke stoffen, versie 1.0, januari 2025.',
    'ECHA Candidate List of SVHCs — Nikkeloxide (EC 215-215-7, CAS 1313-99-1).',
    'Vanadium Consortium — Registratiedossiers natriummetavanaat en vanadium oxide sulphate.',
    'SARU ash analysegegevens — samenstelling en concentraties (brondata Phoenix Metals).',
    'PlantOne Rotterdam — locatie- en installatiegegevens Phoenix Metals pilot plant.',
    'Ctgb (College voor de toelating van gewasbeschermingsmiddelen en biociden) — PPORD-meldingsprocedure.',
]

for i, ref in enumerate(refs, 1):
    p = doc.add_paragraph()
    p.add_run(f'[{i}] ').bold = True
    p.add_run(ref)
    p.paragraph_format.space_after = Pt(3)

# --- Footer info ---
doc.add_paragraph()
add_para('— Einde document —', align=WD_ALIGN_PARAGRAPH.CENTER, italic=True)

# ============================================================
# SAVE
# ============================================================
output = '/root/projects/jg/2026-reach-phoenix-metals/deliverables/docx/REACH_PGS15_Herbeoordeling_Phoenix_Metals_v1.0.docx'
doc.save(output)
print(f'DOCX generated: {output}')
