<!-- source: openspec/changes/apply-connected-stack-coordinate-grid/deltas/home-blocks-paint-map.md -->

# Delta — `current/home/blocks.md § Background patterns paint-map`

**Operation:** edit the existing `## Background patterns paint-map` section.
Three edits below — header tally, Summary row 06, and the bare-rationale
subsection for 06. Apply verbatim.

---

## Edit 1 — header tally + budget note

In the section's intro blockquote, replace:

> The 13 current home sections × per-section verdict (12 visible + 1 conditional `lab-preview`) for the
> `D-DS-8` background-pattern system. Two placements applied,
> eleven bare. Density budget at 2/2 — adding
> a third placement requires displacing one of the current two.

with:

> The 13 current home sections × per-section verdict (12 visible + 1 conditional `lab-preview`) for the
> `D-DS-8` background-pattern system. **Three** placements applied,
> **ten** bare. Density budget at **3/3** (raised from 2 by D-DS-9 —
> change `apply-connected-stack-coordinate-grid`). The governing constraint
> is now spacing, not count: placements stay ≥1 bare section apart.

---

## Edit 2 — Summary table, row 06

Replace the `06` row:

```
| 06 | `connected-stack` | mechanism | high | bare · already literal grid | — |
```

with:

```
| 06 | `connected-stack` | mechanism | high | **P5 · applied** | `.bg-pattern-cad` · blueprint · normal · fade-top (wrapper) |
```

---

## Edit 3 — add an Applied-placement block; remove the bare subsection for 06

Under `### Applied placements`, after the `#### P4 — closing-cta` block, add:

```
#### P5 — `connected-stack` · bottom-strip tile (CAD coordinate grid)

File: `apps/web/src/components/home/connected-stack.tsx` · RAP-1265.

​```tsx
<div
  aria-hidden
  className="pointer-events-none absolute inset-x-0 bottom-0
             h-16 md:h-32 pattern-fade-top"
>
  <div className="absolute inset-0 bg-pattern-cad text-blueprint opacity-70" />
</div>
​```

The page's third placement and its first non-shipping-precedent tile.
`CAD/08` specifically: the section's content semantic is *coordinate
system* (the studio's tools plotted on a shared plane), and the 60px
crosshair grid is the catalog's one literal match. It sits in the
section's empty bottom padding — below and apart from the `grid-cols-3`
card lattice — so it reads as the registration field *beneath* the
stack, not a second content grid (see § Bare-rationale override below).

Fade is applied to the WRAPPER, not the tile: `bg-pattern-cad` owns
`mask-image` for its crosshairs, so `pattern-fade-top` on the same
element would silently override it (the documented anti-pattern). The
two masks compose across the nesting instead. `opacity-70` (normal) —
the weight P4 hatch ships at. Height tracks the section's `py-16
md:py-32` padding so the strip never overlaps the CTA.
```

Then **remove** the bare-rationale subsection:

```
#### 06 · `connected-stack`

Section *is* a grid — desktop layout is
`md:grid-cols-3 gap-px border border-grid`. A `graph` or `dots` tile
here is a grid pattern atop a literal grid. Section's existing
structural language already does this work.
```

and **replace it** with an override note (keeps the original reasoning on
record and explains why it no longer holds):

```
#### 06 · `connected-stack` — bare verdict overridden by P5

The original verdict was *bare · already literal grid*: a `graph` or
`dots` tile rendered under/within the `md:grid-cols-3` card lattice
would double the section's literal grid. **D-DS-9 / RAP-1265 overrides
it on two axes:** (1) the CAD field lives in the empty bottom padding,
spatially apart from the cards — there is no lattice in the strip's
bounds to double; (2) CAD's 60px crosshair pitch is coarser than and
semantically distinct from the card grid, reading as the coordinate
registration field the stack is plotted onto. The override is argued,
not silent — see § Applied placements › P5.
```

---

## Note on the Q3 RESOLVED block

Leave the `### Open question — Q3 … RESOLVED` block untouched. Q3 concerned
displacing a placement under the old 2/page cap; D-DS-9 lifts the cap rather
than displacing, so Q3 stays resolved-as-moot and needs no edit.
