#!/usr/bin/env python3
"""
Create PowerPoint presentation: "Data Saves Lives"
The Story of Safety Testing: How We Decided to Do Better

Structure:
- Opening: The stakes and the pattern
- The Foundation: SAE J211 / ISO 6487
- 10 Test Modes with full narratives
- Closing: The work continues

Theme: "We as a people decided we needed to do better"

Each test mode includes:
- Origin story (the tragedy/gap that created the test)
- Technical details (purpose, channels, specs)
- How DTS helps
- Photo placeholders with actual asset references where available
"""

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE

# Create presentation with widescreen dimensions
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)

# Color scheme
DARK_BLUE = RGBColor(0, 51, 102)
ACCENT_BLUE = RGBColor(0, 112, 192)
ACCENT_RED = RGBColor(192, 0, 0)
ACCENT_GREEN = RGBColor(0, 128, 0)
DARK_GRAY = RGBColor(64, 64, 64)
LIGHT_GRAY = RGBColor(200, 200, 200)
WHITE = RGBColor(255, 255, 255)
LIGHT_BLUE_BG = RGBColor(240, 248, 255)


def add_title_slide(title, subtitle=""):
    """Add a title slide"""
    slide_layout = prs.slide_layouts[6]
    slide = prs.slides.add_slide(slide_layout)

    title_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(2.5), Inches(12.333), Inches(1.5)
    )
    tf = title_box.text_frame
    p = tf.paragraphs[0]
    p.text = title
    p.font.size = Pt(54)
    p.font.bold = True
    p.font.color.rgb = DARK_BLUE
    p.alignment = PP_ALIGN.CENTER

    if subtitle:
        sub_box = slide.shapes.add_textbox(
            Inches(0.5), Inches(4.2), Inches(12.333), Inches(1.5)
        )
        tf = sub_box.text_frame
        tf.word_wrap = True
        p = tf.paragraphs[0]
        p.text = subtitle
        p.font.size = Pt(28)
        p.font.color.rgb = DARK_GRAY
        p.alignment = PP_ALIGN.CENTER

    return slide


def add_section_slide(title, subtitle=""):
    """Add a section divider slide"""
    slide_layout = prs.slide_layouts[6]
    slide = prs.slides.add_slide(slide_layout)

    shape = slide.shapes.add_shape(
        MSO_SHAPE.RECTANGLE, Inches(0), Inches(2.8), Inches(13.333), Inches(2)
    )
    shape.fill.solid()
    shape.fill.fore_color.rgb = DARK_BLUE
    shape.line.fill.background()

    title_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(3), Inches(12.333), Inches(1.2)
    )
    tf = title_box.text_frame
    p = tf.paragraphs[0]
    p.text = title
    p.font.size = Pt(44)
    p.font.bold = True
    p.font.color.rgb = WHITE
    p.alignment = PP_ALIGN.CENTER

    if subtitle:
        sub_box = slide.shapes.add_textbox(
            Inches(0.5), Inches(5), Inches(12.333), Inches(0.8)
        )
        tf = sub_box.text_frame
        p = tf.paragraphs[0]
        p.text = subtitle
        p.font.size = Pt(24)
        p.font.italic = True
        p.font.color.rgb = DARK_GRAY
        p.alignment = PP_ALIGN.CENTER

    return slide


def add_content_slide(title, bullets, footnote="", photo_note=""):
    """Add a content slide with title and bullets"""
    slide_layout = prs.slide_layouts[6]
    slide = prs.slides.add_slide(slide_layout)

    # Title
    title_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(0.3), Inches(12.333), Inches(1)
    )
    tf = title_box.text_frame
    p = tf.paragraphs[0]
    p.text = title
    p.font.size = Pt(36)
    p.font.bold = True
    p.font.color.rgb = DARK_BLUE

    # Underline
    line = slide.shapes.add_shape(
        MSO_SHAPE.RECTANGLE, Inches(0.5), Inches(1.1), Inches(12.333), Inches(0.03)
    )
    line.fill.solid()
    line.fill.fore_color.rgb = ACCENT_BLUE
    line.line.fill.background()

    # Bullets
    body_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(1.4), Inches(12.333), Inches(5.0)
    )
    tf = body_box.text_frame
    tf.word_wrap = True

    for i, bullet in enumerate(bullets):
        if i == 0:
            p = tf.paragraphs[0]
        else:
            p = tf.add_paragraph()

        if bullet.startswith("  -"):
            p.text = "    " + bullet.strip().lstrip("-").strip()
            p.font.size = Pt(20)
            p.level = 1
        elif bullet.startswith(">>"):
            # Theme statement - emphasized
            p.text = bullet.replace(">>", "").strip()
            p.font.size = Pt(22)
            p.font.bold = True
            p.font.italic = True
            p.font.color.rgb = ACCENT_BLUE
        else:
            p.text = bullet.strip()
            p.font.size = Pt(22)

        if not bullet.startswith(">>"):
            p.font.color.rgb = DARK_GRAY
        p.space_after = Pt(8)

    # Photo note
    if photo_note:
        photo_box = slide.shapes.add_textbox(
            Inches(0.5), Inches(6.5), Inches(12.333), Inches(0.4)
        )
        tf = photo_box.text_frame
        p = tf.paragraphs[0]
        p.text = f"[PHOTO: {photo_note}]"
        p.font.size = Pt(12)
        p.font.italic = True
        p.font.color.rgb = ACCENT_BLUE

    # Footnote
    if footnote:
        foot_box = slide.shapes.add_textbox(
            Inches(0.5), Inches(6.9), Inches(12.333), Inches(0.4)
        )
        tf = foot_box.text_frame
        p = tf.paragraphs[0]
        p.text = footnote
        p.font.size = Pt(14)
        p.font.italic = True
        p.font.color.rgb = LIGHT_GRAY

    return slide


def add_quote_slide(quote, attribution=""):
    """Add a quote slide"""
    slide_layout = prs.slide_layouts[6]
    slide = prs.slides.add_slide(slide_layout)

    quote_box = slide.shapes.add_textbox(
        Inches(1), Inches(2), Inches(11.333), Inches(3)
    )
    tf = quote_box.text_frame
    tf.word_wrap = True
    p = tf.paragraphs[0]
    p.text = f'"{quote}"'
    p.font.size = Pt(32)
    p.font.italic = True
    p.font.color.rgb = DARK_BLUE
    p.alignment = PP_ALIGN.CENTER

    if attribution:
        attr_box = slide.shapes.add_textbox(
            Inches(1), Inches(5.2), Inches(11.333), Inches(0.8)
        )
        tf = attr_box.text_frame
        p = tf.paragraphs[0]
        p.text = f"-- {attribution}"
        p.font.size = Pt(24)
        p.font.color.rgb = DARK_GRAY
        p.alignment = PP_ALIGN.CENTER

    return slide


