diff --git a/public/announce.js b/public/announce.js new file mode 100644 index 0000000..a6bee58 --- /dev/null +++ b/public/announce.js @@ -0,0 +1,114 @@ +/* announce.js β€” dismissible event pop-up overlay (RM Circle). + Weekly one-off: edit the EV block below each week (or set enabled:false to hide). + Self-gating: shows once per browser until dismissed, and never after `expiresUTC`. */ +(function () { + var EV = { + id: 'huddle-2026-09-08', // bump this when the event changes (resets dismissals) + enabled: true, + img: '/huddle-flyer.jpg', + meet: 'https://meet.google.com/gsw-yhqn-zrc', + eyebrow: 'Team RM Circle Β· Weekly Huddle', + dateLabel: 'Tuesday, September 8', + times: [ + ['πŸ‡ΊπŸ‡Έ', '7:00 PM CST', 'USA / Canada'], + ['πŸ‡ΊπŸ‡Έ', '8:00 PM EST', ''], + ['πŸ‡ΉπŸ‡Ή', '8:00 PM AST', 'Caribbean'], + ['πŸ‡¬πŸ‡§', '1:00 AM', 'UK'] + ], + expiresUTC: '2026-09-09T02:30:00Z' // ~9:30 PM CT Sept 8 (after the huddle ends) + }; + + if (!EV.enabled) return; + if (Date.now() > Date.parse(EV.expiresUTC)) return; + var KEY = 'rmc-announce-' + EV.id; + try { if (localStorage.getItem(KEY) === 'done') return; } catch (e) {} + function dismiss() { try { localStorage.setItem(KEY, 'done'); } catch (e) {} close(); } + + var back, card; + function close() { + if (!back) return; + back.style.opacity = '0'; + setTimeout(function () { if (back && back.parentNode) back.parentNode.removeChild(back); back = null; }, 260); + document.removeEventListener('keydown', onKey); + } + function onKey(e) { if (e.key === 'Escape') dismiss(); } + + function build() { + back = document.createElement('div'); + back.setAttribute('role', 'dialog'); + back.setAttribute('aria-label', 'Team RM Circle Weekly Huddle invitation'); + back.style.cssText = 'position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;' + + 'padding:20px;background:rgba(3,7,14,.82);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);' + + 'opacity:0;transition:opacity .28s ease;overflow:auto;'; + back.addEventListener('click', function (e) { if (e.target === back) dismiss(); }); + + card = document.createElement('div'); + card.style.cssText = 'position:relative;width:100%;max-width:428px;max-height:94vh;overflow:auto;border-radius:20px;' + + 'background:#0a1119;border:1px solid rgba(212,175,55,.55);box-shadow:0 24px 70px rgba(0,0,0,.7),0 0 0 1px rgba(212,175,55,.15);' + + 'font-family:system-ui,Segoe UI,Arial,sans-serif;'; + + var x = document.createElement('button'); + x.setAttribute('aria-label', 'Close'); + x.innerHTML = '×'; + x.style.cssText = 'position:absolute;top:10px;right:12px;z-index:2;width:38px;height:38px;border-radius:50%;border:none;cursor:pointer;' + + 'background:rgba(6,10,16,.72);color:#fff;font-size:24px;line-height:1;font-weight:700;display:grid;place-items:center;' + + 'box-shadow:0 2px 10px rgba(0,0,0,.5);'; + x.addEventListener('click', dismiss); + + var eyebrow = document.createElement('div'); + eyebrow.textContent = EV.eyebrow; + eyebrow.style.cssText = 'text-align:center;letter-spacing:2px;text-transform:uppercase;font-size:11px;font-weight:700;' + + 'color:#d4af37;padding:14px 44px 10px;'; + + var img = document.createElement('img'); + img.src = EV.img; + img.alt = 'You are invited β€” RM Circle online presentation, Tuesday 7:00 PM Central, via Google Meet'; + img.style.cssText = 'display:block;width:100%;height:auto;'; + + var foot = document.createElement('div'); + foot.style.cssText = 'padding:16px 20px 20px;'; + + var dateRow = document.createElement('div'); + dateRow.innerHTML = 'πŸ—“ ' + EV.dateLabel + ''; + dateRow.style.cssText = 'text-align:center;color:#eef2f7;font-size:15px;margin-bottom:12px;'; + + var grid = document.createElement('div'); + grid.style.cssText = 'display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px;'; + EV.times.forEach(function (t) { + var cell = document.createElement('div'); + cell.style.cssText = 'background:rgba(212,175,55,.08);border:1px solid rgba(212,175,55,.22);border-radius:10px;padding:8px 10px;'; + cell.innerHTML = '
' + t[1] + '
' + + (t[2] ? '
' + t[2] + '
' : '
 
'); + grid.appendChild(cell); + }); + + var join = document.createElement('a'); + join.href = EV.meet; + join.target = '_blank'; + join.rel = 'noopener'; + join.textContent = 'Join Google Meet β†’'; + join.style.cssText = 'display:block;text-align:center;text-decoration:none;background:linear-gradient(180deg,#e9c249,#d4af37);' + + 'color:#0a1119;font-size:18px;font-weight:800;padding:15px;border-radius:12px;box-shadow:0 8px 22px rgba(212,175,55,.35);'; + join.addEventListener('click', function () { try { localStorage.setItem(KEY, 'done'); } catch (e) {} }); + + var link = document.createElement('div'); + link.textContent = 'meet.google.com/gsw-yhqn-zrc'; + link.style.cssText = 'text-align:center;color:#9fb0c2;font-size:13px;margin-top:10px;font-family:ui-monospace,Menlo,Consolas,monospace;'; + + var later = document.createElement('button'); + later.textContent = 'Maybe later'; + later.style.cssText = 'display:block;margin:12px auto 0;background:none;border:none;color:#7d8ea0;font-size:13px;cursor:pointer;text-decoration:underline;'; + later.addEventListener('click', dismiss); + + foot.appendChild(dateRow); foot.appendChild(grid); foot.appendChild(join); foot.appendChild(link); foot.appendChild(later); + card.appendChild(x); card.appendChild(eyebrow); card.appendChild(img); card.appendChild(foot); + back.appendChild(card); + document.body.appendChild(back); + document.addEventListener('keydown', onKey); + requestAnimationFrame(function () { back.style.opacity = '1'; }); + } + + function go() { setTimeout(build, 1100); } + if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', go); + else go(); +})(); diff --git a/public/app.html b/public/app.html index fc9abcb..17fe6ea 100644 --- a/public/app.html +++ b/public/app.html @@ -28,4 +28,5 @@ Open the dashboard - + + diff --git a/public/contract.html b/public/contract.html index 553024f..09f4674 100644 --- a/public/contract.html +++ b/public/contract.html @@ -30,4 +30,5 @@ - + + diff --git a/public/fast-start.html b/public/fast-start.html index 828f779..5082230 100644 --- a/public/fast-start.html +++ b/public/fast-start.html @@ -112,4 +112,5 @@ - + + diff --git a/public/flyers.html b/public/flyers.html index be9f272..3420f5c 100644 --- a/public/flyers.html +++ b/public/flyers.html @@ -48,4 +48,5 @@ - + + diff --git a/public/generation-pay.html b/public/generation-pay.html index dcb02ee..b1c5255 100644 --- a/public/generation-pay.html +++ b/public/generation-pay.html @@ -107,4 +107,5 @@ - + + diff --git a/public/how-pay-works.html b/public/how-pay-works.html index 92b10ff..667e6c6 100644 --- a/public/how-pay-works.html +++ b/public/how-pay-works.html @@ -129,4 +129,5 @@ - + + diff --git a/public/huddle-flyer.jpg b/public/huddle-flyer.jpg new file mode 100644 index 0000000..187f7e9 Binary files /dev/null and b/public/huddle-flyer.jpg differ diff --git a/public/index.html b/public/index.html index da3c55d..06df2cb 100644 --- a/public/index.html +++ b/public/index.html @@ -23,4 +23,5 @@
Ready to start?

See the current team placement.

The onboarding page automatically shows the sponsor position the team is currently helping. Always use the sponsor shown there instead of an old screenshot or saved link.

Open Getting Started Instructions β†’
- + + diff --git a/public/join.html b/public/join.html index 7a2a4cd..3790da1 100644 --- a/public/join.html +++ b/public/join.html @@ -29,4 +29,5 @@
Risk reminder: participation involves cryptocurrency and smart-contract risk. No income is guaranteed. Use only funds you can afford to lose.
- + + diff --git a/public/my.html b/public/my.html index 4f7c374..98cf2fd 100644 --- a/public/my.html +++ b/public/my.html @@ -31,4 +31,5 @@ - + + diff --git a/public/replays.html b/public/replays.html index 4ecba64..1e11a4c 100644 --- a/public/replays.html +++ b/public/replays.html @@ -14,4 +14,5 @@ - + + diff --git a/public/start.html b/public/start.html index 213be57..5705d44 100644 --- a/public/start.html +++ b/public/start.html @@ -16,4 +16,5 @@
Risk reminder: participation involves cryptocurrency and smart-contract risk. No income is guaranteed. Use only funds you can afford to lose.
RM Circle Premium Team Build Roadmap β€” core strategy, step-by-step guide, premium levels, and duplication formula
This roadmap is the plan every member follows β€” tap to view full size.
- + +