Deck status (Idea/Building/Built/Retired) and pulled-card tracking

Only building and built decks now claim owned copies, so several idea
decks can share one copy without an over-assignment warning. Deck cards
track how many copies are physically pulled: physical decks list cards
to pull with their source (a storage box, or another deck to take a copy
from), and idea decks split cards into available / in other decks / not
owned. The deck list shows status chips with to-pull counts, filters by
status, and collapses retired decks. Status and pulled counts sync,
which bumps the library document to version 4.

Existing decks migrate as ideas.

Closes #25

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 22:35:41 +00:00
parent eb342f5fbb
commit 99a579a697
20 changed files with 1087 additions and 103 deletions

View File

@@ -1715,6 +1715,78 @@ tbody tr:hover {
color: var(--text-strong);
}
/* A deck that's an idea or retired: listed, but holding no copies. */
.deck-chip.deck-chip-idea,
.badge.deck-chip-idea {
border-style: dashed;
color: var(--muted);
}
/* ============================================================
Deck status: Idea / Building / Built / Retired
============================================================ */
.deck-status-chip {
display: inline-flex;
align-items: center;
border-radius: var(--radius-pill);
padding: 1px 8px;
font-size: 12px;
font-weight: 600;
white-space: nowrap;
border: 1px solid var(--border);
color: var(--muted);
margin-right: 4px;
}
.deck-status-chip.idea {
border-style: dashed;
}
.deck-status-chip.building {
border-color: var(--warn);
color: var(--warn);
}
.deck-status-chip.built {
border-color: var(--success);
background: var(--success);
color: #fff;
}
.deck-status-chip.retired {
color: var(--faint);
}
.deck-status-hint {
flex-basis: 100%;
font-size: var(--fs-caption);
}
.deck-gallery-retired {
margin-top: var(--space-5);
}
.deck-gallery-retired > summary {
cursor: pointer;
font-weight: 600;
color: var(--muted);
margin-bottom: var(--space-3);
}
/* Where a deck card's copies are: the "To pull" source and its action. */
.whereabouts {
display: inline-flex;
flex-wrap: wrap;
align-items: center;
gap: 4px 6px;
font-size: 12px;
}
.whereabouts.compact {
font-size: 11px;
}
.pull-source {
color: var(--text);
}
button.pull-action {
padding: 1px 8px;
font-size: 11px;
font-weight: 600;
}
/* ============================================================
Bulk-selection action bar (Library tab)
============================================================ */