Загрузка данных


// ============================================================
//  Route Bot — RAGE MP Client Script
//  F5  → старт / стоп
//  F6  → выгрузить скрипт
// ============================================================

var ROUTES = {
    1: {
        0: [
            {x:32.2841,  y:-375.8669, z:45.5035},
            {x:35.3826,  y:-382.2754, z:45.5011},
            {x:51.9633,  y:-388.209,  z:45.5537},
            {x:47.8488,  y:-397.3483, z:45.5545},
            {x:46.1522,  y:-403.499,  z:45.5595},
            {x:46.1493,  y:-409.9039, z:45.5581},
            {x:45.8323,  y:-410.9276, z:45.5589},
        ],
        1: [
            {x:32.5587,  y:-375.5934, z:45.5574},
            {x:34.736,   y:-381.7086, z:45.5574},
            {x:49.9655,  y:-387.5345, z:45.5594},
            {x:54.5514,  y:-384.3559, z:45.5517},
            {x:57.8387,  y:-377.4317, z:45.5591},
            {x:57.3149,  y:-377.4927, z:45.5592},
        ],
        2: [
            {x:33.1002,  y:-375.2019, z:45.5574},
            {x:33.1366,  y:-381.7099, z:45.5574},
            {x:31.2809,  y:-386.848,  z:45.5574},
            {x:31.1013,  y:-391.8215, z:45.5555},
            {x:27.6911,  y:-397.2025, z:45.5574},
            {x:22.8541,  y:-408.4094, z:45.5589},
            {x:21.5217,  y:-408.2098, z:45.7391},
        ],
        3: [
            {x:32.9671,  y:-374.9251, z:45.5574},
            {x:33.6029,  y:-380.8379, z:45.5574},
            {x:31.0079,  y:-387.7186, z:45.5533},
            {x:27.4708,  y:-398.3781, z:45.5522},
            {x:27.3931,  y:-408.1246, z:45.5912},
            {x:33.6353,  y:-411.08,   z:45.5705},
            {x:38.0326,  y:-413.3642, z:45.5603},
            {x:34.4947,  y:-421.1559, z:45.5562},
            {x:31.4005,  y:-430.14,   z:45.5589},
            {x:31.8532,  y:-433.2453, z:45.558},
            {x:33.3348,  y:-437.3776, z:45.5382},
            {x:32.7062,  y:-444.8352, z:45.5577},
            {x:32.7728,  y:-445.3491, z:45.5577},
        ],
    },
    2: {
        0: [
            {x:44.7781,  y:-410.7978, z:45.559},
            {x:40.7621,  y:-412.7346, z:45.6014},
            {x:33.861,   y:-410.8508, z:45.5787},
            {x:25.7788,  y:-408.0394, z:45.5758},
            {x:22.6847,  y:-407.9226, z:45.5618},
            {x:21.5217,  y:-408.2098, z:45.7391},
        ],
        1: [
            {x:45.156,   y:-410.9401, z:45.559},
            {x:45.2104,  y:-408.1404, z:45.559},
            {x:46.4074,  y:-402.8054, z:45.5565},
            {x:48.9048,  y:-395.3026, z:45.5595},
            {x:52.3795,  y:-386.1622, z:45.5592},
            {x:54.782,   y:-382.5772, z:45.5429},
            {x:57.4387,  y:-377.983,  z:45.5592},
            {x:57.3149,  y:-377.4927, z:45.5592},
        ],
        2: [
            {x:44.906,   y:-411.0331, z:45.5589},
            {x:41.123,   y:-412.3185, z:45.5864},
            {x:32.032,   y:-409.6026, z:45.5795},
            {x:34.6916,  y:-395.7976, z:45.5625},
            {x:39.066,   y:-383.7132, z:45.5574},
            {x:34.0252,  y:-381.5273, z:45.5503},
            {x:32.9633,  y:-375.7962, z:45.5499},
            {x:33.1549,  y:-374.8468, z:45.5787},
        ],
        3: [
            {x:45.8248,  y:-411.0248, z:45.5589},
            {x:46.6564,  y:-412.077,  z:45.5589},
            {x:42.9137,  y:-422.9731, z:45.5589},
            {x:39.57,    y:-432.9532, z:45.5588},
            {x:34.9304,  y:-437.5059, z:45.5578},
            {x:32.7311,  y:-440.9721, z:45.5521},
            {x:32.7183,  y:-445.6103, z:45.5578},
            {x:32.7728,  y:-445.3491, z:45.5577},
        ],
    },
    3: {
        0: [
            {x:23.134,   y:-407.7122, z:45.559},
            {x:27.7593,  y:-399.0741, z:45.559},
            {x:31.9114,  y:-385.9053, z:45.547},
            {x:34.2217,  y:-379.0975, z:45.5574},
            {x:32.897,   y:-375.0428, z:45.5574},
            {x:33.1549,  y:-374.8468, z:45.5787},
        ],
        1: [
            {x:21.9889,  y:-407.9803, z:45.5589},
            {x:25.5522,  y:-407.288,  z:45.5595},
            {x:32.156,   y:-409.6479, z:45.559},
            {x:40.4673,  y:-412.4851, z:45.559},
            {x:42.4196,  y:-413.2013, z:45.6017},
            {x:43.1321,  y:-411.13,   z:45.559},
            {x:44.2762,  y:-410.7969, z:45.559},
            {x:45.8323,  y:-410.9276, z:45.5589},
        ],
        2: [
            {x:22.4608,  y:-407.8726, z:45.559},
            {x:29.3851,  y:-407.8447, z:45.5621},
            {x:34.0036,  y:-396.2793, z:45.5665},
            {x:37.663,   y:-386.0164, z:45.5568},
            {x:44.9877,  y:-387.3763, z:45.5934},
            {x:50.444,   y:-387.5557, z:45.5591},
            {x:54.1239,  y:-384.7965, z:45.5569},
            {x:57.1771,  y:-377.9745, z:45.5591},
            {x:57.3149,  y:-377.4927, z:45.5592},
        ],
        3: [
            {x:22.1909,  y:-407.7144, z:45.559},
            {x:28.6324,  y:-409.0053, z:45.5621},
            {x:28.916,   y:-414.9081, z:45.559},
            {x:25.8197,  y:-422.5333, z:45.5575},
            {x:23.9429,  y:-428.0728, z:45.5589},
            {x:27.2655,  y:-429.9239, z:45.5553},
            {x:33.3011,  y:-432.942,  z:45.5578},
            {x:34.6333,  y:-436.2155, z:45.5578},
            {x:32.9281,  y:-444.8118, z:45.5576},
            {x:32.7728,  y:-445.3491, z:45.5577},
        ],
    },
    4: {
        0: [
            {x:32.6047,  y:-445.2284, z:45.5578},
            {x:31.6222,  y:-432.2799, z:45.5565},
            {x:32.3965,  y:-425.0526, z:45.5585},
            {x:27.4159,  y:-422.0144, z:45.5568},
            {x:21.1062,  y:-419.4166, z:45.5421},
            {x:24.0253,  y:-410.2018, z:45.5586},
            {x:21.877,   y:-407.1364, z:46.2502},
            {x:21.5217,  y:-408.2098, z:45.7391},
        ],
        1: [
            {x:32.7729,  y:-444.9617, z:45.5578},
            {x:34.1838,  y:-438.7247, z:45.5527},
            {x:37.1812,  y:-435.9959, z:45.5568},
            {x:41.3294,  y:-430.6939, z:45.5588},
            {x:43.5927,  y:-423.3674, z:45.5421},
            {x:45.9407,  y:-415.0227, z:45.5589},
            {x:47.1827,  y:-411.1861, z:45.5589},
            {x:45.0491,  y:-411.0327, z:45.5589},
            {x:45.8323,  y:-410.9276, z:45.5589},
        ],
        2: [
            {x:32.4134,  y:-444.9808, z:45.5577},
            {x:34.9718,  y:-436.6453, z:45.5403},
            {x:38.0665,  y:-434.5031, z:45.5574},
            {x:41.3904,  y:-428.6102, z:45.5586},
            {x:44.0488,  y:-420.7016, z:45.5509},
            {x:43.3052,  y:-416.1138, z:45.5589},
            {x:41.1252,  y:-411.558,  z:45.5983},
            {x:40.0312,  y:-407.7891, z:45.559},
            {x:41.0608,  y:-404.5442, z:45.559},
            {x:43.0204,  y:-401.3647, z:45.5573},
            {x:44.2828,  y:-398.0523, z:45.5589},
            {x:45.3925,  y:-394.358,  z:45.5589},
            {x:46.4771,  y:-390.8939, z:45.5569},
            {x:47.5157,  y:-388.4531, z:45.5585},
            {x:49.4491,  y:-386.8575, z:45.5587},
            {x:53.9896,  y:-384.2942, z:45.5446},
            {x:57.2264,  y:-377.9604, z:45.5592},
            {x:57.3149,  y:-377.4927, z:45.5592},
        ],
        3: [
            {x:32.8475,  y:-445.4446, z:45.5578},
            {x:32.1761,  y:-438.2084, z:45.5356},
            {x:31.1655,  y:-429.6941, z:45.5582},
            {x:31.7801,  y:-424.0309, z:45.5582},
            {x:36.028,   y:-413.0981, z:45.5589},
            {x:32.6175,  y:-410.3799, z:45.5899},
            {x:30.1674,  y:-407.9261, z:45.5599},
            {x:33.4748,  y:-398.7068, z:45.6103},
            {x:35.9359,  y:-392.0994, z:45.5576},
            {x:38.6277,  y:-384.3639, z:45.5574},
            {x:39.3063,  y:-383.3952, z:45.5574},
            {x:35.2548,  y:-381.9677, z:45.512},
            {x:33.6591,  y:-378.789,  z:45.5574},
            {x:32.8906,  y:-375.2994, z:45.5357},
            {x:33.1549,  y:-374.8468, z:45.5787},
        ],
    },
    0: {
        0: [
            {x:57.9287,  y:-377.5237, z:45.5592},
            {x:54.3429,  y:-386.3213, z:45.5591},
            {x:46.0359,  y:-388.5314, z:45.5587},
            {x:39.5772,  y:-383.7882, z:45.5581},
            {x:34.2828,  y:-381.6545, z:45.5528},
            {x:33.1089,  y:-375.8275, z:45.5397},
            {x:33.1549,  y:-374.8468, z:45.5787},
        ],
        1: [
            {x:57.9142,  y:-376.5194, z:45.5592},
            {x:51.3774,  y:-387.223,  z:45.5592},
            {x:45.9547,  y:-403.1076, z:45.5595},
            {x:42.5719,  y:-402.2737, z:45.5563},
            {x:40.4407,  y:-406.2863, z:45.5589},
            {x:35.2963,  y:-420.1089, z:45.5589},
            {x:31.3263,  y:-430.9757, z:45.5579},
            {x:32.3693,  y:-437.4427, z:45.5541},
            {x:32.7698,  y:-444.7742, z:45.5592},
            {x:32.7728,  y:-445.3491, z:45.5577},
        ],
        2: [
            {x:58.6036,  y:-377.2091, z:45.5592},
            {x:52.1034,  y:-386.5851, z:45.5561},
            {x:47.5997,  y:-398.1274, z:45.5578},
            {x:45.7473,  y:-406.8396, z:45.5555},
            {x:45.4473,  y:-411.601,  z:45.5639},
            {x:45.8323,  y:-410.9276, z:45.5589},
        ],
        3: [
            {x:58.4105,  y:-377.1164, z:45.5592},
            {x:53.3934,  y:-386.3329, z:45.5587},
            {x:46.4446,  y:-388.8817, z:45.5571},
            {x:43.0399,  y:-393.2126, z:45.555},
            {x:37.9822,  y:-395.6814, z:45.6323},
            {x:33.2956,  y:-398.9085, z:45.5575},
            {x:30.5384,  y:-407.3081, z:45.5599},
            {x:26.402,   y:-408.74,   z:45.5971},
            {x:22.3563,  y:-407.7971, z:45.5616},
            {x:21.5217,  y:-408.2098, z:45.7391},
        ],
    },
};

