<!-- SOLID CITY · part 3435 -->
 0x04040c, side: T.BackSide }));
  root.add(dome);
  // 3200 stars, true points of light
  var n = 3200, pos = new Float32Array(n * 3), col = new Float32Array(n * 3);
  var palette = [[1, 1, 1], [0.75, 0.85, 1], [1, 0.95, 0.8], [0.85, 0.75, 1], [1, 1, 1]];
  for (var si = 0; si < n; si++) {
    var th = R() * Math.PI * 2, ph = Math.acos(1 - R() * 0.98); // upper dome
    var sr = R_CH - 1;
    pos[si * 3] = sr * Math.sin(ph) * Math.cos(th);
    pos[si * 3 + 1] = sr * Math.cos(ph) + 0.5;
    pos[si * 3 + 2] = sr * Math.sin(ph) * Math.sin(th);
    var pc = palette[Math.floor(R() * palette.length)], br = 0.45 + R() * 0.55;
    col[si * 3] = pc[0] * br; col[si * 3 + 1] = pc[1] * br; col[si * 3 + 2] = pc[2] * br;
  }
  var sg = new T.BufferGeometry();
  sg.setAttribute('position', new T.BufferAttribute(pos, 3));
  sg.setAttribute('color', new T.BufferAttribute(col, 3));
  var stars = new T.Points(sg, new T.PointsMaterial({ size: 1.7, vertexColors: true, sizeAttenuation: false, transparent: true, opacity: 0.95 }));
  root.add(stars);

  // ---------- nebula mist: deep blues and violets, drifting ----------
  var nebCols = ['#3a2a7a', '#2a1a5a', '#1a2a6a', '#4a2a6a', '#2a3a7a'];
  var nebs = [];
  for (var ni = 0; ni < 7; ni++) {
    var nt = nebulaTexture(T, nebCols[ni % nebCols.length]);
    var sm = new T.SpriteMaterial({ map: nt, transparent: true, opacity: 0.22 + R() * 0.1, blending: T.AdditiveBlending, depthWrite: false });
    var sp = new T.Sprite(sm);
    var na = R() * Math.PI * 2, nr2 = 25 + R() * 35;
    sp.position.set(Math.cos(na) * nr2, 22 + R() * 30, Math.sin(na) * nr2);
    var sz = 42 + R() * 42; sp.scale.set(sz, sz, 1);
    root.add(sp);
    nebs.push({ s: sp, a: na, r: nr2, y: sp.position.y, sp2: 0.008 + R() * 0.014, ph: R() * 6 });
  }

  // ---------- the five perfect forms, lit from within ----------
  var solids = [];
  var forms = [
    { geo: new T.TetrahedronGeometry(4.6), em: 0x1a8a7a, wire: 0x5af2e0, a: 90, y: 24, s: 0.21 },
    { geo: new T.BoxGeometry(6.4, 6.4, 6.4), em: 0x8a5a1a, wire: 0xf2c05a, a: 162, y: 18, s: 0.16 },
    { geo: new T.OctahedronGeometry(5.2), em: 0x4a2a9a, wire: 0x9a7af2, a: 234, y: 28, s: 0.24 },
    { geo: new T.DodecahedronGeometry(4.6), em: 0x1a3a8a, wire: 0x5a8af2, a: 306, y: 20, s: 0.13 },
    { geo: new T.IcosahedronGeometry(5.0), em: 0x8a2a4a, wire: 0xf25a8a, a: 18, y: 26, s: 0.19 }
  ];
  forms.forEach(function (f, fi) {
    var grp = new T.Group();
    var solid = new T.Mesh(f.geo, new T.MeshLambertMaterial({ color: 0x0c0c14, emissive: f.em, emissiveIntensity: 0.85 }));
    grp.add(solid);
    var wire = new T.LineSegments(new T.EdgesGeometry(f.geo),
      new T.LineBasicMaterial({ color: f.wire, transparent: true, opacity: 0.9 }));
    wire.scale.setScalar(1.002); grp.add(wire);
    var rad = f.a * Math.PI / 180;
    grp.position.set(Math.cos(rad) * 36, f.y, Math.sin(rad) * 36);
    root.add(grp);
    solids.push({ g: grp, s: f.s, y0: f.y, ph: fi * 1.7 });
  });
  var wash1 = new T.PointLight(0x4a6aff, 0.9, 110); wash1.position.set(-30, 26, 0); root.add(wash1);
  var wash2 = new T.PointLight(0x7a4aff, 0.9, 110); wash2.position.set(30, 26, 0); root.add(wash2);

  // ---------- the heart: a single star above a dark monolith ----------
  var mon = new T.Mesh(new T.BoxGeometry(5, 20, 5), new T.MeshLambertMaterial({ color: 0x0a0a10 }));
  mon.position.set(0, 10, 0); root.add(mon);
  foot.push([0, 0, 5.5, 5.5, 0, 20, 0]);
  var star = new T.Mesh(new T.SphereGeometry(3.2, 24, 18), new T.MeshBasicMaterial({ color: 0xfff8e8 }));
  star.position.set(0, 27, 0); root.add(star);
  var halo = new T.Sprite(new T.SpriteMaterial({ map: glowTexture(T), transparent: true, opacity: 0.9, blending: T.AdditiveBlending, depthWrite: false }));
  halo.scale.set(30, 30, 1); halo.position.set(0, 27, 0); root.add(halo);
  var starLight = new T.PointLight(0xfff0d0, 2.6, 175);
  starLight.position.set(0, 27, 0); root.add(starLight);

  // ---------- THE EMERGENCE: the Bore's grand south portal ----------
  var portal = archRingGeo(T, 1.45, stoneMat);
  portal.position.set(0, 6 * PHI * 1.45, R_CH - 2); root.add(portal);
  var pkey = new T.Mesh(new T.BoxGeometry(1.6, 2.2, 2.4), goldBasic);
  pkey.position.set(0, 6 * PHI * 1.45 + 7.5 * PHI * 1.45 - 0.5, R_CH - 2); root.add(pkey);
  var emPlaque = namePlaque(T, 'THE EMERGENCE', 7, stoneMat);
  emPlaque.position.set(13.5, 3.1, R_CH - 6); emPlaque.rotation.y = 0.45; root.add(emPlaque);
  foot.push([13.5, R_CH - 6, 2, 2, 0, 5, 0]);

  // ---------- the honest unfinished edge: a dark arch, truly named ----------
  var darkMat = new T.MeshLambertMaterial({ color: 0x0a0a0e });
  var darkArch = archRingGeo(T, 1.1, darkMat);
  darkArch.position.set(0, 6 * PHI * 1.1, -(R_CH - 2)); root.add(darkArch);
  // shallow lightless alcove behind it
  var alc = new T.Group();
  [-1, 1].forEach(function (s) {
    var w = new T.Mesh(new T.BoxGeometry(1.6, 15, 13), darkMat);
    w.position.set(s * 5.8, 7.5, -(R_CH + 4)); alc.