#!/usr/bin/env python3
"""Genereer REACH Beleidsdocument Phoenix Metals B.V. v1.0"""

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

doc = Document()

# ── Styles ──
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

DARK_BLUE = RGBColor(0, 51, 102)
ORANGE = RGBColor(255, 102, 0)
WHITE = RGBColor(255, 255, 255)
GREY = RGBColor(100, 100, 100)

for level in range(1, 4):
    hs = doc.styles[f'Heading {level}']
    hs.font.color.rgb = DARK_BLUE
    hs.font.name = 'Calibri'
    if level == 1:
        hs.font.size = Pt(18)
    elif level == 2:
        hs.font.size = Pt(14)
    else:
        hs.font.size = Pt(12)

def set_cell_shading(cell, color):
    shading = OxmlElement('w:shd')
    shading.set(qn('w:fill'), color)
    shading.set(qn('w:val'), 'clear')
    cell._tc.get_or_add_tcPr().append(shading)

def add_table(headers, rows):
    table = doc.add_table(rows=1 + len(rows), cols=len(headers))
    table.style = 'Table Grid'
    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:
            p.alignment = WD_ALIGN_PARAGRAPH.CENTER
            for r in p.runs:
                r.bold = True
                r.font.size = Pt(9)
                r.font.color.rgb = WHITE
        set_cell_shading(cell, '003366')
    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)
            if ri % 2 == 1:
                set_cell_shading(cell, 'E8EEF4')
    return table

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

# ═══════════════════════════════════════
# TITELPAGINA
# ═══════════════════════════════════════
for _ in range(5):
    doc.add_paragraph()

# Decoratieve lijn
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('━' * 40)
r.font.color.rgb = ORANGE
r.font.size = Pt(14)

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('REACH-BELEIDSDOCUMENT')
r.bold = True
r.font.size = Pt(28)
r.font.color.rgb = DARK_BLUE

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('Phoenix Metals B.V.')
r.font.size = Pt(22)
r.font.color.rgb = DARK_BLUE

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('━' * 40)
r.font.color.rgb = ORANGE
r.font.size = Pt(14)

doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('Verordening (EG) nr. 1907/2006 — REACH')
r.font.size = Pt(13)
r.font.color.rgb = GREY

doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('Documentcode: PM-REACH-BEL-001')
r.font.size = Pt(11)

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('Versie: 1.0')
r.font.size = Pt(11)

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('Datum: 26 april 2026')
r.font.size = Pt(11)

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('Classificatie: Vertrouwelijk — Intern')
r.font.size = Pt(11)
r.italic = True

doc.add_paragraph()
doc.add_paragraph()

add_table(
    ['Rol', 'Naam', 'Datum', 'Handtekening'],
    [
        ['Opsteller', 'J. van Gemert, HSEQ Specialist', '26-04-2026', ''],
        ['Reviewer', '', '', ''],
        ['Goedkeuring (Directie)', '', '', ''],
    ]
)

doc.add_page_break()

# ═══════════════════════════════════════
# REVISIEGESCHIEDENIS
# ═══════════════════════════════════════
doc.add_heading('Revisiegeschiedenis', level=1)
add_table(
    ['Versie', 'Datum', 'Auteur', 'Wijzigingen'],
    [['1.0', '26-04-2026', 'J. van Gemert', 'Eerste officiële uitgave beleidsdocument']]
)

doc.add_paragraph()

# ═══════════════════════════════════════
# INHOUDSOPGAVE
# ═══════════════════════════════════════
doc.add_heading('Inhoudsopgave', level=1)
toc = [
    '1. Voorwoord',
    '2. Doelstelling',
    '3. Toepassingsgebied',
    '4. REACH-rollen van Phoenix Metals B.V.',
    '5. Verantwoordelijkheden',
    '6. Kernverplichtingen',
    '7. Fasering en REACH-regime',
    '8. Communicatie en Informatieplicht',
    '9. Evaluatie en Review',
    '10. Documentbeheer',
]
for item in toc:
    p = doc.add_paragraph(item)
    p.paragraph_format.space_after = Pt(2)

doc.add_page_break()

# ═══════════════════════════════════════
# 1. VOORWOORD
# ═══════════════════════════════════════
doc.add_heading('1. Voorwoord', level=1)

