#!/usr/bin/env python3
"""Genereer REACH PGS15 Herbeoordeling DOCX voor Phoenix Metals B.V."""

from docx import Document
from docx.shared import Pt, Cm, Inches, 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
import os

BLUE = RGBColor(0x00, 0x33, 0x66)
ORANGE = RGBColor(0xFF, 0x66, 0x00)
BLACK = RGBColor(0x00, 0x00, 0x00)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)

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

def add_heading_styled(doc, text, level=1):
    h = doc.add_heading(text, level=level)
    for run in h.runs:
        run.font.color.rgb = BLUE
        run.font.name = 'Calibri'
    return h

def add_accent_line(doc):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(2)
    p.paragraph_format.space_after = Pt(6)
    pBdr = OxmlElement('w:pBdr')
    bottom = OxmlElement('w:bottom')
    bottom.set(qn('w:val'), 'single')
    bottom.set(qn('w:sz'), '12')
    bottom.set(qn('w:space'), '1')
    bottom.set(qn('w:color'), 'FF6600')
    pBdr.append(bottom)
    p._p.get_or_add_pPr().append(pBdr)

def add_body(doc, text, bold=False):
    p = doc.add_paragraph()
    run = p.add_run(text)
    run.font.name = 'Calibri'
    run.font.size = Pt(11)
    if bold:
        run.bold = True
    return p

def add_bullet(doc, text, level=0):
    p = doc.add_paragraph(style='List Bullet')
    p.clear()
    run = p.add_run(text)
    run.font.name = 'Calibri'
    run.font.size = Pt(11)
    if level > 0:
        p.paragraph_format.left_indent = Cm(1.5 * level)
    return p

def make_table(doc, headers, rows):
    table = doc.add_table(rows=1 + len(rows), cols=len(headers))
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    table.style = 'Table Grid'
    # Header row
    for i, h in enumerate(headers):
        cell = table.rows[0].cells[i]
        cell.text = ''
        p = cell.paragraphs[0]
        run = p.add_run(h)
        run.font.name = 'Calibri'
        run.font.size = Pt(10)
        run.font.color.rgb = WHITE
        run.bold = True
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        set_cell_shading(cell, '003366')
    # Data rows
    for r_idx, row in enumerate(rows):
        for c_idx, val in enumerate(row):
            cell = table.rows[r_idx + 1].cells[c_idx]
            cell.text = ''
            p = cell.paragraphs[0]
            run = p.add_run(str(val))
            run.font.name = 'Calibri'
            run.font.size = Pt(10)
    return table

doc = Document()

# Set default font
style = doc.styles['Normal']
font = style.font
font.name = 'Calibri'
font.size = Pt(11)

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

title = doc.add_paragraph()
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = title.add_run('PGS 15:2025 HERBEOORDELING')
run.font.size = Pt(28)
run.font.color.rgb = BLUE
run.font.name = 'Calibri'
run.bold = True

subtitle = doc.add_paragraph()
subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = subtitle.add_run('Opslag van Gevaarlijke Stoffen in Pakketvorm')
run.font.size = Pt(18)
run.font.color.rgb = ORANGE
run.font.name = 'Calibri'

doc.add_paragraph()

info = doc.add_paragraph()
info.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = info.add_run('Phoenix Metals B.V.\nPlantOne Rotterdam & Westerduinweg 3, IJmuiden')
run.font.size = Pt(14)
run.font.name = 'Calibri'
run.font.color.rgb = BLACK

doc.add_paragraph()

meta = doc.add_paragraph()
meta.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = meta.add_run('Versie 1.0 | 26 april 2026\nVertrouwelijk — Alleen intern gebruik')
run.font.size = Pt(11)
run.font.name = 'Calibri'
run.font.color.rgb = RGBColor(0x66, 0x66, 0x66)

doc.add_page_break()