def add_stat_slide(big_number, description, context=""):
    """Add a big statistic slide"""
    slide_layout = prs.slide_layouts[6]
    slide = prs.slides.add_slide(slide_layout)

    num_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(1.5), Inches(12.333), Inches(2.5)
    )
    tf = num_box.text_frame
    p = tf.paragraphs[0]
    p.text = big_number
    p.font.size = Pt(120)
    p.font.bold = True
    p.font.color.rgb = ACCENT_BLUE
    p.alignment = PP_ALIGN.CENTER

    desc_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(4), Inches(12.333), Inches(1)
    )
    tf = desc_box.text_frame
    p = tf.paragraphs[0]
    p.text = description
    p.font.size = Pt(36)
    p.font.color.rgb = DARK_BLUE
    p.alignment = PP_ALIGN.CENTER

    if context:
        ctx_box = slide.shapes.add_textbox(
            Inches(1), Inches(5.2), Inches(11.333), Inches(1.5)
        )
        tf = ctx_box.text_frame
        tf.word_wrap = True
        p = tf.paragraphs[0]
        p.text = context
        p.font.size = Pt(20)
        p.font.color.rgb = DARK_GRAY
        p.alignment = PP_ALIGN.CENTER

    return slide


def add_two_column_slide(title, left_title, left_bullets, right_title, right_bullets):
    """Add a two-column comparison slide"""
    slide_layout = prs.slide_layouts[6]
    slide = prs.slides.add_slide(slide_layout)

    title_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(0.3), Inches(12.333), Inches(1)
    )
    tf = title_box.text_frame
    p = tf.paragraphs[0]
    p.text = title
    p.font.size = Pt(36)
    p.font.bold = True
    p.font.color.rgb = DARK_BLUE

    line = slide.shapes.add_shape(
        MSO_SHAPE.RECTANGLE, Inches(0.5), Inches(1.1), Inches(12.333), Inches(0.03)
    )
    line.fill.solid()
    line.fill.fore_color.rgb = ACCENT_BLUE
    line.line.fill.background()

    # Left column
    left_title_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(1.4), Inches(5.9), Inches(0.6)
    )
    tf = left_title_box.text_frame
    p = tf.paragraphs[0]
    p.text = left_title
    p.font.size = Pt(24)
    p.font.bold = True
    p.font.color.rgb = ACCENT_BLUE

    left_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(2), Inches(5.9), Inches(4.5)
    )
    tf = left_box.text_frame
    tf.word_wrap = True
    for i, bullet in enumerate(left_bullets):
        if i == 0:
            p = tf.paragraphs[0]
        else:
            p = tf.add_paragraph()
        p.text = bullet
        p.font.size = Pt(18)
        p.font.color.rgb = DARK_GRAY
        p.space_after = Pt(6)

    # Right column
    right_title_box = slide.shapes.add_textbox(
        Inches(6.9), Inches(1.4), Inches(5.9), Inches(0.6)
    )
    tf = right_title_box.text_frame
    p = tf.paragraphs[0]
    p.text = right_title
    p.font.size = Pt(24)
    p.font.bold = True
    p.font.color.rgb = ACCENT_BLUE

    right_box = slide.shapes.add_textbox(
        Inches(6.9), Inches(2), Inches(5.9), Inches(4.5)
    )
    tf = right_box.text_frame
    tf.word_wrap = True
    for i, bullet in enumerate(right_bullets):
        if i == 0:
            p = tf.paragraphs[0]
        else:
            p = tf.add_paragraph()
        p.text = bullet
        p.font.size = Pt(18)
        p.font.color.rgb = DARK_GRAY
        p.space_after = Pt(6)

    return slide


def add_timeline_slide(title, events):
    """Add a timeline slide"""
    slide_layout = prs.slide_layouts[6]
    slide = prs.slides.add_slide(slide_layout)

    title_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(0.3), Inches(12.333), Inches(1)
    )
    tf = title_box.text_frame
    p = tf.paragraphs[0]
    p.text = title
    p.font.size = Pt(36)
    p.font.bold = True
    p.font.color.rgb = DARK_BLUE

    y_pos = 1.3
    for year, event in events:
        year_box = slide.shapes.add_textbox(
            Inches(0.5), Inches(y_pos), Inches(1.5), Inches(0.5)
        )
        tf = year_box.text_frame
        p = tf.paragraphs[0]
        p.text = str(year)
        p.font.size = Pt(20)
        p.font.bold = True
        p.font.color.rgb = ACCENT_BLUE

        event_box = slide.shapes.add_textbox(
            Inches(2.2), Inches(y_pos), Inches(10.5), Inches(0.5)
        )
        tf = event_box.text_frame
        p = tf.paragraphs[0]
        p.text = event
        p.font.size = Pt(18)
        p.font.color.rgb = DARK_GRAY

        y_pos += 0.55

    return slide


def add_video_slide(title, video_description, video_url="", duration=""):
    """Add a video placeholder slide"""
    slide_layout = prs.slide_layouts[6]
    slide = prs.slides.add_slide(slide_layout)

    # Title
    title_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(0.3), Inches(12.333), Inches(1)
    )
    tf = title_box.text_frame
    p = tf.paragraphs[0]
    p.text = title
    p.font.size = Pt(36)
    p.font.bold = True
    p.font.color.rgb = DARK_BLUE

    # Video placeholder box
    video_shape = slide.shapes.add_shape(
        MSO_SHAPE.RECTANGLE, Inches(1.5), Inches(1.5), Inches(10.333), Inches(4.5)
    )
    video_shape.fill.solid()
    video_shape.fill.fore_color.rgb = RGBColor(30, 30, 30)
    video_shape.line.color.rgb = ACCENT_BLUE

    # Play button indicator
    play_text = slide.shapes.add_textbox(
        Inches(1.5), Inches(3), Inches(10.333), Inches(1.5)
    )
    tf = play_text.text_frame
    p = tf.paragraphs[0]
    p.text = "VIDEO"
    p.font.size = Pt(48)
    p.font.bold = True
    p.font.color.rgb = WHITE
    p.alignment = PP_ALIGN.CENTER

    # Description below
    desc_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(6.2), Inches(12.333), Inches(1)
    )
    tf = desc_box.text_frame
    tf.word_wrap = True
    p = tf.paragraphs[0]
    desc_text = video_description
    if duration:
        desc_text += f" ({duration})"
    if video_url:
        desc_text += f"\n{video_url}"
    p.text = desc_text
    p.font.size = Pt(16)
    p.font.color.rgb = DARK_GRAY
    p.alignment = PP_ALIGN.CENTER

    return slide