doc.add_paragraph(
    'Phoenix Metals B.V. is een innovatief bedrijf dat zich toelegt op de winning van vanadium uit '
    'secundaire grondstoffen, waaronder SARU-ash en staalslakken. Onze missie is het omzetten van '
    'afvalstromen in waardevolle grondstoffen, conform de principes van de circulaire economie. '
    'De hydrometallurgische proceslijn op PlantOne Rotterdam vormt de kern van onze bedrijfsvoering.'
)
doc.add_paragraph(
    'De Europese REACH-verordening (Verordening (EG) nr. 1907/2006) stelt strenge eisen aan de '
    'registratie, evaluatie, autorisatie en beperking van chemische stoffen. Als bedrijf dat chemische '
    'stoffen vervaardigt, verwerkt en op de markt brengt, is Phoenix Metals B.V. onderworpen aan deze '
    'verordening. Dit beleidsdocument vormt het formele kader voor de naleving van REACH en de daaraan '
    'gekoppelde CLP-verordening (Verordening (EG) nr. 1272/2008).'
)
doc.add_paragraph(
    'De directie van Phoenix Metals B.V. verklaart hierbij zich volledig committed aan REACH-compliance. '
    'Alle medewerkers, van operationeel personeel tot management, dragen bij aan een veilige en '
    'wettelijk conform werkomgeving. Dit document is goedgekeurd door de directie en is bindend voor '
    'alle binnen het toepassingsgebied vallende activiteiten.'
)
p = doc.add_paragraph()
r = p.add_run('De Directie')
r.bold = True
doc.add_paragraph('Phoenix Metals B.V.')
doc.add_paragraph('Rotterdam, 26 april 2026')

doc.add_page_break()

# ═══════════════════════════════════════
# 2. DOELSTELLING
# ═══════════════════════════════════════
doc.add_heading('2. Doelstelling', level=1)

doc.add_paragraph(
    'Dit beleidsdocument heeft als doel het vastleggen van het REACH-beleid van Phoenix Metals B.V., '
    'zodat te allen tijde wordt voldaan aan de verplichtingen voortvloeiend uit Verordening (EG) nr. '
    '1907/2006 (REACH) en de daaraan gerelateerde wet- en regelgeving.'
)

doc.add_heading('2.1 Primaire doelstellingen', level=2)
objectives = [
    'Bescherming van de menselijke gezondheid: alle medewerkers, omwonenden en downstream-gebruikers '
    'worden beschermd tegen de potentiële gevaren van de stoffen die Phoenix Metals vervaardigt, '
    'importeert, verwerkt of op de markt brengt (Art. 1 REACH).',
    'Bescherming van het milieu: emissies van gevaarlijke stoffen naar lucht, water en bodem worden '
    'geminimaliseerd door adequaat risicobeheer, conform de beginselen van REACH Titel I.',
    'Wettelijke compliance: Phoenix Metals voldoet te allen tijde aan de registratie-, '
    'evaluatie-, autorisatie- en beperkingsverplichtingen van REACH, alsmede aan de eisen van de '
    'CLP-verordening (EG 1272/2008) en het Arbobesluit.',
    'Transparantie in de toeleveringsketen: alle relevante veiligheidsinformatie wordt tijdig en '
    'volledig gecommuniceerd aan leveranciers, downstream-gebruikers, medewerkers en bevoegde '
    'overheidsinstanties.',
]
for obj in objectives:
    doc.add_paragraph(obj, style='List Bullet')

doc.add_heading('2.2 Afgeleide doelstellingen', level=2)
doc.add_paragraph(
    'Naast de primaire doelstellingen streeft Phoenix Metals naar:'
)
derived = [
    'Proactieve monitoring van wetgevingwijzigingen en tijdse implementatie daarvan.',
    'Kostenbewuste compliance: benutting van consortium-structuren (Vanadium REACH Consortium) en '
    'gezamenlijke registratie (OSOR-principe) ter beheersing van registratiekosten.',
    'Continue verbetering van het REACH-managementsysteem via jaarlijkse audits en management reviews.',
]
for d in derived:
    doc.add_paragraph(d, style='List Bullet')

# ═══════════════════════════════════════
# 3. TOEPASSINGSGEBIED
# ═══════════════════════════════════════
doc.add_heading('3. Toepassingsgebied', level=1)

doc.add_paragraph(
    'Dit beleidsdocument is van toepassing op alle chemische stoffen en mengsels die Phoenix Metals B.V. '
    'vervaardigt, importeert, verwerkt, gebruikt of op de markt brengt. Het omvat de volledige levenscyclus '
    'van stoffen binnen de bedrijfsvoering: van inkoop en ontvangst via opslag en verwerking tot en met '
    'afvoer en levering aan derden.'
)

