explain the joints of the upper limb with detailed explanation and mnemonics to learn, secondly, explain the landmarks of the upper limb - quadrangular space, upper/lower triangular space, cubital fossa, ulnar tunnel, bicipital aponeurosis, anatomical snuff box, compartments & potential spaces of hand, and axilla. make sure to write their clinicals (if present) respectively, and if there are any distinction-scoring points, do explain them as well. all this for the level of MS1 so make it easy too

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
That is the full guide. Here is a quick orientation of what is covered and how to use it:

How to Use This Guide

Part 1 (Joints) covers all 8 joint groups in order from proximal to distal: Glenohumeral → AC → SC → Elbow → Wrist → CMC → MCP → IP. Each entry gives you joint type, bones, ligaments, movements, and clinicals.
Part 2 (Landmarks) covers the 10 landmarks/spaces you asked for, structured as: boundaries → contents → clinical significance.

Your Best Mnemonics to Learn First

MnemonicWhat it remembers
SITSRotator cuff muscles (Supraspinatus, Infraspinatus, Teres minor, Subscapularis)
1-2-3Branches of axillary artery parts (1, 2, 3 branches per part)
TANCubital fossa contents lateral to medial: Tendon → Artery → Nerve
QTT3 posterior shoulder spaces: Quadrangular (Axillary n.) → Triangular (Scapular circumflex) → Triangular interval (Radial n.)
P-H (Pisiform-Hamate)Ulnar tunnel/Guyon's canal walls
S-TSnuff box floor = Scaphoid + Trapezium
DAB/PADDorsal interossei Abduct, Palmar interossei Adduct

Generate a PowerPoint presentation on upper limb joints and landmarks with clinical cases

Reading File
Reading File
Reading File
Running Command

ls -la /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/upper-limb-ppt

Writing File

~/upper-limb-ppt/generate.js

const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Upper Limb: Joints & Landmarks";
pres.author = "Anatomy MS1";

// ─── PALETTE ───────────────────────────────────────────────────────────────
const C = {
  navy:    "0D1B2A",   // primary dark
  cobalt:  "1A4C8E",   // accent blue
  teal:    "0E7490",   // section accent
  gold:    "E9A319",   // highlight
  red:     "C0392B",   // clinical/danger
  light:   "EAF2FB",   // light bg
  white:   "FFFFFF",
  grey:    "6B7280",
  lgrey:   "D1D5DB",
  midgrey: "374151",
};

// ─── HELPERS ────────────────────────────────────────────────────────────────
function addSlideBg(slide, color) {
  slide.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625, fill: { color }, line: { width: 0 }
  });
}

function sectionHeader(slide, num, title) {
  addSlideBg(slide, C.cobalt);
  // accent bar left
  slide.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.12, h: 5.625, fill: { color: C.gold }, line: { width: 0 }
  });
  slide.addText(`0${num}`, {
    x: 0.4, y: 1.2, w: 2, h: 1.4, fontSize: 80, bold: true,
    color: "FFFFFF", transparency: 20, fontFace: "Calibri"
  });
  slide.addText(title, {
    x: 2.8, y: 1.7, w: 6.8, h: 1.8, fontSize: 36, bold: true,
    color: C.white, fontFace: "Calibri", valign: "middle"
  });
}

function contentSlide(slide, title, accent) {
  addSlideBg(slide, C.light);
  // top bar
  slide.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.75, fill: { color: accent || C.cobalt }, line: { width: 0 }
  });
  slide.addText(title, {
    x: 0.35, y: 0.08, w: 9.3, h: 0.6, fontSize: 18, bold: true,
    color: C.white, fontFace: "Calibri", valign: "middle", margin: 0
  });
}

function clinicalSlide(slide, title) {
  addSlideBg(slide, C.navy);
  slide.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.75, fill: { color: C.red }, line: { width: 0 }
  });
  slide.addText("🩺  " + title, {
    x: 0.35, y: 0.08, w: 9.3, h: 0.6, fontSize: 17, bold: true,
    color: C.white, fontFace: "Calibri", valign: "middle", margin: 0
  });
}

function infoBox(slide, x, y, w, h, header, lines, headerColor, isLight) {
  const bgColor = isLight ? C.white : C.navy;
  const textColor = isLight ? C.midgrey : C.lgrey;
  const hColor = isLight ? (headerColor || C.cobalt) : (headerColor || C.gold);
  slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
    x, y, w, h, fill: { color: bgColor }, rectRadius: 0.08,
    shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.12 }
  });
  slide.addText(header, {
    x: x + 0.12, y: y + 0.05, w: w - 0.24, h: 0.34,
    fontSize: 10.5, bold: true, color: hColor, fontFace: "Calibri", margin: 0
  });
  const textItems = lines.map((l, i) => ({
    text: l,
    options: { bullet: { type: "bullet" }, breakLine: i < lines.length - 1, fontSize: 9.5, color: textColor, fontFace: "Calibri" }
  }));
  slide.addText(textItems, {
    x: x + 0.12, y: y + 0.42, w: w - 0.18, h: h - 0.5,
    fontFace: "Calibri", fontSize: 9.5, color: textColor, valign: "top"
  });
}

