diff --git a/public/my.js b/public/my.js
index e5e7eee..31a5610 100644
--- a/public/my.js
+++ b/public/my.js
@@ -325,7 +325,7 @@
const err=document.getElementById('msgAuthErr');
try{
const eth=await window.RMCWallet.pick();
- if(!eth){err.textContent='No wallet found in this browser. On a phone, open your wallet app (SafePal, Phantom, MetaMask, Trust, Coinbase…), go to its Browser or DApp tab, and type this page\'s address there — your wallet connects automatically.';return;}
+ if(!eth){err.textContent='This browser has no wallet in it. Open this page INSIDE your wallet app instead: open Trust, MetaMask, SafePal or Coinbase, find its Browser (or DApps) tab, and type rmcircle.team/my into that address bar. On iPhone, Trust no longer has a browser — use MetaMask or SafePal, or ask your sponsor to link you instead.';return;}
const accs=await eth.request({method:'eth_requestAccounts'});const account=accs[0];
// Match the wallet's active chain to the SIWE message's Chain ID (137),
// or the wallet rejects the signature ("chain ID does not match").
diff --git a/public/suite.js b/public/suite.js
index 683c85a..ba49a32 100644
--- a/public/suite.js
+++ b/public/suite.js
@@ -104,7 +104,7 @@
btn.disabled = true; btn.textContent = 'Connecting…';
try {
var eth = await window.RMCWallet.pick();
- if (!eth) { err.textContent = 'No wallet found in this browser. On a phone, open this page inside your wallet app’s browser (the DApps tab) — type rmcircle.team/suite there.'; err.style.display = 'block'; btn.disabled = false; btn.textContent = '🔑 Connect wallet — light up my tools'; return; }
+ if (!eth) { err.textContent = 'This browser has no wallet in it. Open this page INSIDE your wallet app instead: open Trust, MetaMask, SafePal or Coinbase, find its Browser (or DApps) tab, and type rmcircle.team/suite into that address bar. On iPhone, Trust no longer has a browser — use MetaMask or SafePal, or ask your sponsor to link you instead.'; err.style.display = 'block'; btn.disabled = false; btn.textContent = '🔑 Connect wallet — light up my tools'; return; }
var accs = await eth.request({ method: 'eth_requestAccounts' });
var account = accs[0];
try { await window.RMCWallet.ensureChain(eth); } catch (ce) {}
diff --git a/suite-pages.js b/suite-pages.js
index 10b5de1..323ebeb 100644
--- a/suite-pages.js
+++ b/suite-pages.js
@@ -147,6 +147,21 @@ function esc(s) {
});
}
+// House style puts the last beat of a heading in gold ("Team Grants.").
+// These headlines are written by the model, so we cannot hand-pick the split —
+// take the final two words, or the last one when the line is short. Everything
+// is escaped first; the only markup added is our own span.
+function goldTail(text) {
+ const t = String(text || '').trim();
+ if (!t) return '';
+ const words = t.split(/\s+/);
+ if (words.length < 3) return esc(t);
+ const take = words.length >= 6 ? 2 : 1;
+ const head = words.slice(0, words.length - take).join(' ');
+ const tail = words.slice(words.length - take).join(' ');
+ return esc(head) + ' ' + esc(tail) + '';
+}
+
function render(rec) {
const a = ANGLES[rec.angle] || ANGLES.overview;
// The button and the QR go to DIFFERENT places on purpose.
@@ -177,10 +192,15 @@ function render(rec) {
'' +
'