attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment

Summarize

Here is a structured summary of all 7 pages from this chapter (Chapter 17) of the Textbook of Agada Tantra and Vidhi Vaidyak:

Chapter 17: Legal Procedures, Courts, and Medical Evidence


17.1 Courts and Their Powers

Court - A body presided over by a judge or magistrate, acting as a tribunal in civil and criminal cases.
  • Judiciary: The system that interprets and applies law
  • Venue: Where a court sits
  • Courtroom: The room/building where proceedings occur
Two types of Courts of Law:
  1. Civil
  2. Criminal
Four types of Criminal Courts in India:
  1. Supreme Court
  2. High Court
  3. Session Court
  4. Magistrate Court
Supreme Court
  • Apex judicial body, located in New Delhi; operative since 28 January 1950
  • Comprises Chief Justice + 25 judges, appointed by the President
  • Has original jurisdiction (fundamental rights), appellate jurisdiction, and its decisions are binding on all courts
High Court
  • Highest court at state level, under the superintendence of the Supreme Court
  • Has Original Jurisdiction (direct cases) and Appellate Jurisdiction (appeals against lower courts)
  • Hears appeals in civil disputes, patents, designs, succession, land acquisition, insolvency, guardianship
  • Can confirm, alter, or reduce a Sessions Court sentence; death sentences from Sessions Court must be confirmed by the High Court
District/Session Court
  • Located at district headquarters; presided over by a District and Session Judge
  • Can pass any sentence authorized by law; death sentences need High Court confirmation
  • Assistant Session Judge: can pass any sentence except death or life imprisonment exceeding 10 years
  • District Judge has power to improve any sentence, including capital punishment
Magistrate Court - 3 Types:
TypePowers
Chief Judicial MagistrateAny sentence except death; imprisonment up to 7 years; unlimited fine
1st Class MagistrateAll cases except murder, rape, miscarriage; up to 3 years + fine up to Rs. 10,000
2nd Class MagistrateOffences punishable up to 1 year; fine up to Rs. 5,000
Juvenile Magistrates - Preside over juvenile courts; handle offenders below 16 years (boys) and 18 years (girls) under the Children Act 1960.
Sentences Authorized by Law: Death, Life imprisonment, Fine, Forfeiture of property, Treatment/rehabilitation of youthful offenders.
Revenue Courts - Handle land revenue cases; hierarchy: Board of Revenue → Commissioners → Collectors → Tehsildars → Assistant Tehsildars.
Subordinate/Lower Courts Chart:
  • Civil: District Judge → Sub Judge/Family Courts → Munsif → Small Causes Courts
  • Criminal: Session Judge → Metropolitan Magistrate / Class I, II, III Magistrates
  • Revenue: Board Revenue → Commissioner/Collector → Tehsildar → Naib Tehsildar

17.2 Inquest, Evidence, and Witnesses

Inquest - Legal/judicial inquiry to ascertain facts when death is under suspicious circumstances.
Conducted in cases of: Sudden death, suicide, homicide, infanticide, accidents, poisoning, unexplained death, burns/falls, anesthesia death, medical negligence, police custody death, prison death, police firing, exhumations, dowry deaths, industrial disease deaths.
CrPC Offence Types: Bailable, Non-bailable, Warrant cases, Summons cases, Cognizable, Non-cognizable.
Two main types of Inquest in India:
  1. Police Inquest (BNSS 194 / Sec 174 CrPC) - by police officer not below rank of senior head constable; answers 4 questions: identity of deceased, place, time, and apparent cause of death
    • Procedure (BNSS 176): Police informs Executive Magistrate → investigates scene → hands body to relatives (if no foul play) or sends for post mortem → report sent to District Magistrate → inquiry report = "Panchnama"
  2. Magistrate Inquest (Sec. 196 BNSS / Sec. 176 CrPC) - by District/Judicial/Executive Magistrate; not held routinely, only when specially indicated
Other types: Coroner Inquest, Medical Examiner System, Procurator Fiscal.

Evidence - Governed by Indian Evidence Act (Act I of 1872); two forms:
  1. Oral evidence - Must be direct (Sec. 55 BSA / Sec. 60 IEA); cross-questionable; more important of the two
  2. Documentary evidence (Sec. 56 BSA / Sec. 61 IEA) - includes: certificates of death/ill-health/insanity; medico-legal reports by medical officer under warrant

Witnesses - 2 Types:
  1. Common/Ordinary - Testifies to personally observed facts; cannot draw inference or express opinion on others' observations
  2. Expert/Skilled - Interprets facts; skilled in foreign law, science, or art (Sec. 39,45 BSA); medical experts specialize in toxicology, obstetrics, insanity, etc.
Hostile Witness - Willfully conceals truth or gives false evidence in court.

17.3 Court Procedures: Summons, Oath, Recording of Evidence, and Conduct Money

Subpoena/Summons (64 BNSS, 62 CrPC) - Written document compelling a witness to attend court on a specified date under penalty. Non-compliance in civil cases = liability for damage/fine; in criminal cases = fine or imprisonment.
Conduct Money - Fee paid in civil cases to cover attendance expenses; in criminal cases, no fee is paid at time of summons.
Oath (Sec. 1(23) BNS) - Witness swears to tell the truth before giving evidence; atheists make a solemn affirmation. Christians hold the Bible, Hindus the Gita, Mohammedans the Quran.
Perjury (Sec. BNS 227 / Sec. 193 IPC) - Knowingly making a false statement after taking oath = offense of perjury.

Recording of Evidence:
Dying Declaration
  • Statements (written or verbal) by a dying person about the cause/circumstances of their death
  • Admissible even if person was not expecting to die at time of statement
  • Should be written by the person themselves, or in their exact words in their vernacular; signed and attested
  • Considered credible evidence (Sec. 26 BSA / Sec. 32 IEA) - based on belief that dying people do not lie
Dying Deposition
  • Recorded by a Magistrate after administering oath in presence of the accused or lawyer
  • Doctor must certify victim is compos mentis before statement is made
  • Carries more legal weight than dying declaration
FeatureDying DeclarationDying Deposition
Recorded byAnyoneMagistrate
OathNot requiredRequired
Legal valueLessMore
Type of evidenceDocumentaryOral

Types of Examination in Court:
  1. Examination-in-chief (Sec. 142 BSA / Sec. 137 IPC) - Questions by counsel of your own side; places principal facts on record
  2. Cross-examination (Sec. 146-149 BSA / Sec. 141-146 IEA) - By opposing counsel; aims to weaken/discredit evidence; leading questions allowed
  3. Re-examination (Sec. 143 BSA / Sec. 138 IEA) - By own counsel to clarify discrepancies from cross-examination; no new matter without judge's consent
Court questions - The judge may ask a witness any question at any stage to clarify doubtful points.

17.4 Conduct of a Medical Professional in Court

When appearing as an expert witness, defendant, or party in court, a medical professional is expected to maintain high standards of professionalism, integrity, and clarity.

This chapter covers the entire framework of the Indian judicial system relevant to forensic medicine, from court hierarchy and jurisdiction to inquest procedures, types of evidence, witness conduct, and courtroom procedure for medical professionals.

Create a study guide PDF on Indian court hierarchy and jurisdiction

Reading File
Running Command

mkdir -p /tmp/workspace/court-study-guide && ls /tmp/workspace/court-study-guide/

Writing File

~/court-study-guide/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, PageBreak, KeepTogether
)
from reportlab.platypus.flowables import HRFlowable
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.graphics.shapes import Drawing, Rect, String, Line, Arrow
from reportlab.graphics import renderPDF
from reportlab.platypus import Flowable
import os

OUTPUT_PATH = "/tmp/workspace/court-study-guide/Indian_Court_Hierarchy_Study_Guide.pdf"