def add_dts_connection_slide(title, content_bullets, products_mentioned=""):
    """Add a DTS connection slide with highlighted box"""
    slide_layout = prs.slide_layouts[6]
    slide = prs.slides.add_slide(slide_layout)

    # Title
    title_box = slide.shapes.add_textbox(
        Inches(0.5), Inches(0.3), Inches(12.333), Inches(1)
    )
    tf = title_box.text_frame
    p = tf.paragraphs[0]
    p.text = title
    p.font.size = Pt(36)
    p.font.bold = True
    p.font.color.rgb = DARK_BLUE

    # Underline
    line = slide.shapes.add_shape(
        MSO_SHAPE.RECTANGLE, Inches(0.5), Inches(1.1), Inches(12.333), Inches(0.03)
    )
    line.fill.solid()
    line.fill.fore_color.rgb = ACCENT_BLUE
    line.line.fill.background()

    # DTS highlighted box
    dts_shape = slide.shapes.add_shape(
        MSO_SHAPE.ROUNDED_RECTANGLE, Inches(0.5), Inches(1.4), Inches(12.333), Inches(5)
    )
    dts_shape.fill.solid()
    dts_shape.fill.fore_color.rgb = LIGHT_BLUE_BG
    dts_shape.line.color.rgb = ACCENT_BLUE

    # Content
    content_box = slide.shapes.add_textbox(
        Inches(0.7), Inches(1.6), Inches(12), Inches(4.5)
    )
    tf = content_box.text_frame
    tf.word_wrap = True

    for i, bullet in enumerate(content_bullets):
        if i == 0:
            p = tf.paragraphs[0]
        else:
            p = tf.add_paragraph()
        p.text = bullet
        p.font.size = Pt(20)
        p.font.color.rgb = DARK_GRAY
        p.space_after = Pt(10)

    # Products mentioned footer
    if products_mentioned:
        prod_box = slide.shapes.add_textbox(
            Inches(0.5), Inches(6.6), Inches(12.333), Inches(0.5)
        )
        tf = prod_box.text_frame
        p = tf.paragraphs[0]
        p.text = f"DTS Products: {products_mentioned}"
        p.font.size = Pt(14)
        p.font.bold = True
        p.font.color.rgb = ACCENT_BLUE

    return slide


# ============================================================
# BUILD THE PRESENTATION
# ============================================================

# ============================================================
# OPENING
# ============================================================

add_title_slide(
    "Data Saves Lives", "The Story of Safety Testing:\nHow We Decided to Do Better"
)

add_stat_slide(
    "77%",
    "Reduction in traffic fatality rate since 1970",
    "1970: 4.74 deaths per 100M miles | Today: 1.10 deaths per 100M miles\nIf we still had 1970 rates: 153,000 deaths per year instead of 36,000",
)

add_content_slide(
    "The Pattern: Every Test Has a Story",
    [
        "Every crash test exists because people were dying in a specific way",
        "And at some point, we decided that was unacceptable.",
        "",
        "The cycle repeats throughout history:",
        "  - TRAGEDY: People die in ways we don't understand",
        "  - DECISION: We decide we need to do better",
        "  - DATA: Testing reveals the mechanism of injury",
        "  - STANDARD: A test is created to measure the problem",
        "  - ENGINEERING: Manufacturers design solutions",
        "  - LIVES SAVED: That specific death mode decreases",
        "",
        ">> This presentation traces that cycle across 10 test modes.",
    ],
)

add_quote_slide(
    "We chose to stop accepting preventable deaths as inevitable.",
    "The philosophy shift that created modern safety testing",
)

# ============================================================
# SAE J211 / ISO 6487 - THE FOUNDATION
# ============================================================

add_section_slide(
    "The Foundation: SAE J211",
    "Before we could save lives, we had to agree on how to measure them",
)

add_content_slide(
    "The Problem: Data Without Standards",
    [
        "In the early days of crash testing, every lab was an island:",
        "  - Different equipment, different filters, different sampling rates",
        "  - Data from GM couldn't be compared to data from Ford",
        "  - The same crash could produce wildly different numbers",
        "",
        "Raw accelerometer data is full of noise:",
        "  - Structural resonance from the vehicle",
        "  - Electrical interference",
        "  - High-frequency artifacts that don't represent human injury",
        "",
        "Without standards, crash test data was essentially meaningless.",
        "",
        ">> We decided we needed a common language.",
    ],
)

add_content_slide(
    "The Solution: Channel Frequency Classes (CFC)",
    [
        "SAE J211 (1971) and ISO 6487 created the common language:",
        "",
        "CFC 1000 (1000 Hz): Head acceleration",
        "  - Brain injuries happen fast - need high bandwidth",
        "",
        "CFC 600 (600 Hz): Chest and pelvis acceleration",
        "  - Torso responds slower than head",
        "",
        "CFC 180 (180 Hz): Structural measurements",
        "  - Vehicle deformation, barrier loads",
        "",
        "4th-order Butterworth low-pass filter specification",
        "  - Removes noise without distorting the injury signal",
        "  - Zero phase shift (bi-directional filtering)",
    ],
    "SAE J211-1 Rev. 2014 | ISO 6487:2015 - technically equivalent standards",
)

add_content_slide(
    "Technical Specifications (For Reference)",
    [
        "Sampling Requirements:",
        "  - CFC 1000: 10,000+ Hz sample rate",
        "  - CFC 600: 6,000+ Hz sample rate",
        "  - Rule of thumb: Sample at 8-10x the CFC frequency",
        "",
        "Transducer Requirements:",
        "  - Amplitude linearity: +/-1% of full scale",
        "  - Cross-axis sensitivity: <5% of primary axis",
        "  - Zero shift post-impact: <2% of full scale",
        "",
        "Channel Naming Convention:",
        "  - 11HEAD0000ACXC = Driver head X-acceleration, CFC 1000",
        "  - Ensures global consistency in data identification",
    ],
)

add_dts_connection_slide(
    "How DTS Helps: J211 Compliance",
    [
        "Every DTS data acquisition system is built to SAE J211 / ISO 6487 specs:",
        "",
        "Hardware anti-aliasing filters prevent signal contamination",
        "",
        "Software implements exact Butterworth filter specifications",
        "",
        "Calibration traceable to J211 requirements",
        "",
        "Sample rates exceed requirements: up to 100 kHz per channel",
        "",
        "Data from any DTS system is comparable to data from any other",
        "DTS system worldwide - enabling global safety research collaboration",
    ],
    "SLICE6, SLICE NANO, SLICE MICRO, TDAS G5",
)

# ============================================================
# TEST MODE 1: FMVSS 208 / AIRBAGS
# ============================================================

add_section_slide(
    "Test Mode 1: FMVSS 208",
    "The 28-year war: Industry fought airbags from 1970 until mandatory in 1998",
)

add_content_slide(
    "Before 1968: The Dark Age",
    [
        "No federal safety requirements existed for occupant protection",
        "",
        "Seatbelts were optional accessories - rarely ordered",
        "",
        "Steering columns were rigid metal shafts pointed at driver's chest",
        "  - By 1964: over 1 MILLION cumulative steering column deaths",
        "",
        "Dashboards were solid steel with chrome protrusions",
        "",
        "Industry position: 'Crashes are caused by bad drivers, not bad cars'",
        "",
        ">> At some point, we decided that 50,000 deaths per year was not acceptable.",
    ],
    photo_note="assets/1957_buick_dashboard.jpg, assets/1957_chevy_styling.jpg",
)

add_timeline_slide(
    "The Airbag Wars: 28 Years of Fighting",
    [
        ("1968", "FMVSS 208 takes effect - requires seatbelt anchorages only"),
        ("1970", "NHTSA proposes airbag requirement"),
        ("1972", "GM offers airbags on Oldsmobiles - few buyers"),
        ("1977", "Joan Claybrook (NHTSA) pushes airbag mandate"),
        ("1981", "Reagan administration RESCINDS airbag mandate"),
        ("1983", "Supreme Court rules rescission was arbitrary and capricious"),
        (
            "1984",
            "Compromise: 'automatic restraint' required (airbag OR automatic belt)",
        ),
        ("1990", "First airbag fatality - a child in front seat"),
        ("1997", "53 deaths from airbag deployment - peak year"),
        ("1998", "FINALLY: Frontal airbags mandatory - 28 years after first proposal"),
    ],
)

