[object Object]

← back to Rentv

rentv-v1 versions: add clean nav + mobile hamburger to all 10 version previews (palette-aware, sticky; sections→/?cat=, franchises→routes)

b28c3f186912175085dfebdc94222673e9b3afda · 2026-07-21 16:03:57 -0700 · Steve Abrams

Files touched

Diff

commit b28c3f186912175085dfebdc94222673e9b3afda
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Jul 21 16:03:57 2026 -0700

    rentv-v1 versions: add clean nav + mobile hamburger to all 10 version previews (palette-aware, sticky; sections→/?cat=, franchises→routes)
---
 data/markets.json               |  2 +-
 data/news.json                  |  2 +-
 data/ticker.json                |  2 +-
 public/versions/broadsheet.html | 10 ++++++++++
 public/versions/dashboard.html  | 10 ++++++++++
 public/versions/digest.html     | 10 ++++++++++
 public/versions/feed.html       | 10 ++++++++++
 public/versions/grid.html       | 10 ++++++++++
 public/versions/magazine.html   | 10 ++++++++++
 public/versions/minimal.html    | 10 ++++++++++
 public/versions/split.html      | 10 ++++++++++
 public/versions/terminal.html   | 10 ++++++++++
 public/versions/wire.html       | 10 ++++++++++
 versions.mjs                    | 10 ++++++++++
 14 files changed, 113 insertions(+), 3 deletions(-)