function tagBadge(slide, x, y, label, color) {
  slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
    x, y, w: 2.1, h: 0.3, fill: { color }, rectRadius: 0.06, line: { width: 0 }
  });
  slide.addText(label, {
    x, y, w: 2.1, h: 0.3, fontSize: 9, bold: true, color: C.white,
    align: "center", valign: "middle", fontFace: "Calibri", margin: 0
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addSlideBg(s, C.navy);
  // gradient-like side accent
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 3.5, h: 5.625, fill: { color: C.cobalt }, line: { width: 0 }
  });
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: C.gold }, line: { width: 0 }
  });
  // anatomical cross icon (simple circle + lines)
  s.addShape(pres.shapes.OVAL, {
    x: 0.5, y: 0.6, w: 2.5, h: 2.5,
    fill: { color: C.teal, transparency: 30 }, line: { color: C.gold, width: 2 }
  });
  s.addText("✦", { x: 0.5, y: 0.6, w: 2.5, h: 2.5, fontSize: 48, color: C.white, align: "center", valign: "middle" });
  s.addText("UPPER LIMB", {
    x: 3.8, y: 0.7, w: 6, h: 0.7, fontSize: 28, bold: true,
    charSpacing: 5, color: C.gold, fontFace: "Calibri", valign: "middle"
  });
  s.addText("Joints & Landmarks", {
    x: 3.8, y: 1.4, w: 6, h: 0.9, fontSize: 34, bold: true,
    color: C.white, fontFace: "Calibri", valign: "middle"
  });
  s.addText("with Clinical Cases", {
    x: 3.8, y: 2.25, w: 6, h: 0.5, fontSize: 17, italic: true,
    color: C.lgrey, fontFace: "Calibri", valign: "middle"
  });
  s.addShape(pres.shapes.RECTANGLE, {
    x: 3.8, y: 2.85, w: 2.2, h: 0.04, fill: { color: C.gold }, line: { width: 0 }
  });
  s.addText("MS1 Anatomy  •  Upper Limb Module", {
    x: 3.8, y: 3.05, w: 6, h: 0.4, fontSize: 12, color: C.lgrey,
    fontFace: "Calibri", valign: "middle"
  });
  const topics = ["Joints of the Upper Limb", "Axilla & Apertures", "Cubital Fossa", "Wrist Landmarks", "Hand Spaces", "Clinical Cases"];
  topics.forEach((t, i) => {
    s.addText("→  " + t, {
      x: 3.8, y: 3.6 + i * 0.29, w: 6, h: 0.28,
      fontSize: 10.5, color: C.lgrey, fontFace: "Calibri", valign: "middle"
    });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 2 — SECTION: JOINTS
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  sectionHeader(s, 1, "Joints of the Upper Limb");
  s.addText("From shoulder to fingertip — 8 joint groups", {
    x: 2.8, y: 3.2, w: 7, h: 0.5, fontSize: 15, italic: true,
    color: C.lgrey, fontFace: "Calibri"
  });
  const mnems = [
    { t: "SITS", sub: "Rotator Cuff" },
    { t: "TAN", sub: "Cubital Fossa" },
    { t: "QTT", sub: "3 Spaces" },
  ];
  mnems.forEach((m, i) => {
    s.addShape(pres.shapes.OVAL, {
      x: 0.4 + i * 0.85, y: 3.8, w: 0.6, h: 0.6,
      fill: { color: C.gold }, line: { width: 0 }
    });
    s.addText(m.t, { x: 0.4 + i * 0.85, y: 3.8, w: 0.6, h: 0.6, fontSize: 7.5, bold: true, color: C.navy, align: "center", valign: "middle" });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 3 — SHOULDER JOINT
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  contentSlide(s, "Shoulder (Glenohumeral) Joint", C.cobalt);

  infoBox(s, 0.2, 0.9, 3.0, 2.0, "JOINT TYPE & BONES", [
    "Ball-and-socket (spheroidal) synovial joint",
    "Head of humerus (ball) + glenoid cavity (socket)",
    "Most MOBILE joint — but most commonly DISLOCATED",
    "Glenoid labrum deepens socket by ~5 mm",
    "Glenoid is 3-4x SMALLER than humeral head",
  ], C.cobalt, true);

  infoBox(s, 3.35, 0.9, 3.3, 2.0, "LIGAMENTS (3 GH + 1 CHL)", [
    "Superior GHL — limits inferior translation",
    "Middle GHL — limits ER at <45° abduction",
    "Inferior GHL — most important; 'hammock' at 90° abd",
    "Coracohumeral lig — stabilizes biceps tendon",
  ], C.teal, true);

  infoBox(s, 6.8, 0.9, 3.0, 2.0, "ROTATOR CUFF — SITS", [
    "S — Supraspinatus (suprascapular n.) — initiates abduction",
    "I — Infraspinatus (suprascapular n.) — ext. rotation",
    "T — Teres minor (axillary n.) — ext. rotation",
    "S — Subscapularis (subscapular n.) — int. rotation",
  ], C.gold, true);

  infoBox(s, 0.2, 3.05, 4.5, 2.35, "MOVEMENTS", [
    "Flexion / Extension",
    "Abduction / Adduction",
    "Medial / Lateral rotation",
    "Circumduction",
    "NB: Scapulothoracic rhythm — 2:1 ratio (2° glenohumeral : 1° scapular rotation)",
  ], C.cobalt, true);

  infoBox(s, 4.85, 3.05, 4.95, 2.35, "★ DISTINCTION POINTS", [
    "Inferior GHL = most important stabilizer (forms 'hammock')",
    "SITS = primary stabilizers — NOT bony architecture",
    "SC joint is the ONLY bony link to axial skeleton",
    "Post. dislocation = electric shock / seizure = 'light bulb sign'",
  ], C.gold, true);
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 4 — ELBOW JOINT
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  contentSlide(s, "Elbow Joint — 3 Articulations, 1 Synovial Cavity", C.teal);

  // key concept box across top
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.2, y: 0.9, w: 9.6, h: 0.5, fill: { color: C.teal }, line: { width: 0 }
  });
  s.addText("KEY CONCEPT: Three joints share ONE common synovial cavity — injection of one treats all three.", {
    x: 0.2, y: 0.9, w: 9.6, h: 0.5, fontSize: 11, bold: true,
    color: C.white, fontFace: "Calibri", align: "center", valign: "middle", margin: 0
  });

  infoBox(s, 0.2, 1.55, 3.1, 1.7, "HUMEROULNAR (HINGE)", [
    "Trochlea of humerus + trochlear notch of ulna",
    "Allows: Flexion & Extension",
    "Primary articulation of elbow",
  ], C.cobalt, true);
  infoBox(s, 3.45, 1.55, 3.1, 1.7, "HUMERORADIAL (HINGE)", [
    "Capitulum of humerus + head of radius",
    "Allows: Flexion & Extension",
    "Also participates in prono-supination",
  ], C.cobalt, true);
  infoBox(s, 6.7, 1.55, 3.1, 1.7, "PROXIMAL RADIOULNAR (PIVOT)", [
    "Head of radius + radial notch of ulna",
    "Annular ligament wraps radial neck",
    "Allows: Pronation & Supination",
  ], C.cobalt, true);

  infoBox(s, 0.2, 3.4, 4.5, 2.0, "COLLATERAL LIGAMENTS", [
    "UCL (medial) — anterior bundle = primary valgus restraint",
    "    Pitcher's elbow = UCL injury in throwers",
    "RCL (lateral) — includes annular ligament",
    "    Pulled elbow — radial head subluxes from annular lig.",
    "    Occurs in children <5 yrs after sharp pull on hand",
  ], C.teal, true);

  infoBox(s, 4.85, 3.4, 4.95, 2.0, "FAT PADS & X-RAY SIGNS", [
    "Anterior fat pad — small, normal on lateral X-ray",
    "Posterior fat pad — ALWAYS abnormal = effusion / fracture",
    "'Sail sign' = elevated anterior fat pad = effusion",
    "Carrying angle = 7° valgus (normal)",
    "Cubitus varus (gunstock) after malunited supracondylar fracture",
  ], C.gold, true);
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 5 — WRIST & HAND JOINTS
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  contentSlide(s, "Wrist & Hand Joints", C.cobalt);

  // table-style joint overview
  const joints = [
    ["Radiocarpal (Wrist)", "Condyloid (ellipsoid)", "Flexion, Extension, Abd, Add", "Radius + articular disc + scaphoid/lunate/triquetrum"],
    ["Intercarpal", "Plane", "Limited gliding — contributes to extension", "Proximal & distal carpal rows"],
    ["CMC of Thumb", "SADDLE", "Flex/Ext/Abd/Add/Rotation/Circumduction", "Trapezium + 1st metacarpal"],
    ["CMC 2nd-5th", "Plane", "Limited gliding; 5th most mobile", "Distal carpals + metacarpals II-V"],
    ["MCP joints", "Condyloid", "Flex/Ext/Abd/Add/Circumduction", "Metacarpal heads + proximal phalanges"],
    ["IP joints", "Hinge", "Flexion & Extension only", "Between phalanges (PIP & DIP)"],
  ];

  const headers = ["JOINT", "TYPE", "MOVEMENTS", "BONES"];
  const colW = [2.2, 1.7, 3.2, 2.7];
  const colX = [0.2, 2.42, 4.12, 7.32];

  // Header row
  headers.forEach((h, ci) => {
    s.addShape(pres.shapes.RECTANGLE, {
      x: colX[ci], y: 0.88, w: colW[ci] - 0.06, h: 0.35,
      fill: { color: C.cobalt }, line: { width: 0 }
    });
    s.addText(h, {
      x: colX[ci] + 0.06, y: 0.88, w: colW[ci] - 0.12, h: 0.35,
      fontSize: 9, bold: true, color: C.white, fontFace: "Calibri", valign: "middle", margin: 0
    });
  });

  joints.forEach((row, ri) => {
    const rowY = 1.28 + ri * 0.55;
    const bg = ri % 2 === 0 ? C.white : "F0F7FF";
    row.forEach((cell, ci) => {
      s.addShape(pres.shapes.RECTANGLE, {
        x: colX[ci], y: rowY, w: colW[ci] - 0.06, h: 0.5,
        fill: { color: bg }, line: { color: C.lgrey, width: 0.5 }
      });
      s.addText(cell, {
        x: colX[ci] + 0.07, y: rowY + 0.02, w: colW[ci] - 0.14, h: 0.46,
        fontSize: 8.5, color: ci === 0 ? C.cobalt : C.midgrey, bold: ci === 0,
        fontFace: "Calibri", valign: "middle", wrap: true
      });
    });
  });

  // highlight CMC saddle
  s.addShape(pres.shapes.RECTANGLE, {
    x: colX[1], y: 1.28 + 2*0.55, w: colW[1] - 0.06, h: 0.5,
    fill: { color: C.gold, transparency: 20 }, line: { color: C.gold, width: 1 }
  });

  s.addText("★  Ulna does NOT articulate with carpals — TFCC/articular disc intervenes   |   Ulnar deviation > Radial deviation (radial styloid extends more distally)", {
    x: 0.2, y: 5.1, w: 9.6, h: 0.35, fontSize: 9, italic: true, bold: true,
    color: C.cobalt, fontFace: "Calibri", align: "center"
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 6 — SECTION: LANDMARKS
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  sectionHeader(s, 2, "Upper Limb Landmarks");
  s.addText("Axilla · Spaces · Fossa · Tunnel · Snuff box · Hand", {
    x: 2.8, y: 3.2, w: 7, h: 0.5, fontSize: 14, italic: true,
    color: C.lgrey, fontFace: "Calibri"
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 7 — AXILLA
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  contentSlide(s, "The Axilla — Pyramidal Gateway to the Upper Limb", C.cobalt);

  infoBox(s, 0.2, 0.9, 4.6, 2.65, "BOUNDARIES", [
    "Anterior wall: Pectoralis major (front); pec minor + subclavius (behind)",
    "Posterior wall: Subscapularis (top); teres major + lat. dorsi (bottom)",
    "Medial wall: Ribs 1-4 + intercostals + serratus anterior",
    "Lateral wall: Intertubercular sulcus of humerus (narrowest)",
    "Apex (inlet): Lat. border rib I + post. surface clavicle + sup. border scapula",
    "Floor: Axillary fascia + skin dome",
  ], C.cobalt, true);

  infoBox(s, 5.0, 0.9, 4.8, 2.65, "CONTENTS — BALMS", [
    "B — Brachial plexus (cords surround axillary artery)",
    "A — Axillary artery & vein",
    "L — Lymph nodes (5 groups) — drain breast + upper limb",
    "M — Muscles (proximal biceps brachii, coracobrachialis)",
    "S — Subscapular vessels + axillary process of breast",
    "Subclavian → Axillary artery at lateral border of rib I",
  ], C.teal, true);

  infoBox(s, 0.2, 3.7, 9.6, 1.75, "AXILLARY ARTERY — 3 PARTS (Divided by Pectoralis Minor) — Mnemonic: 1, 2, 3 branches", [
    "Part 1 (medial to pec minor): 1 branch — Superior thoracic artery",
    "Part 2 (posterior to pec minor): 2 branches — Thoracoacromial artery + Lateral thoracic artery",
    "Part 3 (lateral to pec minor): 3 branches — Subscapular artery + Anterior circumflex humeral artery + Posterior circumflex humeral artery",
  ], C.gold, true);
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 8 — THREE POSTERIOR SHOULDER SPACES
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  contentSlide(s, "3 Posterior Shoulder Spaces — Mnemonic: QTT (Axillary · Scapular · Radial)", C.teal);

  // numbered badges
  const spaces = [
    {
      num: "1", color: C.cobalt, label: "QUADRANGULAR SPACE",
      bounds: ["Superior: Inferior border of subscapularis + teres minor", "Inferior: Superior border of teres major", "Medial: Long head of triceps (lateral margin)", "Lateral: Surgical neck of humerus"],
      contents: ["Axillary nerve", "Posterior circumflex humeral a/v"],
      clin: "Quadrangular space syndrome — axillary nerve compression → deltoid + teres minor atrophy, lateral arm numbness"
    },
    {
      num: "2", color: C.teal, label: "TRIANGULAR SPACE",
      bounds: ["Superior: Inferior border of subscapularis / teres minor", "Inferior: Superior border of teres major", "Lateral: MEDIAL margin of long head of triceps"],
      contents: ["Circumflex scapular artery & vein", "Communicates axilla ↔ post. scapular region"],
      clin: "Less clinically significant; landmark for scapular anastomosis"
    },
    {
      num: "3", color: C.gold, label: "TRIANGULAR INTERVAL",
      bounds: ["Superior: Inferior border of teres major", "Medial: Long head of triceps (lateral margin)", "Lateral: Shaft of humerus"],
      contents: ["Radial nerve", "Profunda brachii artery (deep brachial a.)"],
      clin: "Midshaft humeral fracture → radial nerve injury → WRIST DROP (can't extend wrist/fingers/thumb)"
    }
  ];

  spaces.forEach((sp, i) => {
    const x = 0.18 + i * 3.27;
    s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x, y: 0.9, w: 3.1, h: 4.55,
      fill: { color: C.white }, rectRadius: 0.1,
      shadow: { type: "outer", color: "000000", blur: 6, offset: 2, angle: 135, opacity: 0.12 }
    });
    // number badge
    s.addShape(pres.shapes.OVAL, {
      x: x + 0.1, y: 0.97, w: 0.5, h: 0.5,
      fill: { color: sp.color }, line: { width: 0 }
    });
    s.addText(sp.num, { x: x + 0.1, y: 0.97, w: 0.5, h: 0.5, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle" });
    s.addText(sp.label, {
      x: x + 0.68, y: 0.99, w: 2.35, h: 0.46,
      fontSize: 9.5, bold: true, color: sp.color, fontFace: "Calibri", valign: "middle"
    });
    // Borders
    s.addText("BOUNDARIES:", {
      x: x + 0.12, y: 1.55, w: 2.86, h: 0.25,
      fontSize: 8.5, bold: true, color: C.midgrey, fontFace: "Calibri"
    });
    const bItems = sp.bounds.map((b, bi) => ({
      text: b,
      options: { bullet: { type: "bullet" }, breakLine: bi < sp.bounds.length - 1, fontSize: 8, color: C.midgrey }
    }));
    s.addText(bItems, { x: x + 0.12, y: 1.8, w: 2.86, h: 1.4, fontFace: "Calibri", valign: "top" });

    // Contents
    s.addShape(pres.shapes.RECTANGLE, {
      x: x + 0.12, y: 3.25, w: 2.86, h: 0.22,
      fill: { color: sp.color }, line: { width: 0 }
    });
    s.addText("CONTENTS", { x: x + 0.12, y: 3.25, w: 2.86, h: 0.22, fontSize: 8, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    const cItems = sp.contents.map((c, ci) => ({
      text: c,
      options: { bullet: { type: "bullet" }, breakLine: ci < sp.contents.length - 1, fontSize: 8.5, color: sp.color, bold: true }
    }));
    s.addText(cItems, { x: x + 0.12, y: 3.5, w: 2.86, h: 0.6, fontFace: "Calibri", valign: "top" });

    // Clinical
    s.addText("⚕ " + sp.clin, {
      x: x + 0.1, y: 4.15, w: 2.9, h: 1.2,
      fontSize: 7.8, italic: true, color: C.red, fontFace: "Calibri", wrap: true, valign: "top"
    });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 9 — CUBITAL FOSSA
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  contentSlide(s, "Cubital Fossa — Triangular Gateway: Arm → Forearm", C.cobalt);

  infoBox(s, 0.2, 0.9, 3.0, 2.3, "BOUNDARIES", [
    "Base (superior): Line between medial + lateral epicondyles",
    "Medial border: Pronator teres",
    "Lateral border: Brachioradialis",
    "Floor/bed: Brachialis muscle (mainly); supinator laterally",
    "Roof: Skin + superficial fascia + bicipital aponeurosis",
  ], C.cobalt, true);

  // TAN diagram (visual)
  s.addShape(pres.shapes.RECTANGLE, {
    x: 3.35, y: 0.9, w: 3.2, h: 2.3,
    fill: { color: C.light }, line: { color: C.lgrey, width: 0.5 }
  });
  s.addText("CONTENTS (Lateral → Medial)", {
    x: 3.35, y: 0.92, w: 3.2, h: 0.3, fontSize: 10, bold: true, color: C.cobalt, align: "center", valign: "middle", margin: 0
  });
  const tanItems = [
    { label: "T", name: "Tendon of Biceps Brachii", col: C.cobalt, note: "goes to radial tuberosity" },
    { label: "A", name: "Brachial Artery", col: C.teal, note: "bifurcates at apex → radial + ulnar" },
    { label: "N", name: "Median Nerve", col: C.red, note: "exits between heads of pronator teres" },
  ];
  tanItems.forEach((item, i) => {
    s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x: 3.42, y: 1.3 + i * 0.6, w: 3.06, h: 0.52,
      fill: { color: item.col, transparency: 85 }, rectRadius: 0.06, line: { color: item.col, width: 1 }
    });
    s.addShape(pres.shapes.OVAL, {
      x: 3.42, y: 1.3 + i * 0.6, w: 0.52, h: 0.52,
      fill: { color: item.col }, line: { width: 0 }
    });
    s.addText(item.label, {
      x: 3.42, y: 1.3 + i * 0.6, w: 0.52, h: 0.52,
      fontSize: 16, bold: true, color: C.white, align: "center", valign: "middle"
    });
    s.addText(item.name, {
      x: 3.98, y: 1.3 + i * 0.6, w: 2.5, h: 0.28,
      fontSize: 9.5, bold: true, color: item.col, fontFace: "Calibri", valign: "middle"
    });
    s.addText(item.note, {
      x: 3.98, y: 1.55 + i * 0.6, w: 2.5, h: 0.26,
      fontSize: 8, italic: true, color: C.grey, fontFace: "Calibri", valign: "middle"
    });
  });

  infoBox(s, 6.68, 0.9, 3.12, 2.3, "KEY NERVES (NOT in fossa!)", [
    "Radial nerve — deep to brachioradialis lip (NOT inside fossa)",
    "  → divides into superficial branch + deep branch (PIN)",
    "  → deep branch pierces supinator",
    "Ulnar nerve — posterior to medial epicondyle",
    "  → does NOT pass through cubital fossa",
  ], C.red, true);

  infoBox(s, 0.2, 3.35, 4.5, 2.1, "BICIPITAL APONEUROSIS (Lacertus Fibrosus)", [
    "Fibrous sheet from medial side of biceps tendon",
    "Fans medially over cubital fossa into forearm fascia",
    "Lies DEEP to median cubital vein; SUPERFICIAL to brachial a + median n",
    "Protects artery from direct trauma",
    "Tethers median cubital vein → better for venepuncture",
    "May mask brachial artery laceration!",
  ], C.gold, true);

  infoBox(s, 4.85, 3.35, 4.95, 2.1, "CLINICAL APPLICATIONS", [
    "Blood pressure: Brachial artery auscultated medial to biceps tendon",
    "Venepuncture: Median cubital vein in roof (stabilized by bicipital aponeurosis)",
    "Superficial to deep in roof: Median cubital vein → Bicipital aponeurosis → Brachial artery → Median nerve",
    "Pronator syndrome: Median n. entrapped between pronator teres heads",
  ], C.cobalt, true);
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 10 — ULNAR TUNNEL & ANATOMICAL SNUFF BOX
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  contentSlide(s, "Ulnar Tunnel (Guyon's Canal) & Anatomical Snuff Box", C.teal);

  // Divider line
  s.addShape(pres.shapes.RECTANGLE, {
    x: 4.9, y: 0.88, w: 0.04, h: 4.6, fill: { color: C.lgrey }, line: { width: 0 }
  });

  s.addText("ULNAR TUNNEL (GUYON'S CANAL)", {
    x: 0.2, y: 0.9, w: 4.55, h: 0.35, fontSize: 11, bold: true, color: C.teal, fontFace: "Calibri"
  });
  infoBox(s, 0.2, 1.3, 4.55, 1.3, "BOUNDARIES", [
    "Floor: Flexor retinaculum + pisohamate ligament",
    "Roof: Palmar carpal ligament",
    "Medial: Pisiform bone",
    "Lateral: Hook of hamate",
  ], C.teal, true);
  infoBox(s, 0.2, 2.75, 4.55, 1.2, "CONTENTS", [
    "Ulnar nerve (medial) — divides inside tunnel",
    "Ulnar artery (lateral)",
    "NO flexor tendons — unlike carpal tunnel (key distinction!)",
  ], C.cobalt, true);
  infoBox(s, 0.2, 4.05, 4.55, 1.35, "CLINICAL: Guyon's Canal Syndrome", [
    "Causes: ganglion cyst (MC), hook of hamate # (racquet sports), cyclist's palsy",
    "Proximal compression: motor + sensory loss",
    "Deep branch only: motor (claw hand, no sensory loss)",
    "Superficial branch only: sensory (medial 1½ fingers), no motor loss",
  ], C.red, true);

  s.addText("ANATOMICAL SNUFF BOX", {
    x: 5.1, y: 0.9, w: 4.7, h: 0.35, fontSize: 11, bold: true, color: C.cobalt, fontFace: "Calibri"
  });
  infoBox(s, 5.1, 1.3, 4.7, 1.3, "BOUNDARIES", [
    "Posterior/medial border: Extensor pollicis longus tendon",
    "Anterior/lateral border: Abductor pollicis longus + Extensor pollicis brevis",
    "Proximal end: Radial styloid process",
    "Floor: Scaphoid (proximal) + Trapezium (distal)",
  ], C.cobalt, true);
  infoBox(s, 5.1, 2.75, 4.7, 1.2, "CONTENTS", [
    "Radial artery — palpable pulse in the floor",
    "Superficial branch of radial nerve (roof)",
    "Cephalic vein crosses the roof",
  ], C.teal, true);
  infoBox(s, 5.1, 4.05, 4.7, 1.35, "CLINICAL PEARLS", [
    "Snuff box tenderness = SCAPHOID FRACTURE until proven otherwise",
    "Even with normal X-ray → immobilize + repeat/MRI",
    "AVN of proximal scaphoid: blood supply enters distally → fracture at waist cuts off proximal pole",
    "De Quervain's tenosynovitis: APL + EPB inflammation (Finkelstein's test)",
  ], C.red, true);
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 11 — HAND COMPARTMENTS & SPACES
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  contentSlide(s, "Compartments & Potential Spaces of the Hand", C.cobalt);

  infoBox(s, 0.2, 0.9, 2.2, 2.3, "THENAR COMPARTMENT", [
    "Abductor pollicis brevis",
    "Opponens pollicis",
    "Flexor pollicis brevis (sup. head)",
    "Nerve: Recurrent branch of median n.",
  ], C.cobalt, true);

  infoBox(s, 2.55, 0.9, 2.2, 2.3, "HYPOTHENAR COMPARTMENT", [
    "Abductor digiti minimi",
    "Opponens digiti minimi",
    "Flexor digiti minimi brevis",
    "Nerve: Deep branch of ulnar n.",
  ], C.teal, true);

  infoBox(s, 4.9, 0.9, 2.3, 2.3, "INTEROSSEOUS COMPARTMENTS", [
    "4 Dorsal interossei — DAB (Dorsals ABduct)",
    "3 Palmar interossei — PAD (Palmars ADduct)",
    "All: deep branch of ulnar nerve",
    "Adductor pollicis also in this zone",
  ], C.gold, true);

  infoBox(s, 7.35, 0.9, 2.45, 2.3, "CENTRAL/PALMAR COMPARTMENT", [
    "Flexor tendons + synovial sheaths",
    "Lumbricals (1,2: median; 3,4: ulnar)",
    "Superficial palmar arch",
    "Median + ulnar nerve branches",
  ], C.cobalt, true);

  // Palmar spaces
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.2, y: 3.32, w: 9.6, h: 0.28,
    fill: { color: C.cobalt }, line: { width: 0 }
  });
  s.addText("POTENTIAL SPACES (Deep Palmar Spaces — clinically critical for infection spread)", {
    x: 0.2, y: 3.32, w: 9.6, h: 0.28, fontSize: 10.5, bold: true, color: C.white, align: "center", valign: "middle", margin: 0
  });

  infoBox(s, 0.2, 3.72, 3.0, 1.75, "THENAR SPACE", [
    "Deep to flexor tendon of index finger",
    "Superficial to adductor pollicis",
    "Infection: 'Ballooning' of thenar eminence",
    "Thumb held abducted, index fixed",
  ], C.cobalt, true);

  infoBox(s, 3.35, 3.72, 3.0, 1.75, "MIDDLE PALMAR SPACE", [
    "Deep to flexor tendons of middle/ring/little",
    "Superficial to 3rd-5th metacarpals + interossei",
    "Infection: Loss of palmar concavity",
    "Dorsal edema (NOT dorsal infection!)",
  ], C.teal, true);

  infoBox(s, 6.5, 3.72, 3.3, 1.75, "PARONA'S SPACE & HORSESHOE ABSCESS", [
    "Parona's space: distal forearm, anterior to pronator quadratus",
    "Both palmar spaces communicate proximally with Parona's space",
    "Horseshoe abscess: ulnar bursa infection tracks to radial bursa via Parona's space",
    "Collar-stud abscess: subaponeurotic infection perforates palmar fascia",
  ], C.gold, true);

  s.addText("★  Septum between thenar + middle palmar space is attached to the 3rd METACARPAL — know which side of this septum an infection lies", {
    x: 0.2, y: 5.42, w: 9.6, h: 0.3, fontSize: 9, italic: true, color: C.red, align: "center", fontFace: "Calibri"
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 12 — SECTION: CLINICAL CASES
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  sectionHeader(s, 3, "Clinical Cases");
  s.addText("Test your anatomy with real-world scenarios", {
    x: 2.8, y: 3.2, w: 7, h: 0.5, fontSize: 15, italic: true,
    color: C.lgrey, fontFace: "Calibri"
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 13 — CLINICAL CASE 1: SHOULDER DISLOCATION
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  clinicalSlide(s, "Case 1 — Shoulder Dislocation After a Fall");

  // Case vignette
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.2, y: 0.9, w: 9.6, h: 0.9,
    fill: { color: "1A1A2E" }, line: { color: C.red, width: 1.5 }
  });
  s.addText("A 24-year-old male falls on his outstretched arm during a rugby tackle. He presents with the arm held in slight abduction and external rotation, shoulder looks 'flat,' and there is a palpable hollow below the acromion. Axillary nerve territory numbness is noted.", {
    x: 0.35, y: 0.93, w: 9.3, h: 0.84,
    fontSize: 10.5, color: C.white, fontFace: "Calibri", italic: true, valign: "middle"
  });

  infoBox(s, 0.2, 1.95, 3.0, 3.45, "DIAGNOSIS & TYPE", [
    "Anterior (subcoracoid) dislocation — 95% of all shoulder dislocations",
    "Mechanism: Forcible external rotation + abduction",
    "Head moves anteroinferiorly",
    "Posterior dislocation (rare, <3%): electric shock / seizure",
    "  → 'light bulb sign' on AP X-ray",
    "  → arm in internal rotation",
  ], C.red, false);

  infoBox(s, 3.35, 1.95, 3.2, 3.45, "COMPLICATIONS", [
    "Axillary nerve (most common) → deltoid atrophy + lateral arm sensory loss",
    "Bankart lesion: torn anterior-inferior glenoid labrum → recurrent dislocation",
    "Hill-Sachs lesion: posterolateral humeral head impaction fracture",
    "Axillary artery injury (rare) — check radial pulse",
    "Rotator cuff tear (esp. in elderly)",
  ], C.gold, false);

  infoBox(s, 6.7, 1.95, 3.1, 3.45, "ANATOMY LINKS", [
    "Inferior GHL most important stabilizer (torn in anterior dislocation)",
    "Test axillary nerve: sensation over 'regimental badge area' (lateral deltoid)",
    "Test motor: deltoid abduction (15-90°)",
    "Quadrangular space: axillary n + post. circumflex humeral a",
    "Recurrent dislocation → Bankart repair (labral reattachment)",
  ], C.teal, false);

  s.addText("KEY POINT: Axillary nerve = most commonly injured nerve in shoulder dislocation. Always test before and after reduction.", {
    x: 0.2, y: 5.38, w: 9.6, h: 0.35, fontSize: 10, bold: true,
    color: C.gold, fontFace: "Calibri", align: "center"
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 14 — CLINICAL CASE 2: SUPRACONDYLAR FRACTURE
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  clinicalSlide(s, "Case 2 — Child with Elbow Injury After FOOSH");

  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.2, y: 0.9, w: 9.6, h: 0.9,
    fill: { color: "1A1A2E" }, line: { color: C.red, width: 1.5 }
  });
  s.addText("A 7-year-old child falls on an outstretched hand. The elbow is swollen, painful, and held slightly flexed. X-ray shows a posterior fat pad sign and a transverse fracture above the epicondyles. Radial pulse is diminished. The forearm appears pale and painful on passive finger extension.", {
    x: 0.35, y: 0.93, w: 9.3, h: 0.84,
    fontSize: 10.5, color: C.white, fontFace: "Calibri", italic: true, valign: "middle"
  });

  infoBox(s, 0.2, 1.95, 3.0, 3.45, "DIAGNOSIS", [
    "Supracondylar fracture of humerus",
    "Most common elbow fracture in children",
    "Extension type (98%): distal fragment displaces POSTERIORLY",
    "Mechanism: triceps pull + momentum",
    "FOOSH = Fall on Outstretched Hand",
  ], C.red, false);

  infoBox(s, 3.35, 1.95, 3.2, 3.45, "COMPLICATIONS", [
    "Brachial artery injury (bowstrings over proximal fragment)",
    "Anterior interosseous nerve injury (branch of median n.)",
    "Volkmann's ischemic contracture: forearm flexor muscles necrose → fixed contracture",
    "Cubitus varus (gunstock deformity) after malunion",
    "Posterior fat pad ALWAYS abnormal → occult fracture",
  ], C.gold, false);

  infoBox(s, 6.7, 1.95, 3.1, 3.45, "ANATOMY LINKS", [
    "Elbow fat pads: coronoid fossa (ant.), olecranon fossa (post.), radial fossa",
    "Posterior fat pad visible on lateral X-ray = EMERGENCY",
    "Brachial artery lies in cubital fossa medial to biceps tendon",
    "Carrying angle: normal 7° valgus; cubitus varus after malunion",
    "Check CRITOE ossification centers in children",
  ], C.teal, false);

  s.addText("CRITOE mnemonic (age of ossification): Capitellum 1 · Radial head 3 · Internal (medial) epicondyle 5 · Trochlea 7 · Olecranon 9 · External (lateral) epicondyle 11", {
    x: 0.2, y: 5.38, w: 9.6, h: 0.35, fontSize: 9.5, bold: true,
    color: C.gold, fontFace: "Calibri", align: "center"
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 15 — CLINICAL CASE 3: SCAPHOID FRACTURE
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  clinicalSlide(s, "Case 3 — Wrist Pain After FOOSH (Normal X-ray)");

  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.2, y: 0.9, w: 9.6, h: 0.9,
    fill: { color: "1A1A2E" }, line: { color: C.red, width: 1.5 }
  });
  s.addText("An 18-year-old skateboarder falls and braces with his outstretched hand. He has wrist pain, with point tenderness in the anatomical snuff box and over the scaphoid tubercle. X-rays are reported as normal. He is discharged without treatment. He returns 6 weeks later with worsening pain.", {
    x: 0.35, y: 0.93, w: 9.3, h: 0.84,
    fontSize: 10.5, color: C.white, fontFace: "Calibri", italic: true, valign: "middle"
  });

  infoBox(s, 0.2, 1.95, 3.1, 3.45, "DIAGNOSIS & LESSON", [
    "Scaphoid fracture (most common carpal fracture ~70%)",
    "Normal X-ray does NOT rule out scaphoid fracture",
    "ACTION: Immobilize in scaphoid cast → repeat X-ray at 10-14 days or MRI/CT",
    "Failure to diagnose = AVN of proximal pole",
    "Never dismiss snuff box tenderness!",
  ], C.red, false);

  infoBox(s, 3.45, 1.95, 3.1, 3.45, "ANATOMY OF AVN RISK", [
    "Radial artery enters scaphoid DISTALLY",
    "In ~10%: sole blood supply is distal → proximal",
    "Fracture at waist cuts off blood to proximal pole",
    "Proximal pole appears SCLEROTIC (white) on X-ray = AVN",
    "Kienbock's disease = same mechanism for LUNATE",
  ], C.gold, false);

  infoBox(s, 6.7, 1.95, 3.1, 3.45, "SNUFF BOX & DE QUERVAIN'S", [
    "Snuff box boundaries: EPL (posterior), APL + EPB (anterior)",
    "Floor: Scaphoid (proximal) + Trapezium (distal)",
    "Radial artery pulse palpable in floor",
    "De Quervain's: inflammation of APL + EPB in 1st extensor compartment",
    "  → Finkelstein's test positive",
    "  → Common in new mothers",
  ], C.teal, false);

  s.addText("KEY POINT: Snuff box tenderness = scaphoid fracture UNTIL PROVEN OTHERWISE — even with normal X-ray. Always immobilize and follow up.", {
    x: 0.2, y: 5.38, w: 9.6, h: 0.35, fontSize: 10, bold: true,
    color: C.gold, fontFace: "Calibri", align: "center"
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 16 — CLINICAL CASE 4: ULNAR NERVE / HAND SPACES
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  clinicalSlide(s, "Case 4 — Cyclist with Hand Weakness & Palmar Infection");

  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.2, y: 0.9, w: 9.6, h: 0.9,
    fill: { color: "1A1A2E" }, line: { color: C.red, width: 1.5 }
  });
  s.addText("Case A: A 35-year-old cyclist has progressive weakness of grip and intrinsic muscles of the right hand after a cycling tour. No sensory loss. Pinch grip weak. Froment's sign positive.  |  Case B: A laborer presents with a swollen, tender palm, loss of normal palmar concavity, and marked dorsal hand edema. He had a puncture wound to his palm 5 days ago.", {
    x: 0.35, y: 0.93, w: 9.3, h: 0.84,
    fontSize: 10, color: C.white, fontFace: "Calibri", italic: true, valign: "middle"
  });

  infoBox(s, 0.2, 1.95, 4.6, 3.45, "CASE A: CYCLIST'S PALSY (Guyon's Canal Syndrome)", [
    "Handlebar pressure compresses ulnar nerve at deep branch level",
    "Motor loss only (deep branch): all interossei, hypothenar muscles, adductor pollicis, medial 2 lumbricals",
    "Froment's sign: patient uses FPL (median n.) to substitute for adductor pollicis (ulnar n.)",
    "Claw deformity: ring + little fingers (MCP hyperextension, IP flexion)",
    "No sensory loss = deep branch only affected (branching distal to sensory fibers)",
    "vs. Carpal tunnel syndrome: median n., sensory loss (thumb/index/middle), thenar wasting",
  ], C.red, false);

  infoBox(s, 5.0, 1.95, 4.8, 3.45, "CASE B: MIDDLE PALMAR SPACE INFECTION", [
    "Puncture wound → infection of middle palmar space",
    "Loss of palmar concavity (normal palm curves inward — infection obliterates this)",
    "Dorsal swelling is MISLEADING — palmar skin is thick, so pus tracks dorsally",
    "Management: surgical drainage through palmar approach",
    "Thenar space infection: 'ballooning' of thenar eminence; thumb held abducted",
    "Horseshoe abscess: infection in ulnar bursa tracks via Parona's space to radial bursa — surgical emergency",
    "Collar-stud abscess: deep pus perforates palmar fascia → bilobed abscess",
  ], C.teal, false);

  s.addText("★  Dorsal hand swelling does NOT mean dorsal infection. Palpate the palm. Track infection spread: palmar space → Parona's space → forearm.", {
    x: 0.2, y: 5.38, w: 9.6, h: 0.35, fontSize: 9.5, bold: true,
    color: C.gold, fontFace: "Calibri", align: "center"
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 17 — DISTINCTION POINTS SUMMARY
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addSlideBg(s, C.navy);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.72, fill: { color: C.gold }, line: { width: 0 }
  });
  s.addText("★  TOP DISTINCTION-SCORING POINTS", {
    x: 0.3, y: 0.1, w: 9.4, h: 0.52, fontSize: 18, bold: true,
    color: C.navy, fontFace: "Calibri", valign: "middle", charSpacing: 1
  });

  const points = [
    ["1", "The SC joint is the ONLY bony connection between the upper limb skeleton and the axial skeleton — and it has an articular DISC (fibrocartilage)."],
    ["2", "The shoulder joint is the most mobile yet most commonly dislocated joint. Stability is provided by SITS, not bone architecture."],
    ["3", "All 3 elbow articulations share ONE synovial cavity. Injecting one treats all."],
    ["4", "Ulna does NOT directly articulate with carpals. TFCC/articular disc intervenes."],
    ["5", "Ulnar nerve does NOT pass through cubital fossa — it goes posterior to medial epicondyle (ulnar groove)."],
    ["6", "Radial nerve is NOT inside the cubital fossa — it lies deep to brachioradialis."],
    ["7", "Posterior fat pad on lateral elbow X-ray is ALWAYS abnormal — hemarthrosis / effusion."],
    ["8", "Snuff box tenderness = scaphoid fracture even with NORMAL X-rays. Immobilize."],
    ["9", "Dorsal hand swelling ≠ dorsal infection. Even palmar space infections cause dorsal edema."],
    ["10", "Posterior shoulder dislocation = electric shock / seizure → 'light bulb sign' on AP X-ray."],
    ["11", "Triangular interval is the MOST DISTAL of the 3 posterior shoulder spaces → carries radial nerve."],
    ["12", "Thenar + middle palmar spaces are separated by a septum attached to the 3rd METACARPAL."],
  ];

  const mid = Math.ceil(points.length / 2);
  points.forEach((p, i) => {
    const col = i < mid ? 0 : 1;
    const row = i < mid ? i : i - mid;
    const x = 0.2 + col * 4.95;
    const y = 0.88 + row * 0.57;

    s.addShape(pres.shapes.OVAL, {
      x, y: y + 0.05, w: 0.38, h: 0.38,
      fill: { color: C.gold }, line: { width: 0 }
    });
    s.addText(p[0], {
      x, y: y + 0.05, w: 0.38, h: 0.38,
      fontSize: 10, bold: true, color: C.navy, align: "center", valign: "middle"
    });
    s.addText(p[1], {
      x: x + 0.44, y, w: 4.35, h: 0.55,
      fontSize: 9, color: C.lgrey, fontFace: "Calibri", valign: "middle", wrap: true
    });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 18 — MNEMONICS REFERENCE
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  contentSlide(s, "Mnemonics Quick Reference — Upper Limb", C.cobalt);

  const mnems = [
    { mnem: "SITS", full: "Rotator Cuff Muscles", detail: "Supraspinatus · Infraspinatus · Teres minor · Subscapularis", color: C.cobalt },
    { mnem: "TAN", full: "Cubital Fossa Contents (Lat→Med)", detail: "Tendon of biceps · Artery (brachial) · Nerve (median)", color: C.teal },
    { mnem: "QTT", full: "3 Posterior Shoulder Spaces", detail: "Quadrangular (axillary n.) · Triangular (circumflex scapular) · Triangular Interval (radial n.)", color: C.gold },
    { mnem: "1-2-3", full: "Axillary Artery Branches", detail: "Part 1: 1 branch · Part 2: 2 branches · Part 3: 3 branches", color: C.cobalt },
    { mnem: "BALMS", full: "Contents of Axilla", detail: "Brachial plexus · Axillary a/v · Lymph nodes · Muscles · Subscapular vessels", color: C.teal },
    { mnem: "P-H", full: "Ulnar Tunnel (Guyon's Canal)", detail: "Pisiform (medial) · Hook of Hamate (lateral) = walls of the tunnel", color: C.cobalt },
    { mnem: "S-T", full: "Anatomical Snuff Box Floor", detail: "Scaphoid (proximal) · Trapezium (distal)", color: C.gold },
    { mnem: "DAB / PAD", full: "Interossei Actions", detail: "Dorsal interossei ABduct · Palmar interossei ADduct", color: C.teal },
    { mnem: "CRITOE", full: "Elbow Ossification Centers (children)", detail: "Capitellum 1 · Radial head 3 · Internal epicondyle 5 · Trochlea 7 · Olecranon 9 · External epicondyle 11", color: C.cobalt },
    { mnem: "FOOSH", full: "Mechanism of Common UL Fractures", detail: "Fall On OutStretched Hand → scaphoid, radial head, supracondylar, Colles' fracture", color: C.red },
  ];

  const cols = 2;
  const rows = Math.ceil(mnems.length / cols);
  mnems.forEach((m, i) => {
    const col = i % cols;
    const row = Math.floor(i / cols);
    const x = 0.2 + col * 4.95;
    const y = 0.92 + row * 0.88;

    s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x, y, w: 4.7, h: 0.8,
      fill: { color: C.white }, rectRadius: 0.07,
      shadow: { type: "outer", color: "000000", blur: 4, offset: 1, angle: 135, opacity: 0.1 }
    });
    s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x, y, w: 1.1, h: 0.8,
      fill: { color: m.color, transparency: 10 }, rectRadius: 0.07, line: { width: 0 }
    });
    s.addText(m.mnem, {
      x, y, w: 1.1, h: 0.8,
      fontSize: 14, bold: true, color: C.white, fontFace: "Calibri",
      align: "center", valign: "middle"
    });
    s.addText(m.full, {
      x: x + 1.15, y: y + 0.04, w: 3.5, h: 0.28,
      fontSize: 9.5, bold: true, color: m.color, fontFace: "Calibri", valign: "middle"
    });
    s.addText(m.detail, {
      x: x + 1.15, y: y + 0.35, w: 3.5, h: 0.42,
      fontSize: 8.5, color: C.midgrey, fontFace: "Calibri", valign: "middle", wrap: true
    });
  });
}

// ═══════════════════════════════════════════════════════════════════════════
//  SLIDE 19 — THANK YOU / END
// ═══════════════════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addSlideBg(s, C.navy);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: C.gold }, line: { width: 0 }
  });
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 4.5, w: 10, h: 1.125, fill: { color: C.cobalt }, line: { width: 0 }
  });
  s.addText("Upper Limb Anatomy", {
    x: 1, y: 0.8, w: 8, h: 0.7, fontSize: 18, bold: true, charSpacing: 3,
    color: C.gold, fontFace: "Calibri", align: "center"
  });
  s.addText("Joints · Landmarks · Clinical Applications", {
    x: 1, y: 1.55, w: 8, h: 0.55, fontSize: 22, bold: true,
    color: C.white, fontFace: "Calibri", align: "center"
  });
  s.addShape(pres.shapes.RECTANGLE, {
    x: 3.5, y: 2.28, w: 3, h: 0.04, fill: { color: C.gold }, line: { width: 0 }
  });

  const recap = [
    "8 Joint groups: GH · AC · SC · Elbow · Wrist · CMC · MCP · IP",
    "3 Posterior spaces: Quadrangular · Triangular · Triangular Interval",
    "Cubital fossa: TAN (Tendon · Artery · Nerve)",
    "Ulnar tunnel: Pisiform–Hamate frame",
    "Snuff box tenderness = scaphoid fracture (even with normal X-ray)",
    "Dorsal swelling ≠ dorsal infection — always examine the palm",
  ];
  recap.forEach((r, i) => {
    s.addText("✓  " + r, {
      x: 1.5, y: 2.5 + i * 0.31, w: 7, h: 0.3,
      fontSize: 11, color: C.lgrey, fontFace: "Calibri", valign: "middle"
    });
  });

  s.addText("MS1 Anatomy  •  Upper Limb Module  •  Good luck!", {
    x: 0, y: 4.55, w: 10, h: 0.55,
    fontSize: 13, bold: true, italic: true, color: C.white,
    fontFace: "Calibri", align: "center", valign: "middle"
  });
}

