Method
This is the trust page. Everything you see on a card — its rarity class, its “1 in X” combo odds, its entropy score — is arithmetic you can reproduce by hand. Nothing here is a vibe.
A card is a composite
Every card draws one value from each of 8 independent layers. The three optional layers can also come up empty — and “empty” is itself a weighted outcome, which is exactly what makes a missing layer a rarity signal.
Rarity class
Class looks only at the optional layers. It is permanent — it never changes as more cards get revealed. Core layers (skin, hair, facial, kit, backdrop) do not move the class.
| Foil | Points | Club mark | Points |
|---|---|---|---|
| void | 6 | gilt | 3 |
| prism | 5 | legacy | 2 |
| gold | 4 | standard | 1 |
| holo | 2 | missing | 0 |
| missing | 0 |
Combo odds
Each layer is independent and uniform, so the probability of an exact combination is a plain product — not a sample, no black box:
comboOdds = 1 / P(combo)
“1 in X” is the theoretical number of cards you'd have to pull to expect this exact layer set again. Because it multiplies every layer, even a “common” card is a genuinely specific object — the class badge and the combo odds are measuring two different things.
Entropy score
The open-rarity number is the information content of the combo, normalized to 0–1 across the print run:
openRarity = (surprisal − min) / (max − min)
What is real, what is not
- Synthetic data. The set is 500 fictional cards in a fictional league (1990–2026), generated from a seeded PRNG (seed 20260914) so the whole run is deterministic and reproducible. No real players, no real career stats.
- The rarity math is real. The probabilities, class thresholds and combo-odds formula above are exactly what the app computes — you can verify any card by hand from its layer breakdown.
- Appearances and goals are a judgement, not a measurement: they are sampled to feel plausible for each position (forwards score, keepers don't), and the “overall” rating is a derived flavour number, not a claim about ability.
- On-chain later. v1 is local mock data. The reveal state lives in your browser; nothing is minted yet. When cards move on-chain, the trait table and rarity formula are the contract — they don't change.