37a2b97bfd
- New 'featured' type: headline + link + 1/2/7 day run, flat up-front price (40cr/day) - Composer discloses dilution (N links share the rotation, yours makes N+1) before buying - Overview featured strip shows the live rotation; expires automatically Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
564 lines
34 KiB
HTML
564 lines
34 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>Member area | InstantAdPay</title>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sora:wght@600;700;800&display=swap">
|
||
<link rel="stylesheet" href="/assets/site.css?v=20260906d">
|
||
</head>
|
||
<body class="bo-body">
|
||
|
||
<!-- ── signed-out: centered auth ─────────────────────────── -->
|
||
<div id="authArea">
|
||
<div class="wrap" style="max-width:560px">
|
||
<section class="hero" style="padding:64px 0 10px;text-align:left">
|
||
<p class="eyebrow">Member area</p>
|
||
<h1 style="font-size:34px">Sign <em>in</em></h1>
|
||
<p class="lead" id="introLead" style="font-size:16px">Join free with your email. Your wallet only
|
||
comes out when you buy a package or switch on payouts, and it stays yours the whole time.</p>
|
||
</section>
|
||
<div class="card" id="magicCard" hidden>
|
||
<h3>Sign in or join free</h3>
|
||
<p class="muted small">Type your email and we send a 6-digit code. No password to invent,
|
||
no password to forget. New emails get a free account automatically.</p>
|
||
<p><input id="mcEmail" type="email" placeholder="Email" autocomplete="email" style="width:100%"></p>
|
||
<p id="mcCodeRow" hidden><input id="mcCode" inputmode="numeric" placeholder="6-digit code" style="width:100%"></p>
|
||
<button class="btn" id="mcSendBtn">Email me a code</button>
|
||
<button class="btn" id="mcVerifyBtn" hidden>Sign in</button>
|
||
<button class="btn sec small" id="mcResend" hidden>Send a fresh code</button>
|
||
</div>
|
||
<div id="passCards">
|
||
<div class="card">
|
||
<h3>Create your free account</h3>
|
||
<p><input id="suEmail" type="email" placeholder="Email" autocomplete="email" style="width:100%"></p>
|
||
<p><input id="suPass" type="password" placeholder="Password (8+ characters)" autocomplete="new-password" style="width:100%"></p>
|
||
<button class="btn" id="signupBtn">Join free</button>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Log in</h3>
|
||
<p><input id="liEmail" type="email" placeholder="Email" autocomplete="email" style="width:100%"></p>
|
||
<p><input id="liPass" type="password" placeholder="Password" autocomplete="current-password" style="width:100%"></p>
|
||
<button class="btn sec" id="loginBtn">Log in</button>
|
||
</div>
|
||
</div>
|
||
<p class="small muted">Crypto-native? You can also <a href="#" id="walletSigninLink">sign in with just your wallet</a>.
|
||
One free signature, no email needed.</p>
|
||
<p class="small muted"><a href="/">← Back to the site</a></p>
|
||
<div class="card" id="adSlotLogin" hidden></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── login ad interstitial: sponsor opens in a new tab, timer runs here ── -->
|
||
<div id="loginGate" class="lgate" hidden>
|
||
<div class="lgate-bar">
|
||
<span class="lg-brand">Instant<em>AdPay</em></span>
|
||
<span class="lgate-note small muted" id="lgStatus">Login ad sponsor — click "Open Ad" to begin.</span>
|
||
<span class="lg-timer mono" id="lgTimer" hidden>…</span>
|
||
<button class="btn small" id="lgContinue" type="button" hidden>Go to dashboard</button>
|
||
</div>
|
||
<div class="lgate-body">
|
||
<div class="lgate-card">
|
||
<p class="eyebrow">Today's login sponsor</p>
|
||
<div id="lgCreative"></div>
|
||
<p style="margin-top:18px"><button class="btn" id="lgOpen" type="button">Open Ad</button></p>
|
||
<p class="small muted">The ad opens in a new tab. The timer counts down right here —
|
||
when it hits zero, your dashboard button appears above.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── welcome tour: meet your 3-level line, then unlock welcome credits ── -->
|
||
<div id="gauntGate" class="lgate" hidden>
|
||
<div class="lgate-bar">
|
||
<span class="lg-brand">Instant<em>AdPay</em></span>
|
||
<span class="lgate-note small muted" id="ggNote">Welcome tour: meet the three levels your growth pays.</span>
|
||
<span class="lg-timer mono" id="ggTimer">…</span>
|
||
</div>
|
||
<div class="ggmeta small muted" id="ggWho"></div>
|
||
<iframe class="lgate-frame" id="ggFrame" sandbox="allow-scripts allow-same-origin allow-forms allow-popups" referrerpolicy="no-referrer" title="Team member site"></iframe>
|
||
<div class="lgate-bar" style="border-top:1px solid var(--line);border-bottom:0">
|
||
<span class="small muted" id="ggProgress"></span>
|
||
<button class="btn small" id="ggClaim" type="button" hidden>Claim your welcome credits</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── sponsor message modal: unmissable on sign-in ── -->
|
||
<div id="msgModal" class="modal-back" hidden>
|
||
<div class="modal-card">
|
||
<p class="eyebrow" id="mmFrom">A message from your sponsor</p>
|
||
<h3 id="mmSubject" style="margin:.2em 0 .6em"></h3>
|
||
<div id="mmBody" class="promo-block ib-rich" style="max-height:50vh;overflow:auto"></div>
|
||
<p style="margin-top:16px;text-align:right"><button class="btn" id="mmAck" type="button">Got it</button></p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── signed-in: back-office shell ──────────────────────── -->
|
||
<div id="memberArea" class="bo" hidden>
|
||
<aside class="bo-side" id="boSide">
|
||
<a class="logo" href="/">Instant<b>AdPay</b></a>
|
||
<nav class="bo-menu" aria-label="Member menu">
|
||
<button data-pane="overview" class="on" type="button"><svg viewBox="0 0 24 24"><rect x="3" y="3" width="8" height="8" rx="2"/><rect x="13" y="3" width="8" height="8" rx="2"/><rect x="3" y="13" width="8" height="8" rx="2"/><rect x="13" y="13" width="8" height="8" rx="2"/></svg>Overview</button>
|
||
<button data-pane="line" type="button"><svg viewBox="0 0 24 24"><circle cx="12" cy="7" r="3.2"/><circle cx="5" cy="17" r="2.6"/><circle cx="19" cy="17" r="2.6"/><path d="M12 10v3M12 13l-5 2M12 13l5 2"/></svg>My line</button>
|
||
<button data-pane="buy" type="button"><svg viewBox="0 0 24 24"><circle cx="9" cy="20" r="1.6"/><circle cx="17" cy="20" r="1.6"/><path d="M3 4h2l2.4 11.2A2 2 0 0 0 9.4 17h8.2a2 2 0 0 0 2-1.6L21 8H6"/></svg>Buy packages</button>
|
||
<button data-pane="campaigns" type="button"><svg viewBox="0 0 24 24"><path d="M3 11l14-5v12L3 13v-2z"/><path d="M17 8a4 4 0 0 1 0 8M7 13v5a2 2 0 0 0 4 0v-3"/></svg>Campaigns</button>
|
||
<button data-pane="earn" type="button"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.5"/><path d="M12 7.5v9M9 10c0-1.1 1.3-1.8 3-1.8s3 .7 3 1.8-1.3 1.6-3 1.8-3 .7-3 1.8 1.3 1.8 3 1.8 3-.7 3-1.8"/></svg>Earn credits<span class="pill" id="inboxBadge" hidden></span></button>
|
||
<button data-pane="earnings" type="button"><svg viewBox="0 0 24 24"><path d="M4 17l5-5 4 3 7-8"/><path d="M14 7h6v6"/></svg>Earnings</button>
|
||
<button data-pane="promo" type="button"><svg viewBox="0 0 24 24"><path d="M7 10s5-1 9-5v14c-4-4-9-5-9-5H5a2 2 0 0 1-2-2v0a2 2 0 0 1 2-2h2z"/><path d="M8 15l1 5h2l-1-5"/></svg>Promo tools</button>
|
||
<button data-pane="wallet" type="button"><svg viewBox="0 0 24 24"><rect x="3" y="6" width="18" height="13" rx="2"/><path d="M3 10h18"/><circle cx="16.5" cy="14.5" r="1.4"/></svg>Wallet</button>
|
||
<button data-pane="profile" type="button"><svg viewBox="0 0 24 24"><circle cx="12" cy="8.5" r="3.6"/><path d="M4.5 20c1.6-3.6 4.2-5.2 7.5-5.2s5.9 1.6 7.5 5.2"/></svg>Profile</button>
|
||
</nav>
|
||
<div class="bo-links" id="adSlotSide" hidden style="border-top:1px solid var(--line)"></div>
|
||
<div class="bo-links">
|
||
<span class="bo-cap">Site</span>
|
||
<a href="/">Ad packages</a>
|
||
<a href="/ledger">Live ledger</a>
|
||
<a href="/contract">The contract</a>
|
||
</div>
|
||
<div class="bo-foot">
|
||
<span id="navWallet" class="small muted">…</span>
|
||
<a href="#" id="logoutLink" class="small">Log out</a>
|
||
</div>
|
||
</aside>
|
||
|
||
<div class="bo-main">
|
||
<header class="bo-top">
|
||
<button id="boBurger" aria-label="Menu" type="button">☰</button>
|
||
<h2 id="boTitle" style="margin:0">Overview</h2>
|
||
<span class="bo-rehearsal small" id="boRehearsal" hidden></span>
|
||
</header>
|
||
<main class="bo-content">
|
||
|
||
<div class="pane" id="pane-overview">
|
||
<div class="grid" style="grid-template-columns:repeat(auto-fit,minmax(215px,1fr));margin-top:0">
|
||
<div class="statx">
|
||
<div class="pl"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.5"/><path d="M12 7.5v9M9.2 10c0-1 1.2-1.7 2.8-1.7s2.8.7 2.8 1.7-1.2 1.5-2.8 1.7-2.8.7-2.8 1.7 1.2 1.7 2.8 1.7 2.8-.7 2.8-1.7"/></svg></div>
|
||
<div><div class="nv" id="dbCredits">0</div><div class="lb">Ad credits</div><span class="chip flat" id="dbCreditsSub"></span></div>
|
||
</div>
|
||
<div class="statx c-cyan">
|
||
<div class="pl"><svg viewBox="0 0 24 24"><rect x="3" y="6" width="18" height="13" rx="2"/><path d="M3 10h18"/><circle cx="16.5" cy="14.5" r="1.4"/></svg></div>
|
||
<div><div class="nv mono" id="dbEarned">0</div><div class="lb">POL earned</div><span class="chip" id="dbEarnedChip" hidden></span></div>
|
||
</div>
|
||
<div class="statx c-violet">
|
||
<div class="pl"><svg viewBox="0 0 24 24"><circle cx="12" cy="7" r="3.2"/><circle cx="5" cy="17" r="2.6"/><circle cx="19" cy="17" r="2.6"/><path d="M12 10v3M12 13l-5 2M12 13l5 2"/></svg></div>
|
||
<div><div class="nv" id="dbBuyers">0</div><div class="lb">Qualifying buyers</div><span class="chip" id="dbBuyersChip" hidden></span></div>
|
||
</div>
|
||
<div class="statx c-amber">
|
||
<div class="pl"><svg viewBox="0 0 24 24"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M19 8v6M22 11h-6"/></svg></div>
|
||
<div><div class="nv" id="dbTeam">0</div><div class="lb">Joined your line</div><span class="chip warm" id="dbTeamChip" hidden></span></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid c2" style="margin-top:16px">
|
||
<div class="card">
|
||
<div class="card-head"><h3>Recent payouts</h3><span class="sub" id="chEarnSub">on-chain, newest last</span></div>
|
||
<div class="barchart" id="chEarnBars"></div>
|
||
<div class="chart-x" id="chEarnX"></div>
|
||
</div>
|
||
<div class="card">
|
||
<div class="card-head"><h3>Credit composition</h3><span class="sub">live balances</span></div>
|
||
<div class="donut-wrap">
|
||
<svg id="chDonut" width="150" height="150" viewBox="0 0 42 42" role="img" aria-label="Credit composition"></svg>
|
||
<div class="donut-legend" id="chDonutLegend"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="grid c2">
|
||
<div class="card">
|
||
<div class="card-head"><h3>Today's viewing</h3><span class="sub">daily claim progress</span></div>
|
||
<div class="donut-wrap">
|
||
<svg id="chRing" width="130" height="130" viewBox="0 0 42 42" role="img" aria-label="Daily view progress"></svg>
|
||
<div class="donut-legend" id="chRingLegend"></div>
|
||
</div>
|
||
</div>
|
||
<div class="card">
|
||
<div class="card-head"><h3>Campaign delivery</h3><span class="sub" id="chCampSub">impressions per campaign</span></div>
|
||
<div class="barchart" id="chCampBars"></div>
|
||
<div class="chart-x" id="chCampX"></div>
|
||
</div>
|
||
</div>
|
||
<div class="card next-card" id="nextCard">
|
||
<div class="nc-head">
|
||
<div class="pl"><svg viewBox="0 0 24 24"><path d="M6 3v18"/><path d="M6 4h11l-2.5 4 2.5 4H6"/></svg></div>
|
||
<div>
|
||
<h3 style="margin:0">Your next move</h3>
|
||
<p class="muted small" id="nextMove" style="margin:5px 0 0">…</p>
|
||
</div>
|
||
</div>
|
||
<div class="nc-steps" id="ncSteps"></div>
|
||
</div>
|
||
<div class="card" id="featuredCard" hidden>
|
||
<div class="card-head"><h3>Featured links</h3><span class="sub" id="featSub">member links in rotation</span></div>
|
||
<div id="featStrip" class="feat-strip"></div>
|
||
</div>
|
||
<div class="card" id="badgeCard" hidden>
|
||
<div class="card-head"><h3>Your achievements</h3><span class="sub">unlock as you build</span></div>
|
||
<div class="badges" id="badgeStrip"></div>
|
||
</div>
|
||
<div class="grid c2">
|
||
<div class="card">
|
||
<h3>Recent activity</h3>
|
||
<div class="feed" id="ovFeed"><div class="row muted">Your line's joins, buys, and payouts land here.</div></div>
|
||
</div>
|
||
<div>
|
||
<div class="card">
|
||
<h3>Quick actions</h3>
|
||
<div class="qa">
|
||
<button type="button" data-goto="buy">🛒 Buy a package</button>
|
||
<button type="button" data-goto="earn">👁 View today's ads</button>
|
||
<button type="button" data-goto="campaigns">📣 Launch a campaign</button>
|
||
<button type="button" id="qaCopyInvite">🔗 Copy my invite link</button>
|
||
</div>
|
||
</div>
|
||
<div class="card"><h3>Earning levels</h3>
|
||
<p id="qualLine" class="muted small">…</p></div>
|
||
</div>
|
||
</div>
|
||
<div class="card" id="adSlotOverview" hidden></div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-line" hidden>
|
||
<div class="card">
|
||
<h3>Your invite link, live from day one</h3>
|
||
<p class="muted small">Share it anywhere, starting now. Everyone who joins through it becomes part of
|
||
your line, and you earn 50 percent of every ad package they ever buy, plus levels 2 and 3 as you
|
||
qualify. Just switch on payouts before your people start buying so every payment locks to you.</p>
|
||
<p class="mono" id="inviteLine">…</p>
|
||
<p>
|
||
<button class="btn small sec" id="copyInvite" hidden>Copy link</button>
|
||
<button class="btn small sec" id="copyPitch" hidden>Copy a ready-to-send message</button>
|
||
</p>
|
||
<p class="muted small" id="pitchPreview" hidden></p>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Your line</h3>
|
||
<p class="muted small">Everyone who joined through your link, newest first. When they buy their
|
||
first package of $20 or more, they count toward your qualification.</p>
|
||
<div id="rosterWrap"><p class="muted small" id="rosterEmpty">Nobody yet. Your link is ready above; share it and this list starts filling.</p></div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<h3>Your downline, three levels deep</h3>
|
||
<p class="muted small">Everyone below you across levels 1–3. You see email addresses for your
|
||
direct referrals only; deeper levels show username and ID. You can message any of them below.</p>
|
||
<div id="lineageWrap"><p class="muted small">Loading…</p></div>
|
||
</div>
|
||
|
||
<div class="card" id="broadcastCard">
|
||
<h3>Message your team</h3>
|
||
<p class="muted small">Send one broadcast a day to your downline. It lands in their on-site inbox
|
||
and their email. Reaches the people who joined under you — they can't opt out of their sponsor,
|
||
so make it count.</p>
|
||
<p><select id="bcScope" style="width:100%">
|
||
<option value="direct">My direct referrals only (level 1)</option>
|
||
<option value="all">My whole downline (levels 1–3)</option>
|
||
</select></p>
|
||
<p><input id="bcSubject" maxlength="160" placeholder="Subject" style="width:100%"></p>
|
||
<div class="ed-bar" aria-label="Formatting">
|
||
<button type="button" data-bc="bold" title="Bold"><b>B</b></button>
|
||
<button type="button" data-bc="italic" title="Italic"><i>I</i></button>
|
||
<button type="button" data-bc="underline" title="Underline"><u>U</u></button>
|
||
<button type="button" data-bcblock="h3" title="Heading">H</button>
|
||
<button type="button" data-bc="insertUnorderedList" title="Bullet list">• List</button>
|
||
<button type="button" id="bcLinkBtn" title="Insert link">🔗 Link</button>
|
||
</div>
|
||
<div id="bcEd" class="ed-body" contenteditable="true" data-ph="Write to your team…"></div>
|
||
<p style="margin-top:12px"><button class="btn" id="bcSendBtn" type="button">Send broadcast</button>
|
||
<span class="small muted" id="bcHint"></span></p>
|
||
</div>
|
||
|
||
<div class="card" id="upMsgCard" hidden>
|
||
<h3>Messages from your upline</h3>
|
||
<div id="upList"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-buy" hidden>
|
||
<div class="card">
|
||
<h3>Buy an ad package</h3>
|
||
<p class="muted small">Priced in dollars, settled from your wallet at the live rate. Credits mint
|
||
to this account instantly, and every payout in your sponsor line lands the moment you confirm.</p>
|
||
<div class="tiles" id="boTiles"><div class="tile"><span class="muted small">Loading live prices…</span></div></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-campaigns" hidden>
|
||
<div class="card" id="campGate" hidden>
|
||
<h3>Campaigns unlock with your first package</h3>
|
||
<p class="muted small">Campaigns spend the on-chain credits a package mints. Grab any package on the
|
||
<a href="/#ladder-h">home page</a> and this tab turns into your campaign manager.</p>
|
||
</div>
|
||
<div class="card" id="campaignCard" hidden>
|
||
<h3>Your ad campaigns</h3>
|
||
<p class="muted small" id="rateLine">…</p>
|
||
<div id="campList"></div>
|
||
<h3 style="margin-top:18px">New campaign</h3>
|
||
<div class="grid c3">
|
||
<p><select id="cType" style="width:100%">
|
||
<option value="banner">Banner (per impression)</option>
|
||
<option value="text">Text ad (per impression)</option>
|
||
<option value="login">Login ad (per day)</option>
|
||
<option value="solo">Solo ad (inbox delivery)</option>
|
||
<option value="video">Video ad (watch to earn)</option>
|
||
<option value="featured">Featured link (rotation)</option>
|
||
</select></p>
|
||
<p><input id="cName" placeholder="Campaign name" style="width:100%"></p>
|
||
<p><input id="cBudget" type="number" placeholder="Budget (credits)" min="10" style="width:100%"></p>
|
||
</div>
|
||
<p><input id="cTarget" placeholder="Target URL (https://…)" style="width:100%"></p>
|
||
<p class="small muted" style="margin-top:-6px">Banner and text targets are shown full screen in the
|
||
ad viewer, so those URLs must allow framing — we check them the moment you submit. Login and
|
||
solo links open in a fresh tab, so any working page is fine.</p>
|
||
<p id="cImageRow"><input id="cImage" placeholder="Image URL (banner/login ads)" style="width:100%"></p>
|
||
<p id="cSizeRow" hidden><select id="cSize" style="width:100%"></select></p>
|
||
<p id="cTitleRow" hidden><input id="cTitle" placeholder="Headline (max 60)" style="width:100%"></p>
|
||
<p id="cBodyRow" hidden><input id="cBody" placeholder="Ad text (max 140)" style="width:100%"></p>
|
||
<div id="cSoloRow" hidden>
|
||
<div class="ed-bar" aria-label="Formatting">
|
||
<button type="button" data-cmd="bold" title="Bold"><b>B</b></button>
|
||
<button type="button" data-cmd="italic" title="Italic"><i>I</i></button>
|
||
<button type="button" data-cmd="underline" title="Underline"><u>U</u></button>
|
||
<span class="ed-sep"></span>
|
||
<button type="button" data-block="h2" title="Heading">H<sub>2</sub></button>
|
||
<button type="button" data-block="h3" title="Subheading">H<sub>3</sub></button>
|
||
<button type="button" data-block="p" title="Normal text">¶</button>
|
||
<span class="ed-sep"></span>
|
||
<button type="button" data-cmd="insertUnorderedList" title="Bullet list">• List</button>
|
||
<button type="button" data-cmd="insertOrderedList" title="Numbered list">1. List</button>
|
||
<button type="button" id="edLinkBtn" title="Insert link">🔗 Link</button>
|
||
<span class="ed-sep"></span>
|
||
<button type="button" id="edImgBtn" title="Insert image">🖼 Image</button>
|
||
<button type="button" id="edVidBtn" title="Insert video">🎬 Video</button>
|
||
<span class="ed-sep"></span>
|
||
<button type="button" data-cmd="undo" title="Undo">↺</button>
|
||
<button type="button" data-cmd="redo" title="Redo">↻</button>
|
||
<button type="button" id="edRawBtn" title="Toggle raw text" style="margin-left:auto">Raw text</button>
|
||
</div>
|
||
<div id="cSoloEd" class="ed-body" contenteditable="true"
|
||
data-ph="Write it like an email worth reading. Bold the promise, list the proof, drop in an image or video, link the receipts."></div>
|
||
<textarea id="cSoloRaw" class="ed-body" hidden style="font-family:var(--mono);font-size:13px"></textarea>
|
||
<input type="file" id="cSoloFile" accept="image/png,image/jpeg,image/webp,image/gif,video/mp4,video/webm" hidden>
|
||
<span id="edMediaInfo" class="small muted"></span>
|
||
<p style="margin:12px 0 0"><input id="cCtaLabel" maxlength="30" style="width:100%"
|
||
placeholder="Call-to-action button label (default: Learn more) — the button opens your target URL"></p>
|
||
</div>
|
||
<p class="small muted" id="cSoloHint" hidden></p>
|
||
<div id="cFeaturedRow" hidden>
|
||
<p><input id="cFeatTitle" maxlength="70" placeholder="Headline for your featured link" style="width:100%"></p>
|
||
<p><select id="cFeatDays" style="width:100%"></select></p>
|
||
<p class="small muted" id="cFeatHint"></p>
|
||
</div>
|
||
<div id="cVideoRow" hidden>
|
||
<p><input id="cVideoUrl" placeholder="Video URL (direct https link ending .mp4 or .webm)" style="width:100%"></p>
|
||
<p><input type="file" id="cVideoFile" accept="video/mp4,video/webm" hidden>
|
||
<button type="button" class="btn small sec" id="cVideoUploadBtn">Upload video</button>
|
||
<span id="cVideoInfo" class="small muted"></span></p>
|
||
<div id="cVideoPrev" hidden style="margin:8px 0"></div>
|
||
<p><input id="cVideoTitle" maxlength="80" placeholder="Video title (optional)" style="width:100%"></p>
|
||
<p><select id="cWatchSecs" style="width:100%"></select></p>
|
||
<p><input id="cVideoCta" maxlength="30" placeholder="Call-to-action label (default: Learn more)" style="width:100%"></p>
|
||
<p class="small muted" id="cVideoHint"></p>
|
||
</div>
|
||
<button class="btn" id="createCampBtn">Launch campaign</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-earn" hidden>
|
||
<div class="subtabs" role="tablist">
|
||
<button class="subtab on" data-earn="watch" type="button">Watch ads</button>
|
||
<button class="subtab" data-earn="videos" type="button">Watch videos</button>
|
||
<button class="subtab" data-earn="inbox" type="button">Inbox Ads<span class="pill" id="inboxBadge2" hidden></span></button>
|
||
</div>
|
||
|
||
<div class="earn-sub" id="earn-watch">
|
||
<div class="card">
|
||
<h3>Earn credits by viewing ads</h3>
|
||
<p class="muted small">Each ad opens full screen in its own tab, pointed at the advertiser's
|
||
real site. A countdown runs while you watch; when it hits zero, pass a quick check and the
|
||
view counts. Finish today's set, claim your credits, and spend them on banner and text
|
||
campaigns just like purchased ones.</p>
|
||
<p><span class="badge" id="earnProgress">…</span>
|
||
<span class="badge" id="earnBalance">…</span></p>
|
||
<div class="card" style="background:rgba(4,8,7,.5)" id="earnStage">
|
||
<div id="earnAdBox" class="small muted" style="min-height:80px;display:grid;place-items:center">
|
||
Press the button to open the first ad in a new tab.</div>
|
||
<p style="margin-top:14px">
|
||
<button class="btn" id="earnStartBtn" type="button">View today's ads</button>
|
||
<button class="btn" id="earnClaimBtn" type="button" hidden>Claim today's credits</button>
|
||
</p>
|
||
<p class="small muted" id="earnHint"></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="earn-sub" id="earn-videos" hidden>
|
||
<div class="card">
|
||
<h3>Watch videos, earn credits</h3>
|
||
<p class="muted small">Watch a member's video for its required time and earn credits. The player
|
||
can't be skipped — the timer runs on our server. You never see your own videos.</p>
|
||
<p><span class="badge" id="vidProgress">…</span></p>
|
||
<div class="card" style="background:rgba(4,8,7,.5)" id="vidStage">
|
||
<div id="vidBox" class="small muted" style="min-height:120px;display:grid;place-items:center">
|
||
Press the button to load the first video.</div>
|
||
<div id="vidWrap" hidden style="max-width:560px;margin:0 auto">
|
||
<video id="vidPlayer" playsinline preload="auto" style="width:100%;border-radius:12px;background:#000"></video>
|
||
<p class="small muted" id="vidTimer" style="text-align:center;margin:8px 0 0"></p>
|
||
</div>
|
||
<p style="margin-top:14px">
|
||
<button class="btn" id="vidStartBtn" type="button">Load a video</button>
|
||
<a class="btn sec" id="vidCta" target="_blank" rel="noopener nofollow" hidden>Learn more</a>
|
||
</p>
|
||
<p class="small muted" id="vidHint"></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="earn-sub" id="earn-inbox" hidden>
|
||
<div class="card" id="inboxListCard">
|
||
<h3>Solo ads inbox</h3>
|
||
<p class="muted small">Full-message ads from members land here — each one delivered to you at
|
||
most once, never your own. Read one and click through to the advertiser to claim <span id="ibRewardNote">…</span>.</p>
|
||
<div id="ibList"><p class="muted small">Loading…</p></div>
|
||
</div>
|
||
<div class="card" id="inboxReadCard" hidden>
|
||
<p><a href="#" id="ibBack">← Back to inbox</a></p>
|
||
<h3 id="ibSubject"></h3>
|
||
<p class="small muted" id="ibMeta"></p>
|
||
<div id="ibMedia" hidden style="margin:12px 0"></div>
|
||
<div id="ibBody" class="promo-block ib-rich"></div>
|
||
<p style="margin-top:14px">
|
||
<a class="btn" id="ibVisit" target="_blank" rel="noopener nofollow">Visit the advertiser</a>
|
||
<button class="btn sec" id="ibClaimBtn" type="button" hidden>…</button></p>
|
||
<p class="small muted" id="ibHint"></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-earnings" hidden>
|
||
<div id="activityArea" hidden>
|
||
<div class="grid c2">
|
||
<div class="card">
|
||
<h3>Earnings</h3>
|
||
<p class="muted small">Every payout the contract has sent to your wallet. Each line links to the transaction.</p>
|
||
<div class="feed" id="earnFeed"><div class="row muted">Nothing yet.</div></div>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Your referrals</h3>
|
||
<p class="muted small">Activations and qualifying buys in your line.</p>
|
||
<div class="feed" id="refFeed"><div class="row muted">Nothing yet.</div></div>
|
||
</div>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Your purchases</h3>
|
||
<div class="feed" id="buyFeed"><div class="row muted">Nothing yet.</div></div>
|
||
</div>
|
||
</div>
|
||
<div class="card" id="earnGate" hidden>
|
||
<h3>Your on-chain history starts with payouts</h3>
|
||
<p class="muted small">Once payouts are switched on, every payment, referral event, and purchase in
|
||
your line shows here with a verify link to the blockchain. Nothing to claim, nothing to request:
|
||
the money is already in your wallet when the line appears.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-promo" hidden>
|
||
<div class="card">
|
||
<h3>Share-ready posts, personalized with your link</h3>
|
||
<p class="muted small">Copy, paste anywhere, done. Every post already carries your invite link,
|
||
so the credit is always yours.</p>
|
||
<div id="promoPosts"></div>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Email swipe</h3>
|
||
<p class="muted small" id="promoSwipeWrap"></p>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Your banner wall</h3>
|
||
<p class="muted small">A public page showing your line banner and your upline ladder, with your
|
||
join link front and center. Every visit puts eyes on your whole line — send traffic here and
|
||
the wall does the pitching.</p>
|
||
<p class="mono small" id="wallLine" style="overflow-wrap:anywhere">Set a username in Profile to claim your wall.</p>
|
||
<p><button class="btn small sec" id="wallCopy" type="button" hidden>Copy wall link</button>
|
||
<a class="btn small sec" id="wallOpen" target="_blank" rel="noopener" hidden>Open your wall</a></p>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Banners</h3>
|
||
<p class="muted small">Branded InstantAdPay banner sets are in production. They will land here
|
||
sized for every standard placement, pre-tagged with your link.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-profile" hidden>
|
||
<div class="card">
|
||
<h3>Your profile</h3>
|
||
<p class="muted small">Your username is how other members see you: on the live ledger, in line
|
||
rosters, and on your personal invite link. Pick something you would put on a business card.</p>
|
||
<p><input id="pfUsername" placeholder="Username (3-20 letters, numbers, _)" style="width:100%;max-width:320px"></p>
|
||
<button class="btn" id="pfSaveBtn">Save username</button>
|
||
<p class="muted small" id="pfCurrent" style="margin-top:10px"></p>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Avatar & bio</h3>
|
||
<p class="muted small">Your face and your story, shown on your public profile page
|
||
(<span class="mono" id="pfBioLink">set a username to get your link</span>).</p>
|
||
<p><img id="pfAvatarPrev" alt="avatar" style="width:84px;height:84px;border-radius:50%;object-fit:cover;border:2px solid var(--line-strong)" hidden></p>
|
||
<p><input type="file" id="pfAvatarFile" accept="image/png,image/jpeg,image/webp,image/gif" hidden>
|
||
<button class="btn small sec" id="pfAvatarBtn" type="button">Upload avatar</button>
|
||
<span class="small muted" id="pfAvatarInfo"></span></p>
|
||
<p><textarea id="pfBio" rows="3" maxlength="600" placeholder="A short bio for your profile page…" style="width:100%"></textarea></p>
|
||
<p><button class="btn" id="pfDetailsSave">Save profile</button>
|
||
<a class="btn small sec" id="pfViewBio" target="_blank" rel="noopener" hidden>View my page</a></p>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Your line banner</h3>
|
||
<p class="muted small">Set a destination link (and a banner image for your wall), and every new
|
||
member joining your line meets it on their welcome tour: position 1 for your directs, position 2
|
||
for their people, position 3 below that — the same three levels the contract pays you on.</p>
|
||
<p><input id="lbTarget" placeholder="Destination URL (https://… — must allow framing)" style="width:100%"></p>
|
||
<p><input id="lbBanner" placeholder="Banner image URL (optional — or upload below)" style="width:100%"></p>
|
||
<p><input type="file" id="lbFile" accept="image/png,image/jpeg,image/webp,image/gif" hidden>
|
||
<button class="btn small sec" id="lbUploadBtn" type="button">Upload banner image</button>
|
||
<span class="small muted" id="lbUpInfo"></span></p>
|
||
<div id="lbPreview" hidden style="margin:8px 0"></div>
|
||
<p><button class="btn" id="lbSaveBtn">Save line banner</button></p>
|
||
<p class="muted small" id="lbCurrent"></p>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Account details</h3>
|
||
<p class="muted small" id="pfDetails">…</p>
|
||
<p class="muted small">More profile fields (avatar, bio, links) are on the roadmap.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-wallet" hidden>
|
||
<div class="grid c2">
|
||
<div class="card"><h3>Your account</h3>
|
||
<p id="posLine" class="muted small">…</p></div>
|
||
<div class="card"><h3>Ad credits</h3>
|
||
<p class="mono" style="font-size:26px;margin:0" id="creditLine">0</p>
|
||
<p class="muted small">1 credit = 1 cent of ad delivery across the network. Recorded on-chain. Only your campaigns can spend them.</p></div>
|
||
</div>
|
||
<div class="card" id="linkCard" hidden>
|
||
<h3>Link your wallet</h3>
|
||
<p class="muted small">Your earnings pay straight to your own wallet, so we need to know which one is yours.
|
||
One free signature links it. It cannot move funds or approve anything. Buying any package links it automatically too.</p>
|
||
<button class="btn" id="linkBtn">Connect & link wallet</button>
|
||
</div>
|
||
<div class="card" id="activateCard" hidden>
|
||
<h3>Switch on payouts, free</h3>
|
||
<p class="muted small">One free transaction registers your linked wallet on-chain so commissions can reach it,
|
||
and it unlocks the full flow. Buying any package does this automatically.</p>
|
||
<button class="btn sec" id="activateBtn">Activate payouts</button>
|
||
</div>
|
||
</div>
|
||
|
||
</main>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="/assets/common.js?v=20260906d"></script>
|
||
<script src="/assets/wallet.js?v=20260906d"></script>
|
||
<script src="/assets/my.js?v=20260906d"></script>
|
||
<script src="/assets/chat.js?v=20260906d"></script>
|
||
</body>
|
||
</html>
|