diff --git a/PROJECT.md b/PROJECT.md
index abcef37..c8d28d5 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -681,12 +681,13 @@ What that cost each screen:
**The walk-on's two levels are ONE face at ONE size** (Oliver): a comparison drawn at two sizes is
a headline with a footnote. Only the colour differs, and only where it means something.
-Deliberately NOT taken from the handoff: **the wall's corner chips**. Both went the same evening
-(Oliver: "sinnlos") — LAST remembered what you played last time, which a gallery of six posters does
-not need to do for you, and 18 RUNGS was a number about a mode on the screen where you choose
-BETWEEN modes. The LAST chip survives on the DIFFICULTY chips, where it is the only thing that says
-what you last set. One other deviation: the meters' legend reads `PACE · BOUNCE`, the order the bars
-are actually drawn in.
+Deliberately NOT taken from the handoff: **the corner chips, all of them**. They went the same
+evening (Oliver: "sinnlos", then "da auch") — LAST remembered what you played last time, which a
+gallery of six posters does not need to do for you; 18 RUNGS was a number about a mode on the screen
+where you choose BETWEEN modes; and the difficulty screen's LAST was the last place still breaking
+the wizard's own rule that a QUESTION SCREEN CARRIES NO SELECTION. The `.last` class is gone from
+the stylesheet with them. One other deviation: the meters' legend reads `PACE · BOUNCE`, the order
+the bars are actually drawn in.
With the chips went the last caller of the second step's poster branch (`buildSub`'s `t.kids` loop):
no MENU row has fanned out into sub-posters since the cup left that pocket, so it is gone too.
diff --git a/index.html b/index.html
index 257b0eb..5dcf92b 100644
--- a/index.html
+++ b/index.html
@@ -518,9 +518,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
pointer-events: none; }
/* the words and the chips ride ABOVE the veil — a pseudo-element is the last thing painted */
#modeList .cb, #modeSub .cb { position: relative; z-index: 2; }
- .last { position: absolute; z-index: 2; top: 7px; right: 9px; font: 400 8px Silkscreen, monospace;
- color: var(--acid); background: rgba(0,0,0,0.72); padding: 3px 6px;
- letter-spacing: 1px; border: 1px solid rgba(188,212,85,0.5); }
#modeList b, #modeSub b { text-shadow: 0 1px 0 #000, 0 0 6px rgba(0,0,0,0.9); }
/* the subtitle carries the mode's one-line rules over busy art, so it gets WHITE at full
opacity, a size up from the court rows' 9px, and a solid black underlay — "barely readable"
diff --git a/src/main.js b/src/main.js
index 096a2c3..4f9bd7a 100644
--- a/src/main.js
+++ b/src/main.js
@@ -157,9 +157,10 @@ function buildSub(top) {
if (t.diffs) DIFFS.forEach((d, i) => {
const b = document.createElement('button');
b.className = 'chip' + (i === DIFFS.length - 1 ? ' hot' : '');
+ // no LAST chip here either (Oliver): a question screen carries no memory of its own answer —
+ // the wizard's own rule, applied to the last screen that was still breaking it
b.innerHTML = `${d.name}`
- + [0, 1, 2].map(k => ``).join('') + ''
- + (d.id === pickedDiff ? 'LAST' : '');
+ + [0, 1, 2].map(k => ``).join('') + '';
b.addEventListener('click', () => {
pickedDiff = d.id;
try { localStorage.setItem('diff', d.id); } catch {}