{"id":175,"date":"2026-10-06T15:06:02","date_gmt":"2026-10-06T15:06:02","guid":{"rendered":"https:\/\/noreonline.online\/?page_id=175"},"modified":"2026-10-06T15:06:32","modified_gmt":"2026-10-06T15:06:32","slug":"naija-hustle","status":"publish","type":"page","link":"https:\/\/noreonline.online\/?page_id=175","title":{"rendered":"Naija Hustle"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"175\" class=\"elementor elementor-175\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a947dff e-flex e-con-boxed e-con e-parent\" data-id=\"a947dff\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b09c287 elementor-widget elementor-widget-html\" data-id=\"b09c287\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\"><title>Naija Hustle<\/title>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Baloo+2:wght@600;800&family=Nunito:wght@400;700;800&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n:root{--bg:#f6f3ea;--card:#fff;--tx:#14231a;--mut:#5d6b62;--g:#0a8f4b;--gold:#f5b301;--red:#d64545;--line:#e3dfd0;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}\r\n@media(prefers-color-scheme:dark){:root:not([data-theme=\"light\"]){--bg:#0e1712;--card:#17251d;--tx:#eef5ef;--mut:#9db0a3;--line:#274034}}\r\n:root[data-theme=\"dark\"]{--bg:#0e1712;--card:#17251d;--tx:#eef5ef;--mut:#9db0a3;--line:#274034}\r\nhtml{scroll-padding-top:env(safe-area-inset-top,0px)}*{box-sizing:border-box}\r\nbody{margin:0;background:var(--bg);color:var(--tx);font-family:Nunito,system-ui,sans-serif;min-height:100vh}\r\nh1,h2,h3,.b{font-family:'Baloo 2',Nunito,sans-serif;margin:0}.wrap{max-width:900px;margin:0 auto;padding:14px}\r\n.hero{background:linear-gradient(135deg,var(--g),#066b38);color:#fff;border-radius:24px;padding:24px 20px;position:relative;overflow:hidden}\r\n.hero:after{content:\"\";position:absolute;inset:0;background:repeating-conic-gradient(from 0deg at 100% 0,#ffffff12 0 10deg,transparent 10deg 20deg);pointer-events:none}\r\n.hero>*{position:relative;z-index:1}.hero h1{font-size:clamp(34px,8vw,52px);line-height:1}.hero h1 span{color:var(--gold)}.hero p{opacity:.92;margin:8px 0 0}\r\n.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:16px;margin-top:14px;box-shadow:0 6px 20px #0000000d}\r\n.tabs{display:flex;gap:6px;background:var(--bg);padding:5px;border-radius:14px;margin-bottom:12px}\r\n.tabs button{flex:1;border:0;background:none;padding:9px 4px;border-radius:10px;font:700 14px Nunito;color:var(--mut);cursor:pointer}.tabs button.on{background:var(--g);color:#fff}\r\nlabel{display:block;font-weight:800;font-size:13px;margin:10px 0 4px;color:var(--mut)}\r\ninput{width:100%;padding:13px;border-radius:12px;border:2px solid var(--line);background:var(--bg);color:var(--tx);font:700 16px Nunito}\r\n.btn{border:0;cursor:pointer;border-radius:14px;padding:13px 16px;font:800 16px 'Baloo 2';background:var(--gold);color:#241a00;width:100%;margin-top:10px}\r\n.btn:active{transform:scale(.97)}.btn.alt{background:var(--card);color:var(--tx);border:2px solid var(--line)}.btn:disabled{opacity:.4}\r\n.err{color:var(--red);font-weight:800;font-size:14px;min-height:18px;margin-top:6px}\r\n.top{display:flex;justify-content:space-between;align-items:center;gap:8px}\r\n.chip{background:var(--card);border:1px solid var(--line);border-radius:99px;padding:6px 12px;font-weight:800;font-size:13px;color:var(--tx);cursor:pointer}\r\n.grid{display:grid;gap:10px;margin-top:10px}.g2{grid-template-columns:repeat(2,1fr)}@media(min-width:640px){.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}}\r\n.stat{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:9px 12px}.stat small{color:var(--mut);font-weight:800}.stat .v{font:800 19px 'Baloo 2'}\r\n.bar{height:8px;background:var(--bg);border-radius:9px;overflow:hidden;margin-top:4px}.bar i{display:block;height:100%;background:var(--g);transition:width .4s}\r\n.phase{display:flex;gap:6px;margin-top:10px}.phase div{flex:1;text-align:center;padding:7px;border-radius:12px;background:var(--card);border:1px solid var(--line);font-weight:800;font-size:13px;color:var(--mut)}.phase .on{background:var(--g);color:#fff}\r\n.act,.mode{text-align:left;background:var(--card);border:2px solid var(--line);border-radius:18px;padding:13px;cursor:pointer;color:var(--tx);font-family:Nunito;transition:.15s}\r\n.act:hover:not(:disabled),.mode:hover{border-color:var(--g);transform:translateY(-2px)}.act:disabled{opacity:.45;cursor:not-allowed}\r\n.act .e,.mode .e{font-size:28px}.act b,.mode b{display:block;font:800 17px 'Baloo 2'}.act span,.mode span{font-size:13px;color:var(--mut);font-weight:700}\r\n.log p{margin:6px 0;padding:8px 10px;background:var(--bg);border-radius:10px;font-weight:700;font-size:14px}.log p:first-child{border-left:4px solid var(--gold)}\r\n.ov{position:fixed;inset:0;background:#000a;display:flex;align-items:center;justify-content:center;padding:16px;z-index:9}\r\n.modal{background:var(--card);border-radius:24px;padding:20px;max-width:420px;width:100%;animation:pop .25s}@keyframes pop{from{transform:scale(.9);opacity:0}}\r\n.modal .e{font-size:46px}.modal p{color:var(--mut);font-weight:700}\r\n.row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px dashed var(--line);font-weight:700;font-size:14px}\r\n.big{font:800 40px 'Baloo 2';color:var(--g);text-align:center}.tiny{font-size:12px;color:var(--mut);text-align:center;margin-top:10px;font-weight:700}\r\n.scene{border-radius:20px;overflow:hidden;margin-top:12px;position:relative;border:1px solid var(--line)}.scene svg{display:block;width:100%}\r\n.keke{animation:drive 9s linear infinite}@keyframes drive{from{transform:translateX(-60px)}to{transform:translateX(430px)}}\r\n.bob{animation:bob 1.2s ease-in-out infinite}@keyframes bob{50%{transform:translateY(-4px)}}\r\n.bub{position:absolute;left:10px;top:8px;background:#fff;color:#14231a;border-radius:14px;padding:6px 10px;font-weight:800;font-size:12px;max-width:70%}\r\n.fl{position:fixed;left:50%;top:40%;font:800 30px 'Baloo 2';z-index:20;pointer-events:none;animation:fl 1.2s forwards}@keyframes fl{to{transform:translateY(-90px);opacity:0}}\r\n<\/style><\/head><body><div class=\"wrap\" id=\"app\"><\/div>\r\n<script>\r\nconst $=s=>document.querySelector(s),cl=n=>Math.max(0,Math.min(100,Math.round(n))),N=n=>'\u20a6'+Math.round(n).toLocaleString();\r\nconst mem={},st={get(k){try{return localStorage.getItem(k)}catch(e){return mem[k]||null}},set(k,v){try{localStorage.setItem(k,v)}catch(e){mem[k]=v}}};\r\nconst J=(k,d)=>{try{return JSON.parse(st.get(k))||d}catch(e){return d}};\r\nconst hs=s=>{let h=5381;for(const c of s)h=((h*33)^c.charCodeAt(0))>>>0;return h};\r\nconst seeded=a=>n=>{a=(a+0x6D2B79F5)|0;let t=Math.imul(a^a>>>15,1|a);t=(t+Math.imul(t^t>>>7,61|t))^t;return Math.floor(((t^t>>>14)>>>0)\/4294967296*n)};\r\nlet rnd=n=>Math.floor(Math.random()*n);\r\nconst dk=new Date().toISOString().slice(0,10),wk='W'+Math.floor((Date.now()-Date.UTC(2026,0,5))\/6048e5);\r\nconst CK=['onitsha','kano','aba','ph'];\r\nconst C={onitsha:{n:'Onitsha',e:'\ud83d\udecd\ufe0f',g:'Main Market goods',b:6000,p:[1000,500],sky:'#7dd3fc',t:'Biggest market on the Niger'},\r\nkano:{n:'Kano',e:'\ud83e\uddf5',g:'Kantin Kwari fabrics',b:7000,p:[1100,600],sky:'#fcd34d',t:'Ancient trade city of the north'},\r\naba:{n:'Aba',e:'\ud83d\udc5e',g:'Made-in-Aba shoes',b:5000,p:[900,500],sky:'#a7f3d0',t:'Ariaria craftsmen, cheap and sharp'},\r\nph:{n:'Port Harcourt',e:'\ud83d\udee2\ufe0f',g:'Oil-city fashion',b:8000,p:[1300,600],sky:'#c4b5fd',t:'Oil money, big spenders'}};\r\nconst MODES={career:{d:21,g:250000},daily:{d:7,g:1e12},weekly:{d:14,g:1e12}};\r\nconst SAY=['Customer, come see correct price!','Wetin you wan buy, oga?','No dull, na hustle we dey!','Abeg no cut my price o!','Naija no dey carry last!','Chop life, make we move!'];\r\nlet V='auth',tab='up',S=null,db=null,uid=null,prof=null,snd=true,lbk='all',ac=null;\r\nconst worth=()=>S.cash+S.stock*1000+S.ajo*3000-(S.loan?S.loan.o:0);\r\nconst pr=()=>C[S.c].p[0]+rnd(C[S.c].p[1]);\r\nfunction sfx(f,d=.15,t='sine'){if(!snd)return;try{ac=ac||new AudioContext();const o=ac.createOscillator(),g=ac.createGain();o.type=t;o.frequency.value=f;g.gain.value=.08;o.connect(g);g.connect(ac.destination);o.start();g.gain.exponentialRampToValueAtTime(.001,ac.currentTime+d);o.stop(ac.currentTime+d)}catch(e){}}\r\nfunction speak(t){if(snd&&window.speechSynthesis){try{const u=new SpeechSynthesisUtterance(t);u.lang='en-NG';u.rate=1.05;speechSynthesis.cancel();speechSynthesis.speak(u)}catch(e){}}}\r\nfunction fx(d){if(!d)return;const e=document.createElement('div');e.className='fl';e.style.color=d>0?'#0a8f4b':'#d64545';e.textContent=(d>0?'+':'\u2212')+N(Math.abs(d));document.body.appendChild(e);setTimeout(()=>e.remove(),1200);d>0?(sfx(880,.12),setTimeout(()=>sfx(1175,.2),110)):sfx(160,.3,'sawtooth')}\r\n\r\nconst ACTS=()=>{const c=C[S.c];return[[\r\n{e:'\ud83d\uded2',t:'Buy stock',d:`\u2212${N(c.b)} \u00b7 +10 goods`,ok:()=>S.cash>=c.b,run(){S.cash-=c.b;S.stock+=10;S.energy=cl(S.energy-10);return`You bargained for 10 bundles of ${c.g}. \"Last price, oga!\"`}},\r\n{e:'\ud83d\ude4f',t:'Prayer & jog',d:'+10 mood \u00b7 \u22125 energy',run(){S.mood=cl(S.mood+10);S.energy=cl(S.energy-5);return'Morning prayer done. Body dey ready! \ud83c\udf24\ufe0f'}},\r\n{e:'\ud83e\udd63',t:'Akara & pap',d:'\u2212\u20a6500 \u00b7 +10 energy',ok:()=>S.cash>=500,run(){S.cash-=500;S.energy=cl(S.energy+10);S.mood=cl(S.mood+5);return'Hot akara and pap. Sweet die! \ud83d\ude0b'}}],\r\n[{e:'\ud83c\udfea',t:'Run your stall',d:'Sell goods \u00b7 \u221220 energy',ok:()=>S.energy>=20&&S.stock>0,run(){const n=Math.min(S.stock,3+rnd(7)+Math.floor(S.rep\/10)),p=pr();S.stock-=n;S.cash+=n*p;S.energy=cl(S.energy-20);if(n>=6)S.rep=cl(S.rep+2);return`You sold ${n} at about ${N(p)} each. Customers dey shout your name! \ud83d\udce3`}},\r\n{e:'\ud83d\udcf2',t:'POS agent stand',d:'Earn commission \u00b7 \u221215 energy',ok:()=>S.energy>=15,run(){const f=rnd(100)<25,m=f?900+rnd(900):1800+rnd(2400);S.cash+=m;S.energy=cl(S.energy-15);return f?`\"Network don fail!\" You still made ${N(m)} commission. \ud83d\udcf6`:`POS and transfers dey flow. Commission: ${N(m)} \ud83d\udcb3`}},\r\n{e:'\ud83d\udce3',t:'Hawk on street',d:'Sell up to 4 \u00b7 \u221225 energy',ok:()=>S.energy>=25&&S.stock>0,run(){const n=Math.min(S.stock,1+rnd(4));S.stock-=n;S.cash+=n*1100;S.energy=cl(S.energy-25);S.mood=cl(S.mood-5);return`Sun hot but you sold ${n} for ${N(n*1100)}. \u2600\ufe0f`}},\r\n{e:'\ud83c\udf5b',t:'Jollof lunch',d:'\u2212\u20a61,500 \u00b7 +20 energy',ok:()=>S.cash>=1500,run(){S.cash-=1500;S.energy=cl(S.energy+20);S.mood=cl(S.mood+8);return'Party jollof with chicken. Nothing beat am! \ud83d\udd25'}}],\r\n[{e:'\ud83d\udef5',t:'Keke side hustle',d:'+\u20a63,000 \u00b7 \u221225 energy',ok:()=>S.energy>=25,run(){S.cash+=3000;S.energy=cl(S.energy-25);return'You drove keke till late. Traffic wild! \ud83d\udea6'}},\r\n{e:'\ud83c\udf89',t:'Owambe party',d:'\u2212\u20a62,500 \u00b7 +5 rep',ok:()=>S.cash>=2500,run(){S.cash-=2500;S.rep=cl(S.rep+5);S.mood=cl(S.mood+15);S.energy=cl(S.energy-10);return'You dance, spray money, and meet big customers. \ud83d\udc83'}},\r\n{e:'\u26bd',t:'Rest & Super Eagles',d:'+30 energy \u00b7 +10 mood',run(){S.energy=cl(S.energy+30);S.mood=cl(S.mood+10);return'Suya, zobo and the Eagles on TV. Naija forever! \ud83e\udd85'}},\r\n{e:'\ud83e\udd1d',t:\"Traders' meeting\",d:'+3 rep \u00b7 +5 mood',run(){S.rep=cl(S.rep+3);S.mood=cl(S.mood+5);return\"Union meeting done. People respect serious traders. \ud83e\uddd1\ud83c\udffe\u200d\ud83d\udcbc\"}}]]};\r\nconst EV=[\r\n{e:'\ud83d\udca1',t:'Light don go!',d:'NEPA take light for middle of business.',o:[['Fuel generator (\u2212\u20a62,500)',()=>{S.cash-=2500;S.mood=cl(S.mood+3);return'Generator dey roar. \u26a1'}],['Sit in darkness',()=>{S.mood=cl(S.mood-10);return'Heat don worry you. \ud83e\udd75'}]]},\r\n{e:'\ud83d\udde3\ufe0f',t:'\"Oga, last price!\"',d:'Customer wants 2 items at \u20a6800 each.',c:()=>S.stock>=2,o:[['Give discount',()=>{S.stock-=2;S.cash+=1600;S.rep=cl(S.rep+1);return'Deal done. \ud83e\udd1d'}],['Hold price',()=>{S.mood=cl(S.mood-3);return'He waka go. \ud83d\ude24'}]]},\r\n{e:'\ud83d\udcf1',t:'Fake alert!',d:'A man shows \u20a620,000 alert for 3 of your items.',c:()=>S.stock>=3,o:[['Release goods',()=>{S.stock-=3;S.mood=cl(S.mood-12);return'Alert na fake! You lost 3 items. \ud83d\ude2d'}],['Check bank app',()=>{S.rep=cl(S.rep+2);return'No money enter. You are smart! \ud83e\udde0'}]]},\r\n{e:'\ud83d\udc6e',t:'Task force levy',d:'Officer demands \u20a61,500 \"levy\".',o:[['Pay quietly',()=>{S.cash-=1500;return'You paid. Move on. \ud83d\ude2e\u200d\ud83d\udca8'}],['Ask for receipt',()=>{if(rnd(2)){S.rep=cl(S.rep+3);return'He backed off! \ud83d\udc4f'}S.cash-=3000;return'E escalate. You paid \u20a63,000. \ud83d\udcb8'}]]},\r\n{e:'\ud83d\udce6',t:'Bulk order!',d:'Shop owner wants 5 items at \u20a61,300.',c:()=>S.stock>=5,o:[['Accept (+\u20a66,500)',()=>{S.stock-=5;S.cash+=6500;S.rep=cl(S.rep+3);return'Big sale! \ud83d\ude9a'}],['Decline',()=>'Maybe next time.']]},\r\n{e:'\ud83d\udcb3',t:'POS wahala',d:'A customer says his transfer reversed.',o:[['Refund \u20a62,000',()=>{S.cash-=2000;S.rep=cl(S.rep+2);return'Trust build. \ud83d\ude4f'}],['Ask for proof',()=>{S.mood=cl(S.mood-4);return'Na small quarrel. \ud83d\ude2e'}]]}];\r\nconst CEV={onitsha:{e:'\ud83c\udf27\ufe0f',t:'Heavy rain at Upper Iweka',d:'Market is flooded.',o:[['Buy tarpaulin (\u2212\u20a61,500)',()=>{S.cash-=1500;return'Goods safe. \u2614'}],['Hope for best',()=>{S.stock=Math.max(0,S.stock-2);return'You lost 2 items. \ud83c\udf0a'}]]},\r\nkano:{e:'\ud83c\udf2c\ufe0f',t:'Harmattan dust',d:'Cold dusty wind covers Kantin Kwari.',o:[['Buy face cover (\u2212\u20a6700)',()=>{S.cash-=700;S.mood=cl(S.mood+3);return'Dust no fit disturb you. \ud83d\ude37'}],['Endure',()=>{S.energy=cl(S.energy-12);return'Cough dey follow you. \ud83e\udd27'}]]},\r\naba:{e:'\ud83d\udc5f',t:'Ariaria bulk buyers',d:'Traders from Lagos want your shoes.',c:()=>S.stock>=4,o:[['Sell 4 at \u20a61,500',()=>{S.stock-=4;S.cash+=6000;S.rep=cl(S.rep+3);return'Made in Aba, sold in Lagos! \ud83d\udc5e'}],['Wait for more',()=>'They left.']]},\r\nph:{e:'\ud83d\udee2\ufe0f',t:'Oil-money customer',d:'A rich client wants premium fashion.',c:()=>S.stock>=3,o:[['Sell 3 at \u20a62,500',()=>{S.stock-=3;S.cash+=7500;S.rep=cl(S.rep+2);return'Port Harcourt money! \ud83d\udcb0'}],['Skip',()=>'You skipped.']]}};\r\n\r\n\/* ---------- accounts & backend ---------- *\/\r\nasync function boot(){render();try{if(!window.claude)return;const u=await claude.use('user');db=await claude.use('db');if(u&&db){uid=await u.id();const p=await db.collection('data\/users\/'+uid).doc('profile').get();prof=p.exists?p.data():null;render()}}catch(e){db=null}}\r\nasync function signUp(){const n=$('#nm').value.trim();if(n.length<3)return err('Pick a name of at least 3 characters.');\r\nif(!db)return err('Online accounts unavailable here. Play as guest instead.');\r\nprof={name:n,joined:dk};try{await db.collection('data\/users\/'+uid).doc('profile').set(prof)}catch(e){return err('Could not save profile.')}V='menu';render()}\r\nfunction signIn(){if(prof){V='menu';render()}else err(db?'No account yet. Sign up first.':'Online accounts unavailable here.')}\r\nfunction guest(){prof=null;V='menu';render()}\r\nfunction err(m){$('#err').textContent=m}\r\nconst who=()=>prof?prof.name:'Guest';\r\nasync function saveGame(){if(db&&uid&&prof&&S.m==='career'&&!S.over)try{await db.collection('data\/users\/'+uid).doc('save').set({s:JSON.stringify(S)})}catch(e){}}\r\nasync function cont(){try{const d=await db.collection('data\/users\/'+uid).doc('save').get();if(d.exists){S=JSON.parse(d.data().s);rnd=n=>Math.floor(Math.random()*n);V='game';return render()}}catch(e){}alert('No saved career found.')}\r\nasync function submit(){const k=S.m==='career'?'all':S.m==='daily'?'d-'+dk:'w-'+wk,e={k,w:Math.round(worth()),n:who(),c:C[S.c].n,d:S.day};\r\nconst lk='oh:b:'+k,b=J(lk,[]);b.push(e);b.sort((a,c)=>c.w-a.w);st.set(lk,JSON.stringify(b.slice(0,8)));\r\nif(db&&uid&&prof)try{const r=db.collection('scores').doc(k+'_'+uid),o=await r.get();if(!o.exists||o.data().w<e.w)await r.set(e)}catch(x){}}\r\nasync function board(k){if(db&&uid)try{const q=await db.collection('scores').where('k','==',k).limit(100).get();return q.docs.map(d=>d.data()).sort((a,b)=>b.w-a.w).slice(0,8)}catch(e){}return J('oh:b:'+k,[])}\r\nasync function showBoard(k){lbk=k;const el=$('#lb');if(!el)return;document.querySelectorAll('#lbt button').forEach(b=>b.classList.toggle('on',b.dataset.k===k));const b=await board(k);\r\nel.innerHTML=b.length?b.map((x,i)=>`<div class=\"row\"><span>${['\ud83e\udd47','\ud83e\udd48','\ud83e\udd49'][i]||i+1+'.'} ${esc(x.n)} \u00b7 ${esc(x.c)}<\/span><span>${N(x.w)}<\/span><\/div>`).join(''):'<p class=\"tiny\">No scores yet. Be the first!<\/p>'}\r\nconst esc=s=>String(s).replace(\/[&<>\"]\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c]));\r\n\r\n\/* ---------- views ---------- *\/\r\nconst boardCard=()=>`<div class=\"card\"><h3>\ud83c\udfc6 Leaderboards ${db?'(global)':'(this device)'}<\/h3><div class=\"tabs\" id=\"lbt\" style=\"margin-top:10px\"><button data-k=\"all\" onclick=\"showBoard('all')\">All-time<\/button><button data-k=\"d-${dk}\" onclick=\"showBoard('d-${dk}')\">Today<\/button><button data-k=\"w-${wk}\" onclick=\"showBoard('w-${wk}')\">This week<\/button><\/div><div id=\"lb\"><\/div><\/div>`;\r\nfunction render(){$('#app').innerHTML=V==='auth'?authV():V==='menu'?menuV():V==='game'?gameV():endV();if(V!=='game')setTimeout(()=>showBoard(lbk.startsWith('d-')?'d-'+dk:lbk.startsWith('w-')?'w-'+wk:'all'),0)}\r\nfunction authV(){return`<div class=\"hero\"><span class=\"chip\" style=\"background:#ffffff22;color:#fff;border:0\">\ud83c\uddf3\ud83c\uddec Naija Life Sim<\/span><h1 style=\"margin-top:10px\">Naija <span>Hustle<\/span><\/h1><p>Hustle across Onitsha, Kano, Aba and Port Harcourt. Compete daily, win weekly tournaments and climb the global leaderboard.<\/p><\/div>\r\n<div class=\"card\"><div class=\"tabs\"><button class=\"${tab==='up'?'on':''}\" onclick=\"tab='up';render()\">Sign up<\/button><button class=\"${tab==='in'?'on':''}\" onclick=\"tab='in';render()\">Sign in<\/button><\/div>\r\n${tab==='up'?`<label>Choose your hustler name<\/label><input id=\"nm\" maxlength=\"18\" placeholder=\"e.g. ChiefObi\"><div class=\"err\" id=\"err\"><\/div><button class=\"btn\" onclick=\"signUp()\">Create account & play<\/button>`\r\n:`<p style=\"font-weight:700;margin:0\">${prof?`Welcome back, <b>${esc(prof.name)}<\/b> \ud83d\udc4b`:db?'No account found for you yet.':'Checking your account\u2026'}<\/p><div class=\"err\" id=\"err\"><\/div><button class=\"btn\" onclick=\"signIn()\">${prof?'Sign in as '+esc(prof.name):'Sign in'}<\/button>`}\r\n<button class=\"btn alt\" onclick=\"guest()\">Play as guest<\/button><p class=\"tiny\">Accounts use your claude.ai identity. Guest scores stay on this device.<\/p><\/div>${boardCard()}`}\r\nfunction menuV(){return`<div class=\"top\"><h2>Naija <span style=\"color:var(--g)\">Hustle<\/span><\/h2><div><span class=\"chip\" onclick=\"snd=!snd;render()\">${snd?'\ud83d\udd0a':'\ud83d\udd07'}<\/span> <span class=\"chip\">\ud83d\udc64 ${esc(who())}<\/span> <span class=\"chip\" onclick=\"V='auth';render()\">Exit<\/span><\/div><\/div>\r\n<div class=\"card\"><h3>\ud83d\udd25 Compete<\/h3><div class=\"grid g2\"><button class=\"mode\" onclick=\"start('daily')\"><div class=\"e\">\ud83d\udcc5<\/div><b>Daily Challenge<\/b><span>7 days \u00b7 same events for everyone \u00b7 ${dk}<\/span><\/button><button class=\"mode\" onclick=\"start('weekly')\"><div class=\"e\">\ud83c\udfdf\ufe0f<\/div><b>Weekly Tournament<\/b><span>14 days \u00b7 ${wk} \u00b7 best score wins<\/span><\/button><\/div><\/div>\r\n<div class=\"card\"><h3>\ud83c\udfd9\ufe0f Career mode<\/h3><p class=\"tiny\" style=\"margin:4px 0 0;text-align:left\">Choose a city. Reach \u20a6250,000 in 21 days to become Chairman.<\/p><div class=\"grid g2 g4\">${CK.map(k=>`<button class=\"mode\" onclick=\"start('career','${k}')\"><div class=\"e\">${C[k].e}<\/div><b>${C[k].n}<\/b><span>${C[k].t}<\/span><\/button>`).join('')}<\/div>${db&&prof?'<button class=\"btn alt\" onclick=\"cont()\">\u25b6 Continue saved career<\/button>':''}<\/div>${boardCard()}`}\r\nfunction scene(){const c=C[S.c],ph=S.phase,sky=['#fde68a',c.sky,'#4c3a7a'][ph],fl=['\ud83e\uddd1\ud83c\udffe\u200d\ud83c\udf3e','\ud83d\udc69\ud83c\udffe\u200d\ud83c\udf73','\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udcbc','\ud83d\udc75\ud83c\udffe'];\r\nreturn`<div class=\"scene\"><svg viewBox=\"0 0 400 110\"><rect width=\"400\" height=\"110\" fill=\"${sky}\"\/><circle cx=\"${[60,200,340][ph]}\" cy=\"${[50,22,50][ph]}\" r=\"16\" fill=\"${ph==2?'#f8fafc':'#fbbf24'}\"\/><rect y=\"84\" width=\"400\" height=\"26\" fill=\"#64748b\"\/><rect y=\"88\" width=\"400\" height=\"3\" fill=\"#cbd5e1\" stroke-dasharray=\"14 10\"\/>\r\n${[30,150,270].map((x,i)=>`<rect x=\"${x}\" y=\"46\" width=\"90\" height=\"38\" fill=\"#fff8e7\"\/><path d=\"M${x-4} 46h98l-8-14H${x+4}z\" fill=\"${['#0a8f4b','#f5b301','#d64545'][i]}\"\/><text class=\"bob\" style=\"animation-delay:${i*.3}s\" x=\"${x+28}\" y=\"76\" font-size=\"26\">${fl[(i+S.day)%4]}<\/text>`).join('')}\r\n<g class=\"keke\"><text y=\"102\" font-size=\"22\">\ud83d\udefa<\/text><\/g><\/svg><div class=\"bub\">\ud83d\udcac ${esc(S.say)}<\/div><\/div>`}\r\nfunction gameV(){const c=C[S.c],M=MODES[S.m],g=Math.min(100,worth()\/M.g*100),A=ACTS()[S.phase];return`<div class=\"top\"><h2>${c.e} ${c.n}<\/h2><div><span class=\"chip\" onclick=\"snd=!snd;render()\">${snd?'\ud83d\udd0a':'\ud83d\udd07'}<\/span> <span class=\"chip\" onclick=\"V='menu';render()\">Menu<\/span><\/div><\/div>${scene()}\r\n<div class=\"grid g2 g4\"><div class=\"stat\"><small>\ud83d\udcc5 DAY<\/small><div class=\"v\">${S.day}\/${M.d}<\/div><\/div><div class=\"stat\"><small>\ud83d\udcb0 CASH<\/small><div class=\"v\">${N(S.cash)}<\/div><\/div><div class=\"stat\"><small>\ud83d\udce6 STOCK<\/small><div class=\"v\">${S.stock}<\/div><\/div><div class=\"stat\"><small>\ud83c\udfc5 NET WORTH<\/small><div class=\"v\">${N(worth())}<\/div><\/div><\/div>\r\n<div class=\"grid g2 g4\"><div class=\"stat\"><small>\u26a1 Energy ${S.energy}<\/small><div class=\"bar\"><i style=\"width:${S.energy}%\"><\/i><\/div><\/div><div class=\"stat\"><small>\ud83d\ude0a Mood ${S.mood}<\/small><div class=\"bar\"><i style=\"width:${S.mood}%;background:var(--gold)\"><\/i><\/div><\/div><div class=\"stat\"><small>\u2b50 Rep ${S.rep}<\/small><div class=\"bar\"><i style=\"width:${S.rep}%;background:#7c5cff\"><\/i><\/div><\/div><div class=\"stat\"><small>\ud83c\udfaf ${S.m==='career'?'Goal '+N(M.g):MODES[S.m].d+'-day score run'}<\/small><div class=\"bar\"><i style=\"width:${S.m==='career'?g:S.day\/M.d*100}%\"><\/i><\/div><\/div><\/div>\r\n<div class=\"phase\">${['\ud83c\udf05 Morning','\u2600\ufe0f Afternoon','\ud83c\udf19 Evening'].map((p,i)=>`<div class=\"${i===S.phase?'on':''}\">${p}<\/div>`).join('')}<\/div>\r\n<div class=\"grid g3\">${A.map((a,i)=>`<button class=\"act\" ${a.ok&&!a.ok()?'disabled':''} onclick=\"act(${i})\"><div class=\"e\">${a.e}<\/div><b>${a.t}<\/b><span>${a.d}<\/span><\/button>`).join('')}<\/div>\r\n<div class=\"card\"><h3>\ud83d\udcb3 Mobile money & savings<\/h3><p class=\"tiny\" style=\"text-align:left;margin:4px 0\">Free actions. Loan: borrow \u20a620,000, repay \u20a626,000 in 5 days. Ajo: 5 deposits of \u20a63,000 pay out \u20a617,000.<\/p>\r\n<div class=\"grid g2\"><button class=\"btn alt\" ${S.loan?'disabled':''} onclick=\"loan()\">\ud83d\udcf2 ${S.loan?'Loan due day '+S.loan.due+' ('+N(S.loan.o)+')':'Take \u20a620,000 loan'}<\/button><button class=\"btn alt\" ${S.cash<3000||S.ajoDay===S.day?'disabled':''} onclick=\"ajo()\">\ud83c\udfe6 Ajo deposit (${S.ajo}\/5)<\/button><\/div><\/div>\r\n<div class=\"card log\"><h3>\ud83d\udcd6 Your Story<\/h3>${S.log.slice(0,4).map(l=>`<p>${esc(l)}<\/p>`).join('')}<\/div>`}\r\nfunction endV(){const w=worth(),t=w>=250000?'Chairman of the Traders \ud83d\udc51':w>=150000?'Market Big Boy \/ Girl \ud83d\ude0e':w>=50000?'Proud Stall Owner \ud83c\udfea':'Roadside Hawker \ud83c\udf92',m=S.m==='career'?'':S.m==='daily'?'Daily Challenge':'Weekly Tournament';\r\nreturn`<div class=\"hero\"><h1>${S.won?'You made it!':'Time up!'}<\/h1><p>${m||'Career'} \u00b7 ${C[S.c].n}<\/p><\/div><div class=\"card\"><div class=\"big\">${N(w)}<\/div><p style=\"text-align:center;font:800 20px 'Baloo 2'\">${t}<\/p><div class=\"row\"><span>Days<\/span><span>${S.day}<\/span><\/div><div class=\"row\"><span>Reputation<\/span><span>${S.rep}<\/span><\/div>\r\n<button class=\"btn\" onclick=\"share('${t.replace(\/'\/g,'')}')\">\ud83d\udcf2 Share my score<\/button><button class=\"btn alt\" onclick=\"V='menu';render()\">Back to menu<\/button><\/div>${boardCard()}`}\r\nfunction share(t){const m=`I scored ${N(worth())} as \"${t}\" in Naija Hustle! Can you beat me? \ud83c\uddf3\ud83c\uddec\ud83d\udd25`;if(navigator.share)navigator.share({text:m}).catch(()=>{});else{try{navigator.clipboard.writeText(m);alert('Score copied! Paste on WhatsApp, X or Instagram.')}catch(e){prompt('Copy:',m)}}}\r\n\r\n\/* ---------- game flow ---------- *\/\r\nfunction start(m,c){let seed=0;if(m==='daily'){seed=hs(dk);c=CK[seed%4]}else if(m==='weekly'){seed=hs(wk);c=CK[seed%4]}\r\nrnd=seed?seeded(seed):n=>Math.floor(Math.random()*n);\r\nS={m,c,day:1,phase:0,cash:20000,energy:100,mood:70,rep:0,stock:0,loan:null,ajo:0,ajoDay:0,say:'Na hustle we dey!',log:[`Welcome to ${C[c].n}! ${C[c].t}. Time to hustle! \ud83d\udcaa`]};V='game';sfx(523,.2);render()}\r\nfunction act(i){const a=ACTS()[S.phase][i];if(a.ok&&!a.ok())return;const b=S.cash;S.log.unshift(a.run());fx(S.cash-b);S.say=SAY[rnd(SAY.length)];speak(S.say);\r\nconst ev=[...EV,CEV[S.c]].filter(x=>!x.c||x.c());rnd(100)<45?event(ev[rnd(ev.length)]):adv()}\r\nfunction event(ev){const d=document.createElement('div');d.className='ov';d.innerHTML=`<div class=\"modal\"><div class=\"e\">${ev.e}<\/div><h2>${ev.t}<\/h2><p>${ev.d}<\/p>${ev.o.map((o,i)=>`<button class=\"btn ${i?'alt':''}\" data-i=\"${i}\">${o[0]}<\/button>`).join('')}<\/div>`;sfx(330,.2,'triangle');speak(ev.t);\r\nd.onclick=e=>{const i=e.target.dataset.i;if(i===undefined)return;const b=S.cash;S.log.unshift(ev.o[i][1]());S.cash=Math.max(0,S.cash);fx(S.cash-b);d.remove();adv()};document.body.appendChild(d)}\r\nfunction loan(){if(S.loan)return;S.cash+=20000;S.loan={o:26000,due:S.day+5};S.log.unshift('\ud83d\udcf2 Instant loan don enter: \u20a620,000. Repay \u20a626,000 by day '+S.loan.due+'!');fx(20000);render()}\r\nfunction ajo(){if(S.cash<3000||S.ajoDay===S.day)return;S.cash-=3000;S.ajo++;S.ajoDay=S.day;if(S.ajo>=5){S.ajo=0;S.cash+=17000;S.log.unshift('\ud83c\udfe6 Ajo don mature! You collected \u20a617,000. Big win!');fx(14000)}else{S.log.unshift(`\ud83c\udfe6 Ajo deposit ${S.ajo}\/5 done.`);fx(-3000)}render()}\r\nfunction adv(){S.phase++;if(S.phase>2){S.phase=0;S.day++;S.cash-=1000;if(S.cash<0){S.cash=0;S.mood=cl(S.mood-10)}S.energy=cl(S.energy+35);S.mood=cl(S.mood-2);S.log.unshift(`\ud83c\udf19 Day ${S.day-1} done. \u20a61,000 gone on rent, light and data.`);\r\nif(S.loan&&S.day>=S.loan.due){const p=Math.min(S.cash,S.loan.o);S.cash-=p;S.loan.o-=p;if(S.loan.o>0){S.loan.o=Math.round(S.loan.o*1.1);S.loan.due+=2;S.rep=cl(S.rep-8);S.log.unshift('\u26a0\ufe0f Loan collectors dey call! Debt grew by 10% and reputation dropped.')}else{S.loan=null;S.log.unshift('\u2705 Loan fully repaid.')}}}\r\nif(worth()>=MODES[S.m].g){S.won=1;fin()}else if(S.day>MODES[S.m].d)fin();else{saveGame();render()}}\r\nfunction fin(){S.over=1;S.day=Math.min(S.day,MODES[S.m].d);submit();V='end';sfx(659,.2);setTimeout(()=>sfx(784,.3),180);if(S.m==='career')saveGame();render()}\r\nboot();\r\n<\/script><\/body><\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Naija Hustle<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-175","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/noreonline.online\/index.php?rest_route=\/wp\/v2\/pages\/175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/noreonline.online\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/noreonline.online\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/noreonline.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/noreonline.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=175"}],"version-history":[{"count":4,"href":"https:\/\/noreonline.online\/index.php?rest_route=\/wp\/v2\/pages\/175\/revisions"}],"predecessor-version":[{"id":179,"href":"https:\/\/noreonline.online\/index.php?rest_route=\/wp\/v2\/pages\/175\/revisions\/179"}],"wp:attachment":[{"href":"https:\/\/noreonline.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}