add_content_slide(
    "The Depowering Crisis: When Airbags Killed",
    [
        "Early airbags were designed for one scenario:",
        "  - Unbelted adult male",
        "  - Maximum deployment force in every crash",
        "",
        "Problem: What about children? Small adults sitting close?",
        "",
        "1990: First airbag fatality - a child",
        "1996-1997: 53 deaths from airbag deployment",
        "  - Victims: mostly children in front seats, small women",
        "",
        "The data showed the problem. Better data gave us the fix:",
        "  - 'Depowered' airbags with lower inflation force",
        "  - Weight sensors detect occupant size",
        "  - Suppression systems for small occupants",
        "",
        ">> We decided that protecting one group couldn't mean killing another.",
    ],
)

add_content_slide(
    "FMVSS 208: Technical Specifications",
    [
        "Test Configuration:",
        "  - 30 mph full frontal barrier (compliance)",
        "  - 35 mph full frontal barrier (NCAP consumer rating)",
        "",
        "Dummies:",
        "  - Hybrid III 50th percentile male (driver)",
        "  - Hybrid III 5th percentile female (passenger)",
        "  - Total: ~94 channels (47 per dummy)",
        "",
        "Key Injury Criteria:",
        "  - HIC15 < 700 (head injury)",
        "  - Chest acceleration 3ms < 60g",
        "  - Chest deflection < 63mm (50th male)",
        "  - Femur load < 10 kN",
        "  - Nij < 1.0 (neck injury)",
    ],
    photo_note="assets/iihs_frontal_crash_test.jpg, assets/hybrid_iii_family.jpg",
)

add_dts_connection_slide(
    "How DTS Helps: FMVSS 208",
    [
        "Head: Triaxial accelerometer (CFC 1000)",
        "  - Measures peak deceleration for HIC calculation",
        "",
        "Chest: Accelerometer + deflection potentiometer (CFC 600)",
        "  - Chest compression indicates rib/organ injury risk",
        "",
        "Neck: 6-axis load cell",
        "  - Forces and moments for Nij calculation",
        "",
        "Femur: Uniaxial load cells (both legs)",
        "  - Dashboard/knee bolster loading",
        "",
        "Every channel matters - one sensor failure = $500K repeat test cost",
    ],
    "SLICE6, 6DX PRO-A (6 degrees of freedom), TDAS G5",
)

add_video_slide(
    "Video: IIHS 1959 vs. 2009 Crash Test",
    "IIHS 50th anniversary demonstration: 1959 Chevy Bel Air vs. 2009 Chevy Malibu at 40 mph. The most powerful demonstration of 50 years of safety progress.",
    "https://www.youtube.com/watch?v=joMK1WZjP7g",
    "1:43",
)

# ============================================================
# TEST MODE 2: IIHS SMALL OVERLAP
# ============================================================

add_section_slide(
    "Test Mode 2: IIHS Small Overlap",
    "When BMW, Mercedes, and Audi all failed: The test that humiliated luxury cars",
)

add_content_slide(
    "The Gap: What Existing Tests Missed",
    [
        "By 2012, vehicles performed well in:",
        "  - NHTSA NCAP full frontal (100% overlap)",
        "  - IIHS moderate overlap (40% overlap)",
        "",
        "But IIHS researchers noticed something in real-world crash data:",
        "  - Fatal frontal crashes still occurring in 'safe' cars",
        "  - Many involved narrow overlap - trees, poles, corners of other vehicles",
        "",
        "The problem with 25% overlap:",
        "  - Main structural frame rails are NOT engaged",
        "  - Forces go through wheel and suspension into footwell",
        "  - Wheel can be pushed into occupant compartment",
        "",
        ">> We decided that 'good enough' on existing tests wasn't good enough.",
    ],
)

add_two_column_slide(
    "Small Overlap Test (2012): The Shock",
    "What Failed",
    [
        "BMW 3 Series - MARGINAL",
        "Mercedes C-Class - MARGINAL",
        "Audi A4 - MARGINAL",
        "Lexus IS - MARGINAL",
        "Lexus ES - MARGINAL",
        "Lincoln MKZ - POOR",
        "Buick Regal - POOR",
        "Volkswagen CC - POOR",
        "",
        "These were LUXURY vehicles that",
        "earned top marks in every other test.",
    ],
    "What It Revealed",
    [
        "A-pillars folded on impact",
        "Footwells crushed by wheel intrusion",
        "Occupants slid toward the gap",
        "Restraint systems couldn't compensate",
        "",
        "Structures had been optimized for",
        "40% and 100% overlap tests.",
        "",
        "No one had tested 25%.",
        "",
        "The small overlap exposed a",
        "critical structural blind spot.",
    ],
)

add_content_slide(
    "The Industry Response",
    [
        "Initial reaction: 'The test isn't realistic!'",
        "",
        "Then: Rapid engineering scramble",
        "  - Structural members added outboard of frame rails",
        "  - A-pillar and hinge pillar connections reinforced",
        "  - Firewall 'blocking' structures to redirect forces",
        "  - Wheel well reinforcement",
        "",
        "Timeline:",
        "  - 2012: Most vehicles Poor or Marginal",
        "  - 2014: Mixed results - some manufacturers improve",
        "  - 2016: Most new designs earn Good",
        "  - 2017: IIHS adds PASSENGER side test (prevent asymmetric gaming)",
        "",
        ">> Five years. From widespread failure to widespread success.",
    ],
    photo_note="assets/iihs_small_overlap_barrier.jpg, assets/small_overlap_test.jpg",
)

add_content_slide(
    "Small Overlap: Technical Specifications",
    [
        "Test Configuration:",
        "  - 40 mph into rigid barrier",
        "  - 25% overlap (driver side)",
        "  - 2017+: Passenger side added",
        "",
        "Dummy:",
        "  - Hybrid III 50th percentile male",
        "  - ~47 channels",
        "",
        "Critical Measurements:",
        "  - Structural/safety cage integrity",
        "  - Footwell intrusion (critical for wheel invasion)",
        "  - Head trajectory and contact points",
        "  - Dummy kinematics (did occupant stay in position?)",
        "  - Lower extremity loads",
    ],
    photo_note="assets/iihs_small_overlap_overhead.jpg",
)

add_dts_connection_slide(
    "How DTS Helps: Small Overlap",
    [
        "The most demanding frontal test requires the most reliable data:",
        "",
        "Head trajectory tracking:",
        "  - Where does the occupant's head go during the crash?",
        "  - Critical for assessing curtain airbag effectiveness",
        "",
        "Chest kinematics:",
        "  - Did the restraint system keep occupant in position?",
        "  - Or did they slide toward the gap?",
        "",
        "Lower extremity loads:",
        "  - Wheel intrusion into footwell is a signature failure mode",
        "  - Tibia axial force and bending moment measurements",
        "",
        "Every channel tells part of the story of whether the structure held.",
    ],
    "SLICE6, SLICE NANO, ACC3 PRO-A accelerometers",
)

