The draw screen retires: the league cup rolls inside the run, ENTER THE DRAW moves onto the setup button

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-29 16:46:34 +02:00
1 parent 812bea3234
commit dbfd085493
5 files changed
+34 -130

No files matched your search

+2 -45
View File
@@ -177,7 +177,7 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
/* ONE overlay, four panels, swapped by #intro[data-stage]. Keeping the backdrop and the card frame
alive across every screen is the point — a screen that unmounts the whole overlay flashes the
court through between menus. */
#splash, #setup, #stats, #ranks, #newbest, #secret, #bosses, #stmode, #stsub, #bracket, #vs, #train, #player, #promo, #card { display: none; }
#splash, #setup, #stats, #ranks, #newbest, #secret, #bosses, #stmode, #stsub, #vs, #train, #player, #promo, #card { display: none; }
#intro[data-stage="splash"] #splash { display: flex; flex-direction: column; flex: 1; }
/* flex COLUMN, not block: it is what lets the footer's margin-top:auto reach the bottom of a
screen whose content does not fill it */
@@ -188,7 +188,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
#intro[data-stage="ranks"] #ranks,
#intro[data-stage="secret"] #secret,
#intro[data-stage="bosses"] #bosses,
#intro[data-stage="bracket"] #bracket,
#intro[data-stage="train"] #train,
#intro[data-stage="vs"] #vs,
#intro[data-stage="player"] #player,
@@ -411,35 +410,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
/* the training picker is 18 rungs deep — the tile carries the HEAD (the same z_*head crop the
draw and the walk-on wear), which reads at a third of the boss portrait's height */
#trainList img { height: 44px; width: auto; display: block; image-rendering: pixelated; }
/* THE DRAW. Four rungs read top-down as a ladder, because that is what the mode is — the bracket
shape a real draw is printed in needs width a phone has not got, and half of it would be blank
anyway (you only ever play one side of it). The rows spin their portrait and their name while
the draw is being made, and .set is what a landed one wears: the placeholder look is on the
ROW, so a slot that has stopped is obvious at a glance and START stays out of reach until the
last of them lands. The final wears .set from the first frame — it was never in doubt. */
#cupRows { display: flex; flex-direction: column; gap: 8px; }
.cupRow { display: grid; grid-template-columns: 54px 1fr auto; grid-template-rows: auto auto;
align-items: center; column-gap: 10px; row-gap: 2px;
padding: 7px 10px; background: var(--panel); border: 2px solid var(--line);
/* the connector: every round but the first hangs off the one above it */
position: relative; }
.cupRow + .cupRow::before { content: ''; position: absolute; left: 35px; top: -10px; width: 2px;
height: 10px; background: var(--line); }
.cupRow img { grid-column: 1; grid-row: 1 / span 2; width: 54px; height: 54px;
object-fit: contain; object-position: center; image-rendering: pixelated;
/* mid-spin the faces flicker past unreadable; dimming them says "still rolling"
without a second element to keep in sync */
opacity: 0.5; filter: grayscale(0.7); }
.cupRow u { grid-column: 2; grid-row: 1; font: 400 8px Silkscreen, monospace; color: var(--dim);
letter-spacing: 1.5px; text-decoration: none; text-align: left; }
.cupRow b { grid-column: 2; grid-row: 2; font: 400 11px Silkscreen, monospace; color: var(--dim);
letter-spacing: 0.5px; line-height: 1.35; text-align: left; }
.cupRow i { grid-column: 3; grid-row: 1 / span 2; font: 400 8px Silkscreen, monospace;
font-style: normal; color: var(--dim); letter-spacing: 1px; white-space: nowrap; }
.cupRow.set img { opacity: 1; filter: none; }
.cupRow.set b { color: var(--cream); }
.cupRow.fin { border-color: var(--red); }
.cupRow.fin.set b { color: var(--acid); }
/* START is genuinely unreachable until the draw has landed — the wait IS the ceremony */
.btn[disabled] { opacity: 0.32; cursor: default; }
/* a row, not a stacked tile: three 3:2 tiles stacked fill a phone twice over, and the art still
@@ -774,19 +744,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
<button class="btn sec" id="cdEdit">EDIT PLAYER<i>NAME · TOUR · COLOURS</i></button>
</div>
</div>
<!-- THE DRAW (cup mode only). SERVE UP lands here instead of on a court: the four rounds roll
through their own band of the ladder and stop, and what you watched land is what walks on
(main.js hands the settled rungs to startMatch). The rows are built in main.js from
config.CUP_ROUNDS, so a round added there needs no markup. -->
<div id="bracket">
<div class="hdr"><button class="chev" id="brBack">&lt;</button><h2>THE DRAW</h2></div>
<h3>FOUR ROUNDS<span id="brState">DRAWING…</span></h3>
<div id="cupRows"></div>
<div class="foot">
<p id="brSum"></p>
<button class="btn big" id="cupGo" disabled>ENTER THE DRAW</button>
</div>
</div>
<!-- THE TRAINING COURT's opponent picker: the whole ladder face-up, tap a body to drill it.
Built in main.js from config's roster (matchFoe/LADDER), so a new rung needs no markup. -->
<div id="train">
@@ -897,6 +854,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
</div>
</div>
</div>
<script type="module" src="src/main.js?v=328"></script>
<script type="module" src="src/main.js?v=329"></script>
</body>
</html>