/* global React */ // Display name + blurb on the marketing surface; href points at the actual editor template. const DECKS = [ { id:'privacy-breach', name:'Privacy Breach', blurb:"Exploding Kittens/Werewolf style. Custom roles, same endless fun.", bg:'var(--joker)', fg:'var(--paper-bright)', pip:'★', pipColor:'var(--marigold)', sticker:'BESTSELLER', from:'$not sure yet' }, { id:'poker-deck', name:'Poker Deck', blurb:'A full 54-card deck. Court cards become your people; pips stay classic.', bg:'var(--card-red)', fg:'var(--paper-bright)', pip:'♥', pipColor:'var(--marigold)', sticker:null, from:'$not sure yet' }, { id:'guess-who', name:'Guess Who?', blurb:'Twenty-four faces of your favourite people.', bg:'var(--mint)', fg:'var(--ink)', pip:'♦', pipColor:'var(--card-red)', sticker:null, from:'$not sure yet' }, { id:'personalised-cards', name:'Personalised Cards', blurb:'Four styles — Classic, Archive, Sports Card, Pokémon. Pick your look.', bg:'var(--marigold)', fg:'var(--ink)', pip:'♠', pipColor:'var(--ink)', sticker:'NEW', from:'$not sure yet', href:'personalised-cards.html' }, { id:'make-your-own', name:'Make your own', blurb:'Blank canvas. Pure freedom. You bring the rules.', bg:'var(--paper-bright)', fg:'var(--ink)', pip:'♣', pipColor:'var(--card-red)', sticker:null, from:'$not sure yet' }, ]; function DeckPicker() { const [active, setActive] = React.useState(null); return (
Pick your format

Five flavours of deck.

Each editor is purpose-built. Start anywhere — you can swap formats before checkout.

All formats →
{DECKS.map((d, i)=>(
setActive(d.id)} onMouseLeave={()=>setActive(null)} className="deck-card" style={{ position:'relative', background:d.bg, color:d.fg, border:'3px solid var(--ink)', borderRadius:'var(--r-card)', padding:'22px 18px 24px', boxShadow: active===d.id ? '10px 10px 0 var(--ink)' : '6px 6px 0 var(--ink)', transform: active===d.id ? `translate(-3px,-3px) rotate(${(i-2)*1.2}deg)` : `rotate(${(i-2)*1.2}deg)`, transition:'all 220ms var(--ease-spring)', display:'flex', flexDirection:'column', minHeight:280, }}> {d.sticker && ( ★ {d.sticker} )}
{d.pip}
{d.name}

{d.blurb}

{window.deckById && window.deckById(d.id) ? 'FROM ' + window.formatAUD(window.deckById(d.id).price) : d.from}
{d.id==='privacy-breach' && ( { e.preventDefault(); e.stopPropagation(); window.open(window.EDITOR_BASE + '/how-to-play/privacy-breach.html', '_blank'); }} style={{ display:'inline-flex', alignItems:'center', gap:6, background:'var(--paper-bright)', color:'var(--ink)', border:'2px solid var(--ink)', borderRadius:999, boxShadow:'2px 2px 0 var(--ink)', fontFamily:'var(--font-mono)', fontSize:11, fontWeight:700, letterSpacing:'.08em', textTransform:'uppercase', padding:'5px 12px', cursor:'pointer', alignSelf:'flex-start', }} >▸ How to play Privacy Breach / Exploding Kittens )}
))}
); } window.DeckPicker = DeckPicker;