# === INHOUDSOPGAVE ===
add_heading_styled(doc, 'Inhoudsopgave', 1)
add_accent_line(doc)
toc_items = [
    '1. Managementsamenvatting',
    '2. Kader: PGS 15:2025',
    '   2.1 Doel en Scope',
    '   2.2 Ondergrens en Toepasselijkheid',
    '   2.3 Definitie "Opslag in Pakketvorm"',
    '3. Stoffeninventarisatie Phoenix Metals',
    '   3.1 Overzicht Chemische Stoffen',
    '   3.2 PGS 15 Status per Stof',
    '   3.3 Totale Opslaghoeveelheid',
    '4. Bouwkundige Eisen',
    '   4.1 Brandwerende Scheiding',
    '   4.2 Vloeistofdichte Vloer',
    '   4.3 Ventilatie',
    '5. Veiligheidseisen',
    '   5.1 Blusmiddelen',
    '   5.2 Lekbakken en secundaire insluiting',
    '   5.3 Scheiding Onverenigbare Stoffen',
    '6. Organisatorische Eisen',
    '   6.1 OPS-Register',
    '   6.2 Instructie en Voorlichting',
    '   6.3 Periodieke Inspectie',
    '7. Vergunningpositie',
    '8. Actielijst met Prioriteiten',
    '9. Conclusie en Aanbevelingen',
    '10. Bronverwijzingen',
]
for item in toc_items:
    p = doc.add_paragraph(item)
    p.paragraph_format.space_after = Pt(2)
    for run in p.runs:
        run.font.name = 'Calibri'
        run.font.size = Pt(11)

doc.add_page_break()

# === 1. MANAGEMENTSAMENVATTING ===
add_heading_styled(doc, '1. Managementsamenvatting', 1)
add_accent_line(doc)

add_body(doc, 'Phoenix Metals B.V. exploiteert een proeffabriek (pilot plant) op de locatie PlantOne Rotterdam voor de hydrometallurgische extractie van vanadium uit SARU ash — een reststroom uit de olieraffinage. Daarnaast is een locatie in IJmuiden (Westerduinweg 3) in ontwikkeling voor opschaling. Voor de verwerking van deze grondstoffen worden diverse gevaarlijke stoffen gebruikt en opgeslagen, waaronder zwavelzuur, natriumhydroxide en vanadiumverbindingen.')

add_body(doc, 'De totale opgeslagen hoeveelheid ADR-geclassificeerde gevaarlijke stoffen bedraagt circa 405 kg, uitsluitend vallend onder ADR klasse 8 (bijtende stoffen). De ondergrens van PGS 15:2025 voor klasse 8 bedraagt 250 kg. Deze ondergrens wordt overschreden, waardoor PGS 15:2025 van toepassing is op de opslagfaciliteit van Phoenix Metals.')

add_body(doc, 'Kernbevindingen:', bold=True)
add_bullet(doc, 'PGS 15:2025 is VAN TOEPASSING — circa 405 kg ADR klasse 8 overschrijdt de ondergrens van 250 kg.')
add_bullet(doc, 'Het basisveiligheidsniveau volstaat: de opgeslagen stoffen zijn onbrandbaar en bijtend.')
add_bullet(doc, 'Kritieke eis: zwavelzuur (H₂SO₄) en natriumhydroxide (NaOH) mogen NIET in dezelfde opslagruimte worden opgeslagen vanwege het risico op een exotherme reactie.')
add_bullet(doc, 'Vanadiumpentoxide (V₂O₅) is een SVHC-stof (reprotoxisch categorie 1B) en vereist extra voorzorgsmaatregelen.')
add_bullet(doc, 'Vergunningpositie: meldingsplichtig (niet vergunningplichtig) bij een opgeslagen hoeveelheid < 10.000 kg.')

add_body(doc, 'Dit document bevat een volledige herbeoordeling van de PGS 15-compliance voor Phoenix Metals B.V., inclusief stoffeninventarisatie, bouwkundige en veiligheidseisen, organisatorische verplichtingen en een concrete actielijst met prioritering.')

doc.add_page_break()

# === 2. KADER: PGS 15:2025 ===
add_heading_styled(doc, '2. Kader: PGS 15:2025', 1)
add_accent_line(doc)

add_heading_styled(doc, '2.1 Doel en Scope', 2)
add_body(doc, 'PGS 15 (Publicatiereeks Gevaarlijke Stoffen, deel 15) is de Nederlandse richtlijn voor de veilige opslag van gevaarlijke stoffen in pakketvorm. De versie PGS 15:2025 is de meest recente herziening en vervangt eerdere versies. Het doel van PGS 15 is het bieden van een samenhangend stelsel van maatregelen om de risico\'s voor mens, milieu en eigendommen bij opslag van gevaarlijke stoffen tot een aanvaardbaar niveau te beperken.')