doc.add_heading('3.1 Stoffen en mengsels', level=2)
doc.add_paragraph(
    'Het toepassingsgebied omvat in ieder geval de volgende categorieën:'
)
scope_items = [
    'Grondstoffen: zwavelzuur (25–75%), natriumhydroxide (50%), aluminiumsulfaat, calciumoxide, '
    'magnesiumhydroxide en calciumhydroxide — gebruikt in het hydrometallurgisch extractieproces.',
    'Secundaire grondstoffen: SARU-ash en staalslakken — vanadiumhoudende reststromen die als '
    'invoer voor het extractieproces dienen.',
    'Eindproducten: vanadium(V)oxide (V₂O₅, CAS 1314-62-1) en vanadium-elektrolyt (UVCB-mengsel) — '
    'de primaire marktproducten van Phoenix Metals.',
    'Bijproducten: ijzeroxide (Fe₂O₃, CAS 1309-37-1) en gips (CaSO₄, CAS 7778-18-9) — '
    'potentieel marktwaardige nevenstromen.',
    'Tussenproducten: natriummetavanaadaat en trinatriumorthowanaadaat — ontstaan tijdens het proces, '
    'onderworpen aan CMR-regime.',
]
for item in scope_items:
    doc.add_paragraph(item, style='List Bullet')

doc.add_heading('3.2 Locaties', level=2)
doc.add_paragraph(
    'Het beleid is van toepassing op alle locaties waar Phoenix Metals B.V. activiteiten uitoefent '
    'met chemische stoffen, inclusief de demonstratiefaciliteit en pilotlijn op PlantOne Rotterdam.'
)

doc.add_heading('3.3 Medewerkers', level=2)
doc.add_paragraph(
    'Alle medewerkers van Phoenix Metals B.V., inclusief uitzendkrachten, stagiaires en onderaannemers '
    'die werken op locaties van Phoenix Metals, zijn gebonden aan de bepalingen in dit beleidsdocument.'
)

doc.add_page_break()

# ═══════════════════════════════════════
# 4. REACH-ROLLEN
# ═══════════════════════════════════════
doc.add_heading('4. REACH-rollen van Phoenix Metals B.V.', level=1)

doc.add_paragraph(
    'De REACH-verordening kent verschillende actoren met specifieke verplichtingen. Phoenix Metals B.V. '
    'vervult potentieel meerdere rollen, afhankelijk van de procesfase en de juridische status van de '
    'betrokken stoffen. De juiste rechtspositie per stof is vastgelegd in de stoffeninventarisatie.'
)

doc.add_heading('4.1 Fabrikant van recovered substances (Art. 3(8))', level=2)
doc.add_paragraph(
    'Phoenix Metals is potentieel fabrikant onder REACH indien de uit het extractieproces verkregen '
    'stoffen (V₂O₅, vanadium-elektrolyt) worden aangemerkt als "nieuwwaarde-creatie". Dit is het '
    'indien het hydrometallurgisch proces een wezenlijke transformatie van de stof teweegbrengt. '
    'Als fabrikant geldt de registratieplicht bij een productievolume van ≥ 1 ton/jaar (Art. 5, 6).'
)

doc.add_heading('4.2 Recovered substances (Art. 2(7)(d))', level=2)
doc.add_paragraph(
    'De meest waarschijnlijke rechtspositie is de toepassing van de vrijstellingsbepaling voor '
    'terugwinning van stoffen (Art. 2, lid 7, onderdeel d). Hierbij moet worden aangetoond dat de '
    'verkregen stof identiek is ("sameness") aan een reeds geregistreerde stof. Phoenix Metals moet '
    'een sameness-beoordeling uitvoeren ten opzichte van de registraties in het Vanadium REACH Consortium. '
    'Indien de vrijstelling van toepassing is, vervalt de registratieplicht, maar niet de verplichting '
    'tot het beschikbaar stellen van een veiligheidsinformatieblad (SDS) conform Art. 31.'
)

doc.add_heading('4.3 Downstream user van grondstoffen (Art. 3(13))', level=2)
doc.add_paragraph(
    'Voor alle ingekochte grondstoffen (zwavelzuur, natriumhydroxide, aluminiumsulfaat, calciumoxide, '
    'magnesiumhydroxide, calciumhydroxide) fungeert Phoenix Metals als downstream user (DU). Als DU '
    'is Phoenix Metals verplicht om:'
)
du_oblig = [
    'De ontvangen veiligheidsinformatiebladen (SDS) te raadplegen en de daarin vermelde '
    'risicobeheersmaatregelen te implementeren (Art. 37).',
    'Te verifiëren dat het eigen gebruik gedekt is door de blootstellingsscenario\'s in de '
    'veiligheidsinformatieblad (Art. 37.4).',
    'Informatie over veilig gebruik door te geven in de toeleveringsketen (Art. 37.5).',
]
for o in du_oblig:
    doc.add_paragraph(o, style='List Bullet')