diff --git a/data/markets.json b/data/markets.json
index 1eed488b..43b392fa 100644
--- a/data/markets.json
+++ b/data/markets.json
@@ -1,5 +1,5 @@
 {
-  "fetched_at": "2026-07-21T22:43:37.402Z",
+  "fetched_at": "2026-07-21T23:03:38.302Z",
   "source": "Yahoo Finance — live (CBOE Treasury yields, Dow Jones/MSCI REIT indices)",
   "curve": [
     {
diff --git a/data/news.json b/data/news.json
index 3b3cf74f..db90ea8e 100644
--- a/data/news.json
+++ b/data/news.json
@@ -1,6 +1,6 @@
 {
  "source": "rentv.com — live",
- "fetched_at": "2026-07-21T22:43:36.640Z",
+ "fetched_at": "2026-07-21T23:03:37.956Z",
  "count": 30,
  "items": [
   {
diff --git a/data/ticker.json b/data/ticker.json
index 38d051f9..a9dbbf47 100644
--- a/data/ticker.json
+++ b/data/ticker.json
@@ -1,5 +1,5 @@
 {
-  "fetched_at": "2026-07-21T22:43:37.375Z",
+  "fetched_at": "2026-07-21T23:03:38.275Z",
   "la_office_vac": {
     "label": "LA OFFICE VAC",
     "value": "23.1%",
diff --git a/public/versions/broadsheet.html b/public/versions/broadsheet.html
index ed603fbf..62018944 100644
--- a/public/versions/broadsheet.html
+++ b/public/versions/broadsheet.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="broadsheet">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>Broadsheet</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · Broadsheet</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/public/versions/dashboard.html b/public/versions/dashboard.html
index e83d9ed0..450e0978 100644
--- a/public/versions/dashboard.html
+++ b/public/versions/dashboard.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="dashboard">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>Market Dashboard</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · Market Dashboard</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/public/versions/digest.html b/public/versions/digest.html
index 3d02412f..8675e0f8 100644
--- a/public/versions/digest.html
+++ b/public/versions/digest.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="digest">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>Daily Digest</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · Daily Digest</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/public/versions/feed.html b/public/versions/feed.html
index 87651611..ff5dc5d3 100644
--- a/public/versions/feed.html
+++ b/public/versions/feed.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="feed">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>Big Feed</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · Big Feed</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/public/versions/grid.html b/public/versions/grid.html
index 9060f93e..cbddbf19 100644
--- a/public/versions/grid.html
+++ b/public/versions/grid.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="grid">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>Photo Grid</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · Photo Grid</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/public/versions/magazine.html b/public/versions/magazine.html
index 89949d49..1a1cd2d2 100644
--- a/public/versions/magazine.html
+++ b/public/versions/magazine.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="magazine">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>Magazine</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · Magazine</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/public/versions/minimal.html b/public/versions/minimal.html
index 65cde12e..55a32f15 100644
--- a/public/versions/minimal.html
+++ b/public/versions/minimal.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="minimal">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>Minimal</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · Minimal</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/public/versions/split.html b/public/versions/split.html
index 0999eeca..5df4aa55 100644
--- a/public/versions/split.html
+++ b/public/versions/split.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="split">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>Split Desk</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · Split Desk</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/public/versions/terminal.html b/public/versions/terminal.html
index 773b1bf9..f2ae5fcf 100644
--- a/public/versions/terminal.html
+++ b/public/versions/terminal.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="terminal">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>Terminal</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · Terminal</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/public/versions/wire.html b/public/versions/wire.html
index 4738de59..44fd83e6 100644
--- a/public/versions/wire.html
+++ b/public/versions/wire.html
@@ -10,6 +10,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -19,6 +26,9 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="wire">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>The Wire</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · The Wire</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>
\ No newline at end of file
diff --git a/versions.mjs b/versions.mjs
index dd94da29..03df8c9a 100644
--- a/versions.mjs
+++ b/versions.mjs
@@ -50,6 +50,13 @@ a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;paddin
 .mast{border-bottom:2px solid var(--ink);padding:18px 0 12px;text-align:center}
 .logo{font-family:var(--se);font-weight:700;font-size:40px;letter-spacing:-1px}.logo span{color:var(--a)}
 .logo small{display:block;font-family:var(--sa);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--sub);margin-top:3px}
+nav{border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--bg);z-index:20}
+nav .wrap{display:flex;gap:2px;align-items:center;height:46px}
+.ham{display:none;background:none;border:0;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px 8px 0;margin-left:auto}
+.nl{display:flex;gap:2px;align-items:center;overflow-x:auto}
+nav a{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:13px 8px;white-space:nowrap;color:var(--ink);border-bottom:3px solid transparent}
+nav a:hover{color:var(--a);border-color:var(--a)}
+@media(max-width:860px){.ham{display:block}.nl{display:none;position:absolute;top:46px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:stretch;border-bottom:1px solid var(--ln);box-shadow:0 12px 26px rgba(0,0,0,.25);z-index:30;max-height:78vh;overflow-y:auto}.nl.open{display:flex}.nl a{padding:14px 20px;border-bottom:1px solid var(--ln)}}
 .chip{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--a)}
 .byl{font-size:12px;color:var(--sub)}
 h1,h2,h3,h4{font-family:var(--se);font-weight:700;line-height:1.14}
@@ -59,8 +66,11 @@ footer{border-top:1px solid var(--ln);color:var(--sub);font-size:12px;padding:26
 </style></head><body data-ver="${key}">
 <div class="vbar"><div class="wrap"><span>RENTV · Version — <b>${title}</b></span><a href="/versions">← compare all 10 versions</a></div></div>
 <header class="mast"><div class="wrap"><a class="logo" href="/">REN<span>TV</span>.com<small>Commercial Real Estate News · ${title}</small></a></div></header>
+<nav><div class="wrap"><button class="ham" id="hb" aria-label="Menu" aria-expanded="false">☰</button>
+<div class="nl" id="nl"><a href="/">Home</a><a href="/?cat=Sales">Sales</a><a href="/?cat=Leases">Leases</a><a href="/?cat=Financing">Financing</a><a href="/?cat=Development">Development</a><a href="/?cat=Multifamily">Multifamily</a><a href="/?cat=Industrial">Industrial</a><a href="/?cat=Retail">Retail</a><a href="/markets">Markets</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a></div></div></nav>
 <div class="wrap"><main id="app"><div class="load">Loading live rentv.com stories…</div></main></div>
 <footer><div class="wrap">RENTV.com · version preview · live data from rentv.com — <a href="/versions" style="color:var(--a)">back to all versions</a></div></footer>
+<script>var hb=document.getElementById('hb');if(hb)hb.addEventListener('click',function(){var o=document.getElementById('nl').classList.toggle('open');hb.setAttribute('aria-expanded',o);});</script>
 <script src="/versions/render.js"></script></body></html>`;
 }
 

← c5fcc479 rentv-v1: merge RENTV Originals into the homepage feed — pub  ·  back to Rentv  ·  rentv-v1 admin: add clean nav (Dashboards/Publish/Blog/Main ff9b76e0 →