add_body(doc, 'De scope van PGS 15:2025 omvat:')
add_bullet(doc, 'Opslag van verpakte gevaarlijke stoffen (emmers, vaten, jerrycans, big bags, IBC\'s) in bedrijfsgebouwen en opslagplaatsen.')
add_bullet(doc, 'Stoffen ingedeeld volgens ADR (Accord européen relatif au transport international des marchandises Dangereuses par Route) en CLP (Classification, Labelling and Packaging).')
add_bullet(doc, 'Zowel standalone opslag als opslag in combinatie met andere activiteiten (bijv. productie).')
add_bullet(doc, 'Niet van toepassing op: opslag van gassen onder druk (PGS 15a), opslag in ondergrondse tanks (PGS 14), landbouwsilo\'s (PGS 13), en tankopslag (PGS 11/PGS 31).')

add_heading_styled(doc, '2.2 Ondergrens en Toepasselijkheid', 2)
add_body(doc, 'PGS 15:2025 hanteert ondergrenzen per ADR-gevarenklasse. De ondergrens voor ADR klasse 8 (bijtende stoffen) bedraagt 250 kg netto massa. Indien de totale opgeslagen hoeveelheid van stoffen in een specifieke gevarenklasse deze ondergrens overschrijdt, is PGS 15 van toepassing voor die gevarenklasse.')

add_body(doc, 'Voor Phoenix Metals is de relevantie als volgt vastgesteld:', bold=True)
add_bullet(doc, 'Totale opgeslagen hoeveelheid ADR klasse 8: circa 405 kg.')
add_bullet(doc, 'Ondergrens PGS 15 klasse 8: 250 kg.')
add_bullet(doc, 'Conclusie: PGS 15 is VAN TOEPASSING. De ondergrens wordt met circa 155 kg (62%) overschreden.')

add_body(doc, 'De hoogste vergunningsplichtige hoeveelheid voor ADR klasse 8 bedraagt 10.000 kg. Met een opslag van circa 405 kg valt Phoenix Metals ruim binnen de meldingsplichtige categorie (250–10.000 kg). Een omgevingsvergunning voor opslag van gevaarlijke stoffen is niet vereist; een melding bij het bevoegd gezag volstaat.')

add_heading_styled(doc, '2.3 Definitie "Opslag in Pakketvorm"', 2)
add_body(doc, 'Onder "opslag in pakketvorm" verstaat PGS 15:2025 het bewaren van gevaarlijke stoffen in verpakte vorm, inclusief vaten (205 L), jerrycans (20-60 L), emmers (5-30 L), IBC\'s (tot 1.500 L), en big bags (tot 1.500 kg). De stoffen bevinden zich in gesloten verpakkingen en worden niet overgepompt of overgeslagen tijdens opslag.')

add_body(doc, 'Voor Phoenix Metals geldt dat alle gevaarlijke stoffen in verpakte vorm worden aangeleverd en opgeslagen: zwavelzuur in jerrycans of vaten, natriumhydroxide in vaten of IBC\'s, en vaste stoffen (aluminiumsulfaat, V₂O₅) in zakken of emmers. De opslag voldoet daarmee aan de definitie van pakketvorm.')

doc.add_page_break()

# === 3. STOFFENINVENTARISATIE ===
add_heading_styled(doc, '3. Stoffeninventarisatie Phoenix Metals', 1)
add_accent_line(doc)

add_heading_styled(doc, '3.1 Overzicht Chemische Stoffen', 2)
add_body(doc, 'Phoenix Metals hanteert de volgende gevaarlijke stoffen in het hydrometallurgisch extractieproces. Per stof worden de relevante eigenschappen, classificaties en opslaghoeveelheden weergegeven.')

# Stoffen detail
add_body(doc, 'Zwavelzuur (H₂SO₄), 25-75% oplossing', bold=True)
add_bullet(doc, 'CAS-nummer: 7664-93-9')
add_bullet(doc, 'UN-nummer: 1830')
add_bullet(doc, 'ADR-klasse: 8 (bijtende stoffen)')
add_bullet(doc, 'Verpakkingsgroep: II')
add_bullet(doc, 'CLP-indeling: Skin Corr. 1A (H314), Eye Dam. 1 (H318)')
add_bullet(doc, 'Opslaghoeveelheid: circa 200 kg')
add_bullet(doc, 'Functie in proces: oplossen van vanadiumverbindingen, pH-registratie bij ionenwisseling')

add_body(doc, 'Natriumhydroxide (NaOH), 50% oplossing', bold=True)
add_bullet(doc, 'CAS-nummer: 1310-73-2')
add_bullet(doc, 'UN-nummer: 1824 (oplossing) / 1823 (vast)')
add_bullet(doc, 'ADR-klasse: 8 (bijtende stoffen)')
add_bullet(doc, 'Verpakkingsgroep: II')
add_bullet(doc, 'CLP-indeling: Skin Corr. 1A (H314), Eye Dam. 1 (H318)')
add_bullet(doc, 'Opslaghoeveelheid: circa 150 kg')
add_bullet(doc, 'Functie in proces: leaching (uitlogen) van SARU ash')

