diff --git a/public/assets/home.js b/public/assets/home.js index e30021d..9b8234e 100644 --- a/public/assets/home.js +++ b/public/assets/home.js @@ -98,6 +98,41 @@ })); } + // what-if calculator: pure arithmetic on the locked constants + const dc = document.getElementById('dcDirects'); + if (dc) { + const $id = x => document.getElementById(x); + const usd = n => '$' + n.toLocaleString(undefined, { maximumFractionDigits: 2 }); + const recalc = () => { + const d = Number($id('dcDirects').value); + const p = Number($id('dcPkg').value); + const r = Number($id('dcSpread').value); + $id('dcDirectsV').textContent = d; + $id('dcSpreadV').textContent = r; + const qualifies = p >= 20; // sub-$20 packages never count toward qualification + const l2open = qualifies && d >= 2; + const l3open = qualifies && d >= 5; + const g2 = d * r, g3 = g2 * r; + const e1 = d * p * 0.5; + const e2 = l2open ? g2 * p * 0.2 : 0; + const e3 = l3open ? g3 * p * 0.1 : 0; + $id('dcN1').textContent = d; $id('dcN2').textContent = g2; $id('dcN3').textContent = g3; + $id('dcE1').textContent = usd(e1); + $id('dcE2').textContent = l2open ? usd(e2) : 'passes up'; + $id('dcE3').textContent = l3open ? usd(e3) : 'passes up'; + $id('dcTotal').textContent = usd(e1 + e2 + e3); + const setB = (el, open, need) => { el.textContent = open ? 'open' : 'locked: ' + need; el.className = 'badge' + (open ? '' : ' amber'); }; + setB($id('dcB1'), true, ''); + setB($id('dcB2'), l2open, qualifies ? (2 - d) + ' more buyer(s)' : 'needs $20+ buyers'); + setB($id('dcB3'), l3open, qualifies ? (5 - d) + ' more buyer(s)' : 'needs $20+ buyers'); + $id('dcQualNote').textContent = qualifies + ? 'Buyers of $20 or more count toward your qualification. 2 unlock level 2, 5 unlock level 3.' + : 'Heads up: $5 packages pay your level 1 but do not qualify buyers, so levels 2 and 3 stay locked in this scenario.'; + }; + ['dcDirects', 'dcPkg', 'dcSpread'].forEach(x => $id(x).addEventListener('input', recalc)); + recalc(); + } + loadLadder(); loadStats(); loadTicker(); diff --git a/public/assets/site.css b/public/assets/site.css index 06dd114..da357f6 100644 --- a/public/assets/site.css +++ b/public/assets/site.css @@ -216,6 +216,7 @@ footer{border-top:1px solid var(--line);margin-top:90px;padding:34px 0 0;color:v #status.bad{border-color:var(--bad)} input,select{background:rgba(4,8,7,.65);border:1px solid var(--line-strong);color:var(--ink);border-radius:11px; padding:11px 14px;font-size:14.5px;font-family:inherit} +input[type=range]{padding:0;border:0;background:transparent;accent-color:var(--mint);height:28px;vertical-align:middle} input:focus,select:focus{border-color:var(--mint)} :focus-visible{outline:2px solid var(--mint);outline-offset:2px} .hero-note{font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:26px} diff --git a/public/contract.html b/public/contract.html index 6df0384..9bfd5e5 100644 --- a/public/contract.html +++ b/public/contract.html @@ -5,7 +5,7 @@ The contract | InstantAdPay - +
@@ -129,7 +129,7 @@
Advertising services with a performance referral program. Not an investment product; no income guarantees. Crypto transactions are irreversible. Never spend what you cannot afford.
- - + + diff --git a/public/index.html b/public/index.html index 5feb56a..85ca8e7 100644 --- a/public/index.html +++ b/public/index.html @@ -5,7 +5,7 @@ InstantAdPay: advertise and earn, locked in code - + @@ -290,6 +290,58 @@ +
+
+
+

Run your what-if

+

Play with a scenario and see how the contract would split it. This is arithmetic on the + locked percentages, not a prediction and not a promise. Nobody earns a cent unless real + people really buy advertising.

+
+
+
+
+

Direct referrals who each buy a package

+

+ 2

+

The package they buy

+

+

Referrals each of them brings who also buy

+

+ 2

+

+
+
+
+ + + + + + + +
LevelPeople buyingYour shareYou receive
Level 1 open–50%–
Level 2 locked–20%–
Level 3 locked–10%–
If every one of those purchases happens–
+

And that is one round of purchases. The same + split runs again on every future package the same people buy.

+
+
+

+ The pass-up rule: a locked level's share does not disappear. + The contract climbs the sponsor line, checking up to 25 positions, and pays the first qualified + person it finds; only if nobody in those 25 qualifies does the share go to the platform. It cuts + both ways: stay qualified and you catch the shares that under-qualified positions below you let + slip. Every pass-up is a visible event on the ledger, so you can see + exactly where money climbed past someone and why.

+
+
+
+
@@ -345,8 +397,8 @@
- - - + + + diff --git a/public/ledger.html b/public/ledger.html index c8d662b..4544b15 100644 --- a/public/ledger.html +++ b/public/ledger.html @@ -5,7 +5,7 @@ Live ledger | InstantAdPay - +
@@ -25,7 +25,7 @@
InstantAdPay · how it works · contract source ↗
- - + + diff --git a/public/my.html b/public/my.html index f17c013..866fcc5 100644 --- a/public/my.html +++ b/public/my.html @@ -4,7 +4,7 @@ My account | InstantAdPay - +
@@ -131,8 +131,8 @@
- - - + + +