#!/usr/bin/env python3
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
from docx.oxml.ns import nsdecls
from docx.oxml import parse_xml

doc = Document()
for s in doc.sections:
    s.top_margin=s.bottom_margin=Cm(2); s.left_margin=s.right_margin=Cm(2.5)
sty=doc.styles['Normal']; sty.font.name='Calibri'; sty.font.size=Pt(11)
DB=RGBColor(0x1a,0x3a,0x5c); WH=RGBColor(0xFF,0xFF,0xFF)

def sh(c,h): c._tc.get_or_add_tcPr().append(parse_xml(f'<w:shd {nsdecls("w")} w:fill="{h}"/>'))
def H(t,l=1):
    h=doc.add_heading(t,level=l)
    for r in h.runs: r.font.color.rgb=DB; r.font.name='Calibri'
def B(t,b=False):
    p=doc.add_paragraph(); r=p.add_run(t); r.font.size=Pt(11); r.font.name='Calibri'; r.bold=b
def L(t): doc.add_paragraph(t,style='List Bullet')
def T(hd,rows):
    t=doc.add_table(rows=1+len(rows),cols=len(hd)); t.style='Table Grid'; t.alignment=WD_TABLE_ALIGNMENT.CENTER
    for i,h in enumerate(hd):
        c=t.rows[0].cells[i]; c.text=h
        for p in c.paragraphs:
            p.alignment=WD_ALIGN_PARAGRAPH.CENTER
            for r in p.runs: r.bold=True; r.font.color.rgb=WH; r.font.size=Pt(10); r.font.name='Calibri'
        sh(c,'1a3a5c')
    for ri,row in enumerate(rows):
        for ci,v in enumerate(row):
            c=t.rows[ri+1].cells[ci]; c.text=str(v)
            for p in c.paragraphs:
                for r in p.runs: r.font.size=Pt(9); r.font.name='Calibri'
            if ri%2==1: sh(c,'F2F2F2')

# HEADER
ht=doc.add_table(rows=1,cols=2); ht.alignment=WD_TABLE_ALIGNMENT.CENTER
lc,rc=ht.rows[0].cells[0],ht.rows[0].cells[1]; sh(lc,'1a3a5c'); sh(rc,'1a3a5c')
lr=lc.paragraphs[0].add_run('JvG Consultancy'); lr.bold=True; lr.font.color.rgb=WH; lr.font.size=Pt(14); lr.font.name='Calibri'
rp=rc.paragraphs[0]; rp.alignment=WD_ALIGN_PARAGRAPH.RIGHT
rr=rp.add_run('REACH Kennisdossier\nPhoenix Metals B.V.'); rr.bold=True; rr.font.color.rgb=WH; rr.font.size=Pt(12); rr.font.name='Calibri'
doc.add_paragraph()

# 1
H('1. Management Samenvatting')
B('Wat is REACH?')
B('REACH (Registration, Evaluation, Authorisation and Restriction of Chemicals) is de EU-verordening (EG 1907/2006) die fabrikanten, importeurs en downstream gebruikers verplicht de veiligheid van chemische stoffen te waarborgen. Het systeem verschuift de bewijslast van overheid naar industrie: bedrijven moeten aantonen dat hun stoffen veilig gebruikt kunnen worden. ECHA in Helsinki beheert het centrale registratiesysteem.')
B('Waarom relevant voor Phoenix Metals?')
B('Phoenix Metals produceert en verwerkt chemische stoffen (vanadiumverbindingen, Mg(OH)2, Fe2O3, Ca(OH)2, gips) in toenemende volumes. Bij de transitie van pilot naar FOAK-productie schuift de onderneming van uitzonderingsregimes (PPORD, SR&D) naar volledige REACH-registratie. Een late voorbereiding leidt tot markttoegangsproblemen, boetes en reputatieschade.')
B('Huidige compliance-status')
T(['Regime','Status','Toepassing'],[
['PPORD (Art. 9)','Actief','Volumes >=1 ton/jaar in pilotfase'],
['SR&D (Art. 3(23))','Actief','Stoffen <1 ton/jaar'],
['Afvalstatus','Actief','SARU Ash en staalslakken - buiten REACH'],
['Volledige registratie','Niet vereist (nog)','FOAK-fase 2028+'],
['Vanadium Consortium','LoA vereist','19 geregistreerde stoffen'],
])
doc.add_paragraph()
B('Drie kernacties voor management:',True)
L('1. PPORD-dossier tijdig indienen bij ECHA (voor volume-grens van 1 ton/jaar bereikt).')
L('2. Letter of Access aanvragen bij het Vanadium Consortium voor toekomstige commercialisatie.')
L('3. FOAK-registratietraject starten in Q3 2027 met budget EUR 120.000-290.000.')
doc.add_page_break()