add_body(doc, 'Aluminiumsulfaat Al₂(SO₄)₃', bold=True)
add_bullet(doc, 'CAS-nummer: 10043-01-3')
add_bullet(doc, 'ADR-klasse: niet ADR-geclassificeerd')
add_bullet(doc, 'CLP-indeling: Eye Irrit. 2 (H319), niet-geclassificeerd als gevaarlijk voor transport')
add_bullet(doc, 'Opslaghoeveelheid: circa 50 kg')
add_bullet(doc, 'Functie in proces: hulpstof bij procesvoering (coagulatie/flockvorming)')

add_body(doc, 'Vanadiumpentoxide (V₂O₅)', bold=True)
add_bullet(doc, 'CAS-nummer: 1314-62-1')
add_bullet(doc, 'ADR-klasse: 6.1 (giftige stoffen), verpakkingsgroep III')
add_bullet(doc, 'CLP-indeling: Repr. 1B (H360Df — kan het ongeboren kind beschadigen, vermoedelijk schadelijk voor de vruchtbaarheid), Acute Tox. 3 (H331), Acute Tox. 4 (H302), Skin Sens. 1 (H317), Eye Dam. 1 (H318), STOT RE 1 (H372)')
add_bullet(doc, 'SVHC-status: opgenomen op de ECHA-kandidatenlijst sinds 2023 (H361fd in oorspronkelijke indeling)')
add_bullet(doc, 'Opslaghoeveelheid: circa 5 kg')
add_bullet(doc, 'Functie in proces: mogelijke grondstof / intermediair')

add_body(doc, 'Vanadium-elektrolyt (UVCB mengsel)', bold=True)
add_bullet(doc, 'Chemische aard: UVCB (Unknown or Variable Composition, complex reaction products or Biological materials) mengsel')
add_bullet(doc, 'Hoofdbestanddeel: vanadium(IV)sulfaat (VOSO₄) in waterige zwavelzuuroplossing')
add_bullet(doc, 'ADR-klasse: 8 (bijtend, op basis van H₂SO₄-gehalte)')
add_bullet(doc, 'Opslaghoeveelheid: circa 50 kg')
add_bullet(doc, 'Functie in proces: eindproduct / intermediair van de elektroreductie')

add_heading_styled(doc, '3.2 PGS 15 Status per Stof', 2)
add_body(doc, 'De volgende tabel geeft een overzicht van de PGS 15-status per stof, inclusief ADR-classificatie, opslaghoeveelheid en de vereiste maatregelen:')

headers = ['Stof', 'CAS-nr.', 'ADR-klasse', 'PG', 'Hoeveelheid', 'PGS 15 status', 'Maatregelen']
rows = [
    ['H₂SO₄ 25-75%', '7664-93-9', '8', 'II', '~200 kg', 'VAN TOEPASSING', 'Brandwerende opslag, lekbak, gescheiden van NaOH'],
    ['NaOH 50%', '1310-73-2', '8', 'II', '~150 kg', 'VAN TOEPASSING', 'Brandwerende opslag, lekbak, gescheiden van H₂SO₄'],
    ['Al₂(SO₄)₃', '10043-01-3', 'Geen', 'n.v.t.', '~50 kg', 'Niet van toepassing', 'Standaard opslag, droog bewaren'],
    ['V₂O₅', '1314-62-1', '6.1', 'III', '~5 kg', 'VAN TOEPASSING', 'SVHC-maatregelen, gesloten opslag, CMR-regime'],
    ['Vanadium-elektrolyt', 'UVCB', '8', 'II*', '~50 kg', 'VAN TOEPASSING', 'Corrosief, lekbak, gescheiden van NaOH'],
]
make_table(doc, headers, rows)
p = doc.add_paragraph()
run = p.add_run('* Verpakkingsgroep op basis van H₂SO₄-gehalte in mengsel.')
run.font.size = Pt(9)
run.font.name = 'Calibri'
run.font.italic = True

add_heading_styled(doc, '3.3 Totale Opslaghoeveelheid', 2)