# ── Colour palette ────────────────────────────────────────────────────────────
C_NAVY    = colors.HexColor("#1a3a5c")
C_GOLD    = colors.HexColor("#c8960c")
C_BLUE    = colors.HexColor("#2a6496")
C_LBLUE   = colors.HexColor("#d6eaf8")
C_GREEN   = colors.HexColor("#1e7e34")
C_LGREEN  = colors.HexColor("#d4edda")
C_ORANGE  = colors.HexColor("#c0392b")
C_LORANGE = colors.HexColor("#fde8e8")
C_PURPLE  = colors.HexColor("#6c3483")
C_LPURPLE = colors.HexColor("#f3e6f9")
C_GREY    = colors.HexColor("#f4f6f9")
C_DGREY   = colors.HexColor("#5d6d7e")
C_WHITE   = colors.white
C_BLACK   = colors.black
C_YELLOW  = colors.HexColor("#fff9c4")
C_TEAL    = colors.HexColor("#117a8b")
C_LTEAL   = colors.HexColor("#d1ecf1")

# ── Styles ────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def make_style(name, parent="Normal", **kwargs):
    s = ParagraphStyle(name, parent=styles[parent], **kwargs)
    return s

sTitle      = make_style("sTitle",      fontSize=28, textColor=C_WHITE,   alignment=TA_CENTER,
                          fontName="Helvetica-Bold", spaceAfter=6)
sSubtitle   = make_style("sSubtitle",   fontSize=14, textColor=C_GOLD,    alignment=TA_CENTER,
                          fontName="Helvetica", spaceAfter=4)
sChapter    = make_style("sChapter",    fontSize=16, textColor=C_WHITE,   alignment=TA_LEFT,
                          fontName="Helvetica-Bold", spaceAfter=4, spaceBefore=8,
                          leftIndent=8)
sSection    = make_style("sSection",    fontSize=13, textColor=C_NAVY,    alignment=TA_LEFT,
                          fontName="Helvetica-Bold", spaceAfter=4, spaceBefore=10,
                          borderPad=4)
sBody       = make_style("sBody",       fontSize=10, textColor=C_BLACK,   alignment=TA_JUSTIFY,
                          fontName="Helvetica", spaceAfter=4, leading=15)
sBullet     = make_style("sBullet",     fontSize=10, textColor=C_BLACK,   alignment=TA_LEFT,
                          fontName="Helvetica", spaceAfter=3, leftIndent=14, leading=14,
                          bulletIndent=4)
sNote       = make_style("sNote",       fontSize=9,  textColor=C_TEAL,    alignment=TA_LEFT,
                          fontName="Helvetica-Oblique", spaceAfter=4, leftIndent=8, leading=13)
sTableHdr   = make_style("sTableHdr",   fontSize=10, textColor=C_WHITE,   alignment=TA_CENTER,
                          fontName="Helvetica-Bold")
sTableCell  = make_style("sTableCell",  fontSize=9,  textColor=C_BLACK,   alignment=TA_LEFT,
                          fontName="Helvetica", leading=13)
sTableCellC = make_style("sTableCellC", fontSize=9,  textColor=C_BLACK,   alignment=TA_CENTER,
                          fontName="Helvetica", leading=13)
sLabel      = make_style("sLabel",      fontSize=9,  textColor=C_NAVY,    alignment=TA_CENTER,
                          fontName="Helvetica-Bold", leading=12)
sSmall      = make_style("sSmall",      fontSize=8,  textColor=C_DGREY,   alignment=TA_CENTER,
                          fontName="Helvetica-Oblique")
sBoxTitle   = make_style("sBoxTitle",   fontSize=11, textColor=C_NAVY,    alignment=TA_CENTER,
                          fontName="Helvetica-Bold", spaceAfter=3)
sMemonic    = make_style("sMemonic",    fontSize=11, textColor=C_PURPLE,  alignment=TA_CENTER,
                          fontName="Helvetica-Bold", spaceAfter=2)
sQAQ        = make_style("sQAQ",        fontSize=10, textColor=C_NAVY,    alignment=TA_LEFT,
                          fontName="Helvetica-Bold", spaceAfter=2, spaceBefore=4)
sQAA        = make_style("sQAA",        fontSize=10, textColor=C_BLACK,   alignment=TA_LEFT,
                          fontName="Helvetica", spaceAfter=4, leftIndent=12)

W, H = A4  # 595 x 842 pts

# ── Helper: coloured section header ──────────────────────────────────────────
def sec_header(text, bg=C_NAVY, fg=C_WHITE, size=13):
    data = [[Paragraph(f"<b>{text}</b>",
                       make_style("_sh", fontSize=size, textColor=fg,
                                  fontName="Helvetica-Bold", alignment=TA_LEFT))]]
    t = Table(data, colWidths=[W - 4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
        ("ROUNDEDCORNERS", [4, 4, 4, 4]),
    ]))
    return t

def colored_box(content_items, bg=C_GREY, border=C_BLUE, padding=8):
    """Wrap flowables in a coloured box via a 1-cell table."""
    from reportlab.platypus import KeepTogether
    inner = Table([[item] for item in content_items],
                  colWidths=[W - 4*cm - 2*padding])
    t = Table([[inner]], colWidths=[W - 4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), bg),
        ("BOX",           (0,0), (-1,-1), 1.2, border),
        ("TOPPADDING",    (0,0), (-1,-1), padding),
        ("BOTTOMPADDING", (0,0), (-1,-1), padding),
        ("LEFTPADDING",   (0,0), (-1,-1), padding),
        ("RIGHTPADDING",  (0,0), (-1,-1), padding),
    ]))
    return t

# ── Hierarchy diagram using a Table ──────────────────────────────────────────
def court_hierarchy_diagram():
    rows = [
        # (label, bg, fg, level_indent_cells_left)
        ("SUPREME COURT",         C_NAVY,   C_WHITE, 0),
        ("HIGH COURT",            C_BLUE,   C_WHITE, 1),
        ("DISTRICT / SESSION COURT", C_TEAL, C_WHITE, 2),
        ("MAGISTRATE COURT",      C_GREEN,  C_WHITE, 3),
        ("JUVENILE COURT",        C_PURPLE, C_WHITE, 4),
    ]
    NCOLS = 6
    table_data = []
    for label, bg, fg, indent in rows:
        span_start = indent
        span_end   = NCOLS - 1
        row = [""] * NCOLS
        row[span_start] = Paragraph(
            f"<b>{label}</b>",
            make_style("_hd", fontSize=10, textColor=fg,
                       fontName="Helvetica-Bold", alignment=TA_CENTER)
        )
        table_data.append(row)

    col_w = (W - 4*cm) / NCOLS
    t = Table(table_data, colWidths=[col_w]*NCOLS, rowHeights=[30]*len(rows))

    ts = TableStyle([
        ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
        ("TOPPADDING",   (0,0), (-1,-1), 4),
        ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ])
    for i, (_, bg, _, indent) in enumerate(rows):
        ts.add("BACKGROUND", (indent, i), (NCOLS-1, i), bg)
        if indent > 0:
            ts.add("BACKGROUND", (0, i), (indent-1, i), C_WHITE)
        ts.add("SPAN", (indent, i), (NCOLS-1, i))

    t.setStyle(ts)
    return t

