<!-- SOLIDIVISM · part 55 -->
osition.set(bx, H/2 + 0.5, bz - D/2 + T + 0.15);
    group.add(glass);

    // Interior red glow strips
    const stripMat = new THREE.MeshStandardMaterial({
      color: 0xFF2200, emissive: 0xFF2200, emissiveIntensity: 1.5
    });
    const stripL = new THREE.Mesh(new THREE.BoxGeometry(0.3, H - 2, 0.3), stripMat);
    stripL.position.set(bx - W/2 + T + 0.5, H/2, bz);
    group.add(stripL);
    const stripR = new THREE.Mesh(new THREE.BoxGeometry(0.3, H - 2, 0.3), stripMat);
    stripR.position.set(bx + W/2 - T - 0.5, H/2, bz);
    group.add(stripR);

    // Label above door (outside)
    const lc = document.createElement('canvas');
    lc.width = 512; lc.height = 64;
    const lx = lc.getContext('2d');
    lx.font = 'bold 36px monospace'; lx.textAlign = 'center';
    lx.strokeStyle = '#000'; lx.lineWidth = 6;
    const lbl = (label || 'CONTROL').toUpperCase();
    lx.strokeText(lbl, 256, 44);
    lx.fillStyle = '#FF3333'; lx.fillText(lbl, 256, 44);
    const ltex = new THREE.CanvasTexture(lc);
    const lmesh = new THREE.Mesh(
      new THREE.PlaneGeometry(10, 1.25),
      new THREE.MeshBasicMaterial({ map: ltex, transparent: true, depthTest: false })
    );
    lmesh.position.set(bx, H + 2, bz + D/2 + 0.5);
    lmesh.renderOrder = 999;
    group.add(lmesh);
    labelMeshes.push({mesh: lmesh, bx, bz});

    scene.add(group);

    // COLLISION: walls block, door gap open
    const walls = [
      {minX: bx - W/2, maxX: bx + W/2, minZ: bz - D/2, maxZ: bz - D/2 + T},
      {minX: bx - W/2, maxX: bx - W/2 + T, minZ: bz - D/2, maxZ: bz + D/2},
      {minX: bx + W/2 - T, maxX: bx + W/2, minZ: bz - D/2, maxZ: bz + D/2},
      {minX: bx - W/2, maxX: bx - doorHalf, minZ: bz + D/2 - T, maxZ: bz + D/2},
      {minX: bx + doorHalf, maxX: bx + W/2, minZ: bz + D/2 - T, maxZ: bz + D/2},
    ];
    colliders.push({ walls, mesh: group, bx, bz, width: W, depth: D, room: true });

    return group;
  }

  // ── PUBLIC API ──
  return {
    init,
    setupInput,
    addBuilding,
    checkCollision,
    getScene: () => scene,
    getPlayer: () => player,
    getCamera: () => camera,
    getBuildings: () => buildings,
    createVideoPanel,
    createControlRoom,
    getVideoPanel,
    getColliders: () => colliders
  };
})();


===== FILE: public/solidivism/foundation.js.v1-20261008 =====
/* ============================================================
   SOLIDIVISM FOUNDATION v1.0
   The most impressive kind — clean, solid, unbreakable.
   Claimed by The King, October 8, 2026.
   
   Principles:
   1. Everything visible IS solid. Everything solid IS visible.
   2. No separation between render and collision — one system.
   3. Built to be seen. Built to hold.
   ============================================================ */

const Solidivism = (function() {
  'use strict';

  let scene, camera, renderer, player;
  let colliders = [];
  let buildings = [];

  // ── INIT: The foundation ──
  function init(containerId) {
    const container = document.getElementById(containerId);
    
    // Scene: dark tactical void
    scene = new THREE.Scene();
    scene.background = new THREE.Color(0x0a0a0e);
    
    // Camera: cinematic third-person
    camera = new THREE.PerspectiveCamera(
      60, window.innerWidth / window.innerHeight, 0.1, 500
    );
    camera.position.set(0, 12, 25);
    
    // Renderer: maximum quality
    renderer = new THREE.WebGLRenderer({ antialias: true });
    renderer.setSize(container.clientWidth, container.clientHeight);
    renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
    container.appendChild(renderer.domElement);
    
    // Lights: dramatic tactical lighting
    const ambient = new THREE.AmbientLight(0xffffff, 0.4);
    scene.add(ambient);
    
    const keyLight = new THREE.DirectionalLight(0xff3333, 1.2);
    keyLight.position.set(30, 50, 30);
    scene.add(keyLight);
    
    const fillLight = new THREE.DirectionalLight(0x3388ff, 0.5);
    fillLight.position.set(-30, 20, -30);
    scene.add(fillLight);
    
    const rimLight = new THREE.PointLight(0xff0000, 0.8, 100);
    rimLight.position.set(0, 10, 0);
    scene.add(rimLight);
    
    // Ground: tactical grid
    createGround();
    
    // Player: the avatar
    createPlayer();
    
    // Start the loop
    animate();
    
    // Handle resize
    window.addEventListener('resize', onResize);
  }

  // ── GROUND: Futuristic motherboard floor (seamless 4-side loop) ──
  function createMotherboardTexture() {
    const S = 512;
    const c = document.createElement('canvas');
    c.width = S; c.height = S;
    const x = c.getContext('2d');
    
    // PCB base: deep black-green
    x.fillStyle = '#0a0f0a';
    x.fillRect(0, 0, S, S);
    
    // Subtle PCB texture noise
    x.fillStyle = '#0d130d';
    for (let i = 0; i < 200; i++) {
      const px = Math.floor(Math.random() * S);
      const py = Math.floor(Math.random() * S);
      x.fillRect(px, py, 2, 2);
    }
    
    // Circuit traces: red coppe