diff --git a/public/assets/site.css b/public/assets/site.css
index df82ebd..cd6e341 100644
--- a/public/assets/site.css
+++ b/public/assets/site.css
@@ -365,6 +365,11 @@ textarea{resize:vertical;font:inherit}
.wall-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;text-align:center}
.wall-card img{max-width:100%;border-radius:10px;border:1px solid var(--line-strong)}
.wall-pos{font-family:var(--mono);font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}
+.wc-creative img{max-width:100%;border-radius:10px;border:1px solid var(--line-strong)}
+.wc-action{margin-top:10px;min-height:32px;display:flex;justify-content:center;align-items:center}
+.wc-check{color:var(--mint);font-weight:800;border:1px solid var(--mint);border-radius:999px;padding:4px 14px;
+ box-shadow:0 0 14px rgba(67,232,195,.3)}
+.wc-timer{color:var(--amber);font-weight:700;font-family:var(--mono);font-size:13px}
/* ── modal (sponsor message) ── */
.modal-back{position:fixed;inset:0;z-index:100;background:rgba(2,6,5,.72);display:flex;align-items:center;justify-content:center;padding:20px}
.modal-card{background:var(--panel-solid);border:1px solid var(--line-strong);border-radius:var(--radius);
diff --git a/public/assets/wall.js b/public/assets/wall.js
index ea8d7b5..6498d75 100644
--- a/public/assets/wall.js
+++ b/public/assets/wall.js
@@ -20,19 +20,47 @@
if (w.qrUrl) IAP.$('bioQr').src = w.qrUrl;
IAP.$('wallCtaHead').textContent = 'Join ' + w.name + '’s line';
IAP.$('wallJoin').href = w.joinUrl;
+ // per-wall viewed-position memory (survives revisits; anonymous-friendly)
+ const VKEY = 'iap-wall-' + name;
+ let viewed = {};
+ try { viewed = JSON.parse(localStorage.getItem(VKEY) || '{}'); } catch (e) {}
+ const DWELL = 10;
const grid = IAP.$('wallGrid');
grid.innerHTML = '';
w.ladder.forEach((m, i) => {
const d = document.createElement('div');
d.className = 'wall-card';
const safe = String(m.name || 'member').replace(/[&<>]/g, '');
+ const creative = m.bannerUrl
+ ? ''
+ : '' + safe + '
' + (m.targetUrl ? 'visit their site' : 'banner slot open') + '';
d.innerHTML = '