# ── Main content builder ──────────────────────────────────────────────────────
def build_story():
    story = []

    # ── COVER ─────────────────────────────────────────────────────────────────
    cover_data = [[
        Paragraph("INDIAN COURT HIERARCHY", sTitle),
        Spacer(1, 6),
        Paragraph("&amp; JURISDICTION", sTitle),
        Spacer(1, 10),
        Paragraph("Comprehensive Study Guide", sSubtitle),
        Spacer(1, 6),
        Paragraph("Agada Tantra &amp; Vidhi Vaidyak | Chapter 17", sSubtitle),
    ]]
    cover_t = Table(cover_data, colWidths=[W - 4*cm])
    cover_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), C_NAVY),
        ("TOPPADDING",    (0,0), (-1,-1), 30),
        ("BOTTOMPADDING", (0,0), (-1,-1), 30),
        ("LEFTPADDING",   (0,0), (-1,-1), 20),
        ("RIGHTPADDING",  (0,0), (-1,-1), 20),
    ]))
    story.append(cover_t)
    story.append(Spacer(1, 14))

    # Quick overview boxes
    overview = [
        ("4", "Criminal\nCourt Types"),
        ("3", "Magistrate\nCourt Types"),
        ("2", "Inquest\nTypes in India"),
        ("2", "Evidence\nForms"),
    ]
    ov_cells = []
    for num, label in overview:
        cell = Table([
            [Paragraph(f"<b>{num}</b>", make_style("_n", fontSize=22, textColor=C_GOLD,
                                                    fontName="Helvetica-Bold", alignment=TA_CENTER))],
            [Paragraph(label, make_style("_l", fontSize=9, textColor=C_WHITE,
                                         fontName="Helvetica", alignment=TA_CENTER, leading=12))],
        ], colWidths=[3.5*cm])
        cell.setStyle(TableStyle([
            ("BACKGROUND",    (0,0), (-1,-1), C_BLUE),
            ("BOX",           (0,0), (-1,-1), 1, C_GOLD),
            ("TOPPADDING",    (0,0), (-1,-1), 8),
            ("BOTTOMPADDING", (0,0), (-1,-1), 8),
        ]))
        ov_cells.append(cell)

    ov_t = Table([ov_cells], colWidths=[3.6*cm]*4)
    ov_t.setStyle(TableStyle([("LEFTPADDING",(0,0),(-1,-1),3),("RIGHTPADDING",(0,0),(-1,-1),3)]))
    story.append(ov_t)
    story.append(Spacer(1, 16))

    # ── SECTION 1: Court Hierarchy Diagram ────────────────────────────────────
    story.append(sec_header("1. Court Hierarchy at a Glance", C_NAVY))
    story.append(Spacer(1, 8))
    story.append(Paragraph(
        "India's judicial system is hierarchical. At the apex is the <b>Supreme Court</b>, "
        "followed by <b>High Courts</b> at state level, <b>District/Session Courts</b> at district "
        "level, and <b>Magistrate Courts</b> at the lower level. <b>Lok Adalats</b> operate at "
        "village/Panchayat level.",
        sBody))
    story.append(Spacer(1, 8))
    story.append(court_hierarchy_diagram())
    story.append(Spacer(1, 6))
    story.append(Paragraph("* Arrow indicates appellate direction (lower → higher)", sSmall))
    story.append(Spacer(1, 14))

    # ── SECTION 2: Supreme Court ──────────────────────────────────────────────
    story.append(sec_header("2. Supreme Court", C_NAVY))
    story.append(Spacer(1, 6))

    sc_data = [
        [Paragraph("<b>Feature</b>", sTableHdr), Paragraph("<b>Details</b>", sTableHdr)],
        [Paragraph("Location", sTableCell),        Paragraph("New Delhi", sTableCell)],
        [Paragraph("Established", sTableCell),     Paragraph("28 January 1950 (two days after Constitution came into effect)", sTableCell)],
        [Paragraph("Composition", sTableCell),     Paragraph("Chief Justice of India + 25 other judges", sTableCell)],
        [Paragraph("Appointments", sTableCell),    Paragraph("Directly by the President of India", sTableCell)],
        [Paragraph("Original Jurisdiction", sTableCell), Paragraph("Protection of Fundamental Rights; settling disputes between governments", sTableCell)],
        [Paragraph("Appellate Role", sTableCell),  Paragraph("Highest court of appeal in India", sTableCell)],
        [Paragraph("Law binding on", sTableCell),  Paragraph("All courts within India", sTableCell)],
        [Paragraph("Guardian of", sTableCell),     Paragraph("The Constitution of India", sTableCell)],
    ]
    sc_t = Table(sc_data, colWidths=[5.5*cm, W - 4*cm - 5.5*cm])
    sc_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_NAVY),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_GREY]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_NAVY),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(sc_t)
    story.append(Spacer(1, 14))

    # ── SECTION 3: High Court ─────────────────────────────────────────────────
    story.append(sec_header("3. High Court", C_BLUE))
    story.append(Spacer(1, 6))

    hc_data = [
        [Paragraph("<b>Feature</b>", sTableHdr), Paragraph("<b>Details</b>", sTableHdr)],
        [Paragraph("Level", sTableCell),           Paragraph("State level (present in almost all states and union territories)", sTableCell)],
        [Paragraph("Supervising body", sTableCell),Paragraph("Works under superintendence, direction, and control of the Supreme Court", sTableCell)],
        [Paragraph("Original Jurisdiction", sTableCell), Paragraph("Cases brought directly to it (civil and criminal)", sTableCell)],
        [Paragraph("Appellate Jurisdiction", sTableCell),Paragraph("Appeals against decisions of lower/district courts", sTableCell)],
        [Paragraph("Special cases heard", sTableCell),   Paragraph("Patents, designs, succession, land acquisition, insolvency, guardianship", sTableCell)],
        [Paragraph("Death sentence", sTableCell),  Paragraph("Must confirm any death sentence passed by Sessions Court before execution", sTableCell)],
        [Paragraph("Powers over Sessions Court", sTableCell), Paragraph("Accept, alter, increase/reduce sentence, change nature, or acquit accused", sTableCell)],
    ]
    hc_t = Table(hc_data, colWidths=[5.5*cm, W - 4*cm - 5.5*cm])
    hc_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_BLUE),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LBLUE]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_BLUE),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(hc_t)
    story.append(Spacer(1, 14))

    # ── SECTION 4: District / Session Court ───────────────────────────────────
    story.append(sec_header("4. District / Session Court", C_TEAL))
    story.append(Spacer(1, 6))

    ds_data = [
        [Paragraph("<b>Feature</b>", sTableHdr), Paragraph("<b>Details</b>", sTableHdr)],
        [Paragraph("Also known as", sTableCell),   Paragraph("District Session Court", sTableCell)],
        [Paragraph("Location", sTableCell),        Paragraph("District headquarters", sTableCell)],
        [Paragraph("Presided by", sTableCell),     Paragraph("District and Session Judge (known as District Judge in civil / Session Judge in criminal cases)", sTableCell)],
        [Paragraph("Sentencing power", sTableCell),Paragraph("Any sentence authorised by law; death sentences need High Court confirmation", sTableCell)],
        [Paragraph("Ass. Session Judge", sTableCell), Paragraph("Any sentence except death or imprisonment > 10 years", sTableCell)],
        [Paragraph("District Judge", sTableCell),  Paragraph("Power to improve any sentence, including capital punishment", sTableCell)],
        [Paragraph("Sub-courts", sTableCell),      Paragraph("Civil, Criminal, and Revenue subordinate courts in each district", sTableCell)],
    ]
    ds_t = Table(ds_data, colWidths=[5.5*cm, W - 4*cm - 5.5*cm])
    ds_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_TEAL),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LTEAL]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_TEAL),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(ds_t)
    story.append(Spacer(1, 14))

    # ── SECTION 5: Magistrate Court comparison ────────────────────────────────
    story.append(sec_header("5. Magistrate Courts - Comparison", C_GREEN))
    story.append(Spacer(1, 6))

    mag_data = [
        [Paragraph("<b>Type</b>", sTableHdr),
         Paragraph("<b>Try Cases</b>", sTableHdr),
         Paragraph("<b>Max Imprisonment</b>", sTableHdr),
         Paragraph("<b>Max Fine</b>", sTableHdr)],
        [Paragraph("Chief Judicial Magistrate", sTableCell),
         Paragraph("Any case except death sentence", sTableCell),
         Paragraph("7 years", sTableCell),
         Paragraph("Unlimited", sTableCell)],
        [Paragraph("1st Class Magistrate", sTableCell),
         Paragraph("All except murder, rape, miscarriage; can only enquire + send to Sessions Court for those", sTableCell),
         Paragraph("3 years (incl. solitary confinement)", sTableCell),
         Paragraph("Rs. 10,000", sTableCell)],
        [Paragraph("2nd Class Magistrate", sTableCell),
         Paragraph("Offences punishable up to 1 year imprisonment", sTableCell),
         Paragraph("1 year", sTableCell),
         Paragraph("Rs. 5,000", sTableCell)],
    ]
    mag_t = Table(mag_data, colWidths=[4*cm, 7*cm, 3.5*cm, 3*cm])
    mag_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_GREEN),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LGREEN]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_GREEN),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ]))
    story.append(mag_t)
    story.append(Spacer(1, 10))

    # Juvenile Magistrates note
    juv_box_content = [
        Paragraph("Juvenile Magistrates", sBoxTitle),
        Paragraph(
            "Usually ladies preside. Handle <b>juvenile offenders</b> - boys below <b>16 years</b> "
            "and girls below <b>18 years</b> accused of a crime. Governed by <b>Children Act 1960</b>. "
            "Focus: treatment, training and rehabilitation (not punishment).",
            sBody),
    ]
    story.append(colored_box(juv_box_content, bg=C_LPURPLE, border=C_PURPLE))
    story.append(Spacer(1, 14))

    # ── SECTION 6: Subordinate Courts Structure ───────────────────────────────
    story.append(sec_header("6. Subordinate / Lower Courts Structure", C_ORANGE))
    story.append(Spacer(1, 8))

    sub_data = [
        [Paragraph("<b>Civil Courts</b>", sTableHdr),
         Paragraph("<b>Criminal Courts</b>", sTableHdr),
         Paragraph("<b>Revenue Courts</b>", sTableHdr)],
        [Paragraph("District Judge / District &amp; Sessions Judge", sTableCell),
         Paragraph("Session Judge / District &amp; Sessions Judge", sTableCell),
         Paragraph("Board of Revenue", sTableCell)],
        [Paragraph("Sub Judge / Family Courts", sTableCell),
         Paragraph("Metropolitan Magistrate", sTableCell),
         Paragraph("Commissioner / Collector", sTableCell)],
        [Paragraph("Munsif", sTableCell),
         Paragraph("Class I Magistrate", sTableCell),
         Paragraph("Tehsildar", sTableCell)],
        [Paragraph("Small Causes Courts", sTableCell),
         Paragraph("Class II / Class III Magistrate", sTableCell),
         Paragraph("Naib Tehsildar", sTableCell)],
    ]
    sub_t = Table(sub_data, colWidths=[(W-4*cm)/3]*3)
    sub_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (0,0), C_ORANGE),
        ("BACKGROUND",    (1,0), (1,0), C_ORANGE),
        ("BACKGROUND",    (2,0), (2,0), C_ORANGE),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LORANGE]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_ORANGE),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ]))
    story.append(sub_t)
    story.append(Spacer(1, 6))
    story.append(Paragraph(
        "Revenue Courts: Hear land revenue cases. Board of Revenue is the highest revenue court in the district.",
        sNote))
    story.append(Spacer(1, 14))

    # ── SECTION 7: Sentences Authorised by Law ────────────────────────────────
    story.append(sec_header("7. Sentences Authorised by Law", C_NAVY))
    story.append(Spacer(1, 6))

    sent_data = [
        [Paragraph("<b>#</b>", sTableHdr), Paragraph("<b>Sentence Type</b>", sTableHdr), Paragraph("<b>Notes</b>", sTableHdr)],
        [Paragraph("1", sTableCellC), Paragraph("Death", sTableCell),                Paragraph("Highest; Sessions Court sentence must be confirmed by High Court", sTableCell)],
        [Paragraph("2", sTableCellC), Paragraph("Life Imprisonment", sTableCell),    Paragraph("Cannot be awarded by 2nd Class Magistrate", sTableCell)],
        [Paragraph("3", sTableCellC), Paragraph("Fine", sTableCell),                 Paragraph("Varies by court level", sTableCell)],
        [Paragraph("4", sTableCellC), Paragraph("Forfeiture of Property", sTableCell),Paragraph("May accompany other sentences", sTableCell)],
        [Paragraph("5", sTableCellC), Paragraph("Treatment/Rehabilitation", sTableCell),Paragraph("For youthful offenders under Children Act 1960", sTableCell)],
    ]
    sent_t = Table(sent_data, colWidths=[1*cm, 5*cm, W - 4*cm - 6*cm])
    sent_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_NAVY),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_GREY]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_NAVY),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(sent_t)
    story.append(Spacer(1, 14))

    # ── PAGE BREAK ─────────────────────────────────────────────────────────────
    story.append(PageBreak())

    # ── SECTION 8: Jurisdiction types ─────────────────────────────────────────
    story.append(sec_header("8. Types of Jurisdiction", C_PURPLE))
    story.append(Spacer(1, 6))

    jur_data = [
        [Paragraph("<b>Jurisdiction</b>", sTableHdr),
         Paragraph("<b>Definition</b>", sTableHdr),
         Paragraph("<b>Court</b>", sTableHdr)],
        [Paragraph("Original", sTableCell),
         Paragraph("Cases brought directly to the court without going through a lower court first", sTableCell),
         Paragraph("Supreme Court, High Court", sTableCell)],
        [Paragraph("Appellate", sTableCell),
         Paragraph("Court hears an appeal against a lower court's decision", sTableCell),
         Paragraph("Supreme Court, High Court", sTableCell)],
        [Paragraph("Supervisory", sTableCell),
         Paragraph("Superintendence, direction, and control over subordinate courts", sTableCell),
         Paragraph("Supreme Court (over all), High Court (over state courts)", sTableCell)],
    ]
    jur_t = Table(jur_data, colWidths=[3.5*cm, 8*cm, 6*cm])
    jur_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_PURPLE),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LPURPLE]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_PURPLE),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(jur_t)
    story.append(Spacer(1, 14))

    # ── SECTION 9: CrPC Offence Types ─────────────────────────────────────────
    story.append(sec_header("9. CrPC Offence Categories", C_TEAL))
    story.append(Spacer(1, 6))

    off_items = [
        ("Bailable offences",       "Accused has right to get bail as a matter of right"),
        ("Non-bailable offences",   "Bail is not a right; court's discretion"),
        ("Warrant Cases",           "Cases involving offences punishable with death, life, or >2 years imprisonment"),
        ("Summons Cases",           "Cases involving offences punishable with <2 years imprisonment"),
        ("Cognizable offences",     "Police can arrest without warrant; can investigate without Magistrate's order"),
        ("Non-Cognizable offences", "Police cannot arrest without warrant; require Magistrate's order to investigate"),
    ]
    off_data = [[Paragraph("<b>Category</b>", sTableHdr), Paragraph("<b>Description</b>", sTableHdr)]]
    for cat, desc in off_items:
        off_data.append([Paragraph(cat, sTableCell), Paragraph(desc, sTableCell)])
    off_t = Table(off_data, colWidths=[5*cm, W-4*cm-5*cm])
    off_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_TEAL),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LTEAL]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_TEAL),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(off_t)
    story.append(Spacer(1, 14))

    # ── SECTION 10: Key Definitions ────────────────────────────────────────────
    story.append(sec_header("10. Key Definitions", C_NAVY))
    story.append(Spacer(1, 6))

    defs = [
        ("Court",         "A body presided over by a judge/magistrate acting as a tribunal in civil and criminal cases."),
        ("Judiciary",     "The system of courts that interprets and applies the law collectively."),
        ("Venue",         "The place where a court sits."),
        ("Courtroom",     "The room/building where court proceedings occur."),
        ("Inquest",       "A legal or judicial inquiry to ascertain facts where death is under suspicious circumstances."),
        ("Panchnama",     "The inquiry report prepared by police during a Police Inquest (BNSS 176)."),
        ("Subpoena",      "A written document compelling a witness to attend court on a specified date under penalty (64 BNSS / 62 CrPC)."),
        ("Conduct Money", "Fee tendered to cover a witness's expense to attend court in civil cases."),
        ("Oath",          "A solemn promise by a witness to tell the truth before giving evidence (Sec. 1(23) BNS)."),
        ("Perjury",       "Knowingly making a false statement after taking oath - an offence (Sec. BNS 227 / Sec. 193 IPC)."),
    ]
    def_data = [[Paragraph("<b>Term</b>", sTableHdr), Paragraph("<b>Definition</b>", sTableHdr)]]
    for term, defn in defs:
        def_data.append([Paragraph(f"<b>{term}</b>", sTableCell), Paragraph(defn, sTableCell)])
    def_t = Table(def_data, colWidths=[4*cm, W-4*cm-4*cm])
    def_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_NAVY),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_GREY]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_NAVY),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(def_t)
    story.append(Spacer(1, 14))

    # ── PAGE BREAK ─────────────────────────────────────────────────────────────
    story.append(PageBreak())

    # ── SECTION 11: Quick Revision - Q&A ──────────────────────────────────────
    story.append(sec_header("11. Quick Revision - Q&A", C_ORANGE))
    story.append(Spacer(1, 8))

    qa_pairs = [
        ("Q1. Where is the Supreme Court situated?",
         "New Delhi. It came into power on 28 January 1950."),
        ("Q2. How many judges are in the Supreme Court?",
         "Chief Justice of India + 25 other judges = 26 total. Appointed by the President of India."),
        ("Q3. What is the difference between Original and Appellate Jurisdiction?",
         "Original Jurisdiction = cases brought directly to the court. Appellate Jurisdiction = court hears an appeal against a lower court's decision."),
        ("Q4. What must happen before a death sentence from Sessions Court is executed?",
         "The High Court must confirm the death sentence even if the accused does not file an appeal."),
        ("Q5. Which Magistrate cannot try murder, rape, or miscarriage cases?",
         "1st Class Magistrate - can only enquire into such cases and send them to Sessions Court for trial."),
        ("Q6. What is a Juvenile offender?",
         "Boys below 16 years and girls below 18 years accused of a crime. Handled under the Children Act 1960."),
        ("Q7. What is a Cognizable offence?",
         "An offence where police can arrest without a warrant and investigate without a Magistrate's order."),
        ("Q8. What are the 4 questions answered by a Police Inquest?",
         "Q1: Identity of the deceased | Q2: Place of death | Q3: Time of death | Q4: Apparent cause of death"),
        ("Q9. What is the difference between Bailable and Non-bailable offences?",
         "Bailable: accused has a right to get bail. Non-bailable: bail is at the court's discretion, not a right."),
        ("Q10. What is Perjury?",
         "Knowingly making a false statement after taking an oath or solemn affirmation - an offence under Sec. BNS 227 / Sec. 193 IPC."),
        ("Q11. Who conducts a Magistrate Inquest?",
         "District Magistrate, Judicial Magistrate, or any Executive Magistrate empowered by the State Government (Sec. 196 BNSS / Sec. 176 CrPC)."),
        ("Q12. What is Panchnama?",
         "The inquiry report prepared by police at the end of a Police Inquest (under BNSS 176)."),
    ]
    for q, a in qa_pairs:
        story.append(Paragraph(q, sQAQ))
        story.append(Paragraph(a, sQAA))
    story.append(Spacer(1, 14))

    # ── SECTION 12: Memory Aids ────────────────────────────────────────────────
    story.append(sec_header("12. Memory Aids & Mnemonics", C_PURPLE))
    story.append(Spacer(1, 8))

    # Mnemonic 1
    mn1 = colored_box([
        Paragraph("Criminal Courts Hierarchy - <b>\"S H D M\"</b>", sMemonic),
        Paragraph(
            "<b>S</b>upreme Court  |  <b>H</b>igh Court  |  <b>D</b>istrict/Session Court  |  <b>M</b>agistrate Court",
            make_style("_m1", fontSize=10, textColor=C_NAVY, alignment=TA_CENTER,
                       fontName="Helvetica-Bold", leading=14)),
        Spacer(1, 4),
        Paragraph(
            "Remember: <i>\"Some Hierarchies Define Magistrates\"</i>",
            make_style("_m1b", fontSize=10, textColor=C_PURPLE, alignment=TA_CENTER,
                       fontName="Helvetica-Oblique")),
    ], bg=C_LPURPLE, border=C_PURPLE)
    story.append(mn1)
    story.append(Spacer(1, 10))

    # Mnemonic 2
    mn2 = colored_box([
        Paragraph("Sentences by Law - <b>\"D L F F T\"</b>", sMemonic),
        Paragraph(
            "<b>D</b>eath  |  <b>L</b>ife imprisonment  |  <b>F</b>ine  |  <b>F</b>orfeiture  |  <b>T</b>reatment/Rehabilitation",
            make_style("_m2", fontSize=10, textColor=C_NAVY, alignment=TA_CENTER,
                       fontName="Helvetica-Bold", leading=14)),
        Spacer(1, 4),
        Paragraph(
            "Remember: <i>\"Don't Let Felons Forget Treatment\"</i>",
            make_style("_m2b", fontSize=10, textColor=C_PURPLE, alignment=TA_CENTER,
                       fontName="Helvetica-Oblique")),
    ], bg=C_LPURPLE, border=C_PURPLE)
    story.append(mn2)
    story.append(Spacer(1, 10))

    # Mnemonic 3
    mn3 = colored_box([
        Paragraph("4 Qs of Police Inquest - <b>\"I P T C\"</b>", sMemonic),
        Paragraph(
            "<b>I</b>dentity of deceased  |  <b>P</b>lace of death  |  <b>T</b>ime of death  |  <b>C</b>ause of death",
            make_style("_m3", fontSize=10, textColor=C_NAVY, alignment=TA_CENTER,
                       fontName="Helvetica-Bold", leading=14)),
        Spacer(1, 4),
        Paragraph(
            "Remember: <i>\"Investigating Police Track Cases\"</i>",
            make_style("_m3b", fontSize=10, textColor=C_PURPLE, alignment=TA_CENTER,
                       fontName="Helvetica-Oblique")),
    ], bg=C_LPURPLE, border=C_PURPLE)
    story.append(mn3)
    story.append(Spacer(1, 14))

    # ── SECTION 13: Comparison Tables ─────────────────────────────────────────
    story.append(sec_header("13. Important Comparisons", C_BLUE))
    story.append(Spacer(1, 8))

    # Inquest comparison
    story.append(Paragraph("Types of Inquest in India:", sSection))
    inq_data = [
        [Paragraph("<b>Feature</b>", sTableHdr),
         Paragraph("<b>Police Inquest</b>", sTableHdr),
         Paragraph("<b>Magistrate Inquest</b>", sTableHdr)],
        [Paragraph("Authority", sTableCell), Paragraph("Police officer (not below rank of senior head constable)", sTableCell), Paragraph("District/Judicial/Executive Magistrate", sTableCell)],
        [Paragraph("Legal provision", sTableCell), Paragraph("BNSS 194 / Sec 174 CrPC", sTableCell), Paragraph("Sec. 196 BNSS / Sec. 176 CrPC", sTableCell)],
        [Paragraph("Frequency", sTableCell), Paragraph("Held routinely for suspicious deaths", sTableCell), Paragraph("Only when specially indicated", sTableCell)],
        [Paragraph("Report called", sTableCell), Paragraph("Panchnama", sTableCell), Paragraph("Magistrate's report", sTableCell)],
        [Paragraph("Geographic scope", sTableCell), Paragraph("All of India", sTableCell), Paragraph("Practical all over India", sTableCell)],
    ]
    inq_t = Table(inq_data, colWidths=[4*cm, (W-4*cm-4*cm)/2, (W-4*cm-4*cm)/2])
    inq_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_BLUE),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LBLUE]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_BLUE),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(inq_t)
    story.append(Spacer(1, 12))

    # Dying declaration vs deposition
    story.append(Paragraph("Dying Declaration vs Dying Deposition:", sSection))
    dd_data = [
        [Paragraph("<b>Feature</b>", sTableHdr),
         Paragraph("<b>Dying Declaration</b>", sTableHdr),
         Paragraph("<b>Dying Deposition</b>", sTableHdr)],
        [Paragraph("Recorded by", sTableCell),   Paragraph("Anyone", sTableCell),              Paragraph("Magistrate only", sTableCell)],
        [Paragraph("Oath required", sTableCell), Paragraph("Not required", sTableCell),         Paragraph("Yes - oath is must", sTableCell)],
        [Paragraph("Legal value", sTableCell),   Paragraph("Less", sTableCell),                 Paragraph("More (higher legal weight)", sTableCell)],
        [Paragraph("Type of evidence", sTableCell), Paragraph("Documentary", sTableCell),       Paragraph("Oral evidence needed", sTableCell)],
        [Paragraph("Who present", sTableCell),   Paragraph("Any respectable witnesses", sTableCell), Paragraph("Accused or his lawyer present", sTableCell)],
        [Paragraph("Cross-examination", sTableCell), Paragraph("Not possible", sTableCell),     Paragraph("Possible by accused's lawyer", sTableCell)],
    ]
    dd_t = Table(dd_data, colWidths=[4*cm, (W-4*cm-4*cm)/2, (W-4*cm-4*cm)/2])
    dd_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_TEAL),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LTEAL]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_TEAL),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(dd_t)
    story.append(Spacer(1, 14))

    # ── SECTION 14: Examination types ─────────────────────────────────────────
    story.append(sec_header("14. Types of Examination in Court", C_GREEN))
    story.append(Spacer(1, 6))

    exam_data = [
        [Paragraph("<b>Type</b>", sTableHdr),
         Paragraph("<b>Section</b>", sTableHdr),
         Paragraph("<b>By Whom</b>", sTableHdr),
         Paragraph("<b>Purpose</b>", sTableHdr)],
        [Paragraph("Examination-in-Chief", sTableCell),
         Paragraph("Sec. 142 BSA / 137 IPC", sTableCell),
         Paragraph("Your own counsel", sTableCell),
         Paragraph("Places principal facts on record; establishes your credentials and evidence", sTableCell)],
        [Paragraph("Cross-examination", sTableCell),
         Paragraph("Sec. 146-149 BSA / 141-146 IEA", sTableCell),
         Paragraph("Opposing counsel", sTableCell),
         Paragraph("Weaken or discredit evidence; show details are inaccurate/contradictory; leading questions allowed", sTableCell)],
        [Paragraph("Re-examination", sTableCell),
         Paragraph("Sec. 143 BSA / 138 IEA", sTableCell),
         Paragraph("Your own counsel (again)", sTableCell),
         Paragraph("Explain discrepancies from cross-exam; no new matter without judge's consent", sTableCell)],
        [Paragraph("Court questions", sTableCell),
         Paragraph("-", sTableCell),
         Paragraph("The Judge", sTableCell),
         Paragraph("Clear up ambiguous or doubtful points at any stage of trial", sTableCell)],
    ]
    exam_t = Table(exam_data, colWidths=[3.5*cm, 4*cm, 3.5*cm, W-4*cm-11*cm])
    exam_t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), C_GREEN),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LGREEN]),
        ("BOX",           (0,0), (-1,-1), 0.8, C_GREEN),
        ("INNERGRID",     (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ]))
    story.append(exam_t)
    story.append(Spacer(1, 14))

    # ── FOOTER NOTE ────────────────────────────────────────────────────────────
    story.append(HRFlowable(width="100%", thickness=1.5, color=C_NAVY))
    story.append(Spacer(1, 6))
    story.append(Paragraph(
        "Source: Textbook of Agada Tantra and Vidhi Vaidyak, Chapter 17 - Legal Procedures, Courts, and Medical Evidence",
        sSmall))
    story.append(Paragraph(
        "This study guide is intended for academic purposes only.",
        sSmall))

    return story


