The public build sets ACTIVE_CHAIN_ID to Arbitrum Sepolia (421614), which has
no deployment and isn't in the prod wagmi config, so useReadContracts never
resolved -> Campaigns/Markets/Positions hung on skeletons forever.
Add CAMPAIGN_SEED (mirrors script/Deploy.s.sol's launch set) and HAS_LIVE_VAULT.
When no vault is reachable, useCampaigns returns the seeded launch set instead
of reading on-chain, and the position/balance reads are disabled so they can't
hang against an unreachable chain. Live anvil/dev path is unchanged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Switch wallet connect default to Robinhood Chain mainnet (4663); keep testnet
and anvil selectable. Header chip and hero folio now read Mainnet.
- New CyberGrid fx layer: survey lines, cross marks, corner locators, vertical
kanji + scramble glyphs across Markets/Campaigns/Positions/Partners/AppBoard,
echoing the hero's cyberpunk instrumentation.
- New DepthCanyon: 2D isometric voxel crater hero, single contained core glow
(no bleed onto copy).
- Real per-token market data via Dexscreener /tokens/{mint} on canonical xStock
mints; realistic prices/volume/liquidity.
- Remove VAULT address line from footer.
- Deploy target -> hoodquidity.com.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>