doc.add_page_break()

# ═══════════════════════════════════════
# 5. VERANTWOORDELIJKHEDEN
# ═══════════════════════════════════════
doc.add_heading('5. Verantwoordelijkheden', level=1)

doc.add_paragraph(
    'Een effectieve REACH-compliance vereist een duidelijke verdeling van verantwoordelijkheden. '
    'Onderstaande tabel definieert de rollen en bijbehorende taken.'
)

add_table(
    ['Rol', 'Verantwoordelijkheden'],
    [
        ['Directie',
         '• Goedkeuring van het REACH-beleidsdocument\n'
         '• Toewijzing van budget voor REACH-compliance (registratie, LoA, externe expertise)\n'
         '• Strategische besluitvorming over REACH-registratieroute\n'
         '• Uiteindelijke verantwoordelijkheid voor wettelijke compliance'],
        ['HSEQ Manager',
         '• Beheer en actualisatie van het REACH-compliancemanagementsysteem\n'
         '• Opstellen en onderhouden van veiligheidsinformatiebladen (SDS)\n'
         '• SVHC-monitoring en kandidatenlijst-screening\n'
         '• Coördinatie van REACH-registratie en PPORD-meldingen\n'
         '• Jaarlijkse REACH-audit en compliance reporting\n'
         '• Contactpersoon voor ECHA en toezichthouders'],
        ['Productiemanagers',
         '• Implementatie van risicobeheersmaatregelen op de werkvloer\n'
         '• Bewaking van productievolumes ten behoeve van tonnage-drempels\n'
         '• Melden van proceswijzigingen die REACH-status beïnvloeden\n'
         '• Instrueren van operationeel personeel conform SDS-voorschriften'],
        ['Inkoop',
         '• Aanvragen en registreren van SDS bij elke levering\n'
         '• Verificatie van CLP-etikettering bij ontvangst\n'
         '• Communicatie met leveranciers over REACH-compliance\n'
         '• Melden van nieuwe stoffen aan de HSEQ Manager'],
        ['Laboratorium',
         '• Analytische ondersteuning bij stofidentificatie en sameness-beoordeling\n'
         '• Karakterisering van producten en tussenproducten\n'
         '• Uitvoeren van noodzakelijke fysisch-chemische bepalingen\n'
         '• Documentatie van analyseresultaten voor REACH-dossiers'],
    ]
)

doc.add_page_break()

# ═══════════════════════════════════════
# 6. KERNVERPlichtINGEN
# ═══════════════════════════════════════
doc.add_heading('6. Kernverplichtingen', level=1)

doc.add_paragraph(
    'De REACH-verordening legt specifieke verplichtingen op die rechtstreeks van toepassing zijn op '
    'de bedrijfsvoering van Phoenix Metals B.V. Hieronder worden de kernverplichtingen beschreven met '
    'de bijbehorende beleidsuitgangspunten.'
)

doc.add_heading('6.1 Registratieplicht (Art. 5, 6)', level=2)
doc.add_paragraph(
    'Fabrikanten en importeurs van stoffen in een hoeveelheid van ≥ 1 ton/jaar zijn verplicht deze '
    'stoffen te registreren bij het ECHA. De informatieverplichtingen zijn afhankelijk van de '
    'tonnageklasse (Art. 12):'
)
add_table(
    ['Tonnageklasse', 'Bijlage REACH', 'Aanvullende verplichtingen'],
    [
        ['1 – 10 ton/jaar', 'Bijlage VII', 'Alle stoffen; beperkte dataset'],
        ['10 – 100 ton/jaar', 'Bijlage VII + VIII', 'Chemical Safety Report (CSR) verplicht'],
        ['100 – 1.000 ton/jaar', 'Bijlage VII + VIII + IX', 'Uitgebreide toxicologische dataset'],
        ['≥ 1.000 ton/jaar', 'Bijlage VII + VIII + IX + X', 'Volledige dataset incl. langetermijnstudies'],
    ]
)
doc.add_paragraph()
doc.add_paragraph(
    'Beleidsuitgangspunt: Phoenix Metals monitors de productievolumes continu. Bij het naderen '
    'van de 1 ton/jaar-drempel wordt de registratieprocedure gestart conform het faseringsschema '
    '(zie hoofdstuk 7). De registratie verloopt bij voorkeur via het Vanadium REACH Consortium '
    '(OSOR-principe, Art. 11).'
)

