<!-- SAGA-STAGING · part 11 -->
STER';
  g.userData.legL = legL; g.userData.legR = legR;
  g.userData.armL = armL; g.userData.armR = armR;
  return g;
}


/* ============================================================
   6. THE COURIER — Lean messenger, built for speed (MACRO STAGE)
   Forward-leaning runner's build. Long limbs, narrow torso.
   Height: ~2.0 units (taller, leaner than Forgemaster)
   Craft language: Directional engine-turning, NOT radial guilloche
   ============================================================ */
function buildCourier() {
  initMaterials();
  var g = new THREE.Group();

  // === MACRO: Lean, aerodynamic masses ===

  // Feet — light, pointed (running shoes, not boots)
  var footL = M(new THREE.BoxGeometry(0.22, 0.15, 0.42), MAT.darkMetal);
  footL.position.set(-0.18, 0.08, 0.08); g.add(footL);
  var footR = footL.clone(); footR.position.x = 0.18; g.add(footR);

  // Long, lean legs — sprinter's build
  var legL = new THREE.Group(); legL.position.set(-0.18, 0.15, 0);
  var shinL = M(new THREE.CylinderGeometry(0.09, 0.11, 0.75, 8), MAT.grayCloth);
  shinL.position.y = 0.38; legL.add(shinL);
  var thighL2 = M(new THREE.CylinderGeometry(0.12, 0.10, 0.65, 8), MAT.blackCloth);
  thighL2.position.y = 1.05; legL.add(thighL2);
  g.add(legL);
  var legR = new THREE.Group(); legR.position.set(0.18, 0.15, 0);
  var shinR = shinL.clone(); shinR.position.y = 0.38; legR.add(shinR);
  var thighR2 = thighL2.clone(); thighR2.position.y = 1.05; legR.add(thighR2);
  g.add(legR);

  // Narrow hips
  var pelvis = M(new THREE.BoxGeometry(0.42, 0.3, 0.32), MAT.darkMetal);
  pelvis.position.set(0, 1.55, 0); pelvis.rotation.x = 0.08; g.add(pelvis);

  // Lean torso — engine-turned directional texture (Courier MICRO)
  var engTurned = generateEngineTurned({size: 1024, seed: 7});
  var torsoMat = new THREE.MeshStandardMaterial({
    map: engTurned.map,
    bumpMap: engTurned.bumpMap,
    bumpScale: 0.015,
    metalness: 0.6,
    roughness: 0.45
  });
  var torso = new THREE.Mesh(new THREE.CylinderGeometry(0.26, 0.21, 0.75, 10), torsoMat);
  torso.position.set(0, 2.05, 0.08); torso.rotation.x = 0.22; g.add(torso);
  // Speed stripe (functional marking, even at MACRO)
  var stripe = M(new THREE.BoxGeometry(0.08, 0.7, 0.02), MAT.copper);
  stripe.position.set(0, 2.05, 0.30); stripe.rotation.x = 0.22; g.add(stripe);

  // === MESO: Directional courier gear ===

  // Chest harness — crossed straps (functional, holds cargo)
  var strapH1 = M(new THREE.BoxGeometry(0.06, 0.75, 0.03), MAT.blackCloth);
  strapH1.position.set(-0.12, 2.05, 0.28); strapH1.rotation.z = 0.35; strapH1.rotation.x = 0.22; g.add(strapH1);
  var strapH2 = M(new THREE.BoxGeometry(0.06, 0.75, 0.03), MAT.blackCloth);
  strapH2.position.set(0.12, 2.05, 0.28); strapH2.rotation.z = -0.35; strapH2.rotation.x = 0.22; g.add(strapH2);

  // Shoulder streamlining — swept fins (aerodynamic, NOT armor)
  var finL = M(new THREE.BoxGeometry(0.04, 0.22, 0.18), MAT.darkMetal);
  finL.position.set(-0.33, 2.45, 0.05); finL.rotation.z = 0.3; finL.rotation.x = 0.2; g.add(finL);
  var finR = finL.clone(); finR.position.x = 0.33; finR.rotation.z = -0.3; g.add(finR);

  // Cargo pod on back (courier function — the package)
  var pod = M(new THREE.BoxGeometry(0.34, 0.45, 0.18), MAT.gunmetal);
  pod.position.set(0, 2.05, -0.28); pod.rotation.x = 0.12; g.add(pod);
  // Pod stripe (identification marking)
  var podStripe = M(new THREE.BoxGeometry(0.36, 0.06, 0.02), MAT.copper);
  podStripe.position.set(0, 2.15, -0.38); podStripe.rotation.x = 0.12; g.add(podStripe);

  // Leg speed lines — thin grooves on FRONT of shin (direction of motion)
  for(var li=0; li<3; li++){
    var grooveL = M(new THREE.BoxGeometry(0.015, 0.55, 0.015), MAT.copper);
    grooveL.position.set((li-1)*0.05, 0.38, 0.11);
    legL.add(grooveL);
    var grooveR = M(new THREE.BoxGeometry(0.015, 0.55, 0.015), MAT.copper);
    grooveR.position.set((li-1)*0.05, 0.38, 0.11);
    legR.add(grooveR);
  }

  // Forward-leaning shoulders — narrow, aerodynamic
  var shoulderBar = M(new THREE.BoxGeometry(0.62, 0.18, 0.28), MAT.darkMetal);
  shoulderBar.position.set(0, 2.42, 0.15); shoulderBar.rotation.x = 0.28; g.add(shoulderBar);

  // Long arms — reaching forward (runner's posture)
  var armL = new THREE.Group(); armL.position.set(-0.35, 2.38, 0.08);
  armL.rotation.x = 0.45; armL.rotation.z = 0.08;  // Forward swing
  var upperL = M(new THREE.CylinderGeometry(0.08, 0.09, 0.5, 8), MAT.gunmetal);
  upperL.position.y = -0.25; armL.add(upperL);
  var foreL = M(new THREE.CylinderGeometry(0.07, 0.08, 0.45, 8), MAT.blackCloth);
  foreL.position.y = -0.65; armL.add(foreL);
  var handL = M(new THREE.BoxGeometry(0.12, 0.16, 0.08), MAT.skinTone);
  handL.position.y = -0.95; armL.add(handL);
  g.add(armL);

  var armR = new THREE.Group(); armR.position.set(0.35, 2.38, 0.08);
  armR.rotation.x = -0.25; armR.rotation.z = -0.08;  // Back swing (running)
  var upperR = upperL.clone(); upperR.position.y = -0.25; armR