> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sleuthintel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sleuth - Degen Edition

> Original Sleuth document.

<div style={{ margin: "-24px -32px", width: "calc(100% + 64px)" }}>
  <iframe title="Sleuth - Degen Edition" srcDoc={"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>SLEUTH \u00b7 Degen Edition</title>\n<link href=\"https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=Share+Tech+Mono&display=swap\" rel=\"stylesheet\">\n<style>\n:root{\n  --green:#00FF66; --green-dim:#00cc52; --green-glow:rgba(0,255,102,0.3);\n  --green-faint:rgba(0,255,102,0.06); --bg:#060606; --card:#0c0c0c;\n  --border:#1a1a1a; --text:#FFD700; --gold:#FFD700; --gold-glow:rgba(255,215,0,0.25);\n}\n*{margin:0;padding:0;box-sizing:border-box;}\nhtml{scroll-behavior:smooth;}\nbody{background:var(--bg);color:var(--text);font-family:'Share Tech Mono',monospace;line-height:1.65;overflow-x:hidden;}\n#rain{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;opacity:0.16;pointer-events:none;}\n.wrap{position:relative;z-index:1;max-width:1060px;margin:0 auto;padding:0 24px;}\n\n/* \u2500\u2500 Sticky numbered nav \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n#topnav{position:fixed;top:0;left:0;right:0;z-index:50;background:rgba(6,6,6,0.92);\n  backdrop-filter:blur(8px);border-bottom:1px solid var(--border);\n  transition:padding .25s ease;}\n#topnav .nav-inner{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:18px;\n  padding:18px 24px;transition:padding .25s ease;flex-wrap:nowrap;}\n#topnav .brand{font-family:'Orbitron',sans-serif;font-weight:900;color:var(--green);\n  letter-spacing:3px;font-size:1.05rem;text-shadow:0 0 12px var(--green-glow);white-space:nowrap;\n  transition:font-size .25s ease;}\n#topnav .navnums{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;flex:1;}\n#topnav .navnums::-webkit-scrollbar{display:none;}\n#topnav .navnums a{font-family:'Orbitron',sans-serif;font-weight:700;font-size:0.78rem;\n  color:var(--green-dim);text-decoration:none;border:1px solid var(--border);\n  padding:7px 11px;border-radius:3px;transition:all .2s ease;white-space:nowrap;\n  background:rgba(12,12,12,0.6);}\n#topnav .navnums a:hover{color:var(--green);border-color:var(--green-dim);box-shadow:0 0 10px var(--green-faint);}\n#topnav .navnums a.active{color:#060606;background:var(--green);border-color:var(--green);\n  text-shadow:none;box-shadow:0 0 14px var(--green-glow);}\n#topnav.compact .nav-inner{padding:8px 24px;}\n#topnav.compact .brand{font-size:0.85rem;}\n#topnav.compact .navnums a{font-size:0.68rem;padding:4px 8px;}\n\n/* \u2500\u2500 Hero \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.hero{min-height:92vh;display:flex;flex-direction:column;justify-content:center;align-items:center;\n  text-align:center;padding:140px 24px 60px;position:relative;z-index:1;}\n.hero h1{font-family:'Orbitron',sans-serif;font-weight:900;font-size:clamp(3rem,9vw,6.5rem);\n  color:var(--green);letter-spacing:14px;text-shadow:0 0 30px var(--green-glow),0 0 80px var(--green-faint);}\n.hero .sub{color:var(--gold);font-size:clamp(0.95rem,2vw,1.25rem);margin-top:18px;letter-spacing:2px;}\n.hero .sub2{color:var(--gold);margin-top:10px;font-size:0.95rem;}\n.hero .badges{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:34px;}\n.hero .badge{border:1px solid var(--green-dim);color:var(--green);padding:8px 16px;font-size:0.78rem;\n  border-radius:3px;background:rgba(0,255,102,0.04);letter-spacing:1px;}\n.hero .vtag{margin-top:40px;color:var(--gold);opacity:0.75;font-size:0.75rem;letter-spacing:2px;}\n\n/* \u2500\u2500 Sections \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.section{padding:90px 0 30px;scroll-margin-top:96px;opacity:0;transform:translateY(24px);\n  transition:opacity .7s ease,transform .7s ease;}\n.section.visible{opacity:1;transform:none;}\n.eyebrow{color:var(--gold);font-size:0.8rem;letter-spacing:3px;margin-bottom:10px;}\nh2{font-family:'Orbitron',sans-serif;font-weight:700;color:var(--green);font-size:clamp(1.5rem,3.4vw,2.3rem);\n  letter-spacing:2px;margin-bottom:22px;text-shadow:0 0 16px var(--green-faint);}\nh3{font-family:'Orbitron',sans-serif;font-weight:700;color:var(--gold);font-size:1.05rem;\n  letter-spacing:1.5px;margin:36px 0 14px;}\np{margin-bottom:16px;font-size:0.98rem;color:var(--gold);}\n.lead{font-size:1.08rem;color:var(--gold);}\nstrong{color:var(--green);font-weight:normal;}\nem{color:#ffffff;font-style:normal;}\n\n.card{background:var(--card);border:1px solid var(--border);border-left:2px solid var(--green-dim);\n  padding:22px 26px;margin:22px 0;border-radius:3px;}\n.card.gold{border-left-color:var(--gold);}\n.card h4{font-family:'Orbitron',sans-serif;color:var(--green);font-size:0.92rem;letter-spacing:1.5px;margin-bottom:10px;}\n.card.gold h4{color:var(--gold);}\n.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:22px 0;}\n.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:22px 0;}\n.grid2 .card,.grid3 .card{margin:0;}\n@media(max-width:760px){.grid2,.grid3{grid-template-columns:1fr;}}\n\n.statrow{display:flex;gap:18px;flex-wrap:wrap;margin:28px 0;}\n.stat{flex:1;min-width:150px;background:var(--card);border:1px solid var(--border);padding:20px;\n  text-align:center;border-radius:3px;}\n.stat .n{font-family:'Orbitron',sans-serif;font-weight:900;color:var(--green);font-size:1.7rem;\n  text-shadow:0 0 14px var(--green-glow);}\n.stat .l{color:var(--gold);font-size:0.72rem;letter-spacing:1.5px;margin-top:6px;}\n\ntable{width:100%;border-collapse:collapse;margin:22px 0;font-size:0.88rem;}\nth{color:var(--gold);text-align:left;padding:10px 12px;border-bottom:1px solid var(--green-dim);\n  letter-spacing:1px;font-weight:normal;font-size:0.8rem;}\ntd{padding:10px 12px;border-bottom:1px solid var(--border);}\ntr:hover td{background:var(--green-faint);}\ntd:first-child{color:var(--green);}\n.tablewrap{overflow-x:auto;}\n\nul{margin:0 0 18px 20px;}\nli{margin-bottom:9px;font-size:0.95rem;color:var(--gold);}\nli::marker{color:var(--green);}\n\n.ticker{overflow:hidden;border-top:1px solid var(--border);border-bottom:1px solid var(--border);\n  padding:13px 0;margin:54px 0 8px;white-space:nowrap;}\n.ticker .inner{display:inline-block;animation:tick 38s linear infinite;color:var(--green-dim);\n  font-size:0.82rem;letter-spacing:1px;}\n.ticker .inner span{margin-right:60px;}\n@keyframes tick{from{transform:translateX(0);}to{transform:translateX(-50%);}}\n\n.callout{border:1px solid var(--green-dim);background:rgba(0,255,102,0.04);padding:24px 28px;\n  margin:28px 0;border-radius:3px;}\n.callout .ct{font-family:'Orbitron',sans-serif;color:var(--green);letter-spacing:2px;font-size:0.95rem;margin-bottom:10px;}\n.compare{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:24px 0;}\n@media(max-width:760px){.compare{grid-template-columns:1fr;}}\n.compare .col{background:var(--card);border:1px solid var(--border);padding:22px;border-radius:3px;}\n.compare .col.bad{border-top:2px solid rgba(255,50,50,0.45);}\n.compare .col.good{border-top:2px solid var(--green);}\n.compare .col h4{font-family:'Orbitron',sans-serif;font-size:0.88rem;letter-spacing:1.5px;margin-bottom:12px;}\n.compare .col.bad h4{color:#ff4444;}\n.compare .col.good h4{color:var(--green);}\n.compare .col ul{margin-left:18px;}\n.compare .col li{font-size:0.88rem;}\n\n.flowline{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:24px 0;justify-content:center;}\n.flowline .node{border:1px solid var(--green-dim);color:var(--green);padding:10px 16px;border-radius:3px;\n  font-size:0.82rem;background:var(--card);letter-spacing:1px;}\n.flowline .arr{color:var(--gold);font-size:1rem;}\n\n#scrollTop{position:fixed;bottom:26px;right:26px;z-index:60;width:44px;height:44px;border-radius:3px;\n  border:1px solid var(--green-dim);background:rgba(6,6,6,0.9);color:var(--green);font-size:1.2rem;\n  cursor:pointer;opacity:0;pointer-events:none;transition:opacity .3s;}\n#scrollTop.visible{opacity:1;pointer-events:auto;}\nfooter{border-top:1px solid var(--border);margin-top:90px;padding:46px 0 60px;text-align:center;\n  color:var(--green-dim);font-size:0.8rem;letter-spacing:2px;position:relative;z-index:1;}\nfooter .fbrand{font-family:'Orbitron',sans-serif;font-weight:900;color:var(--green);font-size:1.3rem;\n  letter-spacing:6px;margin-bottom:12px;text-shadow:0 0 16px var(--green-glow);}\n\n.niches{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:22px 0;}\n@media(max-width:860px){.niches{grid-template-columns:repeat(2,1fr);}}\n.niche{background:var(--card);border:1px solid var(--border);padding:14px;border-radius:3px;}\n.niche .nn{font-family:'Orbitron',sans-serif;color:var(--gold);font-size:0.7rem;letter-spacing:2px;}\n.niche .nt{font-family:'Orbitron',sans-serif;color:var(--green);font-size:0.78rem;letter-spacing:1px;margin:6px 0 6px;}\n.niche p{font-size:0.74rem;margin:0;line-height:1.5;}\n.svgfig{background:var(--card);border:1px solid var(--border);border-radius:3px;padding:18px;margin:22px 0;overflow-x:auto;}\n.svgfig .cap{font-size:0.74rem;color:var(--gold);opacity:0.85;margin-top:10px;letter-spacing:1px;}\n.figtitle{font-family:'Orbitron',sans-serif;color:var(--gold);font-size:0.72rem;letter-spacing:3px;margin-bottom:12px;}\n.openmap{display:block;width:100%;background:rgba(0,255,102,0.05);border:1px solid var(--green-dim);\n  color:var(--green);font-family:'Orbitron',sans-serif;font-size:1rem;letter-spacing:3px;padding:22px;\n  margin:26px 0;border-radius:3px;cursor:pointer;transition:all .25s;text-shadow:0 0 10px var(--green-glow);}\n.openmap span{display:block;font-family:'Share Tech Mono',monospace;color:var(--gold);font-size:0.74rem;\n  letter-spacing:1px;margin-top:8px;text-shadow:none;}\n.openmap:hover{box-shadow:0 0 26px var(--green-faint);border-color:var(--green);}\n#mapmodal{position:fixed;inset:0;z-index:200;background:rgba(4,4,4,0.98);display:none;flex-direction:column;}\n#mapmodal.open{display:flex;}\n.mm-top{display:flex;justify-content:space-between;align-items:center;padding:14px 22px;border-bottom:1px solid var(--border);}\n.mm-title{font-family:'Orbitron',sans-serif;color:var(--green);letter-spacing:3px;font-size:0.85rem;text-shadow:0 0 12px var(--green-glow);}\n.mm-controls{display:flex;gap:8px;}\n.mm-controls button{width:38px;height:38px;background:var(--card);border:1px solid var(--green-dim);color:var(--green);\n  font-size:1.1rem;cursor:pointer;border-radius:3px;font-family:'Share Tech Mono',monospace;}\n.mm-controls button:hover{box-shadow:0 0 12px var(--green-faint);}\n#fullmap{flex:1;width:100%;cursor:grab;touch-action:none;}\n#fullmap:active{cursor:grabbing;}\n.mm-hint{text-align:center;color:var(--gold);font-size:0.72rem;letter-spacing:2px;padding:10px;border-top:1px solid var(--border);}\n@media(prefers-reduced-motion:reduce){\n  html{scroll-behavior:auto;}\n  .section{opacity:1;transform:none;transition:none;}\n  .ticker .inner{animation:none;}\n}\n\n#searchbox{position:relative;margin-left:auto;flex:0 0 auto;}\n#docsearch{background:var(--card);border:1px solid var(--border);color:var(--gold);font-family:'Share Tech Mono',monospace;font-size:0.8rem;padding:6px 12px;width:190px;outline:none;border-radius:2px;transition:border-color .2s,width .2s;}\n#docsearch:focus{border-color:var(--green);width:240px;}\n#docsearch::placeholder{color:#555;}\n#searchresults{display:none;position:absolute;top:calc(100% + 6px);right:0;width:340px;max-height:60vh;overflow-y:auto;background:var(--card);border:1px solid var(--green);z-index:999;box-shadow:0 8px 30px rgba(0,0,0,.7);}\n#searchresults.open{display:block;}\n#searchresults a{display:block;padding:9px 12px;border-bottom:1px solid var(--border);text-decoration:none;color:var(--gold);font-size:0.75rem;line-height:1.4;}\n#searchresults a:hover{background:#111;color:var(--green);}\n#searchresults a .rsec{color:var(--green);font-family:'Orbitron',sans-serif;font-size:0.68rem;display:block;margin-bottom:2px;}\n#searchresults a mark{background:transparent;color:var(--green);font-weight:bold;}\n#searchresults .noresult{padding:10px 12px;color:#666;font-size:0.75rem;}\n@media(max-width:820px){#docsearch{width:130px;}#docsearch:focus{width:160px;}#searchresults{width:280px;}}\n</style>\n</head>\n<body>\n<canvas id=\"rain\"></canvas>\n\n<nav id=\"topnav\">\n  <div class=\"nav-inner\">\n    <div class=\"brand\">SLEUTH \u00b7 DEGEN ED.</div>\n    <div class=\"navnums\">\n      <a href=\"#s01\" title=\"What Sleuth Is\">01</a><a href=\"#s02\" title=\"The Hive Mind\">02</a>\n      <a href=\"#s03\" title=\"The Tree of Knowledge\">03</a><a href=\"#s04\" title=\"Two Tokens\">04</a>\n      <a href=\"#s05\" title=\"The Epoch Engine\">05</a><a href=\"#s06\" title=\"Tiers\">06</a>\n      <a href=\"#s07\" title=\"Revenue\">07</a><a href=\"#s08\" title=\"Quality Economy\">08</a>\n      <a href=\"#s09\" title=\"Slashing\">09</a><a href=\"#s10\" title=\"Simulations\">10</a>\n      <a href=\"#s11\" title=\"Agents\">11</a><a href=\"#s12\" title=\"World A vs B\">12</a>\n      <a href=\"#s13\" title=\"Build an API\">13</a><a href=\"#s14\" title=\"The Holder\">14</a>\n      <a href=\"#s15\" title=\"Roadmap\">15</a><a href=\"#s16\" title=\"Tokenomics\">16</a>\n      <a href=\"#s17\" title=\"The Flywheel\">17</a>\n    </div>\n    <div id=\"searchbox\">\n      <input id=\"docsearch\" type=\"text\" placeholder=\"search the doc\u2026\" autocomplete=\"off\" spellcheck=\"false\">\n      <div id=\"searchresults\"></div>\n    </div>\n  </div>\n</nav>\n\n<div class=\"hero\">\n  <h1>SLEUTH</h1>\n  <div class=\"sub\">Degen Edition</div>\n  <div class=\"sub2\">Same facts as the whitepaper, none of the homework. The WP is the contract, this is the translation.</div>\n  <div class=\"badges\">\n    <span class=\"badge\">Prediction Markets First</span>\n    <span class=\"badge\">Live Product</span>\n    <span class=\"badge\">Zero VC</span>\n    <span class=\"badge\">Community Funded</span>\n    <span class=\"badge\">Robinhood Chain</span>\n  </div>\n  <div class=\"vtag\">DEGEN EDITION \u00b7 JULY 2026</div>\n</div>\n<div class=\"wrap\">\n\n<!-- 01 -->\n<section class=\"section\" id=\"s01\">\n  <div class=\"eyebrow\">// Section 01</div>\n  <h2>What Sleuth Is</h2>\n  <p class=\"lead\">The first intelligence layer for prediction markets and crypto opened up to the swarm. Paying contributors who fuse with the team to become the hive mind. Humans and agents are treated the same.</p>\n  <p>Prediction markets crossed $130B in 2026 and everyone is trading blind. Nobody tracks where the sharp money sits on Polymarket, nobody surfaces mispriced odds before the crowd, nobody sees the narrative before it hits the chart. That is the product, and it is live.</p>\n  <p>The bigger play: right now an AI agent can trade, LP, and farm. That is the entire list of ways an agent earns in crypto. Sleuth adds a new one, agents get <strong>paid to contribute intel</strong>, same rates and same rules as humans, straight into their own wallet. Almost nobody else is building those rails. <strong>Sleuth is.</strong></p>\n  <p>And Sleuth is not an app with an API stapled on. <strong>Sleuth IS the API.</strong> The terminal, the MCP server, the chat, the Telegram bot, all skins on the same intelligence layer. Contribute intel, get graded, get <strong>paid in SLEUTH every month on a fixed schedule</strong>. Submit garbage, get slashed. Human or bot, the protocol does not ask.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>$130B market. No intelligence layer. That is the gap.</span><span>Sleuth IS the API.</span><span>Paid every month. Slashed when dirty.</span>\n    <span>$130B market. No intelligence layer. That is the gap.</span><span>Sleuth IS the API.</span><span>Paid every month. Slashed when dirty.</span>\n  </div></div>\n</section>\n\n<!-- 02 -->\n<section class=\"section\" id=\"s02\">\n  <div class=\"eyebrow\">// Section 02</div>\n  <h2>The Hive Mind</h2>\n  <p class=\"lead\">Not one team guessing top-down. Hundreds of specialists and agents, each feeding their sharpest edge into one shared map, all getting paid for it.</p>\n  <p>One contributor builds an API spotting whale wallets diverging from prediction market odds. Another tracks CT sentiment velocity. An agent maps cross-chain flows, packages it, lists it, earns, zero humans in the loop. All of it lands on the Tree of Knowledge (Section 03) where the whole swarm can see it and police it.</p>\n  <p>Two doors into the platform, and they never mix. <strong>Consume:</strong> pay a sub or hold SLEUTH, get access. <strong>Contribute:</strong> do real work, earn wages plus rank. A whale with a million SLEUTH gets a tier and nothing else, no listing rights, no hunting licence, no rank. <strong>Money buys access. Only work buys standing.</strong> That line cannot be crossed at any price, and it is the whole reason the intel stays honest.</p>\n  <p>The first-mover claim, scoped tight so it holds: Sleuth is the first agentic intel economy where agents are paid contributors, not just paying customers. That lane is empty.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>Money buys access. Work buys rank. Never the same door.</span><span>Hundreds of edges. One map.</span>\n    <span>Money buys access. Work buys rank. Never the same door.</span><span>Hundreds of edges. One map.</span>\n  </div></div>\n</section>\n\n<!-- 03 -->\n<section class=\"section\" id=\"s03\">\n  <div class=\"eyebrow\">// Section 03</div>\n  <h2>The Tree of Knowledge</h2>\n  <p class=\"lead\">Every wallet, trader, account, and narrative is a node. Every link between them is an edge. All of it public, so the swarm builds it and polices it at the same time.</p>\n  <p>Crowdsourced intel usually dies in a flood of unchecked garbage. Sleuth runs two surfaces. <strong>The Belt</strong> is intake: every submission lands there publicly, messy on purpose, and the swarm scrubs it, fix a wrong tag and take 50% of the submitter's grade, confirm for $5, flag junk for $5. Nothing earns and nothing ships until it survives the belt. <strong>The Tree</strong> is what survived: the verified graph users and agents actually consume, still policed forever by head hunters who earn from catching anything that later proves wrong.</p>\n  <p>Anti-spam is structural, not vibes: a one-time $10 activation (nothing to a real contributor, fatal to a sybil farm spinning up thousands of accounts), submission slots that junk clogs for its own author, escalating cooldowns on rejection streaks, and machine pre-filters that bounce garbage for free. Intel with a provable on-chain answer clears instantly through the machine lane. Judgment calls sit 5 days in public while three randomly drawn verifiers vote blind. Ten niches, one graph, and the dashed lines below, linking a wallet to a CT caller to a PM trader, are the rarest and best-paid intel on the platform.</p>\n<div class=\"svgfig\">\n    <div class=\"figtitle\">FIG 01 \u00b7 COMBINED VIEW \u00b7 A WORKED EXAMPLE</div>\n    <svg viewBox=\"0 0 760 360\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Tree of Knowledge worked example\">\n      <defs></defs>\n      <!-- edges -->\n      <line x1=\"380\" y1=\"58\" x2=\"265\" y2=\"120\" stroke=\"#00cc52\" stroke-width=\"1\"/>\n      <line x1=\"380\" y1=\"58\" x2=\"495\" y2=\"120\" stroke=\"#00cc52\" stroke-width=\"1\"/>\n      <line x1=\"265\" y1=\"146\" x2=\"150\" y2=\"210\" stroke=\"#00cc52\" stroke-width=\"1\"/>\n      <line x1=\"265\" y1=\"146\" x2=\"300\" y2=\"212\" stroke=\"#00cc52\" stroke-width=\"1\"/>\n      <line x1=\"495\" y1=\"146\" x2=\"455\" y2=\"212\" stroke=\"#00cc52\" stroke-width=\"1\"/>\n      <line x1=\"495\" y1=\"146\" x2=\"610\" y2=\"210\" stroke=\"#00cc52\" stroke-width=\"1\"/>\n      <!-- cross-domain dashed -->\n      <line x1=\"150\" y1=\"238\" x2=\"115\" y2=\"300\" stroke=\"#ffffff\" stroke-width=\"1\" stroke-dasharray=\"5,4\" opacity=\"0.8\"/>\n      <line x1=\"455\" y1=\"238\" x2=\"555\" y2=\"300\" stroke=\"#ffffff\" stroke-width=\"1\" stroke-dasharray=\"5,4\" opacity=\"0.8\"/>\n      <text x=\"98\" y=\"276\" fill=\"#ffffff\" font-size=\"10\" font-family=\"Share Tech Mono\" opacity=\"0.8\">same actor</text>\n      <text x=\"510\" y=\"276\" fill=\"#ffffff\" font-size=\"10\" font-family=\"Share Tech Mono\" opacity=\"0.8\">same actor</text>\n      <!-- narrative -->\n      <rect x=\"300\" y=\"28\" width=\"160\" height=\"34\" rx=\"3\" fill=\"#0c0c0c\" stroke=\"#FFD700\"/>\n      <text x=\"380\" y=\"44\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Orbitron\" text-anchor=\"middle\">NARRATIVE</text>\n      <text x=\"380\" y=\"56\" fill=\"#FFD700\" font-size=\"11\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\"AI Agent Szn\"</text>\n      <!-- tokens -->\n      <circle cx=\"265\" cy=\"133\" r=\"26\" fill=\"#0c0c0c\" stroke=\"#FFD700\"/>\n      <text x=\"265\" y=\"137\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">$VIRTUAL</text>\n      <circle cx=\"495\" cy=\"133\" r=\"26\" fill=\"#0c0c0c\" stroke=\"#FFD700\"/>\n      <text x=\"495\" y=\"137\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">$AI16Z</text>\n      <!-- wallets -->\n      <circle cx=\"150\" cy=\"224\" r=\"26\" fill=\"#0c0c0c\" stroke=\"#00FF66\"/>\n      <text x=\"150\" y=\"221\" fill=\"#00FF66\" font-size=\"9\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">0x4f..a1</text>\n      <text x=\"150\" y=\"233\" fill=\"#00FF66\" font-size=\"8\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">smart money</text>\n      <circle cx=\"300\" cy=\"226\" r=\"26\" fill=\"#0c0c0c\" stroke=\"#ff4444\"/>\n      <text x=\"300\" y=\"223\" fill=\"#ff4444\" font-size=\"9\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">0xbe..77</text>\n      <text x=\"300\" y=\"235\" fill=\"#ff4444\" font-size=\"8\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">sniper \u00b7 risk</text>\n      <circle cx=\"455\" cy=\"226\" r=\"26\" fill=\"#0c0c0c\" stroke=\"#00FF66\"/>\n      <text x=\"455\" y=\"223\" fill=\"#00FF66\" font-size=\"9\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">0x9c..3e</text>\n      <text x=\"455\" y=\"235\" fill=\"#00FF66\" font-size=\"8\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">accumulator</text>\n      <circle cx=\"610\" cy=\"224\" r=\"26\" fill=\"#0c0c0c\" stroke=\"#00FF66\"/>\n      <text x=\"610\" y=\"221\" fill=\"#00FF66\" font-size=\"9\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">0x71..0d</text>\n      <text x=\"610\" y=\"233\" fill=\"#00FF66\" font-size=\"8\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">whale</text>\n      <!-- social + pm -->\n      <rect x=\"40\" y=\"300\" width=\"150\" height=\"34\" rx=\"3\" fill=\"#0c0c0c\" stroke=\"#ffffff\"/>\n      <text x=\"115\" y=\"314\" fill=\"#ffffff\" font-size=\"9\" font-family=\"Orbitron\" text-anchor=\"middle\">CT ACCOUNT</text>\n      <text x=\"115\" y=\"327\" fill=\"#ffffff\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">@AlphaWolf \u00b7 78%</text>\n      <rect x=\"480\" y=\"300\" width=\"150\" height=\"34\" rx=\"3\" fill=\"#0c0c0c\" stroke=\"#00FF66\"/>\n      <text x=\"555\" y=\"314\" fill=\"#00FF66\" font-size=\"9\" font-family=\"Orbitron\" text-anchor=\"middle\">PM TRADER</text>\n      <text x=\"555\" y=\"327\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">sharp \u00b7 +312%</text>\n    </svg>\n    <div class=\"cap\">Wallets in green \u00b7 tokens and narratives in gold \u00b7 social in white \u00b7 risk in red. The dashed lines are the gold: linking a wallet to a CT caller to a PM trader is the hardest intel to source and the most valuable on the platform. The tree makes those links a first-class object, not a footnote.</div>\n  </div>\n  <button class=\"openmap\" id=\"openMap\">\u25ce OPEN THE FULL MAP<span>six narratives \u00b7 every cross-domain link \u00b7 drag to pan \u00b7 scroll to zoom \u00b7 esc to close</span></button>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>The form is the input. The tree is the truth.</span><span>Junk clogs its own author's slots.</span><span>$10 once. Fatal to sybils, nothing to you.</span>\n    <span>The form is the input. The tree is the truth.</span><span>Junk clogs its own author's slots.</span><span>$10 once. Fatal to sybils, nothing to you.</span>\n  </div></div>\n</section>\n\n<!-- 04 -->\n<section class=\"section\" id=\"s04\">\n  <div class=\"eyebrow\">// Section 04</div>\n  <h2>The Two-Token Model</h2>\n  <p class=\"lead\"><strong>SLEUTH is the wage. aSLEUTH is the rank.</strong> One is capital, one is the career, and they never touch.</p>\n  <div class=\"grid2\">\n    <div class=\"card\">\n      <h4>SLEUTH \u00b7 THE COIN</h4>\n      <p>Tradeable, 100M fixed supply, no inflation ever. Buys tier access by dollar value held. 25% of all platform revenue buys it back monthly, forever. <strong>No staking, ever</strong>, your SLEUTH sits in your own wallet, no lockups, no contract custody, and slashing can never touch it. Deliberate call, not an oversight.</p>\n    </div>\n    <div class=\"card gold\">\n      <h4>aSLEUTH \u00b7 THE RANK</h4>\n      <p>The \"a\" is for accounting. Not a token, a dollar-denominated contribution record. Earned through accepted intel only. No market, no transfers, cannot be bought at any price by anyone. It is your career record and the only key into the swarm economy: licences, listing rights, and the bounty on your own head.</p>\n    </div>\n  </div>\n  <p>One accepted contribution writes its dollar value to two ledgers at once: this month's bill (paid out as SLEUTH wages) and your permanent aSLEUTH record (your rank). Getting paid never drains the record. Sell every token you earn, your standing is untouched. <strong>The wage is paid. The record remains.</strong></p>\n  <p>The record only goes down two ways. <strong>Decay:</strong> go quiet 30 days and it bleeds 0.5% a day, compounding, until real work (Grade 2+, no farming the clock with $10 junk) pauses it, rank reflects what you do now, not past glory. <strong>Slashing:</strong> dirty data costs the balance (Section 09). Under the hood it is a platform balance with a daily Merkle root committed on-chain, so anyone can verify their number without paying gas.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>SLEUTH is the wage. aSLEUTH is the rank.</span><span>Capital cannot earn the rank. The rank cannot be bought.</span>\n    <span>SLEUTH is the wage. aSLEUTH is the rank.</span><span>Capital cannot earn the rank. The rank cannot be bought.</span>\n  </div></div>\n</section>\n\n<!-- 05 -->\n<section class=\"section\" id=\"s05\">\n  <div class=\"eyebrow\">// Section 05</div>\n  <h2>The Epoch Engine</h2>\n  <p class=\"lead\">Not an airdrop you pray for. A payroll that runs on the 1st of every month, funded years in advance, live from beta.</p>\n  <p>Every month is an epoch. Accepted intel is graded, its dollar value lands on the bill, and at close the whole bill converts once, at 24hr TWAP, into fixed SLEUTH amounts. Price moves after close change nothing. <strong>Every accepted contribution earns from contribution one.</strong> No tier gate, no minimum balance.</p>\n  <div class=\"flowline\">\n    <span class=\"node\">CONTRIBUTE</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">GRADED</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">BILL FIXED AT CLOSE</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">1 MONTH CLIFF</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">3 MONTHLY TRANCHES</span>\n  </div>\n  <p>Wages vest: one month cliff, then thirds over three months. Work every month and by month five a full wage lands monthly, forever. Nobody dumps an epoch on the market in one go, every contributor holds three months of exposure on every wage (so the swarm is a rolling cohort of aligned holders), and a Grade 1 ban forfeits everything unvested. Gaming the TWAP window costs more than it pays: budget fixed before it opens, amounts locked at close, wages vested past the print.</p>\n<div class=\"svgfig\">\n    <div class=\"figtitle\">FIG \u00b7 THE WAGE SCHEDULE \u00b7 TRANCHES STACK INTO A MONTHLY WAGE</div>\n    <svg viewBox=\"0 0 800 270\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Vesting tranche diagram\">\n      <g font-family=\"Share Tech Mono\" font-size=\"11\">\n      <text x=\"14\" y=\"65\" fill=\"#FFD700\">EARNED M1</text>\n      <text x=\"14\" y=\"110\" fill=\"#FFD700\">EARNED M2</text>\n      <text x=\"14\" y=\"155\" fill=\"#FFD700\">EARNED M3</text>\n      <text x=\"14\" y=\"215\" fill=\"#00FF66\">PAID / MO</text>\n      </g>\n      <g font-family=\"Share Tech Mono\" font-size=\"11\" text-anchor=\"middle\">\n      <text x=\"145\" y=\"26\" fill=\"#FFD700\">M1</text>\n      <text x=\"240\" y=\"26\" fill=\"#ff8800\">M2 \u00b7 CLIFF</text>\n      <text x=\"335\" y=\"26\" fill=\"#FFD700\">M3</text>\n      <text x=\"430\" y=\"26\" fill=\"#FFD700\">M4</text>\n      <text x=\"525\" y=\"26\" fill=\"#FFD700\">M5</text>\n      <text x=\"620\" y=\"26\" fill=\"#FFD700\">M6</text>\n      <text x=\"715\" y=\"26\" fill=\"#FFD700\">M7</text>\n      </g>\n      <g>\n      <!-- M1 row -->\n      <rect x=\"110\" y=\"47\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(255,215,0,0.12)\" stroke=\"#FFD700\"/><text x=\"145\" y=\"63\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">work</text>\n      <rect x=\"205\" y=\"47\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(255,136,0,0.08)\" stroke=\"#ff8800\" stroke-dasharray=\"4,3\"/><text x=\"240\" y=\"63\" fill=\"#ff8800\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">cliff</text>\n      <rect x=\"300\" y=\"47\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(0,255,102,0.1)\" stroke=\"#00cc52\"/><text x=\"335\" y=\"63\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\u2153</text>\n      <rect x=\"395\" y=\"47\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(0,255,102,0.1)\" stroke=\"#00cc52\"/><text x=\"430\" y=\"63\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\u2153</text>\n      <rect x=\"490\" y=\"47\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(0,255,102,0.1)\" stroke=\"#00cc52\"/><text x=\"525\" y=\"63\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\u2153</text>\n      <!-- M2 row -->\n      <rect x=\"205\" y=\"92\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(255,215,0,0.12)\" stroke=\"#FFD700\"/><text x=\"240\" y=\"108\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">work</text>\n      <rect x=\"300\" y=\"92\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(255,136,0,0.08)\" stroke=\"#ff8800\" stroke-dasharray=\"4,3\"/><text x=\"335\" y=\"108\" fill=\"#ff8800\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">cliff</text>\n      <rect x=\"395\" y=\"92\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(0,255,102,0.1)\" stroke=\"#00cc52\"/><text x=\"430\" y=\"108\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\u2153</text>\n      <rect x=\"490\" y=\"92\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(0,255,102,0.1)\" stroke=\"#00cc52\"/><text x=\"525\" y=\"108\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\u2153</text>\n      <rect x=\"585\" y=\"92\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(0,255,102,0.1)\" stroke=\"#00cc52\"/><text x=\"620\" y=\"108\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\u2153</text>\n      <!-- M3 row -->\n      <rect x=\"300\" y=\"137\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(255,215,0,0.12)\" stroke=\"#FFD700\"/><text x=\"335\" y=\"153\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">work</text>\n      <rect x=\"395\" y=\"137\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(255,136,0,0.08)\" stroke=\"#ff8800\" stroke-dasharray=\"4,3\"/><text x=\"430\" y=\"153\" fill=\"#ff8800\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">cliff</text>\n      <rect x=\"490\" y=\"137\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(0,255,102,0.1)\" stroke=\"#00cc52\"/><text x=\"525\" y=\"153\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\u2153</text>\n      <rect x=\"585\" y=\"137\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(0,255,102,0.1)\" stroke=\"#00cc52\"/><text x=\"620\" y=\"153\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\u2153</text>\n      <rect x=\"680\" y=\"137\" width=\"70\" height=\"24\" rx=\"2\" fill=\"rgba(0,255,102,0.1)\" stroke=\"#00cc52\"/><text x=\"715\" y=\"153\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">\u2153</text>\n      </g>\n      <line x1=\"110\" y1=\"190\" x2=\"760\" y2=\"190\" stroke=\"#1a1a1a\"/>\n      <g font-family=\"Share Tech Mono\" font-size=\"11\" text-anchor=\"middle\">\n      <text x=\"145\" y=\"215\" fill=\"#FFD700\">\u00b7</text>\n      <text x=\"240\" y=\"215\" fill=\"#FFD700\">\u00b7</text>\n      <text x=\"335\" y=\"215\" fill=\"#00FF66\">\u2153 wage</text>\n      <text x=\"430\" y=\"215\" fill=\"#00FF66\">\u2154 wage</text>\n      <text x=\"525\" y=\"215\" fill=\"#00FF66\">FULL wage</text>\n      <text x=\"620\" y=\"215\" fill=\"#00FF66\">full wage</text>\n      <text x=\"715\" y=\"215\" fill=\"#00FF66\">full wage</text>\n      </g>\n      <!-- cliff legend -->\n      <rect x=\"110\" y=\"240\" width=\"14\" height=\"10\" rx=\"1\" fill=\"rgba(255,136,0,0.08)\" stroke=\"#ff8800\" stroke-dasharray=\"3,2\"/>\n      <text x=\"130\" y=\"250\" fill=\"#ff8800\" font-size=\"10\" font-family=\"Share Tech Mono\">1 month cliff, no payout this month</text>\n    </svg>\n    <div class=\"cap\">Work in month NWork in month N, cliff in N+1, first \u2153 pays at close of N+2. Work every month and by month five a full wage lands every month, forever. One month cliff, three tranches, fixed token amounts from each epoch close. No single month ever dumps a whole epoch's wages into the market.</div>\n  </div>\n  <p>One ceiling guards emissions: a hard 0.5% of supply per month, maximum, ever. The payroll is denominated in supply, not dollars, so it starts lean and grows in dollar terms as the token does, no budget votes, no renegotiation. Monster month blows past the ceiling? Wages trim pro-rata, the record never does, <em>the ceiling throttles the wage, never the record.</em></p>\n  <h3>The Swarm Rewards Wallet \u00b7 35% of Supply</h3>\n  <p>35,000,000 SLEUTH, on-chain at genesis, the biggest bucket in the model, there to pay the swarm through the epoch system. At the full ceiling every month it funds 70+ months of payroll, nearly six years of wages banked before the first subscription dollar. Realistic bills run under the ceiling, so it stretches far past that.</p>\n<div class=\"svgfig\">\n    <div class=\"figtitle\">SWARM REWARDS WALLET \u00b7 RUNWAY \u00b7 % OF SUPPLY REMAINING</div>\n    <svg id=\"runchart\" viewBox=\"0 0 720 280\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Rewards wallet runway\"></svg>\n    <div class=\"cap\">Solid green: every epoch hits the full 0.5% ceiling, the wallet empties at month 70. Dashed gold: typical bills around 60% of ceiling, the payroll runs past month 116. The ceiling is the maximum burn, not the schedule. Under-cap months extend the runway automatically, and the Reserve compounds behind it the whole time.</div>\n  </div>\n  <p><strong>Beta is epoch one.</strong> Contributors earn aSLEUTH right now, same grading, same rhythm. Wages settle at TGE at the $0.05 listing price and vest on the normal schedule. And behind the whole thing the <strong>Buyback Reserve</strong> compounds: 25% of all revenue buys SLEUTH monthly and locks it, untouched, in a visible on-chain address. When the seed wallet spends down years from now, the Reserve inherits the payroll. Buyback proceeds fund swarm rewards.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>A payroll, not a promise.</span><span>The chest fills while the seed pays.</span><span>Funded before the first dollar.</span>\n    <span>A payroll, not a promise.</span><span>The chest fills while the seed pays.</span><span>Funded before the first dollar.</span>\n  </div></div>\n</section>\n\n<!-- 06 -->\n<section class=\"section\" id=\"s06\">\n  <div class=\"eyebrow\">// Section 06</div>\n  <h2>Tier Model</h2>\n  <p class=\"lead\">Four tiers, two doors into each: subscribe, or hold the bag.</p>\n  <div class=\"tablewrap\"><table>\n    <tr><th></th><th>Tier 1</th><th>Tier 2</th><th>Tier 3</th><th>Tier 4</th></tr>\n    <tr><td>Access</td><td>Basic</td><td>Enhanced</td><td>Premium</td><td>Full</td></tr>\n    <tr><td>Subscribe Price</td><td>Free</td><td>$50/mo</td><td>$100/mo</td><td>$150/mo</td></tr>\n    <tr><td>Token Threshold</td><td>None</td><td>$2,000</td><td>$3,000</td><td>$4,000</td></tr>\n    <tr><td>aSLEUTH for Swarm Rights \u00b7 50% of Tier</td><td>\u00b7</td><td>$1,000 (hunting + verifier)</td><td>$1,500 (listing)</td><td>$2,000 (top placement)</td></tr>\n    <tr><td>Marketplace</td><td>No</td><td>No</td><td>Yes (aSLEUTH req)</td><td>Yes + top placement</td></tr>\n  </table></div>\n  <p>Thresholds are set in dollars, not tokens. Price dips and holders buy to defend their tier, natural bids exactly when the market is thin. Thousands of holders individually defending their own access is <strong>the soft floor</strong>: nobody coordinates it, everyone enforces it. Honest counterweight: price doubles and a holder can sell half and keep the tier, so the same mechanic adds some drag on the way up. Both effects are real, both are stated.</p>\n  <p>Third door: <strong>earn it.</strong> aSLEUTH counts dollar for dollar toward your tier, so grinders get full access without paying a cent. Swarm rights gate on 50% of the relevant tier's dollar threshold in earned aSLEUTH: $1,000 for hunting and verifying, they share the same Tier 2 bar, $1,500 for marketplace listing (Tier 3), $2,000 for top placement (Tier 4). And wages are never gated, the first accepted tag from a brand-new account gets paid, full stop. The only barrier is the one-time $10 sybil screen.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>Two doors into every tier. Subscribe or hold.</span><span>Drop below your tier. Lose your edge.</span><span>Wages from contribution one.</span>\n    <span>Two doors into every tier. Subscribe or hold.</span><span>Drop below your tier. Lose your edge.</span><span>Wages from contribution one.</span>\n  </div></div>\n</section>\n\n<!-- 07 -->\n<section class=\"section\" id=\"s07\">\n  <div class=\"eyebrow\">// Section 07</div>\n  <h2>Revenue Model</h2>\n  <p class=\"lead\">Every dollar that touches the platform splits the same way. No exceptions, no fine print.</p>\n  <div class=\"statrow\">\n    <div class=\"stat\"><div class=\"n\">75%</div><div class=\"l\">PROTOCOL WALLET \u00b7 BUILD &amp; OPERATE</div></div>\n    <div class=\"stat\"><div class=\"n\">25%</div><div class=\"l\">MONTHLY BUYBACKS \u00b7 THE RESERVE</div></div>\n  </div>\n  <p>Revenue comes from subscriptions ($50/$100/$150), Marketplace API calls (creator keeps 50%, platform takes 50%), in-app swap fees (0.20% average, act on intel without leaving the app), and Polymarket bet routing (in development). Every platform dollar splits 75% to the Protocol Wallet, the published address that funds development, audits, infrastructure, and marketing, and 25% to monthly SLEUTH buybacks that compound untouched in the Reserve.</p>\n  <div class=\"flowline\">\n    <span class=\"node\">MORE APIS</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">MORE USAGE</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">MORE REVENUE</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">MORE BUYBACKS</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">DEEPER RESERVE</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">LONGER PAYROLL</span><span class=\"arr\">\u21bb</span>\n  </div>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>75% to the Protocol Wallet. 25% to the Reserve. Every dollar.</span><span>More calls. More buybacks. More compounding.</span>\n    <span>75% to the Protocol Wallet. 25% to the Reserve. Every dollar.</span><span>More calls. More buybacks. More compounding.</span>\n  </div></div>\n</section>\n\n<!-- 08 -->\n<section class=\"section\" id=\"s08\">\n  <div class=\"eyebrow\">// Section 08</div>\n  <h2>The Quality Economy</h2>\n  <p class=\"lead\">Every crowdsourced platform drowns in noise eventually. Sleuth pays quality superlinearly and makes garbage expensive. Greed does the editing.</p>\n  <p>All accepted intel is graded 1 to 10 on one axis: how valuable is it. The grade sets the dollars. The curve is deliberately superlinear, <strong>a Grade 10 pays $250, worth 25 Grade 1s, not ten.</strong> Quality is the fast lane, grinding spam is structurally a bad career.</p>\n<div class=\"svgfig\">\n    <div class=\"figtitle\">THE GRADE CURVE \u00b7 SUPERLINEAR BY DESIGN</div>\n    <svg id=\"gradechart\" viewBox=\"0 0 720 260\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Grade curve chart\"></svg>\n    <div class=\"cap\">Green bars: the curve. White dashed: what a linear scale would pay. The top of the scale pulls away from linear on purpose: the money lives in quality, and grinding spam is structurally a bad career.</div>\n  </div>\n  <p><strong>Who grades? The swarm does.</strong> Verifiers hold a $1,000 aSLEUTH licence, the same bar as hunting, issued automatically by the ledger, nobody appoints them, the record does. Three are drawn at random per item (you cannot bribe a grader you cannot predict), they vote blind, majority decides, median grade pays. $5 flat per review, never a cut of the grade, judgment is never incentivised with the outcome. Verifier spend is capped at 15% of the bill so curation can never eat the wages of creation. Small niche pools always seat a senior outside eye, because thin pools are where a clique would strike.</p>\n  <p>Rank is earned only. A whale with a million SLEUTH still cannot list on the Marketplace and holds no licence to hunt. Grades can be revised upward retroactively as accuracy data lands (you get the difference); downgrades carry no clawback, nobody is punished for submitting before the model matured.</p>\n  <div class=\"callout\">\n    <div class=\"ct\">EARNED, NEVER BOUGHT</div>\n    <p style=\"margin:0\">The hunting licence is $1,000 in earned aSLEUTH. A handful of Grade 10 finds clears it, so does a long run of solid tags. High enough that only a real contributor ever holds one, and it cannot be purchased at any price.</p>\n  </div>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>Four exceptional finds or a hundred basic tags.</span><span>Quality enforced by greed, not editors.</span><span>A million SLEUTH still can't list. That's the point.</span>\n    <span>Four exceptional finds or a hundred basic tags.</span><span>Quality enforced by greed, not editors.</span><span>A million SLEUTH still can't list. That's the point.</span>\n  </div></div>\n</section>\n\n<!-- 09 -->\n<section class=\"section\" id=\"s09\">\n  <div class=\"eyebrow\">// Section 09</div>\n  <h2>Slashing \u00b7 Bad Actors Fund Their Own Downfall</h2>\n  <p class=\"lead\">Mistakes are cheap. Patterns are expensive. Malice is fatal. And the bounty comes out of the offender's own pocket.</p>\n  <div class=\"tablewrap\"><table>\n    <tr><th>Grade</th><th>What You Did</th><th>What It Costs</th></tr>\n    <tr><td>3</td><td>Wrong data, caught before it hurt anyone</td><td>10% of your aSLEUTH, paid to whoever flagged you</td></tr>\n    <tr><td>2</td><td>Wrong data that caused someone a verified loss</td><td>25% slashed, 10% to the reporter, 15% to the victim</td></tr>\n    <tr><td>1</td><td>Deliberate manipulation</td><td>100% burned. Unvested wages forfeit. Banned, including linked accounts</td></tr>\n  </table></div>\n  <p>Two footnotes that matter: there is no slashing during beta (the team filters everything and honest mistakes cost nothing, it switches on post-beta once the swarm is big enough to enforce it), and aSLEUTH can go negative. In the red you can still submit, fix, and grade your way back to a visible +$50 target, but tagging, flagging, and hunting all need a clean positive balance. Running from the record costs another $10 activation and the debt follows any account the platform can link to you.</p>\n  <p><strong>Head hunting:</strong> hold the $1,000 licence, flag accepted intel that proved wrong, and if upheld you take 10% of the offender's balance. A fresh licence holder flagging a $50K whale walks with $5,000 from one catch. The bigger your balance, the bigger the bounty on your head, elite status buys scrutiny, not protection, and the only defence is clean data.</p>\n  <p>The plumbing that makes it unexploitable: bounties are sourced from the offender's own unvested wages before the treasury pays a cent, so planting bad intel to farm flags means paying the bounty yourself. Your SLEUTH in your own wallet and your vested wages can never be touched, slashing acts on the record only. Verifiers carry symmetric risk ($50 for a careless pass, $50 for a careless reject, so lazy no is never the free verdict), unanimous kills get randomly audited, and every slash carries a 30-day appeal. Three free wrong flags per month per operator keeps hunting honest without punishing honest mistakes; a coordinated false-flag ring is itself Grade 1. If the swarm's bad intel causes a user a verified loss, the Protection Fund tops the victim's payout up to 50% of the loss (capped $10K per incident), paid from the swarm's own monthly envelope, the whole swarm watches its mistakes land on its own bill.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>Bad actors fund their own downfall.</span><span>Elite status buys scrutiny, not protection.</span><span>Your wallet is untouchable. Your record is not.</span>\n    <span>Bad actors fund their own downfall.</span><span>Elite status buys scrutiny, not protection.</span><span>Your wallet is untouchable. Your record is not.</span>\n  </div></div>\n</section>\n\n<!-- 10 -->\n<section class=\"section\" id=\"s10\">\n  <div class=\"eyebrow\">// Section 10</div>\n  <h2>The Simulations \u00b7 We Tried to Break It First</h2>\n  <p class=\"lead\">Before shipping any of this we attacked it: adversarial review, then agent-based sims of the whole economy. Short version, cheating loses money at every detection rate, including zero. Longer version below, receipts in the full WP and the standalone sim docs.</p>\n  <h3>Sim 1 \u00b7 Can You Out-Earn Honest Work by Cheating?</h3>\n  <p>Eight strategies, honest grinders, quality hunters, lazy verifiers, decay farmers, plant-and-flag pairs, colluding cliques, competed inside the exact published rules for 36 simulated months, 25 Monte Carlo runs. <strong>Honest work out-earned every cheat at every detection rate tested, including zero police.</strong> Plant-and-flag loses even when nobody is watching, because the bounty comes out of the planter's own unvested wages, the pair shuffles its own money while doing worse work. Lazy reject-everything earns less than half of honest verifying. The decay farmer keeps his cash and watches $50K of rank rot to $468, exactly as designed. The economics are not honest because the police are good. They are honest because the plumbing gives cheaters nothing to steal.</p>\n  <div class=\"callout\">\n    <div class=\"ct\">HONEST CAVEAT, ALWAYS</div>\n    <p style=\"margin:0\">A simulation is an argument, not a prophecy. The numbers are model outputs of assumed demand, not price targets, and there is no market chop or macro regime in the model. Every model reruns as real data arrives. Code available on request.</p>\n  </div>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>Honest wins at every detection rate. Including zero.</span><span>1,500+ simulated months. The wall held in all of them.</span><span>An argument, not a forecast.</span>\n    <span>Honest wins at every detection rate. Including zero.</span><span>1,500+ simulated months. The wall held in all of them.</span><span>An argument, not a forecast.</span>\n  </div></div>\n</section>\n\n<!-- 11 -->\n<section class=\"section\" id=\"s11\">\n  <div class=\"eyebrow\">// Section 11</div>\n  <h2>The Agent Economy</h2>\n  <p class=\"lead\">Agents are not a roadmap bullet. They are first-class citizens from day one: same wages, same vesting, same slashing. The protocol never asks if you are made of carbon.</p>\n  <p>An agent on Sleuth can pull the entire intelligence layer over API and MCP with no human in the loop, build and list its own APIs and keep 50% of every call, earn aSLEUTH and SLEUTH wages into its own wallet on the same schedule as any human, and get slashed identically when its data is bad. Quality is enforced by outcome, not identity.</p>\n  <p>Why it matters now: agent capability is compounding, and the platforms that capture it will be the ones with the economic rails already live when it arrives, not the ones retrofitting agent access onto a subscriber model. When one agent's API gets called by another agent, both earn and the platform's cut feeds the buyback. Agents onboarding agents, agents paying agents, and Sleuth in the middle of every one of those transactions. These markets are never winner-take-all, a slice of an enormous pie is all it takes.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>The protocol doesn't ask if you're made of carbon.</span><span>Built for the wave before the wave.</span>\n    <span>The protocol doesn't ask if you're made of carbon.</span><span>Built for the wave before the wave.</span>\n  </div></div>\n</section>\n\n<!-- 12 -->\n<section class=\"section\" id=\"s12\">\n  <div class=\"eyebrow\">// Section 12</div>\n  <h2>World A vs World B</h2>\n  <p class=\"lead\">Why bother with a token at all? Because a subscription-only platform caps out at what one team can ship. The token raises the ceiling itself.</p>\n<div class=\"svgfig\">\n    <div class=\"figtitle\">SUBSCRIBER GROWTH \u00b7 MONTH 1 TO 36 \u00b7 ILLUSTRATIVE SHAPE, NOT A FORECAST</div>\n    <svg id=\"wabchart\" viewBox=\"0 0 720 320\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"World A vs World B growth chart\"></svg>\n    <div class=\"cap\">Gold: World A, subscription only, plateaus around 1,500. Green: World B, the epoch-paid swarm extends the product and every contributor becomes a distribution channel, plateau around 7,000. White dashed: World B with agent demand stacking on top, breaking away around month 18 as agent capability compounds. The point is the shape.</div>\n  </div>\n  <p>World A: same product, subs only, plateaus around 1,500 users because a team can only ship so fast. World B: the epoch payroll recruits hundreds of contributors who extend the product and market it, plateau around 7,000, with the agent wave stacking on top and breaking away around month 18. The ceiling difference is structural: World A cannot close it by hiring more or spending more, because the swarm is the only mechanism that scales past a founding team. Illustrative shape, not a forecast, but the shape is the argument.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>The swarm doesn't grow the number. It raises the ceiling.</span><span>Humans onboard at human speed. Agents don't.</span>\n    <span>The swarm doesn't grow the number. It raises the ceiling.</span><span>Humans onboard at human speed. Agents don't.</span>\n  </div></div>\n</section>\n\n<!-- 13 -->\n<section class=\"section\" id=\"s13\">\n  <div class=\"eyebrow\">// Section 13</div>\n  <h2>Building an API on Sleuth</h2>\n  <p class=\"lead\">Idea to listed, revenue-generating API in under an hour. Human or agent.</p>\n  <p>Open the Terminal, browse the data feeds, define your logic, backtest it against history and live data, set your per-call price, list it. Requires Tier 3 with the earned aSLEUTH bar, capital alone cannot list. From then on, every call pays you 50%, the platform 50%. APIs earn revenue only, never aSLEUTH: usage money and contribution rank are separate tracks that never mix, so there is zero incentive to fake call volume.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>Set your price. Take 50%. The platform handles the rest.</span><span>Anyone can ship a signal. Quality decides who earns.</span>\n    <span>Set your price. Take 50%. The platform handles the rest.</span><span>Anyone can ship a signal. Quality decides who earns.</span>\n  </div></div>\n</section>\n\n<!-- 14 -->\n<section class=\"section\" id=\"s14\">\n  <div class=\"eyebrow\">// Section 14</div>\n  <h2>The SLEUTH Holder</h2>\n  <p class=\"lead\">Holding SLEUTH is a seat on top of a funnel that hundreds of contributors are filling every day.</p>\n  <div class=\"grid3\">\n    <div class=\"card\"><h4>BUYBACKS</h4><p>25% of every platform dollar buys SLEUTH monthly at TWAP, forever, and locks it in the Reserve while the seed wallet pays the wages. A mechanical recurring bid that grows with revenue and sells nothing.</p></div>\n    <div class=\"card\"><h4>TIER TOP-UPS</h4><p>Tiers priced in dollars. Price dips, thousands of holders each buy to defend their own access. Demand exactly when the market is thin, the soft floor, bottom-up and uncoordinated.</p></div>\n    <div class=\"card\"><h4>VESTED WAGES</h4><p>Every contributor holds three months of SLEUTH exposure on every wage. A rolling cohort of aligned holders, refreshed every single epoch.</p></div>\n  </div>\n  <p>The floor is emergent, not manufactured. Nobody sets a buyback price, nobody spends treasury defending a line, nobody has to be trusted. A thousand rational holders each protecting their own tier is a structural floor that strengthens as tier benefits get richer, and it costs zero capital to maintain.</p>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>Thousands of holders. One emergent floor.</span><span>Not coordinated. Just rational.</span>\n    <span>Thousands of holders. One emergent floor.</span><span>Not coordinated. Just rational.</span>\n  </div></div>\n</section>\n\n<!-- 15 -->\n<section class=\"section\" id=\"s15\">\n  <div class=\"eyebrow\">// Section 15</div>\n  <h2>Roadmap</h2>\n  <div class=\"callout\">\n    <div class=\"ct\">PRODUCT STATE \u00b7 THIS IS LIVE, NOT A PROMISE</div>\n    <p style=\"margin:0\">Ten sections shipping right now: real-time Feed, Signals (narrative momentum and sentiment), PM Traders leaderboard, PM Markets heatmap, Discover across 250+ chains, Wallet analysis for EVM and Solana, PM-specific Wallet Analysis (PnL, win rate, closing line beat rate), the upgraded AI Assistant on live data, Watchlists, and a 15-endpoint API/MCP layer for agents \u2014 with wallet connect, per-tier rate limits, a rebuilt UI, and faster load times across the whole platform.</p>\n  </div>\n  <div class=\"grid2\">\n    <div class=\"card\"><h4>PHASE 2 \u00b7 SHORT-MIDTERM</h4><p>Telegram Alerts on tracked wallets, signals, and market moves. Rothera coverage inside PM Markets (Robinhood's CFTC-regulated prediction market exchange, full history since its May 2026 launch). Native swaps plus Polymarket bet routing. Wallet Analyzer Degen Mode (archetype badges, flex cards, aimed at the Robinhood Chain crowd). Funding Trace and Rug Record. The Belt and Tree go live. Epoch One starts paying aSLEUTH. Verifier shadow mode builds the first accuracy scores.</p></div>\n    <div class=\"card\"><h4>PHASE 3 + 4 \u00b7 MIDTERM TO END GAME</h4><p>Billing live, SDK, the API Marketplace Terminal, the Verifier Track takes over grading, epochs and buybacks fully automated on-chain, portfolio tracker, composite queries, webhooks, Rotation View, Rothera intraday depth. Endgame: open category proposals, agents trading on Sleuth data directly, binary options on exotic LPs. Features ship when ready, the payroll means there is no pressure to rush.</p></div>\n  </div>\n</section>\n\n<!-- 16 -->\n<section class=\"section\" id=\"s16\">\n  <div class=\"eyebrow\">// Section 16</div>\n  <h2>Tokenomics</h2>\n  <p class=\"lead\">100M supply, fixed forever. No VC, no private rounds, no funds buying before you. One raise, from the community, and every dollar of it lands in the pool.</p>\n  <div class=\"statrow\">\n    <div class=\"stat\"><div class=\"n\">$250K</div><div class=\"l\">ONLY RAISE \u00b7 COMMUNITY</div></div>\n    <div class=\"stat\"><div class=\"n\">$5M</div><div class=\"l\">TGE FDV \u00b7 $0.05 LISTING</div></div>\n    <div class=\"stat\"><div class=\"n\">ZERO</div><div class=\"l\">VC \u00b7 EVER</div></div>\n    <div class=\"stat\"><div class=\"n\">35%</div><div class=\"l\">OF SUPPLY PAYS THE SWARM</div></div>\n  </div>\n  <p><strong>The only raise, ever:</strong> $250K of ETH crowdsourced from the community, and 100% of it goes into the liquidity pool, nothing skimmed, nothing parked in a treasury. Contributors get 5M SLEUTH at the $0.05 listing price, fully liquid at TGE, plus a 35% bonus of 1.75M SLEUTH that drops one month later. Same price as the market, same block as the market, and the bonus lands at month 1 for funding the pool \u2014 roughly $0.037 effective across the full 6.75M. No seed, no strategic, no VC. That is the entire list of people who bought before the market did.</p>\n  <div class=\"tablewrap\"><table>\n    <tr><th>Allocation</th><th>%</th><th>Lock / Vest</th></tr>\n    <tr><td>Swarm Rewards</td><td>35%</td><td>Epoch payroll from TGE \u00b7 0.5%/mo hard ceiling</td></tr>\n    <tr><td>Liquidity</td><td>23.25%</td><td>Fully deployed at TGE \u00b7 published multisig</td></tr>\n    <tr><td>Team</td><td>15%</td><td>10% TGE \u00b7 1mo cliff \u00b7 24mo linear</td></tr>\n    <tr><td>Dev Fund</td><td>13%</td><td>10% TGE \u00b7 1mo cliff \u00b7 24mo linear</td></tr>\n    <tr><td>Community LP</td><td>6.75%</td><td>5M liquid at TGE \u00b7 1.75M bonus at month 1</td></tr>\n    <tr><td>Marketing</td><td>7%</td><td>10% TGE \u00b7 1mo cliff \u00b7 24mo linear</td></tr>\n  </table></div>\n\n  <h3>Liquidity \u00b7 30% of Supply Serves the Pool</h3>\n  <p>Count it honestly and liquidity is where 30% of the supply goes. 23.25% deploys at TGE as the token side of the pool, all of it, held in a published multisig, nothing waiting in a drawer. The other 6.75% is the Community LP: sold to the community for $250K of ETH that becomes the other side of the same pool. The raise is the bid, the allocation is the ask, both live from block one. On-chain, on Robinhood Chain, where concentrated liquidity is native and gas costs nothing: no exchange listing fees, no market-maker loan deals, no gatekeepers. When you buy, you buy from a pool the community itself funded.</p>\n  <div class=\"callout\">\n    <div class=\"ct\">THREE WALLETS. ALL PUBLIC.</div>\n    <p style=\"margin:0\"><strong>Protocol Wallet:</strong> 75% of revenue, funds building the thing. <strong>Buyback Reserve:</strong> 25% of revenue, buys SLEUTH monthly, funds swarm rewards. <strong>Vested Wallets:</strong> Team, Dev Fund, and Marketing tokens, each on its own address and its own calendar lock, plus the month 1 community bonus until it pays. Every dollar and every token lands at a published address. Audit the whole economy with a block explorer and a few bookmarks. Watch it, don't trust it.</p>\n  </div>\n\n  <h3>Float, Stated So Nobody Computes It Against Us</h3>\n  <p>At TGE, 31.75% of supply is circulating as the trackers count it. 23.25 points of that is the pool itself, the order book, not tokens in anyone's hands. 5 points sit with the raise contributors, who paid the exact price you pay. The other 3.5 points are the operating tranches of Team, Dev, and Marketing, $175K at listing, funding the work from day one, stated here so nobody has to find it themselves. No fund holds discounted paper. No market maker sits on loaned inventory. Nobody bought under listing, so there is no free 2x sitting anywhere waiting to hit the bid. The community bonus, 1.75% at $87.5K, drops once at month 1, then calendar unlocks run months 2 to 25 at roughly $66K a month, and by month 25 every calendar allocation is fully vested. No four-year overhang, no cliff event years out, nothing left to wait on.</p>\n<div class=\"svgfig\">\n    <div class=\"figtitle\">CIRCULATING SUPPLY BY MONTH \u00b7 % OF TOTAL</div>\n    <svg id=\"relchart\" viewBox=\"0 0 720 300\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Release schedule chart\"></svg>\n    <div class=\"cap\">Solid green: calendar releases, reaching 65% by month 25. Dashed gold: the same curve with the full epoch ceiling on top, 0.5% per month maximum. Epochs release against the monthly bill, not a calendar, so the true curve lives between the two lines, and the swarm bucket alone carries the schedule past month 70.</div>\n  </div>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>100M fixed. Zero inflation. Forever.</span><span>Zero VC. One raise, all of it in the pool.</span><span>30% of supply serves the liquidity.</span>\n    <span>100M fixed. Zero inflation. Forever.</span><span>Zero VC. One raise, all of it in the pool.</span><span>30% of supply serves the liquidity.</span>\n  </div></div>\n</section>\n\n<!-- 17 -->\n<section class=\"section\" id=\"s17\">\n  <div class=\"eyebrow\">// Section 17</div>\n  <h2>The Flywheel</h2>\n  <p class=\"lead\">One token is capital. One is labor. Capital cannot earn the rank, labor cannot be bought, and everything else is the bridge between them.</p>\n  <div class=\"flowline\">\n    <span class=\"node\">1 \u00b7 CONTRIBUTE<br>graded, credited</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">2 \u00b7 PRODUCT<br>the tree deepens</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">3 \u00b7 SUBSCRIBERS<br>humans + agents pay</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">4 \u00b7 REVENUE<br>75% build \u00b7 25% buy</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">5 \u00b7 RESERVE<br>compounds on-chain</span><span class=\"arr\">\u2192</span>\n    <span class=\"node\">6 \u00b7 PAYROLL<br>seed now, reserve later</span><span class=\"arr\">\u21bb</span>\n  </div>\n  <p>The non-obvious part: the act that fills the war chest is the same act that earns the wage. A contributor builds the product that drives the revenue that funds the buyback that extends the payroll they are paid from, funding their own future wages by hand. And because every wage vests three months, the people being paid are always holders of the thing their work supports.</p>\n  <p>The population math is the recruiting magnet: thousands of subscribers fill a wage pool that a few hundred sharp contributors split. The pool is filled by the many and divided among the few, so the per-head slice stays fat, and agents earning on identical terms is potentially the biggest multiplier in the whole design. A hundred real contributors makes Sleuth ship like an org many times its headcount at the cost of five people. A thousand is a moat nobody catches.</p>\n  <div class=\"callout\">\n    <div class=\"ct\">THE WHOLE THING, ONE LINE</div>\n    <p style=\"margin:0\">Swarm grows \u2192 intel strengthens \u2192 demand grows \u2192 buybacks grow \u2192 wages grow \u2192 swarm grows. Each turn feeds the next one harder.</p>\n  </div>\n  <div class=\"ticker\"><div class=\"inner\">\n    <span>Capital cannot earn the rank. Labor cannot be bought.</span><span>A quarter of every dollar buys SLEUTH. Forever.</span>\n    <span>Capital cannot earn the rank. Labor cannot be bought.</span><span>A quarter of every dollar buys SLEUTH. Forever.</span>\n  </div></div>\n</section>\n\n</div><!-- /wrap -->\n\n<div id=\"mapmodal\" aria-hidden=\"true\">\n  <div class=\"mm-top\">\n    <div class=\"mm-title\">THE TREE OF KNOWLEDGE \u00b7 FULL MAP \u00b7 COMBINED CROSS-DOMAIN VIEW</div>\n    <div class=\"mm-controls\"><button id=\"mmIn\" aria-label=\"Zoom in\">+</button><button id=\"mmOut\" aria-label=\"Zoom out\">\u2212</button><button id=\"mmX\" aria-label=\"Close\">\u2715</button></div>\n  </div>\n  <svg id=\"fullmap\" viewBox=\"0 0 2400 1560\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"mapg\"></g></svg>\n  <div class=\"mm-hint\">DRAG TO PAN \u00b7 SCROLL TO ZOOM \u00b7 ESC TO CLOSE</div>\n</div>\n\n<footer>\n  <div class=\"fbrand\">SLEUTH</div>\n  <div>Same facts. None of the homework.</div>\n  <div style=\"margin-top:14px;opacity:0.6\">DEGEN EDITION \u00b7 JULY 2026</div>\n</footer>\n\n<button id=\"scrollTop\" aria-label=\"Back to top\">\u2191</button>\n\n<script>\nconst canvas=document.getElementById('rain');\nconst ctx=canvas.getContext('2d');\nfunction sizeCanvas(){canvas.width=window.innerWidth;canvas.height=window.innerHeight;}\nsizeCanvas();\nconst chars='01\u30a2\u30a4\u30a6\u30a8\u30aa\u30ab\u30ad\u30af\u30b1\u30b3\u30b5\u30b7\u30b9\u30bb\u30bd\u30bf\u30c1\u30c4\u30c6\u30c8\u30ca\u30cb\u30cc\u30cd\u30ce$SLEUTH//><';\nconst fontSize=14;\nlet drops;\nfunction initDrops(){drops=Array(Math.floor(canvas.width/fontSize)).fill(1);}\ninitDrops();\nwindow.addEventListener('resize',()=>{sizeCanvas();initDrops();});\nfunction drawRain(){\n  ctx.fillStyle='rgba(6,6,6,0.05)';\n  ctx.fillRect(0,0,canvas.width,canvas.height);\n  ctx.font=fontSize+'px Share Tech Mono,monospace';\n  for(let i=0;i<drops.length;i++){\n    const char=chars[Math.floor(Math.random()*chars.length)];\n    ctx.fillStyle='#00FF66';\n    ctx.fillText(char,i*fontSize,drops[i]*fontSize);\n    if(drops[i]*fontSize>canvas.height&&Math.random()>0.975)drops[i]=0;\n    drops[i]++;\n  }\n}\nconst motionOK=!window.matchMedia('(prefers-reduced-motion: reduce)').matches;\nif(motionOK)setInterval(drawRain,60);\n\nconst sections=document.querySelectorAll('.section');\nconst obs=new IntersectionObserver(entries=>{\n  entries.forEach(e=>{if(e.isIntersecting)e.target.classList.add('visible');});\n},{threshold:0.06});\nsections.forEach(s=>obs.observe(s));\n\nconst nav=document.getElementById('topnav');\nconst navLinks=document.querySelectorAll('#topnav .navnums a');\nconst navObs=new IntersectionObserver(entries=>{\n  entries.forEach(e=>{\n    if(e.isIntersecting){\n      navLinks.forEach(a=>a.classList.toggle('active',a.getAttribute('href')==='#'+e.target.id));\n      const act=document.querySelector('#topnav .navnums a.active');\n      if(act)act.scrollIntoView({block:'nearest',inline:'center',behavior:motionOK?'smooth':'auto'});\n    }\n  });\n},{rootMargin:'-40% 0px -55% 0px'});\nsections.forEach(s=>navObs.observe(s));\n\nconst btn=document.getElementById('scrollTop');\nwindow.addEventListener('scroll',()=>{\n  nav.classList.toggle('compact',window.scrollY>320);\n  btn.classList.toggle('visible',window.scrollY>600);\n},{passive:true});\nbtn.addEventListener('click',()=>window.scrollTo({top:0,behavior:motionOK?'smooth':'auto'}));\n\n(function(){\n  const svg=document.getElementById('relchart');\n  if(!svg)return;\n  const W=720,H=300,L=50,R=16,T=18,B=36;\n  function cal(m){\n    if(m<1)return 31.75;\n    if(m<=1)return 33.5;\n    if(m<=25)return 33.5+1.3125*(m-1);\n    return 65;\n  }\n  function ceil(m){return Math.min(cal(m)+Math.min(0.5*m,35),100);}\n  const x=m=>L+(W-L-R)*(m/30);\n  const y=p=>T+(H-T-B)*(1-p/100);\n  let g='';\n  [0,25,50,75,100].forEach(p=>{\n    g+='<line x1=\"'+L+'\" y1=\"'+y(p)+'\" x2=\"'+(W-R)+'\" y2=\"'+y(p)+'\" stroke=\"#1a1a1a\"/>';\n    g+='<text x=\"'+(L-8)+'\" y=\"'+(y(p)+4)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"end\">'+p+'%</text>';\n  });\n  [0,6,12,18,24,30].forEach(m=>{\n    g+='<text x=\"'+x(m)+'\" y=\"'+(H-12)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">mo '+m+'</text>';\n  });\n  let pCal='',pCeil='';\n  for(let m=0;m<=30;m++){\n    pCal+=(m?' L':'M')+x(m).toFixed(1)+' '+y(cal(m)).toFixed(1);\n    pCeil+=(m?' L':'M')+x(m).toFixed(1)+' '+y(ceil(m)).toFixed(1);\n  }\n  const area=pCal+' L'+x(30)+' '+y(0)+' L'+x(0)+' '+y(0)+' Z';\n  g+='<path d=\"'+area+'\" fill=\"rgba(0,255,102,0.07)\"/>';\n  g+='<path d=\"'+pCal+'\" fill=\"none\" stroke=\"#00FF66\" stroke-width=\"2\"/>';\n  g+='<path d=\"'+pCeil+'\" fill=\"none\" stroke=\"#FFD700\" stroke-width=\"1.6\" stroke-dasharray=\"6,5\"/>';\n  g+='<text x=\"'+x(16)+'\" y=\"'+(y(cal(16))+16)+'\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\">CALENDAR \u00b7 65% BY MO 25</text>';\n  g+='<text x=\"'+x(16)+'\" y=\"'+(y(ceil(16))-8)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\">+ EPOCH CEILING \u2192 100%</text>';\n  svg.innerHTML=g;\n})();\n\n\n(function(){\n  const svgEl=document.getElementById('runchart');\n  if(!svgEl)return;\n  const W=720,H=280,L=52,R=16,T=18,B=36;\n  const x=m=>L+(W-L-R)*(m/96), y=p=>T+(H-T-B)*(1-p/35);\n  let g='';\n  [0,10,20,35].forEach(p=>{g+='<line x1=\"'+L+'\" y1=\"'+y(p)+'\" x2=\"'+(W-R)+'\" y2=\"'+y(p)+'\" stroke=\"#1a1a1a\"/><text x=\"'+(L-8)+'\" y=\"'+(y(p)+4)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"end\">'+p+'%</text>';});\n  [0,24,48,72,96].forEach(m=>{g+='<text x=\"'+x(m)+'\" y=\"'+(H-12)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">mo '+m+'</text>';});\n  let p1='',p2='';\n  for(let m=0;m<=96;m++){\n    p1+=(m?' L':'M')+x(m).toFixed(1)+' '+y(Math.max(35-0.5*m,0)).toFixed(1);\n    p2+=(m?' L':'M')+x(m).toFixed(1)+' '+y(Math.max(35-0.3*m,0)).toFixed(1);\n  }\n  g+='<path d=\"'+p1+'\" fill=\"none\" stroke=\"#00FF66\" stroke-width=\"2\"/>';\n  g+='<path d=\"'+p2+'\" fill=\"none\" stroke=\"#FFD700\" stroke-width=\"1.6\" stroke-dasharray=\"6,5\"/>';\n  g+='<text x=\"'+x(18)+'\" y=\"'+(y(16)+16)+'\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\">FULL CEILING \u00b7 EMPTY MO 70</text>';\n  g+='<text x=\"'+x(42)+'\" y=\"'+(y(13)-8)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\">TYPICAL BILLS \u00b7 RUNS PAST MO 116</text>';\n  svgEl.innerHTML=g;\n})();\n\n(function(){\n  const svgEl=document.getElementById('gradechart');\n  if(!svgEl)return;\n  const vals=[10,20,30,45,65,90,120,155,200,250];\n  const W=720,H=260,L=52,R=16,T=18,B=36,max=260;\n  const bw=(W-L-R)/10;\n  const y=v=>T+(H-T-B)*(1-v/max);\n  let g='';\n  [0,50,100,150,200,250].forEach(v=>{g+='<line x1=\"'+L+'\" y1=\"'+y(v)+'\" x2=\"'+(W-R)+'\" y2=\"'+y(v)+'\" stroke=\"#1a1a1a\"/><text x=\"'+(L-8)+'\" y=\"'+(y(v)+4)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"end\">$'+v+'</text>';});\n  let lin='';\n  vals.forEach((v,i)=>{\n    const bx=L+i*bw+6, bwid=bw-12, by=y(v);\n    g+='<rect x=\"'+bx+'\" y=\"'+by+'\" width=\"'+bwid+'\" height=\"'+(y(0)-by)+'\" fill=\"rgba(0,255,102,0.18)\" stroke=\"#00FF66\"/>';\n    g+='<text x=\"'+(bx+bwid/2)+'\" y=\"'+(by-6)+'\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">$'+v+'</text>';\n    g+='<text x=\"'+(bx+bwid/2)+'\" y=\"'+(H-12)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">G'+(i+1)+'</text>';\n    const lv=(i+1)*25;\n    lin+=(i?' L':'M')+(bx+bwid/2)+' '+y(lv);\n  });\n  g+='<path d=\"'+lin+'\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.3\" stroke-dasharray=\"5,4\" opacity=\"0.7\"/>';\n  g+='<text x=\"'+(W-R-10)+'\" y=\"'+(y(250)+26)+'\" fill=\"#ffffff\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"end\" opacity=\"0.8\">LINEAR REFERENCE</text>';\n  svgEl.innerHTML=g;\n})();\n\n(function(){\n  const svgEl=document.getElementById('wabchart');\n  if(!svgEl)return;\n  const W=720,H=320,L=58,R=16,T=18,B=36,maxY=15000,M=36;\n  const lg=(x,Lc,k,x0)=>Lc/(1+Math.exp(-k*(x-x0)));\n  const A=m=>Math.round(lg(m,1500,0.18,18));\n  const Bh=m=>{const e=m<5?0.6+m*0.1:1;return Math.round(lg(m,7000,0.16,26)*e);};\n  const Ag=m=>m<=15?0:Math.round(lg(m,9000,0.28,30));\n  const x=m=>L+(W-L-R)*((m-1)/(M-1)), y=v=>T+(H-T-B)*(1-v/maxY);\n  let g='';\n  [0,5000,10000,15000].forEach(v=>{g+='<line x1=\"'+L+'\" y1=\"'+y(v)+'\" x2=\"'+(W-R)+'\" y2=\"'+y(v)+'\" stroke=\"#1a1a1a\"/><text x=\"'+(L-8)+'\" y=\"'+(y(v)+4)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"end\">'+(v/1000)+'k</text>';});\n  [1,12,24,36].forEach(m=>{g+='<text x=\"'+x(m)+'\" y=\"'+(H-12)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\" text-anchor=\"middle\">mo '+m+'</text>';});\n  let pa='',pb='',pc='';\n  for(let m=1;m<=M;m++){\n    pa+=(m>1?' L':'M')+x(m).toFixed(1)+' '+y(A(m)).toFixed(1);\n    pb+=(m>1?' L':'M')+x(m).toFixed(1)+' '+y(Bh(m)).toFixed(1);\n    pc+=(m>1?' L':'M')+x(m).toFixed(1)+' '+y(Bh(m)+Ag(m)).toFixed(1);\n  }\n  g+='<path d=\"'+pa+'\" fill=\"none\" stroke=\"#FFD700\" stroke-width=\"2\"/>';\n  g+='<path d=\"'+pb+'\" fill=\"none\" stroke=\"#00FF66\" stroke-width=\"2\"/>';\n  g+='<path d=\"'+pc+'\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.6\" stroke-dasharray=\"6,5\" opacity=\"0.85\"/>';\n  g+='<text x=\"'+x(30)+'\" y=\"'+(y(A(30))+18)+'\" fill=\"#FFD700\" font-size=\"10\" font-family=\"Share Tech Mono\">WORLD A \u00b7 ~1,500</text>';\n  g+='<text x=\"'+x(27)+'\" y=\"'+(y(Bh(27))-10)+'\" fill=\"#00FF66\" font-size=\"10\" font-family=\"Share Tech Mono\">WORLD B \u00b7 ~7,000</text>';\n  g+='<text x=\"'+x(22)+'\" y=\"'+(y(Bh(22)+Ag(22))-12)+'\" fill=\"#ffffff\" font-size=\"10\" font-family=\"Share Tech Mono\" opacity=\"0.9\">+ AGENT WAVE</text>';\n  svgEl.innerHTML=g;\n})();\n\n// \u2500\u2500 Tree of Knowledge \u00b7 Full Map \u2500\u2500\n(function(){\n  const modal=document.getElementById('mapmodal');\n  const openBtn=document.getElementById('openMap');\n  if(!modal||!openBtn)return;\n  const svgEl=document.getElementById('fullmap');\n  const mapg=document.getElementById('mapg');\n  const CL=[\n   {n:'\"AI Agent Szn\"',t:['$VIRTUAL','$AI16Z','$GAME','$AIXBT'],\n    w:[['0x4f..a1','smart money',0],['0x9c..3e','fund',0],['0xbe..77','sniper \u00b7 risk',1],['0x12..aa','market maker',0],['0x71..0d','whale',0],['0x5d..c2','bundler',0]],\n    s:[['@AlphaWolf','caller \u00b7 78%',0],['@ChainSleuth','analyst \u00b7 91%',0],['PM TRADER','sharp \u00b7 +312%',2],['@PumpCaller','shiller \u00b7 34%',0]],\n    f:[['TELEGRAM','@alpha_calls'],['DISCORD','AlphaDAO'],['PM MARKET','AI tokens'],['LINKED WALLET','0xaa..01']],\n    i:['@AlphaWolf bought $VIRTUAL 48h before he','called it. His wallet is 0x4f..a1.','Front-run, not alpha.']},\n   {n:'\"RWA Rotation\"',t:['$ONDO','$OM','$ENA','$USDtb'],\n    w:[['0x33..ee','fund',0],['0x88..2a','smart money',0],['0x44..7b','accumulator',0],['0x90..cd','market maker',1],['0x6e..18','treasury',0],['0x21..f4','whale',0]],\n    s:[['@RWAdesk','analyst \u00b7 84%',0],['@TreasuryW','analyst \u00b7 88%',0],['PM TRADER','sharp',2],['@YieldShill','shiller \u00b7 41%',0]],\n    f:[['TELEGRAM','@rwa_alpha'],['DISCORD','RWA insiders'],['PM MARKET','rate-cut odds'],['LINKED WALLET','0xcd..72']],\n    i:['0x90 & 0x6e bounce $OM between them','to fake volume. Liquidity is hollow,','real depth near zero.']},\n   {n:'\"Memecoin Szn\"',t:['$WIF','$POPCAT','$PNUT','$MOODENG'],\n    w:[['0x33..7f','drainer',1],['0x7c..d2','sniper',0],['0x0a..55','bundler',0],['0x19..b3','flipper',0],['0xe2..40','insider',1],['0xbe..77','sniper \u00b7 risk',1]],\n    s:[['@DegenKing','caller \u00b7 62%',0],['@RugRadar','analyst \u00b7 95%',0],['PM TRADER','noise',2],['@MoonBoy','shiller \u00b7 22%',0]],\n    f:[['TELEGRAM','@degen_pumps'],['DISCORD','PumpDAO'],['PM MARKET','meme index'],['LINKED WALLET','0x55..9a']],\n    i:['Drainer ring 0xbe + 0x33 hit 3 tokens,','each pre-shilled by @MoonBoy.','Coordinated rug pipeline.']},\n   {n:'\"Restaking Meta\"',t:['$EIGEN','$ETHFI','$REZ','$PENDLE'],\n    w:[['0xd1..04','smart money',0],['0x2b..9f','fund',0],['0x77..e3','farmer',0],['0xc4..18','whale',0],['0x09..aa','accumulator',0],['0x6f..b1','sybil',1]],\n    s:[['@RestakeAlpha','analyst \u00b7 80%',0],['@PointsFarmer','caller \u00b7 58%',0],['PM TRADER','sharp',2],['@APYshill','shiller \u00b7 38%',0]],\n    f:[['TELEGRAM','@restake_intel'],['DISCORD','EigenDAO'],['PM MARKET','TVL targets'],['LINKED WALLET','0x3a..d7']],\n    i:['40 wallets farmed $EIGEN points, all','funded by 0x77. One operator, not 40','believers. Sybil airdrop.']},\n   {n:'\"Perps & Prediction\"',t:['$HYPE','$DYDX','$GMX','$AEVO'],\n    w:[['0xf2..55','insider',1],['0x8c..1d','whale',0],['0x4a..70','market maker',0],['0x91..e6','flipper',0],['0x0d..2c','smart money',0],['0x33..bb','sniper',0]],\n    s:[['PM TRADER','sharp \u00b7 +540%',2],['@PerpDesk','analyst \u00b7 86%',0],['PM TRADER','insider',2],['@LeverageKing','shiller \u00b7 29%',0]],\n    f:[['TELEGRAM','@perp_flows'],['DISCORD','Perp insiders'],['PM MARKET','resolution edge'],['LINKED WALLET','0x7e..39']],\n    i:['0xf2 took the YES side 6h before','resolution news. Same operator as','@PerpDesk. Insider, not edge.']},\n   {n:'\"Stablecoin Yield\"',t:['$ENA','$USDe','$SKY','$FXS'],\n    w:[['0xab..c1','treasury',0],['0x52..8e','fund',0],['0x6d..4f','whale',0],['0xe9..07','market maker',0],['0x1c..a3','accumulator',0],['0x84..ff','risk',1]],\n    s:[['@StableWatch','analyst \u00b7 90%',0],['@YieldDesk','analyst \u00b7 83%',0],['PM TRADER','sharp',2],['@FarmPump','shiller \u00b7 33%',0]],\n    f:[['TELEGRAM','@stable_intel'],['DISCORD','YieldDAO'],['PM MARKET','depeg odds'],['LINKED WALLET','0xbb..2d']],\n    i:['Treasury cluster 0xab pulled USDe','liquidity 2 days before the depeg','wobble. Early-warning signal.']}\n  ];\n  const FM='Share Tech Mono',FO='Orbitron';\n  function txt(x,y,fill,size,t,anchor,fam,op){return '<text x=\"'+x+'\" y=\"'+y+'\" fill=\"'+fill+'\" font-size=\"'+size+'\" font-family=\"'+(fam||FM)+'\" text-anchor=\"'+(anchor||'middle')+'\"'+(op?' opacity=\"'+op+'\"':'')+'>'+t+'</text>';}\n  function cluster(c,ox,oy){\n    let s='<rect x=\"'+(ox+10)+'\" y=\"'+(oy+10)+'\" width=\"780\" height=\"760\" fill=\"none\" stroke=\"rgba(0,255,102,0.12)\"/>';\n    const nx=ox+400, ny=oy+52;\n    // edges narrative->tokens\n    const tx=[ox+140,ox+320,ox+500,ox+680], ty=oy+185;\n    tx.forEach(t=>{s+='<line x1=\"'+nx+'\" y1=\"'+(ny+22)+'\" x2=\"'+t+'\" y2=\"'+(ty-32)+'\" stroke=\"#00cc52\" stroke-width=\"1\"/>';});\n    // wallets\n    const wx=[ox+105,ox+225,ox+345,ox+465,ox+585,ox+705], wy=oy+345;\n    // edges tokens->wallets\n    for(let i=0;i<4;i++){\n      s+='<line x1=\"'+tx[i]+'\" y1=\"'+(ty+32)+'\" x2=\"'+wx[i]+'\" y2=\"'+(wy-32)+'\" stroke=\"#00cc52\" stroke-width=\"1\" opacity=\"0.8\"/>';\n      s+='<line x1=\"'+tx[i]+'\" y1=\"'+(ty+32)+'\" x2=\"'+wx[i+2]+'\" y2=\"'+(wy-32)+'\" stroke=\"#00cc52\" stroke-width=\"1\" opacity=\"0.45\"/>';\n    }\n    // socials\n    const sx=[ox+150,ox+330,ox+510,ox+685], sy=oy+498;\n    // cross-domain dashed\n    s+='<line x1=\"'+wx[0]+'\" y1=\"'+(wy+32)+'\" x2=\"'+sx[0]+'\" y2=\"'+(sy-22)+'\" stroke=\"#ffffff\" stroke-width=\"1.2\" stroke-dasharray=\"6,5\" opacity=\"0.85\"/>';\n    s+=txt((wx[0]+sx[0])/2-46,(wy+sy)/2+8,'#ffffff',12,'same actor','start',FM,0.85);\n    s+='<line x1=\"'+wx[4]+'\" y1=\"'+(wy+32)+'\" x2=\"'+sx[2]+'\" y2=\"'+(sy-22)+'\" stroke=\"#ffffff\" stroke-width=\"1.2\" stroke-dasharray=\"6,5\" opacity=\"0.85\"/>';\n    s+=txt((wx[4]+sx[2])/2+10,(wy+sy)/2+8,'#ffffff',12,'same actor','start',FM,0.85);\n    // narrative node\n    s+='<rect x=\"'+(nx-130)+'\" y=\"'+(ny-26)+'\" width=\"260\" height=\"52\" rx=\"3\" fill=\"#0c0c0c\" stroke=\"#FFD700\" stroke-width=\"1.5\"/>';\n    s+=txt(nx,ny-6,'#FFD700',13,'NARRATIVE',null,FO);\n    s+=txt(nx,ny+14,'#FFD700',15,c.n);\n    // tokens\n    c.t.forEach((t,i)=>{\n      s+='<circle cx=\"'+tx[i]+'\" cy=\"'+ty+'\" r=\"34\" fill=\"#0c0c0c\" stroke=\"#FFD700\"/>';\n      s+=txt(tx[i],ty+5,'#FFD700',13,t);\n    });\n    // wallets\n    c.w.forEach((w,i)=>{\n      const col=w[2]?'#ff4444':'#00FF66';\n      s+='<circle cx=\"'+wx[i]+'\" cy=\"'+wy+'\" r=\"34\" fill=\"#0c0c0c\" stroke=\"'+col+'\"/>';\n      s+=txt(wx[i],wy-2,col,12,w[0]);\n      s+=txt(wx[i],wy+14,col,10,w[1]);\n    });\n    // socials / pm\n    c.s.forEach((so,i)=>{\n      const col=so[2]===2?'#00FF66':'#ffffff';\n      s+='<rect x=\"'+(sx[i]-85)+'\" y=\"'+(sy-22)+'\" width=\"170\" height=\"46\" rx=\"3\" fill=\"#0c0c0c\" stroke=\"'+col+'\"/>';\n      s+=txt(sx[i],sy-3,col,12,so[0]);\n      s+=txt(sx[i],sy+14,col,10,so[1]);\n    });\n    // infra\n    const fy=oy+595;\n    c.f.forEach((ff,i)=>{\n      const fx2=ox+110+i*195;\n      s+='<rect x=\"'+(fx2-85)+'\" y=\"'+(fy-20)+'\" width=\"170\" height=\"42\" rx=\"3\" fill=\"#0c0c0c\" stroke=\"#00cc52\" opacity=\"0.9\"/>';\n      s+=txt(fx2,fy-3,'#00cc52',10,ff[0],null,FO);\n      s+=txt(fx2,fy+13,'#00FF66',11,ff[1]);\n    });\n    // insight\n    const iy=oy+660;\n    s+='<rect x=\"'+(ox+90)+'\" y=\"'+iy+'\" width=\"620\" height=\"92\" rx=\"3\" fill=\"rgba(255,215,0,0.05)\" stroke=\"#FFD700\"/>';\n    s+=txt(ox+110,iy+24,'#FFD700',12,'\u25ce INSIGHT','start',FO);\n    c.i.forEach((line,j)=>{s+=txt(ox+110,iy+46+j*18,'#FFD700',13,line,'start');});\n    return s;\n  }\n  let built=false;\n  function build(){\n    let out='<rect x=\"0\" y=\"0\" width=\"2400\" height=\"1560\" fill=\"#060606\"/>';\n    CL.forEach((c,i)=>{out+=cluster(c,(i%3)*800,Math.floor(i/3)*780);});\n    mapg.innerHTML=out;\n    built=true;\n  }\n  let tx=0,ty2=0,k=1;\n  function apply(){mapg.setAttribute('transform','translate('+tx+' '+ty2+') scale('+k+')');}\n  function zoom(f){k=Math.min(6,Math.max(0.4,k*f));apply();}\n  function open(){if(!built)build();tx=0;ty2=0;k=1;apply();modal.classList.add('open');modal.setAttribute('aria-hidden','false');document.body.style.overflow='hidden';}\n  function close(){modal.classList.remove('open');modal.setAttribute('aria-hidden','true');document.body.style.overflow='';}\n  openBtn.addEventListener('click',open);\n  document.getElementById('mmX').addEventListener('click',close);\n  document.getElementById('mmIn').addEventListener('click',()=>zoom(1.25));\n  document.getElementById('mmOut').addEventListener('click',()=>zoom(0.8));\n  document.addEventListener('keydown',e=>{if(e.key==='Escape')close();});\n  svgEl.addEventListener('wheel',e=>{e.preventDefault();zoom(e.deltaY<0?1.12:0.89);},{passive:false});\n  let drag=false,lx=0,ly=0;\n  svgEl.addEventListener('pointerdown',e=>{drag=true;lx=e.clientX;ly=e.clientY;svgEl.setPointerCapture(e.pointerId);});\n  svgEl.addEventListener('pointermove',e=>{\n    if(!drag)return;\n    const r=svgEl.getBoundingClientRect();\n    const f=2400/r.width;\n    tx+=(e.clientX-lx)*f; ty2+=(e.clientY-ly)*f;\n    lx=e.clientX; ly=e.clientY; apply();\n  });\n  svgEl.addEventListener('pointerup',()=>{drag=false;});\n  svgEl.addEventListener('pointercancel',()=>{drag=false;});\n})();\n</script>\n\n<script>\n(function(){\n  var input=document.getElementById('docsearch'),box=document.getElementById('searchresults');\n  var sections=[];\n  document.querySelectorAll('section[id],div.section[id],[id^=\"s0\"],[id^=\"s1\"]').forEach(function(el){\n    if(!/^s\\d\\d$/.test(el.id))return;\n    var h=el.querySelector('h2'); if(!h)return;\n    sections.push({id:el.id,title:h.textContent.trim(),text:el.textContent.replace(/\\s+/g,' ')});\n  });\n  function esc(s){return s.replace(/[&<>\"]/g,function(c){return{'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];});}\n  input.addEventListener('input',function(){\n    var q=input.value.trim().toLowerCase();\n    box.innerHTML='';\n    if(q.length<2){box.classList.remove('open');return;}\n    var hits=0;\n    sections.forEach(function(s){\n      var lower=s.text.toLowerCase(),i=lower.indexOf(q);\n      var inTitle=s.title.toLowerCase().indexOf(q)>-1;\n      if(i<0&&!inTitle)return;\n      hits++;\n      var snip='';\n      if(i>-1){\n        var st=Math.max(0,i-45);\n        snip=(st>0?'\u2026':'')+esc(s.text.substr(st,110))+'\u2026';\n        var re=new RegExp('('+q.replace(/[.*+?^${}()|[\\]\\\\]/g,'\\\\$&')+')','ig');\n        snip=snip.replace(re,'<mark>$1</mark>');\n      }\n      var a=document.createElement('a');\n      a.href='#'+s.id;\n      a.innerHTML='<span class=\"rsec\">'+esc(s.title)+'</span>'+snip;\n      a.addEventListener('click',function(){box.classList.remove('open');input.blur();});\n      box.appendChild(a);\n    });\n    if(!hits)box.innerHTML='<div class=\"noresult\">nothing found, try the WP</div>';\n    box.classList.add('open');\n  });\n  document.addEventListener('click',function(e){if(!e.target.closest('#searchbox'))box.classList.remove('open');});\n  document.addEventListener('keydown',function(e){if(e.key==='Escape'){box.classList.remove('open');input.blur();}});\n})();\n</script>\n</body>\n</html>" } style={{ width: "100%", minHeight: "100vh", border: "none", display: "block", background: "#060606" }} />
</div>
