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 **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. 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 Deliberately NOT taken from the handoff: **the corner chips, all of them**. They went the same
(Oliver: "sinnlos") — LAST remembered what you played last time, which a gallery of six posters does evening (Oliver: "sinnlos", then "da auch") — LAST remembered what you played last time, which a
not need to do for you, and 18 RUNGS was a number about a mode on the screen where you choose gallery of six posters does not need to do for you; 18 RUNGS was a number about a mode on the screen
BETWEEN modes. The LAST chip survives on the DIFFICULTY chips, where it is the only thing that says where you choose BETWEEN modes; and the difficulty screen's LAST was the last place still breaking
what you last set. One other deviation: the meters' legend reads `PACE · BOUNCE`, the order the bars the wizard's own rule that a QUESTION SCREEN CARRIES NO SELECTION. The `.last` class is gone from
are actually drawn in. 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): 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. 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; } pointer-events: none; }
/* the words and the chips ride ABOVE the veil — a pseudo-element is the last thing painted */ /* 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; } #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); } #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 /* 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" 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) => { if (t.diffs) DIFFS.forEach((d, i) => {
const b = document.createElement('button'); const b = document.createElement('button');
b.className = 'chip' + (i === DIFFS.length - 1 ? ' hot' : ''); 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">` b.innerHTML = `<b>${d.name}</b><span class="pips">`
+ [0, 1, 2].map(k => `<i${k <= i ? ' class="on"' : ''}></i>`).join('') + '</span>' + [0, 1, 2].map(k => `<i${k <= i ? ' class="on"' : ''}></i>`).join('') + '</span>';
+ (d.id === pickedDiff ? '<u class="last">LAST</u>' : '');
b.addEventListener('click', () => { b.addEventListener('click', () => {
pickedDiff = d.id; pickedDiff = d.id;
try { localStorage.setItem('diff', d.id); } catch {} try { localStorage.setItem('diff', d.id); } catch {}