doc.add_heading('6.2 Veiligheidsinformatieblad-verplichting (Art. 31)', level=2)
doc.add_paragraph(
    'Phoenix Metals stelt een veiligheidsinformatieblad (SDS) beschikbaar voor elke stof of mengsel '
    'dat voldoet aan de criteria van Art. 31, lid 1:'
)
sds_items = [
    'Stoffen of mengsels die zijn ingedeeld als gevaarlijk krachtens de CLP-verordening.',
    'Stoffen die voldoen aan de PBT- of vPvB-criteria (REACH Bijlage XIII).',
    'Stoffen op de SVHC-kandidatenlijst.',
]
for s in sds_items:
    doc.add_paragraph(s, style='List Bullet')
doc.add_paragraph(
    'SDS\'en worden opgesteld conform REACH Bijlage II, in het Nederlands, en worden bijgewerkt bij '
    'nieuwe risico-informatie (Art. 31, lid 9). Oude versies worden gearchiveerd met een bewaartermijn '
    'van 10 jaar (Art. 36).'
)

doc.add_heading('6.3 SVHC-monitoring (Art. 59)', level=2)
doc.add_paragraph(
    'De HSEQ Manager controleert minimaal tweemaal per jaar de ECHA-kandidatenlijst op nieuwe SVHC\'s '
    'die relevant zijn voor de stoffen van Phoenix Metals. In het bijzonder wordt gelet op:'
)
svhc_items = [
    'Vanadium(V)oxide (V₂O₅, CAS 1314-62-1) — opgenomen op de kandidatenlijst sinds 2023, '
    'geclassificeerd als reprotoxisch categorie 1B (H361fd).',
    'Nikkeloxide (NiO, CAS 1313-99-1) — geclassificeerd als carcinogeen categorie 1A (H350i), '
    'onderworpen aan CMR-protocol.',
]
for s in svhc_items:
    doc.add_paragraph(s, style='List Bullet')
doc.add_paragraph(
    'Indien een gebruikte of geproduceerde stof wordt toegevoegd aan de kandidatenlijst, '
    'start Phoenix Metals binnen 30 dagen een impactanalyse en wordt het compliance-plan bijgewerkt.'
)

doc.add_heading('6.4 Autorisatie (Art. 56–64)', level=2)
doc.add_paragraph(
    'Stoffen die zijn opgenomen in Bijlage XIV (lijst van stoffen onderworpen aan autorisatie) mogen '
    'alleen worden gebruikt indien een autorisatie is verleend of een vrijstelling van toepassing is. '
    'De "sunset date" bepaalt vanaf welk moment gebruik zonder autorisatie verboden is.'
)
doc.add_paragraph(
    'Beleidsuitgangspunt: Indien V₂O₅ wordt opgenomen in Bijlage XIV, dient Phoenix Metals uiterlijk '
    '18 maanden vóór de sunset date een aanvraag tot autorisatie in. De aanvraagroute (adequate control '
    'of socio-economische analyse) wordt bepaald op basis van een inhoudelijke analyse van de '
    'blootstellingsscenario\'s en de beschikbaarheid van alternatieven (Art. 60–62).'
)

doc.add_heading('6.5 Restricties (Art. 67–73, Bijlage XVII)', level=2)
doc.add_paragraph(
    'Phoenix Metals controleert of de gebruikte en geproduceerde stoffen onderhevig zijn aan '
    'beperkingen conform Bijlage XVII. Restricties gelden onafhankelijk van de registratieplicht en '
    'zijn direct handhavend. Bij de introductie van nieuwe stoffen of toepassingen wordt restrictie-compliance '
    'altijd vooraf geëvalueerd.'
)

doc.add_page_break()

# ═══════════════════════════════════════
# 7. FASERING EN REACH-REGIME
# ═══════════════════════════════════════
doc.add_heading('7. Fasering en REACH-regime', level=1)

doc.add_paragraph(
    'De REACH-verplichtingen van Phoenix Metals zijn sterk afhankelijk van de productiefase en de '
    'bijbehorende productievolumes. Het bedrijfsmodel van Phoenix Metals kent drie fasen, elk met een '
    'specifiek REACH-regime.'
)