# ── Build PDF ─────────────────────────────────────────────────────────────────
def on_first_page(canvas, doc):
    pass

def on_later_pages(canvas, doc):
    canvas.saveState()
    canvas.setFont("Helvetica", 8)
    canvas.setFillColor(C_DGREY)
    canvas.drawString(2*cm, 1.2*cm, "Indian Court Hierarchy & Jurisdiction - Study Guide")
    canvas.drawRightString(W - 2*cm, 1.2*cm, f"Page {doc.page}")
    canvas.restoreState()

doc = SimpleDocTemplate(
    OUTPUT_PATH,
    pagesize=A4,
    leftMargin=2*cm,
    rightMargin=2*cm,
    topMargin=2*cm,
    bottomMargin=2*cm,
    title="Indian Court Hierarchy & Jurisdiction - Study Guide",
    author="Agada Tantra & Vidhi Vaidyak",
    subject="Legal Procedures, Courts, Jurisdiction",
)

story = build_story()
doc.build(story, onFirstPage=on_first_page, onLaterPages=on_later_pages)
print(f"PDF saved to: {OUTPUT_PATH}")
Running Command

cd /tmp/workspace/court-study-guide && python generate_pdf.py 2>&1

Editing File

~/court-study-guide/generate_pdf.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/court-study-guide/generate_pdf.py'
Running Command

