diff --git a/src/views/welcome-view.js b/src/views/welcome-view.js
--- a/src/views/welcome-view.js
+++ b/src/views/welcome-view.js
@@ -3,12 +3,10 @@ import { escapeHtml } from "../utils/html.js";
 
 const navLinks = [
   ["/", "Home"],
-  ["/services", "Services"],
   ["/plans", "Plans"],
-  ["/mobile-app", "Mobile app"],
-  ["/contact", "Contact"],
+  ["/onboarding", "Onboarding"],
+  ["/demo", "Demo"],
   ["/app", "Login"]
 ];
 
 const serviceHighlights = [
@@ -53,18 +51,18 @@ const services = [
   
   ["Notifications", "Push, in-app, email, optional SMS, SOS alerts, check-in and checkout messages, request responses, estate announcements, and visitor history links."],
   ["Analytics", "Visitor statistics, guard performance, traffic analytics, risk analysis, weekly resident stats, estate engagement, heatmaps, and plan-limited exports."],
-  ["Payments", "Subscription billing, payment confirmation, provider switching, webhooks, grace periods, invoices for estate admins, and service charge workflows by plan."],
-  ["Compliance and Security", "Audit logs, device logs, access history, incident logs, data export controls, privacy policy links, retention rules, and data processing terms."],
-  ["Demo Environment", "Approved estate prospects can test the web demo at /demo with production or local test service modes after onboarding review and payment confirmation."]
+  ["Payments", "Subscription billing, payment confirmation, grace periods, invoices for estate admins, and service charge workflows by plan."],
+  ["Compliance and Security", "Audit trails, device logs, access history, incident logs, data export controls, privacy policy links, retention rules, and data processing terms."],
+  ["Protected Demo", "Approved estate prospects can test the web demo at /demo only after registration, verification, review, and time-limited access approval."]
 ];
 
 const roleWorkflows = [
   ["Resident", "Create visitor passes, complete profile, receive check-in and checkout alerts, review allowed visitor history, submit complaints, and see estate plan benefits."],
   ["Guard", "Use scanning only after OTP verification, complete profile, estate assignment, gate assignment, admin or supervisor approval, and active shift readiness."],
   ["Security Supervisor", "Create residents when delegated, assign gates and shifts, respond to incidents, send security broadcasts, and monitor guard readiness."],
   ["Estate Admin", "Deactivate estate users, manage gates, announcements, residents, guards, subscription visibility, feature settings, visitor intelligence, and request workflows."],
   ["Sales Admin", "Review onboarding pipeline, approved demos, estate data, subscription readiness, and client follow-up without entering private resident operations."],
-  ["Platform Operations", "Business-approved controls manage plans, payment confirmation, demo approvals, audit trails, and enterprise access."]
+  ["GateWise Operations", "Approved controls manage onboarding, payment confirmation, demo approvals, audit trails, and enterprise access."]
 ];
@@ -150,12 +148,12 @@ const mobileScreens = [
     foot: "Estate-wide controls with plan-based limits and delegated messaging."
   },
   {
-    role: "Business Ops",
+    role: "Operations",
     title: "Feature settings",
     items: ["Role toggles", "Plan features", "Plan controls", "Approved demos"],
     foot: "Central control for all roles, plans, estates, and enterprise access."
   },
@@ -167,7 +165,7 @@ const partners = [
   ["Estate managers", "Run multiple estates, standardize gate workflows, and report resident engagement to estate owners."],
   ["Security companies", "Bring guard performance, gate accountability, incident history, and shift management into one platform."],
   ["Sales and implementation partners", "Help estates onboard, validate needs, configure plans, and guide administrators through activation."],
-  ["Payment providers", "Support subscription billing, service charge payments, webhooks, provider switching, and payment confirmation."],
+  ["Payment operations", "Support subscription billing, service charge payments, provider switching, and payment confirmation."],
   ["Smart gate and hardware providers", "Future enterprise integrations can connect GateWise workflows to physical gate systems and devices."]
 ];
@@ -210,6 +208,7 @@ function renderHeader(pathname) {
         ${navLinks
           .map(([href, label]) => `<a href="${href}" ${href === pathname ? 'aria-current="page"' : ""}>${escapeHtml(label)}</a>`)
           .join("")}
+        <button class="public-theme-toggle" type="button" data-public-theme-toggle aria-label="Toggle light or dark mode">Theme</button>
       </nav>
     </header>
   `;
@@ -246,7 +245,7 @@ function renderHomePage() {
         <p class="welcome-kicker">Smart estate visitor management</p>
         <h1>GateWise NG gives every estate a safer visitor journey.</h1>
         <p class="welcome-lead">
-          GateWise connects residents, guards, supervisors, estate admins, sales teams, and businesss around one trusted flow:
+          GateWise connects residents, guards, supervisors, estate admins, sales teams, and operations around one trusted flow:
           invite visitors, verify at the gate, notify the right resident, track history, respond to incidents, and keep plan limits clear.
         </p>
@@ -374,7 +373,7 @@ function renderServicesPage() {
     <section class="welcome-band">
       <div>
         <p class="welcome-kicker">Service controls</p>
-        <h2>Businesss can activate or deactivate features for roles, plans, selected estates, or the whole platform.</h2>
+        <h2>Approved feature controls can activate or deactivate tools for roles, plans, selected estates, or the whole platform.</h2>
         <p>
           Feature settings are designed to support plan packaging, pilots, temporary restrictions, enterprise access, and future product expansion.
         </p>
@@ -596,15 +595,47 @@ function renderPlanCard(plan) {
         <h2>${escapeHtml(plan.name)}</h2>
         <strong>${escapeHtml(plan.price)}</strong>
       </div>
+      <p class="plan-card-summary">${escapeHtml(planSummary(plan))}</p>
       <section>
         <h3>Limits</h3>
         ${renderList(plan.limits)}
       </section>
       <section>
@@ -605,9 +636,41 @@ function renderPlanCard(plan) {
         ${renderList(plan.features)}
       </section>
       ${plan.missing.length ? `<section><h3>Resident upgrade prompts</h3>${renderList(plan.missing)}</section>` : ""}
+      <a class="welcome-btn plan-cta ${plan.name.includes("Luxury") ? "primary" : ""}" href="/onboarding?plan=${encodeURIComponent(plan.name)}">${escapeHtml(planCta(plan))}</a>
     </article>
   `;
 }
+
+function planSummary(plan) {
+  if (plan.name.includes("Starter")) {
+    return "Best entry point for small estates that need QR visitor access, resident profiles, requests, and basic announcements.";
+  }
+  if (plan.name.includes("Secure")) {
+    return "Adds multi-gate operations, guard shifts, service workflows, reports, and stronger visitor intelligence.";
+  }
+  if (plan.name.includes("Luxury")) {
+    return "Recommended for larger estates that need AI visitor safety signals, heatmaps, audit logs, and priority response.";
+  }
+  if (plan.name.includes("Business")) {
+    return "Built for estate managers and owners that need multi-estate visibility, advanced analytics, payments, and incident escalation.";
+  }
+  return "Custom enterprise coverage for dedicated infrastructure, integrations, white-labeling, and VIP onboarding.";
+}
+
+function planCta(plan) {
+  if (plan.name.includes("Business")) {
+    return "Talk to GateWise";
+  }
+  if (plan.name.includes("Enterprise")) {
+    return "Request custom plan";
+  }
+  return `Choose ${plan.name.replace("GateWise ", "")}`;
+}
 
 function renderList(items) {
   return `<ul>${items.map((item) => `<li>${escapeHtml(item)}</li>`).join("")}</ul>`;
diff --git a/src/config/legal-links.js b/src/config/legal-links.js
--- a/src/config/legal-links.js
+++ b/src/config/legal-links.js
@@ -62,23 +62,18 @@ export function renderPublicPolicyFooter() {
           <span>A product of Globulus Technology Limited.</span>
         </section>
         <nav aria-label="Product links">
-          <strong>Product</strong>
           <a href="/services">Services</a>
           <a href="/plans">Plans and features</a>
-          <a href="/mobile-app">Mobile app</a>
           <a href="/onboarding">Estate signup</a>
-          <a href="/demo">Protected demo</a>
           <a href="/app">Login</a>
         </nav>
         <nav aria-label="Company links">
-          <strong>Company</strong>
-          <a href="/about">About us</a>
+          <a href="/about">About</a>
           <a href="/partners">Partners</a>
-          <a href="/contact">Contact us</a>
+          <a href="/contact">Contact</a>
           <a href="/legal">Policy Center</a>
         </nav>
         <nav aria-label="Legal and privacy links">
-          <strong>Legal</strong>
-          ${LEGAL_DOCS.map((doc) => `<a href="/legal/${doc.slug}">${doc.title}</a>`).join("")}
+          ${LEGAL_DOCS.slice(0, 4).map((doc) => `<a href="/legal/${doc.slug}">${doc.title}</a>`).join("")}
         </nav>
       </div>
     </footer>
diff --git a/src/views/legal-view.js b/src/views/legal-view.js
--- a/src/views/legal-view.js
+++ b/src/views/legal-view.js
@@ -84,6 +84,9 @@ async function loadPolicyDocument(app, doc) {
       throw new Error("Policy document could not be loaded.");
     }
     const markdown = await response.text();
+    if (!markdown.trim() || markdown.trim().toLowerCase().startsWith("<!doctype")) {
+      throw new Error("Policy document could not be loaded.");
+    }
     target.innerHTML = markdownToHtml(markdown);
     document.title = `${doc.title} | GateWise NG`;
   } catch (error) {
diff --git a/src/views/demo-access-view.js b/src/views/demo-access-view.js
--- a/src/views/demo-access-view.js
+++ b/src/views/demo-access-view.js
@@ -107,11 +107,29 @@ async function verifyOtp(event) {
     if (role !== "ESTATE_ADMIN") {
       throw new Error("Demo access is restricted to approved estate admins.");
     }
-    const expiresAt = Date.now() + MAX_SESSION_MS;
-    sessionStorage.setItem(SESSION_KEY, JSON.stringify({ approved: true, role, expiresAt }));
+    const demoAccess = await apiFetch("/profile/demo-access", {
+      headers: { Authorization: `Bearer ${result.accessToken}` }
+    });
+    if (!demoAccess?.approved) {
+      throw new Error(demoAccess?.reason || "Demo access has not been approved for this estate admin.");
+    }
+    const approvedExpiresAt = Date.parse(demoAccess.expiresAt || "");
+    const maxSessionMs = Number(demoAccess.maxSessionMinutes || 120) * 60 * 1000;
+    const expiresAt = Math.min(
+      Number.isFinite(approvedExpiresAt) ? approvedExpiresAt : Date.now() + MAX_SESSION_MS,
+      Date.now() + Math.min(maxSessionMs || MAX_SESSION_MS, MAX_SESSION_MS)
+    );
+    sessionStorage.setItem(SESSION_KEY, JSON.stringify({ approved: true, role, expiresAt, estate: demoAccess.estate || null }));
     localStorage.setItem("estateSecurity.tokens", JSON.stringify({ accessToken: result.accessToken, refreshToken: result.refreshToken }));
     localStorage.setItem("estateSecurity.role", "ESTATE_ADMIN");
-    localStorage.setItem("estateSecurity.user", JSON.stringify({ name: "Ade Okafor", role: "ESTATE_ADMIN", phone: data.phone }));
+    localStorage.setItem(
+      "estateSecurity.user",
+      JSON.stringify({
+        name: result.user?.name || "Ade Okafor",
+        role: "ESTATE_ADMIN",
+        phone: data.phone,
+        estate: demoAccess.estate || null
+      })
+    );
     window.location.reload();
   } catch (error) {
     setStatus(status, error.message || "Demo access could not be verified.", "error");
diff --git a/legal/terms-and-conditions.md b/legal/terms-and-conditions.md
--- a/legal/terms-and-conditions.md
+++ b/legal/terms-and-conditions.md
@@ -28,7 +28,7 @@ GateWise provides software tools for estate and facility visitor management. Dep
 
 GateWise may include several account types. Access depends on role, plan, estate status, and enabled features.
 
-Platform super administrators may manage platform-level configuration, subscriptions, features, and customer onboarding.
+GateWise may manage platform-level configuration, subscriptions, features, and customer onboarding through authorized internal operations.
 
 Estate administrators may manage their assigned estate, users, residents, guards, visitor workflows, and estate-specific settings allowed by the subscribed plan.
diff --git a/styles/main.css b/styles/main.css
--- a/styles/main.css
+++ b/styles/main.css
@@ -86,10 +86,11 @@ html {
   place-items: center;
   border: 1px solid rgba(255, 255, 255, 0.2);
   border-radius: var(--radius);
-  background: #f6f9f4;
-  color: var(--brand-dark);
+  background: #f6f9f4 url("../assets/app-logo-mark.png") center / cover no-repeat;
+  color: transparent;
   font-weight: 900;
+  overflow: hidden;
 }
 
 .brand-title {
diff --git a/styles/welcome.css b/styles/welcome.css
--- a/styles/welcome.css
+++ b/styles/welcome.css
@@ -16,7 +16,7 @@
   align-items: center;
   justify-content: space-between;
   gap: 18px;
-  padding: 18px clamp(18px, 4vw, 56px);
+  padding: 14px clamp(18px, 4vw, 48px);
   background: rgba(244, 247, 242, 0.92);
   border-bottom: 1px solid var(--line);
   backdrop-filter: blur(16px);
@@ -55,6 +55,7 @@
   padding: 7px 10px;
   border: 1px solid transparent;
   border-radius: var(--radius);
+  font-size: 0.92rem;
 }
 
 .welcome-links a:hover {
@@ -408,6 +409,13 @@
   list-style: none;
 }
 
+.demo-process-overview {
+  padding: 16px;
+  background: rgba(255, 255, 255, 0.78);
+  border: 1px solid var(--line);
+  border-radius: var(--radius);
+}
+
 .demo-process-list li {
   display: grid;
   grid-template-columns: 34px minmax(0, 1fr);
@@ -1394,6 +1402,7 @@ html[data-public-theme="dark"] .field textarea,
 .demo-request-card .field textarea {
   background: #ffffff;
   border-color: #aebfb5;
+  color: var(--brand-dark);
 }
 
 .demo-access-shell {
@@ -1160,6 +1169,17 @@ html[data-public-theme="dark"] .field textarea,
   font-size: 1.2rem;
 }
 
+.plan-card-summary {
+  margin: 0;
+  color: var(--muted);
+  line-height: 1.6;
+}
+
+.plan-cta {
+  width: 100%;
+  margin-top: 4px;
+}
+
 .plan-card ul {
   margin: 8px 0 0;
   padding-left: 20px;
@@ -1450,7 +1470,8 @@ html[data-public-theme="dark"] .field textarea,
 .plan-card.recommended-plan {
   border-color: rgba(14, 124, 102, 0.55);
-  box-shadow: 0 18px 44px rgba(14, 124, 102, 0.18);
+  background: linear-gradient(180deg, rgba(232, 245, 239, 0.95), #ffffff 44%);
+  box-shadow: 0 18px 44px rgba(14, 124, 102, 0.2);
 }
 
 .plan-card.recommended-plan::before {
@@ -1467,7 +1488,7 @@ html[data-public-theme="dark"] .field textarea,
 }
 
 .footer-grid {
-  grid-template-columns: minmax(260px, 1.4fr) repeat(3, minmax(150px, 0.85fr));
+  grid-template-columns: minmax(280px, 1.5fr) repeat(3, minmax(130px, 0.7fr));
 }
 
 @media (max-width: 980px) {