# 2
H('2. REACH in Context - De EU Chemiewetgeving')
H('2.1 Verordening (EG) 1907/2006',2)
B('REACH trad in werking op 1 juni 2007 en is direct van toepassing in alle EU-lidstaten. Het doel: een hoger niveau van bescherming van de menselijke gezondheid en het milieu tegen de risicos van chemische stoffen, gelijktijdig met het waarborgen van het vrije verkeer van stoffen op de interne markt. Het systeem vervangt meer dan 40 eerdere EU-richtlijnen en -verordeningen.')
H('2.2 Relatie tot CLP (Verordening 1272/2008)',2)
B('CLP (Classification, Labelling and Packaging) is de zuster-verordening van REACH. CLP regelt de classificering, etikettering en verpakking van gevaarlijke stoffen en mengsels op basis van het GHS. REACH bepaalt of een stof geregistreerd moet worden; CLP bepaalt hoe deze geclassificeerd en geetiketteerd moet worden. Alle geproduceerde stoffen vereisen zowel een REACH-status als een CLP-classificatie.')
H('2.3 Andere relevante wetgeving',2)
T(['Wetgeving','Toepassing','Relevantie'],[
['Seveso III (2012/18/EU)','Gevaarlijke stoffen >drempels','Veiligheidsrapport + Brzo indien boven drempel'],
['Kaderrichtlijn Afvalstoffen','SARU Ash, staalslakken','End-of-waste criteria'],
['Wet milieubeheer','Vergunning pilot plant','Inpassing omgevingsvergunning'],
['Besluit stralingsbescherming','NORM in staalslakken','Tata Steel-staalslakken NORM-check'],
['Arbowet','Werknemersbescherming','Blootstelling werkplek'],
])
doc.add_paragraph()
H('2.4 ECHA - Rol en Structuur',2)
B('De European Chemicals Agency (ECHA) is gevestigd in Helsinki en beheert registraties, coördineert evaluatie, beheert de SVHC-kandidaatlijst, verwerkt autorisatieaanvragen en stelt restrictievoorstellen op. In Nederland handhaaft de Inspectie Leefomgeving en Transport (ILT).')
doc.add_page_break()

# 3
H('3. Kernbegrippen Verklaard')
H('3.1 Registratie',2)
B('Elke fabrikant of importeur van een stof >=1 ton/jaar moet deze registreren bij ECHA.')
T(['Tonnage-band','Dossiervereisten','Opmerking'],[
['1-10 ton/jaar','Technisch dossier','Minimale data-eisen'],
['10-100 ton/jaar','Technisch dossier + CSR','Uitgebreide toxicologie'],
['100-1.000 ton/jaar','Uitgebreid dossier + CSR','Volledige testset + CMR'],
['>=1.000 ton/jaar','Volledig dossier + CSR','Alt-voorstel indien >1.000 ton'],
])
doc.add_paragraph()
H('3.2 Evaluatie',2)
B('Dossier-evaluatie: ECHA controleert dossierkwaliteit (ca. 20% van dossiers). Stof-evaluatie: lidstaten selecteren stoffen op basis van bezorgdheid (PBT/vPvB).')
H('3.3 Autorisatie',2)
B('SVHC-stoffen op de kandidaatlijst. Stoffen op Annex XIV mogen na sunset date alleen met ECHA-autorisatie gebruikt worden. Phoenix Metals moet screenen op SVHC-status van geproduceerde stoffen.')
H('3.4 Restrictie',2)
B('Annex XVII bevat restricties bindend voor alle ondernemingen. Relevant voor zware metalen en vanadiumbevattende stromen.')
H('3.5 Communicatie in de Toeleveringsketen',2)
B('Downstream gebruikers ontvangen SDS van leveranciers. Extended SDS (eSDS) vereist bij >=1 ton/jaar met CSR. eSDS bevat blootstellingsscenarioos met veilige gebruiksomstandigheden.')
H('3.6 PPORD (Art. 9)',2)
B('Uitzondering op registratieplicht voor R&D. Max. 10 ton/jaar, max. 5 jaar (verlengbaar). Geen marktplaatsing. Notificatie bij ECHA voor drempelbereiking. Primair regime voor Phoenix Metals pilotfase.')
H('3.7 SR&D (Art. 3(23))',2)
B('Vrijstelling voor <1 ton/jaar. Geldt automatisch, geen ECHA-notificatie vereist.')
H('3.8 Intermediate Use',2)
B('Tussenproducten onder gecontroleerde omstandigheden: (1) niet-geisoleerd = geen registratie, (2) geisoleerd op locatie = verminderd, (3) geisoleerd vervoerd = verminderd.')
doc.add_page_break()

