https://medistudygo.com/blogs/dental/maxillary-mandibular-landmarks-comprehensive-guide help to create a powerpoint presentation based on information with all available at this site create around 40 to 50 slides

Reading Web Page

https://medistudygo.com/blogs/dental/maxillary-mandibular-la…

Reading File
Reading File
Reading Web Page

https://medistudygo.com/blogs/dental/maxillary-mandibular-la…

general-purpose

Create a professional 40-50 slide PowerPoint presentation on "Maxillary and Mandibular Landmarks" for dental students, based on the content from https://medistudygo.com/blogs/dental/maxillary-mandibular-landmarks-comprehensive-guide ## Your Task Create a comprehensive PPTX file saved at: /tmp/workspace/dental-landmarks/Maxillary_Mandibular_Landmarks.pptx ## Setup First run: `mkdir -p /tmp/workspace/dental-landmarks/` ## Content to Cover (40-50 slides) Use this detailed outline based on the source site plus standard dental anatomy knowledge: ### SLIDE STRUCTURE (aim for 45 slides): **SECTION 1: Introduction (Slides 1-4)** 1. Title Slide: "Maxillary and Mandibular Landmarks: A Comprehensive Guide" 2. Learning Objectives 3. Overview - Why Landmarks Matter in Dentistry 4. Classification of Landmarks (Hard vs Soft tissue; Maxillary vs Mandibular) **SECTION 2: Maxillary Landmarks - Soft Tissue (Slides 5-12)** 5. Section Header: Maxillary Landmarks 6. Labial Vestibule - Definition, boundaries (alveolar ridge internally, lips externally), clinical significance 7. Labial Frenum - Definition (fold of mucous membrane), types (simple/complex), clinical implications for dentures 8. Buccal Vestibule - Space between teeth/ridge and cheeks, bounded by masseter anteriorly 9. Buccal Frenum - Location between buccal vestibule and labial vestibule, significance 10. Hard Palate - Oral surface of maxilla, covered by dense fibrous mucosa firmly attached, primary support 11. Soft Palate - Posterior to hard palate, moveable, forms posterior border of denture 12. Vibrating Line - Junction of hard and soft palate, "Ah" line, significance for posterior palatal seal **SECTION 3: Maxillary Landmarks - Hard Tissue (Slides 13-22)** 13. Alveolar Ridge (Maxillary) - Residual ridge after tooth extraction, primary support area 14. Incisive Papilla - Oval pad of tissue over incisive foramen, landmark for tooth positioning 15. Rugae - Irregular ridges on anterior hard palate, involved in phonetics and mastication 16. Midpalatal Suture (Median Palatal Raphe) - Fibrous union of palatine processes, relief required 17. Maxillary Tuberosity - Posterior end of maxillary ridge, primary support; undercuts 18. Hamular Notch - Between maxillary tuberosity and hamulus of medial pterygoid plate, posterior border of denture 19. Fovea Palatinae - Two small pits at junction of hard/soft palate, landmark for posterior palatal seal 20. Postero-lateral Slopes of Hard Palate - Secondary stress-bearing areas 21. Pterygomaxillary Notch - Posterior limit of maxillary denture 22. Posterior Palatal Seal (Post-Dam Area) - Area at posterior border, creates atmospheric seal for retention **SECTION 4: Mandibular Landmarks - Introduction (Slides 23-24)** 23. Section Header: Mandibular Landmarks 24. Overview of Mandibular Anatomy - U-shaped bone, challenges vs maxilla **SECTION 5: Mandibular Landmarks - Key Structures (Slides 25-37)** 25. Labial Vestibule (Mandibular) - Similar to maxillary but smaller 26. Labial Frenum (Mandibular) - Attachment, clinical considerations 27. Buccal Vestibule (Mandibular) - Limited by buccinator, masseter, external oblique ridge 28. Buccal Frenum (Mandibular) - Location and significance 29. Alveolar Ridge (Mandibular) - Residual ridge, resorption patterns 30. Retromolar Pad - Pear-shaped pad of tissue posterior to last mandibular molar; composition (glandular tissue, loose CT, fibers of pterygomandibular raphe); significance: posterior limit of mandibular denture, indicates occlusal plane 31. Buccal Shelf - Area between crest of alveolar ridge and external oblique ridge; primary stress-bearing area for mandibular dentures; bounded by buccal frenum anteriorly 32. External Oblique Ridge - Continuation of anterior border of ramus, limits posterior extension of buccal flange 33. Internal Oblique Ridge (Mylohyoid Ridge) - Attachment of mylohyoid muscle, limits lingual flange 34. Mylohyoid Muscle - Forms floor of mouth, affects mandibular denture extension 35. Genial Tubercles (Mental Spines) - Bony prominences on lingual surface near midline, attach genioglossus and geniohyoid, relief needed 36. Mental Foramen - Opening for mental nerve and vessels, avoid pressure 37. Mandibular Tori - Bony exostoses on lingual surface, require relief or surgery **SECTION 6: Additional Mandibular Structures (Slides 38-41)** 38. Lingual Frenum - Midline fold connecting tongue to floor of mouth 39. Sublingual Fold (Plica Sublingualis) - Fold over sublingual gland, limits lingual flange 40. Retromylohyoid Eminence - Space distal to mylohyoid muscle, lingual extension 41. Pterygomandibular Raphe - Fibrous band between pterygoid hamulus and retromolar pad **SECTION 7: Clinical Applications (Slides 42-46)** 42. Maxillary Denture Borders - Summary of all border limits 43. Mandibular Denture Borders - Summary of all border limits 44. Stress-Bearing vs Relief Areas - Table comparing primary support, secondary support, relief areas 45. Common Errors in Landmark Recognition 46. Comparison: Maxillary vs Mandibular Landmarks (summary table) **SECTION 8: Exam Focus (Slides 47-48)** 47. High-Yield Points for NEET MDS / BDS Exams 48. Quick Revision Summary **SECTION 9: Conclusion (Slides 49-50)** 49. Key Takeaways 50. Thank You / References ## Design Requirements - 16:9 widescreen format (13.333 x 7.5 inches) - Professional dental/medical color scheme: - Background: white (#FFFFFF) - Primary color (headings): Deep blue (#1B3A6B) - Accent color: Teal (#00868A) - Section headers: Gradient-like background using deep blue - Text: Dark gray (#333333) - Bullet point accent: Teal - Title slide: Deep blue background (#1B3A6B), white text, subtitle in teal - Section divider slides: Deep blue background, large white centered text - Content slides: White background, colored heading bar at top - Use bullet points (•) for content - Each content slide: 1 heading + 4-7 bullet points with clinical notes where relevant - Font: Calibri throughout (Bold for headings, Regular for body) - Heading font size: 28-32 pt - Body text: 18-20 pt ## Python Code Instructions Use python-pptx library. Here is the pattern to use: ```python from pptx import Presentation from pptx.util import Inches, Pt, Emu from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN, MSO_ANCHOR from pptx.util import Inches, Pt import os os.makedirs('/tmp/workspace/dental-landmarks/', exist_ok=True) prs = Presentation() prs.slide_width = Inches(13.333) prs.slide_height = Inches(7.5) blank_layout = prs.slide_layouts[6] # blank # Colors DARK_BLUE = RGBColor(0x1B, 0x3A, 0x6B) TEAL = RGBColor(0x00, 0x86, 0x8A) WHITE = RGBColor(0xFF, 0xFF, 0xFF) DARK_GRAY = RGBColor(0x33, 0x33, 0x33) LIGHT_BLUE_BG = RGBColor(0xE8, 0xF0, 0xF8) def add_rect(slide, x, y, w, h, fill_color): shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h)) shape.fill.solid() shape.fill.fore_color.rgb = fill_color shape.line.fill.background() return shape def add_textbox(slide, text, x, y, w, h, font_size, bold=False, color=DARK_GRAY, align=PP_ALIGN.LEFT, italic=False): tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) tf = tb.text_frame tf.word_wrap = True p = tf.paragraphs[0] p.alignment = align run = p.add_run() run.text = text run.font.name = 'Calibri' run.font.size = Pt(font_size) run.font.bold = bold run.font.italic = italic run.font.color.rgb = color return tb def add_bullets(slide, bullets, x, y, w, h, font_size=18): tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) tf = tb.text_frame tf.word_wrap = True first = True for bullet in bullets: if first: p = tf.paragraphs[0] first = False else: p = tf.add_paragraph() p.space_before = Pt(4) run = p.add_run() run.text = "• " + bullet run.font.name = 'Calibri' run.font.size = Pt(font_size) run.font.color.rgb = DARK_GRAY return tb # Title slide slide = prs.slides.add_slide(blank_layout) add_rect(slide, 0, 0, 13.333, 7.5, DARK_BLUE) add_textbox(slide, "MAXILLARY AND MANDIBULAR LANDMARKS", 0.8, 2.0, 11.7, 1.5, 40, bold=True, color=WHITE, align=PP_ALIGN.CENTER) add_textbox(slide, "A Comprehensive Guide for Dental Students", 0.8, 3.7, 11.7, 0.8, 24, color=TEAL, align=PP_ALIGN.CENTER) add_textbox(slide, "Prosthodontics | Dental Anatomy | NEET MDS Preparation", 0.8, 4.6, 11.7, 0.6, 18, color=WHITE, align=PP_ALIGN.CENTER) ``` Write the full Python script to /tmp/workspace/dental-landmarks/create_pptx.py, then execute it. Make sure ALL 50 slides are created. Build slide by slide, being thorough with content. For section divider slides, use dark blue background with large white centered text. For content slides, add a colored top bar (dark blue, height ~1.0 inch) with the title in white, then content below. Save the file and confirm it was created successfully. Return the file path.

