<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Ghana Life Sim</title>
<style>
  :root {
    --bg: #0d1117; --panel: #161b22; --panel-2: #1c2330; --border: #2a3441;
    --text: #e6edf3; --muted: #8b949e; --gold: #fdd835; --green: #3fb950;
    --red: #f85149; --blue: #58a6ff; --purple: #bc8cff; --orange: #ffa657;
    --pink: #ff7baf;
  }
  * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
  html, body { margin: 0; padding: 0; background: var(--bg); color: var(--text);
    font-family: -apple-system, 'Segoe UI', Roboto, sans-serif; height: 100%; overflow: hidden; }
  #app { position: relative; height: 100vh; max-width: 600px; margin: 0 auto; overflow: hidden; }

  /* ===== PAGE STACK ===== */
  .page {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    display: flex;
    flex-direction: column;
    background: var(--bg);
    transform: translateX(100%);
    transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 10;
  }
  .page.active { transform: translateX(0); }
  .page.home-page { transform: translateX(0); z-index: 1; }

  /* ===== PAGE HEADER ===== */
  .pageHeader {
    display: flex;
    align-items: center;
    padding: 12px 14px;
    background: var(--panel);
    border-bottom: 1px solid var(--border);
    flex-shrink: 0;
    gap: 10px;
  }
  .pageHeader .backBtn {
    background: transparent;
    border: none;
    color: var(--gold);
    font-size: 1.2em;
    padding: 4px 10px 4px 0;
    cursor: pointer;
    width: auto;
    margin: 0;
    font-weight: bold;
  }
  .pageHeader h1 {
    margin: 0;
    font-size: 1.1em;
    color: var(--text);
    flex: 1;
    text-align: center;
    padding-right: 34px;
  }
  .pageHeader .spacer { width: 34px; }

  /* ===== PAGE BODY ===== */
  .pageBody {
    flex: 1;
    overflow-y: auto;
    padding: 12px;
    -webkit-overflow-scrolling: touch;
  }

  /* ===== STATS BAR (home only) ===== */
  #statsBar { background: var(--panel); border-bottom: 1px solid var(--border); padding: 8px 10px; flex-shrink: 0; }
  .statRow { display: flex; justify-content: space-between; gap: 6px; margin-bottom: 6px; }
  .statRow:last-child { margin-bottom: 0; }
  .statBox { flex: 1; background: var(--panel-2); border: 1px solid var(--border);
    border-radius: 8px; padding: 5px 6px; text-align: center; font-size: 0.68em; min-width: 0; }
  .statBox .label { color: var(--muted); display: block; margin-bottom: 2px; }
  .statBox .value { font-weight: bold; color: var(--text); font-size: 1.15em; }
  .statBox .value.gold { color: var(--gold); } .statBox .value.green { color: var(--green); }
  .statBox .value.red { color: var(--red); } .statBox .value.blue { color: var(--blue); }
  .statBox .value.purple { color: var(--purple); }

  /* ===== CARDS & BUTTONS ===== */
  .card { background: var(--panel); border: 1px solid var(--border); border-radius: 12px;
    padding: 14px; margin-bottom: 12px; }
  .card h3 { margin: 0 0 10px 0; font-size: 1em; color: var(--gold);
    text-transform: uppercase; letter-spacing: 0.5px; }
  .card p { margin: 0 0 8px 0; font-size: 0.9em; line-height: 1.5; }
  .card .meta { color: var(--muted); font-size: 0.8em; }
  button { display: block; width: 100%; padding: 12px; margin-bottom: 8px;
    background: var(--gold); color: #0d1117; border: none; border-radius: 8px;
    font-size: 0.92em; font-weight: bold; cursor: pointer; text-align: left; transition: background 0.15s; }
  button:hover { background: #ffeb3b; }
  button:disabled { background: #30363d; color: #6e7681; cursor: not-allowed; }
  button.secondary { background: var(--panel-2); color: var(--text); border: 1px solid var(--border); }
  button.secondary:hover { background: #2a3441; }
  button.danger { background: var(--red); color: white; }
  button.danger:hover { background: #ff6b61; }
  button.green { background: var(--green); color: white; }
  button.green:hover { background: #56d364; }
  button.purple { background: var(--purple); color: white; }
  button.purple:hover { background: #d2a8ff; }
  button.blue { background: var(--blue); color: white; }
  button.blue:hover { background: #79b8ff; }
  button small { display: block; font-weight: normal; opacity: 0.7; font-size: 0.85em; margin-top: 2px; }
  .ageUpBtn { background: var(--green); color: white; font-size: 1.1em; text-align: center; padding: 16px; margin-bottom: 14px; }
  .ageUpBtn:hover { background: #56d364; }

  /* ===== BOTTOM NAV ===== */
  #bottomNav { display: flex; background: var(--panel); border-top: 1px solid var(--border);
    flex-shrink: 0; padding: 4px 0 env(safe-area-inset-bottom); overflow-x: auto; }
  #bottomNav button { flex: 1; min-width: 50px; background: transparent; border: none; color: var(--muted);
    padding: 8px 2px; margin: 0; font-size: 0.6em; font-weight: 500; text-align: center;
    border-radius: 0; display: flex; flex-direction: column; align-items: center; gap: 2px; }
  #bottomNav button .icon { font-size: 1.4em; line-height: 1; }
  #bottomNav button.active { color: var(--gold); }

  /* ===== LOG ===== */
  #log { background: var(--panel-2); border-radius: 10px; padding: 12px;
    max-height: 45vh; overflow-y: auto; font-size: 0.88em; line-height: 1.6; }
  #log p { margin: 0 0 8px 0; }
  #log .event { color: var(--muted); font-weight: bold; border-top: 1px solid var(--border); padding-top: 6px; }
  #log .good { color: var(--green); } #log .bad { color: var(--red); }
  #log .school { color: var(--blue); } #log .work { color: var(--gold); }
  #log .social { color: var(--purple); } #log .money { color: var(--orange); }
  #log .crime { color: #ff7b72; } #log .love { color: var(--pink); }

  .empty { color: var(--muted); font-style: italic; font-size: 0.88em; text-align: center; padding: 20px; }
  .statLine { display: flex; justify-content: space-between; padding: 4px 0; font-size: 0.9em; border-bottom: 1px solid var(--border); }
  .statLine:last-child { border-bottom: none; } .statLine b { color: var(--gold); }
  .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .grid button { margin-bottom: 0; }
  .partnerCard { background: var(--panel-2); border: 1px solid var(--pink); border-radius: 10px;
    padding: 12px; margin-top: 12px; margin-bottom: 10px; }
  .partnerCard h4 { margin: 0 0 8px 0; color: var(--pink); font-size: 1em; }
</style>
</head>
<body>
<div id="app">

  <!-- ============ HOME PAGE ============ -->
  <div class="page home-page active" id="page-home">
    <div id="statsBar">
      <div class="statRow">
        <div class="statBox"><span class="label">Age</span><span class="value" id="s-age">0</span></div>
        <div class="statBox"><span class="label">Health</span><span class="value green" id="s-health">100</span></div>
        <div class="statBox"><span class="label">Happiness</span><span class="value" id="s-happy">100</span></div>
      </div>
      <div class="statRow">
        <div class="statBox"><span class="label">Cash</span><span class="value gold" id="s-money">GH₵0</span></div>
        <div class="statBox"><span class="label">MoMo</span><span class="value blue" id="s-momo">GH₵0</span></div>
        <div class="statBox"><span class="label">Bank</span><span class="value purple" id="s-bank">GH₵0</span></div>
      </div>
    </div>
    <div class="pageBody">
      <button class="ageUpBtn" id="growBtn" onclick="growUp()">🌱 Age Up →</button>
      <div class="card"><h3>📊 Life Stats</h3><div id="homeStats"></div></div>
      <div class="card"><h3>📜 Life Log</h3><div id="log"></div></div>
    </div>
    <div id="bottomNav">
      <button class="active" data-tab="home" onclick="openPage('home')"><span class="icon">⚡</span>Home</button>
      <button data-tab="people" onclick="openPage('people')"><span class="icon">👥</span>People</button>
      <button data-tab="work" onclick="openPage('work')"><span class="icon">💼</span>Work</button>
      <button data-tab="money" onclick="openPage('money')"><span class="icon">💰</span>Money</button>
      <button data-tab="shop" onclick="openPage('shop')"><span class="icon">🛒</span>Shop</button>
      <button data-tab="social" onclick="openPage('social')"><span class="icon">📱</span>Social</button>
      <button data-tab="crime" onclick="openPage('crime')"><span class="icon">🚔</span>Crime</button>
      <button data-tab="more" onclick="openPage('more')"><span class="icon">☰</span>More</button>
    </div>
  </div>

  <!-- ============ PEOPLE PAGE ============ -->
  <div class="page" id="page-people">
    <div class="pageHeader">
      <button class="backBtn" onclick="goBack()">← Back</button>
      <h1>👥 People</h1>
      <div class="spacer"></div>
    </div>
    <div class="pageBody">
      <div class="card"><h3>👨‍👩‍👧 Family</h3><div id="familyInfo"></div></div>
      <div class="card"><h3>💕 Love Life</h3><div id="relList"></div></div>
      <div class="card"><h3>👶 Children</h3><div id="childList"></div></div>
    </div>
  </div>

  <!-- ============ WORK PAGE ============ -->
  <div class="page" id="page-work">
    <div class="pageHeader">
      <button class="backBtn" onclick="goBack()">← Back</button>
      <h1>💼 Work</h1>
      <div class="spacer"></div>
    </div>
    <div class="pageBody">
      <div class="card"><h3>💼 Current Work</h3><div id="currentJobInfo"></div></div>
      <div class="card"><h3>🇬🇭 Hustles</h3><div id="hustleList"></div></div>
      <div class="card"><h3>🏢 Start a Company</h3><div id="companyList"></div></div>
      <div class="card"><h3>📊 My Company</h3><div id="companyStatus"></div></div>
    </div>
  </div>

  <!-- ============ MONEY PAGE ============ -->
  <div class="page" id="page-money">
    <div class="pageHeader">
      <button class="backBtn" onclick="goBack()">← Back</button>
      <h1>💰 Money</h1>
      <div class="spacer"></div>
    </div>
    <div class="pageBody">
      <div class="card"><h3>💵 Cash</h3>
        <div class="statLine"><span>Cash on Hand</span><b id="m-cash">GH₵0</b></div>
        <div class="statLine"><span>Yearly Salary</span><b id="m-salary">GH₵0</b></div>
        <div class="statLine"><span>Yearly Expenses</span><b class="red" id="m-expenses">GH₵0</b></div>
      </div>
      <div class="card"><h3>📱 MoMo Wallet</h3>
        <div class="statLine"><span>MoMo Balance</span><b class="blue" id="m-momo">GH₵0</b></div>
        <div class="grid">
          <button class="secondary" onclick="momoDeposit()">⬇️ Deposit</button>
          <button class="secondary" onclick="momoWithdraw()">⬆️ Withdraw</button>
          <button class="secondary" onclick="momoSend()">📤 Send</button>
          <button class="secondary" onclick="momoPayBill()">💡 Pay Bill</button>
        </div>
      </div>
      <div class="card"><h3>🏦 Bank Account</h3>
        <div class="statLine"><span>Bank Balance</span><b class="purple" id="m-bank">GH₵0</b></div>
        <div class="statLine"><span>Interest Rate</span><b id="m-interest">0%</b></div>
        <div class="statLine"><span>Loan Owed</span><b class="red" id="m-loan">GH₵0</b></div>
        <div class="grid">
          <button class="secondary" onclick="bankDeposit()">⬇️ Deposit</button>
          <button class="secondary" onclick="bankWithdraw()">⬆️ Withdraw</button>
          <button class="secondary" onclick="bankLoan()">💰 Loan</button>
          <button class="secondary" onclick="bankRepay()">💸 Repay</button>
        </div>
      </div>
      <div class="card"><h3>🎲 Susu Savings</h3>
        <div class="statLine"><span>Susu Balance</span><b id="m-susu">GH₵0</b></div>
        <button class="secondary" onclick="susuSave()">💰 Contribute GH₵200</button>
        <button class="secondary" onclick="susuCollect()">📦 Collect Susu</button>
      </div>
      <div class="card"><h3>📈 Stock Market</h3><div id="stockMarket"></div></div>
    </div>
  </div>

  <!-- ============ SHOP PAGE ============ -->
  <div class="page" id="page-shop">
    <div class="pageHeader">
      <button class="backBtn" onclick="goBack()">← Back</button>
      <h1>🛒 Shop</h1>
      <div class="spacer"></div>
    </div>
    <div class="pageBody">
      <div class="card"><h3>🛒 Shop</h3><div id="shopList"></div></div>
      <div class="card"><h3>🏠 Property Market</h3><div id="propertyList"></div></div>
      <div class="card"><h3>🎒 Inventory</h3><div id="inventoryList"></div></div>
    </div>
  </div>

  <!-- ============ SOCIAL PAGE ============ -->
  <div class="page" id="page-social">
    <div class="pageHeader">
      <button class="backBtn" onclick="goBack()">← Back</button>
      <h1>📱 Social Media</h1>
      <div class="spacer"></div>
    </div>
    <div class="pageBody">
      <div class="card"><h3>📱 Social Media</h3>
        <div class="statLine"><span>Platform</span><b class="purple" id="sm-platform">TikTok</b></div>
        <div class="statLine"><span>Followers</span><b class="purple" id="sm-followers">0</b></div>
        <div class="statLine"><span>Last Income</span><b class="gold" id="sm-income">GH₵0</b></div>
        <button class="purple" onclick="postContent()">📸 Post Content</button>
        <button class="purple" onclick="doBrandDeal()">🤝 Brand Deal</button>
        <button class="purple" onclick="changePlatform()">🔄 Switch Platform</button>
      </div>
    </div>
  </div>

  <!-- ============ CRIME PAGE ============ -->
  <div class="page" id="page-crime">
    <div class="pageHeader">
      <button class="backBtn" onclick="goBack()">← Back</button>
      <h1>🚔 Crime</h1>
      <div class="spacer"></div>
    </div>
    <div class="pageBody">
      <div class="card"><h3>🚔 Crime</h3><div id="crimeStatus"></div></div>
      <div class="card"><h3>⚖️ Legal System</h3><div id="legalStatus"></div></div>
    </div>
  </div>

  <!-- ============ MORE PAGE ============ -->
  <div class="page" id="page-more">
    <div class="pageHeader">
      <button class="backBtn" onclick="goBack()">← Back</button>
      <h1>☰ More</h1>
      <div class="spacer"></div>
    </div>
    <div class="pageBody">
      <div class="card"><h3>🏆 Achievements</h3><div id="achievements"></div></div>
      <div class="card"><h3>🎰 Activities</h3>
        <button class="secondary" onclick="gamble()">🎲 Gamble at Casino</button>
        <button class="secondary" onclick="goToChurch()">⛪ Go to Church</button>
        <button class="secondary" onclick="goToGym()">💪 Go to Gym</button>
        <button class="secondary" onclick="goToSchool()">📚 Study Harder</button>
      </div>
      <div class="card"><h3>🌍 Emigrate</h3><div id="emigrateList"></div></div>
      <div class="card"><h3>⚙️ Settings</h3>
        <button class="secondary" onclick="startGame()">🔄 Restart Life</button>
      </div>
    </div>
  </div>

</div>

<script>
// ==================== STATE ====================
let state = {};
let datingPool = [];
let activePartner = null;

function startGame() {
  state = {
    age: 0, cash: 0, momo: 0, bank: 0, susu: 0, loan: 0,
    health: 100, happiness: 100, smarts: 50, looks: 50, fitness: 50,
    stress: 0, karma: 100,
    education: 'None', major: null,
    job: null, company: null,
    inventory: [], properties: [], stocks: {},
    socialMedia: { followers: 0, platform: 'TikTok', income: 0 },
    relationships: [], children: [], married: false, spouse: null,
    achievements: [], alive: true, interestRate: 0.05,
    inPrison: false, prisonYears: 0, criminalRecord: false,
    country: 'Ghana', emigrated: false
  };
  datingPool = [];
  activePartner = null;
  document.getElementById('log').innerHTML = '';
  addLog('👶 You are born in Ghana. Your journey begins.', 'event');
  render(); renderAll();
}

// ==================== NAVIGATION (PAGE STACK) ====================
let pageStack = [];

function openPage(tab) {
  if (tab === 'home') {
    closeAllPages();
    return;
  }
  const page = document.getElementById('page-' + tab);
  if (!page) return;
  // Close other pages first
  document.querySelectorAll('.page:not(.home-page)').forEach(p => p.classList.remove('active'));
  page.classList.add('active');
  pageStack.push(tab);
  // Update nav active
  document.querySelectorAll('#bottomNav button').forEach(b => b.classList.remove('active'));
  document.querySelector(`#bottomNav button[data-tab="${tab}"]`).classList.add('active');
  renderAll();
}

function goBack() {
  const current = pageStack.pop();
  if (current) {
    document.getElementById('page-' + current).classList.remove('active');
  }
  if (pageStack.length > 0) {
    const prev = pageStack[pageStack.length - 1];
    document.getElementById('page-' + prev).classList.add('active');
    document.querySelectorAll('#bottomNav button').forEach(b => b.classList.remove('active'));
    document.querySelector(`#bottomNav button[data-tab="${prev}"]`).classList.add('active');
  } else {
    document.querySelectorAll('#bottomNav button').forEach(b => b.classList.remove('active'));
    document.querySelector('#bottomNav button[data-tab="home"]').classList.add('active');
  }
}

function closeAllPages() {
  pageStack = [];
  document.querySelectorAll('.page:not(.home-page)').forEach(p => p.classList.remove('active'));
  document.querySelectorAll('#bottomNav button').forEach(b => b.classList.remove('active'));
  document.querySelector('#bottomNav button[data-tab="home"]').classList.add('active');
}

// ==================== LOG ====================
function addLog(msg, cls) {
  const log = document.getElementById('log');
  const p = document.createElement('p');
  if (cls) p.className = cls;
  p.textContent = msg;
  log.appendChild(p); log.scrollTop = log.scrollHeight;
}
function unlockAchievement(name) {
  if (!state.achievements.includes(name)) {
    state.achievements.push(name);
    addLog(`🏆 Achievement Unlocked: ${name}`, 'good');
  }
}
function fmt(n) { return Math.round(n).toLocaleString(); }

// ==================== RENDER ====================
function render() {
  document.getElementById('s-age').textContent = state.age;
  document.getElementById('s-health').textContent = state.health;
  document.getElementById('s-happy').textContent = state.happiness;
  document.getElementById('s-money').textContent = 'GH₵' + fmt(state.cash);
  document.getElementById('s-momo').textContent = 'GH₵' + fmt(state.momo);
  document.getElementById('s-bank').textContent = 'GH₵' + fmt(state.bank);
  document.getElementById('growBtn').disabled = !state.alive;
  document.getElementById('homeStats').innerHTML = `
    <div class="statLine"><span>❤️ Health</span><b>${state.health}/100</b></div>
    <div class="statLine"><span>😊 Happiness</span><b>${state.happiness}/100</b></div>
    <div class="statLine"><span>🧠 Smarts</span><b>${state.smarts}/100</b></div>
    <div class="statLine"><span>💪 Fitness</span><b>${state.fitness}/100</b></div>
    <div class="statLine"><span>😎 Looks</span><b>${state.looks}/100</b></div>
    <div class="statLine"><span>😰 Stress</span><b>${state.stress}/100</b></div>
    <div class="statLine"><span>🙏 Karma</span><b>${state.karma}/100</b></div>
    <div class="statLine"><span>🎓 Education</span><b>${state.major ? state.education + ' (' + state.major + ')' : state.education}</b></div>
    <div class="statLine"><span>🌍 Country</span><b>${state.country}</b></div>
    ${state.inPrison ? `<div class="statLine"><span>🚔 Status</span><b class="red">In Prison (${state.prisonYears} yrs left)</b></div>` : ''}
    ${activePartner ? `<div class="statLine"><span>💕 Partner</span><b style="color:#ff7baf">${activePartner.name}</b></div>` : ''}
  `;
}
function renderAll() {
  renderWork(); renderMoney(); renderShop(); renderSocial();
  renderPeople(); renderCrime(); renderAchievements(); renderEmigrate();
}

// ==================== DATA ====================
const ghanaHustles = [
  { id: 'purewater', name: 'Pure Water Seller', income: 100, stress: 10, req: { age: 12 } },
  { id: 'shoes', name: 'Shoe Shiner', income: 80, stress: 5, req: { age: 10 } },
  { id: 'trotro', name: 'Trotro Mate', income: 150, stress: 15, req: { age: 15 } },
  { id: 'fufu', name: 'Fufu Pounder', income: 120, stress: 30, req: { age: 15 } },
  { id: 'kayayei', name: 'Kayayei', income: 200, stress: 25, req: { age: 15 } },
  { id: 'okada', name: 'Okada Rider', income: 300, stress: 20, req: { age: 18 } },
  { id: 'waakye', name: 'Waakye Vendor', income: 400, stress: 20, req: { age: 18 } },
  { id: 'momo', name: 'MoMo Vendor', income: 500, stress: 15, req: { age: 18, smarts: 40 } }
];
const companyTypes = [
  { id: 'food', name: 'Food & Beverage', cost: 5000, baseRevenue: 2000, baseExpense: 1000 },
  { id: 'fashion', name: 'Fashion & Textiles', cost: 10000, baseRevenue: 4000, baseExpense: 2000 },
  { id: 'tech', name: 'Tech Startup', cost: 20000, baseRevenue: 8000, baseExpense: 5000 },
  { id: 'agric', name: 'Agro-Processing', cost: 15000, baseRevenue: 6000, baseExpense: 3000 },
  { id: 'transport', name: 'Transport & Logistics', cost: 30000, baseRevenue: 12000, baseExpense: 7000 },
  { id: 'realestate', name: 'Real Estate', cost: 100000, baseRevenue: 40000, baseExpense: 15000 }
];
const shopItems = [
  { id: 'jollof', name: 'Party Jollof', cost: 150, happiness: 15, health: -5 },
  { id: 'gym', name: 'Gym Membership', cost: 1200, fitness: 20, health: 10 },
  { id: 'phone', name: 'Smartphone', cost: 1500, happiness: 10, smarts: 5 },
  { id: 'clothes', name: 'Designer Clothes', cost: 2000, looks: 25, happiness: 10 },
  { id: 'laptop', name: 'MacBook Pro', cost: 8000, smarts: 15, happiness: 5 },
  { id: 'car', name: 'Toyota Corolla', cost: 45000, happiness: 30, looks: 20 },
  { id: 'benz', name: 'Mercedes Benz', cost: 250000, happiness: 50, looks: 40 }
];
const propertyTypes = [
  { id: 'single', name: 'Single Room (Nima)', cost: 30000, rent: 400 },
  { id: 'chamber', name: 'Chamber & Hall (Tema)', cost: 80000, rent: 1200 },
  { id: 'apt', name: '2-Bedroom Apartment (Accra)', cost: 250000, rent: 3500 },
  { id: 'duplex', name: 'Duplex (East Legon)', cost: 800000, rent: 12000 },
  { id: 'mansion', name: 'Mansion (Airport Hills)', cost: 3000000, rent: 45000 }
];
const stockList = [
  { id: 'GCB', name: 'GCB Bank', basePrice: 5 },
  { id: 'MTN', name: 'MTN Ghana', basePrice: 2 },
  { id: 'TOTAL', name: 'Total Energies', basePrice: 10 },
  { id: 'UNIL', name: 'Unilever Ghana', basePrice: 15 },
  { id: 'SOG', name: 'Societe Generale', basePrice: 1 }
];
const platforms = ['TikTok', 'Instagram', 'YouTube', 'Twitter/X', 'Snapchat'];
const majors = [
  { id: 'law', name: 'Law', cost: 5000, salaryBoost: 2500, smartsReq: 70 },
  { id: 'medicine', name: 'Medicine', cost: 8000, salaryBoost: 4000, smartsReq: 80 },
  { id: 'engineering', name: 'Engineering', cost: 6000, salaryBoost: 3000, smartsReq: 75 },
  { id: 'business', name: 'Business', cost: 4000, salaryBoost: 2000, smartsReq: 60 },
  { id: 'arts', name: 'Arts', cost: 3000, salaryBoost: 1000, smartsReq: 50 }
];
const crimeList = [
  { id: 'steal', name: 'Steal from Market', reward: 500, risk: 0.4, jail: 1 },
  { id: 'pickpocket', name: 'Pickpocket', reward: 300, risk: 0.3, jail: 1 },
  { id: 'rob', name: 'Armed Robbery', reward: 5000, risk: 0.6, jail: 5 },
  { id: 'smuggle', name: 'Smuggle Goods', reward: 15000, risk: 0.5, jail: 8 },
  { id: 'fraud', name: 'Internet Fraud (Sakawa)', reward: 25000, risk: 0.55, jail: 10 }
];
const countries = [
  { id: 'uk', name: 'United Kingdom', cost: 30000, salaryMult: 3 },
  { id: 'us', name: 'United States', cost: 50000, salaryMult: 4 },
  { id: 'canada', name: 'Canada', cost: 40000, salaryMult: 3.5 },
  { id: 'germany', name: 'Germany', cost: 35000, salaryMult: 3 },
  { id: 'southafrica', name: 'South Africa', cost: 15000, salaryMult: 1.8 }
];

// ==================== WORK ====================
function renderWork() {
  const jobEl = document.getElementById('currentJobInfo');
  if (state.job) {
    jobEl.innerHTML = `<div class="statLine"><span>Title</span><b>${state.job.title}</b></div>
      <div class="statLine"><span>Salary</span><b>GH₵${fmt(state.job.salary)}/yr</b></div>
      <div class="statLine"><span>Type</span><b>${state.job.type}</b></div>`;
  } else jobEl.innerHTML = `<p class="empty">No job. Pick a hustle below.</p>`;

  const hustleEl = document.getElementById('hustleList');
  hustleEl.innerHTML = '';
  ghanaHustles.forEach(h => {
    const btn = document.createElement('button');
    btn.className = 'secondary';
    btn.innerHTML = `${h.name} <small>+GH₵${h.income}/yr • Stress +${h.stress}</small>`;
    btn.onclick = () => applyForHustle(h.id);
    if (state.age < h.req.age || (h.req.smarts && state.smarts < h.req.smarts)) btn.disabled = true;
    hustleEl.appendChild(btn);
  });

  const compEl = document.getElementById('companyList');
  compEl.innerHTML = '';
  if (state.company) compEl.innerHTML = `<p class="meta">You own ${state.company.name}.</p>`;
  else companyTypes.forEach(c => {
    const btn = document.createElement('button');
    btn.className = 'secondary';
    btn.innerHTML = `${c.name} <small>Cost: GH₵${fmt(c.cost)}</small>`;
    btn.onclick = () => startCompany(c.id);
    if (state.cash < c.cost) btn.disabled = true;
    compEl.appendChild(btn);
  });

  const statusEl = document.getElementById('companyStatus');
  if (state.company) {
    const c = state.company;
    statusEl.innerHTML = `
      <div class="statLine"><span>Name</span><b>${c.name}</b></div>
      <div class="statLine"><span>Level</span><b>${c.level}</b></div>
      <div class="statLine"><span>Revenue</span><b>GH₵${fmt(c.revenue)}/yr</b></div>
      <div class="statLine"><span>Expenses</span><b class="red">GH₵${fmt(c.expenses)}/yr</b></div>
      <div class="statLine"><span>Employees</span><b>${c.employees}</b></div>
      <div class="statLine"><span>Marketing</span><b>${c.marketing}/100</b></div>
      <button class="green" onclick="hireEmployee()">👥 Hire Employee (GH₵2,000)</button>
      <button class="green" onclick="runMarketing()">📢 Marketing (GH₵1,500)</button>
      <button class="green" onclick="expandCompany()">📈 Expand (GH₵10,000)</button>
      <button class="danger" onclick="sellCompany()">💸 Sell Company</button>`;
  } else statusEl.innerHTML = `<p class="empty">You don't own a company.</p>`;
}
function applyForHustle(id) {
  const h = ghanaHustles.find(x => x.id === id);
  if (!h) return;
  state.job = { title: h.name, salary: h.income, type: 'hustle' };
  state.stress = Math.min(100, state.stress + h.stress);
  addLog(`🇬🇭 You started working as a ${h.name}.`, 'work');
  render(); renderAll();
}
function startCompany(id) {
  const t = companyTypes.find(c => c.id === id);
  if (!t || state.cash < t.cost || state.smarts < 70) return;
  state.cash -= t.cost;
  state.company = { name: 'My ' + t.name + ' Ltd', type: t.name, revenue: t.baseRevenue, expenses: t.baseExpense, employees: 1, marketing: 10, level: 1 };
  addLog(`🏢 You founded ${state.company.name}!`, 'good');
  unlockAchievement('Entrepreneur');
  render(); renderAll();
}
function hireEmployee() {
  if (!state.company || state.cash < 2000) return;
  state.cash -= 2000; state.company.employees++;
  state.company.revenue += 800; state.company.expenses += 1500;
  addLog(`👥 Hired employee. Total: ${state.company.employees}.`, 'work');
  render(); renderAll();
}
function runMarketing() {
  if (!state.company || state.cash < 1500) return;
  state.cash -= 1500;
  state.company.marketing = Math.min(100, state.company.marketing + 15);
  state.company.revenue += 500;
  addLog(`📢 Marketing campaign! Marketing ${state.company.marketing}.`, 'work');
  render(); renderAll();
}
function expandCompany() {
  if (!state.company || state.cash < 10000) return;
  state.cash -= 10000; state.company.level++;
  state.company.revenue += 3000; state.company.expenses += 1000;
  addLog(`📈 Expanded to Level ${state.company.level}.`, 'good');
  render(); renderAll();
}
function sellCompany() {
  if (!state.company) return;
  const value = state.company.revenue * 3;
  state.cash += value;
  addLog(`💸 Sold ${state.company.name} for GH₵${fmt(value)}.`, 'good');
  state.company = null;
  render(); renderAll();
}
function runCompany() {
  if (!state.company) return;
  const c = state.company;
  const mult = 0.8 + Math.random() * 0.4 + (c.marketing / 200);
  const profit = Math.round((c.revenue - c.expenses) * mult);
  state.cash += profit;
  if (profit > 0) { addLog(`📈 ${c.name} profit: GH₵${fmt(profit)}.`, 'good'); if (state.cash > 1000000) unlockAchievement('Millionaire'); }
  else { addLog(`📉 ${c.name} lost GH₵${fmt(Math.abs(profit))}.`, 'bad'); state.happiness = Math.max(0, state.happiness - 5); }
}

// ==================== MONEY ====================
function renderMoney() {
  document.getElementById('m-cash').textContent = 'GH₵' + fmt(state.cash);
  document.getElementById('m-salary').textContent = 'GH₵' + (state.job ? fmt(state.job.salary) : 0);
  const expenses = state.age >= 18 ? (200 + Math.floor(state.age / 10) * 50 + 150) : 0;
  document.getElementById('m-expenses').textContent = 'GH₵' + fmt(expenses);
  document.getElementById('m-momo').textContent = 'GH₵' + fmt(state.momo);
  document.getElementById('m-bank').textContent = 'GH₵' + fmt(state.bank);
  document.getElementById('m-interest').textContent = (state.interestRate * 100).toFixed(1) + '%';
  document.getElementById('m-loan').textContent = 'GH₵' + fmt(state.loan);
  document.getElementById('m-susu').textContent = 'GH₵' + fmt(state.susu);

  const sm = document.getElementById('stockMarket');
  sm.innerHTML = '';
  stockList.forEach(s => {
    const owned = state.stocks[s.id] || 0;
    const price = getStockPrice(s);
    sm.innerHTML += `<div class="statLine"><span>${s.name}</span><b>GH₵${price.toFixed(2)}</b></div>`;
    const div = document.createElement('div');
    div.className = 'grid';
    div.innerHTML = `<button class="secondary" onclick="buyStock('${s.id}')">Buy (GH₵${price.toFixed(2)})</button>
      <button class="secondary" onclick="sellStock('${s.id}')">Sell (${owned} owned)</button>`;
    sm.appendChild(div);
  });
}
function getStockPrice(s) {
  const variance = Math.sin(state.age + s.basePrice) * 0.3 + (Math.random() * 0.2 - 0.1);
  return Math.max(0.1, s.basePrice * (1 + variance));
}
function buyStock(id) {
  const s = stockList.find(x => x.id === id);
  const price = getStockPrice(s);
  const qty = parseInt(prompt(`How many shares of ${s.name}?`, '10'));
  if (!qty || qty <= 0) return;
  const total = price * qty;
  if (state.cash < total) return addLog('❌ Not enough cash.', 'bad');
  state.cash -= total;
  state.stocks[id] = (state.stocks[id] || 0) + qty;
  addLog(`📈 Bought ${qty} shares of ${s.name} for GH₵${fmt(total)}.`, 'money');
  render(); renderAll();
}
function sellStock(id) {
  const s = stockList.find(x => x.id === id);
  const owned = state.stocks[id] || 0;
  if (owned === 0) return addLog('❌ You own no shares.', 'bad');
  const qty = parseInt(prompt(`Sell how many of your ${owned} shares?`, owned.toString()));
  if (!qty || qty <= 0 || qty > owned) return;
  const price = getStockPrice(s);
  const total = price * qty;
  state.cash += total;
  state.stocks[id] -= qty;
  addLog(`📉 Sold ${qty} shares of ${s.name} for GH₵${fmt(total)}.`, 'money');
  render(); renderAll();
}
function momoDeposit() {
  const n = parseFloat(prompt('Deposit to MoMo:', '100'));
  if (!n || n <= 0 || n > state.cash) return;
  state.cash -= n; state.momo += n;
  addLog(`📱 Deposited GH₵${fmt(n)} to MoMo.`, 'money');
  render(); renderAll();
}
function momoWithdraw() {
  const n = parseFloat(prompt('Withdraw from MoMo:', '100'));
  if (!n || n <= 0 || n > state.momo) return;
  state.momo -= n; state.cash += n;
  addLog(`📱 Withdrew GH₵${fmt(n)}.`, 'money');
  render(); renderAll();
}
function momoSend() {
  const n = parseFloat(prompt('Send amount:', '50'));
  if (!n || n <= 0 || n > state.momo) return;
  state.momo -= n; state.karma = Math.min(100, state.karma + 2);
  state.happiness = Math.min(100, state.happiness + 3);
  addLog(`📤 Sent GH₵${fmt(n)}. Karma +2.`, 'good');
  render(); renderAll();
}
function momoPayBill() {
  const n = parseFloat(prompt('Bill amount:', '200'));
  if (!n || n <= 0 || n > state.momo) return;
  state.momo -= n;
  addLog(`💡 Paid bill GH₵${fmt(n)}.`, 'money');
  render(); renderAll();
}
function bankDeposit() {
  const n = parseFloat(prompt('Deposit to bank:', '500'));
  if (!n || n <= 0 || n > state.cash) return;
  state.cash -= n; state.bank += n;
  addLog(`🏦 Deposited GH₵${fmt(n)}.`, 'money');
  render(); renderAll();
}
function bankWithdraw() {
  const n = parseFloat(prompt('Withdraw from bank:', '500'));
  if (!n || n <= 0 || n > state.bank) return;
  state.bank -= n; state.cash += n;
  addLog(`🏦 Withdrew GH₵${fmt(n)}.`, 'money');
  render(); renderAll();
}
function bankLoan() {
  if (state.loan > 0) return addLog('❌ Already have a loan.', 'bad');
  const n = parseFloat(prompt('Loan amount (max 50,000):', '10000'));
  if (!n || n <= 0 || n > 50000) return;
  state.loan = n * 1.15; state.cash += n;
  addLog(`💰 Loan: GH₵${fmt(n)}. Owe GH₵${fmt(state.loan)}.`, 'money');
  render(); renderAll();
}
function bankRepay() {
  if (state.loan <= 0) return;
  if (state.cash < state.loan) return addLog('❌ Not enough cash.', 'bad');
  state.cash -= state.loan;
  addLog(`💸 Repaid GH₵${fmt(state.loan)}.`, 'good');
  state.loan = 0;
  render(); renderAll();
}
function susuSave() {
  if (state.cash < 200) return;
  state.cash -= 200; state.susu += 220;
  addLog(`💰 Susu: -GH₵200, balance GH₵${fmt(state.susu)}.`, 'money');
  render(); renderAll();
}
function susuCollect() {
  if (state.susu <= 0) return;
  state.cash += state.susu;
  addLog(`📦 Collected susu: GH₵${fmt(state.susu)}.`, 'good');
  state.susu = 0;
  render(); renderAll();
}

// ==================== SHOP ====================
function renderShop() {
  const shopEl = document.getElementById('shopList');
  shopEl.innerHTML = '';
  shopItems.forEach(item => {
    const btn = document.createElement('button');
    btn.className = 'secondary';
    btn.innerHTML = `${item.name} <small>GH₵${fmt(item.cost)}</small>`;
    btn.onclick = () => buyItem(item.id);
    if (state.cash < item.cost) btn.disabled = true;
    shopEl.appendChild(btn);
  });
  const propEl = document.getElementById('propertyList');
  propEl.innerHTML = '';
  propertyTypes.forEach(p => {
    const btn = document.createElement('button');
    btn.className = 'secondary';
    btn.innerHTML = `${p.name} <small>Buy: GH₵${fmt(p.cost)} • Rent: GH₵${fmt(p.rent)}/yr</small>`;
    btn.onclick = () => buyProperty(p.id);
    if (state.cash < p.cost) btn.disabled = true;
    propEl.appendChild(btn);
  });
  if (state.properties.length > 0) {
    propEl.innerHTML += `<h3 style="margin-top:12px">My Properties</h3>`;
    state.properties.forEach((p) => {
      propEl.innerHTML += `<div class="statLine"><span>${p.name}</span><b>Rent GH₵${fmt(p.rent)}/yr</b></div>`;
    });
  }
  const invEl = document.getElementById('inventoryList');
  if (state.inventory.length === 0) invEl.innerHTML = `<p class="empty">Empty.</p>`;
  else invEl.innerHTML = state.inventory.map(i => `<p>• ${i}</p>`).join('');
}
function buyItem(id) {
  const item = shopItems.find(i => i.id === id);
  if (!item || state.cash < item.cost) return;
  state.cash -= item.cost;
  state.inventory.push(item.name);
  if (item.happiness) state.happiness = Math.min(100, state.happiness + item.happiness);
  if (item.smarts) state.smarts = Math.min(100, state.smarts + item.smarts);
  if (item.health) state.health = Math.min(100, state.health + item.health);
  if (item.looks) state.looks = Math.min(100, state.looks + item.looks);
  if (item.fitness) state.fitness = Math.min(100, state.fitness + item.fitness);
  addLog(`🛍️ Bought ${item.name} for GH₵${fmt(item.cost)}.`, 'good');
  render(); renderAll();
}
function buyProperty(id) {
  const p = propertyTypes.find(x => x.id === id);
  if (!p || state.cash < p.cost) return;
  state.cash -= p.cost;
  state.properties.push({ name: p.name, rent: p.rent });
  addLog(`🏠 Bought ${p.name} for GH₵${fmt(p.cost)}.`, 'good');
  unlockAchievement('Landlord');
  render(); renderAll();
}

// ==================== SOCIAL ====================
function renderSocial() {
  document.getElementById('sm-platform').textContent = state.socialMedia.platform;
  document.getElementById('sm-followers').textContent = state.socialMedia.followers.toLocaleString();
  document.getElementById('sm-income').textContent = 'GH₵' + fmt(state.socialMedia.income);
}
function postContent() {
  if (state.age < 13) return;
  const quality = (state.looks * 0.4) + (state.smarts * 0.3) + (state.happiness * 0.3) + Math.random() * 20;
  let gained = 0, earned = 0;
  if (quality > 80) { gained = Math.floor(Math.random() * 5000) + 1000; earned = gained * 0.5; addLog(`🔥 VIRAL! +${gained} followers, +GH₵${fmt(earned)}.`, 'social'); }
  else if (quality > 50) { gained = Math.floor(Math.random() * 500) + 100; earned = gained * 0.2; addLog(`📈 Good. +${gained} followers, +GH₵${fmt(earned)}.`, 'social'); }
  else { gained = Math.floor(Math.random() * 50); addLog(`😐 Flop. +${gained}.`, 'bad'); }
  state.socialMedia.followers += gained; state.cash += earned;
  state.socialMedia.income = earned; state.stress += 5;
  if (state.socialMedia.followers >= 100000) unlockAchievement('Influencer');
  render(); renderAll();
}
function doBrandDeal() {
  if (state.socialMedia.followers < 10000) return;
  const deal = Math.round(state.socialMedia.followers * 0.1);
  state.momo += deal;
  addLog(`🤝 Brand deal! +GH₵${fmt(deal)}.`, 'good');
  render(); renderAll();
}
function changePlatform() {
  const i = platforms.indexOf(state.socialMedia.platform);
  state.socialMedia.platform = platforms[(i + 1) % platforms.length];
  addLog(`🔄 Switched to ${state.socialMedia.platform}.`, 'social');
  render(); renderAll();
}

// ==================== DATING ====================
function generateNPC() {
  const firstNames = ['Akosua','Ama','Abena','Adwoa','Afia','Efua','Yaa','Akua','Kwame','Kofi',
                      'Yaw','Kwesi','Kojo','Kwabena','Fiifi','Nana','Esi','Araba','Maame','Adjoa'];
  const lastNames = ['Mensah','Boateng','Asante','Owusu','Osei','Addo','Agyeman','Danso','Appiah','Amankwah'];
  const personalities = ['Kind','Ambitious','Funny','Serious','Romantic','Shy','Adventurous','Jealous','Loyal','Moody'];
  const jobs = ['Teacher','Nurse','Trader','Engineer','Doctor','Farmer','Driver','Banker','Chef','Designer'];
  return {
    id: 'npc_' + Date.now() + '_' + Math.floor(Math.random()*1000),
    name: firstNames[Math.floor(Math.random()*firstNames.length)] + ' ' +
          lastNames[Math.floor(Math.random()*lastNames.length)],
    age: Math.max(18, state.age + Math.floor(Math.random()*6) - 2),
    looks: Math.floor(Math.random()*40) + 40,
    smarts: Math.floor(Math.random()*40) + 40,
    kindness: Math.floor(Math.random()*50) + 30,
    personality: personalities[Math.floor(Math.random()*personalities.length)],
    job: jobs[Math.floor(Math.random()*jobs.length)],
    relationshipLevel: 10, mood: 70, isPartner: false, isSpouse: false, yearsTogether: 0
  };
}
function renderPeople() {
  document.getElementById('familyInfo').innerHTML = `
    <div class="statLine"><span>Married</span><b>${state.married ? 'Yes' : 'No'}</b></div>
    ${state.spouse ? `<div class="statLine"><span>Spouse</span><b>${state.spouse.name}</b></div>` : ''}
    <div class="statLine"><span>Children</span><b>${state.children.length}</b></div>
    <div class="statLine"><span>Partner</span><b>${activePartner ? activePartner.name : 'None'}</b></div>
  `;
  const rel = document.getElementById('relList');
  rel.innerHTML = '';
  if (state.age < 14) { rel.innerHTML = `<p class="empty">You are too young to date.</p>`; }
  else if (state.inPrison) { rel.innerHTML = `<p class="empty">You can't date in prison.</p>`; }
  else {
    const searchBtn = document.createElement('button');
    searchBtn.className = 'secondary';
    searchBtn.textContent = '🔍 Search for Singles (GH₵50)';
    searchBtn.onclick = searchForDates;
    rel.appendChild(searchBtn);

    if (!activePartner) {
      datingPool.forEach(npc => {
        const btn = document.createElement('button');
        btn.className = 'secondary';
        btn.innerHTML = `${npc.name}, ${npc.age} <small>${npc.personality} • ${npc.job} • Looks ${npc.looks} • Smarts ${npc.smarts}</small>`;
        btn.onclick = () => startDating(npc.id);
        rel.appendChild(btn);
      });
    }

    if (activePartner) {
      const card = document.createElement('div');
      card.className = 'partnerCard';
      card.innerHTML = `
        <h4>💕 ${activePartner.name}</h4>
        <div class="statLine"><span>Age</span><b>${activePartner.age}</b></div>
        <div class="statLine"><span>Job</span><b>${activePartner.job}</b></div>
        <div class="statLine"><span>Personality</span><b>${activePartner.personality}</b></div>
        <div class="statLine"><span>Relationship</span><b>${activePartner.relationshipLevel}/100</b></div>
        <div class="statLine"><span>Mood</span><b>${activePartner.mood}/100</b></div>
        <div class="statLine"><span>Years Together</span><b>${activePartner.yearsTogether}</b></div>
      `;
      rel.appendChild(card);

      const actions = [
        { label: '💐 Send Gift (GH₵200)', fn: sendGift, cls: 'secondary' },
        { label: '🍽️ Take on Date (GH₵300)', fn: takeOnDate, cls: 'secondary' },
        { label: '💬 Have a Deep Talk', fn: deepTalk, cls: 'secondary' },
        { label: '💍 Propose Marriage (GH₵5,000)', fn: proposeMarriage, cls: 'secondary' },
        { label: '💔 Break Up', fn: breakUp, cls: 'danger' },
        { label: '😈 Cheat on Partner', fn: cheatOnPartner, cls: 'danger' }
      ];
      actions.forEach(a => {
        const btn = document.createElement('button');
        btn.className = a.cls;
        btn.textContent = a.label;
        btn.onclick = a.fn;
        rel.appendChild(btn);
      });
    }
  }
  const kids = document.getElementById('childList');
  if (state.children.length === 0) kids.innerHTML = `<p class="empty">No children.</p>`;
  else kids.innerHTML = state.children.map(c => `<div class="statLine"><span>${c.name}</span><b>Age ${c.age}</b></div>`).join('');
}
function searchForDates() {
  if (state.cash < 50) return addLog('❌ Need GH₵50 to search.', 'bad');
  state.cash -= 50;
  datingPool = [];
  const count = Math.floor(Math.random() * 3) + 2;
  for (let i = 0; i < count; i++) datingPool.push(generateNPC());
  addLog(`🔍 Found ${count} singles nearby.`, 'good');
  render(); renderAll();
}
function startDating(npcId) {
  const npc = datingPool.find(n => n.id === npcId);
  if (!npc) return;
  if (activePartner) return addLog(`❌ You're already with ${activePartner.name}.`, 'bad');
  npc.isPartner = true; npc.relationshipLevel = 25;
  activePartner = npc;
  state.relationships.push({ name: npc.name, type: 'Partner' });
  addLog(`💕 You started dating ${npc.name} (${npc.personality}, ${npc.job}).`, 'love');
  datingPool = datingPool.filter(n => n.id !== npcId);
  render(); renderAll();
}
function sendGift() {
  if (!activePartner) return;
  if (state.cash < 200) return addLog('❌ Need GH₵200.', 'bad');
  state.cash -= 200;
  activePartner.relationshipLevel = Math.min(100, activePartner.relationshipLevel + 10);
  activePartner.mood = Math.min(100, activePartner.mood + 15);
  addLog(`💐 Sent ${activePartner.name} a gift. Relationship +10.`, 'love');
  render(); renderAll();
}
function takeOnDate() {
  if (!activePartner) return;
  if (state.cash < 300) return addLog('❌ Need GH₵300.', 'bad');
  state.cash -= 300;
  if (Math.random() < 0.75) {
    activePartner.relationshipLevel = Math.min(100, activePartner.relationshipLevel + 15);
    activePartner.mood = Math.min(100, activePartner.mood + 20);
    state.happiness = Math.min(100, state.happiness + 5);
    addLog(`🍽️ Great date with ${activePartner.name}! Relationship +15.`, 'love');
  } else {
    activePartner.relationshipLevel = Math.max(0, activePartner.relationshipLevel - 5);
    addLog(`😕 The date went badly. Relationship -5.`, 'bad');
  }
  render(); renderAll();
}
function deepTalk() {
  if (!activePartner) return;
  if (Math.random() < 0.7) {
    activePartner.relationshipLevel = Math.min(100, activePartner.relationshipLevel + 8);
    activePartner.mood = Math.min(100, activePartner.mood + 10);
    addLog(`💬 Deep talk. Relationship +8.`, 'love');
  } else {
    activePartner.relationshipLevel = Math.max(0, activePartner.relationshipLevel - 3);
    addLog(`💬 Awkward talk. Relationship -3.`, 'bad');
  }
  render(); renderAll();
}
function proposeMarriage() {
  if (!activePartner) return;
  if (state.cash < 5000) return addLog('❌ Need GH₵5,000.', 'bad');
  if (activePartner.relationshipLevel < 60) return addLog('❌ Relationship too low (need 60+).', 'bad');
  state.cash -= 5000;
  if (Math.random() < (activePartner.relationshipLevel / 100)) {
    activePartner.isSpouse = true;
    state.spouse = { name: activePartner.name };
    state.married = true;
    state.happiness = Math.min(100, state.happiness + 25);
    activePartner.relationshipLevel = 100;
    addLog(`💍 ${activePartner.name} said YES!`, 'good');
    unlockAchievement('Married');
  } else {
    activePartner.relationshipLevel = Math.max(0, activePartner.relationshipLevel - 20);
    addLog(`💔 ${activePartner.name} said no. Relationship -20.`, 'bad');
  }
  render(); renderAll();
}
function breakUp() {
  if (!activePartner) return;
  const name = activePartner.name;
  state.relationships = state.relationships.filter(r => !(r.name === name && r.type === 'Partner'));
  if (state.spouse && state.spouse.name === name) { state.spouse = null; state.married = false; }
  activePartner = null;
  state.happiness = Math.max(0, state.happiness - 10);
  addLog(`💔 Broke up with ${name}.`, 'bad');
  render(); renderAll();
}
function cheatOnPartner() {
  if (!activePartner) return;
  if (Math.random() < 0.4) {
    addLog(`😈 Cheated and got CAUGHT!`, 'bad');
    activePartner.relationshipLevel = Math.max(0, activePartner.relationshipLevel - 50);
    activePartner.mood = Math.max(0, activePartner.mood - 40);
    state.happiness = Math.max(0, state.happiness - 15);
    state.karma = Math.max(0, state.karma - 15);
    if (Math.random() < 0.5) breakUp();
  } else {
    state.happiness = Math.min(100, state.happiness + 5);
    state.karma = Math.max(0, state.karma - 5);
    addLog(`😈 Cheated and got away with it.`, 'bad');
  }
  render(); renderAll();
}
function updateRelationships() {
  if (!activePartner) return;
  activePartner.yearsTogether++;
  activePartner.mood = Math.max(0, activePartner.mood - 5);
  if (activePartner.mood < 30) activePartner.relationshipLevel = Math.max(0, activePartner.relationshipLevel - 10);
  if (activePartner.relationshipLevel <= 0) { addLog(`💔 ${activePartner.name} left you.`, 'bad'); breakUp(); return; }
  if (activePartner.isSpouse && state.children.length < 4 && Math.random() < 0.3) {
    const names = ['Kwame','Akosua','Kofi','Ama','Yaw','Adwoa'];
    const name = names[Math.floor(Math.random()*names.length)];
    state.children.push({ name, age: 0 });
    state.cash -= 500;
    state.happiness = Math.min(100, state.happiness + 5);
    addLog(`👶 ${activePartner.name} gave birth to ${name}!`, 'good');
  }
}

// ==================== CRIME ====================
function renderCrime() {
  const el = document.getElementById('crimeStatus');
  if (state.inPrison) {
    el.innerHTML = `<div class="statLine"><span>Status</span><b class="red">In Prison</b></div>
      <div class="statLine"><span>Years Left</span><b>${state.prisonYears}</b></div>
      <button class="secondary" onclick="attemptEscape()">🏃 Attempt Escape</button>`;
  } else {
    el.innerHTML = '';
    crimeList.forEach(c => {
      const btn = document.createElement('button');
      btn.className = 'secondary';
      btn.innerHTML = `${c.name} <small>Reward ~GH₵${fmt(c.reward)} • Jail risk ${Math.round(c.risk*100)}%</small>`;
      btn.onclick = () => commitCrime(c.id);
      if (state.age < 15) btn.disabled = true;
      el.appendChild(btn);
    });
  }
  document.getElementById('legalStatus').innerHTML = `
    <div class="statLine"><span>Criminal Record</span><b>${state.criminalRecord ? 'Yes' : 'Clean'}</b></div>
    <div class="statLine"><span>Karma</span><b>${state.karma}/100</b></div>`;
}
function commitCrime(id) {
  const c = crimeList.find(x => x.id === id);
  if (!c) return;
  if (Math.random() < c.risk) {
    state.inPrison = true; state.prisonYears = c.jail;
    state.criminalRecord = true;
    state.karma = Math.max(0, state.karma - 20);
    if (state.job) state.job = null;
    addLog(`🚔 ARRESTED for ${c.name}! ${c.jail} year(s).`, 'crime');
    unlockAchievement('Jailbird');
  } else {
    state.cash += c.reward;
    state.karma = Math.max(0, state.karma - 5);
    addLog(`💰 Successful ${c.name}! +GH₵${fmt(c.reward)}.`, 'crime');
  }
  render(); renderAll();
}
function attemptEscape() {
  if (Math.random() < 0.3) {
    state.inPrison = false; state.prisonYears = 0;
    addLog('🏃 You escaped prison!', 'good');
  } else { state.prisonYears += 2; addLog('❌ Escape failed. +2 years.', 'bad'); }
  render(); renderAll();
}

// ==================== EMIGRATE ====================
function renderEmigrate() {
  const el = document.getElementById('emigrateList');
  el.innerHTML = '';
  if (state.emigrated) { el.innerHTML = `<p class="meta">You live in ${state.country}.</p>`; return; }
  countries.forEach(c => {
    const btn = document.createElement('button');
    btn.className = 'secondary';
    btn.innerHTML = `✈️ ${c.name} <small>Cost: GH₵${fmt(c.cost)} • Salary x${c.salaryMult}</small>`;
    btn.onclick = () => emigrate(c.id);
    if (state.cash < c.cost || state.age < 18) btn.disabled = true;
    el.appendChild(btn);
  });
}
function emigrate(id) {
  const c = countries.find(x => x.id === id);
  if (!c || state.cash < c.cost || state.age < 18) return;
  state.cash -= c.cost;
  state.country = c.name; state.emigrated = true;
  if (state.job) state.job.salary = Math.round(state.job.salary * c.salaryMult);
  addLog(`✈️ Emigrated to ${c.name}! Salary x${c.salaryMult}.`, 'good');
  unlockAchievement('Globetrotter');
  render(); renderAll();
}

// ==================== ACHIEVEMENTS ====================
function renderAchievements() {
  const el = document.getElementById('achievements');
  if (state.achievements.length === 0) el.innerHTML = `<p class="empty">None yet.</p>`;
  else el.innerHTML = state.achievements.map(a => `<div class="statLine"><span>🏆</span><b>${a}</b></div>`).join('');
}

// ==================== ACTIVITIES ====================
function gamble() {
  if (state.age < 18) return;
  const n = parseFloat(prompt('Bet amount:', '500'));
  if (!n || n <= 0 || n > state.cash) return;
  state.cash -= n;
  if (Math.random() < 0.4) { state.cash += n * 2; addLog(`🎰 Won GH₵${fmt(n*2)}!`, 'good'); }
  else { addLog(`🎰 Lost GH₵${fmt(n)}.`, 'bad'); state.happiness = Math.max(0, state.happiness - 5); }
  render(); renderAll();
}
function goToChurch() {
  state.karma = Math.min(100, state.karma + 5);
  state.happiness = Math.min(100, state.happiness + 5);
  addLog('⛪ Church. Karma +5.', 'good');
  render(); renderAll();
}
function goToGym() {
  if (state.cash < 50) return;
  state.cash -= 50;
  state.fitness = Math.min(100, state.fitness + 5);
  state.health = Math.min(100, state.health + 3);
  addLog('💪 Gym. Fitness +5.', 'good');
  render(); renderAll();
}
function goToSchool() {
  if (state.age < 6) return;
  state.smarts = Math.min(100, state.smarts + 5);
  state.stress = Math.min(100, state.stress + 5);
  addLog('📚 Studied. Smarts +5.', 'school');
  render(); renderAll();
}

// ==================== GROW UP ====================
function growUp() {
  if (!state.alive) return;
  state.age++;
  addLog(`— — — Age ${state.age} — — —`, 'event');

  if (state.inPrison) {
    state.prisonYears--;
    addLog(`🚔 Prison year served. ${state.prisonYears} left.`, 'crime');
    if (state.prisonYears <= 0) { state.inPrison = false; addLog('🔓 You are free!', 'good'); }
    render(); renderAll(); return;
  }

  if (state.age > 60) state.health -= Math.floor(Math.random() * 5) + 1;
  state.stress = Math.max(0, state.stress - 5);
  if (state.stress > 80) state.health -= 10;
  if (state.bank > 0) state.bank += state.bank * state.interestRate;

  handleSchool();

  if (state.job) {
    state.cash += state.job.salary;
    addLog(`💰 Earned GH₵${fmt(state.job.salary)} from ${state.job.title}.`, 'work');
  }
  if (state.company) runCompany();
  if (state.properties.length > 0) {
    let rentTotal = 0;
    state.properties.forEach(p => rentTotal += p.rent);
    state.cash += rentTotal;
    addLog(`🏠 Property rent: +GH₵${fmt(rentTotal)}.`, 'money');
  }
  if (state.socialMedia.followers > 0) {
    const inc = Math.round(state.socialMedia.followers * 0.01);
    state.cash += inc;
    if (inc > 0) addLog(`📱 Social: +GH₵${fmt(inc)}.`, 'social');
  }

  handleExpenses();
  handleRandomEvent();
  updateRelationships();
  state.children.forEach(c => c.age++);

  if (state.health <= 0 || state.age >= 100) { endLife(); return; }
  render(); renderAll();
}

// ==================== SCHOOL ====================
function handleSchool() {
  const a = state.age;
  if (a === 5 && state.education === 'None') { state.education = 'Primary School'; addLog('📚 Primary School.', 'school'); }
  else if (a === 11 && state.education === 'Primary School') { state.education = 'JHS'; addLog('📚 JHS.', 'school'); }
  else if (a === 14 && state.education === 'JHS') {
    if (state.happiness > 40 && Math.random() < 0.7) { state.education = 'SHS'; addLog('🎉 Passed BECE! SHS.', 'school'); }
    else { state.education = 'Dropout'; addLog('😔 Failed BECE.', 'bad'); }
  }
  else if (a === 17 && state.education === 'SHS') { state.education = 'SHS Graduate'; addLog('🎓 SHS complete.', 'school'); }
  else if (a === 18 && state.education === 'SHS Graduate') {
    let bestMajor = majors[0];
    majors.forEach(m => { if (state.smarts >= m.smartsReq && m.salaryBoost > bestMajor.salaryBoost) bestMajor = m; });
    if (state.cash >= bestMajor.cost) {
      state.cash -= bestMajor.cost;
      state.education = 'University'; state.major = bestMajor.name;
      addLog(`🎓 Enrolled in ${bestMajor.name}! (-GH₵${fmt(bestMajor.cost)})`, 'school');
    } else addLog('Could not afford university.', 'bad');
  }
  else if (a === 22 && state.education === 'University') {
    state.education = 'Degree Holder';
    state.smarts = Math.min(100, state.smarts + 20);
    addLog(`🎓 Graduated in ${state.major}! Smarts +20.`, 'good');
    unlockAchievement('Graduate');
  }

  if (a >= 18 && !state.job && !state.inPrison) {
    const major = majors.find(m => m.name === state.major);
    if (state.education === 'Degree Holder' && major) {
      state.job = { title: major.name + ' Professional', salary: 800 + major.salaryBoost, type: 'job' };
      addLog(`💼 Job: ${state.job.title}! GH₵${fmt(state.job.salary)}/yr.`, 'work');
    } else if (state.education === 'SHS Graduate') {
      state.job = { title: 'Office Worker', salary: 800, type: 'job' };
      addLog('💼 Office job. GH₵800/yr.', 'work');
    } else {
      state.job = { title: 'Trotro Mate', salary: 300, type: 'job' };
      addLog('🚌 Trotro Mate. GH₵300/yr.', 'work');
    }
  }
}

// ==================== EXPENSES ====================
function handleExpenses() {
  if (state.age < 18) return;
  const rent = 200 + Math.floor(state.age / 10) * 50;
  const food = 150;
  const total = rent + food;
  state.cash -= total;
  addLog(`🏠 Expenses: -GH₵${fmt(total)}.`, 'bad');
  if (state.cash < 0) { state.happiness = Math.max(0, state.happiness - 5); addLog('😟 In debt.', 'bad'); }
  if (state.loan > 0 && state.cash > 0) {
    const repay = Math.min(state.loan, 2000);
    state.cash -= repay; state.loan -= repay;
    addLog(`💸 Loan repaid: GH₵${fmt(repay)}. Left: GH₵${fmt(state.loan)}.`, 'money');
  }
}

// ==================== RANDOM ====================
function handleRandomEvent() {
  const roll = Math.random();
  if (roll < 0.08) { state.health = Math.max(0, state.health - 10); addLog('🤒 Malaria. Health -10.', 'bad'); }
  else if (roll < 0.14) { state.cash += 500; addLog('🎁 Relative sent GH₵500.', 'good'); }
  else if (roll < 0.20) { state.happiness = Math.min(100, state.happiness + 10); addLog('🎉 Festival! Happiness +10.', 'good'); }
  else if (roll < 0.25) { state.cash -= 300; addLog('💸 Bill: -GH₵300.', 'bad'); }
  else if (roll < 0.28) { state.cash += 2000; addLog('🍀 Lottery! +GH₵2,000.', 'good'); }
  state.health = Math.max(0, Math.min(100, state.health));
  state.happiness = Math.max(0, Math.min(100, state.happiness));
}

// ==================== END ====================
function endLife() {
  state.alive = false;
  addLog(`⌛ Died at age ${state.age}.`, 'event');
  addLog(`📊 Final: Cash GH₵${fmt(state.cash)} | Bank GH₵${fmt(state.bank)} | MoMo GH₵${fmt(state.momo)}`, 'event');
  addLog(`🎓 ${state.education} ${state.major ? '('+state.major+')' : ''} | 💼 ${state.job ? state.job.title : 'No job'}`, 'event');
  addLog(`🏆 Achievements: ${state.achievements.length}`, 'event');
  addLog('🇬🇭 Thank you for living a Ghanaian life.', 'event');
  render();
}

// ==================== BOOT ====================
startGame();
</script>
</body>
</html>