#!/usr/bin/env python3
"""Genereer PGS15 Basishandleiding Phoenix Metals v4.0"""

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

OUTPUT = "/root/projects/jg/2026-pgs15-phoenix-metals/deliverables/docx/PGS15_Basishandleiding_Phoenix_Metals_v4.0.docx"

# Kleuren
DARK_BLUE = RGBColor(0x1B, 0x3A, 0x5C)
ACCENT_ORANGE = RGBColor(0xE8, 0x6C, 0x00)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_GRAY = RGBColor(0xF2, 0xF2, 0xF2)
BLACK = RGBColor(0, 0, 0)
RED = RGBColor(0xC0, 0x39, 0x2B)
GREEN = RGBColor(0x27, 0xAE, 0x60)

doc = Document()

# ===== STIJL INSTELLINGEN =====
style = doc.styles['Normal']
font = style.font
font.name = 'Calibri'
font.size = Pt(11)
font.color.rgb = BLACK
style.paragraph_format.space_after = Pt(6)
style.paragraph_format.line_spacing = 1.15

# H1 stijl
h1 = doc.styles['Heading 1']
h1.font.size = Pt(22)
h1.font.color.rgb = DARK_BLUE
h1.font.bold = True
h1.paragraph_format.space_before = Pt(24)
h1.paragraph_format.space_after = Pt(12)

# H2 stijl
h2 = doc.styles['Heading 2']
h2.font.size = Pt(16)
h2.font.color.rgb = DARK_BLUE
h2.font.bold = True
h2.paragraph_format.space_before = Pt(18)
h2.paragraph_format.space_after = Pt(8)

# H3 stijl
h3 = doc.styles['Heading 3']
h3.font.size = Pt(13)
h3.font.color.rgb = ACCENT_ORANGE
h3.font.bold = True
h3.paragraph_format.space_before = Pt(12)
h3.paragraph_format.space_after = Pt(6)

# Pagina marges
for section in doc.sections:
    section.top_margin = Cm(2.5)
    section.bottom_margin = Cm(2.5)
    section.left_margin = Cm(2.5)
    section.right_margin = Cm(2.5)

def add_shaded_box(doc, text, shade_color="E8F4FD"):
    """Voeg een gearceerde infobox toe."""
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(6)
    p.paragraph_format.space_after = Pt(6)
    pPr = p._p.get_or_add_pPr()
    shd = pPr.makeelement(qn('w:shd'), {
        qn('w:val'): 'clear',
        qn('w:color'): 'auto',
        qn('w:fill'): shade_color
    })
    pPr.append(shd)
    run = p.add_run(text)
    run.font.size = Pt(10)
    run.font.color.rgb = DARK_BLUE
    return p

def add_warning_box(doc, text):
    """Rode waarschuwingsbox."""
    return add_shaded_box(doc, "⚠️ " + text, "FDEDED")

def add_tip_box(doc, text):
    """Groene tip box."""
    return add_shaded_box(doc, "💡 " + text, "E8F8E8")

def set_cell_shading(cell, color):
    """Zet achtergrondkleur van een tabelcel."""
    shading = cell._element.get_or_add_tcPr()
    shd = shading.makeelement(qn('w:shd'), {
        qn('w:val'): 'clear',
        qn('w:color'): 'auto',
        qn('w:fill'): color
    })
    shading.append(shd)

def format_table(table):
    """Format tabel met Phoenix Metals stijl."""
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    for row_idx, row in enumerate(table.rows):
        for cell in row.cells:
            cell.paragraphs[0].paragraph_format.space_after = Pt(2)
            cell.paragraphs[0].paragraph_format.space_before = Pt(2)
            for paragraph in cell.paragraphs:
                for run in paragraph.runs:
                    run.font.size = Pt(10)
            if row_idx == 0:
                set_cell_shading(cell, "1B3A5C")
                for paragraph in cell.paragraphs:
                    for run in paragraph.runs:
                        run.font.color.rgb = WHITE
                        run.font.bold = True
            elif row_idx % 2 == 0:
                set_cell_shading(cell, "F2F2F2")


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

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("BASISVEILIGHEID")
run.font.size = Pt(36)
run.font.bold = True
run.font.color.rgb = DARK_BLUE

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("Opslag Gevaarlijke Stoffen")
run.font.size = Pt(28)
run.font.color.rgb = ACCENT_ORANGE

doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("Phoenix Metals B.V.")
run.font.size = Pt(20)
run.font.color.rgb = DARK_BLUE

doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("Versie 4.0 — April 2026")
run.font.size = Pt(14)
run.font.color.rgb = RGBColor(0x66, 0x66, 0x66)

