# Street detail module

`street-details.js` contains original procedural Three.js geometry. It imports no dependencies and requests no network resources.

```js
import {createStreetDetails} from './street-details.js';
const streetDetails=createStreetDetails({THREE,osm,xy,height:terrainHeight,buildingAt});
scene.add(streetDetails.group);
// Your blue-hour/day transition:
streetDetails.setNight(timeMode===2);
```

The default lantern glow is subtle daylight amber. `setNight(true)` raises emissive intensity without adding real-time point lights; fractional values from 0 to 1 are also accepted. Remove the former generic spherical streetlamp loop in `createStreetLife` when integrating to avoid duplicate lamps. The module adds no collisions. Geometry is baked into one mesh for each of six materials.

Verified against the recovered `geography-osm.json`, `geography.json`, and filled measured terrain grid: 36 lanterns, 24 benches, 22 planted urns, 21 bollards, five awnings, and four cafe seating sets (each with two chairs and a parasol). Total 60,840 rendered triangles and six ordinary material draw calls, before shadow passes. No non-finite geometry values; no furniture origin inside a non-fort building. Validation script: `check-street-details.mjs`; machine-readable positions: `street-details-audit.json`.

Every free-standing item uses a mapped park/square edge, or a mapped named pedestrian street. The square/park priorities include Plaza de Armas (OSM way 487051052), Plaza Felisa Rincón de Gautier (270168282), Plaza Colón (196605697), Plaza Salvador Brau (260858525), Plaza de Hostos (256661396), Jardín de la Princesa (561640420), Parque de las Palomas (196604231), Plaza del Quinto Centenario (196604234), Plaza Arturo Somohano (260844321), and Plaza del Soportal (256658276).

All four interpreted cafe seating sets adjoin the mapped Cuatro Estaciones kiosk (410620625) in Plaza de Armas. Five interpreted fabric awnings attach to an exposed edge of mapped cafe/restaurant footprints (252692614, 252692633, 260844318, 268141824, 268141932). No shop names, brands, or signs appear in the scene. A source name in audit metadata identifies the OSM anchor only.

Placement is limited to the historic core rectangle −66.1215 to −66.1110 longitude and 18.4631 to 18.46835 latitude. Furniture clears mapped road widths, walking centerlines, existing ±2.8 m animated pedestrian tracks, neighbouring furniture, buildings, and steep local terrain changes. Cafe seating additionally requires a mapped park/square. Awning fabric stays above pedestrian headroom.

These furniture designs, counts, colours, locations, and awnings are artistic interpretations associated with real mapped features. They are not a survey of existing street furniture, evidence of a cafe's actual outdoor seating, or a claim of historically exact fixtures. Existing OSM attribution should remain in the application.