headers2 = ['ADR-klasse', 'Stoffen', 'Totale hoeveelheid', 'PGS 15 ondergrens', 'Overschrijding']
rows2 = [
    ['Klasse 8 (bijtend)', 'H₂SO₄ + NaOH + V-elektrolyt', '~405 kg', '250 kg', 'JA (+62%)'],
    ['Klasse 6.1 (giftig)', 'V₂O₅', '~5 kg', '250 kg', 'NEE'],
    ['Niet ADR', 'Al₂(SO₄)₃', '~50 kg', 'n.v.t.', 'NEE'],
]
make_table(doc, headers2, rows2)

add_body(doc, 'Conclusie: De PGS 15-ondergrens voor ADR klasse 8 wordt overschreden. PGS 15:2025 is volledig van toepassing voor de opslag van bijtende stoffen. Voor ADR klasse 6.1 (V₂O₅) wordt de ondergrens niet overschreden; desalniettemin gelden de SVHC/CMR-maatregelen op grond van de Arbowetgeving.')

doc.add_page_break()

# === 4. BOUWKUNDIGE EISEN ===
add_heading_styled(doc, '4. Bouwkundige Eisen', 1)
add_accent_line(doc)

add_heading_styled(doc, '4.1 Brandwerende Scheiding', 2)
add_body(doc, 'PGS 15:2025 vereist dat opslagruimten voor gevaarlijke stoffen zijn gescheiden van aangrenzende ruimten door brandwerende constructies. Voor de opslag van ADR klasse 8 stoffen gelden de volgende eisen:')

add_bullet(doc, 'Scheidingsconstructie: De opslagruimte dient te zijn voorzien van brandwerende wanden en deuren met een weerstand tegen brand van minimaal 30 minuten (Wd30 of equivalente prestatie). Dit is het basisniveau voor bijtende, onbrandbare stoffen.')
add_bullet(doc, 'Buitendeuren: Deuren naar buiten toe dienen zelfsluitend en brandwerend te zijn uitgevoerd.')
add_bullet(doc, 'Doorvoeringen: Alle leidingdoorvoeringen en kabeldoorvoeringen dienen adequaat te worden afgedicht met goedgekeurde brandwerende afdichtingsmaterialen.')
add_bullet(doc, 'Constructieve weerstand: De vloer en dragende constructie dienen bestand te zijn tegen de chemische belasting van de opgeslagen stoffen.')

add_body(doc, 'Specifieke eis Phoenix Metals:', bold=True)
add_body(doc, 'Gezien de aanwezigheid van zwavelzuur en natriumhydroxide in dezelfde installatie (maar in gescheiden opslagen), is het essentieel dat de opslagruimten voor deze stoffen fysiek gescheiden zijn door minimaal een Wd30-scheidingsconstructie. Dit voorkomt dat bij een lekkage de stoffen met elkaar in contact komen, wat zou leiden tot een hevige exotherme reactie met vrijkomst van corrosieve dampen.')

add_heading_styled(doc, '4.2 Vloeistofdichte Vloer', 2)
add_body(doc, 'De opslagruimte dient te zijn voorzien van een vloeistofdichte vloer met vloeistofkerende opstand. De eisen zijn:')

add_bullet(doc, 'Vloeistofdichtheid: De vloer dient chemisch bestendig te zijn tegen de opgeslagen stoffen (bijtend, zuur en basisch). Een epoxy-coating of chemisch bestendige betegeling is vereist.')
add_bullet(doc, 'Vloeistofkerende opstand: De vloer dient te zijn voorzien van een opstand (drempel of verhoogde rand) van voldoende hoogte om de inhoud van de grootste verpakking (of 110% van het volume van de grootste verpakking) op te kunnen vangen.')
add_bullet(doc, 'Afvoer: Eventuele afvoeropeningen dienen te zijn uitgerust met een vloeistofkerende afsluiter die in gesloten stand staat. Afvoer van gelekte vloeistoffen dient te geschieden naar een geschikte opvangvoorziening of waterzuiveringsinstallatie — niet naar het riool.')

add_heading_styled(doc, '4.3 Ventilatie', 2)
add_body(doc, 'Voor opslag van bijtende stoffen (ADR klasse 8) vereist PGS 15:2025 adequate ventilatie om de concentratie van dampen en gassen onder de grenswaarden te houden:')