doc.add_paragraph()
doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("Basishandleiding voor medewerkers")
run.font.size = Pt(14)
run.font.italic = True
run.font.color.rgb = RGBColor(0x66, 0x66, 0x66)

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("Niet-geautoriseerde verspreiding verboden")
run.font.size = Pt(10)
run.font.color.rgb = RGBColor(0x99, 0x99, 0x99)

doc.add_page_break()

# ========================================
# 2. INLEIDING
# ========================================
doc.add_heading("Inleiding", level=1)

doc.add_heading("Waarom deze handleiding?", level=2)
doc.add_paragraph(
    "Bij Phoenix Metals werken we met stoffen die gevaarlijk kunnen zijn als je niet weet "
    "hoe je ermee om moet gaan. Zwavelzuur, natriumhydroxide, SARU ash — het zijn stuk voor "
    "stof materialen die ons werk mogelijk maken, maar die ook serieus letsel kunnen veroorzaken "
    "als we niet voorzichtig zijn."
)
doc.add_paragraph(
    "Deze handleiding legt in gewone taal uit hoe we veilig omgaan met gevaarlijke stoffen. "
    "Geen juridische teksten, geen ingewikkeld jargon — gewoon duidelijk wat je moet weten om "
    "veilig te werken en weer thuis te komen bij je familie."
)

doc.add_heading("Voor wie is deze handleiding?", level=2)
p = doc.add_paragraph("Deze handleiding is bedoeld voor ")
run = p.add_run("alle medewerkers")
run.bold = True
p.add_run(" van Phoenix Metals die in de buurt komen van gevaarlijke stoffen. Dat betekent:")
doc.add_paragraph("Labmedewerkers en operators", style='List Bullet')
doc.add_paragraph("Technisch onderhoudspersoneel", style='List Bullet')
doc.add_paragraph("Magazijn- en logistiekmedewerkers", style='List Bullet')
doc.add_paragraph("Nieuwe medewerkers (als onderdeel van de inwerkinstructie)", style='List Bullet')
doc.add_paragraph("Stagiairs en tijdelijke krachten", style='List Bullet')

doc.add_heading("Hoe gebruik je deze handleiding?", level=2)
doc.add_paragraph(
    "Lees de handleiding één keer helemaal door. Daarna kun je hem gebruiken als naslagwerk. "
    "De hoofdstukken zijn zo geschreven dat je ze los kunt lezen. Twijfel je over iets? "
    "Vraag het altijd aan je leidinggevende of de HSE-verantwoordelijke."
)

add_tip_box(doc, "Bewaar deze handleiding op een bereikbare plek. Bij calamiteiten heb je hem snel nodig.")

doc.add_page_break()

# ========================================
# 3. WAT ZIJN GEVAARLIJKE STOFFEN?
# ========================================
doc.add_heading("Wat zijn gevaarlijke stoffen?", level=1)

doc.add_heading("Eenvoudig uitgelegd", level=2)
doc.add_paragraph(
    "Een gevaarlijke stof is elk materiaal dat schade kan veroorzaken aan mensen, milieu of "
    "materieel. Dat klinkt breed, en dat is het ook. Het gaat om stoffen die brandbaar, bijtend, "
    "giftig, explosief of schadelijk voor het milieu zijn."
)
doc.add_paragraph(
    "In Europa gebruiken we het CLP-systeem (Classification, Labelling and Packaging) om "
    "gevaarlijke stoffen in te delen. CLP gebruikt pictogrammen (plaatjes) die je overal ter "
    "wereld hetzelfde ziet. Zo weet je direct wat je aan het doen bent, in welke taal je ook spreekt."
)

doc.add_heading("GHS-pictogrammen — wat betekenen ze?", level=2)
doc.add_paragraph(
    "Op elke verpakking van een gevaarlijke stof zie je één of meer van deze pictogrammen. "
    "Leer ze herkennen — ze waarschuwen je voor de risico's."
)

# Pictogram tabel
table = doc.add_table(rows=10, cols=2)
table.style = 'Table Grid'
data = [
    ("Pictogram", "Betekenis"),
    ("💀 Doodskop", "Acuut giftig — kan dodelijk zijn bij inademing, inslikken of huidcontact"),
    ("🔥 Vlam", "Brandbaar — kan vlam vatten"),
    ("💥 Explosie", "Explosief — kan ontploffen"),
    ("⭕ Brandende cirkel", "Oxiderend — werkt brandversterkend"),
    ("🔴 Corrosie", "Bijtend — vernietigt huid, ogen en metalen"),
    ("⛽ Gasfles", "Gassen onder druk — kan exploderen bij verwarming"),
    ("☠️ Uitroepteken + mens", "Giftig bij langdurige blootstelling — schadelijk voor organen"),
    ("🌊 Vis + boom", "Milieugevaarlijk — giftig voor waterorganismen"),
    ("❗ Uitroepteken", "Irriterend — huidirritatie, oogirritatie, allergische reacties"),
]
for i, (col1, col2) in enumerate(data):
    table.rows[i].cells[0].text = col1
    table.rows[i].cells[1].text = col2
