// Bold, gym-poster SVG glyphs for each exercise category
// Designed to be visual at a glance — no text needed

const ICON_SIZE = 100;

// Helper components
const Plate = ({ x, y, w, h, fill }) => (
  <rect x={x} y={y} width={w} height={h} fill={fill} stroke="currentColor" strokeWidth="1" rx="1.5" />
);

// Each glyph is a function returning SVG content sized for 100x100 viewBox
const GLYPHS = {
  // ===== BARBELL =====
  bb_squat: () => (
    <g>
      {/* Squatting figure with bar overhead */}
      <rect x="20" y="28" width="60" height="3" fill="currentColor" />
      <Plate x="14" y="22" w="6" h="15" fill="currentColor" />
      <Plate x="80" y="22" w="6" h="15" fill="currentColor" />
      <circle cx="50" cy="42" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="48" x2="50" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="55" x2="42" y2="65" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" />
      <line x1="50" y1="55" x2="58" y2="65" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" />
      <line x1="50" y1="62" x2="38" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="62" x2="62" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="38" y1="78" x2="34" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="62" y1="78" x2="66" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bb_front_squat: () => (
    <g>
      <rect x="20" y="38" width="60" height="3" fill="currentColor" />
      <Plate x="14" y="32" w="6" h="15" fill="currentColor" />
      <Plate x="80" y="32" w="6" h="15" fill="currentColor" />
      <circle cx="50" cy="28" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="34" x2="50" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="40" x2="40" y2="40" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" />
      <line x1="50" y1="40" x2="60" y2="40" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" />
      <line x1="50" y1="62" x2="38" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="62" x2="62" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="38" y1="78" x2="34" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="62" y1="78" x2="66" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bb_deadlift: () => (
    <g>
      {/* Person bent over, bar on ground */}
      <circle cx="35" cy="30" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="35" y1="36" x2="60" y2="48" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="60" y1="48" x2="68" y2="48" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="44" x2="50" y2="80" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="80" x2="44" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="80" x2="56" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="68" y1="48" x2="68" y2="82" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Bar on ground */}
      <rect x="30" y="84" width="56" height="3" fill="currentColor" />
      <Plate x="24" y="76" w="6" h="20" fill="currentColor" />
      <Plate x="86" y="76" w="6" h="20" fill="currentColor" />
    </g>
  ),
  bb_rdl: () => (
    <g>
      <circle cx="32" cy="34" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="32" y1="40" x2="58" y2="55" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="50" y1="50" x2="48" y2="80" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="48" y1="80" x2="40" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="48" y1="80" x2="56" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="55" x2="58" y2="68" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <rect x="30" y="68" width="56" height="3" fill="currentColor" />
      <Plate x="24" y="60" w="6" h="18" fill="currentColor" />
      <Plate x="86" y="60" w="6" h="18" fill="currentColor" />
    </g>
  ),
  bb_bench: () => (
    <g>
      {/* Bench horizontal, person lying, bar above */}
      <rect x="14" y="62" width="72" height="6" fill="currentColor" opacity="0.4" />
      <rect x="14" y="68" width="4" height="22" fill="currentColor" opacity="0.4" />
      <rect x="82" y="68" width="4" height="22" fill="currentColor" opacity="0.4" />
      <circle cx="22" cy="56" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="27" y1="58" x2="68" y2="58" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="40" y1="58" x2="48" y2="38" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="55" y1="58" x2="48" y2="38" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Bar */}
      <rect x="22" y="32" width="60" height="3" fill="currentColor" />
      <Plate x="16" y="24" w="6" h="18" fill="currentColor" />
      <Plate x="82" y="24" w="6" h="18" fill="currentColor" />
    </g>
  ),
  bb_ohp: () => (
    <g>
      {/* Bar overhead, arms locked out */}
      <rect x="20" y="14" width="60" height="3" fill="currentColor" />
      <Plate x="14" y="6" w="6" h="18" fill="currentColor" />
      <Plate x="80" y="6" w="6" h="18" fill="currentColor" />
      <line x1="42" y1="17" x2="44" y2="42" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="17" x2="56" y2="42" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <circle cx="50" cy="48" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="54" x2="50" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="76" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="76" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bb_row: () => (
    <g>
      {/* Bent-over row */}
      <circle cx="30" cy="36" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="36" y1="38" x2="68" y2="48" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="50" y1="44" x2="50" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="78" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="78" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Arm pulling bar up to torso */}
      <line x1="68" y1="48" x2="64" y2="58" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <rect x="30" y="58" width="56" height="3" fill="currentColor" />
      <Plate x="24" y="50" w="6" h="18" fill="currentColor" />
      <Plate x="86" y="50" w="6" h="18" fill="currentColor" />
    </g>
  ),
  bb_curl: () => (
    <g>
      <circle cx="50" cy="22" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="28" x2="50" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Curled arms */}
      <line x1="50" y1="40" x2="40" y2="55" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="40" y1="55" x2="44" y2="42" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="40" x2="60" y2="55" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="60" y1="55" x2="56" y2="42" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <rect x="30" y="40" width="40" height="3" fill="currentColor" />
      <Plate x="24" y="32" w="6" h="18" fill="currentColor" />
      <Plate x="70" y="32" w="6" h="18" fill="currentColor" />
      <line x1="50" y1="78" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="78" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bb_lunge: () => (
    <g>
      <rect x="20" y="22" width="60" height="3" fill="currentColor" />
      <Plate x="14" y="14" w="6" h="18" fill="currentColor" />
      <Plate x="80" y="14" w="6" h="18" fill="currentColor" />
      <circle cx="50" cy="36" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="42" x2="50" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Front leg */}
      <line x1="50" y1="62" x2="74" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="74" y1="76" x2="74" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Back leg bent */}
      <line x1="50" y1="62" x2="32" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="32" y1="78" x2="22" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bb_hipthrust: () => (
    <g>
      {/* Bench */}
      <rect x="10" y="45" width="42" height="6" fill="currentColor" opacity="0.4" />
      <rect x="10" y="51" width="4" height="20" fill="currentColor" opacity="0.4" />
      {/* Body lying with hips up */}
      <circle cx="20" cy="42" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="25" y1="44" x2="58" y2="44" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="58" y1="44" x2="72" y2="68" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="72" y1="68" x2="72" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Bar over hips */}
      <rect x="34" y="32" width="48" height="3" fill="currentColor" />
      <Plate x="28" y="22" w="6" h="22" fill="currentColor" />
      <Plate x="82" y="22" w="6" h="22" fill="currentColor" />
    </g>
  ),

  // ===== DUMBBELL =====
  db_press: () => (
    <g>
      <rect x="14" y="62" width="72" height="6" fill="currentColor" opacity="0.4" />
      <rect x="14" y="68" width="4" height="22" fill="currentColor" opacity="0.4" />
      <rect x="82" y="68" width="4" height="22" fill="currentColor" opacity="0.4" />
      <circle cx="22" cy="56" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="27" y1="58" x2="68" y2="58" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="42" y1="58" x2="38" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="58" x2="62" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Two dumbbells */}
      <DumbIcon x="28" y="22" />
      <DumbIcon x="58" y="22" />
    </g>
  ),
  db_ohp: () => (
    <g>
      <circle cx="50" cy="42" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="48" x2="50" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="50" x2="32" y2="22" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="50" x2="68" y2="22" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="22" y="14" />
      <DumbIcon x="58" y="14" />
      <line x1="50" y1="78" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="78" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  db_row: () => (
    <g>
      {/* Bench-supported row, one knee up */}
      <rect x="10" y="60" width="50" height="5" fill="currentColor" opacity="0.4" />
      <rect x="10" y="65" width="3" height="22" fill="currentColor" opacity="0.4" />
      <circle cx="22" cy="44" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="27" y1="46" x2="60" y2="56" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      {/* Arm pulling DB up */}
      <line x1="50" y1="54" x2="74" y2="50" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="68" y="42" />
      {/* Support knee */}
      <line x1="35" y1="60" x2="38" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="55" y1="60" x2="52" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  db_curl: () => (
    <g>
      <circle cx="50" cy="22" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="28" x2="50" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="40" x2="34" y2="50" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="34" y1="50" x2="36" y2="34" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="40" x2="66" y2="50" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="66" y1="50" x2="64" y2="34" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="28" y="26" />
      <DumbIcon x="58" y="26" />
      <line x1="50" y1="78" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="78" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  db_hammer: () => (
    <g>
      <circle cx="50" cy="22" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="28" x2="50" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="40" x2="38" y2="40" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="38" y1="40" x2="38" y2="28" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="40" x2="62" y2="40" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="62" y1="40" x2="62" y2="28" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="32" y="20" rotated />
      <DumbIcon x="56" y="20" rotated />
      <line x1="50" y1="78" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="78" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  db_lateral: () => (
    <g>
      <circle cx="50" cy="32" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="38" x2="50" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Arms out wide */}
      <line x1="50" y1="44" x2="20" y2="44" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="44" x2="80" y2="44" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="6" y="38" />
      <DumbIcon x="74" y="38" />
      {/* Arrows showing motion */}
      <path d="M 16 32 L 16 50" stroke="currentColor" strokeWidth="1.5" fill="none" markerEnd="url(#arr)" />
      <path d="M 84 32 L 84 50" stroke="currentColor" strokeWidth="1.5" fill="none" markerEnd="url(#arr)" />
      <line x1="50" y1="78" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="78" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  db_rear_fly: () => (
    <g>
      {/* Bent-over fly */}
      <circle cx="22" cy="38" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="27" y1="40" x2="68" y2="44" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="40" y1="42" x2="32" y2="20" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="40" y1="42" x2="38" y2="68" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="55" y1="44" x2="62" y2="20" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="55" y1="44" x2="60" y2="68" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="22" y="14" />
      <DumbIcon x="58" y="14" />
      <line x1="68" y1="44" x2="80" y2="60" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="80" y1="60" x2="80" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  db_skullcrush: () => (
    <g>
      <rect x="14" y="62" width="72" height="6" fill="currentColor" opacity="0.4" />
      <rect x="14" y="68" width="4" height="22" fill="currentColor" opacity="0.4" />
      <rect x="82" y="68" width="4" height="22" fill="currentColor" opacity="0.4" />
      <circle cx="22" cy="56" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="27" y1="58" x2="68" y2="58" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="40" y1="58" x2="40" y2="38" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="40" y1="38" x2="30" y2="46" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="55" y1="58" x2="55" y2="38" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="55" y1="38" x2="65" y2="46" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="22" y="40" />
      <DumbIcon x="58" y="40" />
    </g>
  ),
  db_goblet: () => (
    <g>
      <circle cx="50" cy="22" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      {/* Dumbbell at chest */}
      <DumbIcon x="40" y="30" rotated />
      <line x1="50" y1="44" x2="50" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="62" x2="38" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="62" x2="62" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="38" y1="78" x2="34" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="62" y1="78" x2="66" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  db_lunge: () => (
    <g>
      <circle cx="50" cy="20" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="26" x2="50" y2="58" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="34" x2="34" y2="48" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="34" x2="66" y2="48" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="22" y="42" />
      <DumbIcon x="62" y="42" />
      <line x1="50" y1="58" x2="74" y2="74" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="74" y1="74" x2="74" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="58" x2="32" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="32" y1="76" x2="22" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  db_rdl: () => (
    <g>
      <circle cx="32" cy="34" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="32" y1="40" x2="58" y2="55" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="50" y1="50" x2="48" y2="80" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="48" y1="80" x2="40" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="48" y1="80" x2="56" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="55" x2="56" y2="72" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="55" x2="68" y2="72" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="46" y="68" />
      <DumbIcon x="62" y="68" />
    </g>
  ),
  db_shrug: () => (
    <g>
      <circle cx="50" cy="20" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="26" x2="50" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Shrugged shoulders up */}
      <line x1="50" y1="32" x2="32" y2="28" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="32" y1="28" x2="32" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="32" x2="68" y2="28" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="68" y1="28" x2="68" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="20" y="58" />
      <DumbIcon x="56" y="58" />
      <line x1="50" y1="78" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="78" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  db_calf: () => (
    <g>
      <circle cx="50" cy="22" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="28" x2="50" y2="56" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="40" x2="34" y2="48" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="40" x2="66" y2="48" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <DumbIcon x="22" y="42" />
      <DumbIcon x="62" y="42" />
      <line x1="50" y1="56" x2="44" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="56" x2="56" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Heels lifted */}
      <line x1="44" y1="78" x2="44" y2="86" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="56" y1="78" x2="56" y2="86" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="40" y1="86" x2="50" y2="86" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="86" x2="60" y2="86" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="36" y1="92" x2="64" y2="92" stroke="currentColor" strokeWidth="2" strokeDasharray="2 2" />
    </g>
  ),

  // ===== PULL-UP STAND =====
  pu_pullup: () => (
    <g>
      <rect x="20" y="14" width="60" height="3" fill="currentColor" />
      <line x1="22" y1="14" x2="22" y2="6" stroke="currentColor" strokeWidth="3" />
      <line x1="78" y1="14" x2="78" y2="6" stroke="currentColor" strokeWidth="3" />
      <line x1="42" y1="17" x2="42" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="17" x2="58" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <circle cx="50" cy="40" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="46" x2="50" y2="74" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="74" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="74" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  pu_chinup: () => (
    <g>
      <rect x="20" y="14" width="60" height="3" fill="currentColor" />
      <line x1="22" y1="14" x2="22" y2="6" stroke="currentColor" strokeWidth="3" />
      <line x1="78" y1="14" x2="78" y2="6" stroke="currentColor" strokeWidth="3" />
      <line x1="42" y1="17" x2="44" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="17" x2="56" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <circle cx="50" cy="32" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="38" x2="50" y2="70" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="70" x2="42" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="70" x2="58" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  pu_dip: () => (
    <g>
      <line x1="14" y1="50" x2="36" y2="50" stroke="currentColor" strokeWidth="3" />
      <line x1="64" y1="50" x2="86" y2="50" stroke="currentColor" strokeWidth="3" />
      <line x1="14" y1="50" x2="14" y2="92" stroke="currentColor" strokeWidth="3" />
      <line x1="86" y1="50" x2="86" y2="92" stroke="currentColor" strokeWidth="3" />
      <circle cx="50" cy="34" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="36" y1="50" x2="44" y2="38" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="64" y1="50" x2="56" y2="38" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="40" x2="50" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="62" x2="42" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="62" x2="58" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  pu_legraise: () => (
    <g>
      <rect x="20" y="14" width="60" height="3" fill="currentColor" />
      <line x1="22" y1="14" x2="22" y2="6" stroke="currentColor" strokeWidth="3" />
      <line x1="78" y1="14" x2="78" y2="6" stroke="currentColor" strokeWidth="3" />
      <line x1="42" y1="17" x2="42" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="17" x2="58" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <circle cx="50" cy="40" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="46" x2="50" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      {/* Legs raised horizontal */}
      <line x1="50" y1="62" x2="78" y2="58" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="62" x2="76" y2="68" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  pu_kneeraise: () => (
    <g>
      <rect x="20" y="14" width="60" height="3" fill="currentColor" />
      <line x1="22" y1="14" x2="22" y2="6" stroke="currentColor" strokeWidth="3" />
      <line x1="78" y1="14" x2="78" y2="6" stroke="currentColor" strokeWidth="3" />
      <line x1="42" y1="17" x2="42" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="17" x2="58" y2="36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <circle cx="50" cy="40" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="46" x2="50" y2="64" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="64" x2="68" y2="60" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="68" y1="60" x2="60" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="64" x2="60" y2="58" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="60" y1="58" x2="54" y2="74" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  pu_lsit: () => (
    <g>
      <rect x="14" y="50" width="20" height="3" fill="currentColor" />
      <rect x="66" y="50" width="20" height="3" fill="currentColor" />
      <circle cx="50" cy="32" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="38" y1="50" x2="46" y2="38" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="62" y1="50" x2="54" y2="38" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="38" x2="50" y2="58" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="58" x2="86" y2="58" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="58" x2="80" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),

  // ===== BODYWEIGHT =====
  bw_pushup: () => (
    <g>
      <line x1="10" y1="78" x2="90" y2="78" stroke="currentColor" strokeWidth="2" strokeDasharray="3 3" opacity="0.5" />
      <circle cx="22" cy="48" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="27" y1="50" x2="80" y2="56" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="32" y1="51" x2="32" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="60" y1="55" x2="60" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="80" y1="56" x2="86" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bw_diamond: () => (
    <g>
      <line x1="10" y1="78" x2="90" y2="78" stroke="currentColor" strokeWidth="2" strokeDasharray="3 3" opacity="0.5" />
      <circle cx="22" cy="48" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="27" y1="50" x2="80" y2="56" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="44" y1="52" x2="48" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="52" y1="52" x2="48" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <path d="M 44 76 L 48 70 L 52 76 Z" fill="currentColor" />
      <line x1="80" y1="56" x2="86" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bw_plank: () => (
    <g>
      <line x1="10" y1="78" x2="90" y2="78" stroke="currentColor" strokeWidth="2" strokeDasharray="3 3" opacity="0.5" />
      <circle cx="22" cy="48" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="27" y1="50" x2="80" y2="58" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="22" y1="53" x2="22" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="22" y1="76" x2="34" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="80" y1="58" x2="86" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bw_squat: () => (
    <g>
      <circle cx="50" cy="26" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="32" x2="50" y2="56" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="38" x2="32" y2="34" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="38" x2="68" y2="34" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="56" x2="34" y2="74" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="56" x2="66" y2="74" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="34" y1="74" x2="30" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="66" y1="74" x2="70" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bw_lunge: () => (
    <g>
      <circle cx="50" cy="22" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="28" x2="50" y2="58" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="36" x2="36" y2="42" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="36" x2="64" y2="42" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="58" x2="74" y2="74" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="74" y1="74" x2="74" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="58" x2="32" y2="76" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="32" y1="76" x2="22" y2="92" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bw_glutebridge: () => (
    <g>
      <line x1="10" y1="92" x2="90" y2="92" stroke="currentColor" strokeWidth="2" strokeDasharray="3 3" opacity="0.5" />
      <circle cx="18" cy="76" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="23" y1="76" x2="44" y2="68" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="44" y1="68" x2="56" y2="44" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="56" y1="44" x2="72" y2="68" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="72" y1="68" x2="72" y2="88" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bw_calf: () => (
    <g>
      <line x1="10" y1="86" x2="90" y2="86" stroke="currentColor" strokeWidth="2" strokeDasharray="3 3" opacity="0.5" />
      <circle cx="50" cy="22" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="50" y1="28" x2="50" y2="58" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="36" x2="40" y2="46" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="36" x2="60" y2="46" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="58" x2="44" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="50" y1="58" x2="56" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="44" y1="78" x2="38" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="56" y1="78" x2="62" y2="78" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <path d="M 50 22 L 50 8" stroke="currentColor" strokeWidth="1.5" strokeDasharray="2 2" />
    </g>
  ),
  bw_situp: () => (
    <g>
      <line x1="10" y1="78" x2="90" y2="78" stroke="currentColor" strokeWidth="2" strokeDasharray="3 3" opacity="0.5" />
      <circle cx="32" cy="34" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="38" y1="38" x2="58" y2="60" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="58" y1="60" x2="50" y2="74" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="60" x2="80" y2="74" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="32" y1="40" x2="42" y2="50" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
  bw_russian: () => (
    <g>
      <line x1="10" y1="86" x2="90" y2="86" stroke="currentColor" strokeWidth="2" strokeDasharray="3 3" opacity="0.5" />
      <circle cx="34" cy="32" r="6" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="38" y1="36" x2="60" y2="60" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="60" y1="60" x2="50" y2="74" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="60" y1="60" x2="82" y2="60" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="42" y1="40" x2="58" y2="34" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="58" y1="34" x2="50" y2="46" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <path d="M 60 24 L 70 30" stroke="currentColor" strokeWidth="1.5" markerEnd="url(#arr)" />
    </g>
  ),
  bw_superman: () => (
    <g>
      <line x1="10" y1="78" x2="90" y2="78" stroke="currentColor" strokeWidth="2" strokeDasharray="3 3" opacity="0.5" />
      <circle cx="22" cy="60" r="5" fill="none" stroke="currentColor" strokeWidth="2.5" />
      <line x1="27" y1="60" x2="78" y2="60" stroke="currentColor" strokeWidth="3.5" strokeLinecap="round" />
      <line x1="22" y1="58" x2="14" y2="48" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
      <line x1="78" y1="60" x2="90" y2="48" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    </g>
  ),
};

// Subcomponent for dumbbell glyph (small pair of weights)
const DumbIcon = ({ x, y, rotated }) => {
  if (rotated) {
    return (
      <g transform={`translate(${x}, ${y})`}>
        <rect x="3" y="0" width="14" height="3" fill="currentColor" />
        <rect x="0" y="-3" width="3" height="9" fill="currentColor" />
        <rect x="17" y="-3" width="3" height="9" fill="currentColor" />
      </g>
    );
  }
  return (
    <g transform={`translate(${x}, ${y})`}>
      <rect x="0" y="6" width="20" height="3" fill="currentColor" />
      <rect x="0" y="2" width="3" height="11" fill="currentColor" />
      <rect x="17" y="2" width="3" height="11" fill="currentColor" />
    </g>
  );
};

// Fallback for any unmapped exercise
const fallbackGlyph = () => (
  <g>
    <circle cx="50" cy="50" r="22" fill="none" stroke="currentColor" strokeWidth="3" />
    <line x1="50" y1="38" x2="50" y2="62" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
    <line x1="38" y1="50" x2="62" y2="50" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
  </g>
);

const ExerciseGlyph = ({ id, color }) => {
  const G = GLYPHS[id] || fallbackGlyph;
  return (
    <svg viewBox="0 0 100 100" className="ex-glyph" style={{ color: color || "currentColor" }}>
      <defs>
        <marker id="arr" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="5" markerHeight="5" orient="auto">
          <path d="M 0 0 L 10 5 L 0 10 Z" fill="currentColor" />
        </marker>
      </defs>
      {G()}
    </svg>
  );
};

window.ExerciseGlyph = ExerciseGlyph;