add_table(
    ['Fase', 'Periode', 'Volume', 'REACH-regime', 'Acties'],
    [
        ['Demo', 'Huidig', '≤ 60 kg', 'PPORD / SR&D\n(< 1 ton/jaar)',
         '• PPORD-notificatie ECHA (Art. 9)\n'
         '• SDS opstellen (best practice)\n'
         '• SVHC-monitoring starten\n'
         '• Stoffeninventarisatie voltooien'],
        ['Pilot', 'Q3 2026 – Q4 2027', '0,5 – 3 ton/jaar', 'PPORD + monitoring',
         '• Volume bewaken t.o.v. 1 ton/jaar-drempel\n'
         '• Sameness-beoordeling starten\n'
         '• Contact Vanadium Consortium\n'
         '• Budget reserveren registratie'],
        ['FOAK\n(First of a Kind)', '2027+', '> 1 ton/jaar', 'Volledige REACH-registratie',
         '• Letter of Access (LoA) via consortium\n'
         '• IUCLID-dossier indienen\n'
         '• CSR opstellen bij ≥ 10 ton/jaar\n'
         '• e-SDS met blootstellingsscenario\'s'],
    ]
)

doc.add_paragraph()

doc.add_heading('7.1 Demo-fase (< 1 ton/jaar)', level=2)
doc.add_paragraph(
    'In de demonstratiefase wordt gewerkt met volumes die ver beneden de REACH-drempel van 1 ton/jaar '
    'blijven. De belangrijkste verplichting is het doen van een PPORD-notificatie (Art. 9) voor '
    'onderzoek- en ontwikkelingsdoeleinden. PPORD biedt een vrijstelling van registratie voor een '
    'periode van maximaal 5 jaar. Hoewel registratie niet verplicht is, hanteert Phoenix Metals de '
    'best practice van het opstellen van SDS voor alle stoffen en mengsels die in het proces worden '
    'verwerkt.'
)

doc.add_heading('7.2 Pilot-fase (0,5 – 3 ton/jaar)', level=2)
doc.add_paragraph(
    'In de pilotfase stijgen de productievolumes. De kritieke taak in deze fase is het continu '
    'monitoren van de tonnage. Bij het bereiken van 1 ton/jaar wordt de volledige REACH-registratie '
    'geactiveerd. De voorbereiding (sameness-check, consortium-contact, budget reservering) wordt '
    'in deze fase afgerond, zodat een naadloze overgang naar FOAK mogelijk is.'
)

doc.add_heading('7.3 FOAK-fase (> 1 ton/jaar)', level=2)
doc.add_paragraph(
    'In de FOAK-fase overschrijdt de productie de 1 ton/jaar-drempel. Phoenix Metals voldoet aan de '
    'volledige REACH-registratieplicht. De voorkeursroute is aansluiting bij het Vanadium REACH '
    'Consortium via een Letter of Access (LoA), hetgeen voldoet aan het OSOR-beginsel (Art. 11). '
    'De geraamde kosten voor registratie via het consortium bedragen € 15.000 – € 40.000 (exclusief '
    'interne kosten). Bij een productievolume van ≥ 10 ton/jaar wordt bovendien een Chemical Safety '
    'Report (CSR, Art. 14) opgesteld en worden uitgebreide veiligheidsinformatiebladen (e-SDS) met '
    'blootstellingsscenario\'s verstrekt aan downstream-gebruikers.'
)

doc.add_page_break()

# ═══════════════════════════════════════
# 8. COMMUNICATIE
# ═══════════════════════════════════════
doc.add_heading('8. Communicatie en Informatieplicht', level=1)

doc.add_paragraph(
    'REACH is in essentie een wetgeving die draait om informatieuitwisseling in de keten. Phoenix Metals '
    'onderschrijft het belang van transparante en tijdige communicatie met alle relevante stakeholders.'
)

doc.add_heading('8.1 Leveranciers', level=2)
doc.add_paragraph(
    'Bij elke eerste levering van een chemische stof wordt een actueel veiligheidsinformatieblad (SDS) '
    'aangevraagd. Bij daaropvolgende leveringen wordt de SDS bijgewerkt opgevraagd indien de leverancier '
    'daartoe niet uit zichzelf overgaat. Bij wijziging van leverancier wordt altijd een nieuwe SDS '
    'ontvangen voordat de stof in gebruik wordt genomen. Inkoop is verantwoordelijk voor de '
    'SDS-aanvraag; de HSEQ Manager beoordeelt de inhoud.'
)