format_table(table)

doc.add_paragraph()
add_shaded_box(doc, "Belangrijk: Bij Phoenix Metals zie je vooral het corrosie-pictogram (bijtend) op zwavelzuur en natriumhydroxide, en het milieugevaarpictogram op vanadiumverbindingen.")

doc.add_heading("Welke stoffen heeft Phoenix Metals?", level=2)
doc.add_paragraph("Phoenix Metals hanteert de volgende gevaarlijke stoffen:")

table = doc.add_table(rows=6, cols=4)
table.style = 'Table Grid'
data = [
    ("Stof", "Gevaartype", "Hoeveelheid", "Locatie"),
    ("Zwavelzuur (H₂SO₄)", "Bijtend (klasse 8)", "30-100 L", "Rack lab"),
    ("Natriumhydroxide (NaOH)", "Bijtend (klasse 8)", "100 L", "Rack lab"),
    ("SARU ash", "Giftig + radioactief", "≤60 kg", "Verwerkbereik"),
    ("Aluminiumsulfaat", "Irriterend", "5 kg", "Rack lab"),
    ("Calciumoxide", "Bijtend / irriterend", "10 kg", "Rack lab"),
]
for i, row_data in enumerate(data):
    for j, val in enumerate(row_data):
        table.rows[i].cells[j].text = val
format_table(table)

doc.add_page_break()

# ========================================
# 4. DE STOFFEN BIJ PHOENIX METALS
# ========================================
doc.add_heading("De stoffen bij Phoenix Metals", level=1)
doc.add_paragraph(
    "Hieronder beschrijven we elke stof in detail: wat het is, wat de gevaren zijn, "
    "en hoe je er veilig mee werkt."
)

# --- Zwavelzuur ---
doc.add_heading("Zwavelzuur (H₂SO₄)", level=2)
doc.add_heading("Wat is het en wat doet het?", level=3)
doc.add_paragraph(
    "Zwavelzuur is een van de meest gebruikte industriële chemicaliën ter wereld. Bij Phoenix Metals "
    "gebruiken we het in drie concentraties: 25%, 50% en 75%. Het is een heldere, kleurloze tot "
    "lichtgele vloeistof. Hoe hoger de concentratie, hoe gevaarlijker."
)

doc.add_heading("Gevaren", level=3)
doc.add_paragraph(" Ernststeken brandwonden bij huid- of oogcontact", style='List Bullet')
doc.add_paragraph("Corrosief voor metalen — kan lekken veroorzaken", style='List Bullet')
doc.add_paragraph("Exotherme reactie met water — nooit water op zuur gieten!", style='List Bullet')
doc.add_paragraph("Reactie met NaOH is sterk exotherm — altijd gescheiden opslaan", style='List Bullet')

table = doc.add_table(rows=3, cols=2)
table.style = 'Table Grid'
data = [
    ("Eigenschap", "Waarde"),
    ("ADR-klasse", "8 (bijtend), UN 1830 (>51%) / UN 2796 (≤51%)"),
    ("H-zinnen", "H290 (corrosief voor metalen), H314 (ernstige huidverbrandingen en oogletsel)"),
]
for i, (c1, c2) in enumerate(data):
    table.rows[i].cells[0].text = c1
    table.rows[i].cells[1].text = c2
format_table(table)

doc.add_heading("Veilig omgaan met zwavelzuur", level=3)
doc.add_paragraph("Draag altijd: zuurbestendige handschoenen (PVC/nitril), veiligheidsbril, beschermende kleding", style='List Bullet')
doc.add_paragraph("Gebruik het flow cabinet bij het overgieten of mengen", style='List Bullet')
doc.add_paragraph("Nooit water op zuur gieten — altijd zuur aan water toevoegen", style='List Bullet')
doc.add_paragraph("Bij huidcontact: onmiddellijk spoelen met water (minimaal 15 minuten)", style='List Bullet')

add_warning_box(doc, "Zwavelzuur + water = hitte-ontwikkeling. Giet NOOIT water bij zwavelzuur. Voeg altijd langzaam het zuur toe aan water.")

# --- Natriumhydroxide ---
doc.add_heading("Natriumhydroxide (NaOH)", level=2)
doc.add_heading("Wat is het en wat doet het?", level=3)
doc.add_paragraph(
    "Natriumhydroxide (ook wel 'loog' of 'caustic soda' genoemd) is een sterke base. "
    "Bij Phoenix Metals gebruiken we een 50% oplossing. Het is een heldere, kleurloze vloeistof "
    "die sterk bijtend is. Bij temperaturen onder 12°C kan de oplossing kristalliseren."
)