cd /tmp/workspace/court-study-guide && python generate_pdf.py 2>&1

Running Command

ls -lh /tmp/workspace/court-study-guide/Indian_Court_Hierarchy_Study_Guide.pdf

Your study guide PDF is ready! Here's what's included across its pages:

Indian Court Hierarchy Study Guide

PDF Document · PDF


PDF Contents (14 Sections):

  1. Court Hierarchy at a Glance - Visual colour-coded hierarchy diagram (Supreme → High → District → Magistrate)
  2. Supreme Court - Full feature table (composition, jurisdiction, binding power, etc.)
  3. High Court - Powers, jurisdictions, death sentence confirmation rule
  4. District/Session Court - Sentencing powers, assistant session judge limits
  5. Magistrate Courts Comparison - Side-by-side table of Chief Judicial, 1st Class, 2nd Class Magistrates with try-able cases, max imprisonment and fine
  6. Subordinate Courts Structure - Civil, Criminal, Revenue court hierarchies in a clean table
  7. Sentences Authorised by Law - All 5 sentence types with notes
  8. Types of Jurisdiction - Original, Appellate, Supervisory with definitions
  9. CrPC Offence Categories - All 6 types (bailable, non-bailable, warrant, summons, cognizable, non-cognizable)
  10. Key Definitions - 10 important terms with definitions
  11. Quick Revision Q&A - 12 exam-style questions with answers
  12. Memory Aids & Mnemonics - 3 mnemonics for hierarchy, sentences, and inquest questions
  13. Important Comparisons - Police vs Magistrate Inquest; Dying Declaration vs Dying Deposition
  14. Types of Examination in Court - Exam-in-chief, cross-examination, re-examination, court questions

