Condense UI labels and align obstacle statistics
This commit is contained in:
@@ -236,7 +236,7 @@
|
||||
padding: 1.25rem;
|
||||
background: var(--well);
|
||||
display: grid;
|
||||
grid-template-columns: 0.8fr 2fr 1fr 1fr;
|
||||
grid-template-columns: 0.8fr 2fr 2fr;
|
||||
gap: 1rem;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
@@ -335,11 +335,17 @@
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.obstacle-value-display {
|
||||
.obstacle-stats {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
align-self: start;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.obstacle-value-display {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
background: color-mix(in srgb, var(--accent) 5%, transparent);
|
||||
border: 1px dashed var(--edge-accent);
|
||||
@@ -348,10 +354,9 @@
|
||||
}
|
||||
|
||||
.obstacle-successes-display {
|
||||
align-self: start;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
background: color-mix(in srgb, var(--success) 5%, transparent);
|
||||
border: 1px dashed color-mix(in srgb, var(--success) 30%, transparent);
|
||||
@@ -361,7 +366,7 @@
|
||||
|
||||
.obstacle-successes-display .val-number {
|
||||
color: var(--success);
|
||||
font-size: 1.5rem;
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
.val-label {
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
e.currentTarget.classList.remove("dragging");
|
||||
}} />
|
||||
{:else}
|
||||
<p class="empty-text text-center">Your hand is empty! (You draw cards when playing cards that match the suit color of the obstacle.)</p>
|
||||
<p class="empty-text text-center">Empty hand. Match an obstacle’s color to draw cards.</p>
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
<div class="card glass-panel obstacle-list-card">
|
||||
<div class="card-header">
|
||||
<h3>🌊 The Obstacle List</h3>
|
||||
<h3>🌊 Obstacles</h3>
|
||||
<span class="deck-counter">🎴 Deck: {state.game.deck_cards ? JSON.parse(state.game.deck_cards).length : 0} cards left</span>
|
||||
</div>
|
||||
<ObstacleBoard {state} />
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
</script>
|
||||
|
||||
<div class="between-scenes-view text-center">
|
||||
<h2>Between Scenes (Scene #{state.game.current_scene_number} Concluded)</h2>
|
||||
<h2>Between Scenes · Scene {state.game.current_scene_number}</h2>
|
||||
<p class="description">Upkeep and tallying. Nominate a crewmate to Rank Up, redraw hand cards for resting Deep players, and ready up for the next scene.</p>
|
||||
|
||||
{#if state.player.is_dead && !state.player.is_ghost && !state.player.needs_reroll}
|
||||
@@ -201,7 +201,7 @@
|
||||
<div class="between-grid" class:single={state.game.phase !== 'deep_upkeep'}>
|
||||
<!-- Ranks and Voting Card -->
|
||||
<div class="card glass-panel voting-card">
|
||||
<h3>1. Pirate Ranking (Voting)</h3>
|
||||
<h3>Rank Up</h3>
|
||||
<p class="section-desc">Every player (including the Deep) nominates one crewmate who best exemplified pirate qualities in the previous scene. Previous Deep players are ineligible to receive votes.</p>
|
||||
|
||||
{#if state.game.phase === 'deep_upkeep'}
|
||||
@@ -239,7 +239,7 @@
|
||||
<!-- Resting Deep Player Card — only the actual hand refresh, during deep_upkeep -->
|
||||
{#if state.game.phase === 'deep_upkeep'}
|
||||
<div class="card glass-panel deep-rest-card">
|
||||
<h3>2. Resting Deep Upkeep</h3>
|
||||
<h3>Refresh Hand</h3>
|
||||
|
||||
{#if state.player.role === "deep"}
|
||||
<div class="deep-rest-panel glass-panel">
|
||||
@@ -260,7 +260,7 @@
|
||||
<p class="info-text text-center" style="margin-top: 1rem;">Waiting for the rest of the crew to finish upkeep...</p>
|
||||
{:else}
|
||||
<p class="info-text" style="margin-top: 1rem;">
|
||||
<strong>Your Hand Size Limit: {maxHandSize} cards.</strong><br/>
|
||||
<strong>Hand Limit: {maxHandSize} cards.</strong><br/>
|
||||
Drag cards to the "Discard Pile" zone to discard them, or click them to move them.
|
||||
</p>
|
||||
|
||||
@@ -307,7 +307,7 @@
|
||||
{/if}
|
||||
|
||||
<button class="btn btn-primary mt-4 w-full" on:click={confirmRefresh} disabled={confirming || isOverLimit}>
|
||||
Confirm Hand Refresh
|
||||
Refresh Hand
|
||||
</button>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
{/if}
|
||||
|
||||
<div class="sheet-group">
|
||||
<h4>Description:</h4>
|
||||
<h4>Description</h4>
|
||||
<p><strong>Look:</strong> {target.avatar_look}</p>
|
||||
<p><strong>Smell:</strong> {target.avatar_smell}</p>
|
||||
<p><strong>First Words:</strong> "{target.first_words}"</p>
|
||||
@@ -130,7 +130,7 @@
|
||||
|
||||
{#if target.other_like || target.other_hate}
|
||||
<div class="sheet-group margin-top">
|
||||
<h4>What the Crew Thinks:</h4>
|
||||
<h4>Crew Impressions</h4>
|
||||
{#if target.other_like}
|
||||
<p><strong>👍 Likes:</strong> "{target.other_like}" <span class="text-muted">— {getPlayerName(target.other_like_from_player_id)}</span></p>
|
||||
{/if}
|
||||
@@ -143,7 +143,7 @@
|
||||
<!-- Secret techniques are visible only on your own sheet -->
|
||||
{#if isSelf}
|
||||
<div class="sheet-group margin-top">
|
||||
<h4>Assigned Secret Techniques (J/Q/K):</h4>
|
||||
<h4>Secret Techniques</h4>
|
||||
<ul class="techniques-list-sheet">
|
||||
<li><strong>Jack (J):</strong> "{target.tech_jack}"</li>
|
||||
<li><strong>Queen (Q):</strong> "{target.tech_queen}"</li>
|
||||
|
||||
@@ -86,9 +86,10 @@
|
||||
<p class="desc">{obs.description}</p>
|
||||
</div>
|
||||
|
||||
<div class="obstacle-stats">
|
||||
<!-- Value Display -->
|
||||
<div class="obstacle-value-display text-center" use:tooltip={VALUE_HINT}>
|
||||
<span class="val-label">Current Difficulty</span>
|
||||
<span class="val-label">Difficulty</span>
|
||||
<span class="val-number">
|
||||
{#if is_face_active}
|
||||
{challengedRank !== null ? `${challengedRank} (Rat's Rank)` : "Challenged Rat's Rank"}
|
||||
@@ -104,6 +105,8 @@
|
||||
<span class="val-number">{success_count} / {state.players.length}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{#if is_completed && state.player.role === 'deep'}
|
||||
<div class="clear-obstacle-row text-center">
|
||||
<button class="btn btn-success btn-full" on:click={clearObstacle}>Clear Obstacle</button>
|
||||
|
||||
@@ -6,10 +6,11 @@
|
||||
// - Add a CHANGELOG entry only when a commit changes something players can
|
||||
// see. Skip refactors, tests, and tooling. Keep wording player-facing.
|
||||
|
||||
export const VERSION = 26;
|
||||
export const VERSION = 27;
|
||||
|
||||
// Newest first. Each entry: { version, date: 'YYYY-MM-DD', changes: [string, ...] }.
|
||||
export const CHANGELOG = [
|
||||
{ version: 27, date: '2026-09-04', changes: ['Shorter labels make the table easier to scan.', 'Difficulty and Successes now line up side by side, including on small screens.'] },
|
||||
{
|
||||
version: 25,
|
||||
date: '2026-07-10',
|
||||
|
||||
Reference in New Issue
Block a user