# ============================================================
# TEST MODE 3: FMVSS 301 / FORD PINTO
# ============================================================

add_section_slide(
    "Test Mode 3: FMVSS 301",
    "The $11 fix Ford refused to make: The memo that led to criminal prosecution",
)

add_content_slide(
    "The Ford Pinto: A Design Decision",
    [
        "1970: Ford introduces the Pinto - subcompact to compete with imports",
        "",
        "The fuel tank design:",
        "  - Located behind rear axle, 6 inches from bumper",
        "  - Minimal protection from rear impact",
        "  - Bolts on differential could puncture tank in collision",
        "  - Fuel filler neck could separate, spilling fuel",
        "",
        "Ford engineers knew about the vulnerability",
        "  - Crash tests showed fuel leakage in rear impacts",
        "  - Design fixes were identified and costed",
        "",
        "But the Pinto was already in production...",
    ],
    photo_note="[Placeholder: Ford Pinto rear view photo]",
)

add_content_slide(
    "The Memo: Cost-Benefit Analysis (1973)",
    [
        "Ford's internal calculation:",
        "",
        "COST TO FIX:",
        "  - $11 per vehicle x 12.5 million vehicles = $137 million",
        "",
        "COST OF NOT FIXING (estimated):",
        "  - 180 deaths x $200,000 per death = $36 million",
        "  - 180 serious injuries x $67,000 = $12 million",
        "  - 2,100 burned vehicles x $700 = $1.5 million",
        "  - Total: $49.5 million",
        "",
        "FORD'S DECISION: Do not implement the fix.",
        "",
        ">> We decided that corporate cost-benefit analysis",
        ">> could not override the value of human life.",
    ],
)

add_content_slide(
    "The Reckoning",
    [
        "1977: Mother Jones publishes 'Pinto Madness' expose",
        "  - Internal memo becomes public",
        "  - Public outrage follows",
        "",
        "1978: NHTSA investigation and recall",
        "  - 1.5 million Pintos recalled",
        "  - FMVSS 301 strengthened in direct response",
        "",
        "1978: Indiana v. Ford Motor Company",
        "  - First criminal prosecution of an automaker for defective design",
        "  - Ford acquitted, but reputation destroyed",
        "",
        "Estimated deaths from Pinto fuel system: 27-180",
        "",
        "The Pinto case created the template for product liability law.",
    ],
)

add_content_slide(
    "FMVSS 301: Technical Specifications",
    [
        "Purpose: Ensure survivable crashes don't become fatal due to fire",
        "",
        "Test Modes:",
        "  - Rear impact: 30 mph moving deformable barrier",
        "  - Frontal impact: 30 mph into barrier",
        "  - Side impact: 20 mph moving deformable barrier",
        "  - Rollover: 90-degree and 180-degree rotations",
        "",
        "Requirements:",
        "  - Limited fuel leakage during impact",
        "  - Limited fuel leakage post-crash (measured for 30 minutes)",
        "  - Fuel tank must remain attached",
        "  - Fuel lines must not rupture",
        "",
        "Not a dummy instrumentation test - but crash severity must be verified.",
    ],
)

add_dts_connection_slide(
    "How DTS Helps: FMVSS 301",
    [
        "Vehicle structure accelerometers confirm impact severity",
        "  - Critical for validating that test conditions were met",
        "",
        "Barrier load cells measure impact force",
        "  - Ensures test is representative of real-world crashes",
        "",
        "While fuel leakage is measured directly (not with DTS sensors),",
        "the crash event itself requires precise data acquisition",
        "",
        "This test ensures that the progress we've made in",
        "occupant protection isn't undone by post-crash fire.",
    ],
    "SLICE PRO, load cell interfaces",
)

# ============================================================
# TEST MODE 4: FMVSS 214 SIDE IMPACT
# ============================================================

add_section_slide(
    "Test Mode 4: FMVSS 214 Side Impact",
    "25% of crashes, 30% of deaths: The door that wasn't a barrier",
)

add_stat_slide(
    "25% / 30%",
    "Side impacts: 25% of crashes but 30% of fatalities",
    "More deadly PER CRASH than frontal. Why? Minimal crush space, no crumple zone, direct loading to torso and head.",
)

add_content_slide(
    "The Neglected Crash Mode",
    [
        "Timeline of neglect:",
        "  - 1968: FMVSS 208 (frontal protection) - nothing for side",
        "  - 1973: FMVSS 214 - static door strength only",
        "  - 1979: NCAP ratings (frontal) - nothing for side",
        "  - 1990: First DYNAMIC side test (22 years after frontal)",
        "  - 2003: IIHS side test",
        "  - 2007: Pole test added (head protection)",
        "",
        "Before side airbags, there was NOTHING between",
        "your ribs and the door in a side crash.",
        "",
        ">> We decided that side crash victims deserved the same",
        ">> engineering attention as frontal crash victims.",
    ],
    photo_note="assets/iihs_side_barrier.jpg",
)

add_timeline_slide(
    "The Side Airbag Revolution",
    [
        ("Pre-1995", "Nothing between your ribs and the door"),
        ("1995", "Volvo introduces first side torso airbag"),
        ("1998", "First side curtain airbags (head protection)"),
        ("2003", "IIHS side test launched - accelerates adoption"),
        ("2007", "FMVSS 214 pole test requires head protection"),
        ("2010", "Side curtain airbags standard on most vehicles"),
        ("2021", "IIHS updates side test: heavier, taller, faster barrier"),
    ],
)

add_content_slide(
    "FMVSS 214: Technical Specifications",
    [
        "MDB Test (Moving Deformable Barrier):",
        "  - 33.5 mph (FMVSS) / 38.5 mph (NCAP)",
        "  - Barrier strikes stationary vehicle at 90 degrees",
        "  - ES-2re dummy (50th percentile male, side impact design)",
        "",
        "Pole Test (added 2007):",
        "  - 20 mph into 254mm (10 inch) diameter pole",
        "  - Simulates tree strike, utility pole",
        "  - Specifically targets head protection",
        "",
        "Injury Criteria:",
        "  - Thoracic Trauma Index (TTI)",
        "  - Pelvis acceleration",
        "  - Rib deflection (Viscous Criterion)",
        "  - HIC for pole test",
    ],
    photo_note="assets/iihs_side_dummies.jpg, assets/iihs_side_2021.jpg",
)

add_dts_connection_slide(
    "How DTS Helps: Side Impact",
    [
        "Side impact dummies are fundamentally different from frontal:",
        "  - Different rib structure (ribs that deflect laterally)",
        "  - Different instrumentation layout",
        "",
        "Rib deflection sensors:",
        "  - IR-TRACCs measure chest compression",
        "  - Critical for Viscous Criterion calculation",
        "",
        "Multiple accelerometer locations:",
        "  - Thorax (upper, middle, lower)",
        "  - Pelvis",
        "  - Head (for pole test)",
        "",
        "The pole test head measurements drove universal adoption",
        "of side curtain airbags - now standard equipment.",
    ],
    "SLICE6, IR-TRACC interfaces, ES-2re integration",
)

# ============================================================
# TEST MODE 5: FMVSS 216 ROOF CRUSH
# ============================================================

