The phase-87 ".typing-elapsed" dot-geometry reset (specificity 0,1,0)
lost every shared declaration to the ".typing span" dot rule
(0,1,1): the hint rendered as an 8x8px bouncing dot and the "Ns" text
wrapped one character per line below the bubble (overflow-wrap:
anywhere on .bubble). Phase 87's e2e checked text values only, so the
squish shipped unseen.
- retarget the reset at ".typing span.typing-elapsed" (0,2,1) so it
actually wins; center the dots while the hint line is taller
- unit: pin the reset's selector context (specificity regression guard)
- e2e: layout pin on the live hint — no dot animation, not an 8px box,
horizontal single-line bounding box
- before/after verification screenshots in
.agents/reports/87_big_read_progress/
Verified: unit 41 passed, phase-87 e2e 4 passed (isolated), ruff +
pyright clean.