doc.add_heading("Gevaren", level=3)
doc.add_paragraph("Ernstige brandwonden bij huid- of oogcontact", style='List Bullet')
doc.add_paragraph("Corrosief voor metalen", style='List Bullet')
doc.add_paragraph("Kristallisatie bij <12°C — vorstvrij opslaan!", style='List Bullet')
doc.add_paragraph("Reactie met zuren is sterk exotherm — altijd gescheiden opslaan", style='List Bullet')

table = doc.add_table(rows=3, cols=2)
table.style = 'Table Grid'
data = [
    ("Eigenschap", "Waarde"),
    ("ADR-klasse", "8 (bijtend), UN 1824, Packing Group II"),
    ("H-zinnen", "H290, H314"),
]
for i, (c1, c2) in enumerate(data):
    table.rows[i].cells[0].text = c1
    table.rows[i].cells[1].text = c2
format_table(table)

doc.add_heading("Veilig omgaan met natriumhydroxide", level=3)
doc.add_paragraph("Draag altijd: bijtwerende handschoenen (nitril/neopreen), veiligheidsbril, beschermkleding", style='List Bullet')
doc.add_paragraph("Bewaar boven 15°C (kristallisatierisico)", style='List Bullet')
doc.add_paragraph("Nooit mengen met zuren — altijd gescheiden opslaan en gebruiken", style='List Bullet')
doc.add_paragraph("Bij huidcontact: onmiddellijk spoelen met veel water (15+ minuten)", style='List Bullet')

add_warning_box(doc, "NaOH + H₂SO₄ = heftige exotherme reactie. Deze stoffen MOETEN gescheiden opgeslagen worden. Zie hoofdstuk 5.")

# --- SARU ash ---
doc.add_heading("SARU ash", level=2)
doc.add_heading("Wat is het en wat doet het?", level=3)
doc.add_paragraph(
    "SARU ash (Soot Ash Removal Unit) is een reststroom uit de ruwe-olieraffinage. Het is een "
    "poederachtig mengsel dat voornamelijk bestaat uit natriummetavanadaat, trinatriumorthovanadaat "
    "en nikkeloxide. Phoenix Metals verwerkt dit materiaal om vanadium terug te winnen."
)
doc.add_paragraph(
    "Bijzonder aan SARU ash is dat het van nature voorkomende radionucliden bevat (U-238-reeks "
    "en Th-232-reeks). De activiteit is laag — bij de kleine hoeveelheden die wij verwerken "
    "(maximaal 60 kg totaal, 3,5 kg per batch) is het intrinsiek veilig volgens de "
    "stralingsbeschermingswetgeving."
)

doc.add_heading("Gevaren", level=3)
doc.add_paragraph("Vanadiumverbindingen: giftig bij inademing en inslikken", style='List Bullet')
doc.add_paragraph("Nikkeloxide: irriterend, potentieel carcinogeen bij langdurige inademing", style='List Bullet')
doc.add_paragraph("Radioactieve stoffen (laag niveau): U-238, Ra-226, Pb-210, Ra-228, Th-228", style='List Bullet')
doc.add_paragraph("Stofvorming bij hanteren — inademing voorkomen", style='List Bullet')

doc.add_heading("Veilig omgaan met SARU ash", level=3)
doc.add_paragraph("Draag altijd: FFP3-masker (stof), handschoenen, veiligheidsbril", style='List Bullet')
doc.add_paragraph("Werk bij voorkeur in het flow cabinet of onder afzuiging", style='List Bullet')
doc.add_paragraph("Maximaal 3,5 kg per batch — geen uitzonderingen", style='List Bullet')
doc.add_paragraph("Vermijd stofvorming — werk voorzichtig en niet te hardhandig", style='List Bullet')
doc.add_paragraph("Na afloop: handen wassen, kleding controleren op besmetting", style='List Bullet')

add_shaded_box(doc, "📋 Stralingsbescherming: Hoewel de activiteit laag is, gelden specifieke regels. Notificatieplicht bij afvoer. Raadpleeg altijd de stralingsdeskundige (SBD Van Driel BV) bij twijfel.", "FFF3CD")

# --- Aluminiumsulfaat ---
doc.add_heading("Aluminiumsulfaat", level=2)
doc.add_heading("Wat is het en wat doet het?", level=3)
doc.add_paragraph(
    "Aluminiumsulfaat is een wit, kristallijn poeder. Het wordt gebruikt als coagulant in "
    "waterzuiveringsprocessen en bij Phoenix Metals in het proces. Het is een minder gevaarlijke "
    "stof dan zwavelzuur of NaOH, maar verdient toch aandacht."
)

