{"id":203,"date":"2026-05-20T10:40:00","date_gmt":"2026-05-20T10:40:00","guid":{"rendered":"https:\/\/arenabolt.com\/?page_id=203"},"modified":"2026-05-20T11:40:33","modified_gmt":"2026-05-20T11:40:33","slug":"tracker","status":"publish","type":"page","link":"https:\/\/arenabolt.com\/","title":{"rendered":""},"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\" \/>\n<title>\ud83d\udcb0 Earnings Tracker<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600&#038;family=DM+Mono:wght@400;500&#038;display=swap\" rel=\"stylesheet\" \/>\n<style>\n*, *::before, *::after { box-sizing:border-box; margin:0; padding:0; }\n:root {\n  --bg:#f5f6fa; --surface:#ffffff; --surface2:#f0f2f8;\n  --border:#e2e5ef; --border2:#cdd2e6;\n  --text:#1a1d2e; --text2:#5a5f7a; --text3:#9097b5;\n  --green:#16a34a; --green-light:#dcfce7; --green-mid:#86efac;\n  --blue:#2563eb; --blue-light:#eff6ff;\n  --inr:#b45309; --inr-light:#fef3c7; --inr-mid:#fcd34d;\n  --red:#dc2626; --red-light:#fee2e2; --red-mid:#fca5a5;\n  --purple:#7c3aed; --purple-light:#ede9fe;\n  --radius:10px; --radius-sm:6px;\n}\nbody { font-family:'DM Sans',sans-serif; background:var(--bg); color:var(--text); min-height:100vh; padding:32px 20px; }\n.wrapper { max-width:980px; margin:0 auto; }\n\n\/* HEADER *\/\n.header { background:var(--surface); border-radius:var(--radius); border:1px solid var(--border); padding:16px 20px; display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; gap:12px; flex-wrap:wrap; }\n.header-left { display:flex; align-items:center; gap:12px; }\n.logo-icon { width:38px; height:38px; background:var(--green-light); border-radius:var(--radius-sm); display:flex; align-items:center; justify-content:center; font-size:20px; }\n.header h1 { font-size:20px; font-weight:600; }\n.header-sub { font-size:12px; color:var(--text3); margin-top:2px; }\n.header-right { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }\n.rate-wrap { display:flex; align-items:center; gap:5px; background:var(--inr-light); border:1px solid var(--inr-mid); border-radius:var(--radius-sm); padding:5px 10px; }\n.rate-label { font-size:12px; font-weight:500; color:var(--inr); white-space:nowrap; }\n.rate-input { font-family:'DM Mono',monospace; font-size:13px; font-weight:500; width:54px; padding:3px 6px; border:1px solid var(--inr-mid); border-radius:4px; background:white; color:var(--inr); text-align:right; outline:none; }\n.rate-input:focus { border-color:var(--inr); }\n.currency-toggle { display:flex; border:1px solid var(--border2); border-radius:var(--radius-sm); overflow:hidden; }\n.cur-btn { font-family:'DM Sans',sans-serif; font-size:12px; font-weight:600; padding:6px 11px; border:none; cursor:pointer; background:var(--surface2); color:var(--text3); transition:background .15s,color .15s; }\n.cur-btn.active-usd { background:#dbeafe; color:#1d4ed8; }\n.cur-btn.active-inr { background:var(--inr-light); color:var(--inr); }\n.month-select { font-family:'DM Sans',sans-serif; font-size:13px; font-weight:500; padding:7px 10px; border:1px solid var(--border2); border-radius:var(--radius-sm); background:var(--surface); color:var(--text); cursor:pointer; }\n\n\/* STATS *\/\n.stats { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:20px; }\n.stat-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:16px 18px; position:relative; transition:border-color .2s; }\n.stat-card.expense-deduct { border-color:var(--red-mid); }\n.stat-label { font-size:11px; font-weight:500; text-transform:uppercase; letter-spacing:.06em; color:var(--text3); margin-bottom:6px; }\n.stat-value { font-size:22px; font-weight:600; color:var(--text); font-family:'DM Mono',monospace; }\n.stat-sub { font-size:12px; color:var(--text3); margin-top:4px; }\n.stat-value.green { color:var(--green); }\n.stat-value.inr-col { color:var(--inr); }\n.stat-value.red { color:var(--red); }\n.stat-value.net { color:var(--blue); }\n.deduct-badge { position:absolute; top:10px; right:10px; font-size:9px; font-weight:700; padding:2px 6px; border-radius:10px; background:var(--red-light); color:var(--red); letter-spacing:.04em; }\n\n\/* MAIN CARD *\/\n.card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }\n.tabs { display:flex; border-bottom:1px solid var(--border); padding:0 20px; }\n.tab-btn { font-family:'DM Sans',sans-serif; font-size:14px; font-weight:500; padding:14px 16px; border:none; background:none; cursor:pointer; color:var(--text3); border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .15s,border-color .15s; }\n.tab-btn.active { color:var(--blue); border-bottom-color:var(--blue); }\n.tab-btn:hover:not(.active) { color:var(--text); }\n.tab-btn.expense-tab.active { color:var(--red); border-bottom-color:var(--red); }\n.tab-pane { display:none; }\n.tab-pane.active { display:block; }\n\n\/* SEARCH BAR *\/\n.search-wrap { padding:14px 20px; border-bottom:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; gap:12px; }\n.search-input { width:260px; font-family:'DM Sans',sans-serif; font-size:14px; padding:7px 12px 7px 34px; border:1px solid var(--border2); border-radius:var(--radius-sm); background:var(--bg) url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='none' stroke='%239097b5' stroke-width='1.5' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7'\/%3E%3Cpath d='m21 21-4.35-4.35'\/%3E%3C\/svg%3E\") no-repeat 9px center; color:var(--text); outline:none; }\n.search-input:focus { border-color:var(--blue); }\n.search-input::placeholder { color:var(--text3); }\n.cur-badge { font-size:11px; font-weight:600; padding:4px 10px; border-radius:20px; white-space:nowrap; }\n.cur-badge.usd { background:#dbeafe; color:#1d4ed8; }\n.cur-badge.inr { background:var(--inr-light); color:var(--inr); }\n\n\/* EARNINGS TABLE *\/\ntable.earnings-table { width:100%; border-collapse:collapse; font-size:13.5px; table-layout:fixed; }\ntable.earnings-table th { padding:9px 11px; text-align:left; font-size:11.5px; font-weight:500; color:var(--text3); background:var(--bg); border-bottom:1px solid var(--border); }\ntable.earnings-table th.network-col { text-align:center; }\ntable.earnings-table td { padding:9px 11px; border-bottom:1px solid var(--border); vertical-align:middle; }\ntable.earnings-table tr:last-child td { border-bottom:none; }\ntable.earnings-table tr:hover td { background:var(--bg); }\n.col-site{width:190px;} .col-net{width:115px;} .col-daily{width:90px;} .col-month{width:115px;}\n.site-num { display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; background:var(--surface2); border-radius:50%; font-size:11px; font-weight:600; color:var(--text3); margin-right:7px; flex-shrink:0; }\n.site-name { font-weight:500; color:var(--text); font-size:13px; }\n.shared-tag { display:inline-block; font-size:10px; font-weight:600; padding:1px 6px; background:#f0fdf4; color:#15803d; border:1px solid #bbf7d0; border-radius:10px; margin-left:5px; vertical-align:middle; }\n.earn-cell { text-align:center; }\n.earn-input-wrap { position:relative; display:inline-flex; align-items:center; }\n.earn-input-wrap .currency { position:absolute; left:7px; font-size:12px; font-weight:500; color:var(--text3); pointer-events:none; }\n.earn-input { font-family:'DM Mono',monospace; font-size:13px; width:98px; padding:5px 7px 5px 17px; border:1px solid var(--border2); border-radius:var(--radius-sm); background:var(--surface); color:var(--text); text-align:right; outline:none; transition:border-color .15s; }\n.earn-input:focus { border-color:var(--blue); }\n.earn-input.has-value { border-color:var(--green); background:var(--green-light); color:var(--green); }\n.earn-input[disabled] { background:var(--surface2); color:var(--text3); cursor:not-allowed; border-color:var(--border); }\n.total-daily { font-family:'DM Mono',monospace; font-size:13px; font-weight:500; text-align:right; color:var(--text2); }\n.total-monthly { font-family:'DM Mono',monospace; font-size:13.5px; font-weight:600; text-align:right; color:var(--green); }\n.total-monthly.inr-col { color:var(--inr); }\n.zero { color:var(--text3) !important; }\n.month-th-wrap { display:flex; align-items:center; justify-content:flex-end; gap:6px; }\n.th-cur-btn { font-family:'DM Sans',sans-serif; font-size:10px; font-weight:700; padding:3px 7px; border-radius:20px; border:none; cursor:pointer; }\n.th-cur-btn.usd { background:#dbeafe; color:#1d4ed8; }\n.th-cur-btn.inr { background:var(--inr-light); color:var(--inr); }\n.table-footer { padding:9px 20px; font-size:11.5px; color:var(--text3); border-top:1px solid var(--border); display:flex; gap:14px; flex-wrap:wrap; }\n.dot-g { display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--green); margin-right:4px; vertical-align:middle; }\n\n\/* SUMMARY *\/\n.summary-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; padding:20px; }\n.summary-card { border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }\n.summary-card-header { padding:11px 14px; font-size:13px; font-weight:600; display:flex; align-items:center; gap:8px; border-bottom:1px solid var(--border); }\n.sc-modnova{background:#eff6ff;color:#1e40af;} .sc-killermod{background:#f5f3ff;color:#5b21b6;}\n.sc-telegram{background:#ecfdf5;color:#065f46;} .sc-terabox{background:#fff7ed;color:#92400e;}\n.summary-card-body { padding:11px 14px; }\n.summary-row { display:flex; justify-content:space-between; align-items:center; padding:5px 0; border-bottom:1px solid var(--border); font-size:13px; }\n.summary-row:last-child { border-bottom:none; }\n.summary-row .label { color:var(--text2); }\n.summary-row .val { font-family:'DM Mono',monospace; font-weight:500; color:var(--green); }\n.summary-row .val.inr-col { color:var(--inr); }\n.summary-row .val.zero { color:var(--text3); }\n.grand-card { grid-column:1\/-1; border:1px solid var(--green-mid); border-radius:var(--radius); overflow:hidden; }\n.grand-card.inr-col { border-color:var(--inr-mid); }\n.grand-card-header { padding:11px 14px; background:var(--green-light); border-bottom:1px solid var(--green-mid); font-size:14px; font-weight:600; color:var(--green); display:flex; align-items:center; gap:8px; }\n.grand-card-header.inr-col { background:var(--inr-light); border-color:var(--inr-mid); color:var(--inr); }\n.grand-card-body { display:grid; grid-template-columns:repeat(4,1fr); }\n.grand-metric { padding:16px; border-right:1px solid var(--border); text-align:center; }\n.grand-metric:last-child { border-right:none; }\n.gm-label { font-size:11px; color:var(--text3); text-transform:uppercase; letter-spacing:.05em; margin-bottom:6px; }\n.gm-val { font-family:'DM Mono',monospace; font-size:18px; font-weight:600; color:var(--green); }\n.gm-val.inr-col { color:var(--inr); }\n.gm-sub { font-size:11px; color:var(--text3); margin-top:3px; }\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500 EXPENSE TAB \u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.exp-header { padding:16px 20px; border-bottom:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }\n.exp-header-left { display:flex; align-items:center; gap:10px; }\n.exp-header-title { font-size:14px; font-weight:600; color:var(--text); }\n.exp-header-sub { font-size:12px; color:var(--text3); margin-top:1px; }\n\n\/* Eye deduct toggle *\/\n.eye-toggle { display:flex; align-items:center; gap:8px; padding:7px 14px; border-radius:var(--radius-sm); border:1px solid var(--border2); background:var(--surface2); cursor:pointer; transition:all .15s; user-select:none; }\n.eye-toggle:hover { border-color:var(--border); }\n.eye-toggle.active { background:var(--red-light); border-color:var(--red-mid); }\n.eye-icon { font-size:16px; line-height:1; }\n.eye-label { font-size:12px; font-weight:600; color:var(--text3); }\n.eye-toggle.active .eye-label { color:var(--red); }\n.eye-status { font-size:10px; font-weight:700; padding:2px 7px; border-radius:10px; background:var(--surface); color:var(--text3); border:1px solid var(--border); }\n.eye-toggle.active .eye-status { background:var(--red); color:#fff; border-color:var(--red); }\n\n\/* Expense total pill *\/\n.exp-total-pill { display:flex; align-items:center; gap:6px; padding:6px 14px; border-radius:var(--radius-sm); background:var(--red-light); border:1px solid var(--red-mid); }\n.exp-total-pill .ptl { font-size:11px; font-weight:500; color:var(--red); }\n.exp-total-pill .pval { font-family:'DM Mono',monospace; font-size:14px; font-weight:600; color:var(--red); }\n\n\/* Expense sections grid *\/\n.exp-sections { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; padding:20px; }\n\n\/* Each expense section card *\/\n.exp-section { border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }\n.exp-section-head { padding:11px 14px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--border); }\n.exp-section-title { font-size:13px; font-weight:600; display:flex; align-items:center; gap:7px; }\n.exp-section-title .sec-icon { font-size:16px; }\n.add-exp-btn { font-family:'DM Sans',sans-serif; font-size:12px; font-weight:600; padding:5px 12px; border:1px solid; border-radius:20px; cursor:pointer; background:transparent; transition:background .15s; }\n.add-exp-btn.emi-btn   { border-color:#a78bfa; color:#7c3aed; }\n.add-exp-btn.emi-btn:hover { background:#ede9fe; }\n.add-exp-btn.rech-btn  { border-color:#6ee7b7; color:#065f46; }\n.add-exp-btn.rech-btn:hover { background:#ecfdf5; }\n.add-exp-btn.web-btn   { border-color:#93c5fd; color:#1d4ed8; }\n.add-exp-btn.web-btn:hover { background:#eff6ff; }\n.add-exp-btn.other-btn { border-color:#fdba74; color:#92400e; }\n.add-exp-btn.other-btn:hover { background:#fff7ed; }\n\n\/* Inline add form *\/\n.add-form { display:none; padding:10px 14px; background:var(--bg); border-bottom:1px solid var(--border); gap:8px; align-items:center; flex-wrap:wrap; }\n.add-form.open { display:flex; }\n.add-form input[type=text] { font-family:'DM Sans',sans-serif; font-size:13px; flex:1; min-width:110px; padding:6px 10px; border:1px solid var(--border2); border-radius:var(--radius-sm); background:white; color:var(--text); outline:none; }\n.add-form input[type=text]:focus { border-color:var(--blue); }\n.add-form input[type=text]::placeholder { color:var(--text3); }\n.amt-wrap { position:relative; display:flex; align-items:center; }\n.amt-wrap .rs-sym { position:absolute; left:8px; font-size:12px; font-weight:600; color:var(--inr); pointer-events:none; }\n.add-form input[type=number] { font-family:'DM Mono',monospace; font-size:13px; width:100px; padding:6px 8px 6px 22px; border:1px solid var(--border2); border-radius:var(--radius-sm); background:white; color:var(--text); text-align:right; outline:none; }\n.add-form input[type=number]:focus { border-color:var(--inr); }\n.ok-btn { font-family:'DM Sans',sans-serif; font-size:12px; font-weight:700; padding:6px 14px; border:none; border-radius:var(--radius-sm); background:var(--blue); color:white; cursor:pointer; white-space:nowrap; }\n.ok-btn:hover { background:#1d4ed8; }\n.cancel-btn { font-family:'DM Sans',sans-serif; font-size:12px; font-weight:500; padding:6px 10px; border:1px solid var(--border2); border-radius:var(--radius-sm); background:var(--surface); color:var(--text3); cursor:pointer; }\n.cancel-btn:hover { background:var(--surface2); }\n\n\/* Expense items list *\/\n.exp-list { padding:6px 0; min-height:40px; }\n.exp-item { display:flex; align-items:center; justify-content:space-between; padding:7px 14px; border-bottom:1px solid var(--border); font-size:13px; }\n.exp-item:last-child { border-bottom:none; }\n.exp-item-name { color:var(--text); flex:1; }\n.exp-item-amt { font-family:'DM Mono',monospace; font-weight:500; color:var(--inr); margin:0 10px; }\n.exp-item-del { font-size:16px; cursor:pointer; color:var(--text3); border:none; background:none; padding:2px 4px; border-radius:4px; line-height:1; }\n.exp-item-del:hover { color:var(--red); background:var(--red-light); }\n.exp-empty { padding:14px; text-align:center; font-size:12px; color:var(--text3); }\n\n\/* Section footer total *\/\n.exp-section-foot { padding:9px 14px; background:var(--bg); border-top:1px solid var(--border); display:flex; justify-content:space-between; align-items:center; }\n.exp-section-foot .foot-label { font-size:12px; color:var(--text3); }\n.exp-section-foot .foot-val { font-family:'DM Mono',monospace; font-size:14px; font-weight:600; color:var(--inr); }\n\n\/* Section color accents *\/\n.exp-section.emi   .exp-section-head { background:#faf5ff; }\n.exp-section.rech  .exp-section-head { background:#f0fdf4; }\n.exp-section.web   .exp-section-head { background:#eff6ff; }\n.exp-section.other .exp-section-head { background:#fff7ed; }\n.exp-section.emi   .exp-section-title { color:#7c3aed; }\n.exp-section.rech  .exp-section-title { color:#065f46; }\n.exp-section.web   .exp-section-title { color:#1d4ed8; }\n.exp-section.other .exp-section-title { color:#92400e; }\n\n\/* Expense grand summary bar *\/\n.exp-grand { margin:0 20px 20px; border:1px solid var(--red-mid); border-radius:var(--radius); overflow:hidden; }\n.exp-grand-head { padding:10px 16px; background:var(--red-light); border-bottom:1px solid var(--red-mid); font-size:13px; font-weight:600; color:var(--red); display:flex; align-items:center; gap:8px; justify-content:space-between; }\n.exp-grand-body { display:grid; grid-template-columns:repeat(5,1fr); }\n.exp-grand-metric { padding:13px 10px; border-right:1px solid var(--border); text-align:center; }\n.exp-grand-metric:last-child { border-right:none; }\n.egm-label { font-size:10px; color:var(--text3); text-transform:uppercase; letter-spacing:.04em; margin-bottom:5px; }\n.egm-val { font-family:'DM Mono',monospace; font-size:16px; font-weight:600; color:var(--red); }\n.egm-sub { font-size:10px; color:var(--text3); margin-top:2px; }\n.net-earn-metric .egm-val { color:var(--blue); font-size:18px; }\n<\/style>\n<\/head>\n<body>\n<div class=\"wrapper\">\n\n<!-- HEADER -->\n<div class=\"header\">\n  <div class=\"header-left\">\n    <div class=\"logo-icon\">\ud83d\udcb0<\/div>\n    <div>\n      <h1>Earnings Tracker<\/h1>\n      <div class=\"header-sub\">4 websites \u00b7 3 ad networks \u00b7 <span id=\"month-label\">May 2026<\/span><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"header-right\">\n    <div class=\"rate-wrap\" title=\"Adjust USD \u2192 INR rate\">\n      <span class=\"rate-label\">$1 =<\/span>\n      <input type=\"number\" id=\"rateInput\" class=\"rate-input\" value=\"93\" min=\"1\" step=\"0.5\" oninput=\"onRateChange()\" \/>\n      <span class=\"rate-label\">\u20b9<\/span>\n    <\/div>\n    <div class=\"currency-toggle\">\n      <button class=\"cur-btn active-usd\" id=\"btnUSD\" onclick=\"setCurrency('usd')\">$ USD<\/button>\n      <button class=\"cur-btn\" id=\"btnINR\" onclick=\"setCurrency('inr')\">\u20b9 INR<\/button>\n    <\/div>\n    <select class=\"month-select\" id=\"monthSelect\" onchange=\"updateMonthLabel()\">\n      <option>January 2026<\/option><option>February 2026<\/option><option>March 2026<\/option>\n      <option>April 2026<\/option><option selected>May 2026<\/option><option>June 2026<\/option>\n      <option>July 2026<\/option><option>August 2026<\/option><option>September 2026<\/option>\n      <option>October 2026<\/option><option>November 2026<\/option><option>December 2026<\/option>\n    <\/select>\n  <\/div>\n<\/div>\n\n<!-- STATS (4 cards, last one becomes NET when deduct is on) -->\n<div class=\"stats\" id=\"statsRow\">\n  <div class=\"stat-card\">\n    <div class=\"stat-label\">Total Daily<\/div>\n    <div class=\"stat-value green\" id=\"stat-daily\">$0.00<\/div>\n    <div class=\"stat-sub\">across all sources<\/div>\n  <\/div>\n  <div class=\"stat-card\">\n    <div class=\"stat-label\">Monthly Gross \u00d730<\/div>\n    <div class=\"stat-value green\" id=\"stat-monthly\">$0.00<\/div>\n    <div class=\"stat-sub\">projected this month<\/div>\n  <\/div>\n  <div class=\"stat-card\" id=\"stat-card-exp\" style=\"display:none\">\n    <div class=\"deduct-badge\">DEDUCTING<\/div>\n    <div class=\"stat-label\">Monthly Expenses<\/div>\n    <div class=\"stat-value red\" id=\"stat-expenses\">\u20b90<\/div>\n    <div class=\"stat-sub\" id=\"stat-exp-usd\">\u2248 $0.00<\/div>\n  <\/div>\n  <div class=\"stat-card\" id=\"stat-card-net\" style=\"display:none; border-color:var(--blue)\">\n    <div class=\"stat-label\">Net Monthly<\/div>\n    <div class=\"stat-value net\" id=\"stat-net\">$0.00<\/div>\n    <div class=\"stat-sub\">after expenses<\/div>\n  <\/div>\n  <div class=\"stat-card\" id=\"stat-card-active\">\n    <div class=\"stat-label\">Active Sources<\/div>\n    <div class=\"stat-value\" id=\"stat-active\">0<\/div>\n    <div class=\"stat-sub\">of 9 total<\/div>\n  <\/div>\n  <div class=\"stat-card\">\n    <div class=\"stat-label\">Top Network<\/div>\n    <div class=\"stat-value\" id=\"stat-top\" style=\"font-size:15px;padding-top:4px\">\u2014<\/div>\n    <div class=\"stat-sub\" id=\"stat-top-sub\">by monthly earnings<\/div>\n  <\/div>\n<\/div>\n\n<!-- MAIN CARD -->\n<div class=\"card\">\n  <div class=\"tabs\">\n    <button class=\"tab-btn active\" onclick=\"switchTab('grid')\">\ud83d\udcca Earnings Grid<\/button>\n    <button class=\"tab-btn\" onclick=\"switchTab('summary')\">\ud83d\udccb Monthly Summary<\/button>\n    <button class=\"tab-btn expense-tab\" onclick=\"switchTab('expenses')\">\ud83d\udcb8 Expenses<\/button>\n  <\/div>\n\n  <!-- EARNINGS GRID -->\n  <div class=\"tab-pane active\" id=\"tab-grid\">\n    <div class=\"search-wrap\">\n      <input type=\"text\" class=\"search-input\" placeholder=\"Search websites...\" oninput=\"filterRows(this.value)\" \/>\n      <span class=\"cur-badge usd\" id=\"curBadge\">Showing in $ USD<\/span>\n    <\/div>\n    <table class=\"earnings-table\">\n      <colgroup><col class=\"col-site\"\/><col class=\"col-net\"\/><col class=\"col-net\"\/><col class=\"col-net\"\/><col class=\"col-daily\"\/><col class=\"col-month\"\/><\/colgroup>\n      <thead>\n        <tr>\n          <th># Website<\/th>\n          <th class=\"network-col\">Adsettra<br><span style=\"font-weight:400;font-size:10px;color:var(--text3)\">daily avg ($)<\/span><\/th>\n          <th class=\"network-col\">Monetag<br><span style=\"font-weight:400;font-size:10px;color:var(--text3)\">daily avg ($)<\/span><\/th>\n          <th class=\"network-col\">Signup Earn<br><span style=\"font-weight:400;font-size:10px;color:var(--text3)\">daily avg ($)<\/span><\/th>\n          <th style=\"text-align:right\">Daily<\/th>\n          <th style=\"text-align:right\">\n            <div class=\"month-th-wrap\">Monthly \u00d730\n              <button class=\"th-cur-btn usd\" id=\"thCurBtn\" onclick=\"setCurrency(curMode==='usd'?'inr':'usd')\">$ USD<\/button>\n            <\/div>\n          <\/th>\n        <\/tr>\n      <\/thead>\n      <tbody id=\"earningsBody\"><\/tbody>\n    <\/table>\n    <div class=\"table-footer\">\n      <span><span class=\"dot-g\"><\/span> Green = value entered \u00b7 inputs always in USD<\/span>\n      <span>\u00b7 Click $ USD \/ \u20b9 INR button to switch display currency<\/span>\n    <\/div>\n  <\/div>\n\n  <!-- MONTHLY SUMMARY -->\n  <div class=\"tab-pane\" id=\"tab-summary\">\n    <div class=\"summary-grid\" id=\"summaryGrid\"><\/div>\n  <\/div>\n\n  <!-- EXPENSES TAB -->\n  <div class=\"tab-pane\" id=\"tab-expenses\">\n\n    <!-- Expense tab header bar -->\n    <div class=\"exp-header\">\n      <div class=\"exp-header-left\">\n        <div>\n          <div class=\"exp-header-title\">Monthly Expenses<\/div>\n          <div class=\"exp-header-sub\">Enter amounts in \u20b9 INR \u00b7 all bills deducted from monthly earnings<\/div>\n        <\/div>\n      <\/div>\n      <div style=\"display:flex;align-items:center;gap:10px;flex-wrap:wrap\">\n        <div class=\"exp-total-pill\">\n          <span class=\"ptl\">Total Expenses<\/span>\n          <span class=\"pval\" id=\"exp-total-pill-val\">\u20b90<\/span>\n        <\/div>\n        <!-- Eye deduct toggle -->\n        <div class=\"eye-toggle\" id=\"eyeToggle\" onclick=\"toggleDeduct()\" title=\"Toggle deduct from earnings\">\n          <span class=\"eye-icon\" id=\"eyeIcon\">\ud83d\udc41<\/span>\n          <div>\n            <div class=\"eye-label\">Deduct from earnings<\/div>\n          <\/div>\n          <span class=\"eye-status\" id=\"eyeStatus\">OFF<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- 4 expense section cards -->\n    <div class=\"exp-sections\">\n\n      <!-- EMI -->\n      <div class=\"exp-section emi\" id=\"sec-emi\">\n        <div class=\"exp-section-head\">\n          <div class=\"exp-section-title\"><span class=\"sec-icon\">\ud83d\udcb3<\/span> EMI Payments<\/div>\n          <button class=\"add-exp-btn emi-btn\" onclick=\"toggleAddForm('emi')\">+ Add EMI<\/button>\n        <\/div>\n        <div class=\"add-form\" id=\"form-emi\">\n          <input type=\"text\" id=\"name-emi\" placeholder=\"e.g. Phone EMI, Bike loan\u2026\" \/>\n          <div class=\"amt-wrap\"><span class=\"rs-sym\">\u20b9<\/span><input type=\"number\" id=\"amt-emi\" placeholder=\"0\" min=\"0\" step=\"1\" \/><\/div>\n          <button class=\"ok-btn\" onclick=\"addExpense('emi')\">OK<\/button>\n          <button class=\"cancel-btn\" onclick=\"closeForm('emi')\">\u2715<\/button>\n        <\/div>\n        <div class=\"exp-list\" id=\"list-emi\"><\/div>\n        <div class=\"exp-section-foot\">\n          <span class=\"foot-label\">Monthly EMI Total<\/span>\n          <span class=\"foot-val\" id=\"foot-emi\">\u20b90<\/span>\n        <\/div>\n      <\/div>\n\n      <!-- RECHARGE -->\n      <div class=\"exp-section rech\" id=\"sec-rech\">\n        <div class=\"exp-section-head\">\n          <div class=\"exp-section-title\"><span class=\"sec-icon\">\ud83d\udcf6<\/span> Recharge Bills<\/div>\n          <button class=\"add-exp-btn rech-btn\" onclick=\"toggleAddForm('rech')\">+ Add Bill<\/button>\n        <\/div>\n        <div class=\"add-form\" id=\"form-rech\">\n          <input type=\"text\" id=\"name-rech\" placeholder=\"e.g. SIM recharge, Airfiber\u2026\" \/>\n          <div class=\"amt-wrap\"><span class=\"rs-sym\">\u20b9<\/span><input type=\"number\" id=\"amt-rech\" placeholder=\"0\" min=\"0\" step=\"1\" \/><\/div>\n          <button class=\"ok-btn\" onclick=\"addExpense('rech')\">OK<\/button>\n          <button class=\"cancel-btn\" onclick=\"closeForm('rech')\">\u2715<\/button>\n        <\/div>\n        <div class=\"exp-list\" id=\"list-rech\"><\/div>\n        <div class=\"exp-section-foot\">\n          <span class=\"foot-label\">Monthly Recharge Total<\/span>\n          <span class=\"foot-val\" id=\"foot-rech\">\u20b90<\/span>\n        <\/div>\n      <\/div>\n\n      <!-- WEBSITE BILLS -->\n      <div class=\"exp-section web\" id=\"sec-web\">\n        <div class=\"exp-section-head\">\n          <div class=\"exp-section-title\"><span class=\"sec-icon\">\ud83c\udf10<\/span> Website Bills<\/div>\n          <button class=\"add-exp-btn web-btn\" onclick=\"toggleAddForm('web')\">+ Add Bill<\/button>\n        <\/div>\n        <div class=\"add-form\" id=\"form-web\">\n          <input type=\"text\" id=\"name-web\" placeholder=\"e.g. Hosting, Domain, SSL\u2026\" \/>\n          <div class=\"amt-wrap\"><span class=\"rs-sym\">\u20b9<\/span><input type=\"number\" id=\"amt-web\" placeholder=\"0\" min=\"0\" step=\"1\" \/><\/div>\n          <button class=\"ok-btn\" onclick=\"addExpense('web')\">OK<\/button>\n          <button class=\"cancel-btn\" onclick=\"closeForm('web')\">\u2715<\/button>\n        <\/div>\n        <div class=\"exp-list\" id=\"list-web\"><\/div>\n        <div class=\"exp-section-foot\">\n          <span class=\"foot-label\">Monthly Website Total<\/span>\n          <span class=\"foot-val\" id=\"foot-web\">\u20b90<\/span>\n        <\/div>\n      <\/div>\n\n      <!-- OTHER -->\n      <div class=\"exp-section other\" id=\"sec-other\">\n        <div class=\"exp-section-head\">\n          <div class=\"exp-section-title\"><span class=\"sec-icon\">\ud83d\udecd\ufe0f<\/span> Other Purchases<\/div>\n          <button class=\"add-exp-btn other-btn\" onclick=\"toggleAddForm('other')\">+ Add Item<\/button>\n        <\/div>\n        <div class=\"add-form\" id=\"form-other\">\n          <input type=\"text\" id=\"name-other\" placeholder=\"e.g. Software, Tools\u2026\" \/>\n          <div class=\"amt-wrap\"><span class=\"rs-sym\">\u20b9<\/span><input type=\"number\" id=\"amt-other\" placeholder=\"0\" min=\"0\" step=\"1\" \/><\/div>\n          <button class=\"ok-btn\" onclick=\"addExpense('other')\">OK<\/button>\n          <button class=\"cancel-btn\" onclick=\"closeForm('other')\">\u2715<\/button>\n        <\/div>\n        <div class=\"exp-list\" id=\"list-other\"><\/div>\n        <div class=\"exp-section-foot\">\n          <span class=\"foot-label\">Monthly Other Total<\/span>\n          <span class=\"foot-val\" id=\"foot-other\">\u20b90<\/span>\n        <\/div>\n      <\/div>\n\n    <\/div><!-- \/exp-sections -->\n\n    <!-- Grand expense summary bar -->\n    <div class=\"exp-grand\">\n      <div class=\"exp-grand-head\">\n        <span>\ud83d\udcca Monthly Expense Breakdown<\/span>\n        <span id=\"exp-grand-deduct-note\" style=\"font-size:11px;font-weight:400;color:var(--red);display:none\">\ud83d\udc41 Currently deducting from earnings<\/span>\n      <\/div>\n      <div class=\"exp-grand-body\">\n        <div class=\"exp-grand-metric\">\n          <div class=\"egm-label\">EMIs<\/div>\n          <div class=\"egm-val\" id=\"eg-emi\">\u20b90<\/div>\n          <div class=\"egm-sub\">monthly<\/div>\n        <\/div>\n        <div class=\"exp-grand-metric\">\n          <div class=\"egm-label\">Recharge<\/div>\n          <div class=\"egm-val\" id=\"eg-rech\">\u20b90<\/div>\n          <div class=\"egm-sub\">monthly<\/div>\n        <\/div>\n        <div class=\"exp-grand-metric\">\n          <div class=\"egm-label\">Website<\/div>\n          <div class=\"egm-val\" id=\"eg-web\">\u20b90<\/div>\n          <div class=\"egm-sub\">monthly<\/div>\n        <\/div>\n        <div class=\"exp-grand-metric\">\n          <div class=\"egm-label\">Other<\/div>\n          <div class=\"egm-val\" id=\"eg-other\">\u20b90<\/div>\n          <div class=\"egm-sub\">monthly<\/div>\n        <\/div>\n        <div class=\"exp-grand-metric net-earn-metric\" style=\"background:#eff6ff\">\n          <div class=\"egm-label\" style=\"color:#1d4ed8\">Net Earnings<\/div>\n          <div class=\"egm-val net-earn-metric\" id=\"eg-net\" style=\"color:var(--blue);font-size:16px\">\u2014<\/div>\n          <div class=\"egm-sub\" id=\"eg-net-sub\">enable eye to calculate<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n  <\/div><!-- \/tab-expenses -->\n<\/div>\n\n<script>\n\/* \u2500\u2500\u2500 SITES DATA \u2500\u2500\u2500 *\/\nconst SITES = [\n  { id:'modnova',  name:'ModNova.com',       networks:['adsettra','monetag','signup'] },\n  { id:'killermod',name:'KillerMod.com',     networks:['adsettra','monetag','signup'] },\n  { id:'telegram', name:'Telegram Mini App', networks:['monetag','adsettra','signup'] },\n  { id:'terabox',  name:'Terabox',           networks:['signup','adsettra','monetag'], shared:true },\n];\nconst NET_LABEL = {adsettra:'Adsettra',monetag:'Monetag',signup:'Signup Earn'};\nconst SITE_CLS  = {modnova:'sc-modnova',killermod:'sc-killermod',telegram:'sc-telegram',terabox:'sc-terabox'};\nconst SITE_ICON = {modnova:'\ud83c\udf10',killermod:'\u26a1',telegram:'\u2708\ufe0f',terabox:'\ud83d\udce6'};\n\n\/* \u2500\u2500\u2500 STATE \u2500\u2500\u2500 *\/\nlet curMode = 'usd';\nlet inrRate  = 93;\nlet deductOn = false;\n\nlet earnings = {};\nSITES.forEach(s => { earnings[s.id]={}; s.networks.forEach(n => earnings[s.id][n]=''); });\n\n\/\/ expenses: { emi:[], rech:[], web:[], other:[] }  each item: {id, name, amt}\nlet expenses = { emi:[], rech:[], web:[], other:[] };\n\n\/* load localStorage *\/\ntry { const d=localStorage.getItem('earningsData_v2'); if(d) earnings=JSON.parse(d); } catch(e){}\ntry { const r=localStorage.getItem('earningsINRrate'); if(r){ inrRate=parseFloat(r)||93; document.getElementById('rateInput').value=inrRate; }} catch(e){}\ntry { const ex=localStorage.getItem('expensesData'); if(ex) expenses=JSON.parse(ex); } catch(e){}\ntry { const dq=localStorage.getItem('deductOn'); if(dq) deductOn=(dq==='1'); } catch(e){}\n\nfunction saveEarnings(){ try{localStorage.setItem('earningsData_v2',JSON.stringify(earnings));}catch(e){} }\nfunction saveExpenses(){ try{localStorage.setItem('expensesData',JSON.stringify(expenses));}catch(e){} }\n\n\/* \u2500\u2500\u2500 FORMAT \u2500\u2500\u2500 *\/\nfunction fmtV(usdVal){\n  if(curMode==='inr'){\n    const v=usdVal*inrRate;\n    return '\u20b9'+v.toLocaleString('en-IN',{minimumFractionDigits:0,maximumFractionDigits:0});\n  }\n  return '$'+parseFloat(usdVal).toFixed(2);\n}\nfunction fmtINR(inrVal){ return '\u20b9'+parseInt(inrVal).toLocaleString('en-IN'); }\n\n\/* \u2500\u2500\u2500 EARNINGS CALC \u2500\u2500\u2500 *\/\nfunction getDailyTotal(sid){\n  const s=SITES.find(x=>x.id===sid);\n  return s.networks.reduce((sum,n)=>sum+(parseFloat(earnings[sid][n])||0),0);\n}\nfunction getTotalDaily(){ return SITES.reduce((sum,s)=>sum+getDailyTotal(s.id),0); }\nfunction getNetTotal(net){ return SITES.reduce((sum,s)=>{ if(!s.networks.includes(net)) return sum; return sum+(parseFloat(earnings[s.id][net])||0); },0); }\n\n\/* \u2500\u2500\u2500 EXPENSE CALC \u2500\u2500\u2500 *\/\nfunction getSectionTotal(sec){ return expenses[sec].reduce((sum,i)=>sum+(parseFloat(i.amt)||0),0); }\nfunction getTotalExpINR(){ return ['emi','rech','web','other'].reduce((sum,s)=>sum+getSectionTotal(s),0); }\nfunction getTotalExpUSD(){ return getTotalExpINR()\/inrRate; }\n\n\/* \u2500\u2500\u2500 BUILD EARNINGS TABLE \u2500\u2500\u2500 *\/\nfunction buildTable(){\n  const tbody=document.getElementById('earningsBody');\n  tbody.innerHTML='';\n  SITES.forEach((site,i)=>{\n    const tr=document.createElement('tr');\n    tr.dataset.site=site.name.toLowerCase();\n    const sharedTag=site.shared?`<span class=\"shared-tag\">shared account<\/span>`:'';\n    let cells=`<td><div style=\"display:flex;align-items:center\">\n      <span class=\"site-num\">${i+1}<\/span>\n      <span class=\"site-name\">${SITE_ICON[site.id]} ${site.name}${sharedTag}<\/span>\n    <\/div><\/td>`;\n    ['adsettra','monetag','signup'].forEach(net=>{\n      const has=site.networks.includes(net);\n      const val=has?(earnings[site.id][net]||''):null;\n      cells+=`<td class=\"earn-cell\">`;\n      if(has){\n        cells+=`<div class=\"earn-input-wrap\"><span class=\"currency\">$<\/span>\n          <input type=\"number\" step=\"0.01\" min=\"0\" class=\"earn-input${val?' has-value':''}\"\n            data-site=\"${site.id}\" data-net=\"${net}\" value=\"${val}\" placeholder=\"0.00\"\n            oninput=\"handleInput(this)\" \/><\/div>`;\n      } else {\n        cells+=`<input type=\"text\" class=\"earn-input\" value=\"N\/A\" disabled \/>`;\n      }\n      cells+=`<\/td>`;\n    });\n    const daily=getDailyTotal(site.id), monthly=daily*30;\n    const mCls='total-monthly'+(monthly===0?' zero':'')+(curMode==='inr'?' inr-col':'');\n    cells+=`<td class=\"total-daily${daily===0?' zero':''}\"><span id=\"daily-${site.id}\">${daily===0?'\u2014':fmtV(daily)}<\/span><\/td>`;\n    cells+=`<td class=\"${mCls}\"><span id=\"monthly-${site.id}\">${monthly===0?'\u2014':fmtV(monthly)}<\/span><\/td>`;\n    tr.innerHTML=cells;\n    tbody.appendChild(tr);\n  });\n}\n\nfunction handleInput(el){\n  const site=el.dataset.site, net=el.dataset.net;\n  const val=parseFloat(el.value)||0;\n  earnings[site][net]=val>0?val:'';\n  el.classList.toggle('has-value',val>0);\n  saveEarnings();\n  updateAllRows(); updateStats();\n  if(document.getElementById('tab-summary').classList.contains('active')) buildSummary();\n  updateExpGrand();\n}\n\nfunction updateAllRows(){\n  SITES.forEach(s=>{\n    const daily=getDailyTotal(s.id), monthly=daily*30;\n    const dEl=document.getElementById('daily-'+s.id), mEl=document.getElementById('monthly-'+s.id);\n    if(dEl) dEl.textContent=daily===0?'\u2014':fmtV(daily);\n    if(mEl) mEl.textContent=monthly===0?'\u2014':fmtV(monthly);\n    if(dEl) dEl.parentElement.className='total-daily'+(daily===0?' zero':'');\n    if(mEl) mEl.parentElement.className='total-monthly'+(monthly===0?' zero':'')+(curMode==='inr'?' inr-col':'');\n  });\n}\n\nfunction updateStats(){\n  const daily=getTotalDaily(), monthly=daily*30;\n  const expINR=getTotalExpINR(), expUSD=getTotalExpUSD();\n  const netUSD=monthly-expUSD, netINR=monthly*inrRate-expINR;\n\n  const sd=document.getElementById('stat-daily'),sm=document.getElementById('stat-monthly');\n  sd.textContent=fmtV(daily); sm.textContent=fmtV(monthly);\n  sd.className='stat-value '+(curMode==='inr'?'inr-col':'green');\n  sm.className='stat-value '+(curMode==='inr'?'inr-col':'green');\n\n  document.getElementById('stat-expenses').textContent=fmtINR(expINR);\n  document.getElementById('stat-exp-usd').textContent='\u2248 $'+expUSD.toFixed(2);\n\n  const netDisp = curMode==='inr' ? ('\u20b9'+Math.round(netINR).toLocaleString('en-IN')) : ('$'+netUSD.toFixed(2));\n  document.getElementById('stat-net').textContent=netDisp;\n\n  \/\/ Show\/hide expense & net cards\n  const cExp=document.getElementById('stat-card-exp'), cNet=document.getElementById('stat-card-net');\n  const cAct=document.getElementById('stat-card-active');\n  cExp.style.display=deductOn?'block':'none';\n  cNet.style.display=deductOn?'block':'none';\n  \/\/ When deducting, hide active sources to maintain 4-col grid\n  \/\/ Actually keep all 4 visible: daily | monthly | expenses | net (active merges into top row)\n  \/\/ Reorder: show 4 always\n  document.getElementById('statsRow').style.gridTemplateColumns=deductOn?'repeat(4,1fr)':'repeat(4,1fr)';\n\n  let active=0;\n  SITES.forEach(s=>s.networks.forEach(n=>{if(parseFloat(earnings[s.id][n])>0) active++;}));\n  document.getElementById('stat-active').textContent=active;\n  cAct.style.display=deductOn?'none':'block';\n\n  const nets=['adsettra','monetag','signup'];\n  let topNet='\u2014',topVal=0;\n  nets.forEach(n=>{const v=getNetTotal(n)*30; if(v>topVal){topVal=v;topNet=NET_LABEL[n];}});\n  document.getElementById('stat-top').textContent=topVal>0?topNet:'\u2014';\n  document.getElementById('stat-top-sub').textContent=topVal>0?fmtV(topVal)+'\/mo':'by monthly earnings';\n\n  \/\/ Update pill\n  document.getElementById('exp-total-pill-val').textContent=fmtINR(expINR);\n  \/\/ Update deduct note\n  document.getElementById('exp-grand-deduct-note').style.display=deductOn?'inline':'none';\n}\n\n\/* \u2500\u2500\u2500 BUILD SUMMARY \u2500\u2500\u2500 *\/\nfunction buildSummary(){\n  const grid=document.getElementById('summaryGrid');\n  grid.innerHTML='';\n  SITES.forEach(site=>{\n    const card=document.createElement('div');\n    card.className='summary-card';\n    const daily=getDailyTotal(site.id), monthly=daily*30;\n    let rows='';\n    ['adsettra','monetag','signup'].forEach(net=>{\n      if(!site.networks.includes(net)) return;\n      const d=parseFloat(earnings[site.id][net])||0, m=d*30;\n      rows+=`<div class=\"summary-row\">\n        <span class=\"label\">${NET_LABEL[net]}<\/span>\n        <span class=\"val${m===0?' zero':curMode==='inr'?' inr-col':''}\">${fmtV(m)}\/mo<\/span>\n      <\/div>`;\n    });\n    const sNote=site.shared?`<div style=\"font-size:11px;color:var(--text3);margin-bottom:4px;padding-bottom:4px;border-bottom:1px solid var(--border)\">\u26a1 Single shared account<\/div>`:'';\n    rows+=`<div class=\"summary-row\" style=\"font-weight:600;margin-top:2px\">\n      <span class=\"label\" style=\"color:var(--text)\">Total<\/span>\n      <span class=\"val${monthly===0?' zero':curMode==='inr'?' inr-col':''}\">${fmtV(monthly)}\/mo<\/span>\n    <\/div>`;\n    card.innerHTML=`<div class=\"summary-card-header ${SITE_CLS[site.id]}\">${SITE_ICON[site.id]} ${site.name}${site.shared?` <span style=\"font-size:10px;font-weight:400;opacity:.7\">(shared)<\/span>`:''}<\/div>\n      <div class=\"summary-card-body\">${sNote}${rows}<\/div>`;\n    grid.appendChild(card);\n  });\n  const grand=document.createElement('div');\n  const adT=getNetTotal('adsettra')*30,moT=getNetTotal('monetag')*30,sgT=getNetTotal('signup')*30,gT=adT+moT+sgT;\n  const im=curMode==='inr';\n  grand.className='grand-card'+(im?' inr-col':'');\n  grand.innerHTML=`<div class=\"grand-card-header${im?' inr-col':''}\">\ud83c\udfc6 Grand Monthly Total \u2014 ${im?'\u20b9 INR':'$ USD'}<\/div>\n    <div class=\"grand-card-body\">\n      <div class=\"grand-metric\"><div class=\"gm-label\">Adsettra<\/div><div class=\"gm-val${im?' inr-col':''}\">${fmtV(adT)}<\/div><div class=\"gm-sub\">all sites \u00d730<\/div><\/div>\n      <div class=\"grand-metric\"><div class=\"gm-label\">Monetag<\/div><div class=\"gm-val${im?' inr-col':''}\">${fmtV(moT)}<\/div><div class=\"gm-sub\">all sites \u00d730<\/div><\/div>\n      <div class=\"grand-metric\"><div class=\"gm-label\">Signup<\/div><div class=\"gm-val${im?' inr-col':''}\">${fmtV(sgT)}<\/div><div class=\"gm-sub\">all sites \u00d730<\/div><\/div>\n      <div class=\"grand-metric\" style=\"border-right:none\"><div class=\"gm-label\">Grand Total<\/div><div class=\"gm-val${im?' inr-col':''}\" style=\"font-size:22px\">${fmtV(gT)}<\/div><div class=\"gm-sub\">combined monthly<\/div><\/div>\n    <\/div>`;\n  grid.appendChild(grand);\n}\n\n\/* \u2500\u2500\u2500 EXPENSE FUNCTIONS \u2500\u2500\u2500 *\/\nfunction toggleAddForm(sec){\n  const f=document.getElementById('form-'+sec);\n  f.classList.toggle('open');\n  if(f.classList.contains('open')) document.getElementById('name-'+sec).focus();\n}\nfunction closeForm(sec){\n  document.getElementById('form-'+sec).classList.remove('open');\n  document.getElementById('name-'+sec).value='';\n  document.getElementById('amt-'+sec).value='';\n}\n\nfunction addExpense(sec){\n  const name=document.getElementById('name-'+sec).value.trim();\n  const amt=parseFloat(document.getElementById('amt-'+sec).value)||0;\n  if(!name){ document.getElementById('name-'+sec).focus(); return; }\n  if(amt<=0){ document.getElementById('amt-'+sec).focus(); return; }\n  const item={id: Date.now()+'_'+Math.random().toString(36).slice(2), name, amt};\n  expenses[sec].push(item);\n  saveExpenses();\n  closeForm(sec);\n  renderExpenseList(sec);\n  updateExpTotals();\n  updateStats();\n  updateExpGrand();\n}\n\nfunction deleteExpense(sec, id){\n  expenses[sec]=expenses[sec].filter(i=>i.id!==id);\n  saveExpenses();\n  renderExpenseList(sec);\n  updateExpTotals();\n  updateStats();\n  updateExpGrand();\n}\n\nfunction renderExpenseList(sec){\n  const list=document.getElementById('list-'+sec);\n  if(expenses[sec].length===0){\n    list.innerHTML=`<div class=\"exp-empty\">No items yet \u2014 click \"+ Add\" to start<\/div>`;\n    return;\n  }\n  list.innerHTML=expenses[sec].map(item=>`\n    <div class=\"exp-item\">\n      <span class=\"exp-item-name\">${escHtml(item.name)}<\/span>\n      <span class=\"exp-item-amt\">${fmtINR(item.amt)}<\/span>\n      <button class=\"exp-item-del\" onclick=\"deleteExpense('${sec}','${item.id}')\" title=\"Delete\">\u2715<\/button>\n    <\/div>`).join('');\n}\n\nfunction renderAllExpenseLists(){\n  ['emi','rech','web','other'].forEach(renderExpenseList);\n}\n\nfunction updateExpTotals(){\n  ['emi','rech','web','other'].forEach(sec=>{\n    const tot=getSectionTotal(sec);\n    document.getElementById('foot-'+sec).textContent=fmtINR(tot);\n  });\n}\n\nfunction updateExpGrand(){\n  ['emi','rech','web','other'].forEach(sec=>{\n    document.getElementById('eg-'+sec).textContent=fmtINR(getSectionTotal(sec));\n  });\n  const totalINR=getTotalExpINR(), monthly=getTotalDaily()*30;\n  const netUSD=monthly-totalINR\/inrRate, netINR=monthly*inrRate-totalINR;\n  const netEl=document.getElementById('eg-net'), netSub=document.getElementById('eg-net-sub');\n  if(deductOn){\n    netEl.textContent=curMode==='inr'?('\u20b9'+Math.round(netINR).toLocaleString('en-IN')):('$'+netUSD.toFixed(2));\n    netSub.textContent='gross \u2212 expenses';\n  } else {\n    netEl.textContent='\u2014';\n    netSub.textContent='enable \ud83d\udc41 to calculate';\n  }\n}\n\nfunction toggleDeduct(){\n  deductOn=!deductOn;\n  try{localStorage.setItem('deductOn',deductOn?'1':'0');}catch(e){}\n  const tog=document.getElementById('eyeToggle');\n  tog.classList.toggle('active',deductOn);\n  document.getElementById('eyeStatus').textContent=deductOn?'ON':'OFF';\n  document.getElementById('eyeIcon').textContent=deductOn?'\ud83d\udc41':'\ud83d\udc41';\n  updateStats();\n  updateExpGrand();\n}\n\nfunction escHtml(s){ return s.replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;'); }\n\n\/* \u2500\u2500\u2500 CURRENCY \u2500\u2500\u2500 *\/\nfunction setCurrency(mode){\n  curMode=mode;\n  document.getElementById('btnUSD').className='cur-btn'+(mode==='usd'?' active-usd':'');\n  document.getElementById('btnINR').className='cur-btn'+(mode==='inr'?' active-inr':'');\n  const thBtn=document.getElementById('thCurBtn');\n  thBtn.className='th-cur-btn '+(mode==='usd'?'usd':'inr');\n  thBtn.textContent=mode==='usd'?'$ USD':'\u20b9 INR';\n  const badge=document.getElementById('curBadge');\n  badge.className='cur-badge '+(mode==='usd'?'usd':'inr');\n  badge.textContent=mode==='usd'?'Showing in $ USD':'Showing in \u20b9 INR';\n  updateAllRows(); updateStats();\n  if(document.getElementById('tab-summary').classList.contains('active')) buildSummary();\n  updateExpGrand();\n}\n\nfunction onRateChange(){\n  const v=parseFloat(document.getElementById('rateInput').value)||93;\n  inrRate=v;\n  try{localStorage.setItem('earningsINRrate',v);}catch(e){}\n  if(curMode==='inr'||deductOn){ updateAllRows(); updateStats(); updateExpGrand(); }\n}\n\n\/* \u2500\u2500\u2500 TABS \u2500\u2500\u2500 *\/\nfunction switchTab(tab){\n  document.querySelectorAll('.tab-btn').forEach((b,i)=>{\n    b.classList.remove('active');\n    if((i===0&&tab==='grid')||(i===1&&tab==='summary')||(i===2&&tab==='expenses')) b.classList.add('active');\n  });\n  ['grid','summary','expenses'].forEach(t=>{\n    document.getElementById('tab-'+t).classList.toggle('active',t===tab);\n  });\n  if(tab==='summary') buildSummary();\n  if(tab==='expenses'){ renderAllExpenseLists(); updateExpTotals(); updateExpGrand(); }\n}\n\nfunction filterRows(q){\n  document.querySelectorAll('#earningsBody tr').forEach(tr=>{\n    tr.style.display=tr.dataset.site.includes(q.toLowerCase())?'':'none';\n  });\n}\nfunction updateMonthLabel(){\n  document.getElementById('month-label').textContent=document.getElementById('monthSelect').value;\n}\n\n\/* \u2500\u2500\u2500 INIT \u2500\u2500\u2500 *\/\nbuildTable();\nupdateStats();\nif(deductOn){ document.getElementById('eyeToggle').classList.add('active'); document.getElementById('eyeStatus').textContent='ON'; }\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udcb0 Earnings Tracker \ud83d\udcb0 Earnings Tracker 4 websites \u00b7 3 ad networks \u00b7 May 2026 $1 = \u20b9 $ USD [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-203","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/arenabolt.com\/index.php\/wp-json\/wp\/v2\/pages\/203","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arenabolt.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/arenabolt.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/arenabolt.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/arenabolt.com\/index.php\/wp-json\/wp\/v2\/comments?post=203"}],"version-history":[{"count":2,"href":"https:\/\/arenabolt.com\/index.php\/wp-json\/wp\/v2\/pages\/203\/revisions"}],"predecessor-version":[{"id":206,"href":"https:\/\/arenabolt.com\/index.php\/wp-json\/wp\/v2\/pages\/203\/revisions\/206"}],"wp:attachment":[{"href":"https:\/\/arenabolt.com\/index.php\/wp-json\/wp\/v2\/media?parent=203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}