# 4
H('4. Stoffen in het Proces van Phoenix Metals')
H('4.1 Volledige Stoffeninventarisatie',2)
T(['Stof','CAS-nr.','Categorie','REACH-status','Opmerking'],[
['Natriumhydroxide','1310-73-2','Invoerchemie','Geregistreerd (leverancier)','30-50% oplossing'],
['Zwavelzuur','7664-93-9','Invoerchemie','Geregistreerd (leverancier)','>=96%'],
['SARU Ash','N.v.t.','Afvalstroom','Buiten REACH','Shell Pernis reststroom'],
['Staalslakken','N.v.t.','Afvalstroom','Buiten REACH','Tata Steel IJmuiden'],
['Ammoniummetavanadaat','7803-55-6','Tussenproduct','PPORD/SR&D','Uit SARU Ash'],
['Natriumvanadaat','13721-39-6','Tussenproduct','PPORD/SR&D','Uit SARU Ash'],
['Vanadylsulfaat (VOS)','27774-13-6','Product','PPORD > Registratie','Elektrolyt VRFB'],
['Vanadiumpentoxide','1314-62-1','Product','PPORD > Registratie','Katalysator'],
['Magnesiumhydroxide','1309-42-8','Bijproduct','PPORD/SR&D','Neutraleslag'],
['IJzeroxide Fe2O3','1309-37-1','Bijproduct','PPORD/SR&D','Pigment'],
['Calciumhydroxide','1305-62-0','Bijproduct','PPORD/SR&D','Kalkhydraten'],
['Gips CaSO4','10101-41-4','Bijproduct','PPORD/SR&D','Gipskristallisatie'],
])
doc.add_paragraph()
H('4.2 Drie Stroom-categorieen',2)
B('a) Invoerchemicalien',True)
B('NaOH en H2SO4 zijn geregistreerd door leverancier. Phoenix Metals is downstream gebruiker: SDS opslaan, blootstellingsscenarioos volgen, veilig gebruik documenteren.')
B('b) Grondstoffen / Afvalstromen',True)
B('SARU Ash en staalslakken zijn afvalstoffen. Buiten REACH zolang afvalstatus behouden. End-of-waste = REACH treedt in werking.')
B('c) Geproduceerde Producten',True)
B('Alle geproduceerde stoffen vallen onder registratieplicht bij >=1 ton/jaar, tenzij PPORD/SR&D van toepassing.')
H('4.3 De End-of-Waste Knik',2)
B('Volgens Kaderrichtlijn Afvalstoffen (Art. 6) stopt afvalstatus wanneer: (1) algemeen gebruik voor specifieke doeleinden, (2) markt bestaat, (3) technische eisen voldaan, (4) geen negatieve milieueffecten. Verkoop van vanadiumverbinding = end-of-wate drempel.')
doc.add_paragraph()
B('Procesflow - REACH-status per stroom:',True)
fp=doc.add_paragraph(); fp.alignment=WD_ALIGN_PARAGRAPH.LEFT
fr=fp.add_run(
'┌────────────────────────────────────────────────────────────────┐\n'
'│              REACH PROCESFLOW PHOENIX METALS                  │\n'
'├────────────────────────────────────────────────────────────────┤\n'
'│  AFVALSTROMEN (buiten REACH)                                  │\n'
'│  +-- SARU Ash --> NaOH leaching                               │\n'
'│  +-- Staalslakken --> H2SO4 leaching                          │\n'
'│              |                                                 │\n'
'│              v                                                 │\n'
'│  TUSSENPRODUCTEN (PPORD/SR&D)                                 │\n'
'│  +-- Ammoniummetavanadaat / Natriumvanadaat                   │\n'
'│              |                                                 │\n'
'│              v                                                 │\n'
'│  PRODUCTEN (PPORD --> FOAK-registratie)                       │\n'
'│  +-- VOS (VRFB) | V2O5 (Katalysator)                          │\n'
'│  +-- Mg(OH)2, Fe2O3, Ca(OH)2, Gips (Bijproducten)             │\n'
'│                                                                │\n'
'│  END-OF-WASTE: Afval -> Product -> REACH ACTIEF               │\n'
'│  INVOERCHEMIE: NaOH, H2SO4 -> Geregistreerd (leverancier)     │\n'
'└────────────────────────────────────────────────────────────────┘')
fr.font.name='Courier New'; fr.font.size=Pt(7)
doc.add_page_break()

