The difficulty screen drops its LAST too, and the class with it

It was the last place still breaking the wizard's own rule — a question screen
carries no memory of its own answer. Three names, three pip counts, nothing
else. `.last` has no users left, so the rule is gone from the stylesheet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-31 15:23:40 +02:00
1 parent e09ce992e2
commit 5927664905
3 files changed
+10 -11

No files matched your search

+7 -6
View File
@@ -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.
-3
View File
@@ -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"
+3 -2
View File
@@ -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 = `<b>${d.name}</b><span class="pips">`
+ [0, 1, 2].map(k => `<i${k <= i ? ' class="on"' : ''}></i>`).join('') + '</span>'
+ (d.id === pickedDiff ? '<u class="last">LAST</u>' : '');
+ [0, 1, 2].map(k => `<i${k <= i ? ' class="on"' : ''}></i>`).join('') + '</span>';
b.addEventListener('click', () => {
pickedDiff = d.id;
try { localStorage.setItem('diff', d.id); } catch {}