<!-- SOLID CITY · part 1811 -->
);
  var rain = new T.Points(rainGeo, new T.PointsMaterial({ color: 0xa8c8e8, size: 2.1, transparent: true, opacity: 0.45, depthWrite: false }));
  rain.frustumCulled = false; group.add(rain);

  group.add(solid.build(new T.MeshLambertMaterial({ vertexColors: true })));
  group.add(glassB.build(new T.MeshLambertMaterial({ vertexColors: true, transparent: true, opacity: 0.82, emissive: 0x1d3442 })));
  group.add(glow.build(new T.MeshBasicMaterial({ vertexColors: true })));

  group.userData = {
    center: { x: CX, z: CZ }, baseY: BASE, floorY: FLOOR, radius: CROWN_RADIUS,
    trees: treePts.length, falls: falls, rivers: CROWN_RIVERS.slice(), peaks: CROWN_PEAKS.length,
    solids: peakSolids.concat(treeSolids),
    heightAt: function (wx, wz) {
      var dx = wx - CX, dz = wz - CZ, r = Math.hypot(dx, dz);
      if (r > 332) return null;
      return BASE + crownHeight(r, Math.atan2(dz, dx));
    },
    update: function (dt, t) {
      var pos = rainGeo.getAttribute('position');
      for (var i = 0; i < RAIN_N; i++) {
        var y = pos.getY(i) - rainSpd[i] * dt;
        if (y < FLOOR + 5) y = BASE - 4 - (R() * 8);
        pos.setY(i, y);
      }
      pos.needsUpdate = true;
      var pulse = 0.32 + Math.sin((t || 0) * 2.2) * 0.05;
      fallMats.forEach(function (m, i3) { m.opacity = i3 % 2 ? 0.48 + Math.sin((t || 0) * 2.2) * 0.07 : pulse; });
    }
  };
  return group;
}
export default createCrystalCrown;


===== FILE: public/city/curriculum.json =====
{
  "version": "2026-10-10.stage1",
  "title": "Solid City University",
  "tagline": "The new learning space for humans and AI.",
  "campuses": [
    {
      "id": "sciences", "name": "Sciences", "host": "grok",
      "blurb": "Physics, chemistry and biology: how the universe, matter and life work, from quarks to ecosystems.",
      "courses": [
        { "id": "phys101", "title": "Physics I: Motion and Energy", "host": "grok",
          "desc": "Classical mechanics from Newton's laws to energy and momentum, with everyday and cosmic examples.",
          "lessons": ["Measuring the world: units, vectors and uncertainty", "Newton's three laws of motion", "Work, energy and power", "Momentum and collisions", "Gravity and orbits"],
          "intro": "Physics begins with measurement. Every quantity has a number and a unit, and the International System (SI) gives us seven base units, among them the metre, kilogram and second, from which everything else is built: a newton of force is one kilogram-metre per second squared. Some quantities, like mass or temperature, are scalars with size only; others, like velocity, force and displacement, are vectors with both size and direction, and they add tip to tail. No measurement is perfect, so scientists report uncertainty, for example 9.81 plus or minus 0.02 metres per second squared, and keep only the significant figures the instrument can justify. Getting units, vectors and uncertainty right is what turns a guess into physics." },
        { "id": "chem101", "title": "Chemistry: Atoms, Bonds and Reactions", "host": "grok",
          "desc": "The structure of atoms, the periodic table, chemical bonding and how reactions conserve mass and energy.",
          "lessons": ["Atoms, isotopes and the periodic table", "Electron shells and chemical bonds", "Balancing chemical equations", "Moles and stoichiometry", "Energy in reactions"],
          "intro": "Everything you can touch is made of atoms, each with a dense nucleus of protons and neutrons surrounded by electrons. The number of protons, the atomic number, decides which element an atom is: one for hydrogen, six for carbon, eight for oxygen. Atoms of the same element can carry different numbers of neutrons; these isotopes, like carbon-12 and carbon-14, behave alike chemically but differ in mass and stability. The periodic table arranges the elements by atomic number into rows (periods) and columns (groups), and elements in the same group share similar chemistry because they have the same number of outer electrons. That one idea, outer electrons drive chemistry, runs through this whole course." },
        { "id": "bio101", "title": "Biology: Cells, Genes and Evolution", "host": "grok",
          "desc": "Life from the cell up: membranes and organelles, DNA and heredity, and evolution by natural selection.",
          "lessons": ["What is life? The cell theory", "Inside the cell: membranes and organelles", "DNA, genes and proteins", "Heredity and Mendel's laws", "Evolution by natural selection", "Ecosystems and energy flow"],
          "intro": "Biology rests on the cell theory: all living things are made of one or more cells, the cell is the basic unit of life, and every cell comes from a pre-existing cell. Cells come in two broad kinds. Prokaryotic cells, such as bacteria, are small and have no nucleus; their DNA floats in the cytoplasm. Eukaryotic cells, which make up plants, animals and fungi, keep their DNA inside a membrane-bound nucleus