Composmentis means

Compos mentis is a Latin term meaning "of sound mind" — i.e., a person who is mentally competent, fully conscious, aware of their surroundings, and capable of understanding what is happening and making rational decisions.
Its opposite is non compos mentis — "not of sound mind" — referring to someone who is mentally incapacitated, unconscious, delirious, or otherwise unable to understand their actions.

In the legal/medical context (as used in your textbook):
Before a doctor records a dying declaration, they must certify that the victim is compos mentis — meaning the patient is:
  • Conscious and oriented
  • Able to understand questions being asked
  • Capable of giving a coherent, voluntary statement
This certification matters because a dying declaration is only valid as evidence if the person was mentally sound at the time of making it. If the patient was delirious, heavily sedated, or unconscious, the declaration loses its evidentiary value in court.

Explain consent

Reading File
Finding Sources
Finding Sources
Reading File
Finding Sources
Reading File
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Here is a thorough explanation of consent in medical practice, drawn directly from The Essentials of Forensic Medicine and Toxicology (36th edition, 2026) and Scott-Brown's Otorhinolaryngology Head & Neck Surgery:

Consent in Medical Practice

Definition

Consent means voluntary agreement, compliance, or permission. It signifies a person's acceptance of the consequences of an act being carried out upon them. To be legally valid, it must be given:
  • After understanding what is being consented to
  • With an understanding of the risks involved
  • Essentials of Forensic Medicine and Toxicology, 36th ed.