Reading File
Running Command

mkdir -p /tmp/workspace/dental-landmarks/

Reading Web Page

https://medistudygo.com/blogs/dental/maxillary-mandibular-la…

Writing File

~/dental-landmarks/create_pptx.py

"""
Maxillary and Mandibular Landmarks - 50-Slide PowerPoint Presentation
For Dental Students | Prosthodontics | NEET MDS Preparation
"""

from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
import os

os.makedirs('/tmp/workspace/dental-landmarks/', exist_ok=True)

prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)

blank_layout = prs.slide_layouts[6]  # blank

# ── Color Palette ──────────────────────────────────────────────────────────
DARK_BLUE   = RGBColor(0x1B, 0x3A, 0x6B)
TEAL        = RGBColor(0x00, 0x86, 0x8A)
WHITE       = RGBColor(0xFF, 0xFF, 0xFF)
DARK_GRAY   = RGBColor(0x33, 0x33, 0x33)
LIGHT_BG    = RGBColor(0xF0, 0xF5, 0xFB)
MID_BLUE    = RGBColor(0x2A, 0x6E, 0xA6)
PALE_TEAL   = RGBColor(0xE0, 0xF4, 0xF5)
GOLD        = RGBColor(0xD4, 0xA0, 0x17)
LIGHT_GRAY  = RGBColor(0xF5, 0xF5, 0xF5)
MED_GRAY    = RGBColor(0x88, 0x88, 0x88)
ORANGE      = RGBColor(0xE0, 0x6C, 0x00)

# ── Helpers ─────────────────────────────────────────────────────────────────

def add_rect(slide, x, y, w, h, fill_color, line_color=None):
    shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
    shape.fill.solid()
    shape.fill.fore_color.rgb = fill_color
    if line_color:
        shape.line.color.rgb = line_color
    else:
        shape.line.fill.background()
    return shape

def add_textbox(slide, text, x, y, w, h, font_size, bold=False,
                color=DARK_GRAY, align=PP_ALIGN.LEFT, italic=False,
                font_name='Calibri'):
    tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = tb.text_frame
    tf.word_wrap = True
    tf.margin_left  = Inches(0.05)
    tf.margin_right = Inches(0.05)
    tf.margin_top   = Inches(0.03)
    tf.margin_bottom = Inches(0.03)
    p = tf.paragraphs[0]
    p.alignment = align
    run = p.add_run()
    run.text = text
    run.font.name = font_name
    run.font.size = Pt(font_size)
    run.font.bold = bold
    run.font.italic = italic
    run.font.color.rgb = color
    return tb

def add_bullets(slide, bullets, x, y, w, h, font_size=17, color=DARK_GRAY,
                indent_bullet="•  ", sub_indent="    –  "):
    """Add a list of bullet items. Items starting with '-' are sub-bullets."""
    tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = tb.text_frame
    tf.word_wrap = True
    tf.margin_left  = Inches(0.05)
    tf.margin_right = Inches(0.05)
    tf.margin_top   = Inches(0.05)
    tf.margin_bottom = Inches(0.05)
    first = True
    for bullet in bullets:
        if first:
            p = tf.paragraphs[0]
            first = False
        else:
            p = tf.add_paragraph()
        p.space_before = Pt(5)
        run = p.add_run()
        if bullet.startswith('-'):
            run.text = sub_indent + bullet[1:].strip()
            run.font.size = Pt(font_size - 1)
            run.font.color.rgb = MID_BLUE
        else:
            run.text = indent_bullet + bullet
            run.font.size = Pt(font_size)
            run.font.color.rgb = color
        run.font.name = 'Calibri'
    return tb

def content_slide(prs, title_text, bullets,
                  left_col_bullets=None, right_col_bullets=None,
                  note_text=None, two_col=False):
    """Standard content slide with dark-blue top bar."""
    slide = prs.slides.add_slide(blank_layout)

    # Background
    add_rect(slide, 0, 0, 13.333, 7.5, WHITE)

    # Top bar
    add_rect(slide, 0, 0, 13.333, 1.05, DARK_BLUE)

    # Decorative teal accent stripe
    add_rect(slide, 0, 1.05, 13.333, 0.07, TEAL)

    # Title text in bar
    add_textbox(slide, title_text,
                0.3, 0.08, 12.7, 0.9,
                font_size=28, bold=True, color=WHITE, align=PP_ALIGN.LEFT)

    if two_col and left_col_bullets and right_col_bullets:
        # Left column
        add_bullets(slide, left_col_bullets,
                    0.4, 1.22, 6.1, 5.9, font_size=16)
        # Vertical separator
        add_rect(slide, 6.66, 1.22, 0.04, 5.9, PALE_TEAL)
        # Right column
        add_bullets(slide, right_col_bullets,
                    6.85, 1.22, 6.0, 5.9, font_size=16)
    else:
        content_y = 1.22
        if note_text:
            add_bullets(slide, bullets, 0.5, content_y, 12.3, 5.3, font_size=17)
            # Note box
            note_y = 6.55
            add_rect(slide, 0.5, note_y, 12.33, 0.72, PALE_TEAL)
            add_textbox(slide, "📌  " + note_text,
                        0.6, note_y + 0.05, 12.1, 0.62,
                        font_size=14, color=DARK_BLUE, italic=True)
        else:
            add_bullets(slide, bullets, 0.5, content_y, 12.3, 6.0, font_size=17)
    return slide

def section_divider(prs, section_num, section_title, subtitle=""):
    """Full dark-blue section divider slide."""
    slide = prs.slides.add_slide(blank_layout)
    add_rect(slide, 0, 0, 13.333, 7.5, DARK_BLUE)
    # Teal accent block on left
    add_rect(slide, 0, 0, 0.55, 7.5, TEAL)
    # Section number
    if section_num:
        add_textbox(slide, f"SECTION {section_num}",
                    1.0, 2.1, 11.0, 0.7,
                    font_size=20, bold=False, color=TEAL, align=PP_ALIGN.LEFT)
    # Section title
    add_textbox(slide, section_title,
                1.0, 2.75, 11.0, 1.5,
                font_size=40, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
    if subtitle:
        add_textbox(slide, subtitle,
                    1.0, 4.35, 11.0, 0.8,
                    font_size=20, color=TEAL, align=PP_ALIGN.LEFT)
    return slide

def table_slide(prs, title_text, headers, rows, col_widths):
    """Slide with a formatted table."""
    from pptx.util import Inches, Pt
    slide = prs.slides.add_slide(blank_layout)
    add_rect(slide, 0, 0, 13.333, 7.5, WHITE)
    add_rect(slide, 0, 0, 13.333, 1.05, DARK_BLUE)
    add_rect(slide, 0, 1.05, 13.333, 0.07, TEAL)
    add_textbox(slide, title_text, 0.3, 0.08, 12.7, 0.9,
                font_size=28, bold=True, color=WHITE, align=PP_ALIGN.LEFT)

    n_cols = len(headers)
    n_rows = len(rows) + 1  # header row
    tbl_left   = Inches(0.4)
    tbl_top    = Inches(1.3)
    tbl_width  = Inches(12.5)
    tbl_height = Inches(5.8)

    table = slide.shapes.add_table(n_rows, n_cols, tbl_left, tbl_top,
                                   tbl_width, tbl_height).table
    # Set col widths
    total = sum(col_widths)
    for ci, cw in enumerate(col_widths):
        table.columns[ci].width = Inches(12.5 * cw / total)

    # Header row
    for ci, hdr in enumerate(headers):
        cell = table.cell(0, ci)
        cell.fill.solid()
        cell.fill.fore_color.rgb = DARK_BLUE
        cell.text = hdr
        cell.text_frame.paragraphs[0].runs[0].font.color.rgb = WHITE
        cell.text_frame.paragraphs[0].runs[0].font.bold = True
        cell.text_frame.paragraphs[0].runs[0].font.size = Pt(15)
        cell.text_frame.paragraphs[0].runs[0].font.name = 'Calibri'
        cell.text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER

    # Data rows
    for ri, row_data in enumerate(rows):
        bg = PALE_TEAL if ri % 2 == 0 else WHITE
        for ci, val in enumerate(row_data):
            cell = table.cell(ri + 1, ci)
            cell.fill.solid()
            cell.fill.fore_color.rgb = bg
            cell.text = val
            cell.text_frame.paragraphs[0].runs[0].font.size = Pt(13)
            cell.text_frame.paragraphs[0].runs[0].font.name = 'Calibri'
            cell.text_frame.paragraphs[0].runs[0].font.color.rgb = DARK_GRAY
    return slide

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 1 – Title
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, DARK_BLUE)
# Decorative teal strip at bottom
add_rect(slide, 0, 6.8, 13.333, 0.7, TEAL)
# Left accent
add_rect(slide, 0, 0, 0.55, 7.5, TEAL)
# Thin pale stripe
add_rect(slide, 0.55, 0, 0.08, 7.5, RGBColor(0x00, 0xA8, 0xAD))