doc.add_heading('8.2 ECHA (European Chemicals Agency)', level=2)
doc.add_paragraph(
    'Phoenix Metals communiceert met het ECHA voor:'
)
echa_items = [
    'PPORD-notificaties (Art. 9): melden van onderzoek- en ontwikkelingsdoeleinden.',
    'Registratie-indieningen (Art. 6): via REACH-IT in IUCLID-formaat bij ≥ 1 ton/jaar.',
    'SVHC-notificaties (Art. 7, lid 2): indien Phoenix Metals stoffen in voorwerpen produceert '
    'met SVHC\'s > 0,1% gewichtsfractie.',
    'Inquiry (Art. 26): raadplegen of een stof reeds geregistreerd is.',
    'DU-meldingen (Art. 66): downstream user gebruik melden bij ECHA indien het gebruik niet '
    'gedekt is door het blootstellingsscenario.',
]
for e in echa_items:
    doc.add_paragraph(e, style='List Bullet')

doc.add_heading('8.3 Medewerkers', level=2)
doc.add_paragraph(
    'Alle medewerkers die werken met chemische stoffen ontvangen voorafgaande instructie. '
    'Deze instructie omvat:'
)
med_items = [
    'Toegang tot en uitleg van de relevante veiligheidsinformatiebladen (SDS).',
    'Instructie over de risicobeheersmaatregelen, inclusief het gebruik van '
    'persoonlijke beschermingsmiddelen (PBM).',
    'Procedure bij accidenteel vrijkomen of blootstelling.',
    'Verplichting om afwijkingen en incidenten direct te melden aan de HSEQ Manager.',
]
for m in med_items:
    doc.add_paragraph(m, style='List Bullet')

doc.add_heading('8.4 Klanten en downstream-gebruikers', level=2)
doc.add_paragraph(
    'Wanneer Phoenix Metals stoffen of mengsels op de markt brengt, wordt aan elke klant een '
    'actueel veiligheidsinformatieblad verstrekt bij de eerste levering en bij elke significante '
    'wijziging (Art. 31, lid 1). Indien Phoenix Metals als fabrikant fungeert en ≥ 10 ton/jaar '
    'produceert, worden blootstellingsscenario\'s als bijlage bij het SDS verstrekt (e-SDS, Art. 14, 31).'
)

doc.add_page_break()

# ═══════════════════════════════════════
# 9. EVALUATIE & REVIEW
# ═══════════════════════════════════════
doc.add_heading('9. Evaluatie en Review', level=1)

doc.add_heading('9.1 Jaarlijkse review', level=2)
doc.add_paragraph(
    'De HSEQ Manager voert jaarlijks, in het eerste kwartaal, een volledige REACH-compliance review uit. '
    'Deze review omvat minimaal:'
)
review_items = [
    'Actualiteit en volledigheid van het Chemicals Master Register.',
    'Beschikbaarheid en actualiteit van alle veiligheidsinformatiebladen (SDS versie ≤ 3 jaar).',
    'Correcte CLP-etikettering van alle opgeslagen en gebruikte stoffen.',
    'Actualiteit van de CMR-namelist en blootstellingsregistratie.',
    'SVHC-kandidatenlijst-screening op nieuwe relevante stoffen.',
    'Tonnage-bewaking: is de productie nog binnen de huidige REACH-regime-grenzen?',
    'Status van PPORD-meldingen en registratie-voorbereidingen.',
    'Implementatie van eerdere corrective actions.',
]
for r in review_items:
    doc.add_paragraph(r, style='List Bullet')

doc.add_heading('9.2 Interne audit', level=2)
doc.add_paragraph(
    'De jaarlijkse REACH-audit wordt uitgevoerd conform een gestandaardiseerde checklist (12 items) '
    'en gedocumenteerd in het Compliance Jaaroverzicht. Bevindingen worden geclassificeerd als:'
)
audit_items = [
    'Kritiek: direct handelingsperspectief vereist (bijv. ontbrekende SDS voor CMR-stof).',
    'Significant: actie binnen 30 dagen (bijv. verouderde SDS, ontbrekend etiket).',
    'Observationeel: verbeterpunt voor volgende cyclus.',
]
for a in audit_items:
    doc.add_paragraph(a, style='List Bullet')

doc.add_heading('9.3 Bijstelling bij wetgevingwijzigingen', level=2)
doc.add_paragraph(
    'De HSEQ Manager monitort structureel wijzigingen in de REACH- en CLP-verordening, '
    'ECHA-guidance-documenten en nationale implementatiemaatregelen. Bij relevante wijzigingen:'
)
doc.add_paragraph(
    'Impactanalyse binnen 30 dagen na publicatie van de wijziging.', style='List Bullet')
