{"id":7,"date":"2026-10-06T11:59:15","date_gmt":"2026-10-06T11:59:15","guid":{"rendered":"https:\/\/qipqop.com\/tiktok\/qipqop-dashboard\/"},"modified":"2026-10-06T11:59:15","modified_gmt":"2026-10-06T11:59:15","slug":"qipqop-dashboard","status":"publish","type":"page","link":"https:\/\/qipqop.com\/tiktok\/qipqop-dashboard\/","title":{"rendered":"QipQop Dashboard"},"content":{"rendered":"        <style>.tlp-md{display:flex;min-height:calc(100vh - 80px);font-family:var(--tlp-font,'Inter',system-ui,sans-serif);max-width:1600px;margin:0 auto;}.tlp-md-side{width:200px;flex-shrink:0;background:var(--tlp-bg2,#f8fafc);border-right:1px solid var(--tlp-border,#e2e8f0);position:sticky;top:0;height:calc(100vh - 80px);overflow-y:auto;}.tlp-md-side::-webkit-scrollbar{width:4px;}.tlp-md-side::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px;}.tlp-md-logo{padding:14px;border-bottom:1px solid var(--tlp-border,#e2e8f0);}.tlp-md-logo a{font-size:15px;font-weight:900;color:var(--tlp-text,#1e293b);text-decoration:none;}.tlp-md-grp{padding:4px 0;}.tlp-md-grp-title{padding:6px 14px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tlp-text4,#94a3b8);}.tlp-md-item{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:12px;font-weight:500;color:var(--tlp-text3,#64748b);text-decoration:none;border-left:3px solid transparent;transition:all .12s;}.tlp-md-item:hover{background:var(--tlp-bg3,#f1f5f9);color:var(--tlp-text,#1e293b);}.tlp-md-body{flex:1;padding:20px;overflow-y:auto;background:var(--tlp-card,#fff);min-width:0;}.tlp-md-mob-btn{display:none;position:fixed;bottom:20px;right:20px;z-index:9998;background:#4f46e5;color:#fff;border:none;border-radius:50%;width:48px;height:48px;font-size:20px;cursor:pointer;box-shadow:0 4px 16px rgba(79,70,229,.4);}.tlp-md-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:9997;}@media(max-width:768px){.tlp-md-side{position:fixed;left:0;top:0;bottom:0;z-index:9999;transform:translateX(-100%);transition:transform .3s;width:240px;}.tlp-md-side.open{transform:translateX(0);}.tlp-md-overlay.open{display:block;}.tlp-md-mob-btn{display:block;}.tlp-md-body{padding:14px;}}<\/style>\n        <button class=\"tlp-md-mob-btn\" onclick=\"document.getElementById('tlp-md-g-side').classList.add('open');document.getElementById('tlp-md-g-overlay').classList.add('open');\">\u2630<\/button>\n        <div class=\"tlp-md-overlay\" id=\"tlp-md-g-overlay\" onclick=\"document.getElementById('tlp-md-g-side').classList.remove('open');this.classList.remove('open');\"><\/div>\n        <div class=\"tlp-md\">\n            <div class=\"tlp-md-side\" id=\"tlp-md-g-side\">\n                <div class=\"tlp-md-logo\"><a href=\"https:\/\/qipqop.com\/tiktok\/\">\ud83c\udfb5 QipQop<\/a><\/div>\n                                <!-- Mini Stats -->\n                <div style=\"padding:10px 14px;display:grid;grid-template-columns:1fr 1fr;gap:6px;\">\n                    <div style=\"background:var(--tlp-bg3,#f1f5f9);border-radius:8px;padding:8px;text-align:center;\">\n                        <div style=\"font-size:14px;font-weight:900;color:#16a34a;\">65+<\/div>\n                        <div style=\"font-size:8px;color:var(--tlp-text4,#94a3b8);\">Accounts<\/div>\n                    <\/div>\n                    <div style=\"background:var(--tlp-bg3,#f1f5f9);border-radius:8px;padding:8px;text-align:center;\">\n                        <div style=\"font-size:14px;font-weight:900;color:#3b82f6;\">400+<\/div>\n                        <div style=\"font-size:8px;color:var(--tlp-text4,#94a3b8);\">Users<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"tlp-md-grp\">\n                    <div class=\"tlp-md-grp-title\">EXPLORE<\/div>\n                    <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/\" class=\"tlp-md-item\"><span style=\"font-size:14px;width:20px;text-align:center;\">\ud83d\uded2<\/span>Marketplace<\/a>\n                    <a href=\"https:\/\/qipqop.com\/tiktok\/tiktok-accounts\/\" class=\"tlp-md-item\"><span style=\"font-size:14px;width:20px;text-align:center;\">\ud83c\udfb5<\/span>Browse Accounts<\/a>\n                    <a href=\"https:\/\/qipqop.com\/tiktok\/follower-boost\/\" class=\"tlp-md-item\"><span style=\"font-size:14px;width:20px;text-align:center;\">\ud83d\ude80<\/span>Buy Followers<\/a>\n                    <a href=\"https:\/\/qipqop.com\/tiktok\/reviews\/\" class=\"tlp-md-item\"><span style=\"font-size:14px;width:20px;text-align:center;\">\u2b50<\/span>Reviews<\/a>\n                <\/div>\n                <div class=\"tlp-md-grp\">\n                    <div class=\"tlp-md-grp-title\">CATEGORIES<\/div>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=tiktok\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83c\udfb5<\/span><span style=\"font-size:11px;\">TikTok Accounts<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">39+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=instagram\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83d\udcf8<\/span><span style=\"font-size:11px;\">Instagram Accounts<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">37+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=facebook\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83d\udcd8<\/span><span style=\"font-size:11px;\">Facebook Pages<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">38+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=youtube\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83c\udfac<\/span><span style=\"font-size:11px;\">YouTube Channels<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">39+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=twitter\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83d\udc26<\/span><span style=\"font-size:11px;\">Twitter \/ X Accounts<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">31+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=snapchat\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83d\udc7b<\/span><span style=\"font-size:11px;\">Snapchat Accounts<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">24+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=onlyfans\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83d\udd25<\/span><span style=\"font-size:11px;\">OnlyFans Accounts<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">24+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=digital\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83d\udcbb<\/span><span style=\"font-size:11px;\">Digital Products<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">33+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=services\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83d\udd27<\/span><span style=\"font-size:11px;\">Services<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">28+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=physical\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83d\udce6<\/span><span style=\"font-size:11px;\">Physical Products<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">36+<\/span>\n                    <\/a>\n                                        <a href=\"https:\/\/qipqop.com\/tiktok\/marketplace\/?category=other\" class=\"tlp-md-item\" style=\"justify-content:space-between;\">\n                        <span style=\"display:flex;align-items:center;gap:6px;\"><span style=\"font-size:13px;\">\ud83c\udff7\ufe0f<\/span><span style=\"font-size:11px;\">Other<\/span><\/span>\n                        <span style=\"font-size:9px;background:var(--tlp-bg3,#e2e8f0);padding:1px 6px;border-radius:6px;color:var(--tlp-text4,#64748b);\">38+<\/span>\n                    <\/a>\n                                    <\/div>\n                <div class=\"tlp-md-grp\">\n                    <div class=\"tlp-md-grp-title\">GET STARTED<\/div>\n                    <a href=\"#\" class=\"tlp-md-item tlp-open-register\" data-role=\"renter\" style=\"color:var(--tlp-text,#1e293b);font-weight:600;\"><span style=\"font-size:14px;width:20px;text-align:center;\">\ud83c\udff7<\/span>Register as Renter<\/a>\n                    <a href=\"#\" class=\"tlp-md-item tlp-open-register\" data-role=\"leaser\" style=\"color:var(--tlp-text,#1e293b);font-weight:600;\"><span style=\"font-size:14px;width:20px;text-align:center;\">\ud83c\udfe0<\/span>Register as Leaser<\/a>\n                    <a href=\"#\" class=\"tlp-md-item tlp-open-register\" data-role=\"farmer\" style=\"color:var(--tlp-text,#1e293b);font-weight:600;\"><span style=\"font-size:14px;width:20px;text-align:center;\">\u26a1<\/span>Register as Sparker<\/a>\n                    <a href=\"#\" class=\"tlp-md-item tlp-open-register\" data-role=\"buy_followers\" style=\"color:var(--tlp-text,#1e293b);font-weight:600;\"><span style=\"font-size:14px;width:20px;text-align:center;\">\ud83d\ude80<\/span>Buy Followers<\/a>\n                    <a href=\"#\" class=\"tlp-md-item tlp-open-login\" style=\"color:#4f46e5;font-weight:700;\"><span style=\"font-size:14px;width:20px;text-align:center;\">\ud83d\udd11<\/span>Login<\/a>\n                <\/div>\n                <div class=\"tlp-md-grp\">\n                    <div class=\"tlp-md-grp-title\">INFO<\/div>\n                    <a href=\"https:\/\/qipqop.com\/tiktok\/faq\/\" class=\"tlp-md-item\"><span style=\"font-size:14px;width:20px;text-align:center;\">\u2753<\/span>How It Works<\/a>\n                    <a href=\"https:\/\/qipqop.com\/tiktok\/contact-us\/\" class=\"tlp-md-item\"><span style=\"font-size:14px;width:20px;text-align:center;\">\ud83d\udcde<\/span>Contact<\/a>\n                    <a href=\"https:\/\/qipqop.com\/tiktok\/terms-of-service\/\" class=\"tlp-md-item\"><span style=\"font-size:14px;width:20px;text-align:center;\">\ud83d\udcc4<\/span>Terms<\/a>\n                <\/div>\n            <\/div>\n            <div class=\"tlp-md-body\">\n                    <style>\n    .tlp-hero{background:linear-gradient(135deg,#16a34a 0%,#15803d 50%,#166534 100%);color:#fff;padding:48px 24px;text-align:center;border-radius:0 0 24px 24px;margin-bottom:32px;}\n    .tlp-hero h1{font-size:32px;font-weight:900;margin:0 0 8px;letter-spacing:-.5px;}\n    .tlp-hero p{font-size:15px;opacity:.9;margin:0 0 20px;}\n    .tlp-hero-search{max-width:480px;margin:0 auto 20px;position:relative;}\n    .tlp-hero-search input{width:100%;padding:14px 20px 14px 44px;border:2px solid rgba(255,255,255,.3);border-radius:14px;font-size:14px;background:rgba(255,255,255,.15);color:#fff;font-family:inherit;backdrop-filter:blur(10px);}\n    .tlp-hero-search input::placeholder{color:rgba(255,255,255,.6);}\n    .tlp-hero-search input:focus{outline:none;border-color:rgba(255,255,255,.6);background:rgba(255,255,255,.2);}\n    .tlp-hero-search span{position:absolute;left:16px;top:50%;transform:translateY(-50%);font-size:16px;}\n    .tlp-hero-results{position:absolute;top:100%;left:0;right:0;background:#fff;border-radius:12px;box-shadow:0 12px 32px rgba(0,0,0,.15);margin-top:4px;max-height:300px;overflow-y:auto;display:none;z-index:10;}\n    .tlp-hero-results.open{display:block;}\n    .tlp-hero-results a{display:flex;align-items:center;gap:10px;padding:10px 16px;text-decoration:none;color:var(--tlp-text2,#334155);font-size:13px;transition:background .1s;}\n    .tlp-hero-results a:hover{background:var(--tlp-bg3,#f1f5f9);}\n    .tlp-hero-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}\n    .tlp-hero-btns a,.tlp-hero-btns button{padding:12px 28px;border-radius:12px;font-weight:700;font-size:14px;text-decoration:none;transition:all .2s;cursor:pointer;border:none;font-family:inherit;}\n    .tlp-hero-btns a:hover,.tlp-hero-btns button:hover{transform:translateY(-2px);}\n    .tlp-role-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;max-width:100%;margin:0 auto;padding:0;}\n    .tlp-role-card{background:var(--tlp-card,#fff);border-radius:16px;padding:18px;box-shadow:0 4px 16px var(--tlp-sh,rgba(0,0,0,.06));border:1px solid var(--tlp-card-b,#f1f5f9);transition:all .2s;text-align:center;}\n    .tlp-role-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.1);}\n    .tlp-role-card h2{font-size:16px;margin:0 0 6px;font-weight:800;}\n    .tlp-role-card p{font-size:11px;color:var(--tlp-text3,#64748b);line-height:1.5;margin:0 0 10px;}\n    .tlp-role-card ul{list-style:none;padding:0;margin:0 0 12px;text-align:left;}\n    .tlp-role-card li{font-size:10px;padding:3px 0;color:var(--tlp-text2,#334155);display:flex;align-items:center;gap:6px;}\n    .tlp-role-btns{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;}\n    .tlp-role-btns button{padding:7px 14px;border:none;border-radius:8px;font-weight:700;font-size:11px;cursor:pointer;transition:all .2s;font-family:inherit;}\n    .tlp-role-btns button:hover{transform:translateY(-1px);filter:brightness(1.1);}\n    @media(max-width:640px){.tlp-hero h1{font-size:24px;}.tlp-hero{padding:32px 16px;}.tlp-role-grid{padding:0 8px;grid-template-columns:repeat(2,1fr);}}\n    <\/style>\n    <!-- GREEN HERO -->\n    <div class=\"tlp-hero\">\n        <h1>Qip Qop (Q.Q)<\/h1>\n        <p>Buy &amp; Sell Social Media Accounts, Digital Products, Services &amp; More<\/p>\n        <div class=\"tlp-hero-search\">\n            <span>\ud83d\udd0d<\/span>\n            <input type=\"text\" id=\"tlp-hero-search\" placeholder=\"Search accounts, emails, products, services...\" autocomplete=\"off\" readonly onfocus=\"this.removeAttribute('readonly')\" data-lpignore=\"true\" data-1p-ignore=\"true\" data-form-type=\"other\" name=\"qq_nofill_hero\"\/>\n            <div class=\"tlp-hero-results\" id=\"tlp-hero-results\"><\/div>\n        <\/div>\n        <!-- V102: HOT ACTION BUTTONS \u2014 urgency-driven CTAs -->\n        <div class=\"tlp-hero-btns\" style=\"margin-bottom:16px;\">\n            <a class=\"tlp-open-register\" data-role=\"buyer\" style=\"background:linear-gradient(135deg,#f97316,#ec4899);color:#fff;box-shadow:0 4px 20px rgba(249,115,22,.4);animation:tlp-hero-glow 2s ease-in-out infinite;\">\ud83d\udce7 Get Free Email Accounts<\/a>\n            <a class=\"tlp-open-register\" data-role=\"buyer\" style=\"background:#fff;color:#166534;\">\ud83c\udfb5 Buy Social Media Accounts<\/a>\n            <a class=\"tlp-open-register\" data-role=\"buy_followers\" style=\"background:rgba(255,255,255,.2);color:#fff;border:2px solid rgba(255,255,255,.4);\">\ud83d\ude80 Buy 1,200+ Followers<\/a>\n        <\/div>\n        <div class=\"tlp-hero-btns\">\n            <a class=\"tlp-open-register\" data-role=\"leaser\" style=\"background:rgba(255,255,255,.12);color:#fff;padding:10px 20px;font-size:12px;\">\ud83d\udcb0 Register as Seller<\/a>\n            <a class=\"tlp-open-register\" data-role=\"renter\" style=\"background:rgba(255,255,255,.12);color:#fff;padding:10px 20px;font-size:12px;\">\ud83c\udff7\ufe0f Register as Renter<\/a>\n            <a class=\"tlp-open-register\" data-role=\"farmer\" style=\"background:rgba(255,255,255,.12);color:#fff;padding:10px 20px;font-size:12px;\">\u26a1 Register as Sparker<\/a>\n            <a class=\"tlp-open-login\" style=\"background:rgba(255,255,255,.08);color:#fff;padding:10px 20px;font-size:12px;\">\ud83d\udd11 Login<\/a>\n        <\/div>\n        <!-- V102: Urgency countdown -->\n                <div style=\"margin-top:16px;display:inline-flex;align-items:center;gap:8px;background:rgba(0,0,0,.25);padding:8px 18px;border-radius:12px;font-size:11px;font-weight:700;backdrop-filter:blur(4px);\">\n            <span style=\"background:#ef4444;padding:2px 6px;border-radius:4px;font-size:9px;animation:tlp-live-pulse 1.5s ease-in-out infinite;\">\ud83d\udd34 LIVE<\/span>\n            <span>Limited offer ends in <span id=\"tlp-hero-cd\" style=\"font-weight:900;color:#fbbf24;\">7h 6m<\/span><\/span>\n            <span style=\"opacity:.5;\">\u2022<\/span>\n            <span>New listings added daily. Get started now!<\/span>\n        <\/div>\n    <\/div>\n    <style>\n    @keyframes tlp-hero-glow{0%,100%{box-shadow:0 4px 20px rgba(249,115,22,.4);}50%{box-shadow:0 4px 30px rgba(236,72,153,.5);}}\n    <\/style>\n    <script>\n    (function(){var s=25574;var el=document.getElementById('tlp-hero-cd');if(!el)return;setInterval(function(){if(s<=0)return;s--;var h=Math.floor(s\/3600),m=Math.floor((s%3600)\/60);el.textContent=h+'h '+m+'m';},1000);})();\n    <\/script>\n    <script>\n    jQuery(document).ready(function($){\n        var searchTimer;\n        $('#tlp-hero-search').on('input',function(){\n            var q=$(this).val().trim();\n            clearTimeout(searchTimer);\n            if(q.length<2){$('#tlp-hero-results').removeClass('open').empty();return;}\n            searchTimer=setTimeout(function(){\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'global_live_search',query:q,tlp_ajax_nonce:tlp_ajax.nonce},function(r){\n                    if(r&&r.success&&r.data.html){$('#tlp-hero-results').html(r.data.html).addClass('open');}else{$('#tlp-hero-results').html('<div style=\"padding:16px;text-align:center;color:var(--tlp-text4,#94a3b8);font-size:12px;\">No results for \"'+q+'\"<\/div>').addClass('open');}\n                });\n            },250);\n        });\n        \/\/ Also open global search overlay on Ctrl+K\n        $('#tlp-hero-search').on('focus',function(){\n            if(typeof document.getElementById('tlp-gsb')!=='undefined'){\/* focus is here *\/}\n        });\n        $(document).on('click',function(e){if(!$(e.target).closest('.tlp-hero-search').length)$('#tlp-hero-results').removeClass('open');});\n    });\n    <\/script>\n    \n        <!-- LIVE ACTIVITY TICKER -->\n    <div style=\"background:#0f172a;color:#e2e8f0;padding:10px 0;border-radius:12px;margin:24px auto 0;max-width:1100px;overflow:hidden;position:relative;font-family:'Inter',system-ui,sans-serif;border:1px solid #334155;\">\n        <div style=\"display:flex;align-items:center;gap:10px;padding:0 14px;\">\n            <span style=\"font-size:14px;flex-shrink:0;\">\ud83d\udce1<\/span>\n            <span style=\"background:#ef4444;color:#fff;padding:2px 8px;border-radius:4px;font-size:9px;font-weight:800;letter-spacing:.5px;flex-shrink:0;animation:tlp-live-pulse 1.5s ease-in-out infinite;\">\u25cf LIVE<\/span>\n            <div style=\"flex:1;overflow:hidden;white-space:nowrap;\">\n                <div id=\"tlp-pub-ticker-inner\" style=\"display:inline-block;font-size:13px;font-weight:500;\">\n                    \ud83d\ude80 B***n ordered 3,600 followers \u2014 33 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 C****t ordered 1,200 followers \u2014 18 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 F***a ordered 7,200 followers \u2014 2 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 N*****a ordered 12,000 followers \u2014 1 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 C****t ordered 9,600 followers \u2014 26 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udce7 M***a created 9 new email accounts \u2014 9 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83c\udf89 N***i approved as new seller \u2014 20 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 N******a ordered 9,600 followers \u2014 36 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 P***a ordered 7,200 followers \u2014 8 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udcf8 L****n sold an Instagram account for KES 2,800 \u2014 4 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udce1 N****a ordered 3,500 live viewers for KES 50 \u2014 17 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udccb K****i posted a new account (120,000 followers) \u2014 10 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udcb3 C****t withdrew KES 2,000 to M-Pesa \u2014 12 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 W*****i ordered 4,800 followers \u2014 9 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 B***n ordered 3,600 followers \u2014 33 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 C****t ordered 1,200 followers \u2014 18 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 F***a ordered 7,200 followers \u2014 2 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 N*****a ordered 12,000 followers \u2014 1 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 C****t ordered 9,600 followers \u2014 26 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udce7 M***a created 9 new email accounts \u2014 9 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83c\udf89 N***i approved as new seller \u2014 20 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 N******a ordered 9,600 followers \u2014 36 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 P***a ordered 7,200 followers \u2014 8 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udcf8 L****n sold an Instagram account for KES 2,800 \u2014 4 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udce1 N****a ordered 3,500 live viewers for KES 50 \u2014 17 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udccb K****i posted a new account (120,000 followers) \u2014 10 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\udcb3 C****t withdrew KES 2,000 to M-Pesa \u2014 12 min ago <span style=\"opacity:.35;padding:0 12px;font-size:10px;font-weight:800;letter-spacing:1px;\">QipQop.com<\/span> \ud83d\ude80 W*****i ordered 4,800 followers \u2014 9 min ago                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <style>\n    @keyframes tlp-pub-scroll{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}\n    @keyframes tlp-live-pulse{0%,100%{opacity:1;}50%{opacity:.5;}}\n    @keyframes tlp-count-pulse{0%,100%{transform:scale(1);}50%{transform:scale(1.05);}}\n    #tlp-pub-ticker-inner:hover{animation-play-state:paused;}\n    <\/style>\n    <script>\n    (function(){\n        var el=document.getElementById('tlp-pub-ticker-inner');if(!el)return;\n        var baseSpeed=45;\n        requestAnimationFrame(function(){\n            var w=el.scrollWidth\/2;\n            var pxPerSec=Math.max(10,3000\/Math.max(10,baseSpeed));\n            var dur=Math.max(10,w\/pxPerSec);\n            el.style.animation='tlp-pub-scroll '+dur.toFixed(1)+'s linear infinite';\n        });\n    })();\n    <\/script>\n    \n    <!-- STATS BAR + LIMITED OFFER -->\n    <div style=\"max-width:1100px;margin:16px auto 0;padding:0 16px;font-family:'Inter',system-ui,sans-serif;\">\n        <!-- Stats grid -->\n        <div style=\"display:flex;flex-wrap:wrap;justify-content:center;gap:20px;margin-bottom:16px;\">\n            <div style=\"text-align:center;\"><div style=\"font-size:24px;font-weight:900;color:var(--tlp-text,#e2e8f0);\">62+<\/div><div style=\"font-size:10px;color:var(--tlp-text3,#94a3b8);font-weight:600;\">Active Accounts<\/div><\/div>\n            <div style=\"text-align:center;\"><div style=\"font-size:24px;font-weight:900;color:var(--tlp-text,#e2e8f0);\">312+<\/div><div style=\"font-size:10px;color:var(--tlp-text3,#94a3b8);font-weight:600;\">Registered Users<\/div><\/div>\n            <div style=\"text-align:center;\"><div style=\"font-size:24px;font-weight:900;color:var(--tlp-text,#e2e8f0);\">98+<\/div><div style=\"font-size:10px;color:var(--tlp-text3,#94a3b8);font-weight:600;\">Leases Completed<\/div><\/div>\n            <div style=\"text-align:center;\"><div style=\"font-size:24px;font-weight:900;color:#f97316;\">280+<\/div><div style=\"font-size:10px;color:var(--tlp-text3,#94a3b8);font-weight:600;\">Boost Orders Today<\/div><\/div>\n            <div style=\"text-align:center;\"><div style=\"font-size:24px;font-weight:900;color:#16a34a;\">KES 670,706<\/div><div style=\"font-size:10px;color:var(--tlp-text3,#94a3b8);font-weight:600;\">Coins Traded<\/div><\/div>\n        <\/div>\n        \n        <!-- Limited time offer \u2014 animated gradient -->\n        <style>@keyframes tlp-grad-slide{0%{background-position:0% 50%;}50%{background-position:100% 50%;}100%{background-position:0% 50%;}}<\/style>\n        <div style=\"background:linear-gradient(270deg,#f97316,#ec4899,#8b5cf6,#f97316);background-size:400% 400%;animation:tlp-grad-slide 8s ease infinite;border-radius:16px;padding:20px 24px;text-align:center;color:#fff;\">\n            <div style=\"font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;opacity:.85;margin-bottom:6px;\">\u26a1 Limited Time Offer \u2014 Ends Tonight \u26a1<\/div>\n            <div style=\"font-size:20px;font-weight:900;margin-bottom:8px;\">Get 1,200+ Followers from <span style=\"text-decoration:line-through;opacity:.5;font-size:16px;\">KES 1,500<\/span> <span style=\"font-size:26px;\">KES 1,200<\/span><\/div>\n            <div style=\"display:flex;justify-content:center;gap:10px;margin-bottom:12px;\">\n                <div style=\"background:rgba(0,0,0,.25);padding:8px 14px;border-radius:10px;min-width:55px;backdrop-filter:blur(4px);\"><div id=\"tlp-cd-h\" style=\"font-size:22px;font-weight:900;letter-spacing:1px;\">07<\/div><div style=\"font-size:8px;opacity:.6;text-transform:uppercase;letter-spacing:1px;\">Hours<\/div><\/div>\n                <div style=\"font-size:22px;font-weight:900;padding-top:8px;opacity:.5;\">:<\/div>\n                <div style=\"background:rgba(0,0,0,.25);padding:8px 14px;border-radius:10px;min-width:55px;backdrop-filter:blur(4px);\"><div id=\"tlp-cd-m\" style=\"font-size:22px;font-weight:900;letter-spacing:1px;\">06<\/div><div style=\"font-size:8px;opacity:.6;text-transform:uppercase;letter-spacing:1px;\">Mins<\/div><\/div>\n                <div style=\"font-size:22px;font-weight:900;padding-top:8px;opacity:.5;\">:<\/div>\n                <div style=\"background:rgba(0,0,0,.25);padding:8px 14px;border-radius:10px;min-width:55px;backdrop-filter:blur(4px);\"><div id=\"tlp-cd-s\" style=\"font-size:22px;font-weight:900;letter-spacing:1px;\">00<\/div><div style=\"font-size:8px;opacity:.6;text-transform:uppercase;letter-spacing:1px;\">Secs<\/div><\/div>\n            <\/div>\n            <div style=\"display:flex;justify-content:center;gap:10px;flex-wrap:wrap;\">\n                <a href=\"https:\/\/qipqop.com\/tiktok\/follower-boost\/\" class=\"tlp-open-register\" data-role=\"buy_followers\" style=\"background:#fff;color:#7c3aed;padding:12px 28px;border-radius:12px;font-weight:800;font-size:14px;text-decoration:none;display:inline-block;box-shadow:0 4px 16px rgba(0,0,0,.15);\">\ud83d\ude80 Buy Followers Now<\/a>\n                <a href=\"https:\/\/qipqop.com\/tiktok\/tiktok-accounts\/\" style=\"background:rgba(255,255,255,.15);color:#fff;padding:12px 28px;border-radius:12px;font-weight:700;font-size:14px;text-decoration:none;display:inline-block;border:1px solid rgba(255,255,255,.3);\">\ud83d\udcf1 Browse Accounts<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n    <script>\n    (function(){var end=Math.floor(Date.now()\/1000)+25574;setInterval(function(){var left=Math.max(0,end-Math.floor(Date.now()\/1000));var h=Math.floor(left\/3600),m=Math.floor((left%3600)\/60),s=left%60;var eh=document.getElementById('tlp-cd-h'),em=document.getElementById('tlp-cd-m'),es=document.getElementById('tlp-cd-s');if(eh)eh.textContent=String(h).padStart(2,'0');if(em)em.textContent=String(m).padStart(2,'0');if(es)es.textContent=String(s).padStart(2,'0');},1000);})();\n    <\/script>\n        \n    <!-- ROLE CARDS -->\n    <div class=\"tlp-role-grid\">\n        <div class=\"tlp-role-card\" style=\"border-top:4px solid #3b82f6;\">\n            <h2 style=\"color:#3b82f6;\">\ud83c\udff7\ufe0f Renter<\/h2>\n            <p>Lease social media accounts for your content. Secure M-Pesa escrow, verified accounts.<\/p>\n            <ul><li>\u2705 Browse & lease accounts<\/li><li>\u2705 Secure chat with leasers<\/li><li>\u2705 Boost & promote accounts<\/li><li>\u2705 Access Spark Up & marketplace<\/li><\/ul>\n            <div class=\"tlp-role-btns\"><button class=\"tlp-open-register\" data-role=\"renter\" style=\"background:#3b82f6;color:#fff;\">Register as Renter<\/button><button class=\"tlp-open-login\" style=\"background:#f1f5f9;color:var(--tlp-text2,#334155);\">Login<\/button><\/div>\n        <\/div>\n        <div class=\"tlp-role-card\" style=\"border-top:4px solid #16a34a;\">\n            <h2 style=\"color:#16a34a;\">\ud83c\udfe0 Leaser<\/h2>\n            <p>List your social media accounts and earn. Get paid via M-Pesa after verification.<\/p>\n            <ul><li>\u2705 Post accounts for leasing<\/li><li>\u2705 Sell on the marketplace<\/li><li>\u2705 Auto-approved listings<\/li><li>\u2705 Withdraw to M-Pesa<\/li><\/ul>\n            <div class=\"tlp-role-btns\"><button class=\"tlp-open-register\" data-role=\"leaser\" style=\"background:#16a34a;color:#fff;\">Register as Leaser<\/button><button class=\"tlp-open-login\" style=\"background:#f1f5f9;color:var(--tlp-text2,#334155);\">Login<\/button><\/div>\n        <\/div>\n        <div class=\"tlp-role-card\" style=\"border-top:4px solid #7c3aed;\">\n            <h2 style=\"color:#7c3aed;\">\u26a1 Sparker<\/h2>\n            <p>Grow accounts from 0 to 1,200+ followers in 24h. Earn 300 coins per account sparked.<\/p>\n            <ul><li>\u26a1 Take accounts to grow<\/li><li>\u26a1 24-hour competitive sprints<\/li><li>\u26a1 Level up for more slots<\/li><li>\u26a1 Withdraw earnings anytime<\/li><\/ul>\n            <div class=\"tlp-role-btns\"><button class=\"tlp-open-register\" data-role=\"farmer\" style=\"background:#7c3aed;color:#fff;\">Register as Sparker<\/button><button class=\"tlp-open-login\" style=\"background:#f1f5f9;color:var(--tlp-text2,#334155);\">Login<\/button><\/div>\n        <\/div>\n        <div class=\"tlp-role-card\" style=\"border-top:4px solid #f97316;border:2px solid #fed7aa;\">\n            <h2 style=\"color:#f97316;\">\ud83d\ude80 Follower Buyer<\/h2>\n            <p>Buy 1,200+ real followers for any social media account. No approval needed.<\/p>\n            <ul><li>\ud83c\udf0d Any Country: from KES 1,200<\/li><li>\ud83c\uddf0\ud83c\uddea Kenya\/EA: from KES 1,990<\/li><li>\ud83d\udcf1 Pay via M-Pesa instantly<\/li><li>\u23f0 Delivered in 24\u201348 hours<\/li><\/ul>\n            <div class=\"tlp-role-btns\"><button class=\"tlp-open-register\" data-role=\"buy_followers\" style=\"background:#f97316;color:#fff;\">Register as Buyer<\/button><button class=\"tlp-open-login\" style=\"background:#f1f5f9;color:var(--tlp-text2,#334155);\">Login<\/button><\/div>\n        <\/div>\n    <\/div>\n        <div style=\"margin-top:20px;\">\n        <!-- V20: Marketplace entry card \u2014 replaces the embedded marketplace -->\n        <a href=\"https:\/\/qipqop.com\/tiktok\/tiktok-accounts\/\" style=\"display:block;text-decoration:none;background:linear-gradient(135deg,#1e1b4b,#312e81);border:1px solid rgba(99,102,241,.2);border-radius:16px;padding:24px;margin-bottom:12px;transition:all .2s;position:relative;overflow:hidden;\" onmouseover=\"this.style.transform='translateY(-2px)';this.style.boxShadow='0 8px 30px rgba(79,70,229,.2)'\" onmouseout=\"this.style.transform='';this.style.boxShadow=''\">\n            <div style=\"display:flex;align-items:center;gap:16px;flex-wrap:wrap;\">\n                <div style=\"font-size:42px;\">\ud83d\uded2<\/div>\n                <div style=\"flex:1;min-width:180px;\">\n                    <div style=\"font-size:18px;font-weight:800;color:#e0e7ff;\">Browse Marketplace<\/div>\n                    <div style=\"font-size:13px;color:#a5b4fc;margin-top:4px;\">Buy, sell & lease social media accounts across 10+ platforms<\/div>\n                <\/div>\n                <div style=\"display:flex;gap:12px;\">\n                    <div style=\"text-align:center;\"><div style=\"font-size:18px;font-weight:900;color:#34d399;\">65+<\/div><div style=\"font-size:9px;color:var(--tlp-text4,#94a3b8);\">Accounts<\/div><\/div>\n                    <div style=\"text-align:center;\"><div style=\"font-size:18px;font-weight:900;color:#60a5fa;\">400+<\/div><div style=\"font-size:9px;color:var(--tlp-text4,#94a3b8);\">Users<\/div><\/div>\n                <\/div>\n                <div style=\"font-size:22px;color:#818cf8;\">\u2192<\/div>\n            <\/div>\n        <\/a>\n\n        <!-- Quick action cards row -->\n        <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;\">\n            <a href=\"https:\/\/qipqop.com\/tiktok\/tiktok-accounts\/\" style=\"display:flex;align-items:center;gap:10px;padding:14px;background:var(--tlp-card,#fff);border:1px solid var(--tlp-border,#e2e8f0);border-radius:12px;text-decoration:none;transition:all .15s;\" onmouseover=\"this.style.borderColor='#4f46e5'\" onmouseout=\"this.style.borderColor=''\">\n                <span style=\"font-size:22px;\">\ud83c\udfb5<\/span>\n                <div><div style=\"font-size:12px;font-weight:700;color:var(--tlp-text,#1e293b);\">Buy Accounts<\/div><div style=\"font-size:9px;color:var(--tlp-text4,#94a3b8);\">TikTok, IG, YouTube & more<\/div><\/div>\n            <\/a>\n            <a href=\"https:\/\/qipqop.com\/tiktok\/follower-boost\/\" style=\"display:flex;align-items:center;gap:10px;padding:14px;background:var(--tlp-card,#fff);border:1px solid var(--tlp-border,#e2e8f0);border-radius:12px;text-decoration:none;transition:all .15s;\" onmouseover=\"this.style.borderColor='#16a34a'\" onmouseout=\"this.style.borderColor=''\">\n                <span style=\"font-size:22px;\">\ud83d\ude80<\/span>\n                <div><div style=\"font-size:12px;font-weight:700;color:var(--tlp-text,#1e293b);\">Boost Followers<\/div><div style=\"font-size:9px;color:var(--tlp-text4,#94a3b8);\">Get 1,200+ followers<\/div><\/div>\n            <\/a>\n            <a href=\"https:\/\/qipqop.com\/tiktok\/get-free-emails\/\" style=\"display:flex;align-items:center;gap:10px;padding:14px;background:var(--tlp-card,#fff);border:1px solid var(--tlp-border,#e2e8f0);border-radius:12px;text-decoration:none;transition:all .15s;\" onmouseover=\"this.style.borderColor='#f97316'\" onmouseout=\"this.style.borderColor=''\">\n                <span style=\"font-size:22px;\">\ud83d\udce7<\/span>\n                <div><div style=\"font-size:12px;font-weight:700;color:var(--tlp-text,#1e293b);\">Free Emails<\/div><div style=\"font-size:9px;color:var(--tlp-text4,#94a3b8);\">@qipqop.com email accounts<\/div><\/div>\n            <\/a>\n        <\/div>\n    <\/div>\n                <\/div>\n        <\/div>\n            <style>\n        \/* \u2550\u2550\u2550 V2.2: Global Lazy-Load Spinner for Action Buttons \u2550\u2550\u2550 *\/\n        .tlp-btn-loading{position:relative;color:transparent !important;pointer-events:none;}\n        .tlp-btn-loading::after{content:'';position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:tlpBtnSpin .6s linear infinite;}\n        @keyframes tlpBtnSpin{to{transform:rotate(360deg)}}\n        \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n         * QipQop Chat v51 \u2014 Persistent Bottom Chat Boxes\n         * Facebook Messenger style \u2014 fixed to bottom-right\n         * \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n        \/* Chat container \u2014 holds all open chat boxes at bottom-right *\/\n        #tlp-chat-dock{position:fixed;bottom:0;right:0;display:flex;flex-direction:row-reverse;align-items:flex-end;gap:8px;z-index:99998;padding:0 12px;pointer-events:none;}\n        #tlp-chat-dock > *{pointer-events:auto;}\n        \/* Individual chat box *\/\n        .tlp-cx{width:340px;background:#fff;border-radius:12px 12px 0 0;box-shadow:0 -4px 24px rgba(0,0,0,.15);font-family:'Inter',system-ui,sans-serif;display:flex;flex-direction:column;max-height:480px;overflow:hidden;transition:max-height .3s ease,box-shadow .3s;}\n        .tlp-cx.tlp-cx-minimized{max-height:48px;cursor:pointer;}\n        .tlp-cx.tlp-cx-minimized:hover{box-shadow:0 -4px 28px rgba(0,0,0,.2);}\n        \/* Header \u2014 always visible, clickable to minimize\/expand *\/\n        .tlp-cx-hdr{background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;padding:10px 14px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;cursor:pointer;min-height:48px;user-select:none;}\n        .tlp-cx-hdr-info{font-size:12px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}\n        .tlp-cx-hdr-info strong{font-size:13px;}\n        .tlp-cx-stage-label{background:rgba(255,255,255,.15);padding:1px 8px;border-radius:4px;font-size:9px;font-weight:700;letter-spacing:.3px;margin-left:6px;}\n        .tlp-cx-hdr-btns{display:flex;gap:4px;flex-shrink:0;}\n        .tlp-cx-hdr-btns button{background:rgba(255,255,255,.15);color:#fff;border:none;width:28px;height:28px;border-radius:6px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:background .2s;}\n        .tlp-cx-hdr-btns button:hover{background:rgba(255,255,255,.3);}\n        \/* Unread badge on minimized header *\/\n        .tlp-cx-hdr-badge{background:#ef4444;color:#fff;font-size:10px;font-weight:800;min-width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;margin-left:6px;animation:tlp-pulse 2s infinite;}\n        \/* Progress *\/\n        .tlp-cx-progress{background:#e2e8f0;height:3px;flex-shrink:0;}\n        .tlp-cx-progress-bar{height:100%;border-radius:0 2px 2px 0;transition:width .5s ease;}\n        .tlp-cx-progress-steps{display:none;}\n        \/* Escrow & Timer *\/\n        .tlp-cx-escrow{background:#eff6ff;color:#1e40af;padding:6px 12px;font-size:11px;font-weight:600;text-align:center;flex-shrink:0;}\n        .tlp-cx-timer{background:#fef3c7;color:#92400e;padding:8px 12px;font-size:12px;font-weight:600;text-align:center;flex-shrink:0;animation:tlp-pulse 2s infinite;}\n        @keyframes tlp-pulse{0%,100%{opacity:1;}50%{opacity:.7;}}\n        \/* Messages area *\/\n        .tlp-cx-msgs{flex:1;overflow-y:auto;padding:10px;background:var(--tlp-bg3,#f8fafc);display:flex;flex-direction:column;gap:6px;min-height:180px;max-height:280px;}\n        .tlp-cx-msgs::-webkit-scrollbar{width:4px;}\n        .tlp-cx-msgs::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px;}\n        \/* Message bubbles *\/\n        .tlp-cx-msg{display:flex;gap:6px;max-width:88%;animation:tlp-msg-in .2s ease-out;}\n        @keyframes tlp-msg-in{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}\n        .tlp-cx-own{align-self:flex-end;flex-direction:row-reverse;}\n        .tlp-cx-other{align-self:flex-start;}\n        .tlp-cx-avatar{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,#4f46e5,#7c3aed);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:11px;flex-shrink:0;margin-top:2px;}\n        .tlp-cx-own .tlp-cx-avatar{background:linear-gradient(135deg,#16a34a,#22c55e);}\n        .tlp-cx-bubble{padding:8px 12px;border-radius:14px;font-size:13px;line-height:1.45;word-break:break-word;}\n        .tlp-cx-own .tlp-cx-bubble{background:#dcfce7;border-bottom-right-radius:3px;color:var(--tlp-text,#0f172a);}\n        .tlp-cx-other .tlp-cx-bubble{background:#fff;border:1px solid #e2e8f0;border-bottom-left-radius:3px;color:var(--tlp-text,#0f172a);}\n        .tlp-cx-name{font-size:10px;font-weight:700;color:var(--tlp-text3,#64748b);margin-bottom:1px;}\n        .tlp-cx-own .tlp-cx-name{color:#15803d;text-align:right;}\n        .tlp-cx-text{font-size:13px;}\n        .tlp-cx-time{font-size:9px;color:var(--tlp-text4,#94a3b8);display:block;margin-top:2px;text-align:right;}\n        \/* System messages *\/\n        .tlp-cx-system{align-self:center;max-width:95%;background:var(--tlp-bg3,#f1f5f9);border-radius:8px;padding:6px 10px;display:flex;align-items:flex-start;gap:6px;border:1px dashed #cbd5e1;}\n        .tlp-cx-sys-icon{font-size:14px;flex-shrink:0;}\n        .tlp-cx-sys-text{font-size:11px;color:#475569;line-height:1.4;}\n        .tlp-cx-system .tlp-cx-time{font-size:9px;color:var(--tlp-text4,#94a3b8);margin-top:4px;}\n        \/* Action buttons *\/\n        .tlp-cx-actions{display:flex;flex-wrap:wrap;gap:4px;padding:8px 10px;border-top:1px solid var(--tlp-border,#f1f5f9);flex-shrink:0;background:#fff;max-height:100px;overflow-y:auto;}\n        .tlp-cx-btn{padding:6px 10px;border:none;border-radius:8px;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:3px;}\n        .tlp-cx-btn:hover{transform:translateY(-1px);box-shadow:0 2px 6px rgba(0,0,0,.08);}\n        .tlp-cx-btn.tlp-cx-primary{background:#4f46e5;color:#fff;}\n        .tlp-cx-btn.tlp-cx-success{background:#16a34a;color:#fff;}\n        .tlp-cx-btn.tlp-cx-danger{background:#ef4444;color:#fff;}\n        .tlp-cx-btn.tlp-hot-btn{background:#f1f5f9;color:var(--tlp-text2,#334155);border:1px solid #e2e8f0;}\n        \/* Input area *\/\n        .tlp-cx-input-wrap{display:flex;gap:6px;padding:8px 10px;border-top:1px solid var(--tlp-border,#e2e8f0);flex-shrink:0;background:#fff;align-items:flex-end;}\n        .tlp-cx-input{flex:1;padding:8px 10px;border:1px solid var(--tlp-border,#e2e8f0);border-radius:10px;font-size:13px;font-family:inherit;resize:none;max-height:60px;line-height:1.3;}\n        .tlp-cx-input:focus{outline:none;border-color:#4f46e5;}\n        .tlp-cx-send{width:34px;height:34px;background:#4f46e5;color:#fff;border:none;border-radius:50%;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}\n        .tlp-cx-send:hover{background:#3730a3;}\n        \/* Review *\/\n        .tlp-cx-review-modal{position:absolute;inset:0;background:rgba(255,255,255,.97);z-index:10;display:flex;align-items:center;justify-content:center;padding:16px;border-radius:12px;}\n        .tlp-cx-review-inner{max-width:320px;width:100%;}\n        \/* Code panel *\/\n        .tlp-cx-code-panel{margin-top:4px;}\n        \/* Mobile \u2014 full width single chat *\/\n        @media(max-width:768px){\n            #tlp-chat-dock{padding:0;gap:0;right:0;left:0;}\n            .tlp-cx{width:100%;border-radius:12px 12px 0 0;max-height:70vh;}\n            .tlp-cx-msgs{max-height:50vh;}\n        }\n        .tlp-cx-msgs::-webkit-scrollbar{width:5px;}\n        .tlp-cx-msgs::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px;}\n        \/* Message bubbles *\/\n        .tlp-cx-msg{display:flex;gap:8px;max-width:85%;animation:tlp-msg-in .2s ease-out;}\n        @keyframes tlp-msg-in{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}\n        .tlp-cx-own{align-self:flex-end;flex-direction:row-reverse;}\n        .tlp-cx-other{align-self:flex-start;}\n        .tlp-cx-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#4f46e5,#7c3aed);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:13px;flex-shrink:0;margin-top:4px;}\n        .tlp-cx-own .tlp-cx-avatar{background:linear-gradient(135deg,#16a34a,#22c55e);}\n        .tlp-cx-bubble{padding:10px 14px;border-radius:16px;font-size:14px;line-height:1.5;word-break:break-word;position:relative;}\n        .tlp-cx-own .tlp-cx-bubble{background:#dcfce7;border-bottom-right-radius:4px;color:var(--tlp-text,#0f172a);}\n        .tlp-cx-other .tlp-cx-bubble{background:#fff;border:1px solid #e2e8f0;border-bottom-left-radius:4px;color:var(--tlp-text,#0f172a);}\n        .tlp-cx-name{font-size:11px;font-weight:700;color:var(--tlp-text3,#64748b);margin-bottom:2px;}\n        .tlp-cx-own .tlp-cx-name{color:#15803d;text-align:right;}\n        .tlp-cx-text{font-size:14px;}\n        .tlp-cx-time{font-size:10px;color:var(--tlp-text4,#94a3b8);display:block;margin-top:4px;text-align:right;}\n        \/* System messages *\/\n        .tlp-cx-system{align-self:center;max-width:92%;background:var(--tlp-bg3,#f1f5f9);border-radius:12px;padding:10px 16px;display:flex;align-items:flex-start;gap:10px;border:1px dashed #cbd5e1;}\n        .tlp-cx-sys-icon{font-size:20px;flex-shrink:0;margin-top:2px;}\n        .tlp-cx-sys-text{font-size:13px;color:#475569;line-height:1.5;}\n        .tlp-cx-system .tlp-cx-time{font-size:10px;color:var(--tlp-text4,#94a3b8);margin-top:6px;display:block;}\n        \/* Action buttons *\/\n        .tlp-cx-actions{display:flex;flex-wrap:wrap;gap:6px;padding:10px 16px;border-top:1px solid var(--tlp-border,#f1f5f9);flex-shrink:0;background:#fff;}\n        .tlp-cx-btn{padding:8px 14px;border:none;border-radius:10px;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:4px;}\n        .tlp-cx-btn:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.1);}\n        .tlp-cx-btn.tlp-cx-primary{background:#4f46e5;color:#fff;}\n        .tlp-cx-btn.tlp-cx-success{background:#16a34a;color:#fff;}\n        .tlp-cx-btn.tlp-cx-danger{background:#ef4444;color:#fff;}\n        .tlp-cx-btn.tlp-hot-btn{background:#f1f5f9;color:var(--tlp-text2,#334155);border:1px solid #e2e8f0;}\n        .tlp-cx-btn.tlp-hot-btn:hover{background:#e2e8f0;}\n        \/* Input area *\/\n        .tlp-cx-input-wrap{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--tlp-border,#e2e8f0);flex-shrink:0;background:#fff;align-items:flex-end;}\n        .tlp-cx-input{flex:1;padding:10px 14px;border:1px solid var(--tlp-border,#e2e8f0);border-radius:12px;font-size:14px;font-family:inherit;resize:none;max-height:100px;line-height:1.4;}\n        .tlp-cx-input:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px rgba(79,70,229,.1);}\n        .tlp-cx-send{width:40px;height:40px;background:#4f46e5;color:#fff;border:none;border-radius:50%;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .2s;}\n        .tlp-cx-send:hover{background:#3730a3;}\n        \/* Review form *\/\n        .tlp-cx-review{padding:16px;background:#fffbeb;border-top:1px solid #fde68a;}\n        .tlp-cx-review h4{margin:0 0 8px;font-size:15px;}\n        .tlp-cx-review textarea{width:100%;padding:8px;border:1px solid var(--tlp-border,#e2e8f0);border-radius:8px;font-size:13px;margin:8px 0;resize:vertical;min-height:60px;font-family:inherit;}\n        .tlp-cx-review .tlp-submit-rating{background:#f59e0b;color:#fff;padding:8px 20px;border:none;border-radius:8px;font-weight:600;cursor:pointer;}\n        \/* Review modal overlay *\/\n        .tlp-cx-review-modal{position:absolute;inset:0;background:rgba(255,255,255,.97);z-index:10;display:flex;align-items:center;justify-content:center;padding:16px;border-radius:12px;}\n        .tlp-cx-review-inner{max-width:320px;width:100%;}\n        \/* Old review modal (legacy) *\/\n        .tlp-review-modal {\n            position: fixed;\n            inset: 0;\n            background: rgba(0,0,0,0.7);\n            z-index: 99999;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n        }\n        .tlp-review-content {\n            background: white;\n            padding: 25px;\n            border-radius: 10px;\n            width: 400px;\n            text-align: center;\n        }\n        .tlp-rating-slider {\n            width: 100%;\n            margin: 15px 0;\n        }\n        .tlp-rating-comment {\n            width: 100%;\n            height: 100px;\n            margin-bottom: 15px;\n        }\n        @media (max-width: 768px) {\n            .tlp-cards {\n                grid-template-columns: 1fr !important;\n                gap: 16px;\n            }\n            .tlp-card {\n                width: 100%;\n                padding: 12px;\n            }\n            table {\n                display: block;\n                overflow-x: auto;\n                white-space: nowrap;\n            }\n            thead {\n                display: none;\n            }\n            tbody tr {\n                display: block;\n                margin-bottom: 16px;\n                border: 1px solid #ddd;\n                border-radius: 8px;\n                padding: 12px;\n            }\n            tbody td {\n                display: block;\n                text-align: left !important;\n                border: none;\n                position: relative;\n                padding-left: 50%;\n            }\n            tbody td::before {\n                content: attr(data-label);\n                position: absolute;\n                left: 12px;\n                font-weight: bold;\n            }\n            .tlp-modal-content, .tlp-review-content, .tlp-listing-edit-modal > div {\n                width: 90% !important;\n                max-width: none;\n                padding: 20px;\n            }\n            #tlp-auth-tabs {\n                flex-direction: column;\n            }\n            .tlp-pagination button {\n                padding: 12px 24px;\n                font-size: 16px;\n            }\n            .tlp-pagination span {\n                font-size: 16px;\n            }\n            .tlp-dashboard {\n                padding: 15px;\n            }\n            .tlp-sidebar {\n                width: 100% !important;\n                border-right: none;\n                border-bottom: 1px solid #ddd;\n            }\n            .tlp-sections {\n                width: 100%;\n            }\n            .tlp-activity-log ul {\n                padding: 0;\n            }\n        }\n        .tlp-progress-bar {\n            margin-bottom: 10px;\n        }\n    <\/style>\n    <script type=\"text\/javascript\">\n        var ajaxurl = 'https:\/\/qipqop.com\/tiktok\/wp-admin\/admin-ajax.php';\n        var tlp_ajax = {\n            ajax_url: ajaxurl,\n            nonce: '011059e107',\n            logout_nonce: 'b6f4d69207'\n        };\n        jQuery(document).ready(function($) {\n            console.log('TLP JS: Document ready - FULLY ACTIVE');\n            var notificationSound = new Audio('https:\/\/qipqop.com\/wp-content\/uploads\/2026\/02\/apple-phone-chat.mp3');\n            var tlpLastSeenMsgId = 0;\n            var tlpLastAlertTime = 0;\n            var tlpUserHasReplied = {};\n            function playNotificationSound() {\n                if (isMuted) return;\n                notificationSound.currentTime = 0;\n                notificationSound.play().catch(function() {});\n            }\n            \/\/ Play sound on sending a message (confirmation beep)\n            function playSendSound() {\n                if (isMuted) return;\n                notificationSound.currentTime = 0;\n                notificationSound.volume = 0.4;\n                notificationSound.play().catch(function() {});\n                setTimeout(function() { notificationSound.volume = 1.0; }, 300);\n            }\n            \/\/ Partial refresh helper (used everywhere instead of reload)\n            function refreshListings() {\n                if ($('#tlp-listings-cards-container').length) {\n                    $('#tlp-listings-cards-container').load(location.href + ' #tlp-listings-cards-container > *');\n                } else {\n                    location.reload();\n                }\n            }\n            \/\/ V6.9.4: Legacy auth modal handlers removed \u2014 all auth form handling\n            \/\/ (login, register, tabs, progress, reCAPTCHA) lives in the inline\n            \/\/ <script> block rendered by tlp_render_auth_form() in legacy-core.php.\n            \/\/ The duplicate handlers here caused double AJAX submissions and\n            \/\/ form.serialize() targeting the wrong DOM element when the auth\n            \/\/ overlay was rendered more than once.\n            $(document).on('click', '.tlp-lease-btn', function(e) {\n                e.preventDefault();\n                const btn = $(this);\n                const account_id = btn.data('account-id');\n                const pricePerDay = parseFloat(btn.data('price-per-day')) || 200;\n                const useGlobal = tlp_pricing?.use_global_pricing || false;\n                const effectivePrice = useGlobal ? (tlp_pricing?.price_per_day || 200) : pricePerDay;\n                const pricePerHour = tlp_pricing?.price_per_hour || (effectivePrice \/ 24);\n                const minHours = tlp_pricing?.minimum_lease_hours || 6;\n                const formHtml = `\n                    <div class=\"tlp-inline-lease-form\" style=\"margin-top:12px; padding:16px; background:rgba(124,92,255,.06); border:1px solid var(--bdr,#2a2550); border-radius:12px;\">\n                        <p style=\"margin:0 0 12px; font-weight:700; color:var(--txt,#fff);\"><strong>Lease Duration<\/strong><\/p>\n                        <div style=\"display:flex; gap:12px; margin-bottom:12px;\">\n                            <input type=\"number\" class=\"tlp-hours\" placeholder=\"Hours\" min=\"0\" style=\"flex:1; padding:10px; background:#0c0a1f; border:1px solid var(--bdr,#2a2550); border-radius:8px; color:var(--txt,#e6e3ff);\">\n                            <input type=\"number\" class=\"tlp-days\" placeholder=\"Days\" min=\"0\" style=\"flex:1; padding:10px; background:#0c0a1f; border:1px solid var(--bdr,#2a2550); border-radius:8px; color:var(--txt,#e6e3ff);\">\n                        <\/div>\n                        <p style=\"margin:12px 0 8px; font-size:15px; color:var(--txt,#e6e3ff);\">\n                            Total Cost: <strong style=\"color:#4ade80;\"><span class=\"tlp-cost\">0.00<\/span> coins<\/strong>\n                        <\/p>\n                        <p style=\"font-size:13px; color:var(--txt3,#8b87b0); margin:8px 0;\">\n                            Minimum lease: <strong>${minHours} hours<\/strong>\n                        <\/p>\n                        <button class=\"tlp-start-lease\"\n                                data-account-id=\"${account_id}\"\n                                data-price-per-hour=\"${pricePerHour}\"\n                                data-min-hours=\"${minHours}\"\n                                style=\"background:var(--acc,#7c5cff); color:#fff; padding:12px 24px; border:none; border-radius:10px; font-weight:700; cursor:pointer;\">\n                            Start Lease Now\n                        <\/button>\n                    <\/div>`;\n                btn.after(formHtml).hide();\n            });\n            $(document).on('input change', '.tlp-inline-lease-form .tlp-hours, .tlp-inline-lease-form .tlp-days', function() {\n                const form = $(this).closest('.tlp-inline-lease-form');\n                const button = form.find('.tlp-start-lease');\n                if (!button.length) return;\n                const pricePerHour = parseFloat(button.data('price-per-hour')) || 10.00;\n                const minHours = parseInt(button.data('min-hours'), 10) || 6;\n                let inputHours = parseFloat(form.find('.tlp-hours').val()) || 0;\n                let inputDays = parseFloat(form.find('.tlp-days').val()) || 0;\n                if (inputHours < 0) { form.find('.tlp-hours').val(0); inputHours = 0; }\n                if (inputDays < 0) { form.find('.tlp-days').val(0); inputDays = 0; }\n                const totalHours = (inputDays * 24) + inputHours;\n                const totalCost = (totalHours * pricePerHour).toFixed(2);\n                form.find('.tlp-cost').text(totalCost);\n                if (totalHours > 0 && totalHours < minHours) {\n                    button.prop('disabled', true).css('opacity', '0.55').css('cursor', 'not-allowed').text(`Min ${minHours} hours required`);\n                } else if (totalHours === 0) {\n                    button.prop('disabled', true).css('opacity', '0.7').css('cursor', 'not-allowed').text('Enter duration');\n                } else {\n                    button.prop('disabled', false).css('opacity', '1').css('cursor', 'pointer').text('Start Lease Now');\n                }\n            });\n            $(document).on('click', '.tlp-start-lease:not(:disabled)', function(e) {\n                e.preventDefault();\n                const btn = $(this);\n                const form = btn.closest('.tlp-inline-lease-form');\n                const accountId = btn.data('account-id');\n                let hours = parseFloat(form.find('.tlp-hours').val()) || 0;\n                let days = parseFloat(form.find('.tlp-days').val()) || 0;\n                const minHours = parseInt(btn.data('min-hours'), 10) || 6;\n                const totalHours = (days * 24) + hours;\n                if (totalHours < minHours) {\n                    alert(`Minimum lease duration is ${minHours} hours. Please adjust.`);\n                    return;\n                }\n                if (totalHours <= 0) {\n                    alert('Please specify lease duration (hours or days).');\n                    return;\n                }\n                btn.prop('disabled', true).text('Sending...');\n                jQuery.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router',\n                    sub_action: 'start_lease',\n                    account_id: accountId,\n                    hours: hours,\n                    days: days,\n                    tlp_ajax_nonce: tlp_ajax.nonce\n                })\n                .done(function(response) {\n                    if (response && response.success) {\n                        playNotificationSound();\n                        alert(response.data && response.data.message ? response.data.message : 'Lease request sent successfully!');\n                        refreshListings();\n                    } else {\n                        let msg = (response && response.data && response.data.message) ? response.data.message : 'Could not start lease. Please try again.';\n                        alert(msg);\n                        btn.prop('disabled', false).text('Start Lease Now');\n                    }\n                })\n                .fail(function() {\n                    alert('Request failed');\n                    btn.prop('disabled', false).text('Start Lease Now');\n                });\n            });\n            \/\/ \u2550\u2550\u2550 V2.1.1: System Account \"Take\" \u2014 Instant Lease with Guided Flow \u2550\u2550\u2550\n            $(document).on('click', '.tlp-system-take-btn', function(e) {\n                e.preventDefault();\n                var btn = $(this);\n                var accountId = btn.data('account-id');\n                var pricePerDay = parseFloat(btn.data('price-per-day')) || 200;\n                var pricePerHour = pricePerDay \/ 24;\n                var minHours = tlp_pricing?.minimum_lease_hours || 6;\n                var formHtml = '<div class=\"tlp-sys-take-form\" style=\"margin-top:12px;padding:16px;background:var(--tlp-bg3,#f0fdf4);border:2px solid #16a34a40;border-radius:12px;\">';\n                formHtml += '<p style=\"margin:0 0 10px;font-weight:700;color:var(--tlp-text,#1e293b);font-size:14px;\">\u26a1 Instant System Lease<\/p>';\n                formHtml += '<p style=\"margin:0 0 12px;font-size:11px;color:var(--tlp-text3,#64748b);\">No approval needed \u2014 login details provided instantly.<\/p>';\n                formHtml += '<div style=\"display:flex;gap:8px;margin-bottom:10px;\">';\n                formHtml += '<input type=\"number\" class=\"tlp-sys-hours\" placeholder=\"Hours\" min=\"0\" value=\"' + minHours + '\" style=\"flex:1;padding:8px;border:1px solid var(--tlp-border,#e2e8f0);border-radius:8px;background:var(--tlp-inp,#fff);color:var(--tlp-inp-t,#1e293b);\">';\n                formHtml += '<input type=\"number\" class=\"tlp-sys-days\" placeholder=\"Days\" min=\"0\" value=\"0\" style=\"flex:1;padding:8px;border:1px solid var(--tlp-border,#e2e8f0);border-radius:8px;background:var(--tlp-inp,#fff);color:var(--tlp-inp-t,#1e293b);\">';\n                formHtml += '<\/div>';\n                formHtml += '<p style=\"margin:0 0 10px;font-size:13px;color:var(--tlp-text);\"><strong>Cost: <span class=\"tlp-sys-cost\">' + (minHours * pricePerHour).toFixed(2) + '<\/span> coins<\/strong><\/p>';\n                formHtml += '<button class=\"tlp-sys-confirm-take\" data-account-id=\"' + accountId + '\" style=\"background:linear-gradient(135deg,#16a34a,#059669);color:#fff;padding:10px 20px;border:none;border-radius:8px;font-weight:700;cursor:pointer;width:100%;font-size:14px;\">\u26a1 Take Now<\/button>';\n                formHtml += '<\/div>';\n                btn.after(formHtml).hide();\n                var form = btn.next('.tlp-sys-take-form');\n                form.find('.tlp-sys-hours, .tlp-sys-days').on('input', function(){\n                    var h = parseFloat(form.find('.tlp-sys-hours').val()) || 0;\n                    var d = parseFloat(form.find('.tlp-sys-days').val()) || 0;\n                    form.find('.tlp-sys-cost').text(((d*24+h)*pricePerHour).toFixed(2));\n                });\n            });\n\n            $(document).on('click', '.tlp-sys-confirm-take', function() {\n                var btn = $(this);\n                var form = btn.closest('.tlp-sys-take-form');\n                var accountId = btn.data('account-id');\n                var hours = parseFloat(form.find('.tlp-sys-hours').val()) || 0;\n                var days = parseFloat(form.find('.tlp-sys-days').val()) || 0;\n                btn.prop('disabled', true).text('\u23f3 Processing...');\n                $.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router', sub_action: 'auto_take_system_lease',\n                    account_id: accountId, hours: hours, days: days, tlp_ajax_nonce: tlp_ajax.nonce\n                }).done(function(r) {\n                    if (r.success) {\n                        var d = r.data;\n                        \/\/ Replace form with guided login flow\n                        var guideHtml = '<div class=\"tlp-sys-guide\" style=\"padding:16px;background:var(--tlp-bg3,#f0fdf4);border:2px solid #16a34a;border-radius:12px;margin-top:8px;\">';\n                        guideHtml += '<h3 style=\"margin:0 0 8px;color:#16a34a;font-size:16px;\">\u2705 Account Taken!<\/h3>';\n                        guideHtml += '<p style=\"color:var(--tlp-text,#1e293b);font-size:12px;margin:0 0 12px;\">' + d.message + '<\/p>';\n                        if (d.login_email) {\n                            guideHtml += '<div style=\"background:var(--tlp-card,#1c2131);padding:12px;border-radius:8px;margin-bottom:12px;border:1px solid var(--tlp-border,#e2e8f0);\">';\n                            guideHtml += '<div style=\"font-size:11px;color:var(--tlp-text3);margin-bottom:4px;\">\ud83d\udce7 Login Email<\/div>';\n                            guideHtml += '<div style=\"font-size:14px;font-weight:700;color:var(--tlp-text);font-family:monospace;\">' + d.login_email + '<\/div>';\n                            if (d.login_password) {\n                                guideHtml += '<div style=\"font-size:11px;color:var(--tlp-text3);margin-top:8px;\">\ud83d\udd12 Password<\/div>';\n                                guideHtml += '<div style=\"font-size:14px;font-weight:700;color:var(--tlp-text);font-family:monospace;\">' + d.login_password + '<\/div>';\n                            }\n                            guideHtml += '<\/div>';\n                            guideHtml += '<p style=\"font-size:11px;color:var(--tlp-text3);margin:0 0 12px;\">1\ufe0f\u20e3 Go to the platform and log in with the credentials above<br>2\ufe0f\u20e3 If a verification code is needed, click \"Get Code\" below<br>3\ufe0f\u20e3 Click \"Done\" when logged in successfully<\/p>';\n                        }\n                        guideHtml += '<div style=\"display:flex;gap:6px;flex-wrap:wrap;\">';\n                        if (d.can_listen_codes) {\n                            guideHtml += '<button onclick=\"tlpSystemGetCode(' + d.lease_id + ',this)\" style=\"background:#4f46e5;color:#fff;border:none;padding:8px 16px;border-radius:8px;font-weight:700;font-size:12px;cursor:pointer;\">\ud83d\udd10 Get Code<\/button>';\n                        }\n                        guideHtml += '<button onclick=\"tlpSystemDone(' + d.lease_id + ')\" style=\"background:#16a34a;color:#fff;border:none;padding:8px 16px;border-radius:8px;font-weight:700;font-size:12px;cursor:pointer;\">\u2705 Done \u2014 Logged In<\/button>';\n                        guideHtml += '<button onclick=\"if(typeof tlpOpenChat===\\'function\\')tlpOpenChat(' + d.lease_id + ');else alert(\\'Open My Chats to contact admin.\\')\" style=\"background:#f59e0b;color:#fff;border:none;padding:8px 16px;border-radius:8px;font-weight:700;font-size:12px;cursor:pointer;\">\ud83d\udcac Chat with Admin<\/button>';\n                        guideHtml += '<\/div>';\n                        guideHtml += '<div id=\"tlp-sys-code-area-' + d.lease_id + '\" style=\"margin-top:10px;\"><\/div>';\n                        guideHtml += '<\/div>';\n                        form.replaceWith(guideHtml);\n                    } else {\n                        alert(r.data?.message || 'Failed');\n                        btn.prop('disabled', false).text('\u26a1 Take Now');\n                    }\n                }).fail(function() { alert('Request failed'); btn.prop('disabled', false).text('\u26a1 Take Now'); });\n            });\n\n            \/\/ \u2550\u2550\u2550 V2.1.1: System Lease \u2014 Code Listener with Lazy Load \u2550\u2550\u2550\n            window.tlpSystemGetCode = function(leaseId, btn) {\n                var area = document.getElementById('tlp-sys-code-area-' + leaseId);\n                if (!area) return;\n                btn.disabled = true;\n                btn.textContent = '\u23f3 Checking inbox...';\n                area.innerHTML = '<div style=\"display:flex;align-items:center;gap:8px;padding:10px;background:var(--tlp-bg2,#f8fafc);border-radius:8px;\"><div class=\"tlp-code-spinner\" style=\"width:20px;height:20px;border:3px solid var(--tlp-border,#e2e8f0);border-top-color:#4f46e5;border-radius:50%;animation:tlpSpin 1s linear infinite;\"><\/div><span style=\"font-size:12px;color:var(--tlp-text3);\">Listening for verification code...<\/span><\/div><style>@keyframes tlpSpin{to{transform:rotate(360deg)}}<\/style>';\n\n                var attempts = 0;\n                var maxAttempts = 12;\n                var poll = function() {\n                    $.post(tlp_ajax.ajax_url, {\n                        action:'tlp_ajax_router', sub_action:'system_lease_get_code',\n                        lease_id:leaseId, tlp_ajax_nonce:tlp_ajax.nonce\n                    }).done(function(r) {\n                        attempts++;\n                        if (r.success && r.data.code) {\n                            area.innerHTML = '<div style=\"background:#f0fdf4;border:2px solid #16a34a;padding:14px;border-radius:10px;text-align:center;\"><div style=\"font-size:10px;color:#16a34a;font-weight:700;margin-bottom:4px;\">\ud83d\udd10 VERIFICATION CODE<\/div><div style=\"font-size:28px;font-weight:900;color:#16a34a;letter-spacing:4px;font-family:monospace;\">' + r.data.code + '<\/div><div style=\"font-size:10px;color:var(--tlp-text3,#64748b);margin-top:4px;\">Enter this code on the login page<\/div><\/div>';\n                            btn.textContent = '\ud83d\udd10 Get Code';\n                            btn.disabled = false;\n                        } else if (attempts < maxAttempts) {\n                            var msgs = ['Checking inbox...','Still listening...','Scanning emails...','Waiting for code...','Almost there...','Checking again...'];\n                            area.querySelector('span').textContent = msgs[attempts % msgs.length] + ' (attempt ' + attempts + '\/' + maxAttempts + ')';\n                            setTimeout(poll, 5000);\n                        } else {\n                            area.innerHTML = '<div style=\"padding:10px;background:#fef3c7;border-radius:8px;font-size:11px;color:#92400e;\">\u23f0 No code found after ' + maxAttempts + ' checks. The code may arrive shortly \u2014 click \"Get Code\" to try again, or chat with admin for help.<\/div>';\n                            btn.textContent = '\ud83d\udd10 Get Code';\n                            btn.disabled = false;\n                        }\n                    }).fail(function() {\n                        area.innerHTML = '<div style=\"color:#ef4444;font-size:11px;\">Request failed \u2014 try again.<\/div>';\n                        btn.textContent = '\ud83d\udd10 Get Code';\n                        btn.disabled = false;\n                    });\n                };\n                poll();\n            };\n\n            window.tlpSystemDone = function(leaseId) {\n                $.post(tlp_ajax.ajax_url, {\n                    action:'tlp_ajax_router', sub_action:'system_lease_done',\n                    lease_id:leaseId, tlp_ajax_nonce:tlp_ajax.nonce\n                }).done(function(r) {\n                    if (r.success) {\n                        alert('\u2705 ' + r.data.message);\n                        location.reload();\n                    }\n                });\n            };\n\n            $(document).on('click', '.tlp-accept-lease', function() {\n                var btn = $(this);\n                var leaseId = btn.data('lease-id');\n                if (!confirm('Accept this lease request? Coins will be deducted from the renter and held in escrow.')) return;\n                btn.prop('disabled', true).text('Accepting...');\n                $.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router',\n                    sub_action: 'accept_lease',\n                    lease_id: leaseId,\n                    tlp_ajax_nonce: tlp_ajax.nonce\n                })\n                .done(function(response) {\n                    if (response && response.success) {\n                        playNotificationSound();\n                        var msg = response.data && response.data.message ? response.data.message : 'Lease accepted!';\n                        var lid = response.data && response.data.lease_id ? response.data.lease_id : leaseId;\n                        alert(msg);\n                        \/\/ Store lease_id so the chat auto-opens after page reload\n                        if (response.data && response.data.auto_open_chat) {\n                            sessionStorage.setItem('tlp_auto_open_chat', lid);\n                        }\n                        \/\/ Full page reload \u2014 chat will auto-open via PHP check + sessionStorage\n                        location.reload();\n                    } else {\n                        let errMsg = (response && response.data && response.data.message) ? response.data.message : 'Unknown error';\n                        alert('Error: ' + errMsg);\n                        btn.prop('disabled', false).text('\u2705 Accept Request');\n                    }\n                })\n                .fail(function() {\n                    alert('Server error. Please try again.');\n                    btn.prop('disabled', false).text('\u2705 Accept Request');\n                });\n            });\n            $(document).on('click', '.tlp-cancel-lease', function() {\n                var btn = $(this);\n                var leaseId = btn.data('lease-id');\n                if (!confirm('Decline this lease request?')) return;\n                btn.prop('disabled', true).text('Declining...');\n                $.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router',\n                    sub_action: 'cancel_lease',\n                    lease_id: leaseId,\n                    tlp_ajax_nonce: tlp_ajax.nonce\n                })\n                .done(function(response) {\n                    if (response && response.success) {\n                        playNotificationSound();\n                        alert(response.data && response.data.message ? response.data.message : 'Request declined');\n                        refreshListings();\n                    } else {\n                        let msg = (response && response.data && response.data.message) ? response.data.message : 'Unknown error';\n                        alert('Error: ' + msg);\n                        btn.prop('disabled', false).text('\u274c Decline');\n                    }\n                })\n                .fail(function() {\n                    alert('Server error. Please try again.');\n                    btn.prop('disabled', false).text('\u274c Decline');\n                });\n            });\n            let chatPollIntervals = {};\n            let currentUserRole = '';\n            let isMuted = localStorage.getItem('tlp_chat_muted') === 'true';\n            \n            \/\/ \u2550\u2550\u2550 AUTO-OPEN CHAT for recently accepted leases (both sides) \u2550\u2550\u2550\n            var tlpAutoOpenLease = 0;\n            if (tlpAutoOpenLease > 0) {\n                \/\/ Auto-open chat modal on page load (PHP detected recently accepted lease)\n                setTimeout(function() {\n                    tlp_open_chat_modal(tlpAutoOpenLease);\n                }, 600);\n            }\n            \/\/ Also check sessionStorage (set by accept handler before reload)\n            var ssLease = parseInt(sessionStorage.getItem('tlp_auto_open_chat') || 0);\n            if (ssLease > 0) {\n                sessionStorage.removeItem('tlp_auto_open_chat');\n                if (ssLease !== tlpAutoOpenLease) {\n                    \/\/ PHP didn't catch it, open from sessionStorage\n                    setTimeout(function() {\n                        tlp_open_chat_modal(ssLease);\n                    }, 800);\n                }\n            }\n            \/\/ Reusable: open chat box in dock for a lease\n            function tlp_open_chat_modal(lid) { tlp_open_chat_box(lid); }\n            function tlp_build_chat_html(leaseId, data) {\n                let messages = data.messages || data;\n                let lease = data.lease || null;\n                let stage = lease ? lease.stage : 'unknown';\n                let acctName = lease ? '@' + lease.account : 'Account';\n                let isLeaser = lease ? lease.is_leaser : false;\n                let escrowStatus = lease ? lease.escrow_status : 'none';\n                let holdEnd = lease ? lease.hold_end_time : null;\n                \n                \/\/ Stage progress\n                let stages = ['request','accepted','login_shared','logins_confirmed','codes_provided','active','completed'];\n                let stageLabels = {'request':'Requested','accepted':'Accepted & Paid','login_shared':'Logins Sent','logins_confirmed':'Logins Confirmed','codes_provided':'Codes Done','active':'Active','completed':'Completed'};\n                let stageIdx = stages.indexOf(stage);\n                let progressPct = stageIdx >= 0 ? Math.round((stageIdx \/ (stages.length - 1)) * 100) : 0;\n                let stageColor = stage === 'completed' ? '#16a34a' : stage === 'active' ? '#10b981' : '#4f46e5';\n\n                let o = '';\n                \/\/ \u2500\u2500 Header \u2500\u2500\n                o += '<div class=\"tlp-cx\" data-lease-id=\"' + leaseId + '\" data-stage=\"' + stage + '\">';\n                o += '<div class=\"tlp-cx-hdr\">';\n                o += '<div class=\"tlp-cx-hdr-info\"><strong>\ud83d\udcac Lease #' + leaseId + '<\/strong> \u2014 ' + acctName + '<br><span class=\"tlp-cx-stage-label\">' + (stageLabels[stage] || stage) + '<\/span><\/div>';\n                o += '<div class=\"tlp-cx-hdr-btns\"><button class=\"tlp-mute-btn\">' + (isMuted ? '\ud83d\udd0a' : '\ud83d\udd07') + '<\/button><button class=\"tlp-chat-minimize\" data-lease-id=\"' + leaseId + '\" title=\"Minimize\">\u2500<\/button><button class=\"tlp-chat-close\" data-lease-id=\"' + leaseId + '\" title=\"Close\">\u2715<\/button><\/div>';\n                o += '<\/div>';\n                \n                \/\/ \u2500\u2500 Progress Bar \u2500\u2500\n                o += '<div class=\"tlp-cx-progress\"><div class=\"tlp-cx-progress-bar\" style=\"width:' + progressPct + '%;background:' + stageColor + ';\"><\/div><\/div>';\n                o += '<div class=\"tlp-cx-progress-steps\">';\n                stages.forEach(function(s, i) {\n                    let done = i <= stageIdx;\n                    let current = i === stageIdx;\n                    o += '<span class=\"' + (done ? 'done' : '') + (current ? ' current' : '') + '\">' + (stageLabels[s] || s) + '<\/span>';\n                });\n                o += '<\/div>';\n\n                \/\/ \u2500\u2500 Escrow Info \u2500\u2500\n                if (escrowStatus === 'held' || escrowStatus === 'pending_release') {\n                    let escrowLabel = escrowStatus === 'pending_release' ? '\u23f3 Releasing soon...' : '\ud83d\udd12 Held in escrow';\n                    o += '<div class=\"tlp-cx-escrow\">' + escrowLabel + ' \u2014 ' + (lease ? parseFloat(lease.total_tokens).toLocaleString() : '0') + ' coins<\/div>';\n                }\n                \n                \/\/ \u2500\u2500 Countdown Timer \u2500\u2500\n                if (holdEnd && escrowStatus === 'pending_release') {\n                    o += '<div class=\"tlp-cx-timer\" id=\"tlp-cx-timer-' + leaseId + '\" data-end=\"' + holdEnd + '\">\u23f1 Loading timer...<\/div>';\n                }\n\n                \/\/ \u2500\u2500 Messages \u2500\u2500\n                o += '<div class=\"tlp-cx-msgs\" id=\"tlp-cx-msgs-' + leaseId + '\">';\n                messages.forEach(function(msg) {\n                    o += tlp_render_msg(msg);\n                });\n                o += '<\/div>';\n\n                \/\/ \u2500\u2500 Action Buttons (SEQUENTIAL GUIDED FLOW) \u2500\u2500\n                var emailHint = (lease && lease.backup_email_hint) ? lease.backup_email_hint : '';\n                var phoneHint = (lease && lease.backup_phone_hint) ? lease.backup_phone_hint : '';\n                o += '<div class=\"tlp-cx-actions\" id=\"tlp-cx-actions-' + leaseId + '\">';\n                \n                if (stage === 'accepted') {\n                    if (!isLeaser) {\n                        \/\/ RENTER: Ask leaser to share logins\n                        o += '<button class=\"tlp-cx-btn tlp-cx-primary tlp-request-logins\" data-lease-id=\"' + leaseId + '\">\ud83d\udd11 Please Share Login Details<\/button>';\n                    } else {\n                        \/\/ LEASER: Enter login details via structured form\n                        o += '<button class=\"tlp-cx-btn tlp-cx-primary tlp-share-logins\" data-lease-id=\"' + leaseId + '\">\ud83d\udd11 Enter TikTok Account Login Info<\/button>';\n                    }\n                }\n                \n                if (stage === 'login_shared') {\n                    if (!isLeaser) {\n                        \/\/ RENTER: Mark step 1 complete \u2014 logins received\n                        o += '<div style=\"background:#f0fdf4;padding:8px 12px;border-radius:8px;font-size:12px;color:#15803d;font-weight:600;margin-bottom:6px;\">\ud83d\udccb Step 1: Mark logins as received to proceed<\/div>';\n                        o += '<button class=\"tlp-cx-btn tlp-cx-primary tlp-confirm-logins\" data-lease-id=\"' + leaseId + '\">\u2705 Logins Received \u2014 Mark Complete<\/button>';\n                    } else {\n                        o += '<div style=\"background:#eff6ff;padding:8px 12px;border-radius:8px;font-size:12px;color:#1e40af;font-weight:600;\">\u23f3 Waiting for renter to confirm logins received...<\/div>';\n                    }\n                }\n                \n                if (stage === 'logins_confirmed') {\n                    if (!isLeaser) {\n                        \/\/ RENTER: Request codes or mark login successful\n                        o += '<div style=\"background:#eff6ff;padding:8px 12px;border-radius:8px;font-size:12px;color:#1e40af;font-weight:600;margin-bottom:6px;\">\ud83d\udccb Step 2: Try logging in. Request codes if needed, then mark login successful.<\/div>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn tlp-request-code-email\" data-lease-id=\"' + leaseId + '\" data-hint=\"' + emailHint + '\">\ud83d\udce7 Request Code (Email)<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn tlp-request-code-phone\" data-lease-id=\"' + leaseId + '\" data-hint=\"' + phoneHint + '\">\ud83d\udcf1 Request Code (Phone)<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn password-failed\" data-lease-id=\"' + leaseId + '\">\u274c Password Failed<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-cx-success tlp-confirm-codes\" data-lease-id=\"' + leaseId + '\">\u2705 Login Was Successful!<\/button>';\n                    } else {\n                        \/\/ LEASER: Enter codes when asked + code received confirmation\n                        o += '<div style=\"background:#fef3c7;padding:8px 12px;border-radius:8px;font-size:12px;color:#92400e;font-weight:600;margin-bottom:6px;\">\ud83d\udccb Renter is logging in. Enter verification codes below when they ask.<\/div>';\n                        o += '<div class=\"tlp-cx-code-panel\" id=\"tlp-cx-code-panel-' + leaseId + '\">';\n                        o += '<div style=\"display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;\">';\n                        o += '<button class=\"tlp-cx-btn tlp-leaser-enter-code\" data-lease-id=\"' + leaseId + '\" data-type=\"email\" style=\"background:#3b82f6;color:#fff;\">\ud83d\udce7 Enter Email Code<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-leaser-enter-code\" data-lease-id=\"' + leaseId + '\" data-type=\"phone\" style=\"background:#8b5cf6;color:#fff;\">\ud83d\udcf1 Enter Phone Code<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn tlp-code-received\" data-lease-id=\"' + leaseId + '\" style=\"background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0;\">\u2705 Code Was Received<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn tlp-ask-resend\" data-lease-id=\"' + leaseId + '\">\ud83d\udd04 Ask Renter to Resend<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn noted-sending\" data-lease-id=\"' + leaseId + '\">\ud83d\udc4d Noted, getting code<\/button>';\n                        o += '<\/div><\/div>';\n                    }\n                }\n                \n                if (stage === 'codes_provided' || stage === 'active') {\n                    if (!isLeaser && stage === 'codes_provided') {\n                        o += '<div style=\"background:#eff6ff;padding:8px 12px;border-radius:8px;font-size:12px;color:#1e40af;font-weight:600;margin-bottom:6px;\">\ud83d\udccb Codes exchanged. Request more if needed or confirm login.<\/div>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn tlp-request-code-email\" data-lease-id=\"' + leaseId + '\" data-hint=\"' + emailHint + '\">\ud83d\udce7 Request Another Code (Email)<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn tlp-request-code-phone\" data-lease-id=\"' + leaseId + '\" data-hint=\"' + phoneHint + '\">\ud83d\udcf1 Request Another Code (Phone)<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn tlp-check-new-code\" data-lease-id=\"' + leaseId + '\">\ud83d\udd0d Check New Code Sent<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-cx-success tlp-confirm-codes\" data-lease-id=\"' + leaseId + '\">\u2705 Login Was Successful!<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-request-extension\" data-lease-id=\"' + leaseId + '\" style=\"background:#fef3c7;color:#92400e;border:1px solid #fde68a;\">\u23f0 Request Time Extension<\/button>';\n                    }\n                    if (isLeaser && stage === 'codes_provided') {\n                        o += '<div class=\"tlp-cx-code-panel\">';\n                        o += '<button class=\"tlp-cx-btn tlp-leaser-enter-code\" data-lease-id=\"' + leaseId + '\" data-type=\"email\" style=\"background:#3b82f6;color:#fff;\">\ud83d\udce7 Enter Email Code<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-leaser-enter-code\" data-lease-id=\"' + leaseId + '\" data-type=\"phone\" style=\"background:#8b5cf6;color:#fff;\">\ud83d\udcf1 Enter Phone Code<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn tlp-code-received\" data-lease-id=\"' + leaseId + '\" style=\"background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0;\">\u2705 Code Was Received<\/button>';\n                        o += '<button class=\"tlp-cx-btn tlp-hot-btn noted-sending\" data-lease-id=\"' + leaseId + '\">\ud83d\udc4d Sending code<\/button>';\n                        o += '<\/div>';\n                    }\n                }\n                \n                \/\/ Wallet history button (both \u2014 active\/completed)\n                if (stage === 'active' || stage === 'completed' || stage === 'codes_provided') {\n                    o += '<button class=\"tlp-cx-btn tlp-wallet-history\" style=\"background:#f1f5f9;color:var(--tlp-text2,#334155);border:1px solid #e2e8f0;\">\ud83d\udcbc Wallet History<\/button>';\n                }\n                \/\/ Dispute (both \u2014 except completed\/request)\n                if (stage !== 'completed' && stage !== 'request') {\n                    o += '<button class=\"tlp-cx-btn tlp-cx-danger tlp-open-dispute\" data-lease-id=\"' + leaseId + '\">\u2696\ufe0f Dispute<\/button>';\n                }\n                \/\/ Review (completed) \u2014 mandatory\n                if (stage === 'completed' || lease?.status === 'completed') {\n                    o += '<button class=\"tlp-cx-btn tlp-cx-review-trigger\" data-lease-id=\"' + leaseId + '\" style=\"background:#f59e0b;color:#fff;\">\u2b50 Rate This Lease (Mandatory)<\/button>';\n                    if (!isLeaser) {\n                        o += '<button class=\"tlp-cx-btn tlp-health-feedback\" data-lease-id=\"' + leaseId + '\" style=\"background:#3b82f6;color:#fff;\">\ud83c\udfe5 Report Account Health<\/button>';\n                    }\n                }\n                o += '<\/div>';\n\n                \/\/ \u2500\u2500 Message Input (ALWAYS visible) \u2500\u2500\n                o += '<div class=\"tlp-cx-input-wrap\">';\n                o += '<textarea class=\"tlp-cx-input\" placeholder=\"Type a message...\" rows=\"2\"><\/textarea>';\n                o += '<button class=\"tlp-cx-send tlp-send-msg\" data-lease-id=\"' + leaseId + '\">\u27a4<\/button>';\n                o += '<\/div>';\n\n                \/\/ \u2500\u2500 Mandatory Review Form (shown on button click for completed leases) \u2500\u2500\n                o += '<div class=\"tlp-cx-review-modal\" id=\"tlp-cx-review-' + leaseId + '\" style=\"display:none;\">';\n                o += '<div class=\"tlp-cx-review-inner\">';\n                o += '<h3 style=\"margin:0 0 4px;font-size:18px;font-weight:800;text-align:center;\">\u2b50 Rate Your Experience<\/h3>';\n                o += '<p style=\"margin:0 0 16px;font-size:13px;color:var(--tlp-text3,#64748b);text-align:center;\">This is mandatory to complete the lease cycle<\/p>';\n                \/\/ Star slider with live emoji display\n                o += '<div style=\"text-align:center;margin-bottom:16px;\">';\n                o += '<div class=\"tlp-cx-stars\" id=\"tlp-cx-stars-' + leaseId + '\" style=\"font-size:36px;margin-bottom:8px;cursor:pointer;\">\u2b50\u2b50\u2b50\u2606\u2606<\/div>';\n                o += '<input type=\"range\" class=\"tlp-cx-score\" data-lease-id=\"' + leaseId + '\" min=\"1\" max=\"5\" value=\"3\" style=\"width:80%;accent-color:#f59e0b;\">';\n                o += '<div style=\"display:flex;justify-content:space-between;width:80%;margin:4px auto 0;font-size:11px;color:var(--tlp-text4,#94a3b8);\"><span>Poor<\/span><span>Fair<\/span><span>Good<\/span><span>Great<\/span><span>Excellent<\/span><\/div>';\n                o += '<\/div>';\n                \/\/ Remarks\n                o += '<div style=\"margin-bottom:16px;\">';\n                o += '<label style=\"display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--tlp-text2,#334155);\">Write your remarks <span style=\"color:#ef4444;\">*<\/span><\/label>';\n                o += '<textarea class=\"tlp-cx-comment\" data-lease-id=\"' + leaseId + '\" placeholder=\"Share your experience \u2014 what went well? Any issues? This helps the community...\" rows=\"3\" style=\"width:100%;padding:12px;border:2px solid var(--tlp-border,#e2e8f0);border-radius:10px;font-size:14px;font-family:inherit;resize:vertical;\"><\/textarea>';\n                o += '<\/div>';\n                \/\/ Submit\n                o += '<button class=\"tlp-cx-submit-review\" data-lease-id=\"' + leaseId + '\" style=\"width:100%;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;padding:14px;border:none;border-radius:10px;font-size:16px;font-weight:700;cursor:pointer;\">\u2b50 Submit Rating<\/button>';\n                o += '<button class=\"tlp-cx-review-cancel\" data-lease-id=\"' + leaseId + '\" style=\"width:100%;background:#f1f5f9;color:var(--tlp-text3,#64748b);padding:10px;border:none;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;margin-top:8px;\">I\\'ll rate later<\/button>';\n                o += '<\/div><\/div>';\n                o += '<\/div>';\n                return o;\n            }\n            \n            function tlp_render_msg(msg) {\n                let uid = 0;\n                let isSystem = (msg.sender_id == 0 || msg.sender_id === null);\n                let isOwn = (msg.sender_id == uid);\n                let senderName = isSystem ? 'System' : (isOwn ? 'You' : (msg.sender_login || 'User'));\n                let time = msg.created_at ? msg.created_at.substring(11, 16) : '';\n                \n                if (isSystem) {\n                    return '<div class=\"tlp-cx-msg tlp-cx-system\"><div class=\"tlp-cx-sys-icon\">\ud83e\udd16<\/div><div class=\"tlp-cx-sys-text\">' + msg.message.replace(\/\\n\/g, '<br>') + '<\/div><span class=\"tlp-cx-time\">' + time + '<\/span><\/div>';\n                }\n                \n                let cls = isOwn ? 'tlp-cx-own' : 'tlp-cx-other';\n                let avatar = senderName.charAt(0).toUpperCase();\n                return '<div class=\"tlp-cx-msg ' + cls + '\">' +\n                    (isOwn ? '' : '<div class=\"tlp-cx-avatar\">' + avatar + '<\/div>') +\n                    '<div class=\"tlp-cx-bubble\"><div class=\"tlp-cx-name\">' + senderName + '<\/div><div class=\"tlp-cx-text\">' + msg.message.replace(\/\\n\/g, '<br>') + '<\/div><span class=\"tlp-cx-time\">' + time + (msg.is_read ? ' \u2713\u2713' : ' \u2713') + '<\/span><\/div>' +\n                    (isOwn ? '<div class=\"tlp-cx-avatar\">' + avatar + '<\/div>' : '') +\n                    '<\/div>';\n            }\n            \n            function tlp_start_timer(leaseId) {\n                let el = document.getElementById('tlp-cx-timer-' + leaseId);\n                if (!el) return;\n                let endStr = el.getAttribute('data-end');\n                if (!endStr) return;\n                let endTime = new Date(endStr + ' UTC').getTime();\n                let iv = setInterval(function() {\n                    let now = Date.now();\n                    let left = Math.max(0, Math.floor((endTime - now) \/ 1000));\n                    let mins = Math.floor(left \/ 60);\n                    let secs = left % 60;\n                    el.innerHTML = '\u23f1 <strong>' + mins + ':' + (secs < 10 ? '0' : '') + secs + '<\/strong> until funds release';\n                    if (left <= 0) {\n                        clearInterval(iv);\n                        el.innerHTML = '\u2705 Funds released!';\n                        el.style.background = '#f0fdf4';\n                        el.style.color = '#16a34a';\n                    }\n                }, 1000);\n            }\n\n            $(document).on('click', '.tlp-open-chat', function(e) {\n                e.preventDefault();\n                let leaseId = $(this).data('lease-id');\n                tlp_open_chat_box(leaseId);\n            });\n            \/\/ \u2550\u2550\u2550 Open a chat box in the dock (not a modal) \u2550\u2550\u2550\n            function tlp_open_chat_box(leaseId) {\n                \/\/ Create dock if not exists\n                if (!$('#tlp-chat-dock').length) {\n                    $('<div id=\"tlp-chat-dock\"><\/div>').appendTo('body');\n                }\n                \/\/ Don't open duplicate\n                if ($('#tlp-chatbox-' + leaseId).length) {\n                    \/\/ Just expand if minimized\n                    $('#tlp-chatbox-' + leaseId).removeClass('tlp-cx-minimized');\n                    var md = document.getElementById('tlp-cx-msgs-' + leaseId);\n                    if (md) md.scrollTop = md.scrollHeight;\n                    return;\n                }\n                $.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router',\n                    sub_action: 'get_chat_messages',\n                    lease_id: leaseId,\n                    tlp_ajax_nonce: tlp_ajax.nonce\n                }, function(response) {\n                    if (response && response.success) {\n                        var chatHtml = tlp_build_chat_html(leaseId, response.data);\n                        $('<div id=\"tlp-chatbox-' + leaseId + '\">' + chatHtml + '<\/div>').prependTo('#tlp-chat-dock');\n                        var msgsDiv = document.getElementById('tlp-cx-msgs-' + leaseId);\n                        if (msgsDiv) msgsDiv.scrollTop = msgsDiv.scrollHeight;\n                        tlp_start_timer(leaseId);\n                        chatPollIntervals[leaseId] = setInterval(function() { tlp_poll_chat(leaseId); }, 5000);\n                        \/\/ Limit to 3 open boxes on desktop, 1 on mobile\n                        var maxBoxes = window.innerWidth < 768 ? 1 : 3;\n                        var boxes = $('#tlp-chat-dock > div');\n                        if (boxes.length > maxBoxes) {\n                            boxes.last().find('.tlp-cx').addClass('tlp-cx-minimized');\n                        }\n                    }\n                });\n            }\n            function tlp_poll_chat(leaseId) {\n                $.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router',\n                    sub_action: 'get_chat_messages',\n                    lease_id: leaseId,\n                    tlp_ajax_nonce: tlp_ajax.nonce\n                }, function(response) {\n                    if (response && response.success) {\n                        var data = response.data;\n                        var msgs = data.messages || data;\n                        var lease = data.lease || null;\n                        var msgsDiv = $('#tlp-cx-msgs-' + leaseId);\n                        if (!msgsDiv.length) return;\n                        \n                        \/\/ Check if stage changed \u2014 if so, rebuild entire chat to update buttons\n                        var currentStage = msgsDiv.closest('.tlp-cx').attr('data-stage') || '';\n                        var newStage = lease ? lease.stage : '';\n                        if (newStage && currentStage && newStage !== currentStage) {\n                            \/\/ Stage changed \u2014 full rebuild\n                            tlp_refresh_chat(leaseId);\n                            return;\n                        }\n                        \n                        \/\/ Update messages only (no full rebuild needed)\n                        var prevCount = msgsDiv.children().length;\n                        msgsDiv.html('');\n                        msgs.forEach(function(msg) { msgsDiv.append(tlp_render_msg(msg)); });\n                        msgsDiv[0].scrollTop = msgsDiv[0].scrollHeight;\n                        \n                        \/\/ Update progress bar\n                        if (lease) {\n                            var stages = ['request','accepted','login_shared','logins_confirmed','codes_provided','active','completed'];\n                            var idx = stages.indexOf(lease.stage);\n                            var pct = idx >= 0 ? Math.round((idx \/ (stages.length - 1)) * 100) : 0;\n                            $('.tlp-cx-progress-bar').css('width', pct + '%');\n                        }\n                        \n                        \/\/ Sound: only play for genuinely NEW messages (more messages than before)\n                        if (msgs.length > prevCount && prevCount > 0) {\n                            var lastMsg = msgs[msgs.length - 1];\n                            var uid = 0;\n                            if (lastMsg.sender_id != uid) {\n                                \/\/ New message from other party or system \u2014 play once\n                                playNotificationSound();\n                                tlpUserHasReplied[leaseId] = false;\n                                tlpLastAlertTime = Date.now();\n                                \/\/ Flash the chat header to draw attention\n                                var hdr = $('.tlp-cx-hdr');\n                                hdr.css('background', 'linear-gradient(135deg,#16a34a,#22c55e)');\n                                setTimeout(function(){ hdr.css('background', 'linear-gradient(135deg,#0f172a,#1e3a8a)'); }, 1500);\n                            }\n                        } else if (!tlpUserHasReplied[leaseId] && msgs.length > 0) {\n                            \/\/ Repeat alert every 20s for unresponded messages\n                            var lastMsg = msgs[msgs.length - 1];\n                            var uid = 0;\n                            if (lastMsg.sender_id != uid && (Date.now() - tlpLastAlertTime > 20000)) {\n                                playNotificationSound();\n                                tlpLastAlertTime = Date.now();\n                            }\n                        }\n                    }\n                });\n            }\n            $(document).on('click', '.tlp-send-msg, .tlp-cx-send', function() {\n                let leaseId = $(this).data('lease-id');\n                let input = $(this).closest('.tlp-cx-input-wrap, .tlp-cx').find('.tlp-cx-input, .tlp-chat-input');\n                let msg = input.val().trim();\n                if (!msg) return;\n                input.val('');\n                playSendSound();\n                tlpUserHasReplied[leaseId] = true;\n                $.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router',\n                    sub_action: 'send_chat_message',\n                    lease_id: leaseId,\n                    message: msg,\n                    tlp_ajax_nonce: tlp_ajax.nonce\n                }, function(response) {\n                    if (response && response.success) {\n                        tlp_poll_chat(leaseId);\n                    } else {\n                        alert((response && response.data && response.data.message) ? response.data.message : 'Failed to send');\n                    }\n                });\n            });\n            \/\/ Enter key to send\n            $(document).on('keydown', '.tlp-cx-input', function(e) {\n                if (e.key === 'Enter' && !e.shiftKey) {\n                    e.preventDefault();\n                    $(this).closest('.tlp-cx-input-wrap').find('.tlp-cx-send').trigger('click');\n                }\n            });\n            \/\/ \u2550\u2550\u2550 RENTER: Ask leaser to share logins \u2550\u2550\u2550\n            $(document).on('click', '.tlp-request-logins', function() {\n                let lid = $(this).data('lease-id');\n                $(this).prop('disabled', true).text('Sent \u2713');\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                $.post(tlp_ajax.ajax_url, { action:'tlp_ajax_router', sub_action:'send_chat_message', lease_id:lid, message:'\ud83d\udd11 Hi! Please share the TikTok account login details so I can proceed.', tlp_ajax_nonce:tlp_ajax.nonce }, function() { tlp_poll_chat(lid); });\n            });\n            \/\/ \u2550\u2550\u2550 LEASER: Enter login info via modal \u2550\u2550\u2550\n            $(document).on('click', '.tlp-share-logins', function() {\n                let lid = $(this).data('lease-id');\n                var f = '<div id=\"tlp-login-form-modal\" style=\"position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:100000;display:flex;align-items:center;justify-content:center;padding:16px;\"><div style=\"background:#fff;border-radius:20px;padding:28px;max-width:440px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.2);\"><h3 style=\"margin:0 0 4px;font-size:20px;font-weight:800;text-align:center;\">\ud83d\udd11 Enter TikTok Login Info<\/h3><p style=\"margin:0 0 20px;font-size:13px;color:var(--tlp-text3,#64748b);text-align:center;\">These will be shared securely with the renter<\/p><div style=\"margin-bottom:14px;\"><label style=\"display:block;font-size:13px;font-weight:600;margin-bottom:4px;\">Username \/ Email \/ Phone <span style=\"color:#ef4444\">*<\/span><\/label><input type=\"text\" id=\"tlp-login-username\" placeholder=\"e.g. user@email.com\" style=\"width:100%;padding:12px;border:2px solid #e2e8f0;border-radius:10px;font-size:14px;\"><\/div><div style=\"margin-bottom:14px;\"><label style=\"display:block;font-size:13px;font-weight:600;margin-bottom:4px;\">Password <span style=\"color:#ef4444\">*<\/span><\/label><input type=\"text\" id=\"tlp-login-password\" placeholder=\"Account password\" style=\"width:100%;padding:12px;border:2px solid #e2e8f0;border-radius:10px;font-size:14px;\"><\/div><div style=\"margin-bottom:14px;\"><label style=\"display:block;font-size:13px;font-weight:600;margin-bottom:4px;\">Backup Email (for codes)<\/label><input type=\"text\" id=\"tlp-login-backup-email\" placeholder=\"e.g. backup@email.com\" style=\"width:100%;padding:12px;border:2px solid #e2e8f0;border-radius:10px;font-size:14px;\"><\/div><div style=\"margin-bottom:18px;\"><label style=\"display:block;font-size:13px;font-weight:600;margin-bottom:4px;\">Phone for Codes<\/label><input type=\"text\" id=\"tlp-login-phone\" placeholder=\"e.g. 0712345678\" style=\"width:100%;padding:12px;border:2px solid #e2e8f0;border-radius:10px;font-size:14px;\"><\/div><button id=\"tlp-login-submit\" data-lease-id=\"' + lid + '\" style=\"width:100%;background:#4f46e5;color:#fff;padding:14px;border:none;border-radius:10px;font-size:16px;font-weight:700;cursor:pointer;\">\ud83d\udd11 Share Login Details<\/button><button onclick=\"jQuery(\\'#tlp-login-form-modal\\').remove();\" style=\"width:100%;background:#f1f5f9;color:var(--tlp-text3,#64748b);padding:10px;border:none;border-radius:10px;font-size:13px;cursor:pointer;margin-top:8px;\">Cancel<\/button><\/div><\/div>';\n                $(f).appendTo('body'); $('#tlp-login-username').focus();\n            });\n            $(document).on('click', '#tlp-login-submit', function() {\n                var lid=$(this).data('lease-id'),u=$('#tlp-login-username').val().trim(),p=$('#tlp-login-password').val().trim(),be=$('#tlp-login-backup-email').val().trim(),ph=$('#tlp-login-phone').val().trim();\n                if(!u){alert('Username\/Email\/Phone required.');return;} if(!p){alert('Password required.');return;}\n                var d='Username: '+u+'\\nPassword: '+p; if(be)d+='\\nBackup Email: '+be; if(ph)d+='\\nPhone for Codes: '+ph;\n                $(this).prop('disabled',true).text('Sharing...');\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'share_logins',lease_id:lid,details:d,backup_email:be,backup_phone:ph,tlp_ajax_nonce:tlp_ajax.nonce},function(r){$('#tlp-login-form-modal').remove();if(r.success){alert('\u2705 Login details shared!');tlp_refresh_chat(lid);}else{alert('Error: '+(r.data?.message||'Unknown'));}});\n            });\n            \/\/ \u2550\u2550\u2550 RENTER: Mark logins received \u2550\u2550\u2550\n            $(document).on('click', '.tlp-confirm-logins', function() {\n                var lid=$(this).data('lease-id'); if(!confirm('Mark Step 1 complete \u2014 logins received?'))return;\n                $(this).prop('disabled',true).text('Confirming...');\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'confirm_logins',lease_id:lid,tlp_ajax_nonce:tlp_ajax.nonce},function(r){if(r.success){alert(r.data.message);tlp_refresh_chat(lid);}else{alert('Error: '+(r.data?.message||''));}});\n            });\n            \/\/ \u2550\u2550\u2550 RENTER: Request code \u2014 enters email, leaser sees masked \u2550\u2550\u2550\n            $(document).on('click', '.tlp-request-code-email', function() {\n                var lid=$(this).data('lease-id'),hint=$(this).data('hint')||'';\n                var email=prompt('Enter the email where the code will be sent:\\n'+(hint?'(Hint: '+hint+')':''));\n                if(!email||!email.trim())return;\n                var masked=email.replace(\/^(.)(.*)(@.*)$\/,function(m,a,b,c){return a+'***'+c;});\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'send_chat_message',lease_id:lid,message:'\ud83d\udce7 Please enter the verification code from email: '+masked,tlp_ajax_nonce:tlp_ajax.nonce},function(){tlp_poll_chat(lid);});\n            });\n            \/\/ \u2550\u2550\u2550 RENTER: Request code via phone \u2550\u2550\u2550\n            $(document).on('click', '.tlp-request-code-phone', function() {\n                var lid=$(this).data('lease-id'),hint=$(this).data('hint')||'';\n                var phone=prompt('Enter the phone number where the code will be sent:\\n'+(hint?'(Hint: '+hint+')':''));\n                if(!phone||!phone.trim())return;\n                var masked=phone.length>6?phone.substring(0,3)+'***'+phone.substring(phone.length-3):phone;\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'send_chat_message',lease_id:lid,message:'\ud83d\udcf1 Please enter the verification code from phone: '+masked,tlp_ajax_nonce:tlp_ajax.nonce},function(){tlp_poll_chat(lid);});\n            });\n            \/\/ \u2550\u2550\u2550 Password failed \u2550\u2550\u2550\n            $(document).on('click', '.tlp-hot-btn.password-failed', function() {\n                var lid=$(this).data('lease-id');\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'send_chat_message',lease_id:lid,message:'\u274c Password\/username failed. Please double-check and resend.',tlp_ajax_nonce:tlp_ajax.nonce},function(){tlp_poll_chat(lid);});\n            });\n            \/\/ \u2550\u2550\u2550 LEASER: Noted \u2550\u2550\u2550\n            $(document).on('click', '.tlp-hot-btn.noted-sending', function() {\n                var lid=$(this).data('lease-id');$(this).prop('disabled',true).text('Sent \u2713');\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'send_chat_message',lease_id:lid,message:'\ud83d\udc4d Noted! Getting the verification code now...',tlp_ajax_nonce:tlp_ajax.nonce},function(){tlp_poll_chat(lid);});\n            });\n            \/\/ \u2550\u2550\u2550 LEASER: Enter code via inline form \u2550\u2550\u2550\n            $(document).on('click', '.tlp-leaser-enter-code', function() {\n                var lid=$(this).data('lease-id'), type=$(this).data('type');\n                var formId='tlp-leaser-code-'+lid;\n                if($('#'+formId).length){$('#'+formId).remove();return;}\n                var label = type === 'email' ? '\ud83d\udce7 Enter the verification code from email' : '\ud83d\udcf1 Enter the verification code from phone';\n                var f='<div id=\"'+formId+'\" style=\"padding:10px 0;animation:tlp-msg-in .2s ease-out;\">'+\n                    '<div style=\"font-size:13px;font-weight:600;color:#1e40af;margin-bottom:6px;\">'+label+'<\/div>'+\n                    '<div style=\"display:flex;gap:8px;\">'+\n                    '<input type=\"text\" class=\"tlp-leaser-code-val\" placeholder=\"Enter code...\" style=\"flex:1;padding:10px;border:2px solid #3b82f6;border-radius:10px;font-size:18px;font-family:monospace;letter-spacing:3px;text-align:center;\" maxlength=\"10\">'+\n                    '<button class=\"tlp-leaser-code-send\" data-lease-id=\"'+lid+'\" data-type=\"'+type+'\" style=\"background:#3b82f6;color:#fff;border:none;padding:10px 16px;border-radius:10px;font-weight:700;cursor:pointer;\">Send<\/button>'+\n                    '<\/div><\/div>';\n                $(this).closest('.tlp-cx-code-panel').append(f);\n                $('#'+formId+' .tlp-leaser-code-val').focus();\n            });\n            \/\/ LEASER: Send the code\n            $(document).on('click', '.tlp-leaser-code-send', function() {\n                var lid=$(this).data('lease-id'), type=$(this).data('type');\n                var code=$(this).prev('.tlp-leaser-code-val').val().trim();\n                if(!code){alert('Enter the code first.');return;}\n                var emoji = type==='email' ? '\ud83d\udce7' : '\ud83d\udcf1';\n                var msg=emoji+' Verification code ('+type+'): '+code;\n                $(this).prop('disabled',true).text('Sent \u2713');\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                \/\/ Log the time for response speed tracking\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'send_chat_message',lease_id:lid,message:msg,tlp_ajax_nonce:tlp_ajax.nonce},function(){\n                    $('#tlp-leaser-code-'+lid).remove();\n                    \/\/ Also log code_sent action for speed tracking\n                    $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'log_code_response',lease_id:lid,tlp_ajax_nonce:tlp_ajax.nonce});\n                    tlp_poll_chat(lid);\n                });\n            });\n            \/\/ \u2550\u2550\u2550 LEASER: Code was received \u2550\u2550\u2550\n            $(document).on('click', '.tlp-code-received', function() {\n                var lid=$(this).data('lease-id');\n                $(this).prop('disabled',true).text('Confirmed \u2713');\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'send_chat_message',lease_id:lid,message:'\u2705 Code received and forwarded! Please check your login.',tlp_ajax_nonce:tlp_ajax.nonce},function(){tlp_poll_chat(lid);});\n            });\n            \/\/ \u2550\u2550\u2550 LEASER: Ask renter to resend \u2550\u2550\u2550\n            $(document).on('click', '.tlp-ask-resend', function() {\n                var lid=$(this).data('lease-id');\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'send_chat_message',lease_id:lid,message:'\ud83d\udd04 Could you please resend the code? I didn\\'t receive it or it expired.',tlp_ajax_nonce:tlp_ajax.nonce},function(){tlp_poll_chat(lid);});\n            });\n            \/\/ \u2550\u2550\u2550 RENTER: Check new code sent \u2550\u2550\u2550\n            $(document).on('click', '.tlp-check-new-code', function() {\n                var lid=$(this).data('lease-id');\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'send_chat_message',lease_id:lid,message:'\ud83d\udd0d Checking... Please confirm if a new code was sent to email or phone.',tlp_ajax_nonce:tlp_ajax.nonce},function(){tlp_poll_chat(lid);});\n            });\n            \/\/ \u2550\u2550\u2550 RENTER: Request time extension (codes taking too long) \u2550\u2550\u2550\n            $(document).on('click', '.tlp-request-extension', function() {\n                var lid=$(this).data('lease-id');\n                if(!confirm('Request a 10-minute time extension? This is for cases where codes are taking too long.'))return;\n                playSendSound(); tlpUserHasReplied[lid]=true;\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'send_chat_message',lease_id:lid,message:'\u23f0 Requesting a time extension \u2014 codes are taking longer than expected. Please bear with me.',tlp_ajax_nonce:tlp_ajax.nonce},function(){tlp_poll_chat(lid);});\n                \/\/ Notify admin about the extension request\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'request_extension',lease_id:lid,tlp_ajax_nonce:tlp_ajax.nonce});\n            });\n            \/\/ \u2550\u2550\u2550 RENTER: Login successful \u2014 escrow timer starts \u2550\u2550\u2550\n            $(document).on('click', '.tlp-confirm-codes', function() {\n                var lid=$(this).data('lease-id');\n                if(!confirm('Confirm login was successful?\\nThis starts the escrow countdown.'))return;\n                $(this).prop('disabled',true).text('Confirming...');\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'confirm_codes',lease_id:lid,tlp_ajax_nonce:tlp_ajax.nonce},function(r){if(r.success){alert(r.data.message);tlp_refresh_chat(lid);}else{alert('Error: '+(r.data?.message||''));}});\n            });\n            \/\/ \u2550\u2550\u2550 WALLET HISTORY \u2550\u2550\u2550\n            $(document).on('click', '.tlp-wallet-history', function() {\n                $.post(tlp_ajax.ajax_url,{action:'tlp_ajax_router',sub_action:'get_wallet_history',tlp_ajax_nonce:tlp_ajax.nonce},function(res){\n                    if(!res.success)return;var h='<div id=\"tlp-wallet-modal\" style=\"position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:100001;display:flex;align-items:center;justify-content:center;padding:16px;\"><div style=\"background:#fff;border-radius:20px;max-width:500px;width:100%;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;\"><div style=\"background:linear-gradient(135deg,#0f172a,#1e3a8a);color:#fff;padding:20px;flex-shrink:0;\"><div style=\"display:flex;justify-content:space-between;align-items:center;\"><div><strong style=\"font-size:18px;\">\ud83d\udcbc Wallet History<\/strong><br><span style=\"font-size:24px;font-weight:800;\">'+(res.data.balance||'0.00')+' coins<\/span><\/div><button onclick=\"jQuery(\\'#tlp-wallet-modal\\').remove();\" style=\"background:rgba(255,255,255,.2);color:#fff;border:none;width:34px;height:34px;border-radius:8px;font-size:18px;cursor:pointer;\">\u2715<\/button><\/div><\/div><div style=\"flex:1;overflow-y:auto;padding:12px;\">';\n                    if(res.data.transactions&&res.data.transactions.length){res.data.transactions.forEach(function(t){var cr=parseFloat(t.amount)>0,ic=cr?'\ud83d\udcb0':'\ud83d\udce4',cl=cr?'#16a34a':'#ef4444',sg=cr?'+':'-';h+='<div style=\"display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #f1f5f9;\"><div><span style=\"font-size:16px;margin-right:6px;\">'+ic+'<\/span><span style=\"font-size:13px;color:#334155;\">'+(t.description||t.type)+'<\/span><br><span style=\"font-size:11px;color:var(--tlp-text4,#94a3b8);\">'+t.time_ago+'<\/span><\/div><strong style=\"color:'+cl+';font-size:15px;\">'+sg+parseFloat(Math.abs(t.amount)).toFixed(2)+'<\/strong><\/div>';});}else{h+='<p style=\"text-align:center;color:var(--tlp-text4,#94a3b8);padding:40px;\">No transactions yet.<\/p>';}\n                    h+='<\/div><\/div><\/div>';$(h).appendTo('body');\n                });\n            });\n\n            \/\/ \u2550\u2550\u2550 Helper: Refresh chat modal without losing it \u2550\u2550\u2550\n            function tlp_refresh_chat(leaseId) {\n                $.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router', sub_action: 'get_chat_messages',\n                    lease_id: leaseId, tlp_ajax_nonce: tlp_ajax.nonce\n                }, function(chatRes) {\n                    if (chatRes && chatRes.success) {\n                        \/\/ Remove old chatbox for this lease\n                        $('#tlp-chatbox-' + leaseId).remove();\n                        if (chatPollIntervals[leaseId]) { clearInterval(chatPollIntervals[leaseId]); }\n                        \/\/ Rebuild in dock\n                        if (!$('#tlp-chat-dock').length) $('<div id=\"tlp-chat-dock\"><\/div>').appendTo('body');\n                        var chatHtml = tlp_build_chat_html(leaseId, chatRes.data);\n                        $('<div id=\"tlp-chatbox-' + leaseId + '\">' + chatHtml + '<\/div>').prependTo('#tlp-chat-dock');\n                        var msgsDiv = document.getElementById('tlp-cx-msgs-' + leaseId);\n                        if (msgsDiv) msgsDiv.scrollTop = msgsDiv.scrollHeight;\n                        tlp_start_timer(leaseId);\n                        chatPollIntervals[leaseId] = setInterval(function() { tlp_poll_chat(leaseId); }, 5000);\n                    }\n                });\n            }\n            \/\/ Minimize chat box (header click or minimize button)\n            $(document).on('click', '.tlp-chat-minimize', function(e) {\n                e.stopPropagation();\n                $(this).closest('.tlp-cx').addClass('tlp-cx-minimized');\n            });\n            \/\/ Close chat box (remove from dock, stop polling)\n            $(document).on('click', '.tlp-chat-close', function(e) {\n                e.stopPropagation();\n                var lid = $(this).data('lease-id');\n                $('#tlp-chatbox-' + lid).remove();\n                if (chatPollIntervals[lid]) { clearInterval(chatPollIntervals[lid]); delete chatPollIntervals[lid]; }\n            });\n            \/\/ Expand minimized chat by clicking its header\n            $(document).on('click', '.tlp-cx-minimized .tlp-cx-hdr', function(e) {\n                if ($(e.target).closest('.tlp-chat-close,.tlp-chat-minimize,.tlp-mute-btn').length) return;\n                $(this).closest('.tlp-cx').removeClass('tlp-cx-minimized');\n                var lid = $(this).closest('.tlp-cx').data('lease-id');\n                var md = document.getElementById('tlp-cx-msgs-' + lid);\n                if (md) md.scrollTop = md.scrollHeight;\n            });\n            $(document).on('click', '.tlp-mute-btn', function() {\n                isMuted = !isMuted;\n                localStorage.setItem('tlp_chat_muted', isMuted);\n                $(this).text(isMuted ? 'Unmute' : 'Mute');\n            });\n            $(document).on('click', '.tlp-open-dispute', function(e) {\n                e.preventDefault();\n                let leaseId = $(this).data('lease-id');\n                if (confirm('Before escalating, try resolving via chat. Proceed?')) {\n                    let reason = prompt('Enter dispute reason:');\n                    if (reason) {\n                        $.post(tlp_ajax.ajax_url, {\n                            action: 'tlp_ajax_router',\n                            sub_action: 'open_dispute',\n                            lease_id: leaseId,\n                            reason: reason,\n                            tlp_ajax_nonce: tlp_ajax.nonce\n                        }, function(response) {\n                            if (response && response.success) {\n                                alert(response.data && response.data.message ? response.data.message : 'Dispute opened');\n                                refreshListings();\n                            } else {\n                                let msg = (response && response.data && response.data.message) ? response.data.message : 'Failed to open dispute';\n                                alert(msg);\n                            }\n                        });\n                    }\n                }\n            });\n            \/\/ \u2550\u2550\u2550 REVIEW SYSTEM \u2550\u2550\u2550\n            \/\/ Open review modal\n            $(document).on('click', '.tlp-cx-review-trigger', function() {\n                let leaseId = $(this).data('lease-id');\n                $('#tlp-cx-review-' + leaseId).show();\n            });\n            \/\/ Close review modal\n            $(document).on('click', '.tlp-cx-review-cancel', function() {\n                let leaseId = $(this).data('lease-id');\n                $('#tlp-cx-review-' + leaseId).hide();\n            });\n            \/\/ Star slider \u2014 live emoji update\n            $(document).on('input', '.tlp-cx-score', function() {\n                let score = parseInt($(this).val());\n                let leaseId = $(this).data('lease-id');\n                let filled = '\u2b50'.repeat(score);\n                let empty = '\u2606'.repeat(5 - score);\n                $('#tlp-cx-stars-' + leaseId).text(filled + empty);\n            });\n            \/\/ Submit review\n            $(document).on('click', '.tlp-cx-submit-review', function() {\n                let leaseId = $(this).data('lease-id');\n                let score = $('.tlp-cx-score[data-lease-id=\"' + leaseId + '\"]').val();\n                let comment = $('.tlp-cx-comment[data-lease-id=\"' + leaseId + '\"]').val().trim();\n                if (!comment) { alert('Please write your remarks \u2014 this is mandatory.'); return; }\n                if (comment.length < 10) { alert('Please write at least 10 characters in your remarks.'); return; }\n                let btn = $(this);\n                btn.prop('disabled', true).text('Submitting...');\n                $.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router',\n                    sub_action: 'submit_rating',\n                    lease_id: leaseId,\n                    score: score,\n                    comment: comment,\n                    type: currentUserRole === 'leaser' ? 'renter' : 'leaser',\n                    perceived_leases: 0,\n                    tlp_ajax_nonce: tlp_ajax.nonce\n                }, function(response) {\n                    if (response && response.success) {\n                        alert(response.data?.message || 'Rating submitted!');\n                        $('#tlp-cx-review-' + leaseId).hide();\n                        tlp_poll_chat(leaseId);\n                    } else {\n                        alert('Error: ' + (response?.data?.message || 'Failed to submit'));\n                    }\n                    btn.prop('disabled', false).text('\u2b50 Submit Rating');\n                });\n            });\n            \/\/ Legacy review toggle (for non-chat contexts)\n            $(document).on('click', '.tlp-toggle-review, .tlp-open-review', function() {\n                let leaseId = $(this).data('lease-id');\n                \/\/ If inside chat modal, trigger the new review\n                if ($('#tlp-cx-review-' + leaseId).length) {\n                    $('#tlp-cx-review-' + leaseId).show();\n                    return;\n                }\n                \/\/ Otherwise show a standalone review modal\n                let modal = $('<div id=\"tlp-review-standalone\" style=\"position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:99999;display:flex;align-items:center;justify-content:center;padding:20px;\">' +\n                    '<div style=\"background:#fff;border-radius:20px;padding:32px;max-width:420px;width:100%;\">' +\n                    '<h3 style=\"margin:0 0 8px;text-align:center;font-size:20px;\">\u2b50 Rate Your Experience<\/h3>' +\n                    '<p style=\"text-align:center;color:var(--tlp-text3,#64748b);font-size:13px;margin:0 0 20px;\">Lease #' + leaseId + ' \u2014 Mandatory<\/p>' +\n                    '<div style=\"text-align:center;margin-bottom:16px;\">' +\n                    '<div id=\"tlp-sa-stars\" style=\"font-size:36px;cursor:pointer;\">\u2b50\u2b50\u2b50\u2606\u2606<\/div>' +\n                    '<input type=\"range\" id=\"tlp-sa-score\" min=\"1\" max=\"5\" value=\"3\" style=\"width:80%;accent-color:#f59e0b;\">' +\n                    '<\/div>' +\n                    '<textarea id=\"tlp-sa-comment\" placeholder=\"Write your remarks (mandatory)...\" rows=\"3\" style=\"width:100%;padding:12px;border:2px solid var(--tlp-border,#e2e8f0);border-radius:10px;font-family:inherit;resize:vertical;margin-bottom:12px;\"><\/textarea>' +\n                    '<button id=\"tlp-sa-submit\" data-lease-id=\"' + leaseId + '\" style=\"width:100%;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;padding:14px;border:none;border-radius:10px;font-size:16px;font-weight:700;cursor:pointer;\">\u2b50 Submit Rating<\/button>' +\n                    '<button onclick=\"jQuery(\\'#tlp-review-standalone\\').remove();\" style=\"width:100%;background:#f1f5f9;color:var(--tlp-text3,#64748b);padding:10px;border:none;border-radius:10px;font-size:13px;margin-top:8px;cursor:pointer;\">Cancel<\/button>' +\n                    '<\/div><\/div>');\n                modal.appendTo('body');\n                \/\/ Live star update for standalone\n                $(document).on('input', '#tlp-sa-score', function() {\n                    let s = parseInt($(this).val());\n                    $('#tlp-sa-stars').text('\u2b50'.repeat(s) + '\u2606'.repeat(5 - s));\n                });\n                \/\/ Submit standalone\n                $(document).on('click', '#tlp-sa-submit', function() {\n                    let lid = $(this).data('lease-id');\n                    let sc = $('#tlp-sa-score').val();\n                    let cm = $('#tlp-sa-comment').val().trim();\n                    if (!cm || cm.length < 10) { alert('Please write at least 10 characters.'); return; }\n                    $(this).prop('disabled', true).text('Submitting...');\n                    $.post(tlp_ajax.ajax_url, {\n                        action: 'tlp_ajax_router', sub_action: 'submit_rating',\n                        lease_id: lid, score: sc, comment: cm,\n                        type: currentUserRole === 'leaser' ? 'renter' : 'leaser',\n                        perceived_leases: 0, tlp_ajax_nonce: tlp_ajax.nonce\n                    }, function(r) {\n                        if (r?.success) { alert(r.data?.message || 'Submitted!'); $('#tlp-review-standalone').remove(); location.reload(); }\n                        else { alert('Error: ' + (r?.data?.message || 'Failed')); $('#tlp-sa-submit').prop('disabled', false).text('\u2b50 Submit Rating'); }\n                    });\n                });\n            });\n            function startVerificationTimer(leaseId) {\n                var timerEl = $('#tlp-timer-' + leaseId);\n                if (!timerEl.length) return;\n                var endTime = Date.now() + (30 * 60 * 1000);\n                var interval = setInterval(function() {\n                    var timeLeft = Math.max(0, Math.floor((endTime - Date.now()) \/ 1000));\n                    var mins = Math.floor(timeLeft \/ 60);\n                    var secs = timeLeft % 60;\n                    timerEl.text(mins + ':' + (secs < 10 ? '0' : '') + secs);\n                    if (timeLeft <= 0) {\n                        clearInterval(interval);\n                        $.post(tlp_ajax.ajax_url, {\n                            action: 'tlp_ajax_router',\n                            sub_action: 'all_clear',\n                            lease_id: leaseId,\n                            tlp_ajax_nonce: tlp_ajax.nonce\n                        });\n                    }\n                }, 1000);\n            }\n            $('.tlp-countdown').each(function() {\n                var leaseId = $(this).data('lease-id');\n                startVerificationTimer(leaseId);\n            });\n            $('#tlp-search').on('keyup', function() {\n                var searchTerm = $(this).val().toLowerCase();\n                $('.tlp-cards .tlp-card').each(function() {\n                    var cardText = $(this).text().toLowerCase();\n                    $(this).toggle(cardText.includes(searchTerm));\n                });\n            });\n            \/\/ View Picture inline toggle\n            $(document).on('click', '.tlp-view-picture-inline', function() {\n                var expand = $(this).next('.tlp-picture-expand');\n                expand.slideToggle(200);\n                $(this).text(expand.is(':visible') ? '\ud83d\udcf8 Hide Picture' : 'View Picture');\n            });\n            $(document).on('click', '.tlp-close-picture-inline', function() {\n                var expand = $(this).closest('.tlp-picture-expand');\n                expand.slideUp(200);\n                expand.prev('.tlp-view-picture-inline').text('View Picture');\n            });\n            \/\/ Report Account handler\n            $(document).on('click', '.tlp-report-account', function() {\n                var accountId = $(this).data('account-id');\n                var accountName = $(this).data('account-name') || accountId;\n                var reason = prompt('Why are you reporting @' + accountName + '?\\n\\n(e.g., fake followers, stolen account, inappropriate content, misleading info)');\n                if (!reason || !reason.trim()) return;\n                var btn = $(this);\n                btn.prop('disabled', true).text('Reporting...');\n                $.post(tlp_ajax.ajax_url, {\n                    action: 'tlp_ajax_router',\n                    sub_action: 'report_account',\n                    account_id: accountId,\n                    reason: reason,\n                    tlp_ajax_nonce: tlp_ajax.nonce\n                }, function(res) {\n                    if (res && res.success) {\n                        alert(res.data.message || 'Report submitted.');\n                        btn.text('\ud83d\udea9 Reported').css({background:'#fef2f2', color:'#dc2626', borderColor:'#fecaca'});\n                    } else {\n                        alert('Error: ' + (res?.data?.message || 'Failed'));\n                        btn.prop('disabled', false).text('\ud83d\udea9 Report');\n                    }\n                }).fail(function() {\n                    alert('Server error.');\n                    btn.prop('disabled', false).text('\ud83d\udea9 Report');\n                });\n            });\n            $(document).on('click', '#tlp-request-tokens', function() {\n                let amount = prompt('How many coins do you need? (minimum 100)', '500');\n                if (amount && parseInt(amount) >= 100) {\n                    $.post(tlp_ajax.ajax_url, {\n                        action: 'tlp_ajax_router',\n                        sub_action: 'request_tokens',\n                        amount: amount,\n                        tlp_ajax_nonce: tlp_ajax.nonce\n                    }, function(response) {\n                        if (response && response.success) {\n                            alert(response.data && response.data.message ? response.data.message : 'Request sent');\n                            refreshListings();\n                        } else {\n                            let msg = (response && response.data && response.data.message) ? response.data.message : 'Request failed';\n                            alert(msg);\n                        }\n                    });\n                } else if (amount) {\n                    alert('Minimum 100 coins required.');\n                }\n            });\n            \/\/ V124: Post account button \u2014 just shows the PHP-rendered modal\n            $('#tlp-post-account-btn').on('click', function() {\n                document.getElementById('tlp-v124-post-modal').style.display = 'flex';\n            });\n        });\n    <\/script>\n    <!-- V20: REDESIGNED POST ACCOUNT MODAL \u2014 Sale-first, follower-based pricing, credential collection -->\n        <div id=\"tlp-v124-post-modal\" style=\"display:none;position:fixed;inset:0;background:rgba(0,0,0,0.85);z-index:999999;align-items:center;justify-content:center;padding:16px;\">\n    <div style=\"background:var(--tlp-card,#fff);width:580px;max-width:96vw;max-height:92vh;overflow-y:auto;border-radius:20px;padding:0;box-shadow:0 25px 50px rgba(0,0,0,.5);position:relative;color:var(--tlp-text,#1e293b);\">\n    <div style=\"position:sticky;top:0;z-index:2;background:var(--tlp-card,#fff);padding:20px 28px 0;border-radius:20px 20px 0 0;\">\n        <button type=\"button\" onclick=\"document.getElementById('tlp-v124-post-modal').style.display='none'\" style=\"position:absolute;top:14px;right:16px;background:var(--tlp-bg3,#f1f5f9);border:none;width:36px;height:36px;border-radius:50%;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--tlp-text3,#64748b);\">&times;<\/button>\n        <h3 style=\"margin:0 0 4px;font-size:20px;font-weight:800;\">List Your Account for Sale<\/h3>\n        <p style=\"font-size:12px;color:var(--tlp-text3);margin:0 0 16px;\">Pricing is auto-calculated based on follower count. Fill in your details below.<\/p>\n        <div id=\"tlp-post-steps\" style=\"display:flex;gap:4px;padding-bottom:16px;border-bottom:1px solid var(--tlp-border,#e2e8f0);\">\n            <div class=\"tlp-post-step\" data-step=\"1\" style=\"flex:1;height:4px;border-radius:2px;background:#4f46e5;transition:background .2s;\"><\/div>\n            <div class=\"tlp-post-step\" data-step=\"2\" style=\"flex:1;height:4px;border-radius:2px;background:var(--tlp-border,#e2e8f0);transition:background .2s;\"><\/div>\n            <div class=\"tlp-post-step\" data-step=\"3\" style=\"flex:1;height:4px;border-radius:2px;background:var(--tlp-border,#e2e8f0);transition:background .2s;\"><\/div>\n        <\/div>\n    <\/div>\n    <div style=\"padding:20px 28px 28px;\">\n\n    <!-- STEP 1: Account Details -->\n    <div id=\"tlp-post-s1\">\n        <div style=\"font-size:13px;font-weight:700;margin-bottom:14px;\">Step 1 \u2014 Account details<\/div>\n        <label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Platform *<\/label>\n        <div id=\"tlp-v124-platform-grid\" style=\"display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:14px;\">\n            <label style=\"cursor:pointer;\"><input type=\"radio\" name=\"tlp_v20_platform\" value=\"tiktok\" checked style=\"display:none;\"><div class=\"tlp-plat-card\" style=\"border:2px solid #4f46e5;border-radius:10px;padding:8px 4px;text-align:center;font-size:10px;font-weight:600;color:var(--tlp-text2);transition:all .15s;\"><div style=\"font-size:20px;\">\ud83c\udfb5<\/div>TikTok<\/div><\/label>\n            <label style=\"cursor:pointer;\"><input type=\"radio\" name=\"tlp_v20_platform\" value=\"instagram\" style=\"display:none;\"><div class=\"tlp-plat-card\" style=\"border:2px solid var(--tlp-border,#e2e8f0);border-radius:10px;padding:8px 4px;text-align:center;font-size:10px;font-weight:600;color:var(--tlp-text2);\"><div style=\"font-size:20px;\">\ud83d\udcf8<\/div>Instagram<\/div><\/label>\n            <label style=\"cursor:pointer;\"><input type=\"radio\" name=\"tlp_v20_platform\" value=\"facebook\" style=\"display:none;\"><div class=\"tlp-plat-card\" style=\"border:2px solid var(--tlp-border,#e2e8f0);border-radius:10px;padding:8px 4px;text-align:center;font-size:10px;font-weight:600;color:var(--tlp-text2);\"><div style=\"font-size:20px;\">\ud83d\udcd8<\/div>Facebook<\/div><\/label>\n            <label style=\"cursor:pointer;\"><input type=\"radio\" name=\"tlp_v20_platform\" value=\"youtube\" style=\"display:none;\"><div class=\"tlp-plat-card\" style=\"border:2px solid var(--tlp-border,#e2e8f0);border-radius:10px;padding:8px 4px;text-align:center;font-size:10px;font-weight:600;color:var(--tlp-text2);\"><div style=\"font-size:20px;\">\ud83c\udfac<\/div>YouTube<\/div><\/label>\n            <label style=\"cursor:pointer;\"><input type=\"radio\" name=\"tlp_v20_platform\" value=\"twitter\" style=\"display:none;\"><div class=\"tlp-plat-card\" style=\"border:2px solid var(--tlp-border,#e2e8f0);border-radius:10px;padding:8px 4px;text-align:center;font-size:10px;font-weight:600;color:var(--tlp-text2);\"><div style=\"font-size:20px;\">\ud83d\udc26<\/div>Twitter\/X<\/div><\/label>\n            <label style=\"cursor:pointer;\"><input type=\"radio\" name=\"tlp_v20_platform\" value=\"snapchat\" style=\"display:none;\"><div class=\"tlp-plat-card\" style=\"border:2px solid var(--tlp-border,#e2e8f0);border-radius:10px;padding:8px 4px;text-align:center;font-size:10px;font-weight:600;color:var(--tlp-text2);\"><div style=\"font-size:20px;\">\ud83d\udc7b<\/div>Snapchat<\/div><\/label>\n            <label style=\"cursor:pointer;\"><input type=\"radio\" name=\"tlp_v20_platform\" value=\"onlyfans\" style=\"display:none;\"><div class=\"tlp-plat-card\" style=\"border:2px solid var(--tlp-border,#e2e8f0);border-radius:10px;padding:8px 4px;text-align:center;font-size:10px;font-weight:600;color:var(--tlp-text2);\"><div style=\"font-size:20px;\">\ud83d\udd25<\/div>OnlyFans<\/div><\/label>\n            <label style=\"cursor:pointer;\"><input type=\"radio\" name=\"tlp_v20_platform\" value=\"other\" style=\"display:none;\"><div class=\"tlp-plat-card\" style=\"border:2px solid var(--tlp-border,#e2e8f0);border-radius:10px;padding:8px 4px;text-align:center;font-size:10px;font-weight:600;color:var(--tlp-text2);\"><div style=\"font-size:20px;\">\ud83c\udff7\ufe0f<\/div>Other<\/div><\/label>\n        <\/div>\n        <script>document.getElementById('tlp-v124-platform-grid').addEventListener('change',function(e){this.querySelectorAll('.tlp-plat-card').forEach(function(c){c.style.borderColor='var(--tlp-border,#e2e8f0)';c.style.boxShadow='none';});if(e.target.checked){var card=e.target.nextElementSibling;card.style.borderColor='#4f46e5';card.style.boxShadow='0 0 0 2px rgba(79,70,229,.15)';}});<\/script>\n\n        <label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Username or profile URL *<\/label>\n        <input type=\"text\" id=\"tlp-v124-url\" placeholder=\"@username or paste profile link\" style=\"width:100%;padding:12px;border:2px solid var(--tlp-border);border-radius:10px;font-size:14px;background:var(--tlp-inp);color:var(--tlp-inp-t);margin-bottom:12px;\">\n\n        <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;\">\n            <div><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Followers *<\/label>\n            <input type=\"number\" id=\"tlp-v124-followers\" min=\"1\" placeholder=\"e.g. 25000\" oninput=\"tlpV20CalcPrice()\" style=\"width:100%;padding:12px;border:2px solid var(--tlp-border);border-radius:10px;font-size:14px;background:var(--tlp-inp);color:var(--tlp-inp-t);\"><\/div>\n            <div><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Content niche *<\/label>\n            <input type=\"text\" id=\"tlp-v124-desc\" placeholder=\"Fashion, comedy, dance...\" style=\"width:100%;padding:12px;border:2px solid var(--tlp-border);border-radius:10px;font-size:14px;background:var(--tlp-inp);color:var(--tlp-inp-t);\"><\/div>\n        <\/div>\n\n        <div id=\"tlp-v20-price-card\" style=\"background:linear-gradient(135deg,rgba(16,185,129,.06),rgba(5,150,105,.04));border:1px solid rgba(16,185,129,.2);border-radius:12px;padding:16px;margin-bottom:14px;\">\n            <div style=\"display:flex;align-items:center;gap:8px;margin-bottom:8px;\"><span style=\"font-size:18px;\">\ud83d\udcb0<\/span><strong style=\"font-size:14px;\">Calculated price<\/strong><\/div>\n            <div style=\"display:flex;gap:16px;flex-wrap:wrap;\">\n                <div style=\"flex:1;min-width:140px;\">\n                    <div style=\"font-size:11px;color:var(--tlp-text3);margin-bottom:2px;\">Sale price<\/div>\n                    <div id=\"tlp-v20-sale-display\" style=\"font-size:22px;font-weight:800;color:#059669;\">\u2014<\/div>\n                    <div id=\"tlp-v20-sale-usd\" style=\"font-size:12px;color:var(--tlp-text3);margin-top:1px;\"><\/div>\n                <\/div>\n                <div style=\"flex:1;min-width:140px;\">\n                    <div style=\"font-size:11px;color:var(--tlp-text3);margin-bottom:2px;\">Lease price \/ day<\/div>\n                    <div id=\"tlp-v20-lease-display\" style=\"font-size:22px;font-weight:800;color:#4f46e5;\">\u2014<\/div>\n                    <div id=\"tlp-v20-lease-usd\" style=\"font-size:12px;color:var(--tlp-text3);margin-top:1px;\"><\/div>\n                <\/div>            <\/div>\n            <div id=\"tlp-v20-price-range\" style=\"margin-top:8px;font-size:10px;color:var(--tlp-text3);display:none;\">\ud83d\udcca Multiplier: <span id=\"tlp-v20-mult-val\">\u2014<\/span> \u00b7 Range: <span id=\"tlp-v20-range-val\">\u2014<\/span><\/div>\n        <\/div>\n\n        <div style=\"margin-bottom:14px;\"><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Your asking price (optional)<\/label>\n        <input type=\"number\" id=\"tlp-v124-sale-price\" min=\"0\" placeholder=\"Leave empty to use calculated price\" oninput=\"tlpV20ValidatePrice()\" style=\"width:100%;padding:12px;border:2px solid var(--tlp-border);border-radius:10px;font-size:14px;background:var(--tlp-inp);color:var(--tlp-inp-t);\">\n        <div id=\"tlp-v20-price-hint\" style=\"font-size:10px;margin-top:4px;color:var(--tlp-text4);\"><\/div><\/div>\n\n                <label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Also available for lease?<\/label>\n        <div style=\"display:flex;gap:12px;margin-bottom:14px;\">\n            <label style=\"cursor:pointer;font-size:13px;color:var(--tlp-text2);display:flex;align-items:center;gap:4px;\"><input type=\"radio\" name=\"tlp_v20_avail\" value=\"buy\" checked> Sale only<\/label>\n            <label style=\"cursor:pointer;font-size:13px;color:var(--tlp-text2);display:flex;align-items:center;gap:4px;\"><input type=\"radio\" name=\"tlp_v20_avail\" value=\"both\"> Sale + Lease<\/label>\n        <\/div>\n        \n        <button type=\"button\" onclick=\"tlpV20GoStep(2)\" style=\"width:100%;padding:14px;font-size:14px;font-weight:700;background:#4f46e5;color:#fff;border:none;border-radius:12px;cursor:pointer;\">Next \u2014 Account credentials \u2192<\/button>\n    <\/div>\n\n    <!-- STEP 2: Credentials -->\n    <div id=\"tlp-post-s2\" style=\"display:none;\">\n        <div style=\"font-size:13px;font-weight:700;margin-bottom:6px;\">Step 2 \u2014 Account credentials<\/div>\n        <p style=\"font-size:11px;color:var(--tlp-text3);margin:0 0 14px;\">Your credentials are securely stored using one-way hashing. We never display your raw password.<\/p>\n        <div style=\"background:var(--tlp-bg2,#f8fafc);border:1px solid var(--tlp-border);border-radius:12px;padding:16px;margin-bottom:14px;\">\n            <label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">How do you log in to this account? *<\/label>\n            <div style=\"display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;\">\n                <label style=\"cursor:pointer;display:flex;align-items:center;gap:3px;\"><input type=\"checkbox\" id=\"tlp-v20-login-email\" checked onchange=\"tlpV20ToggleLogin()\"><span style=\"font-size:12px;color:var(--tlp-text2);\">\ud83d\udce7 Email<\/span><\/label>\n                <label style=\"cursor:pointer;display:flex;align-items:center;gap:3px;\"><input type=\"checkbox\" id=\"tlp-v20-login-phone\" onchange=\"tlpV20ToggleLogin()\"><span style=\"font-size:12px;color:var(--tlp-text2);\">\ud83d\udcf1 Phone<\/span><\/label>\n                <label style=\"cursor:pointer;display:flex;align-items:center;gap:3px;\"><input type=\"checkbox\" id=\"tlp-v20-login-username\" onchange=\"tlpV20ToggleLogin()\"><span style=\"font-size:12px;color:var(--tlp-text2);\">\ud83d\udc64 Username<\/span><\/label>\n            <\/div>\n            <div id=\"tlp-v20-field-email\" style=\"margin-bottom:10px;\"><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Account login email *<\/label>\n            <input type=\"email\" id=\"tlp-v20-acct-email\" placeholder=\"email@example.com\" style=\"width:100%;padding:10px;border:2px solid var(--tlp-border);border-radius:8px;font-size:13px;background:var(--tlp-inp);color:var(--tlp-inp-t);\"><\/div>\n            <div id=\"tlp-v20-field-phone\" style=\"display:none;margin-bottom:10px;\"><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Account login phone *<\/label>\n            <input type=\"tel\" id=\"tlp-v20-acct-phone\" placeholder=\"+2547...\" style=\"width:100%;padding:10px;border:2px solid var(--tlp-border);border-radius:8px;font-size:13px;background:var(--tlp-inp);color:var(--tlp-inp-t);\"><\/div>\n            <div id=\"tlp-v20-field-username\" style=\"display:none;margin-bottom:10px;\"><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Login username *<\/label>\n            <input type=\"text\" id=\"tlp-v20-acct-username\" placeholder=\"@username\" style=\"width:100%;padding:10px;border:2px solid var(--tlp-border);border-radius:8px;font-size:13px;background:var(--tlp-inp);color:var(--tlp-inp-t);\"><\/div>\n            <div style=\"margin-bottom:10px;\"><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Account password *<\/label>\n            <div style=\"position:relative;\"><input type=\"password\" id=\"tlp-v20-acct-pass\" placeholder=\"Your account password\" style=\"width:100%;padding:10px 40px 10px 10px;border:2px solid var(--tlp-border);border-radius:8px;font-size:13px;background:var(--tlp-inp);color:var(--tlp-inp-t);\">\n            <button type=\"button\" onclick=\"var p=document.getElementById('tlp-v20-acct-pass');p.type=p.type==='password'?'text':'password';this.textContent=p.type==='password'?'\ud83d\udc41':'\ud83d\udd12';\" style=\"position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:14px;\">\ud83d\udc41<\/button><\/div>\n            <div style=\"display:flex;align-items:center;gap:4px;margin-top:4px;\"><span style=\"font-size:10px;\">\ud83d\udd12<\/span><span style=\"font-size:10px;color:var(--tlp-text4);\">Stored using one-way hashing \u2014 cannot be viewed once saved<\/span><\/div><\/div>\n            <div><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Recovery phone\/email (optional)<\/label>\n            <input type=\"text\" id=\"tlp-v20-recovery\" placeholder=\"Recovery phone or email if different\" style=\"width:100%;padding:10px;border:2px solid var(--tlp-border);border-radius:8px;font-size:13px;background:var(--tlp-inp);color:var(--tlp-inp-t);\">\n            <div style=\"font-size:9px;color:var(--tlp-text4);margin-top:2px;\">Used if buyer needs help during transfer<\/div><\/div>\n        <\/div>\n        <div style=\"display:flex;gap:10px;\">\n            <button type=\"button\" onclick=\"tlpV20GoStep(1)\" style=\"padding:14px 20px;font-size:13px;font-weight:600;background:var(--tlp-bg3);color:var(--tlp-text);border:none;border-radius:12px;cursor:pointer;\">\u2190 Back<\/button>\n            <button type=\"button\" onclick=\"tlpV20GoStep(3)\" style=\"flex:1;padding:14px;font-size:14px;font-weight:700;background:#4f46e5;color:#fff;border:none;border-radius:12px;cursor:pointer;\">Next \u2014 Contact & confirm \u2192<\/button>\n        <\/div>\n    <\/div>\n\n    <!-- STEP 3: Contact & Terms -->\n    <div id=\"tlp-post-s3\" style=\"display:none;\">\n        <div style=\"font-size:13px;font-weight:700;margin-bottom:14px;\">Step 3 \u2014 Contact & confirmation<\/div>\n        <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;\">\n            <div><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">WhatsApp *<\/label>\n            <input type=\"tel\" id=\"tlp-v124-whatsapp\" placeholder=\"+2547...\" style=\"width:100%;padding:10px;border:2px solid var(--tlp-border);border-radius:10px;font-size:13px;background:var(--tlp-inp);color:var(--tlp-inp-t);\"><\/div>\n            <div><label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">M-Pesa *<\/label>\n            <input type=\"tel\" id=\"tlp-v124-mpesa\" placeholder=\"07...\" style=\"width:100%;padding:10px;border:2px solid var(--tlp-border);border-radius:10px;font-size:13px;background:var(--tlp-inp);color:var(--tlp-inp-t);\"><\/div>\n        <\/div>\n        <label style=\"display:block;margin:0 0 4px;font-weight:600;font-size:12px;color:var(--tlp-text2);\">Account screenshot (JPG\/PNG, max 10MB)<\/label>\n        <input type=\"file\" id=\"tlp-v124-image\" accept=\"image\/jpeg,image\/png,image\/webp\" style=\"width:100%;padding:10px;border:2px dashed var(--tlp-border);border-radius:10px;background:var(--tlp-bg2);margin-bottom:14px;\">\n        <div style=\"background:var(--tlp-bg2);border:1px solid var(--tlp-border);border-radius:12px;padding:14px;margin-bottom:16px;\">\n            <label style=\"display:flex;align-items:flex-start;gap:8px;cursor:pointer;font-size:12px;color:var(--tlp-text2);\"><input type=\"checkbox\" id=\"tlp-v124-agree\" style=\"margin-top:2px;\">\n            <span>I confirm that I am the <strong>legitimate owner<\/strong> of this account. I accept full liability for any disputes or claims. I understand my credentials will be securely stored and shared with verified buyers during the transfer process. I agree to the platform terms and conditions.<\/span><\/label>\n        <\/div>\n        <div style=\"display:flex;gap:10px;\">\n            <button type=\"button\" onclick=\"tlpV20GoStep(2)\" style=\"padding:14px 20px;font-size:13px;font-weight:600;background:var(--tlp-bg3);color:var(--tlp-text);border:none;border-radius:12px;cursor:pointer;\">\u2190 Back<\/button>\n            <button type=\"button\" onclick=\"tlpV20Submit()\" id=\"tlp-v124-submit-btn\" style=\"flex:1;padding:14px;font-size:15px;font-weight:700;background:#16a34a;color:#fff;border:none;border-radius:12px;cursor:pointer;\">Submit for Approval<\/button>\n        <\/div>\n        <div id=\"tlp-v124-status\" style=\"text-align:center;margin-top:10px;font-size:12px;\"><\/div>\n    <\/div>\n    <\/div><\/div><\/div>\n    <script>\n    var PE={max:0.6,min:0.4,small:2500,large:5000,leaseDiv:3,base:1,usdRate:130,maxLease:300,leasingOn:true};\n    function tlpV20Kes2Usd(kes){return(kes\/PE.usdRate).toFixed(2);}\n    function tlpV20DualPrice(kes){return 'KES '+kes.toLocaleString()+' (~$'+tlpV20Kes2Usd(kes)+' USD)';}\n    function tlpV20CalcMultiplier(f){if(f<=PE.small)return PE.max;if(f>=PE.large)return PE.min;return PE.max-((f-PE.small)\/(PE.large-PE.small))*(PE.max-PE.min);}\n    function tlpV20CalcPrice(){\n        var f=parseInt(document.getElementById('tlp-v124-followers').value)||0;\n        var sE=document.getElementById('tlp-v20-sale-display'),lE=document.getElementById('tlp-v20-lease-display'),rE=document.getElementById('tlp-v20-price-range');\n        var sU=document.getElementById('tlp-v20-sale-usd'),lU=document.getElementById('tlp-v20-lease-usd');\n        if(f<1){sE.textContent='\u2014';if(lE)lE.textContent='\u2014';if(sU)sU.textContent='';if(lU)lU.textContent='';rE.style.display='none';return;}\n\n        var p=0,m=0,isTest=false,tierLabel='';\n        \/\/ Micro-tier pricing for small accounts\n        if(f<20){\n            p=1;m=0;isTest=true;tierLabel='\ud83e\uddea Test account (KES 1)';\n        }else if(f<=50){\n            p=100;m=+(100\/f).toFixed(4);tierLabel='Micro tier: 20\u201350 followers';\n        }else if(f<=100){\n            var r=(f-50)\/50;p=Math.round(100+r*50);m=+(p\/f).toFixed(4);tierLabel='Small tier: 51\u2013100 followers';\n        }else if(f<=200){\n            var r=(f-100)\/100;p=Math.round(150+r*50);m=+(p\/f).toFixed(4);tierLabel='Growing tier: 101\u2013200 followers';\n        }else if(f<=500){\n            var r=(f-200)\/300;p=Math.round(200+r*200);m=+(p\/f).toFixed(4);tierLabel='Mid tier: 201\u2013500 followers';\n        }else if(f<1000){\n            var r=(f-500)\/500;p=Math.round(400+r*200);m=+(p\/f).toFixed(4);tierLabel='Rising tier: 501\u2013999 followers';\n        }else{\n            \/\/ Standard multiplier engine for 1000+\n            m=tlpV20CalcMultiplier(f);\n            p=Math.round(f*PE.base*m);\n            tierLabel=f>=PE.large?'Big account (flat '+PE.min+')':'Standard pricing';\n        }\n\n        var leaseP=isTest?1:Math.round(p\/PE.leaseDiv);\n        if(!isTest&&PE.maxLease>0&&leaseP>PE.maxLease) leaseP=PE.maxLease;\n\n        sE.textContent='KES '+p.toLocaleString();\n        if(sU)sU.textContent=isTest?'\ud83e\uddea Test only':'\u2248 $'+tlpV20Kes2Usd(p)+' USD';\n        if(lE)lE.textContent='KES '+leaseP.toLocaleString()+'\/day';\n        if(lU)lU.textContent=isTest?'':'\u2248 $'+tlpV20Kes2Usd(leaseP)+' USD\/day'+((!isTest&&leaseP>=PE.maxLease)?' (max)':'');\n        rE.style.display='block';\n        document.getElementById('tlp-v20-mult-val').textContent=isTest?'test':m.toFixed(3);\n        document.getElementById('tlp-v20-range-val').textContent=tierLabel;\n\n        \/\/ For micro-tier, range is narrower\n        var pMin,pMax;\n        if(isTest){pMin=1;pMax=1;}\n        else if(f<1000){pMin=Math.max(1,Math.round(p*0.7));pMax=Math.round(p*1.3);}\n        else{pMin=Math.round(f*PE.base*PE.min);pMax=Math.round(f*PE.base*PE.max);}\n        window._tlpV20AutoPrice=p;window._tlpV20PriceMin=pMin;window._tlpV20PriceMax=pMax;window._tlpV20IsTest=isTest;\n        tlpV20ValidatePrice();\n    }\n    function tlpV20ValidatePrice(){var v=parseInt(document.getElementById('tlp-v124-sale-price').value)||0,h=document.getElementById('tlp-v20-price-hint');if(!v){h.textContent='Using auto-calculated price';h.style.color='var(--tlp-text4)';return;}if(v<(window._tlpV20PriceMin||0)){h.textContent='\u26a0 Below KES '+((window._tlpV20PriceMin||0).toLocaleString())+' minimum \u2014 admin may adjust';h.style.color='#dc2626';}else if(v>(window._tlpV20PriceMax||999999)){h.textContent='\u26a0 Above KES '+((window._tlpV20PriceMax||0).toLocaleString())+' maximum \u2014 admin may adjust';h.style.color='#f59e0b';}else{h.textContent='\u2713 Within range \u2014 KES '+v.toLocaleString()+' ($'+tlpV20Kes2Usd(v)+')';h.style.color='#16a34a';}}\n    function tlpV20GoStep(n){\n        if(n===2){if(!document.getElementById('tlp-v124-url').value.trim()){alert('Please enter the account username or URL.');return;}if(!document.getElementById('tlp-v124-followers').value||parseInt(document.getElementById('tlp-v124-followers').value)<1){alert('Please enter the follower count.');return;}if(!document.getElementById('tlp-v124-desc').value.trim()){alert('Please describe the content niche.');return;}}\n        if(n===3){if(!document.getElementById('tlp-v20-acct-pass').value.trim()){alert('Please enter the account password.');return;}if(document.getElementById('tlp-v20-login-email').checked&&!document.getElementById('tlp-v20-acct-email').value.trim()){alert('Please enter the account login email.');return;}if(document.getElementById('tlp-v20-login-phone').checked&&!document.getElementById('tlp-v20-acct-phone').value.trim()){alert('Please enter the login phone number.');return;}}\n        document.getElementById('tlp-post-s1').style.display=n===1?'block':'none';document.getElementById('tlp-post-s2').style.display=n===2?'block':'none';document.getElementById('tlp-post-s3').style.display=n===3?'block':'none';\n        document.querySelectorAll('.tlp-post-step').forEach(function(s,i){s.style.background=(i+1)<=n?'#4f46e5':'var(--tlp-border,#e2e8f0)';});\n    }\n    function tlpV20ToggleLogin(){document.getElementById('tlp-v20-field-email').style.display=document.getElementById('tlp-v20-login-email').checked?'block':'none';document.getElementById('tlp-v20-field-phone').style.display=document.getElementById('tlp-v20-login-phone').checked?'block':'none';document.getElementById('tlp-v20-field-username').style.display=document.getElementById('tlp-v20-login-username').checked?'block':'none';}\n    function tlpV20Submit(){\n        var btn=document.getElementById('tlp-v124-submit-btn'),status=document.getElementById('tlp-v124-status');\n        if(!document.getElementById('tlp-v124-agree').checked){alert('Please accept the terms and conditions.');return;}\n        if(!document.getElementById('tlp-v124-whatsapp').value.trim()){alert('Please enter your WhatsApp number.');return;}\n        btn.disabled=true;var spinCSS=document.getElementById('tlp-spin-css');if(!spinCSS){var s=document.createElement('style');s.id='tlp-spin-css';s.textContent='@keyframes tlpSpin{to{transform:rotate(360deg)}}';document.head.appendChild(s);}\n        btn.innerHTML='<span style=\"display:inline-flex;align-items:center;gap:6px;\"><span style=\"width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;display:inline-block;animation:tlpSpin .6s linear infinite;\"><\/span> Submitting...<\/span>';\n        status.innerHTML='<span style=\"color:#f59e0b;\">Uploading and processing...<\/span>';\n        var fd=new FormData();fd.append('action','tlp_ajax_router');fd.append('sub_action','post_new_account');fd.append('tlp_ajax_nonce',tlp_ajax.nonce);\n        fd.append('profile_url',document.getElementById('tlp-v124-url').value.trim());fd.append('followers',document.getElementById('tlp-v124-followers').value);\n        fd.append('description',document.getElementById('tlp-v124-desc').value);fd.append('niche',document.querySelector('input[name=\"tlp_v20_platform\"]:checked').value);\n        fd.append('whatsapp',document.getElementById('tlp-v124-whatsapp').value);fd.append('mpesa',document.getElementById('tlp-v124-mpesa').value||'');\n        var autoP=window._tlpV20AutoPrice||0,userP=parseInt(document.getElementById('tlp-v124-sale-price').value)||0;\n        fd.append('sale_price',userP>0?userP:autoP);fd.append('price_per_day',Math.round((userP>0?userP:autoP)\/PE.leaseDiv));\n        var avR=document.querySelector('input[name=\"tlp_v20_avail\"]:checked');fd.append('availability_mode',avR?avR.value:'buy');\n        if(userP>0)fd.append('suggested_sale_price',userP);\n        var lm=[];if(document.getElementById('tlp-v20-login-email').checked)lm.push('email');if(document.getElementById('tlp-v20-login-phone').checked)lm.push('phone');if(document.getElementById('tlp-v20-login-username').checked)lm.push('username');\n        fd.append('login_methods',lm.join(','));fd.append('acct_email',document.getElementById('tlp-v20-acct-email').value||'');\n        fd.append('acct_phone',document.getElementById('tlp-v20-acct-phone').value||'');fd.append('acct_username',document.getElementById('tlp-v20-acct-username').value||'');\n        fd.append('acct_password',document.getElementById('tlp-v20-acct-pass').value);fd.append('recovery_info',document.getElementById('tlp-v20-recovery').value||'');\n        var img=document.getElementById('tlp-v124-image');if(img.files&&img.files[0])fd.append('image',img.files[0]);\n        var xhr=new XMLHttpRequest();xhr.open('POST',tlp_ajax.ajax_url,true);\n        xhr.onload=function(){try{var r=JSON.parse(xhr.responseText);if(r&&r.success){btn.innerHTML='&#10003; Submitted!';btn.style.background='#16a34a';status.innerHTML='<span style=\"color:#16a34a;font-weight:700;\">&#10003; Account submitted! Refreshing...<\/span>';setTimeout(function(){document.getElementById('tlp-v124-post-modal').style.display='none';location.reload();},2000);}else{alert((r&&r.data&&r.data.message)||'Failed');btn.disabled=false;btn.textContent='Submit for Approval';status.textContent='';}}catch(e){alert('Server error.');btn.disabled=false;btn.textContent='Submit for Approval';status.textContent='';}};\n        xhr.onerror=function(){alert('Connection error.');btn.disabled=false;btn.textContent='Submit for Approval';status.textContent='';};xhr.send(fd);\n    }\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"templates\/fullwidth.php","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/qipqop.com\/tiktok\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qipqop.com\/tiktok\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/qipqop.com\/tiktok\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/qipqop.com\/tiktok\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qipqop.com\/tiktok\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":0,"href":"https:\/\/qipqop.com\/tiktok\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"wp:attachment":[{"href":"https:\/\/qipqop.com\/tiktok\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}