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
@@ -11,6 +11,7 @@
|
||||
glowing = false,
|
||||
charges = null,
|
||||
onclick,
|
||||
onfaq,
|
||||
}: {
|
||||
card: CardInstance;
|
||||
selected?: boolean;
|
||||
@@ -20,6 +21,8 @@
|
||||
/** Playable RIGHT NOW out of turn — a golden pulse invites the tap. */
|
||||
glowing?: boolean;
|
||||
charges?: number | null;
|
||||
/** When set, cards with official FAQ rulings wear a tappable FAQ seal. */
|
||||
onfaq?: (cardId: string) => void;
|
||||
onclick?: () => void;
|
||||
} = $props();
|
||||
|
||||
@@ -75,6 +78,13 @@
|
||||
{#if displayed}
|
||||
<span class="badge">DISPLAYED{charges != null ? ` · ${charges}` : ""}</span>
|
||||
{/if}
|
||||
{#if onfaq && def.faqRulings.length > 0}
|
||||
<span
|
||||
class="faq-seal" role="button" tabindex="-1"
|
||||
onclick={(ev) => { ev.stopPropagation(); onfaq?.(card.cardId); }}
|
||||
onkeydown={() => {}}
|
||||
>FAQ</span>
|
||||
{/if}
|
||||
</button>
|
||||
|
||||
<style>
|
||||
@@ -202,6 +212,21 @@
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.faq-seal {
|
||||
position: absolute;
|
||||
bottom: 0.15rem;
|
||||
right: 0.2rem;
|
||||
background: #2b2218;
|
||||
color: #e8dfc6;
|
||||
font-family: "Oswald", sans-serif;
|
||||
font-size: 0.42rem;
|
||||
letter-spacing: 0.12em;
|
||||
padding: 0.1rem 0.25rem;
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
opacity: 0.85;
|
||||
}
|
||||
.faq-seal:hover { opacity: 1; }
|
||||
.card.glowing {
|
||||
box-shadow: 0 0 0 2px #c9a72a, 0 0 14px 3px rgba(201, 167, 42, 0.55);
|
||||
animation: card-glow 1.4s ease-in-out infinite;
|
||||
@@ -211,7 +236,22 @@
|
||||
50% { box-shadow: 0 0 0 2px #c9a72a, 0 0 6px 1px rgba(201, 167, 42, 0.3); }
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.card.glowing { animation: none; }
|
||||
.faq-seal {
|
||||
position: absolute;
|
||||
bottom: 0.15rem;
|
||||
right: 0.2rem;
|
||||
background: #2b2218;
|
||||
color: #e8dfc6;
|
||||
font-family: "Oswald", sans-serif;
|
||||
font-size: 0.42rem;
|
||||
letter-spacing: 0.12em;
|
||||
padding: 0.1rem 0.25rem;
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
opacity: 0.85;
|
||||
}
|
||||
.faq-seal:hover { opacity: 1; }
|
||||
.card.glowing { animation: none; }
|
||||
.card { transition: none; }
|
||||
.card:hover, .card.selected, .card.attached { transform: none; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user