add_bullet(doc, 'Natuurlijke ventilatie: Minimaal 1/30e van de vloeroppervlakte als openingen (ventilatieroosters, te openen ramen), verdeeld over minimaal twee tegenover elkaar gelegen gevels voor doorstroom.')
add_bullet(doc, 'Mechanische ventilatie: Indien natuurlijke ventilatie onvoldoende is (bijv. bij grote hoeveelheden of sterke dampvormende stoffen), dient mechanische afzuiging te worden geïnstalleerd. Het afgezuchte volume dient minimaal 3 maal per uur te worden ververst.')
add_bullet(doc, 'Bijzondere aandacht: Bij opslag van zwavelzuur kan waterstofsulfide (H₂S) vrijkomen bij verontreiniging. De ventilatie dient zodanig te zijn ingericht dat H₂S-concentraties onder de arbeidshygienische grenswaarde blijven.')

doc.add_page_break()

# === 5. VEILIGHEIDSEISEN ===
add_heading_styled(doc, '5. Veiligheidseisen', 1)
add_accent_line(doc)

add_heading_styled(doc, '5.1 Blusmiddelen', 2)
add_body(doc, 'Hoewel de opgeslagen stoffen (ADR klasse 8) onbrandbaar zijn, vereist PGS 15:2025 de aanwezigheid van blusmiddelen ter bestrijding van brand in de omgeving of in verpakkingen:')

add_bullet(doc, 'Draagbare brandblussers: Minimaal twee poederblussers (ABC-poeder, minimaal 6 kg per stuk) in de directe nabijheid van de opslagruimte.')
add_bullet(doc, 'Bereikbaarheid: Blusmiddelen dienen bereikbaar te zijn vanuit de vluchtroute, op maximaal 15 meter loopafstand van de opslaglocatie.')
add_bullet(doc, 'Onderhoud: Jaarlijkse keuring en onderhoud door een gecertificeerd bedrijf conform NEN 2559.')
add_bullet(doc, 'Let op: Bij brand met betrokkenheid van zwavelzuur dient NIET met een waterstraal te worden geblust (risico op spatten en exotherme reactie). Gebruik fijne waternevel of schuim.')

add_heading_styled(doc, '5.2 Lekbakken en Secundaire Insluiting', 2)
add_body(doc, 'Alle vloeistoffen in de opslag dienen te zijn geplaatst in of op lekbakken ter voorkoming van milieuverontreiniging bij lekkage:')

add_bullet(doc, 'Capaciteit: De lekbak dient minimaal 110% van het volume van de grootste afzonderlijke verpakking te kunnen bevatten, of 10% van het totale volume van de opgeslagen vloeistoffen (indien groter).')
add_bullet(doc, 'Materiaal: Chemisch bestendig materiaal (polyethyleen HDPE of gecoat staal) dat bestand is tegen de agressieve eigenschappen van de opgeslagen stoffen.')
add_bullet(doc, 'Plaatsing: Lekbakken dienen op een vlakke, stabiele ondergrond te staan en moeten regelmatig (minimaal wekelijks) worden geïnspecteerd op lekkage en condensvorming.')
add_bullet(doc, 'Leging: Een legingsprocedure dient te zijn vastgelegd in het bedrijfsnoodplan, inclusief afvoer van gelekt materiaal als gevaarlijk afval (EURAL-code 06 02 04 voor NaOH, 06 01 04 voor H₂SO₄).')

add_heading_styled(doc, '5.3 Scheiding Onverenigbare Stoffen', 2)
add_body(doc, 'Dit is de meest kritieke veiligheidseis voor Phoenix Metals. PGS 15:2025 vereist dat onverenigbare stoffen fysiek gescheiden worden opgeslagen om ongewenste reacties te voorkomen.', bold=True)

add_body(doc, 'Onverenigbare combinatie — H₂SO₄ en NaOH:', bold=True)
add_body(doc, 'Zwavelzuur en natriumhydroxide reageren exotherm bij contact (neutralisatiereactie). De reactiewarmte kan leiden tot kokend reactiemengsel, spatten van corrosieve vloeistof, en vrijkomen van waterdamp en eventueel H₂S bij verontreiniging. De reactievergelijking is: H₂SO₄ + 2 NaOH → Na₂SO₄ + 2 H₂O + ΔH (sterk exotherm).')

add_body(doc, 'Scheidingseisen:', bold=True)
add_bullet(doc, 'H₂SO₄ en NaOH mogen NIET in dezelfde opslagruimte worden opgeslagen.')
add_bullet(doc, 'Minimale scheiding: fysieke scheiding door een brandwerende wand (Wd30) of opslag in afzonderlijke, gescheiden ruimten.')
add_bullet(doc, 'Indien opslag in dezelfde ruimt