add_section_slide(
    "Test Mode 5: FMVSS 216 Roof Crush",
    "36 years unchanged: The 1.5x standard that advocacy finally doubled",
)

add_stat_slide(
    "3% / 30%",
    "Rollovers: 3% of crashes but 30% of fatalities",
    "Ejection in rollover is 77% fatal. The roof is the last line of defense.",
)

add_content_slide(
    "The Long Fight for Stronger Roofs",
    [
        "1973: FMVSS 216 established",
        "  - Roof must withstand 1.5x vehicle weight",
        "  - Only ONE side tested (driver side)",
        "",
        "For 36 YEARS, this standard did not change.",
        "",
        "Consumer advocates argued:",
        "  - 1.5x is far too weak",
        "  - Real-world rollovers show roofs collapsing into survival space",
        "  - Should be 4x or higher",
        "",
        "2009: Standard FINALLY upgraded",
        "  - Doubled to 3x vehicle weight",
        "  - BOTH sides must be tested",
        "",
        "IIHS pushed further: 4x required for 'Good' rating",
        ">> Many vehicles now achieve 5-6x because we decided 3x wasn't enough.",
    ],
    photo_note="assets/roof_strength_test.jpg",
)

add_content_slide(
    "FMVSS 216: Technical Specifications",
    [
        "Test Method:",
        "  - Static test (not a crash)",
        "  - Metal plate pressed onto roof at windshield/roof junction",
        "  - Force applied at 5-degree angle from vertical",
        "",
        "Requirements:",
        "  - Pre-2009: 1.5x vehicle weight before 127mm (5 in) crush",
        "  - Post-2009: 3x vehicle weight before 127mm crush",
        "  - Both left and right sides tested",
        "",
        "IIHS Ratings:",
        "  - Good: >= 4.0x",
        "  - Acceptable: 3.25-3.99x",
        "  - Marginal: 2.5-3.24x",
        "  - Poor: < 2.5x",
    ],
)

add_dts_connection_slide(
    "How DTS Helps: Roof Crush",
    [
        "Unlike crash tests, roof strength is a static test:",
        "  - Controlled force application",
        "  - Force vs. displacement measurement",
        "",
        "DTS load cells measure applied force",
        "  - High accuracy for force-deflection curve",
        "",
        "Displacement sensors track crush distance",
        "  - Critical for determining when 127mm threshold is reached",
        "",
        "The test determines if occupants have survival space if",
        "the vehicle rolls - the data validates the structure.",
    ],
    "SLICE PRO LAB, load cell interfaces",
)

# ============================================================
# TEST MODE 6: IIHS HEAD RESTRAINT / WHIPLASH
# ============================================================

add_section_slide(
    "Test Mode 6: IIHS Head Restraint",
    "One million injuries per year: The epidemic hiding in low-speed crashes",
)

add_content_slide(
    "The Whiplash Epidemic",
    [
        "Over 1 MILLION whiplash injuries per year in the US",
        "  - Most occur in low-speed rear impacts",
        "  - Not fatal, but chronic pain can persist for years",
        "  - Enormous economic cost: medical, lost work, disability",
        "",
        "Early head restraints were ineffective:",
        "  - Set too low (didn't support head)",
        "  - Too far back from head (head snapped backward before contact)",
        "  - Often adjusted incorrectly or removed entirely",
        "",
        "Swedish research (Volvo, Saab) led the way:",
        "  - 'Active' head restraints that move up/forward during crash",
        "  - Engage head earlier, reduce relative motion",
        "",
        ">> We decided that non-fatal injuries still matter.",
    ],
)

add_content_slide(
    "IIHS Whiplash Test: Technical Specifications",
    [
        "Test Method:",
        "  - Dynamic sled test (not full vehicle crash)",
        "  - Simulates low-speed rear impact",
        "",
        "Dummy:",
        "  - BioRID II - specifically designed for rear impact",
        "  - 24 articulated vertebrae (highly flexible spine)",
        "",
        "Key Measurements:",
        "  - Neck Injury Criteria (NIC)",
        "  - Neck forces and moments",
        "  - Relative head-to-torso movement",
        "  - Seat strength (must not collapse backward)",
        "",
        "Active head restraints are now standard equipment",
        "because of this test.",
    ],
    photo_note="[Placeholder: BioRID II dummy photo]",
)

add_dts_connection_slide(
    "How DTS Helps: Whiplash Testing",
    [
        "BioRID II has a fundamentally different spine than Hybrid III:",
        "  - 24 articulated vertebrae vs. rigid lumbar/thoracic",
        "  - Requires different instrumentation approach",
        "",
        "Sensors along the articulated spine measure relative motion:",
        "  - How does each vertebra move relative to adjacent ones?",
        "  - This is the mechanism of whiplash injury",
        "",
        "Head and torso accelerometers (CFC 1000, CFC 600)",
        "",
        "Different dummy = different data acquisition configuration",
        "DTS systems support both Hybrid III and BioRID configurations.",
    ],
    "SLICE6, BioRID spine sensor interfaces",
)

# ============================================================
# TEST MODE 7: IIHS FRONT CRASH PREVENTION (AEB)
# ============================================================

add_section_slide(
    "Test Mode 7: IIHS Front Crash Prevention",
    "The voluntary revolution: 20 automakers agreed without a government mandate",
)

add_two_column_slide(
    "The Philosophy Shift: Passive to Active",
    "Passive Safety (1968-2000s)",
    [
        "Assume crash WILL happen",
        "",
        "Focus on protection DURING crash:",
        "  - Seatbelts",
        "  - Airbags",
        "  - Structure",
        "",
        "After 50 years, we've gotten very good",
        "at protecting people in crashes.",
        "",
        "But 94% of crashes involve human error...",
    ],
    "Active Safety (2000s-present)",
    [
        "Try to PREVENT the crash",
        "",
        "Warn driver, assist, brake automatically:",
        "  - AEB (Autonomous Emergency Braking)",
        "  - ESC (Electronic Stability Control)",
        "  - Lane Keeping Assist",
        "",
        "If crash is unavoidable, passive kicks in.",
        "",
        "Active + Passive = Maximum protection",
    ],
)

add_content_slide(
    "The Voluntary Commitment (2016)",
    [
        "20 automakers voluntarily committed to make AEB standard by 2022:",
        "  - No government mandate required",
        "  - Driven by IIHS ratings and consumer demand",
        "  - The fastest safety technology adoption in history",
        "",
        "Effectiveness:",
        "  - AEB reduces rear-end crashes by 50%+",
        "  - Even basic forward collision warning reduces crashes 27%",
        "",
        "This is a fundamentally new type of safety test:",
        "  - Not measuring crash protection",
        "  - Measuring crash PREVENTION",
        "",
        ">> We decided that preventing crashes is better than surviving them.",
    ],
    photo_note="assets/iihs_fcp_car_target.png",
)

add_content_slide(
    "IIHS AEB Test: Technical Specifications",
    [
        "Test Scenarios:",
        "  - Vehicle approaches stationary foam target at 12 mph",
        "  - Vehicle approaches stationary foam target at 25 mph",
        "",
        "Measurements:",
        "  - Does the system warn the driver?",
        "  - Does it brake automatically?",
        "  - How much speed reduction is achieved?",
        "",
        "Ratings:",
        "  - Superior: Avoids or major speed reduction at both speeds + FCW",
        "  - Advanced: Forward collision warning + limited AEB performance",
        "  - Basic: Forward collision warning available",
        "",
        "Target: Foam/inflatable vehicle replica (safe for repeated tests)",
    ],
)