function dist2D(a, b) {
    var dx = a.x - b.x, dy = a.y - b.y;
    return Math.sqrt(dx*dx + dy*dy);
}
function dist3D(a, b) {
    var dx = a.x - b.x, dy = a.y - b.y, dz = a.z - b.z;
    return Math.sqrt(dx*dx + dy*dy + dz*dz);
}

// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
//  СОСТОЯНИЕ БОТА
// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
var botActive        = false;
var currentMain      = null;
var currentPoint     = null;
var routeStep        = 0;
var blipPos          = null;
var botStatus        = 'Стоит';
var playerCoords     = {x:0,y:0,z:0};
var stuckTimer       = 0;
var onBlipTimer      = 0;    // когда встали на блип
var STUCK_TIMEOUT    = 6000;
var ONBLIP_RERUN     = 5000; // через 5с бежим к блипу заново
var onBlip           = false;
var adminNearby      = false;
var adminPaused      = false;
var ADMIN_CHECK_DIST = 40.0;

// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
//  АВТО-КАЗИНО
// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
var casinoActive     = false;
var casinoInterval   = null;
var casinoAdminPause = false;
var CASINO_INTERVAL  = 10000;

function doCasinoSpin() {
    try {
        mp.events.callRemote('__rpc:process', JSON.stringify({
            req:1, id:'922u27', name:'server_casino_site_spin',
            env:'client', args:null, fenv:'cef', noRet:null
        }));
        mp.console.logInfo('[Casino] Spin!');
    } catch(e) {}
}
function startCasino() {
    if (casinoInterval) clearInterval(casinoInterval);
    casinoInterval = setInterval(function() {
        if (casinoAdminPause) return;
        doCasinoSpin();
    }, CASINO_INTERVAL);
    casinoActive = true;
    if (guiBrowser) { try { guiBrowser.execute('setCasinoBtn(true)'); } catch(e) {} }
    mp.gui.chat.push('!{00FF00}[Casino]: !{FFFFFF}Автопрокрут запущен.');
}
function stopCasino() {
    if (casinoInterval) { clearInterval(casinoInterval); casinoInterval = null; }
    casinoActive = false; casinoAdminPause = false;
    if (guiBrowser) { try { guiBrowser.execute('setCasinoBtn(false)'); } catch(e) {} }
    mp.gui.chat.push('!{FF0000}[Casino]: !{FFFFFF}Автопрокрут остановлен.');
}

// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
//  ОБЕЗБОЛ
// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
var PK_HASH = 3538502018;
var pkCountBase = 0, pkCountLast = 0, pkGained = 0, lastPkCheck = 0;

function getPKCount() {
    try {
        var inv = mp.players.local.getVariable('inventory');
        if (!inv) return 0;
        if (Array.isArray(inv)) {
            for (var i = 0; i < inv.length; i++) {
                if (inv[i].hash === PK_HASH || inv[i].hash === String(PK_HASH) ||
                    inv[i].itemHash === PK_HASH || inv[i].id === PK_HASH) {
                    return parseInt(inv[i].count || inv[i].amount || inv[i].quantity || 1);
                }
            }
            return 0;
        }
        if (typeof inv === 'object') {
            var v = inv[PK_HASH] || inv[String(PK_HASH)];
            if (v !== undefined) return parseInt(v.count || v.amount || v || 0);
        }
    } catch(e) {}
    return 0;
}
function checkPKDiff() {
    var now = Date.now();
    if (now - lastPkCheck < 500) return;
    lastPkCheck = now;
    var cur = getPKCount();
    if (cur > pkCountLast) {
        var diff = cur - pkCountLast;
        pkGained += diff; pkCountLast = cur;
        if (guiBrowser) { try { guiBrowser.execute('addPK('+diff+')'); } catch(e) {} }
        mp.console.logInfo('[Bot] Обезбол +'+diff+' (всего: '+pkGained+')');
    } else if (cur < pkCountLast) {
        pkCountLast = cur;
    }
}

// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
//  АВТОКЛИКЕР
// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
var _autoClickerInjected = false;
var AUTO_CLICKER_CODE = [
    "(function() {",
    "    if (window.__autoClickerActive) return;",
    "    window.__autoClickerActive = true;",
    "    var PRESS_INTERVAL = 10;",
    "    function isGameVisible() {",
    "        var panel = document.getElementById('builderGameContent');",
    "        return panel && panel.style.display !== 'none';",
    "    }",
    "    function getCurrentKey() {",
    "        var keyEl = document.getElementById('builderGameKey');",
    "        return keyEl ? keyEl.textContent.trim() : null;",
    "    }",
    "    function emulateKeyPress(key) {",
    "        ['keydown','keypress','keyup'].forEach(function(t) {",
    "            var e = new KeyboardEvent(t, {key:key,bubbles:true,cancelable:true,view:window});",
    "            document.body.dispatchEvent(e); document.dispatchEvent(e);",
    "        });",
    "    }",
    "    setInterval(function() {",
    "        if (!window.__autoClickerActive) return;",
    "        if (!isGameVisible()) return;",
    "        var key = getCurrentKey();",
    "        if (!key) return;",
    "        emulateKeyPress(key);",
    "    }, PRESS_INTERVAL);",
    "})();"
].join("\n");

