/generation-pay: printable generation-pay chart personalized from the live chain (level/tier/qualification -> catching vs needs-Level-N per generation); dashboard + how-pay-works links, chatbot + AI prompt synced; exact-costs card now states the exact one-catch identity

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
martbost
2026-08-27 14:34:20 -05:00
parent 30a5c7237e
commit 21e105b953
6 changed files with 180 additions and 5 deletions
+1 -1
View File
@@ -50,7 +50,7 @@
{k:['no money','cant afford','can not afford',"can't afford",'broke','they dont have','waiting on payday','no funds to join'], {k:['no money','cant afford','can not afford',"can't afford",'broke','they dont have','waiting on payday','no funds to join'],
a:()=>`"No money" is usually one of three things — sort it first. (1) Most often it means "this sounds expensive/complicated": entry is ${pol()} POL${usd()||" — a small one-time amount"} — payable with a regular debit card right on the <a href="/join-now">join page</a>. (2) Sometimes it's a priority thing: send the "Pocket Change" video from <a href="/tools">Promo Tools</a> and let it do the talking. (3) If they're genuinely broke: tell them honestly "don't join yet" — never rent money, never money they can't afford to lose. Ask "when's payday?" and follow up then — their invite link doesn't expire and the team keeps building publicly while they wait. One hard rule: never pay someone's entry for them.`}, a:()=>`"No money" is usually one of three things — sort it first. (1) Most often it means "this sounds expensive/complicated": entry is ${pol()} POL${usd()||" — a small one-time amount"} — payable with a regular debit card right on the <a href="/join-now">join page</a>. (2) Sometimes it's a priority thing: send the "Pocket Change" video from <a href="/tools">Promo Tools</a> and let it do the talking. (3) If they're genuinely broke: tell them honestly "don't join yet" — never rent money, never money they can't afford to lose. Ask "when's payday?" and follow up then — their invite link doesn't expire and the team keeps building publicly while they wait. One hard rule: never pay someone's entry for them.`},
{k:['own the level','need to own','have to buy the level','catch without','still at scintilla','upline not upgraded','sponsor not upgraded','only pays 2','only pays two','only 2 payments','seems small','2 then 4','level is your reach'], {k:['own the level','need to own','have to buy the level','catch without','still at scintilla','upline not upgraded','sponsor not upgraded','only pays 2','only pays two','only 2 payments','seems small','2 then 4','level is your reach'],
a:()=>`Two facts that surprise people, both straight from the contract code: (1) To catch your two matrix children's FIRST upgrade (Ascensus), you only need to be <strong>qualified with your two directs</strong> — you do NOT need to own Ascensus yourself, because the contract checks the catcher against the level the buyer is jumping FROM (Scintilla, which everyone has). Owning levels extends your REACH: catching a Fabrica payment from 2 generations down requires Ascensus, and so on — your level is your reach, which is why the team stays one level ahead of its deepest active layer. There's a 97-second video on exactly this — "Your level is your reach" — on the <a href="/training">training page</a> (Video 7). (2) Yes, each depth pays a fixed count — 2, then 4, then 8, one payment per person — but each deeper generation pays <strong>twice as much per person at twice the width</strong> (full-generation value quadruples per level), generations keep filling over time via recruiting and spillover, and pass-ups from under-leveled members add catches on top. Exact numbers: <a href="/how-pay-works#exact-costs">how-pay-works#exact-costs</a> — mechanical maximums, never promised income.`}, a:()=>`Two facts that surprise people, both straight from the contract code: (1) To catch your two matrix children's FIRST upgrade (Ascensus), you only need to be <strong>qualified with your two directs</strong> — you do NOT need to own Ascensus yourself, because the contract checks the catcher against the level the buyer is jumping FROM (Scintilla, which everyone has). Owning levels extends your REACH: catching a Fabrica payment from 2 generations down requires Ascensus, and so on — your level is your reach, which is why the team stays one level ahead of its deepest active layer. There's a 97-second video on exactly this — "Your level is your reach" — on the <a href="/training">training page</a> (Video 7). (2) Yes, each depth pays a fixed count — 2, then 4, then 8, one payment per person — but each deeper generation pays <strong>twice as much per person at twice the width</strong> (full-generation value quadruples per level), generations keep filling over time via recruiting and spillover, and pass-ups from under-leveled members add catches on top. Exact numbers: <a href="/how-pay-works#exact-costs">how-pay-works#exact-costs</a> — mechanical maximums, never promised income. Want it as a printable chart personalized to YOUR position (shows which generations you're catching now vs. which need your next level)? <a href="/generation-pay">rmcircle.team/generation-pay</a> — enter your ID and print.`},
{k:['entry price','upgrade price','different price','entry vs upgrade','why is the upgrade','entry fee different','two prices','inflated','price chart','cost chart','entry column','upgrade column'], {k:['entry price','upgrade price','different price','entry vs upgrade','why is the upgrade','entry fee different','two prices','inflated','price chart','cost chart','entry column','upgrade column'],
a:()=>`They're two different purchases, paid to two different people — nothing is double-counted. <strong>Entry</strong> is the one-time price to create your position (Premium level 1: 360.58 POL — charts often show ~362 with a small send buffer); 95% of the base goes to your sponsor, and the contract keeps a 5% admin charge on entries only. <strong>Upgrade</strong> is what an existing position pays to climb one level (621.40 POL to reach level 2), and 100% of every upgrade travels up the matrix to a qualified member — zero admin fee. The upgrade ladder also doubles EXACTLY at every rung (2 × 621.40 = 1,242.80, to the penny), so the first two pass-ups you catch at your level always equal your own next climb. See the full contract-exact table at <a href="/how-pay-works#exact-costs">how-pay-works#exact-costs</a> — every number is a locked constant you can verify with getAllCosts() on Polygonscan.`}, a:()=>`They're two different purchases, paid to two different people — nothing is double-counted. <strong>Entry</strong> is the one-time price to create your position (Premium level 1: 360.58 POL — charts often show ~362 with a small send buffer); 95% of the base goes to your sponsor, and the contract keeps a 5% admin charge on entries only. <strong>Upgrade</strong> is what an existing position pays to climb one level (621.40 POL to reach level 2), and 100% of every upgrade travels up the matrix to a qualified member — zero admin fee. The upgrade ladder also doubles EXACTLY at every rung (2 × 621.40 = 1,242.80, to the penny), so the first two pass-ups you catch at your level always equal your own next climb. See the full contract-exact table at <a href="/how-pay-works#exact-costs">how-pay-works#exact-costs</a> — every number is a locked constant you can verify with getAllCosts() on Polygonscan.`},
{k:['fast start','checklist','printable','print','48 hour','48-hour','getting started sheet'], {k:['fast start','checklist','printable','print','48 hour','48-hour','getting started sheet'],
+110
View File
@@ -0,0 +1,110 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="noindex"><meta name="description" content="When each generation pays you and exactly how much — the RM Circle generation pay chart, read live from the smart contract, personalized to your position."><title>Generation Pay | RM Circle Team Build</title><link rel="icon" type="image/png" href="/favicon.png"><link rel="stylesheet" href="/styles.css">
<style>
.gp-wrap{max-width:880px;margin:0 auto;padding:24px 20px 60px}
.gp-sheet{background:var(--card,#0d2236);border:1px solid var(--line,#24425d);border-radius:18px;padding:28px 30px}
.gp-sheet h1{font-size:30px;margin:0 0 2px}
.gp-sheet .tag{color:var(--muted,#aebdca);margin:0 0 16px;font-weight:600}
.gp-id{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:0 0 14px}
.gp-id input{background:var(--bg,#0b1d2e);border:1px solid var(--line,#24425d);border-radius:10px;color:var(--text,#f7f9fc);padding:9px 12px;font-size:15px;max-width:150px}
#gpMe{border:2px solid var(--teal,#4ed6cb);border-radius:12px;padding:12px 16px;margin:0 0 16px;font-size:15px;line-height:1.6;display:none}
#gpMe b{color:var(--gold,#f3be43)}
.gp-rule{background:rgba(78,214,203,.09);border-left:4px solid var(--teal,#4ed6cb);padding:10px 14px;border-radius:8px;font-weight:700;margin:0 0 12px;font-size:15px}
.gp-sec h2{font-size:20px;margin:20px 0 8px;border-bottom:1px solid var(--line,#24425d);padding-bottom:6px}
.gp-sec p{color:var(--muted,#aebdca);line-height:1.6;font-size:14.5px;margin:0 0 8px}
.gp-sec p strong{color:var(--text,#f7f9fc)}
table.gp{width:100%;border-collapse:collapse;margin:8px 0;font-size:14.5px}
.gp th{background:rgba(255,255,255,.04);color:var(--muted,#aebdca);text-align:left;padding:8px 10px;font-size:11.5px;letter-spacing:1px;text-transform:uppercase}
.gp td{padding:7px 10px;border-bottom:1px solid var(--line,#24425d)}
.gp td.amt{color:var(--gold,#f3be43);font-weight:800;white-space:nowrap}
.gp td.tot{color:var(--muted,#aebdca);white-space:nowrap}
.gp td.st{white-space:nowrap;font-weight:700;font-size:12.5px}
.gp tr.catching td.st{color:var(--teal,#4ed6cb)}
.gp tr.missing td.st{color:#f0a05a}
.gp tr.catching{background:rgba(78,214,203,.06)}
.gp tr.gen8 td{color:var(--muted,#aebdca)}
.gp-plus{border:1.5px dashed var(--gold,#f3be43);border-radius:10px;padding:10px 14px;margin:10px 0 0;font-size:14.5px;line-height:1.55;color:var(--muted,#aebdca)}
.gp-plus b{color:var(--gold,#f3be43)}
.gp-fine{margin:8px 0 0 18px;color:var(--muted,#aebdca);font-size:13.5px;line-height:1.6}
.gp-fine li{margin-bottom:4px}
.gp-fine b{color:var(--text,#f7f9fc)}
.gp-cta{border:2px solid var(--gold,#f3be43);border-radius:12px;padding:12px 16px;margin:16px 0 0;font-size:14.5px;line-height:1.6;color:var(--muted,#aebdca)}
.gp-cta b{color:var(--text,#f7f9fc)}
.gp-foot{margin-top:18px;padding-top:12px;border-top:1px solid var(--line,#24425d);font-size:12.5px;color:var(--muted,#aebdca);line-height:1.6}
.gp-print-btn{margin:18px 0 0}
@media print{
@page{size:letter;margin:0.45in}
body{background:#fff!important;color:#111!important}
header,footer,nav,#gpPrintBtn,#rmcTrBtn,#rmcTrPanel,.chat-fab,.chat-panel,.gp-print-btn,.gp-id{display:none!important}
.gp-wrap{max-width:none;padding:0}
.gp-sheet{background:#fff;border:0;border-radius:0;padding:0;color:#111}
.gp-sheet h1{font-size:21px;color:#111}
.gp-sheet .tag{font-size:11.5px;margin:0 0 8px;color:#444}
#gpMe{border-color:#111;color:#111;font-size:12px;padding:8px 12px;margin:0 0 10px}
#gpMe b{color:#111}
.gp-rule{background:#f2f2f2;border-left-color:#111;color:#111;font-size:12px;padding:7px 10px;margin:0 0 8px}
.gp-sec h2{font-size:14.5px;color:#111;border-color:#bbb;margin:10px 0 5px}
.gp-sec p{color:#333;font-size:11px;margin:0 0 5px}
.gp-sec p strong{color:#111}
table.gp{font-size:11px;margin:5px 0}
.gp th{background:#eee;color:#333;padding:5px 8px;font-size:9.5px}
.gp td{padding:4px 8px;border-color:#ccc;color:#222}
.gp td.amt{color:#111}.gp td.tot{color:#444}
.gp tr.catching{background:#f0faf8}
.gp tr.catching td.st{color:#0a7d72}.gp tr.missing td.st{color:#a55a12}
.gp-plus{border-color:#111;color:#333;font-size:11px;padding:7px 10px}
.gp-plus b{color:#111}
.gp-fine{font-size:10px;color:#444;margin:5px 0 0 16px}
.gp-fine b{color:#111}
.gp-cta{border-color:#111;color:#333;font-size:11px;padding:8px 12px;margin:10px 0 0}
.gp-cta b{color:#111}
.gp-foot{font-size:9px;color:#555;border-color:#bbb;margin-top:10px;padding-top:7px}
.gold{color:#111!important}
.gp-sec,.gp-rule,table.gp,.gp-plus,.gp-cta{page-break-inside:avoid}
}
</style></head>
<body>
<header class="wrap nav"><a class="brand" href="/"><img class="brand-mark" src="/logo.jpg" alt="The RM Circle" width="42" height="42"><span><span id="brandName">RM Circle</span><small>Generation Pay</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/how-pay-works">← How You Get Paid</a><a class="btn btn-primary" href="/my">My Dashboard</a></div></header>
<main class="gp-wrap">
<div class="gp-sheet">
<h1>Generation Pay — <span class="gold">The Exact Numbers.</span></h1>
<p class="tag">Verified live from the smart contract · fixed POL quantities, never dollar values</p>
<div class="gp-id"><label style="font-weight:700">Your member ID:</label><input id="gpIdInput" inputmode="numeric" placeholder="e.g. 21"><span class="micro" style="color:var(--muted)">Enter your ID and the chart personalizes to your position — then print it.</span></div>
<div id="gpMe"></div>
<div class="gp-rule">The rule: generation N pays you when they buy level N+1. One payment per person, per level — and you catch it if you're qualified (2 directs) with your level at or above N.</div>
<div class="gp-sec">
<h2>Exact POL received per person <span style="color:var(--muted);font-weight:600;font-size:14px">(Premium tier)</span></h2>
<p><strong>There is no fee on upgrades.</strong> The 5% admin charge exists on <em>entries only</em> — every upgrade catch arrives at 100% of the upgrade price.</p>
<div class="table-wrap"><table class="gp" id="gpTable"><thead><tr><th>Generation</th><th>They buy</th><th>Per person</th><th>× full generation (max)</th><th id="gpStH" style="display:none">Your status</th></tr></thead><tbody>
<tr data-gen="1"><td>Gen 1 · 2 positions</td><td>Ascensus</td><td class="amt">621.40 POL</td><td class="tot">1,242.80 POL</td><td class="st"></td></tr>
<tr data-gen="2"><td>Gen 2 · 4</td><td>Fabrica</td><td class="amt">1,242.80 POL</td><td class="tot">4,971.22 POL</td><td class="st"></td></tr>
<tr data-gen="3"><td>Gen 3 · 8</td><td>Culmen</td><td class="amt">2,485.61 POL</td><td class="tot">19,884.88 POL</td><td class="st"></td></tr>
<tr data-gen="4"><td>Gen 4 · 16</td><td>Apex</td><td class="amt">4,971.22 POL</td><td class="tot">79,539.51 POL</td><td class="st"></td></tr>
<tr data-gen="5"><td>Gen 5 · 32</td><td>Fastigium</td><td class="amt">9,942.44 POL</td><td class="tot">318,158.03 POL</td><td class="st"></td></tr>
<tr data-gen="6"><td>Gen 6 · 64</td><td>Vertex</td><td class="amt">19,884.88 POL</td><td class="tot">1,272,632.13 POL</td><td class="st"></td></tr>
<tr data-gen="7"><td>Gen 7 · 128</td><td>Corona</td><td class="amt">39,769.75 POL</td><td class="tot">5,090,528.52 POL</td><td class="st"></td></tr>
<tr data-gen="8" class="gen8"><td>Gen 8 · 256</td><td>Corona</td><td colspan="2">0 by depth — their payments go to <em>your Gen 1</em>; you receive pass-overs only</td><td class="st"></td></tr>
</tbody></table></div>
<p style="margin-top:6px">There is no level 9, so Generation 8's Corona purchases land on <em>their</em> 7th upline — which is <strong>your Generation 1</strong>. That money builds your leaders. You can still receive from Gen 8 and deeper (down to 16 layers), but only as <strong>pass-overs</strong> — payments that climb past anyone below you who isn't qualified or leveled high enough to catch them.</p>
<div class="gp-plus"><b>Plus, separate from all of the above:</b> every person you <em>personally</em> sponsor pays you <b>326.24 POL</b> on their Premium entry (95% of the base — this is where the 5% admin charge lives).</div>
</div>
<div class="gp-sec">
<h2>The fine print that keeps us honest</h2>
<ol class="gp-fine">
<li>Each person pays you <b>once per level, only when they actually upgrade</b>. The "× full generation" column is the mechanical maximum if every position fills and upgrades — which is rare. An illustration of the contract's mechanics, <b>not a prediction and never a promise of income</b>.</li>
<li><b>Standard-tier positions pay half</b> these amounts at every level. The team builds Premium.</li>
<li>You must stay <b>qualified (2 directs)</b> to catch anything; each level you own extends your reach one generation deeper (see <a href="/training" style="color:var(--teal)">Video 7 — Your Level Is Your Reach</a>).</li>
<li>All amounts are <b>fixed POL quantities locked in the contract</b> — verify them any time at <a href="/how-pay-works#exact-costs" style="color:var(--teal)">how-pay-works#exact-costs</a>, read live from the contract's public <code style="color:var(--gold)">getAllCosts()</code>.</li>
</ol>
</div>
<div class="gp-cta"><b>Your personal play-by-play — the Positions tab.</b> You don't have to compute any of this by hand: open <a href="/my" style="color:var(--gold);font-weight:800">My Dashboard → Positions</a> and it coaches each of your positions individually — who is about to pay you, which generation they sit in, and exactly which payments you'll miss without your next upgrade. Leaders: train your team to check it weekly.</div>
<div class="gp-foot">Independent team resource. Participation takes real effort and involves cryptocurrency risk, including risk of total loss. No income is guaranteed; most participants may not profit. Contract 0x33BdAEEfd6d17D80aE53816c916dFb26c4fB2DAF (Polygon) · <a href="/contract" style="color:var(--teal)">contract security</a> · <a href="/disclaimer" style="color:var(--teal)">disclaimers</a></div>
</div>
<button id="gpPrintBtn" class="btn btn-teal gp-print-btn">🖨 Print this chart</button>
</main>
<script src="/generation-pay.js"></script>
<script src="/chat.js" defer></script>
<script src="/translate.js" defer></script><script src="/tg-app.js" defer></script></body></html>
+65
View File
@@ -0,0 +1,65 @@
// Generation Pay chart — personalizes to the member's live on-chain position.
// Row status: catching a generation requires qualified (2 directs) + level >= gen.
(function () {
'use strict';
function getId() {
var q = new URLSearchParams(location.search).get('id');
if (q && /^\d{1,15}$/.test(q)) return q;
var inp = document.getElementById('gpIdInput');
if (inp && /^\d{1,15}$/.test(inp.value)) return inp.value;
try { var s = localStorage.getItem('ctb.myId') || localStorage.getItem('rmc.toolsId'); if (s && /^\d{1,15}$/.test(s)) return s; } catch (e) {}
return '';
}
var meEl = document.getElementById('gpMe');
var stHead = document.getElementById('gpStH');
var rows = Array.prototype.slice.call(document.querySelectorAll('#gpTable tbody tr'));
function clearStatus() {
meEl.style.display = 'none';
stHead.style.display = 'none';
rows.forEach(function (r) {
r.classList.remove('catching', 'missing');
var st = r.querySelector('.st'); if (st) { st.textContent = ''; st.style.display = 'none'; }
});
}
async function personalize(id) {
clearStatus();
if (!/^\d{1,15}$/.test(id)) return;
var d;
try { d = await (await fetch('/api/public/member?id=' + id)).json(); } catch (e) { return; }
if (!d || !d.registered) return;
var qualified = (d.directCount || 0) >= 2;
var half = d.tier === 1;
meEl.style.display = 'block';
meEl.innerHTML = '<b>#' + d.id + '</b> · ' + (d.tierName || '') + ' · Level ' + d.level + ' (' + (d.levelName || '') + ') · ' +
(qualified ? '<span style="color:var(--teal)">✓ qualified (2/2)</span>' : '<span style="color:#f0a05a">⚠ ' + (d.directCount || 0) + '/2 — you catch nothing until you have your 2 directs</span>') +
(half ? ' · <span style="color:#f0a05a">Standard tier: your receive amounts are HALF the Premium figures below</span>' : '') +
(qualified ? '<br>Your level catches generations <b>1–' + Math.min(d.level, 7) + '</b>' + (d.level < 7 ? ' — your next upgrade extends your reach to generation ' + (d.level + 1) + '.' : ' — full depth reach.') : '');
stHead.style.display = '';
rows.forEach(function (r) {
var g = Number(r.getAttribute('data-gen'));
var st = r.querySelector('.st'); if (!st) return;
st.style.display = '';
if (g === 8) { st.textContent = 'pass-overs only'; return; }
if (!qualified) { r.classList.add('missing'); st.textContent = 'needs 2 directs'; return; }
if (d.level >= g) { r.classList.add('catching'); st.textContent = '✓ catching now'; }
else { r.classList.add('missing'); st.textContent = 'needs Level ' + g; }
});
}
var input = document.getElementById('gpIdInput');
var initial = getId();
if (input && initial) input.value = initial;
if (initial) personalize(initial);
var deb;
if (input) input.addEventListener('input', function () {
var v = input.value.replace(/\D/g, '').slice(0, 15); input.value = v;
if (/^\d{1,15}$/.test(v)) { try { localStorage.setItem('rmc.toolsId', v); } catch (e) {} }
clearTimeout(deb); deb = setTimeout(function () { personalize(v); }, 500);
});
var pb = document.getElementById('gpPrintBtn');
if (pb) pb.addEventListener('click', function () { window.print(); });
})();
+1 -1
View File
@@ -98,7 +98,7 @@
</tbody></table></div> </tbody></table></div>
<p style="color:var(--muted);line-height:1.65;margin:12px 0 12px"><strong style="color:var(--text)">Why entry and upgrades are different prices:</strong> they're two different purchases, paid to two different people. <strong style="color:var(--text)">Entry</strong> creates your position and pays your <em>sponsor</em>. <strong style="color:var(--text)">Upgrades</strong> climb your existing position one level at a time — 100% of every upgrade travels up the matrix to a qualified member, with zero admin fee. Separate streams that never mix, so nothing is double-counted anywhere.</p> <p style="color:var(--muted);line-height:1.65;margin:12px 0 12px"><strong style="color:var(--text)">Why entry and upgrades are different prices:</strong> they're two different purchases, paid to two different people. <strong style="color:var(--text)">Entry</strong> creates your position and pays your <em>sponsor</em>. <strong style="color:var(--text)">Upgrades</strong> climb your existing position one level at a time — 100% of every upgrade travels up the matrix to a qualified member, with zero admin fee. Separate streams that never mix, so nothing is double-counted anywhere.</p>
<p style="color:var(--muted);line-height:1.65;margin:0 0 12px"><strong style="color:var(--text)">Can you skip levels? No.</strong> The contract's <code style="color:var(--gold)">register()</code> function has no level input — every position starts at Scintilla — and <code style="color:var(--gold)">upgrade()</code> takes no target: each call moves you exactly one rung. (Some charts list an "entry price" for every level; those rows sit in the contract's data tables, but no function sells them — the ladder is climbed, never skipped.)</p> <p style="color:var(--muted);line-height:1.65;margin:0 0 12px"><strong style="color:var(--text)">Can you skip levels? No.</strong> The contract's <code style="color:var(--gold)">register()</code> function has no level input — every position starts at Scintilla — and <code style="color:var(--gold)">upgrade()</code> takes no target: each call moves you exactly one rung. (Some charts list an "entry price" for every level; those rows sit in the contract's data tables, but no function sells them — the ladder is climbed, never skipped.)</p>
<p style="color:var(--muted);line-height:1.65;margin:0 0 0"><strong style="color:var(--text)">And the upgrade ladder is tuned to the penny:</strong> every upgrade costs exactly double the one below it — 2 × 621.40 = 1,242.80, 2 × 1,242.80 = 2,485.61, all the way up with zero drift. That's the self-funding design: the first <em>two</em> pass-ups you catch at your level are exactly the price of your own next climb. <span class="micro">Contract prices are fixed constants, verifiable on-chain — never a promise of income. <a href="/contract" style="color:var(--teal)">How the contract works →</a></span></p></div> <p style="color:var(--muted);line-height:1.65;margin:0 0 0"><strong style="color:var(--text)">And the upgrade ladder is tuned to the penny:</strong> every upgrade costs exactly double the one below it — 2 × 621.40 = 1,242.80, 2 × 1,242.80 = 2,485.61, all the way up with zero drift. That's the self-funding design: your very <em>first</em> catch at each level is the exact price of your own next climb. <span class="micro">Contract prices are fixed constants, verifiable on-chain — never a promise of income. <a href="/contract" style="color:var(--teal)">How the contract works →</a> · <a href="/generation-pay" style="color:var(--teal)">Printable Generation Pay chart (personalizes to your position) →</a></span></p></div>
<div id="cap" class="card" style="margin-top:20px;scroll-margin-top:16px"><div class="eyebrow" style="color:var(--teal)">Common question</div><h2 style="margin:6px 0 10px">"Does it cap out at 8 levels?"</h2> <div id="cap" class="card" style="margin-top:20px;scroll-margin-top:16px"><div class="eyebrow" style="color:var(--teal)">Common question</div><h2 style="margin:6px 0 10px">"Does it cap out at 8 levels?"</h2>
<p style="color:var(--muted);line-height:1.65;margin:0 0 12px">Your <strong style="color:var(--text)">level</strong> caps at Corona (level 8) — that's the top, you can't upgrade past it. But your <strong style="color:var(--text)">earning does not cap</strong>, for two reasons:</p> <p style="color:var(--muted);line-height:1.65;margin:0 0 12px">Your <strong style="color:var(--text)">level</strong> caps at Corona (level 8) — that's the top, you can't upgrade past it. But your <strong style="color:var(--text)">earning does not cap</strong>, for two reasons:</p>
<p style="color:var(--muted);line-height:1.65;margin:0 0 12px"><strong style="color:var(--text)">1. Volume, not a fixed count.</strong> You catch an upgrade pass-up from <em>every</em> person in your first seven generations as they level up — and those generations hold up to 254 positions that keep filling through recruiting and spillover. It's one payment per person, but people keep arriving.</p> <p style="color:var(--muted);line-height:1.65;margin:0 0 12px"><strong style="color:var(--text)">1. Volume, not a fixed count.</strong> You catch an upgrade pass-up from <em>every</em> person in your first seven generations as they level up — and those generations hold up to 254 positions that keep filling through recruiting and spillover. It's one payment per person, but people keep arriving.</p>
+1 -1
View File
@@ -22,7 +22,7 @@
<div id="dCoachCard" class="table-card" style="margin-bottom:18px;display:none;border-color:rgba(240,197,109,.35)"><h2 style="margin:0 0 4px">Coach your team</h2><p style="color:var(--muted);font-size:13px;margin:0 0 12px">The fastest way to grow your own income is helping the people below you take their next step. Here's who in <em>your</em> team could use a nudge today — updated live from the blockchain.</p><div id="dCoach"></div></div> <div id="dCoachCard" class="table-card" style="margin-bottom:18px;display:none;border-color:rgba(240,197,109,.35)"><h2 style="margin:0 0 4px">Coach your team</h2><p style="color:var(--muted);font-size:13px;margin:0 0 12px">The fastest way to grow your own income is helping the people below you take their next step. Here's who in <em>your</em> team could use a nudge today — updated live from the blockchain.</p><div id="dCoach"></div></div>
<div class="table-card" style="margin-bottom:18px;border-color:rgba(120,160,255,.35)"><h2 style="margin:0 0 4px">Messages <span id="msgBell" class="hidden" style="font-size:14px;background:var(--gold);color:#132;border-radius:20px;padding:2px 10px;vertical-align:middle;font-weight:800">🔔 0</span></h2><p style="color:var(--muted);font-size:13px;margin:0 0 12px">Wallet-verified messaging along your matrix lines — your upline and your team can reach you here, and you can reach them. No email needed; your wallet is your identity. <span class="micro">Messages are member-to-member; the team admin can review them for abuse.</span></p><div id="dMsg"><div class="empty">Loading…</div></div></div> <div class="table-card" style="margin-bottom:18px;border-color:rgba(120,160,255,.35)"><h2 style="margin:0 0 4px">Messages <span id="msgBell" class="hidden" style="font-size:14px;background:var(--gold);color:#132;border-radius:20px;padding:2px 10px;vertical-align:middle;font-weight:800">🔔 0</span></h2><p style="color:var(--muted);font-size:13px;margin:0 0 12px">Wallet-verified messaging along your matrix lines — your upline and your team can reach you here, and you can reach them. No email needed; your wallet is your identity. <span class="micro">Messages are member-to-member; the team admin can review them for abuse.</span></p><div id="dMsg"><div class="empty">Loading…</div></div></div>
<div class="table-card" style="margin-bottom:18px;border-color:rgba(78,214,203,.35)"><h2 style="margin:0 0 4px">Email me my alerts</h2><p style="color:var(--muted);font-size:13px;margin:0 0 12px">Get an email the moment this position is <strong>paid</strong>, and when it <strong>needs an upgrade</strong> to catch incoming pay — so you never miss one. Opt in with your email; unsubscribe anytime.</p><div id="dAlerts"></div></div> <div class="table-card" style="margin-bottom:18px;border-color:rgba(78,214,203,.35)"><h2 style="margin:0 0 4px">Email me my alerts</h2><p style="color:var(--muted);font-size:13px;margin:0 0 12px">Get an email the moment this position is <strong>paid</strong>, and when it <strong>needs an upgrade</strong> to catch incoming pay — so you never miss one. Opt in with your email; unsubscribe anytime.</p><div id="dAlerts"></div></div>
<div class="table-card" style="margin-bottom:18px;border-color:rgba(240,197,109,.45)"><h2 style="margin:0 0 4px">Share this position</h2><div id="dShare"></div><a class="btn btn-primary" href="/tools" style="display:block;text-align:center;margin-top:14px;padding:14px 18px;font-size:16px;font-weight:800">🎬 Get Your Promo Tools — posts, swipes, videos &amp; banners →</a><a class="btn btn-secondary" href="/fast-start" style="display:block;text-align:center;margin-top:8px">🖨️ Print your 48-Hour Fast Start sheet</a><a class="btn btn-secondary" href="/weekly-rhythm" style="display:block;text-align:center;margin-top:8px">🔁 Print your Weekly Rhythm sheet</a><a class="btn btn-secondary" href="/flyers" style="display:block;text-align:center;margin-top:8px">🪧 Print handouts with your QR code</a><p class="micro" style="text-align:center;margin:8px 0 0">Ready-made content to share with your invite link — no writing needed.</p></div> <div class="table-card" style="margin-bottom:18px;border-color:rgba(240,197,109,.45)"><h2 style="margin:0 0 4px">Share this position</h2><div id="dShare"></div><a class="btn btn-primary" href="/tools" style="display:block;text-align:center;margin-top:14px;padding:14px 18px;font-size:16px;font-weight:800">🎬 Get Your Promo Tools — posts, swipes, videos &amp; banners →</a><a class="btn btn-secondary" href="/fast-start" style="display:block;text-align:center;margin-top:8px">🖨️ Print your 48-Hour Fast Start sheet</a><a class="btn btn-secondary" href="/weekly-rhythm" style="display:block;text-align:center;margin-top:8px">🔁 Print your Weekly Rhythm sheet</a><a class="btn btn-secondary" href="/generation-pay" style="display:block;text-align:center;margin-top:8px">📊 Print your Generation Pay chart</a><a class="btn btn-secondary" href="/flyers" style="display:block;text-align:center;margin-top:8px">🪧 Print handouts with your QR code</a><p class="micro" style="text-align:center;margin:8px 0 0">Ready-made content to share with your invite link — no writing needed.</p></div>
<div class="table-card" style="margin-bottom:18px;border-color:var(--gold)"><h2 style="margin:0 0 4px">Just joined under this position?</h2><p style="color:var(--muted);font-size:13px;margin:0 0 12px">Welcome to the team! Enter the <strong>new member ID</strong> the RM Circle dApp gave you — we'll verify it on the blockchain and let the team know you're in.</p><form id="dJoinForm" style="display:grid;gap:8px;max-width:480px"><input name="newId" class="input" inputmode="numeric" pattern="[0-9]{1,10}" maxlength="10" placeholder="Your NEW RM Circle ID (numbers only)" required><input name="memberName" class="input" maxlength="60" placeholder="Your name or Telegram @handle" required><button class="btn btn-primary">Submit My ID →</button></form><div id="dJoinMsg" style="margin-top:10px;font-size:14px"></div></div> <div class="table-card" style="margin-bottom:18px;border-color:var(--gold)"><h2 style="margin:0 0 4px">Just joined under this position?</h2><p style="color:var(--muted);font-size:13px;margin:0 0 12px">Welcome to the team! Enter the <strong>new member ID</strong> the RM Circle dApp gave you — we'll verify it on the blockchain and let the team know you're in.</p><form id="dJoinForm" style="display:grid;gap:8px;max-width:480px"><input name="newId" class="input" inputmode="numeric" pattern="[0-9]{1,10}" maxlength="10" placeholder="Your NEW RM Circle ID (numbers only)" required><input name="memberName" class="input" maxlength="60" placeholder="Your name or Telegram @handle" required><button class="btn btn-primary">Submit My ID →</button></form><div id="dJoinMsg" style="margin-top:10px;font-size:14px"></div></div>
<div class="table-card" style="margin-bottom:18px"><h2 style="margin:0 0 4px">Payments received</h2><p style="color:var(--muted);font-size:13px;margin:0 0 10px">Every payment your position has received, straight from the smart contract.</p><div id="dIncome"></div></div> <div class="table-card" style="margin-bottom:18px"><h2 style="margin:0 0 4px">Payments received</h2><p style="color:var(--muted);font-size:13px;margin:0 0 10px">Every payment your position has received, straight from the smart contract.</p><div id="dIncome"></div></div>
<div class="table-card"><h2 style="margin:0 0 4px">Your lineage</h2><p id="dLineage" style="color:var(--muted);font-size:14px;line-height:1.8;margin:8px 0 0"></p></div> <div class="table-card"><h2 style="margin:0 0 4px">Your lineage</h2><p id="dLineage" style="color:var(--muted);font-size:14px;line-height:1.8;margin:8px 0 0"></p></div>
+2 -2
View File
File diff suppressed because one or more lines are too long