From 4cae97ab444bb2d4aa5e40800ade9819b5266265 Mon Sep 17 00:00:00 2001 From: rgriffith Date: Sun, 5 Apr 2026 10:39:18 -0400 Subject: [PATCH] fix(lan-client): compact phase pills, wrap NEXT PHASE/NEXT TURN labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The phase track (BEGIN · MAIN 1 · COMBAT · END) was losing labels to ellipsis on narrow top bars, and the primary action buttons were clipping "NEXT PHASE"/"NEXT TURN" because they had white-space: nowrap and a fixed height. .phase-step: - tighter padding (1px 5px) and gap (2px) - no letter-spacing, smaller border-radius, flex-shrink: 1 so pills compress uniformly when the top bar is crowded - merged duplicate .phase-step.active rule and made it bolder so the active step still reads well after the shrink .btn-phase (NEXT PHASE / NEXT TURN): - white-space: normal + word-break: break-word enable two-line wrap - height: auto + min-height: 34px lets the label breathe inside the 44px top bar - min-width: 64px / max-width: 80px keeps the buttons square-ish - display: flex centers the wrapped text vertically & horizontally - align-items: stretch on .top-bar-actions so both buttons match the tallest sibling's height Co-Authored-By: Claude Opus 4.6 --- lan-client/style.css | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/lan-client/style.css b/lan-client/style.css index 57aa678..3f0bb07 100644 --- a/lan-client/style.css +++ b/lan-client/style.css @@ -218,23 +218,24 @@ input { font-family: inherit; } } .phase-step { - flex: 1; + flex: 1 1 0; display: flex; align-items: center; justify-content: center; - gap: 3px; - padding: 3px 5px; + gap: 2px; + padding: 1px 5px; font-size: 10px; font-weight: 600; color: var(--color-text-faint); - border-radius: var(--radius-sm); + border-radius: 3px; cursor: pointer; white-space: nowrap; text-transform: uppercase; - letter-spacing: 0.04em; + letter-spacing: 0; transition: background 0.15s, color 0.15s; position: relative; min-width: 0; + flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; } @@ -244,7 +245,12 @@ input { font-family: inherit; } color: var(--color-text-muted); } -.phase-step.active { color: #fff; } +.phase-step.active { + color: #fff; + padding: 1px 6px; + font-weight: 700; +} + .phase-step.done { color: var(--color-text-faint); opacity: 0.5; } .phase-connector { @@ -258,6 +264,7 @@ input { font-family: inherit; } display: flex; gap: 4px; flex-shrink: 0; + align-items: stretch; } .btn-phase { @@ -266,11 +273,23 @@ input { font-family: inherit; } border: 1px solid var(--color-border); border-radius: var(--radius-md); color: var(--color-text-muted); - font-size: 10px; + font-size: 11px; font-weight: 600; text-transform: uppercase; - letter-spacing: 0.05em; - white-space: nowrap; + letter-spacing: 0.03em; + /* Allow two-word labels (Next Phase / Next Turn) to wrap on two lines + instead of being clipped or forcing a wide button. */ + white-space: normal; + word-break: break-word; + text-align: center; + line-height: 1.15; + display: flex; + align-items: center; + justify-content: center; + height: auto; + min-height: 34px; + min-width: 64px; + max-width: 80px; } .btn-phase:hover {