add_dts_connection_slide(
    "How DTS Helps: AEB Testing",
    [
        "This is an expanding market for DTS:",
        "",
        "Vehicle dynamics measurement:",
        "  - Speed, deceleration, timing",
        "  - When did the system activate?",
        "  - How quickly did it respond?",
        "",
        "Not traditional dummy instrumentation, but related technology:",
        "  - High-speed data acquisition",
        "  - Precise timing synchronization",
        "",
        "The future of safety testing includes evaluating systems",
        "that PREVENT crashes, not just systems that protect in crashes.",
    ],
    "TSR AIR data logger, SLICE systems for vehicle dynamics",
)

# ============================================================
# TEST MODE 8: EURO NCAP PEDESTRIAN PROTECTION
# ============================================================

add_section_slide(
    "Test Mode 8: Euro NCAP Pedestrian",
    "Europe's 25-year head start: The US still has no federal standard",
)

add_content_slide(
    "The Pedestrian Crisis",
    [
        "While occupant deaths have FALLEN, pedestrian deaths are RISING:",
        "  - 2009: 4,109 pedestrian deaths",
        "  - 2019: 6,205 pedestrian deaths",
        "  - 2022: 7,500+ pedestrian deaths (18% of all traffic deaths)",
        "",
        "Why?",
        "  - Larger vehicles (SUVs, trucks) dominate sales",
        "  - Higher front ends hit torso/head instead of legs",
        "  - Distracted driving and walking (phones)",
        "",
        "The US approach:",
        "  - Test if cars AVOID pedestrians (AEB)",
        "  - But NOT what happens if they don't",
        "",
        ">> Europe decided 25 years ago that pedestrians deserved protection too.",
    ],
)

add_content_slide(
    "Euro NCAP Pedestrian Testing (Since 1997)",
    [
        "Europe has tested pedestrian protection for 25+ years:",
        "",
        "Headform Impactor Test:",
        "  - Adult and child headforms",
        "  - Fired at hood surface at 40 km/h",
        "  - HIC measurement - same physics as occupant head protection",
        "",
        "Legform Impactor Test:",
        "  - Upper legform: hip/pelvis injury",
        "  - Lower legform: knee bending, tibia fracture",
        "",
        "Design changes driven by this test:",
        "  - Active hood hinges (pop up to create crush space)",
        "  - Energy-absorbing bumper structures",
        "  - External pedestrian airbags (Volvo)",
    ],
    photo_note="assets/euroncap_headform.png, assets/euroncap_cyclist_headform.png",
)

add_dts_connection_slide(
    "How DTS Helps: Pedestrian Protection",
    [
        "Headform impactor testing uses DTS accelerometers:",
        "  - Same basic technology as crash test dummies",
        "  - Triaxial accelerometer inside impactor headform",
        "  - CFC 1000 filtering (same as dummy head)",
        "",
        "The physics is identical:",
        "  - Protect the brain from rapid deceleration",
        "  - Whether the brain is inside a car or outside it",
        "",
        "Expanding market as US considers pedestrian protection requirements",
        "",
        "Same sensors, same data acquisition, different application.",
    ],
    "SLICE NANO, ACC3 PRO-A accelerometers",
)

# ============================================================
# TEST MODE 9: NOCSAE FOOTBALL HELMET
# ============================================================

add_section_slide(
    "Test Mode 9: NOCSAE Football Helmet",
    "36 deaths in one year: The 1968 season that created helmet certification",
)

add_content_slide(
    "The 1968 Crisis",
    [
        "1968: 36 football players died",
        "  - Worst year on record for football fatalities",
        "  - Most from head and neck injuries",
        "",
        "The problem:",
        "  - No helmet standards existed",
        "  - Manufacturers made their own claims",
        "  - No way to verify protection level",
        "  - No consistent test method",
        "",
        "1969: NOCSAE founded",
        "  - National Operating Committee on Standards for Athletic Equipment",
        "  - Response to Congressional pressure after 36 deaths",
        "",
        ">> We decided that athletes deserved the same scientific protection as drivers.",
    ],
)

add_content_slide(
    "NOCSAE Helmet Standard (1973)",
    [
        "First helmet certification standard:",
        "",
        "Drop Tower Test:",
        "  - Helmet on headform dropped from 60 inches onto anvils",
        "  - Multiple impact locations",
        "  - Hot, cold, wet conditions",
        "  - Severity Index must be below 1200",
        "",
        "Key insight: Same physics as automotive",
        "  - SI (Severity Index) closely related to HIC",
        "  - Both measure head acceleration over time",
        "  - Both derive from Wayne State cadaver research",
        "",
        "1978: NCAA mandates NOCSAE-certified helmets",
        "1980: High school (NFHS) mandates NOCSAE helmets",
    ],
    photo_note="[Placeholder: Football helmet drop test photo]",
)

add_stat_slide(
    "90%",
    "Reduction in football fatalities since NOCSAE standards (1973)",
    "1960s: 26 deaths/year | 1970s: 15 deaths/year | 2010s: 3 deaths/year",
)

add_dts_connection_slide(
    "How DTS Helps: Helmet Testing",
    [
        "DTS accelerometers inside helmet headforms:",
        "  - Same sensors used in automotive crash test dummies",
        "  - Triaxial measurement for SI calculation",
        "",
        "The injury threshold (SI < 1200) derives from the same",
        "human tolerance research as automotive HIC.",
        "",
        "Wayne State cadaver research from the 1950s-60s",
        "informs both automotive and helmet standards.",
        "",
        "One technology, one data acquisition approach,",
        "applied across automotive, football, hockey, cycling, equestrian.",
    ],
    "SLICE NANO, SLICE MICRO for headform instrumentation",
)

# ============================================================
# TEST MODE 10: NFL / CTE
# ============================================================

add_section_slide(
    "Test Mode 10: NFL Helmet / CTE",
    "The league that denied brain damage: From Mike Webster to $765 million",
)

add_content_slide(
    "The Denial",
    [
        "2002: Mike Webster dies at 50 - 'Iron Mike', Hall of Fame center",
        "  - Homeless, cognitively impaired, heart attack",
        "",
        "2005: Dr. Bennet Omalu publishes first CTE case in NFL player",
        "  - Chronic Traumatic Encephalopathy found in Webster's brain",
        "  - NFL's response: Demanded retraction, attacked Omalu's credentials",
        "",
        "2009: NFL finally acknowledges concussion problem (after years of denial)",
        "",
        "2011: $765 million settlement with former players",
        "",
        "The science was clear: Repeated head impacts cause brain damage",
        "  - Even 'subconcussive' hits accumulate",
        "  - Football exposes players to thousands of impacts per career",
        "",
        ">> We decided that athlete brain health couldn't be ignored for profit.",
    ],
)