// ─── WRITE ──────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/upper-limb-ppt/Upper_Limb_Joints_and_Landmarks.pptx" })
  .then(() => console.log("DONE"))
  .catch(e => { console.error(e); process.exit(1); });
Running Command

cd /home/daytona/workspace/upper-limb-ppt && node generate.js 2>&1

Running Command

ls -lh /home/daytona/workspace/upper-limb-ppt/

Your presentation is ready - 461 KB, 19 slides:

Upper Limb Joints and Landmarks

Presentation · PPTX


What's inside (19 slides):

SlidesContent
1Title slide - Navy + cobalt + gold palette with topic outline
2Section break - Joints of the Upper Limb
3Shoulder (GH) Joint - ligaments, SITS rotator cuff, distinction points
4Elbow Joint - 3 articulations, shared synovial cavity, fat pads, X-ray signs
5Wrist & Hand Joints - full table (all 6 joint types, movements, bones)
6Section break - Landmarks
7Axilla - all 6 boundaries, BALMS contents, axillary artery 1-2-3 rule
83 Posterior Shoulder Spaces - QTT side-by-side with boundaries, contents, clinicals
9Cubital Fossa - TAN diagram, bicipital aponeurosis, clinical layering
10Ulnar Tunnel + Anatomical Snuff Box - boundaries, contents, clinicals side by side
11Hand Compartments & Spaces - all 4 compartments + palmar spaces + Parona's + horseshoe abscess
12Section break - Clinical Cases
13Case 1 - Shoulder dislocation + axillary nerve injury
14Case 2 - Supracondylar fracture + Volkmann's + CRITOE mnemonic
15Case 3 - Scaphoid fracture with normal X-ray + AVN
16Case 4 - Cyclist's palsy (Guyon's canal) + palmar space infection
1712 Distinction-scoring points summary
18Mnemonics reference - all 10 mnemonics (SITS, TAN, QTT, CRITOE, etc.)
19Closing recap slide
This is a shared conversation. Sign in to Orris to start your own chat.