diff --git a/PROJECT.md b/PROJECT.md
index d77782b..acd7f63 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -931,6 +931,23 @@ strength because the balls kept landing where he wasn't.
(stepping in to take the ball pre-bounce carries reach x1.4 / window x1.8), and serve pace off the
apex. The placement flick is taught nowhere on touch — worth a ghost-hand lesson if the mode ships.
+**EIGHTEENTH PASS — the flick shows itself, the width is a dial, the blood stays on.**
+- **THE PLACEMENT RING**: an aimed rally hit (flick or held direction at contact) stamps
+ `G.placeMark` and a gold ring fades where the shot is going — flick, watch it bite the corner,
+ learn the cause. Deliberately NOT stamped for unaimed hits: marking the scatter would teach noise.
+ Fades in 0.8 s; a permanent ring would read as a target to hit rather than feedback.
+- **`matchWideBase` 2.1 / `matchWidePer` 0.4 — the opponent's WIDTH is the ladder's third dial.**
+ Its returns scatter off `aimError x (1 - quality)`, which painted lines from game one ("still a
+ LOT of unreachable balls"). Opponent one now keeps its returns inside what an auto-run player can
+ actually cover (measured: 25 returns, all inside ±2.2 m), and earns 0.4 m more width per rung —
+ line-painting is the LATE ladder. Speed, reliability, width: three dials, all per-rung.
+- **THE BLOOD VIGNETTE replaces the temporary border.** The old edge wash flashed 0.3 s and
+ vanished — between hits the screen said you were fine. Now a radial vignette reads `G.hp`
+ directly: its depth IS your damage fraction, permanent until healed, and the hit pulse rides on
+ top. Global (the hp channel is global), not match-only. Same no-HP-bar philosophy, one layer out:
+ the state is worn, not reported. At 1 hp the frame is properly blood-rimmed and the court centre
+ stays legible.
+
**Open, and every one of them is Oliver's call after he plays it:**
1. ~~**A ball that carries through the lane can complete two steps at once.**~~ Largely CLOSED by
the slice removal (seventh pass) — a cut ball picking its own next victim was the main way this
diff --git a/index.html b/index.html
index a0a7c19..67a311b 100644
--- a/index.html
+++ b/index.html
@@ -400,6 +400,6 @@
-
+