<!-- SAGA-STAGING · part 7 -->
with red buckle
  var belt = M(new THREE.TorusGeometry(0.3, 0.05, 8, 16), MAT.gunmetal);
  belt.rotation.x = Math.PI/2; belt.position.y = 1.42; g.add(belt);
  var buckle = M(new THREE.BoxGeometry(0.12, 0.1, 0.04), MAT.redGlow);
  buckle.position.set(0, 1.42, 0.3); g.add(buckle);

  // Broad chest — wide shoulders
  var chest = M(new THREE.BoxGeometry(0.9, 0.7, 0.5), MAT.darkMetal);
  chest.position.y = 1.85; g.add(chest);
  // Chest plate ridges — horizontal armor bands
  for (var ri = 0; ri < 3; ri++) {
    var ridge = M(new THREE.BoxGeometry(0.92, 0.06, 0.52), MAT.gunmetal);
    ridge.position.set(0, 1.65 + ri * 0.2, 0); g.add(ridge);
  }
  // Central chest emblem — red diamond
  var emblem = M(new THREE.OctahedronGeometry(0.09), MAT.redGlow);
  emblem.position.set(0, 1.9, 0.27); emblem.scale.z = 0.5; g.add(emblem);
  // Shoulder pauldrons — large, angular
  var pauldronL = M(new THREE.SphereGeometry(0.28, 10, 8, 0, Math.PI*2, 0, Math.PI/2), MAT.gunmetal);
  pauldronL.position.set(-0.55, 2.1, 0); g.add(pauldronL);
  var pauldronR = pauldronL.clone(); pauldronR.position.x = 0.55; g.add(pauldronR);
  // Red eye-slits on pauldrons
  var eyeL = M(new THREE.BoxGeometry(0.06, 0.04, 0.02), MAT.redGlow);
  eyeL.position.set(-0.55, 2.15, 0.24); g.add(eyeL);
  var eyeR = eyeL.clone(); eyeR.position.x = 0.55; g.add(eyeR);

  // Arms
  var armL = new THREE.Group(); armL.position.set(-0.62, 2.05, 0); armL.rotation.z = 0.12;
  var upperL = M(new THREE.CylinderGeometry(0.11, 0.13, 0.55, 8), MAT.darkMetal);
  upperL.position.y = -0.28; armL.add(upperL);
  var fistL = M(new THREE.BoxGeometry(0.18, 0.22, 0.18), MAT.gunmetal);
  fistL.position.y = -0.62; armL.add(fistL);
  g.add(armL);
  var armR = new THREE.Group(); armR.position.set(0.62, 2.05, 0); armR.rotation.z = -0.12;
  var upperR = upperL.clone(); upperR.position.y = -0.28; armR.add(upperR);
  var fistR = fistL.clone(); fistR.position.y = -0.62; armR.add(fistR);
  g.add(armR);

  // Neck + helmet
  var neck = M(new THREE.CylinderGeometry(0.12, 0.14, 0.15, 8), MAT.blackCloth);
  neck.position.y = 2.28; g.add(neck);
  var helm = M(new THREE.SphereGeometry(0.22, 12, 10), MAT.gunmetal);
  helm.position.y = 2.5; helm.scale.y = 1.15; g.add(helm);
  // Visor — red horizontal slit
  var visor = M(new THREE.BoxGeometry(0.28, 0.06, 0.05), MAT.redGlow);
  visor.position.set(0, 2.52, 0.18); g.add(visor);
  // Crest
  var crest = M(new THREE.BoxGeometry(0.04, 0.18, 0.3), MAT.redGlow);
  crest.position.set(0, 2.72, -0.02); g.add(crest);

  g.userData.avatarId = 'sentinel';
  g.userData.avatarName = 'THE SENTINEL';
  g.userData.legL = legL; g.userData.legR = legR;
  g.userData.armL = armL; g.userData.armR = armR;
  return g;
}

/* ============================================================
   2. THE ARCHITECT — Elegant creator avatar
   Long coat silhouette, geometric shoulders, luminous lines
   Height: ~2.2 units
   ============================================================ */
function buildArchitect() {
  initMaterials();
  var g = new THREE.Group();

  // Shoes — sleek
  var shoeL = M(new THREE.BoxGeometry(0.2, 0.15, 0.35), MAT.blackCloth);
  shoeL.position.set(-0.15, 0.08, 0.03); g.add(shoeL);
  var shoeR = shoeL.clone(); shoeR.position.x = 0.15; g.add(shoeR);

  // Legs — slim, dark
  var legL = new THREE.Group(); legL.position.set(-0.15, 0.15, 0);
  var legMeshL = M(new THREE.CylinderGeometry(0.09, 0.11, 0.75, 8), MAT.blackCloth);
  legMeshL.position.y = 0.38; legL.add(legMeshL);
  g.add(legL);
  var legR = new THREE.Group(); legR.position.set(0.15, 0.15, 0);
  var legMeshR = legMeshL.clone(); legMeshR.position.y = 0.38; legR.add(legMeshR);
  g.add(legR);

  // Long coat — tapered cylinder, open front feel via darker inner
  var coat = M(new THREE.CylinderGeometry(0.32, 0.48, 1.3, 12, 1, true), MAT.darkMetal);
  coat.position.y = 1.35; coat.material.side = THREE.DoubleSide; g.add(coat);
  // Coat luminous trim lines — vertical cyan strips
  for (var i = 0; i < 4; i++) {
    var ang = (i / 4) * Math.PI * 2 + Math.PI/4;
    var line = M(new THREE.BoxGeometry(0.02, 1.25, 0.02), MAT.cyanGlow);
    line.position.set(Math.cos(ang)*0.4, 1.35, Math.sin(ang)*0.4);
    g.add(line);
  }
  // Coat collar — high
  var collar = M(new THREE.CylinderGeometry(0.24, 0.3, 0.25, 10, 1, true), MAT.gunmetal);
  collar.position.y = 2.05; collar.material.side = THREE.DoubleSide; g.add(collar);

  // Geometric shoulder pieces — angular, asymmetric
  var shL = M(new THREE.OctahedronGeometry(0.2), MAT.chrome);
  shL.position.set(-0.42, 1.95, 0); shL.scale.y = 0.7; g.add(shL);
  var shR = M(new THREE.TetrahedronGeometry(0.22), MAT.gold);
  shR.position.set(0.42, 1.95, 0); g.add(shR);

  // Torso under coat
  var torso = M(new THREE.CylinderGeometry(0.24, 0.28, 0.6, 10), MAT.grayCloth);
  torso.position.y = 1.75; g.add(torso);
  // Chest luminous diamond
  var gem = M(new THREE.OctahedronGeometry(0.08), MAT.cyanGlow);
  gem.position.set(0, 1.85, 0.26); g.add(gem);
