diff --git a/PROJECT.md b/PROJECT.md
index 878305c..0c31397 100644
--- a/PROJECT.md
+++ b/PROJECT.md
@@ -491,6 +491,18 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu
`RETURNED`, `DOUBLE KILL`) is a footnote to something you already watched happen. Sharing the loud
FACE with the milestone cards is right; sharing their SIZE made every footnote read as a milestone.
+## Session log: training pays a quarter, the bar wears its endpoints (2026-08-29, the batch's two discussions, both go)
+
+- **THE TRAINING COURT PAYS A QUARTER.** Zero pay made it feel pointless in a meta game (his
+ words) — but full pay would make the no-permadeath, pick-your-body grind the optimal one.
+ award() now quarters (rounds) training amounts instead of muting them; drill, bench and test
+ mode stay muted. The footer says "NO RUN, NO DEATH — REPS PAY ¼ XP", the mode's one-time modal
+ agrees, and training gained real practice value anyway since bodies train at their band's true
+ tempo. The "NOTHING IS BANKED" half is still true: no run, no board, no ladder.
+- **THE BAR WEARS ITS ENDPOINTS**: "20 ▓▓░░ 21" on the plaque and the card (MAX at the cap) —
+ he read the bare bar as total progress; the two numbers say "fill toward the next level"
+ without a word of explanation. The card keeps its words and the CAREER bar as the long form.
+
## Session log: the licence, the peer line, the steward's vest (2026-08-29, Oliver's small-finds batch)
Three of five items from his post-merge test built (training xp and the level/xp display are
diff --git a/index.html b/index.html
index 04e3451..d2b6574 100644
--- a/index.html
+++ b/index.html
@@ -364,7 +364,12 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
white-space: nowrap; overflow: hidden; }
#plLv { grid-area: lv; align-self: start; font: 400 26px Bangers, cursive; color: var(--acid);
letter-spacing: 1.5px; text-decoration: none; text-shadow: 2px 2px 0 rgba(0,0,0,0.5); }
- #plRow { grid-area: bar; display: block; width: auto; margin-top: 15px; }
+ /* the bar wears its ENDPOINTS — "20 ▓▓░░ 21" says "fill toward the next level" without a
+ word of explanation (Oliver read the bare bar as total progress) */
+ #plRow { grid-area: bar; display: flex; align-items: center; gap: 7px; width: auto;
+ margin-top: 15px; }
+ #plRow u, #cdBar u { font: 700 9px Silkscreen, monospace; color: var(--cream);
+ text-decoration: none; text-shadow: 1px 1px 0 rgba(0,0,0,0.5); }
/* NO nowrap here: the longest goal line is ~380px and a nowrap child sets the CARD's
min-content past the viewport — that was the phantom horizontal scrollbar Oliver spotted */
/* LITERAL gold — there is no --warm in the page palette (UI.warm is a CANVAS colour), and an
@@ -377,6 +382,7 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
#plRow s, #cdBar s, #cdCareer s { flex: 1; height: 6px; background: rgba(255,255,255,0.10);
border: 1px solid var(--line); text-decoration: none; display: block; }
#cdBar s { height: 8px; }
+ #cdBar { display: flex; align-items: center; gap: 8px; }
#cdCareer { display: flex; align-items: center; gap: 8px; }
#cdCareer u { font: 700 8px Silkscreen, monospace; color: var(--dim); text-decoration: none;
letter-spacing: 1px; }
@@ -615,7 +621,7 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
LEVEL 1
-
+ 12
>
@@ -740,7 +746,8 @@ if (location.hostname !== 'splatter-tennis.wuwi.one' && !window.Capacitor?.isNat
LEVEL 1
-