doc.add_heading("Gevaren", level=3)
doc.add_paragraph("Irriterend voor ogen en huid", style='List Bullet')
doc.add_paragraph("Irriterend bij inademing (stof)", style='List Bullet')
doc.add_paragraph("Mild irriterend voor de luchtwegen", style='List Bullet')

doc.add_heading("Veilig omgaan", level=3)
doc.add_paragraph("Draag: handschoenen, veiligheidsbril, stofmasker bij stofvorming", style='List Bullet')
doc.add_paragraph("Stofvorming voorkomen bij het afmeten", style='List Bullet')
doc.add_paragraph("Bij oogcontact: spoelen met water (15 minuten)", style='List Bullet')

# --- Calciumoxide ---
doc.add_heading("Calciumoxide (CaO)", level=2)
doc.add_heading("Wat is het en wat doet het?", level=3)
doc.add_paragraph(
    "Calciumoxide (ook wel 'ongebluste kalk' of 'quicklime') is een wit tot grijs poeder. "
    "Het reageert heftig met water onder ontwikkeling van hitte. Bij Phoenix Metals wordt "
    "het gebruikt in het proces."
)

doc.add_heading("Gevaren", level=3)
doc.add_paragraph("Bijtend — veroorzaakt huid- en oogirritatie", style='List Bullet')
doc.add_paragraph("Reageert exotherm met water — hitte-ontwikkeling", style='List Bullet')
doc.add_paragraph("Irriterend bij inademing (stof)", style='List Bullet')

doc.add_heading("Veilig omgaan", level=3)
doc.add_paragraph("Draag: handschoenen, veiligheidsbril, stofmasker", style='List Bullet')
doc.add_paragraph("Droog opslaan — uit de buurt van water en vocht", style='List Bullet')
doc.add_paragraph("Nooit met natte handen aanpakken", style='List Bullet')

doc.add_page_break()

# ========================================
# 5. OPSLAGREGELS
# ========================================
doc.add_heading("Opslagregels", level=1)

doc.add_heading("Waar worden stoffen opgeslagen?", level=2)
doc.add_paragraph("Alle gevaarlijke stoffen bij Phoenix Metals zijn opgeslagen in het rack lab, tenzij anders aangegeven. Het rack lab is voorzien van:")

doc.add_paragraph("Lekbakken / opvangbakken onder elke verpakking", style='List Bullet')
doc.add_paragraph("Ventilatie (voldoende luchtverversing)", style='List Bullet')
doc.add_paragraph("Nooddouche en oogdouche in de nabijheid", style='List Bullet')
doc.add_paragraph("Brandblusmiddelen geschikt voor chemische branden", style='List Bullet')
doc.add_paragraph("Correcte etikettering op alle verpakkingen en opslaglocaties", style='List Bullet')

doc.add_heading("Basisregels voor opslag", level=2)

table = doc.add_table(rows=7, cols=2)
table.style = 'Table Grid'
data = [
    ("Regel", "Uitleg"),
    ("Gescheiden houden", "Zuren en basen NOOIT in hetzelfde vak. Oxiderende stoffen apart van brandbare stoffen."),
    ("Lekbeker / opvangbak", "Elke verpakking staat in een lekbak die de volledige inhoud kan opvangen."),
    ("Ventilatie", "Zorg altijd voor voldoende ventilatie. Geen opslag in afgesloten, onventilatie ruimtes."),
    ("Etikettering", "Elke verpakking heeft een leesbaar etiket. Geen etiket = niet gebruiken. Melden!"),
    ("Beperkte voorraad", "Alleen wat je nodig hebt op voorraad. Grote voorraden horen in het magazijn."),
    ("Toegangsbeperking", "Alleen geautoriseerd personeel komt in de opslagruimte."),
]
for i, (c1, c2) in enumerate(data):
    table.rows[i].cells[0].text = c1
    table.rows[i].cells[1].text = c2
format_table(table)

doc.add_heading("Scheidingsregels — welke stoffen MOETEN gescheiden?", level=2)

add_warning_box(doc, "CRUCIALE REGEL: Zuren (H₂SO₄) en basen (NaOH) MOETEN strikt gescheiden opgeslagen worden. Menging veroorzaakt een heftige exotherme reactie met spatten en hitte-ontwikkeling.")