add_textbox(slide, "MAXILLARY AND MANDIBULAR", 1.0, 1.5, 11.8, 1.2,
            font_size=42, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_textbox(slide, "LANDMARKS", 1.0, 2.65, 11.8, 1.1,
            font_size=52, bold=True, color=TEAL, align=PP_ALIGN.LEFT)
add_textbox(slide, "A Comprehensive Guide for Dental Students",
            1.0, 3.8, 11.8, 0.75,
            font_size=22, color=WHITE, align=PP_ALIGN.LEFT)
add_rect(slide, 1.0, 4.65, 3.5, 0.06, TEAL)
add_textbox(slide, "Prosthodontics  |  Dental Anatomy  |  NEET MDS / BDS Preparation",
            1.0, 4.82, 11.8, 0.55,
            font_size=16, color=RGBColor(0xCC, 0xDD, 0xFF), align=PP_ALIGN.LEFT, italic=True)
add_textbox(slide, "medistudygo.com", 1.0, 6.88, 5.0, 0.45,
            font_size=14, color=WHITE, align=PP_ALIGN.LEFT)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 2 – Learning Objectives
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Learning Objectives",
    [
        "Identify and describe all major maxillary and mandibular anatomical landmarks",
        "Distinguish between hard tissue and soft tissue landmarks in each arch",
        "Explain the clinical significance of each landmark in prosthodontic treatment",
        "Apply landmark knowledge to determine denture borders and extensions",
        "Differentiate primary stress-bearing, secondary support, and relief areas",
        "Correlate landmarks with common clinical complications and solutions",
        "Solve NEET MDS / BDS examination questions on this topic with confidence",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 3 – Why Landmarks Matter
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, WHITE)
add_rect(slide, 0, 0, 13.333, 1.05, DARK_BLUE)
add_rect(slide, 0, 1.05, 13.333, 0.07, TEAL)
add_textbox(slide, "Why Landmarks Matter in Dentistry",
            0.3, 0.08, 12.7, 0.9, 28, bold=True, color=WHITE)

# Three card layout
cards = [
    ("Prosthetic\nFoundation",   "Landmarks define denture borders, extensions & support areas essential for fit and retention"),
    ("Surgical\nPlanning",       "Guide implant placement, extractions, and surgical procedures safely away from vital structures"),
    ("Diagnostic\nReference",    "Provide consistent reference points for radiographic interpretation and treatment planning"),
]
card_colors = [DARK_BLUE, MID_BLUE, TEAL]
for i, (hdg, txt) in enumerate(cards):
    cx = 0.5 + i * 4.27
    add_rect(slide, cx, 1.3, 3.9, 5.9, card_colors[i])
    add_textbox(slide, hdg, cx + 0.2, 1.5, 3.5, 1.1,
                font_size=20, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
    add_rect(slide, cx + 0.2, 2.65, 3.5, 0.05, WHITE)
    add_textbox(slide, txt, cx + 0.2, 2.8, 3.5, 3.8,
                font_size=16, color=RGBColor(0xCC, 0xDD, 0xFF), align=PP_ALIGN.LEFT)

add_textbox(slide, "Mastering these landmarks = foundation of successful clinical dentistry",
            0.5, 7.1, 12.3, 0.35,
            font_size=14, color=MID_BLUE, italic=True, align=PP_ALIGN.CENTER)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 4 – Classification of Landmarks
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Classification of Oral Landmarks",
    [],
    two_col=True,
    left_col_bullets=[
        "BY TISSUE TYPE:",
        "Hard Tissue Landmarks",
        "- Bony prominences (ridges, tuberosities)",
        "- Sutures and foramina",
        "- Tori and exostoses",
        "",
        "Soft Tissue Landmarks",
        "- Mucosa, frena, vestibules",
        "- Palate (hard & soft)",
        "- Muscle attachments & folds",
    ],
    right_col_bullets=[
        "BY ARCH:",
        "Maxillary Landmarks (~18 structures)",
        "- Labial & buccal vestibule/frenum",
        "- Hard palate, soft palate, rugae",
        "- Tuberosity, hamular notch, fovea",
        "",
        "Mandibular Landmarks (~16 structures)",
        "- Labial & buccal vestibule/frenum",
        "- Retromolar pad, buccal shelf",
        "- Oblique ridges, tori, mental foramen",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 5 – Section 2 Divider: Maxillary Landmarks
# ═══════════════════════════════════════════════════════════════════════════
section_divider(prs, "2",
                "Maxillary Landmarks",
                "Soft Tissue Structures  •  Slides 6 – 12")

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 6 – Labial Vestibule (Maxillary)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Labial Vestibule — Maxillary",
    [
        "Definition: Space between the maxillary anterior teeth/alveolar ridge and the inner surface of the lips",
        "Boundaries: Alveolar ridge internally; lips externally; limited by labial frenum in the midline",
        "Lined by non-keratinised alveolar mucosa that transitions to keratinised attached gingiva",
        "Contains the labial flange of the maxillary complete denture",
        "Depth varies with resorption — greater resorption → shallower vestibule → shorter flange possible",
        "Clinical Note: Overextension here causes lip displacement and denture dislodgement; under-extension reduces retention",
        "Muscle activity (orbicularis oris) must be assessed during border moulding",
    ],
    note_text="Key exam fact: The labial vestibule is the primary space for the labial flange of the maxillary denture."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 7 – Labial Frenum (Maxillary)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Labial Frenum — Maxillary",
    [
        "Definition: A fold of mucous membrane that connects the inner surface of the upper lip to the alveolar mucosa at the midline",
        "Types: Simple (thin mucosal fold) | Complex (contains muscle fibres — clinically significant)",
        "High frenum attachment can cause a midline diastema between maxillary central incisors",
        "Denture consideration: A notch (frenal notch) must be cut into the denture flange to accommodate frenum movement",
        "Failure to provide relief → denture displacement during lip movement, pain, and ulceration",
        "Complex or low-attached frenum may require frenectomy before denture construction",
        "Also serves as anterior landmark for midline determination during denture tooth setup",
    ],
    note_text="Frenal notch is mandatory in all complete maxillary dentures — a common exam and clinical point."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 8 – Buccal Vestibule (Maxillary)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Buccal Vestibule — Maxillary",
    [
        "Definition: The space between the teeth/residual ridge and the cheeks, posterior to the labial vestibule",
        "Boundaries: Alveolar ridge medially; buccinator muscle and cheek laterally; limited posteriorly by masseter muscle",
        "Separated from labial vestibule by the buccal frenum on each side",
        "The buccal flange of the maxillary denture occupies this space",
        "Depth influenced by degree of alveolar resorption and buccinator muscle tone",
        "The masseter muscle limits posterior extension of the buccal flange when mouth is open",
        "During border moulding: stretching cheeks side-to-side and forward determines buccal flange extension",
        "Overextension into the masseteric notch causes lateral denture displacement",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 9 – Buccal Frenum (Maxillary)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Buccal Frenum — Maxillary",
    [
        "Definition: A fold of mucous membrane connecting the buccal mucosa to the alveolar ridge between the premolar region",
        "Location: Situated at the junction of the labial and buccal vestibules (canine–premolar area) — one on each side",
        "Marks the transition from the labial flange to the buccal flange of the denture",
        "A buccal frenal notch must be provided in the denture flange for free movement",
        "Buccal frenum does not usually contain muscle fibres (unlike the labial frenum)",
        "Clinical significance: Serves as a lateral border landmark during border moulding",
        "Distinguishing labial vs buccal frenum: Labial = midline anterior; Buccal = lateral canine-premolar region",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 10 – Hard Palate
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Hard Palate",
    [
        "Definition: The anterior two-thirds of the roof of the mouth; formed by the palatine processes of the maxilla and horizontal plates of the palatine bones",
        "Covered by dense, firmly attached fibrous mucosa (masticatory mucosa) — tightly bound to periosteum",
        "Primary support area for the maxillary complete denture — bears occlusal loads",
        "Sub-regions: Median raphe (requires relief), anterior rugae area, postero-lateral slopes",
        "Postero-lateral slopes: secondary stress-bearing areas; cortical bone covered by moderate mucosal thickness",
        "The anterior one-third (rugae area) has an irregular surface — aids in phonetics and food manipulation",
        "The hard palate is NOT compressible — provides stable seating for the denture base",
    ],
    note_text="Postero-lateral slopes = secondary stress-bearing area; Central median raphe = relief area."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 11 – Soft Palate
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Soft Palate",
    [
        "Definition: The posterior moveable portion of the palate; consists of muscle and fibrous connective tissue covered by mucosa",
        "Separates the oral cavity from the nasopharynx during swallowing and speech",
        "Forms the posterior border of the maxillary complete denture",
        "Classified as: Class I (nearly horizontal — most favourable), Class II (45° — average), Class III (nearly vertical — least favourable for posterior palatal seal)",
        "Movement during phonation ('Ah' sound) is used to identify the vibrating line",
        "A well-extended posterior border onto the soft palate improves retention by enhancing the post-dam seal",
        "Over-extension causes gagging; under-extension results in loss of posterior seal and denture displacement",
    ],
    note_text="Class I soft palate provides the best posterior palatal seal; Class III is the most challenging."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 12 – Vibrating Line
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Vibrating Line (Ah Line)",
    [
        "Definition: An imaginary line across the posterior part of the palate that marks the junction between the moveable soft palate and the relatively immoveable hard palate",
        "Also called the 'Ah line' — identified by asking the patient to say 'Ah' and observing where soft palate begins to move",
        "The posterior border of the maxillary denture is placed AT the vibrating line",
        "Clinically identified using a pressure-indicating pencil mark or Valsalva manoeuvre",
        "The posterior palatal seal (post-dam) is placed at / just anterior to this line",
        "Fovea palatinae (two small pits) serve as reliable landmarks — they lie ON or just anterior to the vibrating line",
        "Incorrect placement: Anterior = reduced retention; Posterior = gag reflex / soft tissue trauma",
    ],
    note_text="'Ah line' = vibrating line = posterior border of maxillary denture. Fovea palatinae are the anatomical guide."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 13 – Section 3 Divider: Maxillary Hard Tissue
# ═══════════════════════════════════════════════════════════════════════════
section_divider(prs, "3",
                "Maxillary Landmarks",
                "Hard Tissue Structures  •  Slides 14 – 22")

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 14 – Alveolar Ridge (Maxillary)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Alveolar Ridge — Maxillary",
    [
        "Definition: The residual bony ridge that remains after extraction of maxillary teeth (formerly housed the tooth sockets)",
        "Primary support area for the maxillary denture — resists vertical occlusal forces",
        "Resorption pattern: Maxillary ridge resorbs upward and inward (centripetally) — arch becomes smaller over time",
        "Bone type: Dense cortical bone with cancellous core — good load-bearing capacity",
        "Classification (Atwood): I (pre-extraction) → II (post-extraction) → III–VI (progressive resorption)",
        "Undercuts: Lateral buccal undercuts may provide natural retention but can impede denture insertion — require relief or surgery",
        "Resorption rate is greatest in the first year post-extraction, then slows but continues lifelong",
    ],
    note_text="Maxilla resorbs centripetally (upward & inward); Mandible resorbs centrifugally (downward & outward)."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 15 – Incisive Papilla
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Incisive Papilla",
    [
        "Definition: An oval or pear-shaped pad of soft tissue overlying the incisive foramen at the anterior midline of the hard palate",
        "Location: Just posterior to the central incisors, in the midline",
        "Contains: Nasopalatine nerve and vessels passing through the incisive foramen — requires relief to avoid pressure",
        "Landmark for tooth positioning: The maxillary central incisors are placed 8–10 mm anterior to the centre of the incisive papilla",
        "It is a reliable landmark even in highly resorbed ridges (does NOT resorb with bone)",
        "Compression of the papilla by denture base → nasopalatine neuralgia (burning, tingling in anterior palate and premaxilla)",
        "Relief: A small relief area (scraping denture base or adding tissue conditioner) prevents nerve compression",
    ],
    note_text="Maxillary central incisors placed 8–10 mm anterior to incisive papilla — critical measurement for tooth setup."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 16 – Rugae
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Palatine Rugae",
    [
        "Definition: Irregular, asymmetric ridges or folds of masticatory mucosa on the anterior one-third of the hard palate",
        "Structure: 3–5 rugae; transverse ridges radiating laterally from the median raphe, firmly attached to palatine bone",
        "Functions: Assist in mastication and food manipulation; important for phonetics (palatal consonants)",
        "Rugoscopy: Used as a forensic identification tool — rugae pattern is unique to individuals (like fingerprints)",
        "In complete denture construction: Artificial rugae may be added to the denture palate to improve phonetics and tongue feel",
        "Highly keratinised — resistant to trauma and temperature changes",
        "Denture consideration: Rugae do NOT require special relief; they are incorporated into the tissue-bearing surface",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 17 – Midpalatal Suture / Median Palatal Raphe
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Midpalatal Suture (Median Palatal Raphe)",
    [
        "Definition: The fibrous union of the two palatine processes of the maxilla running in the midline of the hard palate",
        "Appearance: A raised, slightly elevated ridge visible as a midline pale line on the palate",
        "Covered by thin, poorly compressible mucosa with minimal submucosa — very sensitive to pressure",
        "A RELIEF AREA for complete maxillary dentures — denture base must be relieved over this area",
        "Failure to relieve → rocking/seesawing of denture, pressure sores, pain along midline palate",
        "In young patients the suture may be patent (unfused) — important consideration for RME in orthodontics",
        "May be prominent (raised) in some patients — more relief required; may be used as a reference for symmetry",
    ],
    note_text="Median palatal raphe = relief area (thin, non-compressible mucosa). Always relieve in denture construction."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 18 – Maxillary Tuberosity
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Maxillary Tuberosity",
    [
        "Definition: The rounded, bulbous posterior extension of the maxillary alveolar ridge distal to the last molar",
        "Composed of cancellous spongy bone covered by dense fibrous tissue mucosa",
        "Primary stress-bearing area for the maxillary complete denture — provides posterior support",
        "The denture must cover the tuberosity to the full extent of its distal slope for maximum coverage and retention",
        "Undercuts: Bilateral undercuts are common — must be evaluated with a surveyor; block out before denture construction",
        "Enlarged tuberosity: May encroach on inter-arch space — surgical reduction (tuberoplasty) may be needed",
        "Fibrous tuberosity: Pendulous / fibrous tuberosity is common post-extraction — may require excision for stable base",
        "Clinical tip: Hamular notch is located just distal and medial to the tuberosity",
    ],
    note_text="Maxillary tuberosity = PRIMARY stress-bearing area posteriorly. Must always be covered by the denture."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 19 – Hamular Notch (Pterygomaxillary Notch)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Hamular Notch (Pterygomaxillary Notch)",
    [
        "Definition: A groove or notch between the maxillary tuberosity and the hamulus of the medial pterygoid plate of the sphenoid bone",
        "Contains: The pterygomandibular raphe, superior pharyngeal constrictor, and tensor veli palatini fibers",
        "Significance: Marks the POSTERIOR LATERAL LIMIT of the maxillary denture on each side",
        "The posterior border of the maxillary denture passes through the hamular notch bilaterally",
        "Palpated clinically: Place finger distal to tuberosity — the notch is felt as a soft depression",
        "Connects anteriorly with the vibrating line at the fovea palatinae",
        "Importance in border moulding: Must record full extent without impingement on pterygomandibular raphe",
    ],
    note_text="Hamular notch = posterior lateral corner of maxillary denture. Connects to vibrating line = posterior border."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 20 – Fovea Palatinae
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Fovea Palatinae",
    [
        "Definition: Two small, round pits or depressions in the mucosa at the junction of hard and soft palate on either side of the midline",
        "Formed by: Coalescence of mucous gland ducts opening onto the palatal surface",
        "Location: At or just anterior to the vibrating line — reliable anatomical guide for posterior palatal seal",
        "They are ALWAYS on the soft palate side or AT the junction — hence posterior denture border lies at the fovea or just posterior to them",
        "Identified by running a probe gently over the posterior hard palate — patient may feel mild sensitivity",
        "Glandular secretions from these glands contribute to the seal via capillary adhesion",
        "Combined with vibrating line detection: Fovea + vibrating line confirms posterior denture border position",
    ],
    note_text="Fovea palatinae lies AT or JUST ANTERIOR to the vibrating line — landmark for post-dam placement."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 21 – Postero-lateral Slopes of Hard Palate
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Postero-lateral Slopes of the Hard Palate",
    [
        "Definition: The slopes of the hard palate on either side of the midline, posterior to the rugae region",
        "Classified as SECONDARY stress-bearing areas for the maxillary denture",
        "Covered by moderate thickness of resilient mucosa over dense cortical bone",
        "Inclined at ~45° — favorable for load distribution under occlusal forces",
        "Wider post-palatal seal area: The glandular submucosa here allows some compression for improved seal",
        "These slopes provide vertical resistance and lateral stabilization of the denture",
        "Denture design: Should have intimate contact with these slopes — no relief required",
        "Located lateral to the median raphe (which requires relief) and medial to the tuberosity",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 22 – Posterior Palatal Seal (Post-Dam)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Posterior Palatal Seal (Post-Dam Area)",
    [
        "Definition: The area at the posterior border of the maxillary denture where a compression seal is created to maintain atmospheric pressure",
        "Extends from one hamular notch to the other, passing through / at the vibrating line",
        "Width: 1–2 mm on hard palate side; 2–3 mm extending onto soft palate",
        "Mechanism of retention: Creates a peripheral seal preventing air ingress — atmospheric pressure holds denture in place",
        "The post-dam is carved into the master cast or incorporated into denture base during processing",
        "Palatine glands (fovea region) add glandular adhesion, enhancing the seal",
        "Inadequate post-dam → loss of posterior seal, denture falls during mouth opening / yawning",
        "Types of post-dam: Scrape-and-add method; Beading and boxing method; Lab technique",
    ],
    note_text="Post-dam = atmospheric seal = most important factor in maxillary denture retention. Runs hamular notch to hamular notch."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 23 – Section Divider: Mandibular Landmarks
# ═══════════════════════════════════════════════════════════════════════════
section_divider(prs, "4",
                "Mandibular Landmarks",
                "Overview & Introduction  •  Slides 24 – 25")

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 24 – Overview of Mandibular Anatomy
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Overview of Mandibular Anatomy",
    [
        "The mandible is a U-shaped, horseshoe-form bone forming the lower jaw — the only mobile bone of the facial skeleton",
        "Challenges vs. maxilla: Smaller denture-bearing area, no palate for atmospheric seal, surrounded by mobile musculature",
        "Resorption pattern: Centrifugal (downward and outward) — arch becomes wider and lower over time",
        "Mandibular dentures are inherently less stable than maxillary dentures due to muscle attachments",
        "Key structures: Residual alveolar ridge, retromolar pad, buccal shelf, oblique ridges, mylohyoid ridge, genial tubercles, mental foramina",
        "Floor of mouth muscles (mylohyoid, genioglossus, geniohyoid) actively displace mandibular dentures",
        "Success of mandibular complete dentures depends critically on understanding each landmark's influence on flange extension",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 25 – Section Divider: Mandibular Key Structures
# ═══════════════════════════════════════════════════════════════════════════
section_divider(prs, "5",
                "Mandibular Landmarks",
                "Key Structures  •  Slides 26 – 37")

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 26 – Labial Vestibule (Mandibular)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Labial Vestibule — Mandibular",
    [
        "Definition: Space between the mandibular anterior teeth/alveolar ridge and the inner surface of the lower lip",
        "Shallower than its maxillary counterpart — depth further reduced with progressive alveolar resorption",
        "Bounded by alveolar ridge posteriorly, lower lip anteriorly, and mandibular labial frenum in the midline",
        "The labial flange of the mandibular denture occupies this space",
        "Mentalis muscle action (chin raising, lip pursing) limits the depth of this vestibule",
        "Border moulding technique: Stretch lower lip outward and upward to record full functional extension",
        "Overextension → denture tipping anteriorly; under-extension → loss of anterior retention",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 27 – Labial Frenum (Mandibular)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Labial Frenum — Mandibular",
    [
        "Definition: A fold of mucous membrane connecting the inner surface of the lower lip to the alveolar mucosa at the mandibular midline",
        "Generally thinner and less bulky than the maxillary labial frenum",
        "Attachment level varies: High attachment → restricted vestibule depth; may cause instability",
        "A frenal notch must be provided in the mandibular labial flange for free movement",
        "High frenum attachment with thin alveolar ridge → frenectomy recommended before denture construction",
        "After significant resorption the frenum may appear to be attached at the crest of the ridge — very challenging for denture retention",
        "A notch that is too deep → weakened flange and fracture risk; must balance relief with strength",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 28 – Buccal Vestibule (Mandibular)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Buccal Vestibule — Mandibular",
    [
        "Definition: Space between the mandibular posterior alveolar ridge and the cheeks/buccinator",
        "Bounded: Buccinator muscle laterally; alveolar ridge and external oblique ridge medially; masseter anteriorly when mouth open",
        "Limits: The external oblique ridge limits the depth of the buccal flange of the mandibular denture",
        "Narrower and shallower than the maxillary buccal vestibule",
        "During border moulding: Cheek-stretch movements record buccinator action",
        "The buccal flange of the mandibular denture fills this vestibule",
        "Masseter muscle: When patient opens wide, masseter contracts and raises the external oblique ridge — shortens the distal buccal flange",
        "Distal extension: Terminates at the anterior border of the ramus / retromolar pad area",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 29 – Buccal Frenum (Mandibular)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Buccal Frenum — Mandibular",
    [
        "Definition: A fold of mucous membrane connecting the buccal mucosa to the mandibular alveolar ridge in the premolar region",
        "Location: In the canine-premolar region, separating the labial vestibule from the buccal vestibule",
        "Marks the anterior limit of the mandibular buccal shelf area",
        "A frenal notch must be provided in the mandibular buccal flange",
        "Usually less prominent than the maxillary buccal frenum",
        "May be duplicated (bilateral accessory frena) in some patients — requires additional notching",
        "Clinical note: The buccal shelf area is said to extend from the buccal frenum to the anterior border of the masseter",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 30 – Alveolar Ridge (Mandibular)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Alveolar Ridge — Mandibular",
    [
        "Definition: The residual bony ridge of the mandible following tooth extraction",
        "Resorption pattern: Centrifugal — resorbs downward, backward, and outward → arch gets wider and lower",
        "Rate of resorption is 4× greater in the mandible than in the maxilla over time",
        "Severely resorbed ridges: May be nearly flat or concave — poor retention and stability challenges",
        "Crest of ridge: Covered by keratinised attached mucosa — primary tissue-bearing surface in mild resorption",
        "In advanced resorption, the crest may be a narrow knife-edge or flat cortical shelf — painful under loading",
        "Pre-prosthetic surgery options: Alveoloplasty, ridge augmentation, vestibuloplasty to improve ridge form",
        "Residual ridge: Provides minimal but important primary support; most support comes from the buccal shelf",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 31 – Retromolar Pad
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Retromolar Pad",
    [
        "Definition: A pear-shaped, roughly triangular pad of soft tissue located posterior to the last mandibular molar (or distal to the residual ridge)",
        "Composition: Glandular tissue (mucous glands), loose areolar connective tissue, lower end of the pterygomandibular raphe, and fibres of buccinator and superior constrictor",
        "The posterior border of the mandibular denture MUST cover the retromolar pad (at least the anterior two-thirds)",
        "Why cover it? Provides posterior limit and retention; fibres of the pterygomandibular raphe anchor it",
        "Occlusal plane landmark: The occlusal plane of mandibular denture teeth is placed at the level of the retromolar pad or at its junction with the external oblique ridge",
        "Does NOT resorb with bone — remains even in severely resorbed mandibles → reliable landmark",
        "Overextension posteriorly beyond the retromolar pad → activation of pterygomandibular raphe → denture displacement",
    ],
    note_text="Retromolar pad = posterior limit of mandibular denture. Occlusal plane = middle 1/3 of retromolar pad height."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 32 – Buccal Shelf
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Buccal Shelf",
    [
        "Definition: The area of cortical bone on the buccal side of the mandibular residual ridge, between the crest of the ridge and the external oblique ridge",
        "PRIMARY stress-bearing area for mandibular complete dentures — the most important support area",
        "Why primary? Covered by firm, well-attached mucosa over dense cortical bone; oriented at nearly right angles to occlusal force",
        "Boundaries: Buccal frenum anteriorly; anterior border of masseter posteriorly; crest of alveolar ridge medially; external oblique ridge laterally",
        "Approximately 5 mm wide on each side in a well-formed mandible",
        "More important as alveolar ridge resorbs — becomes the main load-bearing structure in edentulous patients",
        "Denture design: The buccal flange must extend to cover and contact the buccal shelf without impinging on the external oblique ridge",
    ],
    note_text="Buccal shelf = PRIMARY stress-bearing area for mandibular dentures (NOT the crest of the ridge)."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 33 – External Oblique Ridge
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "External Oblique Ridge",
    [
        "Definition: A bony ridge on the lateral surface of the mandible, continuous with the anterior border of the ramus, running downward and forward across the body of the mandible",
        "Marks the lateral boundary of the buccal shelf and limits the lateral extension of the buccal flange",
        "Covered by thin, non-resilient mucosa — sharp ridges cause pressure sores if contacted by denture flange",
        "The buccal flange of the mandibular denture terminates at (but does NOT impinge on) the external oblique ridge",
        "When prominent and sharp, surgical reduction (alveoloplasty) may improve denture comfort",
        "Serves as an attachment for the buccinator muscle inferiorly",
        "Radiographically: Visible as a radiopaque line on periapical/panoramic X-rays",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 34 – Internal Oblique Ridge (Mylohyoid Ridge)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Internal Oblique Ridge (Mylohyoid Ridge)",
    [
        "Definition: A bony ridge on the inner (lingual) surface of the mandible, extending from below the last molar region downward and forward",
        "Primary attachment: Mylohyoid muscle (forms the floor of the mouth) attaches along its entire length",
        "Limits the lingual flange of the mandibular denture — the flange must pass below it",
        "When sharp and prominent: Causes pain under denture loading; may require surgical smoothing (alveoloplasty)",
        "The lingual flange extends from below the mylohyoid ridge to the floor of the mouth mucosa",
        "Posterior aspect (near last molar): More prominent and horizontal — most often problematic for denture stability",
        "Mylohyoid groove: Lies posterior and inferior to the ridge, transmitting the mylohyoid nerve and vessels",
    ],
    note_text="Sharp mylohyoid ridge = most common cause of pain with mandibular dentures in the posterior lingual area."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 35 – Mylohyoid Muscle
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Mylohyoid Muscle",
    [
        "Origin: Mylohyoid line (internal oblique ridge) of the mandible — entire length",
        "Insertion: Body of hyoid bone and median raphe (fibrous band between the two halves of muscle)",
        "Action: Elevates floor of mouth during initial phase of swallowing; assists in mouth opening (when hyoid is fixed)",
        "Forms the FLOOR OF MOUTH — defines the lingual extent of the mandibular denture",
        "The mandibular lingual flange must be carefully contoured to avoid impinging on this muscle during function",
        "Mylohyoid notch: The lingual flange must dip below (pass inferior to) the mylohyoid attachment — creates the retromylohyoid eminence space",
        "Overextension of lingual flange onto mylohyoid → denture rises during swallowing → patient complaint",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 36 – Genial Tubercles (Mental Spines)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Genial Tubercles (Mental Spines)",
    [
        "Definition: Small bony prominences (superior and inferior pairs) on the inner (lingual) surface of the mandible near the midline at the symphysis",
        "Attachments: Superior genial tubercles → genioglossus muscle; Inferior genial tubercles → geniohyoid muscle",
        "Location: Just above the lower border of the mandible, posterior to the symphysis",
        "After severe mandibular resorption: The genial tubercles may become the HIGHEST POINT of the ridge — project above alveolar crest",
        "Significance: Must be relieved in the mandibular denture; otherwise cause severe pain and denture instability",
        "The genial tubercle area may be located by palpation — felt as a hard knob at the lingual midline",
        "Pre-prosthetic surgery: Genial tubercle reduction (geniotomy) required in advanced cases",
    ],
    note_text="In severely resorbed mandibles, genial tubercles become the highest point — always relieve in denture base."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 37 – Mental Foramen
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Mental Foramen",
    [
        "Definition: An opening on the lateral (buccal) surface of the mandible transmitting the mental nerve and vessels (terminal branch of inferior alveolar nerve)",
        "Normal location: Below the apex of the 2nd premolar / between 1st and 2nd premolars at mid-height of body of mandible",
        "With resorption: The foramen migrates toward the crest of the ridge — may eventually open at the crest level",
        "Clinical significance: Pressure on the mental nerve from denture base → mental neuralgia (burning, tingling over lower lip and chin)",
        "Denture relief: The area overlying the mental foramen must be relieved — detected using pressure-indicating paste",
        "Implant placement: Always identify mental foramen on CBCT before placing posterior mandibular implants",
        "Anterior loop: The mental nerve often loops anteriorly before exiting — extra safety margin of 5 mm required",
    ],
    note_text="With severe resorption, mental foramen rides to crest of ridge — provide RELIEF to prevent mental neuralgia."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 38 – Mandibular Tori
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Mandibular Tori (Torus Mandibularis)",
    [
        "Definition: Bony exostoses (overgrowths of cortical bone) on the lingual surface of the mandible, typically in the premolar region",
        "Prevalence: Approximately 8–10% of the population; bilateral in ~90% of cases",
        "Covered by thin, poorly vascularised mucosa — highly susceptible to pressure sores from denture flanges",
        "Mandibular denture: Tori MUST be relieved or surgically removed before denture construction",
        "Options: (1) Surgical tori removal (torectomy); (2) Block-out relief in denture base",
        "Small tori: Can be managed with block-out relief in the denture; large or multiple tori require surgery",
        "Do NOT confuse with: Mandibular tori vs. mandibular exostoses (lateral surface) vs. palatine tori (palate)",
        "Post-removal healing: 6–8 weeks needed before impressions for denture",
    ],
    note_text="Bilateral lingual tori in premolar area — provide relief or perform torectomy before fabricating mandibular denture."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 39 – Section 6 Divider
# ═══════════════════════════════════════════════════════════════════════════
section_divider(prs, "6",
                "Additional Mandibular Structures",
                "Floor of Mouth Landmarks  •  Slides 40 – 43")

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 40 – Lingual Frenum
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Lingual Frenum",
    [
        "Definition: A midline fold of mucous membrane connecting the ventral surface of the tongue to the floor of the mouth",
        "Located at the anterior midline lingual floor",
        "When short or prominent (ankyloglossia / 'tongue-tie'): Restricts tongue movement → speech difficulties; may displace mandibular denture",
        "A notch must be provided in the anterior lingual flange of the mandibular denture",
        "Ankyloglossia: Tongue tie — frenuloplasty or frenectomy may be required for functional denture wearing",
        "Palpation: Ask patient to raise tongue tip to roof of mouth — frenum becomes taut and visible",
        "The lingual notch in the denture is usually the widest notch of all mandibular frenal notches",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 41 – Sublingual Fold (Plica Sublingualis)
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Sublingual Fold (Plica Sublingualis)",
    [
        "Definition: A fold of mucous membrane overlying the sublingual gland that runs from the lingual frenum backward on each side of the floor of mouth",
        "Also called: Alveolingual sulcus fold; sublingual crescent",
        "Limits the lingual flange of the mandibular denture in the anterior region",
        "The lingual flange must contour around this fold without pressing on the sublingual gland",
        "When the tongue is raised during swallowing, the fold elevates — denture flange overextending here will be displaced",
        "The sublingual gland's secretions (saliva) assist in adhesion of the lingual surface of the mandibular denture",
        "During functional impression: Tongue movements record the full extent of the sublingual fold for accurate flange contour",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 42 – Retromylohyoid Eminence / Space
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Retromylohyoid Eminence (Space)",
    [
        "Definition: The space distal and inferior to the posterior end of the mylohyoid muscle in the retromolar region",
        "Bounded: Anteriorly by the mylohyoid muscle; posteriorly by the superior constrictor; laterally by the mandible; medially by the tongue",
        "The lingual flange of the mandibular denture extends into this space posteriorly — provides excellent retention",
        "Retromylohyoid curtain: The soft tissue fold at the posterior boundary of this space",
        "Must be recorded during functional / mucodisplacive impressions for complete denture",
        "If not captured: Short posterior lingual flange → poor retention and stability of mandibular denture",
        "Active recording: Ask patient to move tongue to the opposite corner of the mouth — opens the retromylohyoid space",
    ],
    note_text="Extending the lingual flange into the retromylohyoid space significantly improves mandibular denture retention."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 43 – Pterygomandibular Raphe
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Pterygomandibular Raphe",
    [
        "Definition: A fibrous band (tendinous raphe) stretching between the pterygoid hamulus of the medial pterygoid plate superiorly and the posterior end of the retromolar pad (mandible) inferiorly",
        "Gives origin to: Buccinator muscle anteriorly; Superior pharyngeal constrictor posteriorly",
        "Becomes taut when the mouth is FULLY OPEN — acts as a limiting structure for the distal buccal flange",
        "The posterior buccal flange of the mandibular denture must not impinge on this raphe",
        "Over-extension here → denture dislodged when patient opens wide (common patient complaint)",
        "Clinically identified: Ask patient to open wide — a taut fibromuscular band becomes visible/palpable at the junction of the buccal and retromolar regions",
        "Inferior dental block injection: The pterygomandibular raphe is the landmark for locating the injection point",
    ],
    note_text="Pterygomandibular raphe becomes taut on wide opening — denture flange must not overextend distal to retromolar pad."
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 44 – Section 7 Divider
# ═══════════════════════════════════════════════════════════════════════════
section_divider(prs, "7",
                "Clinical Applications",
                "Denture Borders, Support Areas & Common Errors  •  Slides 45 – 49")

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 45 – Maxillary Denture Borders Summary
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Maxillary Denture Borders — Summary",
    [],
    two_col=True,
    left_col_bullets=[
        "ANTERIOR / LABIAL BORDER:",
        "- Labial vestibule depth",
        "- Labial frenum (notch required)",
        "- Limited by orbicularis oris",
        "",
        "LATERAL / BUCCAL BORDER:",
        "- Buccal vestibule extent",
        "- Buccal frenum (notch required)",
        "- Masseter limits posterior extension",
        "- Terminates at hamular notch",
    ],
    right_col_bullets=[
        "POSTERIOR BORDER:",
        "- Passes through both hamular notches",
        "- Lies AT the vibrating line",
        "- Fovea palatinae are guide landmarks",
        "",
        "PALATAL COVERAGE:",
        "- Full hard palate coverage",
        "- Relief over median palatal raphe",
        "- Post-dam at vibrating line",
        "- Maxillary tuberosity must be covered",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 46 – Mandibular Denture Borders Summary
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Mandibular Denture Borders — Summary",
    [],
    two_col=True,
    left_col_bullets=[
        "ANTERIOR / LABIAL BORDER:",
        "- Labial vestibule (shallower than max)",
        "- Labial frenum notch",
        "- Mentalis muscle limits extension",
        "",
        "BUCCAL BORDER:",
        "- Buccal vestibule / buccal shelf",
        "- Buccal frenum notch",
        "- External oblique ridge laterally",
        "- Masseter limits posterior buccal",
        "- Pterygomandibular raphe (wide opening)",
    ],
    right_col_bullets=[
        "POSTERIOR BORDER:",
        "- Covers retromolar pad",
        "- At anterior border of masseter",
        "- Pterygomandibular raphe NOT impinged",
        "",
        "LINGUAL BORDER:",
        "- Lingual frenum notch",
        "- Sublingual fold limits anterior lingual",
        "- Mylohyoid muscle below attachment",
        "- Into retromylohyoid space posteriorly",
        "- Around mandibular tori (relief/surgery)",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 47 – Stress-Bearing vs Relief Areas Table
# ═══════════════════════════════════════════════════════════════════════════
table_slide(prs,
    "Stress-Bearing vs Relief Areas — Complete Dentures",
    ["Area", "Maxillary", "Mandibular"],
    [
        ["Primary Stress-Bearing",
         "Postero-lateral slopes of hard palate; Maxillary tuberosity",
         "Buccal shelf (cortical bone, right-angle to force)"],
        ["Secondary Stress-Bearing",
         "Residual alveolar ridge (anterior); Rugae region",
         "Residual alveolar ridge (crest, when present)"],
        ["Relief Areas",
         "Median palatal raphe (thin mucosa); Incisive papilla (nerve); Maxillary tori",
         "Genial tubercles; Mental foramen; Mandibular tori; Sharp mylohyoid ridge"],
        ["Peripheral Seal",
         "Post-dam at vibrating line (hamular notch → hamular notch)",
         "No atmospheric seal — peripheral seal from border moulding"],
        ["Posterior Limit",
         "Vibrating line / hamular notch",
         "Retromolar pad / pterygomandibular raphe"],
    ],
    col_widths=[2.5, 5.0, 5.0]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 48 – Common Errors in Landmark Recognition
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Common Errors in Landmark Recognition",
    [
        "Confusing the hamular notch with the pterygomaxillary notch — they are the same structure (synonymous terms)",
        "Placing posterior palatal seal anterior to the vibrating line — leads to inadequate seal and denture loss",
        "Failing to relieve the incisive papilla — causes nasopalatine neuralgia",
        "Overextending the buccal flange beyond the external oblique ridge (mandible) — causes pain and ulceration",
        "Not covering the retromolar pad — loses the posterior limit and reduces mandibular denture stability",
        "Ignoring the buccal shelf as primary support — designing dentures to rest only on the ridge crest",
        "Confusing the internal oblique ridge (mylohyoid) with external oblique ridge — different surfaces and clinical roles",
        "Failure to record the retromylohyoid space — short lingual flange, poor retention",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 49 – Comparison: Maxillary vs Mandibular
# ═══════════════════════════════════════════════════════════════════════════
table_slide(prs,
    "Maxillary vs Mandibular Landmarks — Comparison Summary",
    ["Feature", "Maxillary", "Mandibular"],
    [
        ["Bone shape",           "Horseshoe + palatal shelf",       "U-shaped, no palate"],
        ["Resorption direction", "Centripetal (up & inward)",       "Centrifugal (down & outward)"],
        ["Primary support area", "Postero-lateral palatal slopes",  "Buccal shelf"],
        ["Posterior limit",      "Vibrating line / hamular notch",  "Retromolar pad"],
        ["Atmospheric seal",     "Post-dam (palate)",               "None — border seal only"],
        ["Key relief areas",     "Median palatal raphe, incisive papilla", "Genial tubercles, mental foramen, tori"],
        ["Unique landmarks",     "Rugae, fovea palatinae, soft palate", "Buccal shelf, retromylohyoid space"],
        ["Frenum notches",       "Labial (1) + Buccal (2)",         "Labial (1) + Buccal (2) + Lingual (1)"],
        ["Muscle challenge",     "Orbicularis oris, masseter",      "Mylohyoid, genioglossus, buccinator"],
    ],
    col_widths=[2.5, 5.0, 5.0]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 50 – Section 8 Divider: Exam Focus
# ═══════════════════════════════════════════════════════════════════════════
section_divider(prs, "8",
                "Exam Focus",
                "High-Yield Points for NEET MDS / BDS  •  Slides 51 – 52")

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 51 – High-Yield Points for NEET MDS / BDS
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "High-Yield Points — NEET MDS / BDS Exams",
    [
        "Primary stress-bearing area maxilla = Postero-lateral slopes of hard palate; Primary stress-bearing area mandible = BUCCAL SHELF",
        "Posterior limit maxillary denture = Vibrating line passing through BOTH hamular notches",
        "Fovea palatinae: At / just anterior to vibrating line — landmark for posterior palatal seal",
        "Incisive papilla is NEVER covered without relief; maxillary centrals placed 8–10 mm anterior to its centre",
        "Retromolar pad = Posterior limit mandibular denture; Occlusal plane at middle 1/3 of its height",
        "Median palatal raphe = RELIEF area (thin mucosa, non-compressible); tuberosity = support area",
        "Ah line / vibrating line = Junction of hard and soft palate; identified with 'Ah' sound",
        "Mandibular resorption = 4× faster than maxillary; direction = centrifugal (downward and outward)",
        "External oblique ridge = limits buccal flange extension; Internal (mylohyoid) ridge = limits lingual flange",
        "Genial tubercles: Become highest point of ridge in severely resorbed mandible — always relieve",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 52 – Quick Revision Summary
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Quick Revision Summary",
    [],
    two_col=True,
    left_col_bullets=[
        "MAXILLARY LANDMARKS (key):",
        "- Labial / Buccal vestibule & frenum",
        "- Hard palate → primary support",
        "- Soft palate → posterior border",
        "- Vibrating line = 'Ah line'",
        "- Rugae → phonetics, forensics",
        "- Median palatal raphe → RELIEF",
        "- Incisive papilla → tooth positioning",
        "- Maxillary tuberosity → support",
        "- Hamular notch → posterior border",
        "- Fovea palatinae → post-dam guide",
        "- Post-dam → atmospheric seal",
    ],
    right_col_bullets=[
        "MANDIBULAR LANDMARKS (key):",
        "- Labial / Buccal / Lingual vestibule & frenum",
        "- Buccal shelf → PRIMARY support",
        "- Retromolar pad → posterior limit",
        "- External oblique ridge → buccal flange limit",
        "- Mylohyoid ridge → lingual flange limit",
        "- Genial tubercles → RELIEF",
        "- Mental foramen → RELIEF",
        "- Mandibular tori → relief/surgery",
        "- Sublingual fold → lingual flange limit",
        "- Retromylohyoid space → extend lingual flange",
        "- Pterygomandibular raphe → distal buccal limit",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 53 – Section 9 Divider: Conclusion
# ═══════════════════════════════════════════════════════════════════════════
section_divider(prs, "9",
                "Conclusion",
                "Key Takeaways & References  •  Slides 54 – 55")

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 54 – Key Takeaways
# ═══════════════════════════════════════════════════════════════════════════
content_slide(prs,
    "Key Takeaways",
    [
        "Landmark knowledge is the FOUNDATION of complete denture construction — every border, support, and seal depends on it",
        "Always distinguish hard tissue vs soft tissue and support vs relief vs border-limiting landmarks",
        "Maxillary dentures gain retention primarily via the posterior palatal seal (post-dam) — atmospheric pressure",
        "Mandibular dentures rely on the buccal shelf as the primary support area — NOT the ridge crest",
        "Soft tissue landmarks (frena, muscles) are DYNAMIC — must be captured during functional border moulding",
        "Resorption changes landmark relationships over time — reassess at each recall visit",
        "Correlate each landmark with its clinical consequence: wrong extension = discomfort, displacement, or neuralgia",
        "For exams: Memorise the primary support areas, relief areas, and posterior limits for BOTH arches",
    ]
)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 55 – Thank You / References
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, DARK_BLUE)
add_rect(slide, 0, 0, 0.55, 7.5, TEAL)
add_rect(slide, 0.55, 0, 0.08, 7.5, RGBColor(0x00, 0xA8, 0xAD))
add_rect(slide, 0, 6.8, 13.333, 0.7, TEAL)

add_textbox(slide, "Thank You", 1.0, 1.4, 11.0, 1.2,
            font_size=52, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_textbox(slide, "Questions? Discuss with your faculty or refer to the resources below.",
            1.0, 2.75, 11.0, 0.6,
            font_size=18, color=TEAL, align=PP_ALIGN.LEFT)

add_rect(slide, 1.0, 3.5, 11.0, 0.04, TEAL)

refs = [
    "1. Zarb GA, Bolender CL, Eckert SE. Prosthodontic Treatment for Edentulous Patients. 12th ed. Mosby Elsevier.",
    "2. Heartwell CM, Rahn AO. Syllabus of Complete Dentures. 4th ed. Lea & Febiger.",
    "3. Nallaswamy D. Textbook of Prosthodontics. 2nd ed. Jaypee Brothers.",
    "4. Winkler S. Essentials of Complete Denture Prosthodontics. 2nd ed.",
    "5. medistudygo.com — Maxillary and Mandibular Landmarks: A Comprehensive Guide",
]
ref_tb = slide.shapes.add_textbox(Inches(1.0), Inches(3.65), Inches(11.0), Inches(2.9))
tf = ref_tb.text_frame
tf.word_wrap = True
for i, ref in enumerate(refs):
    p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
    p.space_before = Pt(5)
    run = p.add_run()
    run.text = ref
    run.font.name = 'Calibri'
    run.font.size = Pt(13)
    run.font.color.rgb = RGBColor(0xCC, 0xDD, 0xFF)

add_textbox(slide, "medistudygo.com  |  Prosthodontics  |  NEET MDS Preparation",
            1.0, 6.87, 11.0, 0.4,
            font_size=13, color=WHITE, align=PP_ALIGN.LEFT)

# ── Save ────────────────────────────────────────────────────────────────────
out_path = '/tmp/workspace/dental-landmarks/Maxillary_Mandibular_Landmarks.pptx'
prs.save(out_path)

print(f"✅  Presentation saved to: {out_path}")
print(f"   Total slides: {len(prs.slides)}")
Running Command

python /tmp/workspace/dental-landmarks/create_pptx.py

Running Command

python3 - << 'EOF' from pptx import Presentation from pptx.util import Emu prs = Presentation('/tmp/workspace/dental-landmarks/Maxillary_Mandibular_Landmarks.pptx') sw, sh = prs.slide_width, prs.slide_height print(f"Slide dimensions: {Emu(sw).inches:.3f} x {Emu(sh).inches:.3f} inches") print(f"Total slides: {len(prs.slides)}\n") issues = [] for i, slide in enumerate(prs.slides, 1): for shape in slide.shapes: if shape.left is None or shape.top is None: continue right = shape.left + (shape.width or 0) bottom = shape.top + (shape.height or 0) # Off-slide if shape.left < 0 or shape.top < 0 or right > sw or bottom > sh: issues.append(f"Slide {i}: shape type={shape.shape_type} EXTENDS OFF-SLIDE " f"left={Emu(shape.left).inches:.2f} top={Emu(shape.top).inches:.2f} " f"right={Emu(right).inches:.2f} bottom={Emu(bottom).inches:.2f}") if issues: for iss in issues: print(iss) else: print("✅ No off-slide shapes detected.") EOF

Running Command

python3 - << 'EOF' from pptx import Presentation from pptx.util import Emu prs = Presentation('/tmp/workspace/dental-landmarks/Maxillary_Mandibular_Landmarks.pptx') print("=== CONTENT DUMP BY SLIDE ===\n") for i, slide in enumerate(prs.slides, 1): texts = [] for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip() if t: texts.append(t[:120]) print(f"--- Slide {i} ---") for t in texts: print(f" {t}") print() EOF

Running Command

python3 - << 'EOF' from pptx import Presentation from pptx.util import Emu prs = Presentation('/tmp/workspace/dental-landmarks/Maxillary_Mandibular_Landmarks.pptx') # Check table slides (47 and 49) for slide_num in [47, 49]: slide = prs.slides[slide_num - 1] print(f"=== Slide {slide_num} (table check) ===") for shape in slide.shapes: if shape.has_table: tbl = shape.table print(f" Table: {len(tbl.rows)} rows x {len(tbl.columns)} cols") for r in range(len(tbl.rows)): row_text = [tbl.cell(r, c).text[:40] for c in range(len(tbl.columns))] print(f" Row {r}: {row_text}") print() # Geometry check - any shape whose bottom > 7.5 inches print("=== Geometry: shapes near/beyond bottom edge ===") sw, sh = prs.slide_width, prs.slide_height for i, slide in enumerate(prs.slides, 1): for shape in slide.shapes: if shape.top is None or shape.height is None: continue bottom = shape.top + shape.height if Emu(bottom).inches > 7.45: print(f" Slide {i}: bottom={Emu(bottom).inches:.3f}\" (height={Emu(shape.height).inches:.3f}\")") print("Done.") EOF

Running Command

ls -lh /tmp/workspace/dental-landmarks/Maxillary_Mandibular_Landmarks.pptx

Running Command

ls -lh /tmp/workspace/dental-landmarks/

Running Command

python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/dental-landmarks/Maxillary_Mandibular_Landmarks.pptx') print(f'Total slides: {len(prs.slides)}') print(f'Slide dimensions: {prs.slide_width.inches:.2f}\" x {prs.slide_height.inches:.2f}\"') for i, slide in enumerate(prs.slides, 1): titles = [] for shape in slide.shapes: if shape.has_text_frame: text = shape.text_frame.text.strip() if text and len(text) < 80: titles.append(text[:70]) break print(f'Slide {i:2d}: {titles[0] if titles else \"(no text)\"}') "

Your presentation is ready! Here is the download link:

Maxillary Mandibular Landmarks

Presentation · PPTX


What's Inside (55 Slides)

The presentation covers every landmark discussed on the MediStudyGo guide, organized into 9 sections:
SectionSlidesTopic
11-4Introduction, objectives, classification
25-12Maxillary soft tissue landmarks (vestibules, frenae, hard/soft palate, vibrating line)
313-22Maxillary hard tissue landmarks (alveolar ridge, rugae, tuberosity, hamular notch, post-dam)
4-523-38Mandibular landmarks (retromolar pad, buccal shelf, oblique ridges, mylohyoid, genial tubercles, mental foramen, tori)
639-43Additional mandibular structures (lingual frenum, sublingual fold, pterygomandibular raphe)
744-49Clinical applications - denture borders, stress-bearing vs relief areas table, common errors
850-52NEET MDS / BDS high-yield exam points + quick revision
953-55Key takeaways, references

Design Highlights

  • 16:9 widescreen format
  • Deep blue (#1B3A6B) header bars + teal (#00868A) accents
  • Section divider slides with full blue backgrounds
  • Clinical note callout boxes on key slides
  • Comparison and stress-bearing area tables with alternating row colors
  • Calibri font throughout, 119 KB file size
This is a shared conversation. Sign in to Orris to start your own chat.