# 5
H('5. De PPORD-Route voor de Pilotfase')
B('PPORD biedt Phoenix Metals een wettelijke uitzondering op REACH-registratie gedurende pilot- en demonstratiefase. Geen vrijstelling maar uitstel met strikte voorwaarden.')
H('5.1 Voorwaarden',2)
T(['Voorwaarde','Detail','Status PM'],[
['Doel','Uitsluitend R&D','✅ Pilot = R&D'],
['Volume','Max. 10 ton/jaar per stof','✅ ~7.200 kg/jaar'],
['Duur','Max. 5 jaar (verlengbaar)','Startdatum bepalen'],
['Markt','Niet op de markt','✅ Intern + R&D-partners'],
['Notificatie','ECHA voor drempel','In te dienen'],
['Downstream info','Info aan R&D-partners','Te regelen'],
])
doc.add_paragraph()
H('5.2 Indieningsprocedure ECHA',2)
B('1. Bepaal stoffen die 1 ton/jaar drempel naderen.\n2. Stel PPORD-dossier op per stof.\n3. Dien in via REACH-IT (echa.europa.eu).\n4. ECHA bevestigt en controleert.\n5. Ontvangst referentienummer.')
H('5.3 Wat als PPORD verloopt?',2)
B('Binnen 6 maanden volledige REACH-registratie indienen OF productie staken. Verlenging mogelijk als R&D-doelstelling geldig blijft (minimaal 3 maanden vóór afloop aanvragen).')
doc.add_page_break()

# 6
H('6. Het Vanadium Consortium - Meeliften')
H('6.1 Wat is het Consortium?',2)
B('Het Vanadium Consortium (vanadiumconsortium.com) is een samenwerkingsverband van vanadium-producenten die gezamenlijk REACH-registraties hebben ingediend. Deelname deelt toxicologisch onderzoek en registratiekosten.')
H('6.2 Geregistreerde Stoffen',2)
T(['Stof','CAS-nr.','Tonnage-band','Relevantie'],[
['Vanadiumpentoxide','1314-62-1','1-10 ton/jaar','Primair product'],
['Vanadylsulfaat','27774-13-6','1-10 ton/jaar','Elektrolyt'],
['Natriummetavanadaat','13718-26-8','1-10 ton/jaar','Intermediair'],
['Ammoniummetavanadaat','7803-55-6','1-10 ton/jaar','Intermediair'],
['Calciumvanadaat','20635-83-6','<1 ton/jaar','Bijproduct'],
['+ 14 aanvullende V-stoffen','Divers','Divers','Afhankelijk portfolio'],
])
doc.add_paragraph()
H('6.3 Letter of Access (LoA)',2)
B('Een LoA geeft Phoenix Metals het recht om consortium-registratiegegevens te gebruiken:')
L('Toegang tot volledig registratiedossier (toxicologie, ecotoxicologie, fysisch-chemisch)')
L('Recht om geregistreerde stoffen te produceren en op de markt te brengen')
L('Gebruik van blootstellingsscenarioos uit CSR')
L('Kosten: aansluitingsfee + jaarlijkse bijdrage (EUR 5.000-15.000/jaar)')
H('6.4 Kosten-batenanalyse',2)
T(['Optie','Kosten','Voordelen','Nadelen'],[
['Consortium LoA','EUR 5-15k/jaar','Snel, laag risico','Afhankelijk consortium'],
['Eigen registratie','EUR 120-290k','Volledige controle','Zeer hoog, dubbel werk'],
['Hybride','EUR 30-50k','Basis + eigen data','Complex'],
])
doc.add_paragraph()
H('6.5 Tijdlijn',2)
B('Q2 2026: Kennismaking consortium\nQ3 2026: LoA ondertekenen\nQ4 2026: Eigen supplementaire data verzamelen\nQ1 2027: FOAK-dossier voorbereiden')
doc.add_page_break()