doc.add_paragraph()
table = doc.add_table(rows=4, cols=3)
table.style = 'Table Grid'
data = [
    ("Stof A", "Stof B", "Waarom gescheiden?"),
    ("H₂SO₄ (zuren)", "NaOH (basen)", "Exotherme reactie — spatten, hitte, brandgevaar"),
    ("H₂SO₄", "Metaalpoeders", "Waterstofontwikkeling — explosiegevaar"),
    ("Oxiderende stoffen", "Brandbare stoffen", "Brandversterking — brandgevaar"),
]
for i, row_data in enumerate(data):
    for j, val in enumerate(row_data):
        table.rows[i].cells[j].text = val
format_table(table)

doc.add_heading("Etiketten en borden begrijpen", level=2)
doc.add_paragraph("Op elke verpakking en op de opslaglocatie vind je etiketten en borden. Wat betekenen ze?")
doc.add_paragraph("Oranje ADR-bord met getal: geeft de ADR-gevarenklasse aan (bijv. '8' = bijtend)", style='List Bullet')
doc.add_paragraph("GHS-pictogram (diamant vorm): geeft het type gevaar aan (zie hoofdstuk 3)", style='List Bullet')
doc.add_paragraph("H-zinnen: beschrijven de specifieke gevaren (bijv. H314 = veroorzaakt ernstige huidverbrandingen)", style='List Bullet')
doc.add_paragraph("P-zinnen: geven veiligheidsmaatregelen (bijv. P280 = beschermende handschoenen dragen)", style='List Bullet')

add_tip_box(doc, "Kun je een etiket niet lezen of ontbreekt het? Gebruik de stof NIET. Meld het direct aan je leidinggevende.")

doc.add_page_break()

# ========================================
# 6. VEILIG WERKEN
# ========================================
doc.add_heading("Veilig werken", level=1)

doc.add_heading("Persoonlijke beschermingsmiddelen (PBM's)", level=2)
doc.add_paragraph(
    "Persoonlijke beschermingsmiddelen zijn je laatste verdedigingslinie. Ze beschermen je als "
    "andere maatregelen falen. Draag ze altijd — geen uitzonderingen."
)

doc.add_heading("Wat dragen bij welke taak?", level=2)

table = doc.add_table(rows=7, cols=4)
table.style = 'Table Grid'
data = [
    ("Werkzaamheid", "Handen", "Ogen/Gezicht", "Overig"),
    ("H₂SO₄ hanteren", "PVC/nitril zuurbestendig", "Veiligheidsbril + gezichtsmasker", "Zuurbestendig pak, laarzen"),
    ("NaOH hanteren", "Nitril/neopreen bijtwerend", "Veiligheidsbril + gezichtsmasker", "Beschermkleding, laarzen"),
    ("SARU ash hanteren", "Handschoenen (nitril)", "Veiligheidsbril", "FFP3-masker, overall"),
    ("Aluminiumsulfaat", "Handschoenen", "Veiligheidsbril", "Stofmasker bij stofvorming"),
    ("Calciumoxide", "Handschoenen", "Veiligheidsbril", "Stofmasker, droge kleding"),
    ("Labwerk (algemeen)", "Nitril handschoenen", "Veiligheidsbril", "Labjas"),
]
for i, row_data in enumerate(data):
    for j, val in enumerate(row_data):
        table.rows[i].cells[j].text = val
format_table(table)

doc.add_heading("Flow cabinet gebruik", level=2)
doc.add_paragraph("Het flow cabinet (afzuigkap) gebruik je bij:")
doc.add_paragraph("Overgieten en mengen van vloeistoffen", style='List Bullet')
doc.add_paragraph("Hanteren van SARU ash en andere poeders", style='List Bullet')
doc.add_paragraph("Alle handelingen waarbij dampen of stof vrij kunnen komen", style='List Bullet')

add_shaded_box(doc, "Controleer voor gebruik of de afzuiging werkt (controleer indicatie ordeel). Werkt het niet? Niet gebruiken — meld het direct.", "FFF3CD")

doc.add_heading("Verboden acties", level=2)
doc.add_paragraph("De volgende acties zijn TEN ALLEN TIJDE VERBODEN in de buurt van gevaarlijke stoffen:")

table = doc.add_table(rows=8, cols=2)
table.style = 'Table Grid'
data = [
    ("Verboden actie", "Waarom"),
    ("Eten, drinken of roken", "Inname van gevaarlijke stoffen via mond of longen"),
    ("Lenzen dragen bij chemisch werk", "Chemicaliën kunnen onder lenzen komen en oog beschadigen"),
    ("Natte handen, chemische stoffen aanraken", "Sommige stoffen reageren met vocht"),
    ("Zelf mengen zonder toestemming", "Onverwachte reacties kunnen optreden"),
    ("Werkzaamheden alleen (isa-werken)", "Bij calamiteiten is directe hulp nodig"),
    ("Stoffen overhevelen naar ongelabeld fles", "Verwarring en verkeerd gebruik risico"),
    ("PBM's achterwege laten 'voor even'", "Ook een korte blootstelling kan ernstig letsel veroorzaken"),
]
for i, (c1, c2) in enumerate(data):
    table.rows[i].cells[0].text = c1
    table.rows[i].cells[1].text = c2