add_content_slide(
    "The Evolution of Helmet Testing",
    [
        "Traditional NOCSAE drop test:",
        "  - Measures linear acceleration",
        "  - Pass/fail at SI < 1200",
        "",
        "Modern research suggests rotation matters more:",
        "  - Brain injury may be caused more by ROTATION than linear force",
        "  - Concussion mechanism involves brain twisting inside skull",
        "",
        "NFL/NFLPA Helmet Testing Protocol:",
        "  - Drop tower test (traditional)",
        "  - Linear impactor test (game-realistic, higher speeds)",
        "  - Pendulum impactor",
        "  - Rotational measurements (emerging)",
        "",
        "Annual helmet rankings published - creates market pressure",
    ],
    photo_note="[Placeholder: NFL helmet testing lab photo]",
)

add_dts_connection_slide(
    "How DTS Helps: Concussion Research",
    [
        "Same accelerometers as automotive head measurement:",
        "  - Triaxial linear acceleration",
        "  - CFC 1000 filtering",
        "",
        "Angular rate sensors for rotational measurement:",
        "  - ARS PRO angular rate sensors",
        "  - 6DX PRO-A for 6 degrees of freedom",
        "",
        "The injury threshold science came from automotive research:",
        "  - Wayne State cadaver studies",
        "  - HIC development",
        "  - Human tolerance curves",
        "",
        "DTS instruments both domains with the same technology.",
    ],
    "SLICE systems, ARS PRO, 6DX PRO-A, ACC3 PRO-A",
)

# ============================================================
# CLOSING
# ============================================================

add_section_slide("The Work Continues", "What gaps remain?")

add_content_slide(
    "Every Test Exposed What Previous Tests Missed",
    [
        "1968: FMVSS 208 (frontal) - but side crashes were neglected",
        "1990: FMVSS 214 (side) - but offset frontal was missed",
        "1995: IIHS Moderate Overlap - but small overlap was missed",
        "2012: IIHS Small Overlap - but passenger side was 'gamed'",
        "2017: Small Overlap Passenger - but fleet changed (bigger SUVs)",
        "2021: Updated Side Test - but gaps remain...",
        "",
        "What's NEXT?",
        "  - Rear seat occupant protection (currently neglected)",
        "  - Far-side impacts (opposite side from impact)",
        "  - Vehicle compatibility (small cars vs. large trucks)",
        "  - EV-specific tests (battery safety, mass distribution)",
        "  - AV/ADAS validation (how do you test a self-driving car?)",
        "",
        ">> The cycle continues. We will keep deciding to do better.",
    ],
)

add_content_slide(
    "The Gender Gap in Crash Testing",
    [
        "Most crash tests use 50th percentile male dummy (5'9\", 175 lbs)",
        "'Small female' dummy (Hybrid III 5th) is just a SCALED-DOWN male",
        "",
        "The consequences:",
        "  - Women are 17% more likely to DIE in equivalent crashes",
        "  - Women are 73% more likely to be seriously injured",
        "",
        "Why?",
        "  - Female anatomy differs: hip structure, neck strength",
        "  - Women sit closer to steering wheel (shorter legs)",
        "  - Seatbelt geometry optimized for male torsos",
        "",
        "The solution (in progress):",
        "  - THOR-5F (2023): First 'true female' dummy",
        "  - Not a scaled male - different skeletal structure",
        "",
        ">> We are deciding that 'average' can't mean 'male' anymore.",
    ],
    photo_note="assets/thor_male_female.jpg",
)

add_content_slide(
    "The ATD Evolution: More Channels, More Data, More Lives",
    [
        "1949: Sierra Sam - first crash test dummy (USAF ejection seats)",
        "1976: Hybrid III - still the global standard, ~47 channels",
        "2013: THOR-50M - 150+ channels, more biofidelic",
        "2015: WIAMan - military blast dummy (DTS partnership)",
        "2023: THOR-5F - first true female dummy",
        "",
        "The trend: More biofidelic, more instrumentation, more data",
        "",
        "Channel count matters:",
        "  - More channels = more data = better understanding",
        "  - Better understanding = smarter engineering = more lives saved",
        "",
        "DTS provides the nervous system that gives dummies their 'senses'.",
    ],
    photo_note="assets/sierra_sam.jpg, assets/hybrid_iii_family.jpg, assets/thor_dummy.jpg, assets/wiaman_dummy.jpg",
)

add_quote_slide(
    "A crashed car is gone forever. The data is what remains.", "Industry saying"
)

add_content_slide(
    "Why Data Quality Matters",
    [
        "A single crash test costs $50,000 - $500,000+:",
        "  - Test vehicle: $30,000 - $80,000 (destroyed)",
        "  - ATD (Hybrid III 50th): $200,000 - $400,000",
        "  - ATD (THOR): $500,000 - $800,000",
        "  - Facility, personnel, analysis",
        "",
        "The vehicle is destroyed in 100 milliseconds.",
        "ALL VALUE is captured in the data.",
        "",
        "If a sensor fails, if a channel drops, if data is questionable:",
        "  - You might have to repeat the entire test",
        "  - $100K+ repeat cost, weeks of delay",
        "",
        "DTS data acquisition is a fraction of test cost",
        "but captures 100% of the value.",
    ],
    photo_note="assets/iihs_dummy_sensors.jpg",
)

add_stat_slide(
    "117,000",
    "Lives saved per year compared to 1970 rates",
    "1970 rate applied to today's VMT: 153,000 deaths | Actual: 36,000 | Difference: 117,000",
)

add_content_slide(
    "Each of Those Lives Was Saved By:",
    [
        "A TRAGEDY that revealed a problem",
        "  - Steering column deaths, Pinto fires, football fatalities",
        "",
        "A DECISION that we needed to do better",
        "  - Congress, NHTSA, IIHS, NOCSAE, consumers demanding change",
        "",
        "DATA that revealed the mechanism of injury",
        "  - Cadaver research, rocket sled tests, crash tests",
        "",
        "A TEST that measured the problem",
        "  - FMVSS 208, IIHS Small Overlap, NOCSAE drop test",
        "",
        "ENGINEERING that solved it",
        "  - Seatbelts, airbags, crumple zones, helmets",
        "",
        "DTS is in this chain - capturing the data that drives solutions.",
    ],
)

add_content_slide(
    "The Culture DTS Was Built On",
    [
        "DTS was founded to serve this mission:",
        "  - Innovative solutions for crash test data acquisition",
        "  - Reliability when every data point matters",
        "  - Accuracy that engineers can trust",
        "",
        "This isn't just a business. It's life-saving work.",
        "",
        "When NHTSA runs a compliance test - DTS captures the data.",
        "When IIHS rates a vehicle - DTS captures the data.",
        "When a university studies injury biomechanics - DTS captures the data.",
        "When the NFL tests helmet safety - DTS captures the data.",
        "",
        ">> We help the people who decided to do better",
        ">> actually measure whether they succeeded.",
    ],
)

add_title_slide(
    "Data Saves Lives",
    "Every test has a story. Every story started with tragedy.\nEvery tragedy ended when we got the data to understand it.",
)

add_title_slide("Questions?", "DTS: The data that makes safety testing possible.")

# Save the presentation
prs.save("Data_Saves_Lives_v2.pptx")
print("Presentation created: Data_Saves_Lives_v2.pptx")
print(f"Total slides: {len(prs.slides)}")
