/* Sybilhunt — modal bodies + partner/team data. window-exported. */

const SH_PARTNERS_ACTIVE = [
  { name: 'Polymarket',  cat: 'Prediction market',     accent: 'var(--cyan-500)',   logoUrl: 'https://github.com/Polymarket.png?size=64', pool: '$5,000,000', startDays: 20, live: true, endDays: 19,
    desc: 'The largest on-chain prediction market. Polymarket is opening a hunt to clear out wash-trading and reward-farming clusters before its next incentive distribution — keeping volume and user metrics honest.' },
  { name: 'Kalshi',      cat: 'Event exchange',         accent: 'var(--signal-500)', logoUrl: 'assets/partners/kalshi-k.png', pool: '$3,000,000', startDays: 62,
    desc: 'A regulated US event exchange. Kalshi is preparing a sybil sweep ahead of a community rewards round, targeting coordinated multi-account actors that distort market participation data.' },
  { name: 'Gitcoin',     cat: 'Sybil resistance',       accent: 'var(--signal-500)', logoUrl: 'https://github.com/gitcoinco.png?size=64', pool: '$1,200,000', startDays: 34,
    desc: 'The home of quadratic funding. Gitcoin runs sybil hunts every grants round — fake donors inflate matching pools and steal funds from real public-goods projects. This hunt protects the next round.' },
  { name: 'EigenLayer',  cat: 'Restaking · airdrop',    accent: 'var(--signal-500)', logoUrl: 'https://github.com/Layr-Labs.png?size=64', pool: '$8,000,000', startDays: 95,
    desc: 'The restaking layer for Ethereum. Ahead of a major airdrop, EigenLayer is funding the biggest hunt yet — large bridged-wallet clusters farm restaking points at scale, and the pool rewards whoever maps them.' },
];

const SH_PARTNERS_PAST = [
  { name: 'Arbitrum',    cat: 'L2 · airdrop sybil-filter', accent: 'var(--cyan-500)',   logoUrl: 'https://github.com/OffchainLabs.png?size=64' },
  { name: 'Optimism',    cat: 'L2 · airdrop',              accent: 'var(--coral-500)',  logoUrl: 'https://github.com/ethereum-optimism.png?size=64' },
  { name: 'Hop Protocol',cat: 'Bridge · sybil hunt',       accent: 'var(--signal-500)', logoUrl: 'https://github.com/hop-protocol.png?size=64' },
  { name: 'LayerZero',   cat: 'Interop · self-report',     accent: 'var(--ink-200)',    logoUrl: 'https://github.com/LayerZero-Labs.png?size=64' },
  { name: 'zkSync',      cat: 'L2 · airdrop rules',        accent: 'var(--cyan-500)',   logoUrl: 'https://github.com/matter-labs.png?size=64' },
  { name: 'Starknet',    cat: 'L2 · airdrop',              accent: 'var(--coral-500)',  logoUrl: 'https://github.com/starkware-industries.png?size=64' },
  { name: 'Celestia',    cat: 'DA · airdrop',              accent: 'var(--ink-200)',    logoUrl: 'https://github.com/celestiaorg.png?size=64' },
  { name: 'Galxe',       cat: 'On-chain credentials',      accent: 'var(--cyan-500)',   logoUrl: 'https://github.com/galxe.png?size=64' },
  { name: 'Linea',       cat: 'L2 · airdrop',              accent: 'var(--ink-200)',    logoUrl: 'https://github.com/Consensys.png?size=64' },
  { name: 'Scroll',      cat: 'L2 · airdrop',              accent: 'var(--coral-500)',  logoUrl: 'https://github.com/scroll-tech.png?size=64' },
  { name: 'Blast',       cat: 'L2 · airdrop',              accent: 'var(--gold-500)',   logoUrl: 'https://github.com/blast-io.png?size=64' },
  { name: 'Wormhole',    cat: 'Interop · airdrop',         accent: 'var(--cyan-500)',   logoUrl: 'https://github.com/wormhole-foundation.png?size=64' },
];

const SH_STEPS = [
  { n: '01', t: 'Pick an active hunt',       d: 'Open a partner campaign — say, Polymarket. Inside: the pool size, the rules, and the kind of Sybils we\'re after.' },
  { n: '02', t: 'Analyze wallets & links',   d: 'Trace funding sources, transaction timing, shared contracts and behavioral patterns that tie accounts into a single cluster.' },
  { n: '03', t: 'Build the evidence',        d: 'Assemble the cluster: the set of accounts one actor controls, and the on-chain proof that links them.' },
  { n: '04', t: 'Submit & claim your reward',d: 'Confirmed clusters split the pool by what they found. The earlier and sharper your report, the bigger your share.' },
];

function HowItWorksBody() {
  return (
    <div>
      <p style={{ fontSize: 18, color: 'var(--text-body)', marginBottom: 28 }}>
        Sybilhunt is a hunt for <strong style={{ color: 'var(--text-strong)' }}>Sybils</strong> — people who run dozens of accounts to drain rewards meant for real participants. You find them, and you take a share of the pool.
      </p>
      <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(220px, 1fr))', gap: 16 }}>
        {SH_STEPS.map((s) => (
          <div key={s.n} style={{ background: 'var(--surface-raised)', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-md)', padding: 20 }}>
            <div style={{ fontFamily: 'var(--font-mono)', fontWeight: 700, fontSize: 22, color: 'var(--signal-500)' }}>{s.n}</div>
            <div style={{ fontFamily: 'var(--font-display)', fontWeight: 600, fontSize: 17, color: 'var(--text-strong)', margin: '10px 0 8px' }}>{s.t}</div>
            <div style={{ fontSize: 14, color: 'var(--text-muted)', lineHeight: 1.55 }}>{s.d}</div>
          </div>
        ))}
      </div>
    </div>
  );
}

Object.assign(window, { SH_PARTNERS_ACTIVE, SH_PARTNERS_PAST, SH_STEPS, HowItWorksBody });