format_table(table)

doc.add_page_break()

# ========================================
# 7. WAT TE DOEN BIJ CALAMITEITEN
# ========================================
doc.add_heading("Wat te doen bij calamiteiten", level=1)

doc.add_paragraph(
    "Bij een calamiteit geldt één regel boven alles: "
)
p = doc.add_paragraph()
run = p.add_run("DENK AAN JE EIGEN VEILIGHEID EERST.")
run.bold = True
run.font.size = Pt(14)
run.font.color.rgb = RED
p.alignment = WD_ALIGN_PARAGRAPH.CENTER

doc.add_paragraph(
    "Je kunt niemand helpen als je zelf gewond raakt. Probeer nooit een held te zijn — "
    "alarmeer, bescherm jezelf en wacht op professionele hulp."
)

doc.add_heading("Lekkage — wat nu?", level=2)
table = doc.add_table(rows=6, cols=2)
table.style = 'Table Grid'
data = [
    ("Stap", "Actie"),
    ("1", "Verwijder jezelf en anderen uit de directe omgeving"),
    ("2", "Draag PBM's als je in de buurt moet komen"),
    ("3", "Voorkom dat de stof in riolering of bodem terechtkomt"),
    ("4", "Absorbeer met geschikt materiaal (absorptiekorrels, doeken)"),
    ("5", "Ventileer de ruimte en alarmeer je leidinggevende"),
]
for i, (c1, c2) in enumerate(data):
    table.rows[i].cells[0].text = c1
    table.rows[i].cells[1].text = c2
format_table(table)

doc.add_heading("Brand — wat nu?", level=2)
table = doc.add_table(rows=5, cols=2)
table.style = 'Table Grid'
data = [
    ("Stap", "Actie"),
    ("1", "Alarmeer iedereen in de omgeving — schreeuw 'BRAND!'"),
    ("2", "Bel 112 als de brand groter is dan een prullenbak"),
    ("3", "Gebruik NOOIT water bij een chemische brand"),
    ("4", "Blus alleen met CO₂-blusser of poederblusser — als je dit veilig kunt doen"),
]
for i, (c1, c2) in enumerate(data):
    table.rows[i].cells[0].text = c1
    table.rows[i].cells[1].text = c2
format_table(table)

add_warning_box(doc, "NOOIT water op een chemische brand — zeker niet bij zuren of reactieve stoffen. Gebruik uitsluitend CO₂ of poeder.")

doc.add_heading("Blootstelling — wat nu?", level=2)

doc.add_heading("Huidcontact", level=3)
doc.add_paragraph("Onmiddellijk spoelen met veel water — minimaal 15 minuten", style='List Bullet')
doc.add_paragraph("Beschermende kleding uittrekken (voorzichtig, niet wrijven)", style='List Bullet')
doc.add_paragraph("Nooddouche gebruiken als beschikbaar", style='List Bullet')
doc.add_paragraph("Medische hulp inschakelen bij ernstige blootstelling", style='List Bullet')

doc.add_heading("Oogcontact", level=3)
doc.add_paragraph("Onmiddellijk spoelen met water — minimaal 15 minuten", style='List Bullet')
doc.add_paragraph("Oogdouche gebruiken", style='List Bullet')
doc.add_paragraph("Oogleden openhouden tijdens spoelen", style='List Bullet')
doc.add_paragraph("ALTIJD naar de dokter na oogcontact met chemicaliën", style='List Bullet')

doc.add_heading("Inademing", level=3)
doc.add_paragraph("Direct naar de frisse lucht", style='List Bullet')
doc.add_paragraph("Niet blijven in de ruimte met dampen", style='List Bullet')
doc.add_paragraph("Bij aanhoudende klachten: 112 bellen", style='List Bullet')

doc.add_heading("Inslikking", level=3)
doc.add_paragraph("NIET laten braken — bel direct 112", style='List Bullet')
doc.add_paragraph("Mond spoelen met water (niet inslikken)", style='List Bullet')

doc.add_heading("Bel altijd bij calamiteiten", level=2)

table = doc.add_table(rows=4, cols=2)
table.style = 'Table Grid'
data = [
    ("Situe", "Nummer"),
    ("Levensbedreigende situatie", "112"),
    ("Bedrijfsarts / arbodienst", "[Invullen door Phoenix Metals]"),
    ("HSE-verantwoordelijke", "[Invullen door Phoenix Metals]"),
]
for i, (c1, c2) in enumerate(data):
    table.rows[i].cells[0].text = c1
    table.rows[i].cells[1].text = c2