doc.add_paragraph(
    'Bijstelling van het beleidsdocument en/of SOP\'s binnen de wettelijke overgangstermijn.', style='List Bullet')
doc.add_paragraph(
    'Communicatie van de wijziging aan alle betrokken medewerkers.', style='List Bullet')

doc.add_heading('9.4 Management review', level=2)
doc.add_paragraph(
    'De resultaten van de jaarlijkse REACH-compliance review en audit worden gepresenteerd in de '
    'management review. De directie neemt hierin besluiten over benodigde beleidsaanpassingen, '
    'budgettoewijzingen en strategische koerswijzigingen.'
)

doc.add_page_break()

# ═══════════════════════════════════════
# 10. DOCUMENTBEHEER
# ═══════════════════════════════════════
doc.add_heading('10. Documentbeheer', level=1)

doc.add_heading('10.1 Versiebeheer', level=2)
doc.add_paragraph(
    'Dit beleidsdocument is onderworpen aan formeel versiebeheer. Elke wijziging leidt tot een nieuwe '
    'versie die wordt vastgelegd in de revisiegeschiedenis op de tweede pagina van dit document. '
    'Alleen de actuele, goedgekeurde versie is geldig. Voorgaande versies worden gearchiveerd en '
    'gemarkeerd als "vervallen".'
)

doc.add_heading('10.2 Goedkeuring', level=2)
doc.add_paragraph(
    'Nieuwe versies van dit beleidsdocument worden goedgekeurd door de directie van Phoenix Metals B.V. '
    'De HSEQ Manager is verantwoordelijk voor het voorstel tot wijziging; de directie ondertekent de '
    'goedgekeurde versie.'
)

doc.add_heading('10.3 Distributie', level=2)
doc.add_paragraph(
    'De actuele versie van dit document is beschikbaar voor alle medewerkers via het interne '
    'documentmanagementsysteem. Exemplaren op papier worden bij ontvangst gemarkeerd als '
    '"gecontroleerd exemplaar" met een distributienummer.'
)

doc.add_heading('10.4 Archivering', level=2)
doc.add_paragraph(
    'Alle versies van dit beleidsdocument, inclusief bijbehorende ondersteunende documenten '
    '(SDS, auditrapporten, compliance-overzichten, correspondentie met ECHA), worden bewaard voor '
    'een periode van minimaal 10 jaar na de laatste relevantie, conform Art. 36 REACH en het '
    'Arbobesluit. Archivering vindt plaats in het digitale REACH-compliance archief van Phoenix Metals.'
)

doc.add_paragraph()

# Handtekeningblok
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('━' * 40)
r.font.color.rgb = ORANGE

doc.add_paragraph()
doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('HANDTEKENINGBLOK DIRECTIE')
r.bold = True
r.font.size = Pt(14)
r.font.color.rgb = DARK_BLUE

doc.add_paragraph()
doc.add_paragraph()

p = doc.add_paragraph()
r = p.add_run('Namens de directie van Phoenix Metals B.V. verklaar ik dat dit REACH-beleidsdocument '
              'is goedgekeurd en richtinggevend is voor alle REACH-gerelateerde activiteiten binnen '
              'Phoenix Metals B.V.')
r.italic = True

doc.add_paragraph()
doc.add_paragraph()

# Handtekeningvelden
sig_table = doc.add_table(rows=4, cols=2)
sig_table.style = 'Table Grid'
cells = [
    ('Naam:', ''),
    ('Functie:', 'Directeur Phoenix Metals B.V.'),
    ('Handtekening:', ''),
    ('Datum:', ''),
]
for i, (label, val) in enumerate(cells):
    cell_l = sig_table.rows[i].cells[0]
    cell_l.text = label
    for p in cell_l.paragraphs:
        for r in p.runs:
            r.bold = True
            r.font.size = Pt(11)
    cell_r = sig_table.rows[i].cells[1]
    cell_r.text = val
    for p in cell_r.paragraphs:
        for r in p.runs:
            r.font.size = Pt(11)

doc.add_paragraph()
doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('EINDE DOCUMENT')
r.bold = True
r.font.color.rgb = DARK_BLUE
r.font.size = Pt(12)

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('━' * 40)
r.font.color.rgb = ORANGE

# ── Opslaan ──
outpath = '/root/projects/jg/2026-reach-phoenix-metals-v2/deliverables/docx/REACH_Beleidsdocument_Phoenix_Metals_v1.0.docx'
doc.save(outpath)
print(f'✅ Opgeslagen: {outpath}')