Why Consent is Important

  1. A doctor is not allowed to violate a patient's personal rights - examining or treating a patient without consent is legally considered assault on the patient
  2. The patient can sue the doctor for not informing them about the procedure, its benefits, or risks involved
  3. Any touching of a person without valid consent can amount to battery in law - both criminal battery (rare) and civil battery (more common)

Types of Consent

There are two main kinds:

1. Implied Consent

An adult patient of sound mind who has been fairly informed about what is to be done, and then cooperates with the physician, has impliedly consented.
Examples:
  • A patient attending the hospital or calling a doctor implies consent to a general physical examination
  • A patient holding out their arm for an injection - consent is implied by the gesture
  • This is the most common form used in routine medical practice

2. Informed Express Consent

Specifically and directly stated by the patient. It may be:
  • (a) Verbal - spoken consent, ideally in the presence of a disinterested third party (e.g., a nurse)
  • (b) Written - required for any procedure beyond routine examination (operations, blood transfusion, blood collection, etc.)

Informed Consent - What It Must Cover

Informed consent means the patient understands all of the following:
  1. The nature of their condition
  2. The nature of the proposed treatment or procedure
  3. Expected outcomes and likelihood of success
  4. Alternative courses of treatment available
  5. Risks and benefits of both the proposed and alternative procedures
  6. Risks of NOT receiving treatment
  7. Any particular known inherent risks material to the decision
All disclosures must be in language the patient can understand. Physicians have a legal, moral, and ethical duty to provide this information.

Rules of Consent (9 Key Rules)

  1. Consent is necessary for every medical examination; formal/written consent is not always required if behaviour implies it
  2. Oral consent should be obtained in the presence of a disinterested third party (e.g., nurse)
  3. Written consent is not needed for trivial examinations, but advisable for court proof
  4. Written consent should refer to one specific procedure - not blanket permission on hospital admission; must include consent to general anaesthesia if applicable
  5. Written consent must be witnessed to prevent allegations of forgery or coercion
  6. Any non-routine procedure (operation, blood transfusion, etc.) requires express written consent - taken before the act, not at the time of admission
  7. The doctor must explain the purpose of the examination; patient must know findings will go into a medical report
  8. In medico-legal cases, the patient must be informed of their right to refuse examination
  9. Consent must be: free, voluntary, clear, intelligent, informed, direct, and personal - no fraud, misrepresentation, undue influence, or compulsion

Therapeutic Privilege

An exception to full disclosure. If full disclosure of theoretical risks would terrify or destabilise an emotionally disturbed or psychoneurotic patient who may then refuse necessary treatment, the doctor may use discretion about what is disclosed. The doctor must:
  • Carefully note the decision in the patient's record
  • Explain their reasoning
  • Request consultation to establish the patient's emotional state

Exceptions to Informed Consent

  1. Emergency - In emergencies, the law implies consent (e.g., an unconscious accident victim needing amputation; a comatose patient)
  2. Therapeutic privilege - Risk of psychological harm from full disclosure
  3. Patient waiver - Patient delegates the right to the doctor or a close relative (must be clearly written in the record)

Special Situations

SituationRule
EmergencyLaw implies consent; even a comatose or intoxicated patient who cannot consent may be treated
Child under 16Parents/guardians give consent; child achieves capacity when they can fully understand the procedure (Gillick principle)
Person above 18Can give valid consent to any harm not intended to cause death/grievous hurt (Sec. 25 BNS)
Person of unsound mind / child under 12Guardian gives consent; doctor acting in good faith is protected (Sec. 27 BNS)
Fear, misrepresentation, intoxicationConsent is invalid (Sec. 28 BNS)
Rape victimMust NOT be examined without written consent
DrunkennessCannot be examined without written consent; if unconscious, treatment can proceed
Medico-legal examinationPatient has the right to refuse; cannot be forced

Loco Parentis

Latin for "in place of a parent." In emergencies involving children when parents are unavailable, consent may be taken from the person in charge of the child - e.g., a schoolteacher during a picnic, or a residential school headmaster.

Paternalism (What to Avoid)

Paternalism is the abuse of medical knowledge to deprive a patient of their autonomy - where the doctor does not disclose the illness or proposed treatment and makes decisions on the patient's behalf. This is actionable under Sec. 129 BNS (old S. 350 IPC) and can result in action by the Medical Council.

Invalid Consent

Consent is void when given:
  • Under fear of injury (Sec. 28 BNS)
  • Due to misrepresentation of facts
  • By an insane or intoxicated person who cannot understand the consequences
  • Through fraud (e.g., falsely telling a patient an operation is necessary to save their life when it is not)

Legal Provisions (India - BNS/BNSS)

SectionContent
Sec. 25 BNSPerson above 18 can consent to any harm not amounting to death/grievous hurt
Sec. 27 BNSActs done in good faith for a child under 12 or person of unsound mind by/with guardian's consent are not offences
Sec. 28 BNSConsent under fear, misrepresentation, or by insane/intoxicated person is invalid
Sec. 30 BNSHarm in good faith without consent in emergencies (where consent is impossible to obtain) is not an offence
Sec. 31 BNSCommunication in good faith for a patient's benefit is not an offence even if it causes harm
Sec. 51 BNSSA registered medical practitioner can examine an arrested person (even with reasonable force) on request of a police officer not below the rank of sub-inspector
Sec. 53 BNSSMandates compulsory medical examination in all police arrests

Important Ips s and crpcs

Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Good - I now have solid material from the Forensic Medicine textbook. Let me compile the full, organized answer from this and the content already gathered across all previous queries.

Important IPC / BNS Sections and CrPC / BNSS Sections in Forensic Medicine

Note on new laws: India replaced the IPC with the Bharatiya Nyaya Sanhita (BNS) 2023 and the CrPC with the Bharatiya Nagarik Suraksha Sanhita (BNSS) 2023. Both old and new section numbers are given below as exam questions may use either.

PART A - IPC / BNS Sections

Group 1: Consent-Related Sections

BNS SectionOld IPCSubjectKey Point
Sec. 25S. 87 IPCConsent by adultPerson above 18 years can consent to harm not amounting to death or grievous hurt
Sec. 27S. 89 IPCConsent for child / unsound mindActs done in good faith for a child under 12 years or person of unsound mind by/with guardian's consent are not offences
Sec. 28S. 90 IPCInvalid consentConsent under fear, misrepresentation, intoxication, or insanity is invalid
Sec. 30S. 92 IPCEmergency - no consent neededHarm caused in good faith without consent in emergencies (where consent is impossible) is NOT an offence
Sec. 31S. 93 IPCCommunication in good faithCommunication made in good faith for patient's benefit is not an offence even if it causes harm

Group 2: Homicide - Murder and Culpable Homicide

