f65dc9ecbb
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
105 lines
7.5 KiB
HTML
105 lines
7.5 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>PolHunter</title>
|
|
<meta name="description" content="Missions across the network. Visit a site, find the thing, get a drip of POL to your wallet.">
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:title" content="PolHunter: Visit it. Find it. Get paid in POL.">
|
|
<meta property="og:description" content="Missions across our sites, one code to find, a random drip of POL straight to your wallet. On chain, with a link to prove it.">
|
|
<meta property="og:image" content="https://polhunter.com/promo/polhunter-1200x630.jpg">
|
|
<meta property="og:url" content="https://polhunter.com/">
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:image" content="https://polhunter.com/promo/polhunter-1200x630.jpg">
|
|
<link rel="stylesheet" href="/style.css?v=12">
|
|
</head>
|
|
<body>
|
|
<div class="wrap">
|
|
<header class="top">
|
|
<a class="mark" href="/"><span class="coin"></span>PolHunter</a>
|
|
<nav class="nav">
|
|
<a class="btn ghost sm" href="#start">Get started</a>
|
|
<a class="btn ghost sm" href="#how">How it works</a>
|
|
<a class="btn ghost sm" href="/leaders">Leaderboard</a>
|
|
<a class="btn sm" id="signin" href="https://instantadpay.com/api/my/polhunter">Open my board</a>
|
|
</nav>
|
|
</header>
|
|
|
|
<section class="hero">
|
|
<picture class="hero-art" aria-hidden="true">
|
|
<source type="image/webp" media="(max-width:820px)" srcset="/img/hero-800.webp">
|
|
<source type="image/webp" srcset="/img/hero.webp">
|
|
<img src="/img/hero.jpg" alt="" fetchpriority="high" decoding="async">
|
|
</picture>
|
|
<button class="play" id="play" type="button" aria-label="Watch the 30-second teaser"><span class="tri"></span>Watch the<span class="lbl-long"> 30-second</span> teaser</button>
|
|
<div class="hero-copy">
|
|
<span class="pill"><i></i> Paying in POL on Polygon</span>
|
|
<h1>Visit it. Find it.<br><b>Get paid in POL.</b></h1>
|
|
<p>Every mission is a few minutes on one of our sites, one thing to find, and a drip of POL straight to your wallet when you find it. Your code is yours alone, and the hiding place moves.</p>
|
|
<a class="btn" href="https://instantadpay.com/api/my/polhunter">Start hunting</a>
|
|
<a class="btn ghost" href="#start" style="margin-left:8px">Before your first hunt</a>
|
|
<p id="signinNote" style="font-size:13px;color:var(--dim);margin-top:14px;display:none">Sign in with your InstantAdPay account: the button sends you through InstantAdPay and straight back here. No password, no new account.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section" id="start">
|
|
<h2>Before your first hunt</h2>
|
|
<div class="sub">Drips are paid to the wallet on your InstantAdPay account. Three steps, once.</div>
|
|
<div class="steps">
|
|
<div class="step"><b>Create your free InstantAdPay account</b> at <a href="https://instantadpay.com/?from=polhunter" target="_blank" rel="noopener">instantadpay.com</a>. Email first, no wallet needed to sign up.</div>
|
|
<div class="step"><b>Link your wallet.</b> In your InstantAdPay dashboard open <a href="https://instantadpay.com/my#wallet" target="_blank" rel="noopener">Wallet</a>, press connect wallet and approve. That address is where every drip lands, on Polygon.</div>
|
|
<div class="step"><b>Open your board.</b> Press <a href="https://instantadpay.com/api/my/polhunter">Open my board</a> from your dashboard or up top. No new password: InstantAdPay signs you straight into PolHunter.</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section" id="how">
|
|
<h2>How a hunt works</h2>
|
|
<div class="sub">Three steps, one code, real POL.</div>
|
|
<div class="steps">
|
|
<div class="step"><b>Pick a mission</b> on your board. Each one names a site and what to find there.</div>
|
|
<div class="step"><b>Go find it.</b> Spend the time on the site. Your personal code appears when you have, somewhere on the page.</div>
|
|
<div class="step"><b>Type the code.</b> If it is yours, a random drip between the day's range lands in your wallet, on-chain, with a link to prove it.</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section" id="ledger">
|
|
<h2>Paid so far</h2>
|
|
<div class="sub">Every drip is a Polygon transaction you can open. See who is finding the most on the <a href="/leaders">leaderboard</a>.</div>
|
|
<div class="stats" id="stats"></div>
|
|
<div class="ledger" id="recent"><div class="row"><span class="site">Loading…</span></div></div>
|
|
</section>
|
|
|
|
<div class="adslot" data-ad="home-footer"><!-- nas: 468x60 on phones, 728x90 on wider screens --><script>(function(){var m=window.innerWidth<600;document.write('<scr'+'ipt src="https://www.networkadspace.com/showadss.php?'+(m?'w=468&h=60&n=1&bw=468&bh=60':'w=728&h=90&n=1&bw=728&bh=90')+'&c=999"></scr'+'ipt>');})();</script></div>
|
|
|
|
<footer class="foot">
|
|
PolHunter rewards completed missions. Rewards are not income and are not guaranteed; the daily pool is limited, and when it is spent claims close until midnight Central. Drips are random within the posted range. Cryptocurrency involves risk of loss. Hunters sign in with an InstantAdPay account; no account is created here.
|
|
<br><a href="https://instantadpay.com">InstantAdPay</a> · <a href="/admin" rel="nofollow" style="color:var(--dim)">·</a>
|
|
</footer>
|
|
</div>
|
|
<script>
|
|
(async () => {
|
|
if (new URLSearchParams(location.search).get('signin')) document.getElementById('signinNote').style.display = 'block';
|
|
// the teaser: the play button swaps the hero photograph for the video, sound on, in place
|
|
document.getElementById('play').addEventListener('click', () => {
|
|
const hero = document.querySelector('.hero'); hero.classList.add('playing');
|
|
const art = hero.querySelector('.hero-art'); const v = document.createElement('video');
|
|
v.controls = true; v.autoplay = true; v.playsInline = true; v.poster = '/video/polhunter-teaser-poster.jpg'; v.src = '/video/polhunter-teaser.mp4?v=20260921a';
|
|
art.replaceWith(v); v.className = 'hero-video'; v.play().catch(() => {});
|
|
});
|
|
try {
|
|
const r = await (await fetch('/api/ledger')).json();
|
|
const t = r.totals || {};
|
|
document.getElementById('stats').innerHTML = [['POL paid', (t.pol || 0).toLocaleString('en-US', { maximumFractionDigits: 2 })], ['drips', t.paid || 0], ['hunters', t.hunters || 0], ['today', (t.today || 0).toLocaleString('en-US', { maximumFractionDigits: 2 }) + ' POL']]
|
|
.map(([l, v]) => '<div class="stat"><div class="v num">' + v + '</div><div class="l">' + l + '</div></div>').join('');
|
|
const cfg = await (await fetch('/api/config')).json();
|
|
// arrived on a member's share link: sign-ups go to that member's InstantAdPay join page
|
|
if (cfg.ref) { document.querySelectorAll('a[href="https://instantadpay.com/?from=polhunter"]').forEach(a => { a.href = cfg.joinUrl; }); const inv = document.createElement('span'); inv.className = 'pill'; inv.style.marginLeft = '10px'; inv.innerHTML = '<i></i> Invited by @' + cfg.ref.replace(/[<>&"]/g, ''); document.querySelector('.hero-copy .pill').after(inv); }
|
|
document.getElementById('recent').innerHTML = (r.recent || []).length ? r.recent.map(x => '<div class="row"><span>' + x.who + '</span><span class="site">' + x.site + '</span><span class="pol">+' + x.pol + ' POL</span><a class="when" href="' + cfg.explorer + '/tx/' + x.tx + '" target="_blank" rel="noopener">verify ↗</a></div>').join('')
|
|
: '<div class="row"><span class="site">No drips yet. The first hunter gets the first line.</span></div>';
|
|
} catch (e) {}
|
|
})();
|
|
</script>
|
|
</body>
|
|
</html>
|