# 7
H('7. FOAK-Voorbereiding - Naar Volledige Registratie')
H('7.1 Wat verandert er?',2)
B('PPORD/SR&D vervallen. Phoenix Metals wordt "fabrikant" in de zin van REACH. Volumes stijgen naar >=10 ton/jaar. Uitgebreide dossiers en CSR vereist.')
H('7.2 Chemical Safety Report (CSR)',2)
L('Identiteit en CLP-classificering')
L('Fysisch-chemische eigenschappen')
L('Toxicologische en ecotoxicologische data')
L('Blootstellingsbeoordeling (alle levenscyclusfasen)')
L('Blootstellingsscenarioos (veilige gebruiksomstandigheden)')
L('Risicokarakterisering')
H('7.3 Extended SDS (eSDS)',2)
B('Vereist bij >=1 ton/jaar met CSR. Bevat blootstellingsscenarioos. Primair communicatiemiddel downstream.')
H('7.4 SVHC-screening en Restrictie-check',2)
B('Screen elke stof op kandidaatlijst SVHC (~240 stoffen), Annex XIV (~60 stoffen), Annex XVII (~80 entries). Vanadiumverbindingen momenteel niet op kandidaatlijst, maar tweemaal per jaar update.')
H('7.5 Budgetindicatie',2)
T(['Post','Indicatie (EUR)','Opmerking'],[
['Consortium LoA (jaarlijks)','5.000-15.000','Per stof'],
['Eigen aanvullende data','20.000-50.000','Processpecifiek'],
['CSR opstelling','30.000-80.000','Consultancy + uren'],
['eSDS opstelling','10.000-25.000','Per product'],
['Registratiekosten ECHA','5.000-20.000','Tonnage-band'],
['Legal en compliance','15.000-50.000','Advies, audit'],
['Contingentie (20%)','17.000-48.000','Onvoorzien'],
['TOTAAL','120.000-290.000','FOAK 2027-2028'],
])
doc.add_paragraph()
H('7.6 Tijdlijn',2)
B('Q3 2027: Start FOAK-registratie\nQ4 2027: CSR + eSDS opstelling, SVHC-screening\nQ1 2028: Dossiers indienen ECHA\nQ2 2028: Evaluatie en goedkeuring\nQ3 2028: Full compliance FOAK-productie')
doc.add_page_break()

