Every card wears its FAQ seal; library cards enlarge above the booklet
The FAQ affordance moves onto the card itself: a small dark seal in the corner of any card with official rulings, everywhere cards render — hand, inspector, peek, final reveal, discard pile, card library — opening the rulings modal on tap (the link, never the text: card faces stay verbatim card text). The separate inspector buttons and library chips retire in its favor. And clicking a library card mid-game no longer summons the App-level inspector beneath the help modal, greyed out and useless — the library enlarges its card in its own overlay, centered above the booklet, seal included. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
4833a229e1
commit
5375941ed3
@@ -757,7 +757,7 @@
|
||||
</header>
|
||||
<div class="discard-grid">
|
||||
{#each [...view.discardPile].reverse() as card (card.instanceId)}
|
||||
<Card {card} onclick={() => (peekCard = card)} />
|
||||
<Card {card} onclick={() => (peekCard = card)} onfaq={(id) => (faqCardId = id)} />
|
||||
{/each}
|
||||
{#if view.discardPile.length === 0}
|
||||
<span class="discard-empty">Nothing has been cast away yet.</span>
|
||||
@@ -770,11 +770,8 @@
|
||||
{#if peekCard}
|
||||
<div class="inspector" role="img" aria-label="displayed card, enlarged">
|
||||
<button class="inspector-close" onclick={() => { peekCard = null; peekCreatureId = null; }} aria-label="hide card">×</button>
|
||||
<div class="inspector-card"><Card card={peekCard} /></div>
|
||||
<div class="inspector-card"><Card card={peekCard} onfaq={(id) => (faqCardId = id)} /></div>
|
||||
{#if peekNote}<div class="peek-note">{peekNote}</div>{/if}
|
||||
{#if cardDef(peekCard.cardId).faqRulings.length > 0}
|
||||
<button class="faq-link" onclick={() => (faqCardId = peekCard!.cardId)}>Official FAQ</button>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
@@ -1340,11 +1337,8 @@
|
||||
<div class="inspector" role="img" aria-label="selected card, enlarged">
|
||||
<button class="inspector-close" onclick={() => (inspectorHidden = true)} aria-label="hide enlarged card">×</button>
|
||||
<div class="inspector-card">
|
||||
<Card card={selectedCard} />
|
||||
<Card card={selectedCard} onfaq={(id) => (faqCardId = id)} />
|
||||
</div>
|
||||
{#if cardDef(selectedCard.cardId).faqRulings.length > 0}
|
||||
<button class="faq-link" onclick={() => (faqCardId = selectedCard!.cardId)}>Official FAQ</button>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
@@ -1364,7 +1358,7 @@
|
||||
</span>
|
||||
<div class="reveal-cards">
|
||||
{#each view.revealedHands[p.id] ?? [] as card (card.instanceId)}
|
||||
<Card {card} onclick={() => (peekCard = card)} />
|
||||
<Card {card} onclick={() => (peekCard = card)} onfaq={(id) => (faqCardId = id)} />
|
||||
{/each}
|
||||
{#if (view.revealedHands[p.id] ?? []).length === 0}
|
||||
<span class="reveal-empty">empty-handed</span>
|
||||
@@ -1389,6 +1383,7 @@
|
||||
glowing={interruptCards.some((c) => c.instanceId === card.instanceId)}
|
||||
charges={view.wandCharges[card.instanceId] ?? null}
|
||||
onclick={() => selectCard(card)}
|
||||
onfaq={(id) => (faqCardId = id)}
|
||||
/>
|
||||
{/each}
|
||||
</div>
|
||||
@@ -1988,21 +1983,6 @@
|
||||
}
|
||||
.discard-empty { font-family: "Caveat", cursive; color: #8a7a5e; font-size: 1.1rem; }
|
||||
|
||||
.faq-link {
|
||||
display: block;
|
||||
margin: 0.35rem 0 0 auto;
|
||||
background: #2b2218;
|
||||
color: #e8dfc6;
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
font-family: "Oswald", sans-serif;
|
||||
font-size: 0.62rem;
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
padding: 0.25rem 0.5rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
.faq-link:hover { background: #43331f; }
|
||||
.peek-note {
|
||||
margin-top: 0.4rem;
|
||||
background: #2b2218;
|
||||
|
||||
Reference in New Issue
Block a user