9608d07544
Stops early when the wallet lacks the POL. Only Trust Wallet users see the proportion warning (smaller package / add POL / other wallet); everyone else goes straight to the wallet confirmation. Buy-pane tip + chatbot reworded. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
746 lines
47 KiB
HTML
746 lines
47 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="icon" type="image/png" href="/logo-icon.png">
|
||
<link rel="stylesheet" href="/assets/site.css?v=20260909a">
|
||
</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>
|
||
<label id="nlOptinRow" style="display:flex;gap:9px;align-items:flex-start;margin:0 4px 16px;font-size:13px;color:var(--muted,#8ba69c);cursor:pointer">
|
||
<input type="checkbox" id="nlOptin" checked style="margin-top:2px;flex:0 0 auto">
|
||
<span>Keep me posted with the InstantAdPay newsletter (tips and updates). You can unsubscribe anytime.</span>
|
||
</label>
|
||
<div class="card" id="sponsorNote" style="border-color:var(--mint);text-align:center" hidden>
|
||
<p style="margin:0"><span class="muted small">You're joining the line of</span><br>
|
||
<b id="sponsorNoteName" style="font-size:19px;color:var(--mint)"></b></p>
|
||
</div>
|
||
<div class="card" id="magicCard" hidden>
|
||
<p id="mcFinish" class="small" style="color:var(--amber);margin:0 0 10px" hidden>Your wallet is signed in, but it has no account yet.
|
||
Add your email to finish setting up. Your wallet, member number and purchases stay attached.</p>
|
||
<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"><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>
|
||
|
||
<!-- ── onboarding: new members pick a username (profile optional) ── -->
|
||
<div id="onboardModal" class="modal-back" hidden>
|
||
<div class="modal-card">
|
||
<p class="eyebrow">Welcome to InstantAdPay</p>
|
||
<h3 style="margin:.2em 0 .5em">Pick your username</h3>
|
||
<p class="muted small">This is how your team sees you, and it turns your invite link into a clean vanity link.
|
||
You can change it later in Profile.</p>
|
||
<p><input id="obUsername" placeholder="Username (3-20 letters, numbers, _)" autocomplete="off" style="width:100%"></p>
|
||
<p class="muted small" style="margin:12px 0 4px">Optional — a short bio for your public page (you can skip this).</p>
|
||
<p><textarea id="obBio" rows="2" maxlength="600" placeholder="A short bio (optional)" style="width:100%"></textarea></p>
|
||
<p id="obErr" class="small" style="color:var(--bad)" hidden></p>
|
||
<p style="margin-top:14px;display:flex;gap:10px;justify-content:flex-end">
|
||
<button class="btn sec small" id="obSkip" type="button">Skip for now</button>
|
||
<button class="btn" id="obSave" type="button">Save & continue</button>
|
||
</p>
|
||
</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="/"><img src="/logo.png" alt="InstantAdPay" style="height:32px;display:block"></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="training" type="button"><svg viewBox="0 0 24 24"><path d="M3 5l9-2 9 2v11l-9 2-9-2z"/><path d="M12 3v13"/><path d="M9 11l3 2 3-2"/></svg>Training</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">Team</span>
|
||
<a href="#" id="chatMenuBtn" class="bo-chat"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" style="vertical-align:-2px;margin-right:7px"><path d="M5 5h14a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H9l-4 4V6a1 1 0 0 1 1-1z"/></svg>Messages<span class="pill" id="chatNavBadge" hidden></span></a>
|
||
<a href="/admin" id="adminLink" hidden>Admin</a>
|
||
</div>
|
||
<div class="bo-links">
|
||
<span class="bo-cap">Legal</span>
|
||
<a href="/terms" target="_blank" rel="noopener">Terms</a>
|
||
<a href="/privacy" target="_blank" rel="noopener">Privacy</a>
|
||
<a href="/disclaimer" target="_blank" rel="noopener">Disclaimer</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="card feat-top" id="featuredCard" hidden>
|
||
<div class="card-head"><h3>Featured</h3><span class="sub" id="featSub">member links in rotation</span></div>
|
||
<div id="featStrip" class="feat-strip"></div>
|
||
<div id="featCta" class="small" style="text-align:center;margin-top:10px"></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><a class="sub" href="#earnings" style="color:var(--mint);text-decoration:none;margin-left:12px">full history →</a></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="lineTreeCard">
|
||
<div class="card-head"><h3>Your line at a glance</h3><span class="sub" id="treeSub"></span></div>
|
||
<div id="lineTree" class="line-tree"><p class="muted small">Loading your line…</p></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>
|
||
<button type="button" id="qaMsgSponsor" hidden>💬 Message my sponsor</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" id="sponsorMsgCard" hidden>
|
||
<h3>Your sponsor has your back</h3>
|
||
<p class="muted small">Questions getting started? Message your sponsor <b id="sponsorMsgName"></b> directly.
|
||
If they are online you chat live; if not, it lands in their inbox and they are notified.</p>
|
||
<p><button class="btn" id="lineMsgSponsor" type="button">Message your sponsor</button></p>
|
||
</div>
|
||
<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. Message your direct referrals right here.</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>
|
||
<p class="small" style="border:1px solid var(--line-strong);border-radius:10px;padding:10px 12px;margin:0 0 14px">
|
||
<b>Using Trust Wallet?</b> It blocks purchases that spend most of the POL in the wallet (a "drain your wallet" warning). Start with a smaller package, keep a little extra POL, or connect MetaMask, Phantom or SafePal instead. Extra POL always stays yours.</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>
|
||
<option value="visits">Verified visits (guaranteed unique)</option>
|
||
</select></p>
|
||
<p><input id="cName" placeholder="Campaign name" style="width:100%"></p>
|
||
<p id="cBudgetRow"><input id="cBudget" type="number" placeholder="Budget (credits)" min="10" style="width:100%"></p>
|
||
</div>
|
||
<p><input id="cTarget" placeholder="Target URL (https://…)" autocomplete="off" 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)" autocomplete="off" 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="cVisitsRow" hidden>
|
||
<p><input id="cVisitTitle" maxlength="80" placeholder="Headline (what members see before visiting)" style="width:100%"></p>
|
||
<p><input id="cVisitCount" type="number" min="20" placeholder="How many verified visits?" style="width:100%"></p>
|
||
<p class="small muted" id="cVisitHint"></p>
|
||
</div>
|
||
<div id="cFeaturedRow" hidden>
|
||
<p><input id="cFeatTitle" maxlength="70" placeholder="Headline for your featured link" style="width:100%"></p>
|
||
<p class="small muted" style="margin-bottom:4px">Pick a start day (occupancy shown per day):</p>
|
||
<div id="cFeatDaysGrid" class="feat-days"></div>
|
||
<p style="margin-top:10px"><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)" autocomplete="off" 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="visits" type="button">Verified visits</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.
|
||
Prefer a feed? <a href="/shorts">Open Shorts</a> for a full-screen, swipe-to-next experience.</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-visits" hidden>
|
||
<div class="card">
|
||
<h3>Verified visits, earn credits</h3>
|
||
<p class="muted small">Visit a member's site in a new tab, stay the required few seconds,
|
||
pass a quick check, and earn. Each site counts once for you — real, unique human visits.</p>
|
||
<p><span class="badge" id="vsProgress">…</span></p>
|
||
<div class="card" style="background:rgba(4,8,7,.5)">
|
||
<div id="vsBox" class="small muted" style="min-height:70px;display:grid;place-items:center">Press the button to load a site to visit.</div>
|
||
<div id="vsCheck" hidden style="margin-top:10px"><span class="prompt" id="vsPrompt"></span> <span id="vsOpts"></span></div>
|
||
<p style="margin-top:12px">
|
||
<button class="btn" id="vsStartBtn" type="button">Load a visit</button>
|
||
<a class="btn sec" id="vsVisit" target="_blank" rel="noopener nofollow" hidden>Open the site</a>
|
||
</p>
|
||
<p class="small muted" id="vsHint"></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 promo-strip">
|
||
<div><span class="eyebrow" style="margin:0 0 4px">Your invite link</span><div class="mono small" id="promoLink" style="overflow-wrap:anywhere">…</div></div>
|
||
<button class="btn small" id="promoLinkCopy" type="button">Copy link</button>
|
||
</div>
|
||
<div class="chips promo-pills" role="tablist" aria-label="Promo tools sections">
|
||
<button class="chip-t on" data-promo="posts" type="button" role="tab">Social posts</button>
|
||
<button class="chip-t" data-promo="text" type="button" role="tab">Text a friend</button>
|
||
<button class="chip-t" data-promo="swipe" type="button" role="tab">Email swipes</button>
|
||
<button class="chip-t" data-promo="banners" type="button" role="tab">Banners</button>
|
||
<button class="chip-t" data-promo="wall" type="button" role="tab">Banner wall</button>
|
||
<button class="chip-t" data-promo="objections" type="button" role="tab">Objections</button>
|
||
<button class="chip-t" data-promo="videos" type="button" role="tab">Videos</button>
|
||
</div>
|
||
<div class="card promo-sec" id="promo-posts">
|
||
<h3>Social posts, personalized with your link</h3>
|
||
<p class="muted small">Copy and paste, or post straight from here. Every post already carries your invite link,
|
||
so the credit is always yours. Angle links keep working when the matching hook pages ship.</p>
|
||
<div id="promoPosts"></div>
|
||
<div class="promo-bv">
|
||
<b>Want these in your own voice?</b>
|
||
<span class="muted small">Branded Voice writes posts, emails and stories the way you actually talk.</span>
|
||
<a class="btn small sec" href="https://mybrandedvoice.com" target="_blank" rel="noopener">mybrandedvoice.com</a>
|
||
</div>
|
||
</div>
|
||
<div class="card promo-sec" id="promo-text" hidden>
|
||
<h3>Text a friend</h3>
|
||
<p class="muted small">Short, low-pressure messages sized for a text. On your phone, <b>Text it</b> opens your
|
||
messaging app with the message ready, <b>WhatsApp</b> pre-fills it there, <b>Telegram</b> shares your link
|
||
with a lead-in, and <b>Copy</b> works for Messenger, Instagram DMs, anywhere.</p>
|
||
<div id="promoTexts"></div>
|
||
</div>
|
||
<div class="card promo-sec" id="promo-swipe" hidden>
|
||
<h3>Email swipes</h3>
|
||
<p class="muted small">Short, standard and long versions plus a follow-up. Subject line included. Edit freely, keep the honesty lines.</p>
|
||
<div id="promoSwipeWrap"></div>
|
||
</div>
|
||
<div class="card promo-sec" id="promo-banners" hidden>
|
||
<h3>Banners and graphics</h3>
|
||
<p class="muted small">Branded InstantAdPay banners in every standard ad size, plus square, story and Telegram
|
||
group sizes. Pair one with your invite link. Download, or copy the image URL for ad networks.</p>
|
||
<div id="promoBanners" class="promo-banners"></div>
|
||
</div>
|
||
<div class="card promo-sec" id="promo-wall" hidden>
|
||
<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 promo-sec" id="promo-objections" hidden>
|
||
<h3>Objection handling</h3>
|
||
<p class="muted small">The walls every builder hits, with answers that hold up. Open one: you get
|
||
<b>the truth</b>, so you never say something a prospect can poke a hole in, and a
|
||
<b>ready-to-send reply</b> with your link. Golden rule: lead with a real example, never a promise.</p>
|
||
<div id="promoObjections" class="obj-wrap"></div>
|
||
</div>
|
||
<div class="card promo-sec" id="promo-videos" hidden>
|
||
<h3>Hook videos</h3>
|
||
<p class="muted small">Short videos, one per angle, each with a matched invite link that lands on a
|
||
page continuing the same hook. In production now. When they arrive, this tab holds the previews,
|
||
your matched links, and paste-ready captions.</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 class="small muted" style="margin-bottom:4px">Social links (https URLs — shown on your public page):</p>
|
||
<div class="grid c2" style="gap:8px">
|
||
<input id="soc-facebook" placeholder="Facebook URL" style="width:100%">
|
||
<input id="soc-twitter" placeholder="X / Twitter URL" style="width:100%">
|
||
<input id="soc-youtube" placeholder="YouTube URL" style="width:100%">
|
||
<input id="soc-instagram" placeholder="Instagram URL" style="width:100%">
|
||
<input id="soc-tiktok" placeholder="TikTok URL" style="width:100%">
|
||
<input id="soc-telegram" placeholder="Telegram URL" style="width:100%">
|
||
<input id="soc-linkedin" placeholder="LinkedIn URL" style="width:100%">
|
||
<input id="soc-website" placeholder="Website URL" style="width:100%">
|
||
</div>
|
||
<p style="margin-top:12px"><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>Sponsor chat</h3>
|
||
<p class="muted small">Your line can message you one-to-one for help, and you can message anyone
|
||
below you. When you are online you chat live; when you are away, messages wait in your inbox and
|
||
we email you. Turn this off and you stop taking live chats — people can still leave you a note,
|
||
you just reply on your own time.</p>
|
||
<label class="switch"><input type="checkbox" id="chatAvailToggle" checked>
|
||
<span>Available to chat with my line</span></label>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Account details</h3>
|
||
<p class="muted small" id="pfDetails">…</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-training" hidden>
|
||
<div class="card">
|
||
<h3>Training center</h3>
|
||
<p class="muted small">Everything to help you get started and grow: walkthrough videos and materials.
|
||
New lessons land here as they are added.</p>
|
||
</div>
|
||
<div id="trainingList"></div>
|
||
</div>
|
||
|
||
<div class="pane" id="pane-wallet" hidden>
|
||
<div class="card" id="faucetCard" hidden>
|
||
<h3>Get test POL</h3>
|
||
<p class="muted small">This is the Polygon <b>Amoy testnet</b>, so purchases use valueless <b>test POL</b>, not real money.
|
||
Grab free test POL for your connected wallet from the Amoy faucet, then buy a package and watch the payouts
|
||
move on the live ledger exactly like mainnet will.</p>
|
||
<p><button class="btn" id="faucetBtn" type="button">Get free test POL</button>
|
||
<span class="small muted" id="faucetInfo"></span></p>
|
||
</div>
|
||
<div class="card">
|
||
<h3>Wallet connection</h3>
|
||
<p class="muted small">Connected the wrong wallet, or stuck on a transaction prompt? Disconnect to clear the session, then reconnect or pick a different wallet.</p>
|
||
<p><button class="btn sec small" id="wcDisconnect" type="button">Disconnect wallet</button>
|
||
<span class="small muted" id="wcDisconnectInfo"></span></p>
|
||
</div>
|
||
<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>
|
||
<footer class="bo-pagefoot">
|
||
<a href="/">Ad packages</a>
|
||
<a href="/ledger">Live ledger</a>
|
||
<a href="/contract">The contract</a>
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── sponsor chat: slide-in drawer (threads list + 1:1 conversation) ── -->
|
||
<div id="chatDrawer" class="chat-drawer" hidden>
|
||
<div class="chat-head">
|
||
<button id="chatBack" class="chat-icon" type="button" hidden aria-label="Back to messages">‹</button>
|
||
<span id="chatDot" class="pres-dot" hidden></span>
|
||
<div class="chat-who"><b id="chatTitle">Messages</b><span id="chatStatus" class="small muted"></span></div>
|
||
<button id="chatMute" class="btn sec small" type="button" hidden>Mute</button>
|
||
<button id="chatClose" class="chat-icon" type="button" aria-label="Close">×</button>
|
||
</div>
|
||
<div id="chatThreads" class="chat-threads"><p class="muted small" style="padding:14px">Loading…</p></div>
|
||
<div id="chatConvo" class="chat-convo" hidden>
|
||
<div id="chatMsgs" class="chat-msgs"></div>
|
||
<div id="chatBanner" class="chat-banner" hidden></div>
|
||
<div class="chat-compose">
|
||
<textarea id="chatInput" rows="1" placeholder="Write a message…" maxlength="2000"></textarea>
|
||
<button id="chatSend" class="btn" type="button">Send</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<script src="/assets/common.js?v=20260909a"></script>
|
||
<script src="/assets/wallet.js?v=20260909b"></script>
|
||
<script src="/assets/promo.js?v=20260909b"></script>
|
||
<script src="/assets/my.js?v=20260909f"></script>
|
||
<script src="/assets/chat.js?v=20260907l"></script>
|
||
</body>
|
||
</html>
|