<!-- SOLID CITY · part 2986 -->
hole profile spans at most 6.3 m from the edge. */
    function drapeFrom(e, dirx, dirz) {
      /* THE CLIFF WALL (the King's word, 2026-10-13 ~23:47): "the
       * road if it needs to be cut in to the slab create cliff
       * walls." Where the land stands deep above the road — a
       * true piercing, the far land still 2.5 m up after the full
       * march and the graded face never meeting it — the cut does
       * not grade at 0.95 a step. It stands PLUMB (his measure:
       * "just plumb and sturdy as a river flows" — no crazy
       * up-and-down geometry): the rise cap becomes 4.2 a step,
       * a wall that meets the land in a stride or two and reads
       * as what it is — a road cut through the slab of the
       * mountain. Shallow cuts keep the graded face; only the
       * deep ones stand. */
      var lands = [];
      for (var k0 = 1; k0 <= 6; k0++) lands[k0] = groundAt(e[0] + dirx * 1.05 * k0, e[2] + dirz * 1.05 * k0) - 0.25;
      var cliff = lands[6] - e[1] > 2.5;
      if (cliff) { for (var k1 = 1; k1 <= 6; k1++) { if (lands[k1] <= e[1] + 0.95 * 1.05 * k1) { cliff = false; break; } } }
      var riseCap = cliff ? 4.2 : 0.95;
      var pts = [e], met = false;
      for (var k = 1; k <= 6; k++) {
        var d = 1.05 * k;
        var px = e[0] + dirx * d, pz = e[2] + dirz * d;
        var land = lands[k];
        var y;
        if (met) y = land;
        else {
          y = Math.max(e[1] - 0.62 * d, Math.min(land, e[1] + riseCap * d));
          var bench = e[1] - 3.4 - 0.25 * Math.max(0, d - 5.48);
          if (y < bench) y = bench;
          if (y === land) met = true;
        }
        pts.push([px, y, pz]);
      }
      /* THE DAYLIGHT CHASE (the hardening night, 2026-10-14 —
       * the profession's priority family made literal: plain
       * slope, then more slope, then a wall, never an open
       * edge). The graded face above is floored by the bench
       * line, and where the land falls faster than the face may
       * follow, the foot is left standing above a slope it never
       * met: the vertex audit counted 356 feet district-wide
       * more than 0.3 m proud of the ground beneath them, the
       * worst near twelve metres. Where the march has not met
       * the land, it now CHASES it — the bench floor lifted, the
       * same graded law walking on to a grading limit of
       * fourteen metres from the edge. If the land still has
       * not been met there — cliff country, where the slope is
       * a wall already — the profile ends in THE WALL: one plumb
       * drop at the last offset to a hand under the land, which
       * the surfacing law reads as stone. Every foot now rests
       * on the ground, or stands over a wall that does. */
      if (!met && pts[6][1] - lands[6] > 0.05) {
        var metC = false;
        for (var k2 = 7; k2 <= 14; k2++) {
          var d2 = 1.05 * k2;
          var px2 = e[0] + dirx * d2, pz2 = e[2] + dirz * d2;
          var land2 = groundAt(px2, pz2) - 0.25;
          var y2 = Math.max(e[1] - 0.62 * d2, Math.min(land2, e[1] + riseCap * d2));
          pts.push([px2, y2, pz2]);
          if (y2 === land2) { metC = true; break; }
        }
        if (!metC) {
          var lastP = pts[pts.length - 1];
          var landLast = groundAt(lastP[0], lastP[2]) - 0.15;
          if (lastP[1] - landLast > 0.05) pts.push([lastP[0], landLast, lastP[2]]);
        }
        met = metC;
      }
      return { pts: pts, met: met };
    }
    var drapeCacheL = [], drapeCacheR = [];
    for (i = 0; i < N - 1; i++) {
      var A = st[i], B = st[i + 1];
      quad(ribbon, A.L, B.L, B.R, A.R); standQuad(stand, A.L, B.L, B.R, A.R);
      /* curbs: a top ribbon and an outer face, both edges; the top stands */
      var sides = [-1, 1];
      for (var q = 0; q < 2; q++) {
        var sd = sides[q], curb = sd < 0 ? curbL : curbR, gold = sd < 0 ? goldL : goldR;
        var out0 = 0.32, lift0 = 0.0;
        if (spec.furniture === 'bench') {
          /* THE BENCH KIT (the King's photographs): a dirt shoulder on
           * both edges — the carriageway's own ground, stood on like
           * the road — and on the DOWNHILL edge a guardrail: posts and
           * a silver rail over the drop. No curb, no gold: those are
           * street furniture, and this is a mountain. */
          out0 = 0.95; lift0 = 0.015;
          var sho = sd < 0 ? shoL : shoR;
          var hA0 = edgePt(A, sd, 0.02, 0.015), hA1 = edgePt(A, sd, 0.95, 0.015);
          var hB0 = edgePt(B, sd, 0.02, 0.015), hB1 = edgePt(B, sd, 0.95, 0.015);
          quad(sho, hA0, hB0, hB1, hA1); standQuad(stand, hA0, hB0, hB1, hA1);
          /* THE RAILS COME OFF (the King's word, 2026-10-14
           * ~01:34): "remove the rails. Turn it in to the
           * mountain as if its an old trail." The bench carried
           * a silver guardrail over the drop since the bench
           * cut; first its bodies stood down (the collision
           *