format_table(table)

add_shaded_box(doc, "📋 Vul hier de actuele contactgegevens in van je HSE-verantwoordelijke, bedrijfsarts en direct leidinggevende. Controleer jaarlijks of de nummers nog kloppen.", "FFF3CD")

doc.add_page_break()

# ========================================
# 8. CHECKLIST VOOR DAGELIJKS GEBRUIK
# ========================================
doc.add_heading("Checklist voor dagelijks gebruik", level=1)

doc.add_paragraph(
    "Gebruik deze checklist aan het begin van elke werkdag of shift. "
    "Vink aan wat gecontroleerd is. Als iets niet in orde is: niet werken en direct melden."
)

doc.add_paragraph()

table = doc.add_table(rows=11, cols=3)
table.style = 'Table Grid'
# Header
headers = ["✓", "Controlepunt", "Opmerking"]
for j, h in enumerate(headers):
    table.rows[0].cells[j].text = h

checks = [
    ("☐", "Alle verpakkingen hebben een leesbaar etiket", ""),
    ("☐", "Geen zichtbare lekkage of schade aan verpakkingen", ""),
    ("☐", "Lekbakken / opvangbakken zijn schoon en intact", ""),
    ("☐", "Zuren en basen zijn gescheiden opgeslagen", ""),
    ("☐", "Nooddouche en oogdouche zijn bereikbaar en werken", ""),
    ("☐", "Ventilatie werkt (controleer indicatie)", ""),
    ("☐", "PBM's zijn beschikbaar en in goede staat", ""),
    ("☐", "Flow cabinet / afzuiging functioneert correct", ""),
    ("☐", "Brandblusmiddelen zijn bereikbaar en niet verlopen", ""),
    ("☐", "Werkruimte is schoon en vrij van losse spullen", ""),
]

for i, (check, desc, note) in enumerate(checks):
    table.rows[i+1].cells[0].text = check
    table.rows[i+1].cells[1].text = desc
    table.rows[i+1].cells[2].text = note

format_table(table)
# Kolombreedtes aanpassen
for row in table.rows:
    row.cells[0].width = Cm(1.5)
    row.cells[1].width = Cm(11)
    row.cells[2].width = Cm(4)

doc.add_paragraph()
doc.add_paragraph()
p = doc.add_paragraph("Naam medewerker: _______________________________")
p = doc.add_paragraph("Datum: _________________    Handtekening: _______________________________")

doc.add_page_break()

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

doc.add_paragraph("Deze handleiding is gebaseerd op de volgende bronnen:", style='Normal')
doc.add_paragraph()

refs = [
    "PGS 15:2025 — Opslag van verpakte gevaarlijke stoffen, versie 1.0 (januari 2025). Publicatiereeks Gevaarlijke Stoffen.",
    "Safety Data Sheet — Zwavelzuur 25-75% (Sulfuric acid, Carl Roth).",
    "Safety Data Sheet — Natriumhydroxide 50% (Sodium hydroxide 50%, Carl Roth).",
    "Factsheet SARU Ash — LM van Langen, v1.0, november 2024.",
    "Registration Chemicals Master — Phoenix Metals, versie 2.1.0 (29 november 2024).",
    "PBM Matrix Phoenix Metals — draft 1.",
    "Procedure PE-240-01 — Aanvraag, beoordeling en goedkeuring van gevaarlijke stoffen, V1.",
    "Besluit basisveiligheidsnormen stralingsbescherming (art. 2.2, 3.17, 3.20, 4.2, 7.1).",
    "ADR (Accord européen relatif au transport international des marchandises Dangereuses par Route) — 2025 editie.",
    "CLP-verordening (EC) 1272/2008 — Classification, Labelling and Packaging of substances and mixtures.",
]

for i, ref in enumerate(refs, 1):
    p = doc.add_paragraph()
    run = p.add_run(f"{i}. ")
    run.bold = True
    p.add_run(ref)
    p.paragraph_format.space_after = Pt(4)

doc.add_paragraph()
doc.add_paragraph()

# Colofon
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("— EINDE DOCUMENT —")
run.font.size = Pt(12)
run.font.color.rgb = RGBColor(0x99, 0x99, 0x99)

doc.add_paragraph()
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("PGS15 Basishandleiding Phoenix Metals v4.0 — April 2026")
run.font.size = Pt(10)
run.font.color.rgb = RGBColor(0x99, 0x99, 0x99)

# Opslaan
os.makedirs(os.path.dirname(OUTPUT), exist_ok=True)
doc.save(OUTPUT)
print(f"✅ Bestand opgeslagen: {OUTPUT}")
