<!-- SOLID CITY · part 2988 -->
[1] - a[1]) * aby + (p[2] - a[2]) * abz) / (abx * abx + aby * aby + abz * abz || 1);
        t = Math.max(0, Math.min(1, t));
        var dx = p[0] - (a[0] + abx * t), dy = p[1] - (a[1] + aby * t), dz = p[2] - (a[2] + abz * t);
        return Math.sqrt(dx * dx + dy * dy + dz * dz);
      }
      var a3 = 0;
      while (a3 < N - 1) {
        if (!brow[a3]) { a3++; continue; }
        var b3 = a3 + 1;
        while (b3 < N - 1) {
          var nb = b3 + 1;
          if (!brow[nb]) break;
          var bad = false;
          for (var m = a3 + 1; m < nb; m++) { if (brow[m] && dev3(brow[m], brow[a3], brow[nb]) > 0.5) { bad = true; break; } }
          if (bad || nb - a3 > 24) break;
          b3 = nb;
        }
        if (brow[b3]) {
          var outw3 = [sdSign * st[a3].rx, sdSign * st[a3].rz];
          quad(bankGrass, brow[a3], brow[b3], foot[b3], foot[a3], outw3);
          quad(bankGrass, brow[b3], brow[a3], foot[a3], foot[b3], outw3);
        }
        a3 = b3;
      }
    }
    /* THE BANK SKIN (the King's order + the Architect's ruling,
     * 2026-10-13 ~23:09): "rebuild the affected road surfaces as
     * continuous, smoothly joined sections." The hairpin census
     * convicted the One Block's long flat chords: honest on straight
     * land, but across falling, turning ground a 30 m flat block
     * detaches from the hillside — it hovers, it gaps, and stacked
     * at a hairpin it reads as the pale pleated sheets in the
     * King's photographs. So the grass now FOLLOWS the drape's own
     * surveyed profile — every step of it, both faces — wherever
     * the land turns or falls (brow or foot straying more than
     * 0.35 m from straight over the coming stations, judged station
     * by station), and keeps the sweep's economy only on stretches
     * proven tame by the same measure. The skin's edge is the
     * drape's own foot, so bank, rail line, and road edge finally
     * describe one continuous section. bankSweep above stands as
     * the record of the ruling it served; the skin succeeds it. */
    /* THE BROW SLABS (the Slab Pass, continued): the brow's two
     * stone steps, poured as long slabs wherever the surveyed
     * profile lines (edge, step one, step two) hold within 0.3 m
     * of straight over the run — up to 32 stations of slab; where
     * the land turns, the stitch returns for exactly that stretch.
     * Stations whose drape met the land inside two steps have no
     * full brow; they break the run and are stitched as before. */
    /* a profile step that RISES at 1.5 or steeper is cliff, and its
     * quads pour as stone wherever they are emitted */
    function stepSurf(pA, pB, dk, dflt) {
      function steep(p) { if (!p || !p[dk + 1]) return false; var h = Math.hypot(p[dk + 1][0] - p[dk][0], p[dk + 1][2] - p[dk][2]); return h > 0.01 && (p[dk + 1][1] - p[dk][1]) / h >= 1.5; }
      return (steep(pA) || steep(pB)) ? cliffW : dflt;
    }
    function browSlabs(cache, sdSign, surf) {
      var prof = [];
      for (var i2 = 0; i2 < N; i2++) { var dc = cache[i2]; prof[i2] = (dc && dc.pts.length >= 3) ? dc.pts : null; }
      function dev3(p, a, b) {
        var abx = b[0] - a[0], aby = b[1] - a[1], abz = b[2] - a[2];
        var t = ((p[0] - a[0]) * abx + (p[1] - a[1]) * aby + (p[2] - a[2]) * abz) / (abx * abx + aby * aby + abz * abz || 1);
        t = Math.max(0, Math.min(1, t));
        var dx = p[0] - (a[0] + abx * t), dy = p[1] - (a[1] + aby * t), dz = p[2] - (a[2] + abz * t);
        return Math.sqrt(dx * dx + dy * dy + dz * dz);
      }
      function stitch(iA, iB) {
        var cA = cache[iA], cB = cache[iB]; if (!cA || !cB) return;
        var pA = cA.pts, pB = cB.pts, outw = [sdSign * st[iA].rx, sdSign * st[iA].rz];
        for (var dk = 0; dk < Math.min(2, pA.length - 1); dk++) {
          if (!pB[dk + 1]) continue;
          var sf1 = stepSurf(pA, pB, dk, surf);
          quad(sf1, pA[dk], pB[dk], pB[dk + 1], pA[dk + 1], outw);
          quad(sf1, pB[dk], pA[dk], pA[dk + 1], pB[dk + 1], outw);
        }
      }
      var a3 = 0;
      while (a3 < N - 1) {
        if (!prof[a3]) { stitch(a3, a3 + 1); a3++; continue; }
        var end = a3;
        /* THE DARK GREEN PAVING (the King's word, 2026-10-14
         * ~00:47): "Change the gray and green color to mountain
         * dark green. And pave it from bottom to top." The brow
         * run is capped at ONE station pair — the brow is paved
         * stitch by stitch like everything below it. No slab
         * spans a face on this mountain anymore. */
        while (end < N - 1 && end - a3 < 1) {
          var nx = end + 1;
          if (!prof[nx]) break;
          var bad = false;
          for (var m = a3 + 1; m < nx && !bad; m++) {
            if (!prof[m]) { bad = true; break; }
            for (var ln = 0; ln < 3; ln++) if (dev3(prof[m][ln], prof[a3][ln], prof[nx][ln]) > 0.3) { bad = true; break; }
          }
          if (bad) break;
          end = nx;
     