{"id":230,"date":"2026-06-08T09:02:46","date_gmt":"2026-06-08T09:02:46","guid":{"rendered":"https:\/\/cashchat.se\/dir\/?page_id=230"},"modified":"2026-06-08T10:05:31","modified_gmt":"2026-06-08T10:05:31","slug":"v2","status":"publish","type":"page","link":"https:\/\/cashchat.se\/dir\/","title":{"rendered":"v2"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, viewport-fit=cover, user-scalable=yes\">\n  <title>Adase Ads Ltd | Earn Points &#038; Digital Advertising<\/title>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:opsz,wght@14..32,300;400;500;600;700;800&amp;display=swap\" rel=\"stylesheet\">\n  <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.0\/css\/all.min.css\">\n  <style>\n    * { margin: 0; padding: 0; box-sizing: border-box; }\n    body { font-family: 'Inter', sans-serif; background: #f5f7fc; color: #0a0c10; }\n\n    \/* Dashboard Container *\/\n    .dashboard-container { max-width: 1400px; margin: 0 auto; padding: 20px 24px; }\n\n    \/* Header *\/\n    .dashboard-header {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      flex-wrap: wrap;\n      gap: 16px;\n      margin-bottom: 28px;\n      padding-bottom: 16px;\n      border-bottom: 2px solid #eef2ff;\n    }\n    .logo-area { display: flex; align-items: center; gap: 12px; }\n    .logo-icon {\n      width: 48px; height: 48px;\n      background: linear-gradient(145deg, #fbbf24, #f59e0b);\n      border-radius: 50%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      box-shadow: 0 8px 16px rgba(245,158,11,0.25);\n    }\n    .logo-icon i { font-size: 1.6rem; color: #fff9e8; }\n    .logo-text h1 { font-size: 1.6rem; font-weight: 800; }\n    .logo-text .adase { background: linear-gradient(135deg, #1e40af, #3b82f6); background-clip: text; -webkit-background-clip: text; color: transparent; }\n    .logo-text .ads { background: linear-gradient(135deg, #16a34a, #22c55e); background-clip: text; -webkit-background-clip: text; color: transparent; }\n    .tagline { font-size: 0.7rem; color: #6c757d; }\n    .user-area { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }\n\n    \/* Stats Cards *\/\n    .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; margin-bottom: 28px; }\n    .stat-card {\n      background: white; border-radius: 28px; padding: 20px;\n      border: 1px solid #eef2ff; transition: all 0.2s;\n      box-shadow: 0 2px 8px rgba(0,0,0,0.02);\n    }\n    .stat-card:hover { transform: translateY(-3px); box-shadow: 0 12px 24px rgba(0,0,0,0.05); }\n    .stat-card .stat-label { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 1px; color: #6b7280; margin-bottom: 8px; }\n    .stat-card .stat-value { font-size: 1.8rem; font-weight: 800; color: #1e40af; }\n    .stat-card .stat-icon { float: right; font-size: 2rem; color: #e0e7ff; }\n\n    \/* Buttons *\/\n    .btn {\n      padding: 10px 24px; border-radius: 40px; font-weight: 600; font-size: 0.85rem;\n      border: none; cursor: pointer; transition: all 0.2s ease;\n      display: inline-flex; align-items: center; gap: 8px; text-decoration: none;\n    }\n    .btn-primary { background: linear-gradient(135deg, #2563eb, #1d4ed8); color: white; box-shadow: 0 4px 10px rgba(37,99,235,0.2); }\n    .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(37,99,235,0.3); }\n    .btn-gold { background: linear-gradient(135deg, #fbbf24, #f59e0b); color: #1e293b; }\n    .btn-gold:hover { transform: translateY(-2px); }\n    .btn-outline { background: transparent; border: 1.5px solid #2563eb; color: #2563eb; }\n    .btn-outline:hover { background: #eff6ff; }\n    .btn-sm { padding: 6px 16px; font-size: 0.75rem; }\n    .btn-success { background: #10b981; color: white; }\n    .btn-danger { background: #ef4444; color: white; }\n\n    \/* Cards *\/\n    .card {\n      background: white; border-radius: 28px; padding: 24px; margin-bottom: 24px;\n      border: 1px solid #eef2ff; box-shadow: 0 4px 12px rgba(0,0,0,0.02);\n    }\n    .card-header {\n      display: flex; justify-content: space-between; align-items: center;\n      flex-wrap: wrap; gap: 12px; margin-bottom: 20px;\n      padding-bottom: 12px; border-bottom: 2px solid #f0f2f8;\n    }\n    .card-header h3 { font-size: 1.2rem; font-weight: 700; color: #1e293b; }\n    .card-header h3 i { color: #fbbf24; margin-right: 8px; }\n\n    \/* Grid *\/\n    .grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 24px; }\n\n    \/* Ads Grid for Viewer *\/\n    .ads-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n      gap: 20px;\n      margin-top: 16px;\n    }\n    .ad-card {\n      background: #f8fafc; border-radius: 20px; padding: 16px;\n      border: 1px solid #eef2ff; transition: all 0.2s;\n    }\n    .ad-card:hover { transform: translateY(-3px); box-shadow: 0 8px 16px rgba(0,0,0,0.05); border-color: #fbbf24; }\n    .ad-title { font-weight: 700; font-size: 1.1rem; margin-bottom: 8px; }\n    .ad-media { margin: 12px 0; border-radius: 16px; overflow: hidden; }\n    .ad-media video, .ad-media img { width: 100%; max-height: 180px; object-fit: cover; border-radius: 16px; }\n\n    \/* Form Elements *\/\n    .form-group { margin-bottom: 18px; }\n    .form-group label { display: block; font-weight: 600; font-size: 0.8rem; color: #4b5563; margin-bottom: 6px; }\n    input, select, textarea {\n      width: 100%; padding: 12px 16px; border-radius: 16px;\n      border: 1.5px solid #e2e8f0; font-size: 0.9rem; transition: 0.2s;\n      background: white;\n    }\n    input:focus, select:focus, textarea:focus {\n      outline: none; border-color: #fbbf24; box-shadow: 0 0 0 3px rgba(251,191,36,0.1);\n    }\n\n    .badge {\n      background: #eef2ff; padding: 4px 12px; border-radius: 40px;\n      font-size: 0.7rem; font-weight: 600; display: inline-flex; align-items: center; gap: 6px;\n    }\n    .badge-warning { background: #fef3c7; color: #b45309; }\n    .badge-success { background: #d1fae5; color: #065f46; }\n\n    .flex-between { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; }\n\n    \/* Modal *\/\n    .modal {\n      display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%;\n      background: rgba(0,0,0,0.6); backdrop-filter: blur(4px); z-index: 1000;\n      justify-content: center; align-items: center;\n    }\n    .modal-content {\n      background: white; max-width: 500px; width: 90%; border-radius: 28px;\n      padding: 28px; max-height: 85vh; overflow-y: auto;\n    }\n\n    \/* Tabs *\/\n    .desktop-tabs {\n      display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 28px;\n      background: white; padding: 8px 16px; border-radius: 60px; border: 1px solid #eef2ff;\n    }\n    .tab-btn {\n      padding: 10px 24px; border-radius: 40px; background: transparent;\n      border: none; font-weight: 600; cursor: pointer; transition: all 0.2s; color: #4b5563;\n    }\n    .tab-btn:hover { background: #f3f4f6; }\n    .tab-btn.active { background: linear-gradient(135deg, #2563eb, #1d4ed8); color: white; }\n    .mobile-nav {\n      display: none; position: fixed; bottom: 0; left: 0; right: 0;\n      background: white; padding: 12px 20px; border-top: 1px solid #eef2ff;\n      justify-content: space-around; z-index: 100;\n    }\n    .mobile-nav-item {\n      display: flex; flex-direction: column; align-items: center; gap: 4px;\n      background: none; border: none; font-size: 0.7rem; color: #6b7280; cursor: pointer;\n    }\n    .mobile-nav-item i { font-size: 1.3rem; }\n    .mobile-nav-item.active { color: #f59e0b; }\n\n    @media (max-width: 768px) {\n      .dashboard-container { padding: 16px; }\n      .desktop-tabs { display: none; }\n      .mobile-nav { display: flex; }\n      .main-content { padding-bottom: 70px; }\n      .stats-grid { gap: 12px; }\n      .ads-grid { grid-template-columns: 1fr; }\n    }\n  <\/style>\n<\/head>\n<body>\n\n<div class=\"dashboard-container\">\n  <div class=\"dashboard-header\">\n    <div class=\"logo-area\">\n      <div class=\"logo-icon\"><i class=\"fas fa-coins\"><\/i><\/div>\n      <div class=\"logo-text\">\n        <h1><span class=\"adase\">Adase<\/span> <span class=\"ads\">Ads Ltd<\/span><\/h1>\n        <div class=\"tagline\"><i class=\"fas fa-map-marker-alt\"><\/i> Monetizing Africa \u2022 Earn Points<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"user-area\" id=\"globalUserArea\"><\/div>\n  <\/div>\n\n  <!-- Desktop Tabs -->\n  <div class=\"desktop-tabs\" id=\"desktopTabs\">\n    <button class=\"tab-btn active\" data-tab=\"viewer\"><i class=\"fas fa-eye\"><\/i> Earn Points<\/button>\n    <button class=\"tab-btn\" data-tab=\"advertiser\"><i class=\"fas fa-chart-line\"><\/i> Advertiser<\/button>\n    <button class=\"tab-btn\" data-tab=\"admin\" id=\"adminTabBtn\" style=\"display:none;\"><i class=\"fas fa-shield-alt\"><\/i> Admin<\/button>\n  <\/div>\n\n  <div id=\"dynamicPanel\" class=\"main-content\"><\/div>\n<\/div>\n\n<div class=\"mobile-nav\" id=\"mobileNav\">\n  <button class=\"mobile-nav-item active\" data-tab=\"viewer\"><i class=\"fas fa-eye\"><\/i><span>Earn<\/span><\/button>\n  <button class=\"mobile-nav-item\" data-tab=\"advertiser\"><i class=\"fas fa-chart-line\"><\/i><span>Advertise<\/span><\/button>\n  <button class=\"mobile-nav-item\" id=\"mobileAdminBtn\" data-tab=\"admin\" style=\"display:none;\"><i class=\"fas fa-shield-alt\"><\/i><span>Admin<\/span><\/button>\n<\/div>\n\n<script>\n  \/\/ ==================== DATA LAYER ====================\n  let users = [], ads = [], proofs = [], platformRevenue = 0, sessions = { currentUserId: null };\n  let smmOrders = [], withdrawRequests = [], contacts = [], fundingRequests = [];\n\n  const USD_TO_UGX = 3800;\n  const SMM_PACKAGES = {\n    facebook: [\n      { name: \"Facebook Followers\", desc: \"1000 Followers\", priceUSD: 10, priceUGX: 10 * 3800, icon: \"fab fa-facebook\" },\n      { name: \"Facebook Views\", desc: \"2000 Views\", priceUSD: 5, priceUGX: 5 * 3800, icon: \"fab fa-facebook\" },\n      { name: \"Facebook Likes\", desc: \"1000 Likes\", priceUSD: 5, priceUGX: 5 * 3800, icon: \"fab fa-facebook\" },\n      { name: \"Facebook Shares\", desc: \"500 Shares\", priceUSD: 5, priceUGX: 5 * 3800, icon: \"fab fa-facebook\" }\n    ],\n    instagram: [\n      { name: \"Instagram Views\", desc: \"1000 Views\", priceUSD: 10, priceUGX: 10 * 3800, icon: \"fab fa-instagram\" },\n      { name: \"Instagram Views (Bulk)\", desc: \"5000 Views\", priceUSD: 5, priceUGX: 5 * 3800, icon: \"fab fa-instagram\" },\n      { name: \"Instagram Likes\", desc: \"5000 Likes\", priceUSD: 5, priceUGX: 5 * 3800, icon: \"fab fa-instagram\" },\n      { name: \"Instagram Reposts\", desc: \"1000 Reposts\", priceUSD: 5, priceUGX: 5 * 3800, icon: \"fab fa-instagram\" }\n    ],\n    youtube: [\n      { name: \"YouTube Subscribers\", desc: \"100 Subscribers\", priceUSD: 10, priceUGX: 10 * 3800, icon: \"fab fa-youtube\" },\n      { name: \"YouTube Live Views\", desc: \"500 Live Views (30 min)\", priceUSD: 10, priceUGX: 10 * 3800, icon: \"fab fa-youtube\" },\n      { name: \"YouTube Video Views\", desc: \"10,000 Video Views\", priceUSD: 50, priceUGX: 50 * 3800, icon: \"fab fa-youtube\" },\n      { name: \"YouTube Watch Hours\", desc: \"500 Genuine Watch Hours\", priceUSD: 100, priceUGX: 100 * 3800, icon: \"fab fa-youtube\" },\n      { name: \"YouTube Likes\", desc: \"100 Likes\", priceUSD: 10, priceUGX: 10 * 3800, icon: \"fab fa-youtube\" }\n    ]\n  };\n\n  function loadData() {\n    const stored = (key) => localStorage.getItem(key);\n    users = JSON.parse(stored('adase_users') || '[]');\n    ads = JSON.parse(stored('adase_ads') || '[]');\n    proofs = JSON.parse(stored('adase_proofs') || '[]');\n    platformRevenue = parseFloat(stored('adase_platformRevenue') || '0');\n    smmOrders = JSON.parse(stored('adase_smm_orders') || '[]');\n    withdrawRequests = JSON.parse(stored('adase_withdraw_requests') || '[]');\n    contacts = JSON.parse(stored('adase_contacts') || '[]');\n    fundingRequests = JSON.parse(stored('adase_funding_requests') || '[]');\n\n    const adminEmail = \"sales@cashchat.se\", adminPass = \"Justtrade81#\";\n    const existingAdmin = users.find(u => u.email === adminEmail && u.role === 'admin');\n    if (!existingAdmin) {\n      users = users.filter(u => u.role !== 'admin');\n      users.push({ id: Date.now()+1, name:\"Super Admin\", firstName:\"Super\", lastName:\"Admin\", email:adminEmail, password:adminPass, role:\"admin\", wallet:0, advertiserWallet:0, viewedAds:[], phone:\"\", sponsorCode:\"\", country:\"\", city:\"\", gender:\"\", ageGroup:\"\", walletStatus:\"Active\", accountStatus:\"active\" });\n    } else existingAdmin.password = adminPass;\n\n    users = users.map(u => {\n      if(!u.firstName) u.firstName = u.name?.split(' ')[0] || \"\";\n      if(!u.lastName) u.lastName = u.name?.split(' ')[1] || \"\";\n      if(u.phone === undefined) u.phone = \"\";\n      if(u.city === undefined) u.city = \"\";\n      if(u.gender === undefined) u.gender = \"\";\n      if(u.ageGroup === undefined) u.ageGroup = \"\";\n      if(u.walletStatus === undefined) u.walletStatus = (u.role === 'user' ? \"Not Active\" : \"Active\");\n      if(u.accountStatus === undefined) u.accountStatus = \"active\";\n      if(!u.name && u.firstName) u.name = (u.firstName + \" \" + u.lastName).trim();\n      return u;\n    });\n\n    if(users.length === 1) {\n      users.push({ id:1001, name:\"Demo Advertiser\", firstName:\"Demo\", lastName:\"Advertiser\", email:\"adv@demo.com\", password:\"adv123\", role:\"advertiser\", wallet:0, advertiserWallet:50000, viewedAds:[], phone:\"+256700000000\", sponsorCode:\"\", country:\"Uganda\", city:\"Kampala\", gender:\"Male\", ageGroup:\"25-34\", walletStatus:\"Active\", accountStatus:\"active\" });\n      users.push({ id:1002, name:\"Alice Viewer\", firstName:\"Alice\", lastName:\"Viewer\", email:\"alice@view.com\", password:\"view123\", role:\"user\", wallet:600, advertiserWallet:0, viewedAds:[], phone:\"+256775036603\", sponsorCode:\"\", country:\"Kenya\", city:\"Nairobi\", gender:\"Female\", ageGroup:\"18-24\", walletStatus:\"Active\", accountStatus:\"active\" });\n      if(!ads.length) ads.push({ id:201, advertiserId:1001, title:\"Cool Sneakers\", type:\"video\", mediaUrl:\"https:\/\/www.w3schools.com\/html\/mov_bbb.mp4\", dailyCostUGX:2000, specialInstructions:\"Upload screenshot\", activeUntil:Date.now()+86400000, isActive:true });\n    }\n    saveAll();\n  }\n\n  function saveAll() {\n    localStorage.setItem('adase_users', JSON.stringify(users));\n    localStorage.setItem('adase_ads', JSON.stringify(ads));\n    localStorage.setItem('adase_proofs', JSON.stringify(proofs));\n    localStorage.setItem('adase_platformRevenue', platformRevenue);\n    localStorage.setItem('adase_smm_orders', JSON.stringify(smmOrders));\n    localStorage.setItem('adase_withdraw_requests', JSON.stringify(withdrawRequests));\n    localStorage.setItem('adase_contacts', JSON.stringify(contacts));\n    localStorage.setItem('adase_funding_requests', JSON.stringify(fundingRequests));\n  }\n\n  function getCurrentUser() { return sessions.currentUserId ? users.find(u => u.id === sessions.currentUserId) : null; }\n  function updatePlatformRevenue(amount) { platformRevenue = Math.max(0, platformRevenue + amount); saveAll(); }\n\n  let dynamicPanel, globalUserArea;\n  let currentTab = 'viewer';\n\n  \/\/ ==================== VIEWER REGISTRATION MODAL (Gender, Town\/City, Age Group) ====================\n  function showViewerRegistrationModal(callback) {\n    const modal = document.createElement('div');\n    modal.className = 'modal';\n    modal.style.display = 'flex';\n    modal.innerHTML = `\n      <div class=\"modal-content\">\n        <h3 style=\"margin-bottom: 16px;\"><i class=\"fas fa-user-plus\"><\/i> Complete Your Profile to Earn Points<\/h3>\n        <div class=\"form-group\"><label>First Name *<\/label><input type=\"text\" id=\"viewerFirstName\" placeholder=\"Enter first name\"><\/div>\n        <div class=\"form-group\"><label>Last Name *<\/label><input type=\"text\" id=\"viewerLastName\" placeholder=\"Enter last name\"><\/div>\n        <div class=\"form-group\"><label>Email Address *<\/label><input type=\"email\" id=\"viewerEmail\" placeholder=\"you@example.com\"><\/div>\n        <div class=\"form-group\"><label>Phone Number *<\/label><input type=\"tel\" id=\"viewerPhone\" placeholder=\"+256XXXXXXXXX\"><\/div>\n        <div class=\"form-group\"><label>Gender *<\/label><select id=\"viewerGender\"><option value=\"\">Select Gender<\/option><option>Male<\/option><option>Female<\/option><option>Other<\/option><\/select><\/div>\n        <div class=\"form-group\"><label>Town \/ City *<\/label><input type=\"text\" id=\"viewerCity\" placeholder=\"e.g., Kampala, Nairobi\"><\/div>\n        <div class=\"form-group\"><label>Age Group *<\/label><select id=\"viewerAgeGroup\"><option value=\"\">Select Age Group<\/option><option>18-24<\/option><option>25-34<\/option><option>35-44<\/option><option>45+<\/option><\/select><\/div>\n        <div class=\"form-group\"><label>Password *<\/label><input type=\"password\" id=\"viewerPassword\" placeholder=\"Create a password\"><\/div>\n        <div class=\"form-group\"><label>Confirm Password *<\/label><input type=\"password\" id=\"viewerConfirmPassword\" placeholder=\"Confirm password\"><\/div>\n        <div class=\"flex-between\" style=\"margin-top: 20px;\">\n          <button id=\"submitViewerRegBtn\" class=\"btn btn-primary\">Register & Continue<\/button>\n          <button id=\"cancelViewerRegBtn\" class=\"btn btn-outline\">Cancel<\/button>\n        <\/div>\n      <\/div>\n    `;\n    document.body.appendChild(modal);\n    \n    document.getElementById('submitViewerRegBtn').onclick = () => {\n      const firstName = document.getElementById('viewerFirstName').value.trim();\n      const lastName = document.getElementById('viewerLastName').value.trim();\n      const email = document.getElementById('viewerEmail').value.trim();\n      const phone = document.getElementById('viewerPhone').value.trim();\n      const gender = document.getElementById('viewerGender').value;\n      const city = document.getElementById('viewerCity').value.trim();\n      const ageGroup = document.getElementById('viewerAgeGroup').value;\n      const password = document.getElementById('viewerPassword').value;\n      const confirm = document.getElementById('viewerConfirmPassword').value;\n      \n      if (!firstName || !lastName || !email || !phone || !gender || !city || !ageGroup || !password) {\n        alert(\"Please fill all required fields\");\n        return;\n      }\n      if (password !== confirm) { alert(\"Passwords do not match\"); return; }\n      if (users.find(u => u.email === email)) { alert(\"Email already registered. Please login.\"); modal.remove(); showLoginForm(); return; }\n      \n      const newUser = {\n        id: Date.now(),\n        name: firstName + \" \" + lastName,\n        firstName, lastName, email, password,\n        role: \"user\",\n        wallet: 0,\n        advertiserWallet: 0,\n        viewedAds: [],\n        phone: phone,\n        sponsorCode: \"\",\n        country: \"Uganda\",\n        city: city,\n        gender: gender,\n        ageGroup: ageGroup,\n        walletStatus: \"Active\",\n        accountStatus: \"active\"\n      };\n      users.push(newUser);\n      saveAll();\n      sessions.currentUserId = newUser.id;\n      modal.remove();\n      alert(\"Registration successful! You can now earn points by watching ads.\");\n      if (callback) callback();\n      renderApp();\n    };\n    document.getElementById('cancelViewerRegBtn').onclick = () => modal.remove();\n  }\n\n  \/\/ ==================== VIEWER DASHBOARD (Earn Points) - VISIBLE TO ALL ====================\n  function renderViewerDashboard() {\n    const user = getCurrentUser();\n    const activeAds = ads.filter(ad => ad.isActive && ad.activeUntil > Date.now());\n    \n    if (!user) {\n      \/\/ Show viewer content with call-to-action to register\n      dynamicPanel.innerHTML = `\n        <div class=\"stats-grid\">\n          <div class=\"stat-card\"><div class=\"stat-label\">Earn Points<\/div><div class=\"stat-value\">Watch Ads \u2192 Earn UGX<\/div><div class=\"stat-icon\"><i class=\"fas fa-coins\"><\/i><\/div><\/div>\n        <\/div>\n        <div class=\"card\" style=\"text-align:center; background: linear-gradient(135deg, #1e40af08, #fbbf2408);\">\n          <i class=\"fas fa-eye\" style=\"font-size: 3rem; color: #fbbf24; margin-bottom: 16px;\"><\/i>\n          <h2>Start Earning Points Today!<\/h2>\n          <p style=\"margin: 16px 0;\">Watch ads and earn 3 UGX per view. Withdraw when you reach 1500 UGX.<\/p>\n          <button id=\"startEarningBtn\" class=\"btn btn-primary\"><i class=\"fas fa-user-plus\"><\/i> Register to Start Earning<\/button>\n          <p style=\"margin-top: 16px; font-size: 0.8rem;\">Already have an account? <a href=\"#\" id=\"loginFromViewerBtn\" style=\"color:#2563eb;\">Login<\/a><\/p>\n        <\/div>\n        <div class=\"card\"><div class=\"card-header\"><h3><i class=\"fas fa-play-circle\"><\/i> Available Ads (Preview)<\/h3><\/div><div class=\"ads-grid\" id=\"previewAdsList\"><\/div><\/div>\n      `;\n      const previewContainer = document.getElementById('previewAdsList');\n      if (previewContainer) {\n        previewContainer.innerHTML = activeAds.slice(0, 3).map(ad => `\n          <div class=\"ad-card\"><div class=\"ad-title\">${ad.title}<\/div><div class=\"ad-media\">${ad.type === 'video' ? `<video src=\"${ad.mediaUrl}\" style=\"width:100%; border-radius:16px;\" controls><\/video>` : `<img decoding=\"async\" src=\"${ad.mediaUrl}\" style=\"width:100%; border-radius:16px;\">`}<\/div><button class=\"btn btn-gold btn-sm\" disabled style=\"opacity:0.6;\">Login to Earn<\/button><\/div>\n        `).join('');\n      }\n      document.getElementById('startEarningBtn')?.addEventListener('click', () => showViewerRegistrationModal(() => renderViewerDashboard()));\n      document.getElementById('loginFromViewerBtn')?.addEventListener('click', (e) => { e.preventDefault(); showLoginForm(); });\n      return;\n    }\n    \n    \/\/ Logged in user - full viewer dashboard\n    if (user.walletStatus !== \"Active\") {\n      dynamicPanel.innerHTML = `<div class=\"card\"><h3>\u26a0\ufe0f Wallet Not Active<\/h3><p>Contact admin to activate your wallet.<\/p><\/div>`;\n      return;\n    }\n    \n    const points = Math.floor(user.wallet \/ 3);\n    const pendingRequests = withdrawRequests.filter(r => r.userId === user.id && r.status === 'pending').length;\n    \n    dynamicPanel.innerHTML = `\n      <div class=\"stats-grid\">\n        <div class=\"stat-card\"><div class=\"stat-label\">Your Balance<\/div><div class=\"stat-value\">${user.wallet.toLocaleString()} UGX<\/div><div class=\"stat-icon\"><i class=\"fas fa-wallet\"><\/i><\/div><\/div>\n        <div class=\"stat-card\"><div class=\"stat-label\">Points Earned<\/div><div class=\"stat-value\">${points}<\/div><div class=\"stat-icon\"><i class=\"fas fa-star\"><\/i><\/div><\/div>\n        <div class=\"stat-card\"><div class=\"stat-label\">Profile Info<\/div><div class=\"stat-value\" style=\"font-size:1rem;\">${user.city || 'N\/A'} \u2022 ${user.gender || 'N\/A'} \u2022 ${user.ageGroup || 'N\/A'}<\/div><div class=\"stat-icon\"><i class=\"fas fa-user\"><\/i><\/div><\/div>\n      <\/div>\n      <div class=\"card\"><div class=\"flex-between\"><span><i class=\"fas fa-info-circle\"><\/i> 1 point = 3 UGX | 500 points = 1500 UGX withdrawal<\/span><button id=\"requestWithdrawBtn\" class=\"btn btn-gold\" ${user.wallet < 1500 ? 'disabled' : ''}><i class=\"fas fa-hand-holding-usd\"><\/i> Withdraw 1500 UGX<\/button><\/div>${pendingRequests > 0 ? `<p class=\"badge badge-warning\" style=\"margin-top:12px;\">You have ${pendingRequests} pending withdrawal request(s).<\/p>` : ''}<\/div>\n      <div class=\"card\"><div class=\"card-header\"><h3><i class=\"fas fa-play-circle\"><\/i> Available Ads to Watch<\/h3><span class=\"badge\">Each view = 3 UGX<\/span><\/div><div class=\"ads-grid\" id=\"viewerAdsGrid\"><\/div><\/div>\n      <div class=\"card\"><div class=\"card-header\"><h3><i class=\"fas fa-receipt\"><\/i> My Proof Submissions<\/h3><\/div><div id=\"viewerProofHistory\"><\/div><\/div>\n    `;\n    \n    document.getElementById('requestWithdrawBtn')?.addEventListener('click', () => {\n      if (user.wallet >= 1500) {\n        withdrawRequests.push({ id: Date.now(), userId: user.id, amount: 1500, status: 'pending', type: 'withdraw', date: new Date().toISOString() });\n        saveAll();\n        alert(\"Withdrawal request submitted to admin.\");\n        renderViewerDashboard();\n      } else alert(\"Insufficient balance. Need 1500 UGX\");\n    });\n    \n    const adsContainer = document.getElementById('viewerAdsGrid');\n    if (activeAds.length === 0) adsContainer.innerHTML = \"<p>No active ads at the moment. Check back later!<\/p>\";\n    else {\n      adsContainer.innerHTML = activeAds.map(ad => {\n        const viewed = user.viewedAds?.includes(ad.id);\n        return `\n          <div class=\"ad-card\">\n            <div class=\"ad-title\">${ad.title}<\/div>\n            <div class=\"ad-media\">${ad.type === 'video' ? `<video src=\"${ad.mediaUrl}\" controls><\/video>` : ad.type === 'audio' ? `<audio controls src=\"${ad.mediaUrl}\"><\/audio>` : `<img decoding=\"async\" src=\"${ad.mediaUrl}\" alt=\"${ad.title}\">`}<\/div>\n            ${ad.specialInstructions ? `<p style=\"font-size:0.75rem; color:#666; margin:8px 0;\"><i class=\"fas fa-info-circle\"><\/i> ${ad.specialInstructions}<\/p>` : ''}\n            <div class=\"flex-between\" style=\"margin-top: 12px;\">\n              ${!viewed ? `<button class=\"btn btn-primary btn-sm\" data-viewad=\"${ad.id}\"><i class=\"fas fa-check-circle\"><\/i> Watch & Earn 3 UGX<\/button>` : `<span class=\"badge badge-success\"><i class=\"fas fa-check\"><\/i> Claimed<\/span>`}\n              ${ad.specialInstructions ? `<button class=\"btn btn-outline btn-sm\" data-proofad=\"${ad.id}\"><i class=\"fas fa-paperclip\"><\/i> Submit Proof<\/button>` : ''}\n            <\/div>\n          <\/div>\n        `;\n      }).join('');\n      \n      document.querySelectorAll('[data-viewad]').forEach(btn => {\n        btn.addEventListener('click', () => {\n          const adId = parseInt(btn.dataset.viewad);\n          const ad = ads.find(a => a.id === adId);\n          if (ad && !user.viewedAds.includes(adId)) {\n            user.viewedAds.push(adId);\n            user.wallet += 3;\n            const idx = users.findIndex(u => u.id === user.id);\n            users[idx].wallet = user.wallet;\n            users[idx].viewedAds = user.viewedAds;\n            saveAll();\n            alert(`+3 UGX earned from \"${ad.title}\"!`);\n            renderViewerDashboard();\n          } else alert(\"You've already claimed this ad.\");\n        });\n      });\n      \n      document.querySelectorAll('[data-proofad]').forEach(btn => {\n        btn.addEventListener('click', () => {\n          const adId = parseInt(btn.dataset.proofad);\n          const ad = ads.find(a => a.id === adId);\n          const proofText = prompt(`Proof for \"${ad.title}\":\\n${ad.specialInstructions || 'Upload proof details'}\\nEnter your proof details:`);\n          if (proofText?.trim()) {\n            proofs.push({ id: Date.now(), adId, userId: user.id, userName: user.name, proofText: proofText.trim(), timestamp: Date.now() });\n            saveAll();\n            alert(\"Proof submitted successfully! Admin will review.\");\n            renderViewerDashboard();\n          }\n        });\n      });\n    }\n    \n    const historyDiv = document.getElementById('viewerProofHistory');\n    const userProofs = proofs.filter(p => p.userId === user.id);\n    historyDiv.innerHTML = userProofs.length ? userProofs.map(p => `<div class=\"badge\" style=\"margin:4px;\"><i class=\"fas fa-file-alt\"><\/i> ${p.proofText}<\/div>`).join('') : \"<p>No proofs submitted yet.<\/p>\";\n  }\n\n  \/\/ ==================== ADVERTISER DASHBOARD ====================\n  function renderAdvertiserDashboard() {\n    const user = getCurrentUser();\n    if (!user) {\n      dynamicPanel.innerHTML = `<div class=\"card\" style=\"text-align:center;\"><h3>Advertiser Access<\/h3><p>Please <a href=\"#\" id=\"advLoginLink\" style=\"color:#2563eb;\">login<\/a> or <a href=\"#\" id=\"advRegisterLink\" style=\"color:#2563eb;\">register<\/a> as an advertiser to access these features.<\/p><\/div>`;\n      document.getElementById('advLoginLink')?.addEventListener('click', (e) => { e.preventDefault(); showLoginForm(); });\n      document.getElementById('advRegisterLink')?.addEventListener('click', (e) => { e.preventDefault(); showRegisterForm(); });\n      return;\n    }\n    if (user.role !== 'advertiser') {\n      dynamicPanel.innerHTML = `<div class=\"card\"><h3>\u26a0\ufe0f Upgrade Required<\/h3><p>Your current role is \"${user.role}\". To access advertising features, please contact admin to upgrade your account to Advertiser.<\/p><\/div>`;\n      return;\n    }\n    const myAds = ads.filter(ad => ad.advertiserId === user.id);\n    dynamicPanel.innerHTML = `\n      <div class=\"stats-grid\"><div class=\"stat-card\"><div class=\"stat-label\">Advertiser Wallet<\/div><div class=\"stat-value\">${user.advertiserWallet.toLocaleString()} UGX<\/div><div class=\"stat-icon\"><i class=\"fas fa-wallet\"><\/i><\/div><\/div><\/div>\n      <div class=\"grid-2\">\n        <div class=\"card\"><div class=\"card-header\"><h3><i class=\"fas fa-plus-circle\"><\/i> Create Ad Campaign<\/h3><\/div><input id=\"adTitle\" placeholder=\"Title\" class=\"form-control\"><select id=\"adType\" class=\"form-control\"><option>video<\/option><option>audio<\/option><option>banner<\/option><\/select><input id=\"adMedia\" placeholder=\"Media URL\" class=\"form-control\"><textarea id=\"adInstructions\" placeholder=\"Instructions\" class=\"form-control\"><\/textarea><select id=\"dailyCostSelect\" class=\"form-control\"><option value=\"2000\">UGX 2,000\/day<\/option><option value=\"3800\">$1\/day<\/option><\/select><button id=\"createAdBtn\" class=\"btn btn-primary\">Launch Campaign<\/button><\/div>\n        <div class=\"card\"><div class=\"card-header\"><h3><i class=\"fas fa-coins\"><\/i> Fund Wallet<\/h3><\/div><input id=\"fundAmount\" value=\"50000\" type=\"number\" class=\"form-control\"><button id=\"fundWalletBtn\" class=\"btn btn-gold\">Request Funds<\/button><hr><h4>Your Campaigns<\/h4><div id=\"advertiserAdsList\"><\/div><\/div>\n      <\/div>`;\n    document.getElementById('createAdBtn')?.addEventListener('click', () => {\n      const title = document.getElementById('adTitle').value, media = document.getElementById('adMedia').value;\n      if(title && media){\n        ads.push({ id:Date.now(), advertiserId:user.id, title, type:document.getElementById('adType').value, mediaUrl:media, specialInstructions:document.getElementById('adInstructions').value, dailyCostUGX:parseInt(document.getElementById('dailyCostSelect').value), activeUntil:null, isActive:false });\n        saveAll(); alert(\"Campaign created!\"); renderAdvertiserDashboard();\n      } else alert(\"Title and Media URL required\");\n    });\n    document.getElementById('fundWalletBtn')?.addEventListener('click', () => {\n      let amt = parseFloat(document.getElementById('fundAmount').value);\n      if(amt>0){ fundingRequests.push({id:Date.now(), userId:user.id, amount:amt, status:'pending'}); saveAll(); alert(\"Funding request submitted for admin approval.\"); renderAdvertiserDashboard(); }\n    });\n    const adsDiv = document.getElementById('advertiserAdsList');\n    adsDiv.innerHTML = myAds.map(ad => `<div class=\"flex-between\"><strong>${ad.title}<\/strong> <button class=\"btn btn-sm btn-primary\" data-adid=\"${ad.id}\">Activate (${ad.dailyCostUGX} UGX)<\/button><\/div>`).join('');\n    document.querySelectorAll('[data-adid]').forEach(btn => btn.addEventListener('click', () => {\n      const adId = parseInt(btn.dataset.adid), ad = ads.find(a=>a.id===adId);\n      if(ad && user.advertiserWallet >= ad.dailyCostUGX) { user.advertiserWallet -= ad.dailyCostUGX; ad.isActive = true; ad.activeUntil = Date.now()+86400000; updatePlatformRevenue(ad.dailyCostUGX); saveAll(); alert(\"Campaign activated for 24h!\"); renderAdvertiserDashboard(); }\n      else alert(\"Insufficient balance\");\n    }));\n  }\n\n  \/\/ ==================== ADMIN PANEL ====================\n  function renderAdminPanel() {\n    const user = getCurrentUser();\n    if (!user || user.role !== 'admin') { dynamicPanel.innerHTML = `<div class=\"card\"><h3>Access Denied<\/h3><\/div>`; return; }\n    const pendingFunding = fundingRequests.filter(r => r.status === 'pending');\n    const pendingWithdrawals = withdrawRequests.filter(r => r.status === 'pending');\n    dynamicPanel.innerHTML = `\n      <div class=\"stats-grid\"><div class=\"stat-card\"><div class=\"stat-label\">Platform Revenue<\/div><div class=\"stat-value\">${platformRevenue.toLocaleString()} UGX<\/div><div class=\"stat-icon\"><i class=\"fas fa-charging-station\"><\/i><\/div><\/div><\/div>\n      <div class=\"grid-2\">\n        <div class=\"card\"><div class=\"card-header\"><h3>Pending Funding<\/h3><\/div><div id=\"fundingList\"><\/div><\/div>\n        <div class=\"card\"><div class=\"card-header\"><h3>Pending Withdrawals<\/h3><\/div><div id=\"withdrawList\"><\/div><\/div>\n      <\/div>\n      <div class=\"card\"><div class=\"card-header\"><h3>All Users<\/h3><\/div><div class=\"table-responsive\"><table style=\"width:100%\"><thead><tr><th>Name<\/th><th>Email<\/th><th>Role<\/th><th>City<\/th><th>Gender<\/th><th>Age<\/th><th>Wallet<\/th><\/tr><\/thead><tbody id=\"usersListBody\"><\/tbody><\/table><\/div><\/div>`;\n    const fundingDiv = document.getElementById('fundingList');\n    if(pendingFunding.length === 0) fundingDiv.innerHTML = \"<p>No pending funding requests<\/p>\";\n    else fundingDiv.innerHTML = pendingFunding.map(req => { const u = users.find(u => u.id === req.userId); return `<div class=\"flex-between\"><span>${u?.name || req.userId} - ${req.amount.toLocaleString()} UGX<\/span><button class=\"btn btn-success btn-sm\" data-fund=\"${req.id}\">Approve<\/button><\/div>`; }).join('');\n    document.querySelectorAll('[data-fund]').forEach(btn => btn.addEventListener('click', () => {\n      const req = fundingRequests.find(r => r.id === parseInt(btn.dataset.fund));\n      if(req){ const userTarget = users.find(u => u.id === req.userId); if(userTarget){ userTarget.advertiserWallet += req.amount; req.status = 'approved'; saveAll(); alert(\"Funds added\"); renderAdminPanel(); } }\n    }));\n    const withdrawDiv = document.getElementById('withdrawList');\n    if(pendingWithdrawals.length === 0) withdrawDiv.innerHTML = \"<p>No pending withdrawals<\/p>\";\n    else withdrawDiv.innerHTML = pendingWithdrawals.map(w => { const u = users.find(u => u.id === w.userId); return `<div class=\"flex-between\"><span>${u?.name} - ${w.amount} UGX<\/span><div><button class=\"btn btn-success btn-sm\" data-wid=\"${w.id}\" data-action=\"approve\">Approve<\/button><button class=\"btn btn-danger btn-sm\" data-wid=\"${w.id}\" data-action=\"reject\">Reject<\/button><\/div><\/div>`; }).join('');\n    document.querySelectorAll('[data-wid]').forEach(btn => btn.addEventListener('click', () => {\n      const wid = parseInt(btn.dataset.wid), action = btn.dataset.action;\n      const req = withdrawRequests.find(r => r.id === wid);\n      if(req){ const userTarget = users.find(u => u.id === req.userId);\n        if(action === 'approve' && userTarget.wallet >= req.amount){ userTarget.wallet -= req.amount; updatePlatformRevenue(-req.amount); req.status = 'approved'; alert(\"Approved\"); }\n        else if(action === 'reject') req.status = 'rejected';\n        saveAll(); renderAdminPanel();\n      }\n    }));\n    const usersBody = document.getElementById('usersListBody');\n    usersBody.innerHTML = users.filter(u => u.role !== 'admin').map(u => `<tr><td>${u.name}<\/td><td>${u.email}<\/td><td>${u.role}<\/td><td>${u.city || '\u2014'}<\/td><td>${u.gender || '\u2014'}<\/td><td>${u.ageGroup || '\u2014'}<\/td><td>${(u.role === 'advertiser' ? u.advertiserWallet : u.wallet).toLocaleString()} UGX<\/td><\/tr>`).join('');\n  }\n\n  \/\/ ==================== AUTH & NAVIGATION ====================\n  function renderApp() {\n    dynamicPanel = document.getElementById('dynamicPanel');\n    globalUserArea = document.getElementById('globalUserArea');\n    const user = getCurrentUser();\n    \n    if (currentTab === 'viewer') renderViewerDashboard();\n    else if (currentTab === 'advertiser') renderAdvertiserDashboard();\n    else if (currentTab === 'admin') renderAdminPanel();\n    \n    \/\/ Update nav buttons visibility\n    const isAdmin = user?.role === 'admin';\n    document.getElementById('adminTabBtn').style.display = isAdmin ? 'inline-flex' : 'none';\n    document.getElementById('mobileAdminBtn').style.display = isAdmin ? 'flex' : 'none';\n    \n    renderNavButtons();\n  }\n\n  function renderNavButtons() {\n    if(!globalUserArea) return;\n    const user = getCurrentUser();\n    if(!user) {\n      globalUserArea.innerHTML = `<button class=\"btn btn-primary\" id=\"showLoginBtn\"><i class=\"fas fa-sign-in-alt\"><\/i> Login<\/button><button class=\"btn btn-outline\" id=\"showRegisterBtn\"><i class=\"fas fa-user-plus\"><\/i> Register<\/button>`;\n      document.getElementById('showLoginBtn')?.addEventListener('click', () => showLoginForm());\n      document.getElementById('showRegisterBtn')?.addEventListener('click', () => showRegisterForm());\n    } else {\n      globalUserArea.innerHTML = `<span class=\"badge\"><i class=\"fas fa-user-circle\"><\/i> ${user.name} (${user.role})<\/span><button class=\"btn btn-outline btn-sm\" id=\"logoutBtn\"><i class=\"fas fa-sign-out-alt\"><\/i> Logout<\/button>`;\n      document.getElementById('logoutBtn')?.addEventListener('click', () => { sessions.currentUserId = null; renderApp(); });\n    }\n  }\n\n  function showLoginForm() {\n    dynamicPanel.innerHTML = `<div class=\"card\" style=\"max-width:480px; margin:auto;\"><div class=\"card-header\"><h3><i class=\"fas fa-lock\"><\/i> Login<\/h3><\/div><div class=\"form-group\"><input id=\"loginEmail\" placeholder=\"Email\" class=\"form-control\"><\/div><div class=\"form-group\"><input id=\"loginPass\" type=\"password\" placeholder=\"Password\" class=\"form-control\"><\/div><button class=\"btn btn-primary\" id=\"doLoginBtn\" style=\"width:100%;\">Login<\/button><p style=\"margin-top:16px; text-align:center;\">Demo Viewer: alice@view.com \/ view123 | Advertiser: adv@demo.com \/ adv123<\/p><\/div>`;\n    document.getElementById('doLoginBtn')?.addEventListener('click', () => {\n      const email = document.getElementById('loginEmail').value, pwd = document.getElementById('loginPass').value;\n      const user = users.find(u => u.email === email && u.password === pwd);\n      if(user && user.accountStatus === 'active') { sessions.currentUserId = user.id; renderApp(); }\n      else alert(\"Invalid credentials\");\n    });\n  }\n\n  function showRegisterForm() {\n    dynamicPanel.innerHTML = `<div class=\"card\"><div class=\"card-header\"><h3><i class=\"fas fa-user-plus\"><\/i> Register<\/h3><\/div><div class=\"form-group\"><select id=\"regRole\" class=\"form-control\"><option value=\"user\">Viewer (Earn Points)<\/option><option value=\"advertiser\">Advertiser<\/option><\/select><\/div>\n    <div id=\"viewerRegFields\"><div class=\"grid-2\"><div class=\"form-group\"><input id=\"regFirstName\" placeholder=\"First Name\" class=\"form-control\"><\/div><div class=\"form-group\"><input id=\"regLastName\" placeholder=\"Last Name\" class=\"form-control\"><\/div><\/div><div class=\"form-group\"><input id=\"regPhone\" placeholder=\"Phone\" class=\"form-control\"><\/div><div class=\"form-group\"><input id=\"regEmail\" placeholder=\"Email\" class=\"form-control\"><\/div><div class=\"form-group\"><select id=\"regGender\" class=\"form-control\"><option value=\"\">Gender<\/option><option>Male<\/option><option>Female<\/option><option>Other<\/option><\/select><\/div><div class=\"form-group\"><input id=\"regCity\" placeholder=\"Town \/ City\" class=\"form-control\"><\/div><div class=\"form-group\"><select id=\"regAgeGroup\" class=\"form-control\"><option value=\"\">Age Group<\/option><option>18-24<\/option><option>25-34<\/option><option>35-44<\/option><option>45+<\/option><\/select><\/div><\/div>\n    <div id=\"advRegFields\" style=\"display:none;\"><div class=\"form-group\"><input id=\"regNameSimple\" placeholder=\"Full Name\" class=\"form-control\"><\/div><div class=\"form-group\"><input id=\"regEmailSimple\" placeholder=\"Email\" class=\"form-control\"><\/div><\/div>\n    <div class=\"form-group\"><input id=\"regPass\" type=\"password\" placeholder=\"Password\" class=\"form-control\"><\/div><div class=\"form-group\"><input id=\"regConfirmPass\" type=\"password\" placeholder=\"Confirm Password\" class=\"form-control\"><\/div><button class=\"btn btn-primary\" id=\"doRegBtn\" style=\"width:100%;\">Sign Up<\/button><\/div>`;\n    const roleSel = document.getElementById('regRole'), viewerDiv = document.getElementById('viewerRegFields'), advDiv = document.getElementById('advRegFields');\n    roleSel.onchange = () => { const isViewer = roleSel.value === 'user'; viewerDiv.style.display = isViewer ? 'block' : 'none'; advDiv.style.display = isViewer ? 'none' : 'block'; };\n    roleSel.dispatchEvent(new Event('change'));\n    document.getElementById('doRegBtn').onclick = () => {\n      const role = roleSel.value, pwd = document.getElementById('regPass').value, confirm = document.getElementById('regConfirmPass').value;\n      if(pwd !== confirm) return alert(\"Passwords don't match\");\n      if(role === 'user') {\n        const fn = document.getElementById('regFirstName').value, ln = document.getElementById('regLastName').value, phone = document.getElementById('regPhone').value, email = document.getElementById('regEmail').value, gender = document.getElementById('regGender').value, city = document.getElementById('regCity').value, age = document.getElementById('regAgeGroup').value;\n        if(!fn || !ln || !phone || !email || !gender || !city || !age) return alert(\"All fields required\");\n        if(users.find(u=>u.email===email)) return alert(\"Email exists\");\n        users.push({ id:Date.now(), name:fn+\" \"+ln, firstName:fn, lastName:ln, email, password:pwd, role:\"user\", wallet:0, advertiserWallet:0, viewedAds:[], phone, sponsorCode:\"\", country:\"Uganda\", city, gender, ageGroup:age, walletStatus:\"Active\", accountStatus:\"active\" });\n        saveAll(); alert(\"Registered! Please login.\"); showLoginForm();\n      } else {\n        const full = document.getElementById('regNameSimple').value, email = document.getElementById('regEmailSimple').value;\n        if(!full || !email) return alert(\"Required\");\n        if(users.find(u=>u.email===email)) return alert(\"Email exists\");\n        users.push({ id:Date.now(), name:full, firstName:full.split(' ')[0], lastName:full.split(' ')[1]||\"\", email, password:pwd, role:\"advertiser\", wallet:0, advertiserWallet:0, viewedAds:[], phone:\"\", sponsorCode:\"\", country:\"\", city:\"\", gender:\"\", ageGroup:\"\", walletStatus:\"Active\", accountStatus:\"active\" });\n        saveAll(); alert(\"Advertiser created! Login\"); showLoginForm();\n      }\n    };\n  }\n\n  \/\/ Tab switching\n  document.querySelectorAll('.tab-btn, .mobile-nav-item').forEach(btn => {\n    btn.addEventListener('click', () => {\n      currentTab = btn.dataset.tab;\n      document.querySelectorAll('.tab-btn, .mobile-nav-item').forEach(b => b.classList.remove('active'));\n      btn.classList.add('active');\n      renderApp();\n    });\n  });\n\n  loadData();\n  renderApp();\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Adase Ads Ltd | Earn Points &#038; Digital Advertising Adase Ads Ltd Monetizing Africa \u2022 Earn Points Earn Points Advertiser Admin Earn Advertise Admin<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"class_list":["post-230","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/pages\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/comments?post=230"}],"version-history":[{"count":3,"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/pages\/230\/revisions"}],"predecessor-version":[{"id":233,"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/pages\/230\/revisions\/233"}],"wp:attachment":[{"href":"https:\/\/cashchat.se\/dir\/wp-json\/wp\/v2\/media?parent=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}