DepthChart maps the mouse to SVG space with getBoundingClientRect, which
assumes the drawing fills the container. The viewBox (960x380) is narrower
than the container, so preserveAspectRatio centers it with ~127px of side
padding and the crosshair drifted ~100px from the cursor near the edges.
Map through the SVG's own getScreenCTM().inverse() so it stays exact
regardless of letterboxing.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>