BNS SectionOld IPCSubjectKey Point
Sec. 99S. 299 IPCCulpable HomicideCausing death with intention or knowledge that the act is likely to cause death
Sec. 101S. 300 IPCMurderCulpable homicide becomes murder when: (1) intent to cause death, (2) intent to cause injury known likely to cause death, (3) injury sufficient to cause death in ordinary nature, (4) act so dangerous it must cause death
Sec. 105S. 304 IPCPunishment for culpable homicide NOT amounting to murderLife imprisonment, or up to 10 years + fine
Sec. 103S. 302 IPCPunishment for MurderDeath or life imprisonment
Exceptions where culpable homicide does NOT become murder:
  1. Grave and sudden provocation
  2. Good faith exercise of right of private defence
  3. Advancement of public justice
  4. Without premeditation (sudden fight)
  5. Person above 18 takes risk of death with own consent

Group 3: Hurt and Grievous Hurt

BNS SectionOld IPCSubjectKey Point
Sec. 114S. 319 IPCHurtCausing bodily pain, disease, or infirmity to any person
Sec. 116S. 320 IPCGrievous Hurt8 specific categories: emasculation; permanent loss of sight; permanent loss of hearing; loss of a member/joint; destruction of a member/joint; permanent disfigurement of head or face; fracture or dislocation of bone; any hurt endangering life or causing severe suffering for 20+ days
Sec. 118S. 323 IPCPunishment for voluntarily causing hurtUp to 1 year imprisonment or fine up to Rs. 10,000 or both
Sec. 122S. 325 IPCPunishment for voluntarily causing grievous hurtUp to 7 years + fine

Group 4: Sexual Offences

BNS SectionOld IPCSubjectKey Point
Sec. 63S. 375 IPCRapeSexual intercourse with a woman without her consent or under 18 years of age (statutory rape)
Sec. 64S. 376 IPCPunishment for RapeMinimum 10 years rigorous imprisonment, extendable to life
Sec. 70S. 376D IPCGang RapeMinimum 20 years, extendable to life
Sec. 69-Sexual intercourse by deceitIntercourse under false promise of marriage/employment

Group 5: Offences Related to Birth, Death, and Children

BNS SectionOld IPCSubjectKey Point
Sec. 88S. 312 IPCCausing Miscarriage (Abortion)Causing miscarriage without consent = offence; with woman's consent = lesser punishment
Sec. 89S. 313 IPCAbortion without woman's consentMore severe punishment
Sec. 90S. 314 IPCDeath caused during abortionWhen act was done without intent to cause death - imprisonment up to 10 years
Sec. 91S. 315 IPCAct to prevent a child being born aliveDone before, during, or after birth to prevent child living
Sec. 92S. 316 IPCCausing death of quick unborn childEquivalent to culpable homicide
Sec. 94S. 318 IPCConcealment of birthSecret disposal of a dead body of a child whether it died before, during, or after birth

Group 6: Negligence and Professional Liability

BNS SectionOld IPCSubjectKey Point
Sec. 106S. 304A IPCDeath by negligenceCausing death by a rash or negligent act not amounting to culpable homicide - up to 2 years imprisonment or fine or both
Sec. 125S. 337 IPCHurt by act endangering lifeRash or negligent act endangering human life or safety - up to 6 months or fine up to Rs. 2,500
Sec. 126S. 338 IPCGrievous hurt by act endangering lifeAs above but grievous hurt - up to 2 years or fine up to Rs. 5,000
Sec. 129S. 350 IPCCriminal forceIntentional use of force against a person without consent
Key exam point: Medical negligence resulting in death is charged under Sec. 106 BNS (S. 304A IPC) - "rash or negligent act." This is different from culpable homicide (which requires intent or knowledge).

Group 7: Poisoning and Dowry

BNS SectionOld IPCSubjectKey Point
Sec. 124S. 328 IPCCausing hurt by poisonAdministering poison with intent to commit or facilitate offence - up to 10 years + fine
Sec. 80S. 304B IPCDowry DeathDeath of woman within 7 years of marriage due to burns, bodily injury, or suspicious circumstances = dowry death; minimum 7 years, max life imprisonment
Sec. 85S. 498A IPCCruelty by husband/relativesSubjecting a woman to cruelty - up to 3 years + fine

Group 8: Mental Health / Unsound Mind

BNS SectionOld IPCSubjectKey Point
Sec. 22S. 84 IPCAct of a person of unsound mindNothing is an offence done by a person who is of unsound mind and incapable of knowing the nature of the act

Group 9: Other Important Sections

BNS SectionOld IPCSubjectKey Point
Sec. 226S. 191 IPCGiving false evidenceGiving false evidence in judicial proceedings
Sec. 227S. 193 IPCPerjuryGiving false evidence after taking oath - up to 7 years + fine
Sec. 319S. 499 IPCDefamationMaking false statements that harm reputation

PART B - CrPC / BNSS Sections

Sections Most Relevant to Medical Professionals

BNSS SectionOld CrPCSubjectKey Point
Sec. 51S. 53 CrPCExamination of accusedRegistered medical practitioner can examine an arrested person (using reasonable force if needed) on request of police officer not below sub-inspector rank. Females must be examined by/under a female RMP
Sec. 53S. 55 CrPCExamination of arrested personMandatory medical examination at time of arrest; copy of report given to arrested person
Sec. 176S. 174 CrPCPolice InquestHeld by police officer not below senior head constable for sudden/suspicious deaths
Sec. 196S. 176 CrPCMagistrate InquestHeld by District/Judicial/Executive Magistrate; only when specially indicated
Sec. 64S. 62 CrPCSubpoena/SummonsWritten order compelling a witness to attend court
Sec. 39 BNSSS. 39 CrPCDuty to report offencesEvery person (including doctors) must report certain offences to police

Indian Evidence Act (IEA) / Bharatiya Sakshya Adhiniyam (BSA) Sections

BSA SectionOld IEASubjectKey Point
Sec. 26S. 32 IEADying DeclarationStatements made by a dying person about cause/circumstances of death are admissible as evidence
Sec. 39 / 45S. 45 IEAExpert WitnessOpinions of experts in foreign law, science, or art are relevant facts
Sec. 55S. 60 IEAOral EvidenceMust be direct (first-hand); cannot be hearsay
Sec. 56S. 61 IEADocumentary EvidenceAll documents produced for court inspection
Sec. 142S. 137 IPCExamination-in-chiefQuestions by your own counsel
Sec. 143S. 138 IEARe-examinationBy own counsel after cross-exam to clarify discrepancies
Sec. 146-149S. 141-146 IEACross-examinationBy opposing counsel; leading questions allowed

Quick Exam Memory Table

TopicOld IPCNew BNS
MurderS. 302S. 103
Culpable homicideS. 299S. 99
Death by negligenceS. 304AS. 106
Grievous hurtS. 320S. 116
RapeS. 375S. 63
AbortionS. 312S. 88
Concealment of birthS. 318S. 94
Dowry deathS. 304BS. 80
Cruelty by husbandS. 498AS. 85
PoisoningS. 328S. 124
PerjuryS. 193S. 227
Unsound mind defenceS. 84S. 22
Invalid consentS. 90S. 28
Emergency - no consentS. 92S. 30
Police InquestS. 174 CrPCS. 176 BNSS
Magistrate InquestS. 176 CrPCS. 196 BNSS
Examination of accusedS. 53 CrPCS. 51 BNSS
Dying DeclarationS. 32 IEAS. 26 BSA

Mnemonic for negligence vs. murder:
  • Negligence (no intent, rash act) = 304A IPC / 106 BNS = max 2 years
  • Murder (intent to kill) = 302 IPC / 103 BNS = death or life
  • In between (culpable homicide not murder) = 304 IPC / 105 BNS = up to life
This is a shared conversation. Sign in to Orris to start your own chat.