function tryInjectAutoClicker() {
    if (_autoClickerInjected) return;
    try {
        if (!mp || !mp.browsers) return;
        var arr = [];
        if (typeof mp.browsers.toArray === 'function') arr = mp.browsers.toArray();
        else if (typeof mp.browsers.length === 'number' && typeof mp.browsers.at === 'function') {
            for (var i = 0; i < mp.browsers.length; i++) arr.push(mp.browsers.at(i));
        }
        for (var j = 0; j < arr.length; j++) {
            try {
                var url = String(arr[j].url || '');
                if (url.indexOf('__menu.html') !== -1 || url.indexOf('package/Menu') !== -1) {
                    arr[j].execute(AUTO_CLICKER_CODE);
                    _autoClickerInjected = true;
                    mp.gui.chat.push('!{00FF00}[Bot]: !{FFFFFF}Автокликер активирован');
                    return;
                }
            } catch(e2) {}
        }
    } catch(e) {}
}

// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
//  GUI
// в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
var guiBrowser = null;

var guiHTML = `<!DOCTYPE html>
<html><head><meta charset="utf-8"><style>
*{margin:0;padding:0;box-sizing:border-box;}
html,body{background:transparent;overflow:hidden;font-family:'Segoe UI',sans-serif;user-select:none;}
#panel{position:absolute;left:15px;top:15px;width:270px;
  background:linear-gradient(160deg,rgba(15,15,25,0.95),rgba(8,8,18,0.97));
  border-radius:12px;border:1px solid rgba(255,255,255,0.08);
  box-shadow:0 8px 32px rgba(0,0,0,0.6);overflow:hidden;cursor:move;}
.title{background:linear-gradient(90deg,rgba(0,180,80,0.25),rgba(80,0,200,0.25));
  padding:9px 12px;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:1.5px;color:#fff;border-bottom:1px solid rgba(255,255,255,0.07);text-align:center;}
.tabs{display:flex;border-bottom:1px solid rgba(255,255,255,0.06);}
.tab{flex:1;padding:7px 4px;font-size:9px;font-weight:700;text-align:center;
  color:rgba(255,255,255,0.35);cursor:pointer;letter-spacing:.5px;text-transform:uppercase;
  transition:all .2s;border-bottom:2px solid transparent;}
.tab.active{color:#fff;border-bottom:2px solid #a78bfa;}
.tab:hover{color:rgba(255,255,255,0.7);}
.page{display:none;padding:10px 12px;}.page.active{display:block;}
.row{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.row:last-child{margin-bottom:0;}
.lbl{font-size:10px;color:rgba(255,255,255,0.45);font-weight:600;text-transform:uppercase;letter-spacing:.4px;}
.val{font-size:11px;font-weight:700;color:#fff;text-align:right;
  background:rgba(255,255,255,0.07);padding:2px 8px;border-radius:5px;
  max-width:155px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.val.green{background:rgba(0,220,80,0.2);color:#00ff55;}
.val.blue{background:rgba(0,120,255,0.2);color:#4db8ff;}
.val.yellow{background:rgba(255,200,0,0.15);color:#ffe066;}
.val.red{background:rgba(255,50,50,0.2);color:#ff6666;}
.val.orange{background:rgba(255,140,0,0.2);color:#ffaa33;}
.val.purple{background:rgba(167,139,250,0.15);color:#a78bfa;}
.divider{height:1px;background:rgba(255,255,255,0.05);margin:6px 0;}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px;}
.stat-cell{background:rgba(255,255,255,0.04);border-radius:7px;padding:7px 8px;text-align:center;}
.stat-cell .n{font-size:15px;font-weight:800;color:#00ff55;}
.stat-cell .l{font-size:8px;color:rgba(255,255,255,0.35);text-transform:uppercase;margin-top:2px;}
.inp-row{margin-bottom:8px;}
.inp-lbl{font-size:9px;color:rgba(255,255,255,0.45);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px;}
input[type=number],input[type=text]{width:100%;background:rgba(255,255,255,0.06);
  border:1px solid rgba(255,255,255,0.1);border-radius:5px;padding:5px 8px;color:#fff;font