# 8
H('8. Jouw Verantwoordelijkheden als Manager')
H('8.1 SDS-beheer',2)
L('Verzamel alle SDS-en van leveranciers (NaOH, H2SO4)')
L('Controleer actualiteit (jaarlijks, bij wijziging direct)')
L('Zorg dat eSDS-en beschikbaar zijn voor alle producten die worden geleverd')
L('Archiveer oude versies (minimum 10 jaar bewaren)')
H('8.2 CLP-labeling',2)
L('Correcte GHS-etikettering op alle opslaglocaties')
L('Signalering: gevarenpictogrammen, H- en P-zinnen')
L('Controleer etiketten bij ontvangst nieuwe leveringen')
L('Zorg voor veiligheidsinformatie op werkplek (Wvb-plicht)')
H('8.3 Stoffeninventarisatie',2)
L('Bijhouden per kwartaal: welke stoffen, volumes, REACH-status')
L('Signaleer stoffen die de 1 ton/jaar drempel naderen')
L('Documenteer afvalstatus vs. productstatus per stroom')
H('8.4 Training en Bewustwording',2)
L('Jaarlijkse REACH-basistraining voor alle medewerkers')
L('Specifieke training voor operators (blootstelling, PBM)')
L('Informeer management over wijzigingen in wetgeving')
H('8.5 Documentatie en Audit-readiness',2)
L('PPORD-dossiers up-to-date houden')
L('Bewijs van downstream communicatie (SDS-ontvangstbevestigingen)')
L('SVHC-screening resultaten documenteren')
L('Audit-trail: alle beslissingen en acties traceerbaar')
H('8.6 Escalatie',2)
B('De HSEQ-manager moet direct ingrijpen bij:')
L('Volume-overschrijding van PPORD-limieten')
L('Stoffen die SVHC-status verkrijgen')
L('Klanten die eSDS eisen die niet beschikbaar zijn')
L('Leveranciers die geen actuele SDS leveren')
L('Plannen voor marktplaatsing van stoffen die nog niet geregistreerd zijn')
doc.add_page_break()

# 9
H('9. Checklist en Snelle Referentie')
H('9.1 Quick Scan Checklist (15 items)',2)
checklist = [
'1. PPORD-dossiers ingediend bij ECHA voor alle stoffen >=1 ton/jaar',
'2. SR&D-vrijstelling geverifieerd voor stoffen <1 ton/jaar',
'3. Afvalstatus SARU Ash en staalslakken gedocumenteerd',
'4. SDS-en van alle leveranciers verzameld en geactualiseerd',
'5. CLP-etikettering op alle opslaglocaties gecontroleerd',
'6. Stoffeninventarisatie bijgewerkt (laatste kwartaal)',
'7. Volume-tracking per stof (drempelbewaking)',
'8. End-of-waste analyse uitgevoerd per stroom',
'9. SVHC-screening uitgevoerd (kandidaatlijst gecheckt)',
'10. Annex XVII restrictie-check uitgevoerd',
'11. LoA-aanvraag Vanadium Consortium in voorbereiding',
'12. FOAK-registratietraject opgenomen in projectplanning',
'13. Team getraind op REACH-basis (laatste 12 maanden)',
'14. Audit-documentatie up-to-date en toegankelijk',
'15. Escalatieprocedure bekend bij alle relevante medewerkers',
]
for c in checklist: L(c)

doc.add_paragraph()
H('9.2 Belangrijke Deadlines',2)
T(['Deadline','Actie','Verantwoordelijke'],[
['Q2 2026','Consortium kennismaking + LoA voorwaarden','HSEQ Manager'],
['Q3 2026','PPORD-notificatie ECHA indienen','HSEQ Manager'],
['Q3 2026','LoA Vanadium Consortium ondertekenen','Management'],
['Q4 2026','Supplementaire data verzamelen','Technisch Team'],
['Q3 2027','Start FOAK-registratietraject','HSEQ + Management'],
['Q4 2027','CSR + eSDS opstelling','Consultancy + HSEQ'],
['Q1 2028','Registratiedossiers indienen ECHA','HSEQ Manager'],
['Q3 2028','Full compliance FOAK-productie','Alle'],
])
doc.add_paragraph()
H('9.3 Nuttige Links',2)
L('ECHA: https://echa.europa.eu')
L('REACH-IT (registratie portal): https://reach-it.echa.europa.eu')
L('SVHC Kandidaatlijst: https://echa.europa.eu/candidate-list-table')
L('Annex XIV: https://echa.europa.eu/authorisation-recommendation')
L('Annex XVII: https://echa.europa.eu/substances-restricted-under-reach')
L('Vanadium Consortium: https://vanadiumconsortium.com')
L('RIVM REACH: https://www.rivm.nl/reach-clp')
L('ILT (handhaving): https://www.ilent.nl/onderwerpen/reach')
doc.add_paragraph()
H('9.4 Contactpersonen Phoenix Metals',2)
T(['Functie','Naam','Verantwoordelijkheid'],[
['HSEQ Manager','[Naam]','REACH-compliance, SDS, PPORD, SVHC'],
['Technical Director','[Naam]','Procesdata, volume-tracking, FOAK-voor
