Greasy Fork is available in English.

Kour Zenith Hack Pro

The ultimate tactical suite for Kour.io, delivering precision performance, advanced visual overlays, and comprehensive account modification.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Kour Zenith Hack Pro
// @version      1.0.0
// @author       AwesomeOddEven-NightKeys-LunarBlink
// @description  The ultimate tactical suite for Kour.io, delivering precision performance, advanced visual overlays, and comprehensive account modification.
// @match        *://kour.io/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=kour.io
// @run-at       document-start
// @grant        unsafeWindow
// @license      GPLv3
// @namespace https://greasyfork.org/users/1594049
// ==/UserScript==

(function () {
    "use strict";

    if (typeof window === "undefined") return;

    // --- STEALTH UTILITIES ---
    const cloak = (fn, original) => {
        try {
            Object.setPrototypeOf(fn, original);
            fn.toString = () => original.toString();
        } catch (e) {}
        return fn;
    };

    // --- CONTRABAND & TELEMETRY EXPLOIT ---
    const _fetch = window.fetch;
    window.fetch = cloak(function () {
        let url = "";
        if (typeof arguments[0] === 'string') {
            url = arguments[0];
        } else if (arguments[0] && arguments[0].url) {
            url = arguments[0].url;
        }
        if (typeof url === 'string' && url.includes('/api/track')) {
            return Promise.reject();
        }
        return _fetch.apply(this, arguments);
    }, _fetch);

    function fixDailyRewards() {
        try {
            if (typeof firebase === "undefined" || !firebase?.auth()?.currentUser) return;
            let shouldSet = false;
            const rewardObj = { lastDailyReward: '24' };
            const refKey = 'users/' + firebase.auth().currentUser.uid;

            firebase.database().ref(refKey).once('value', e => {
                const obj = e.val() || {};
                Object.keys(obj).forEach(key => {
                    if (key.startsWith('dailyReward_')) {
                        rewardObj[key] = null;
                        shouldSet = true;
                    }
                    if (key === 'lastDailyReward' && obj[key] !== '24') {
                        shouldSet = true;
                    }
                });

                if (shouldSet) {
                    firebase.database().ref(refKey).update(rewardObj);
                    if (typeof showUserDetails !== "undefined") showUserDetails('', firebase.auth().currentUser);
                }
            });
        } catch (e) {}
    }

    function autoVerify() {
        setTimeout(() => {
            try {
                if (typeof firebase === "undefined" || !firebase?.auth()?.currentUser) return;
                const db = firebase.database();
                const auth = firebase.auth();
                const user = auth.currentUser;
                
                db.goOffline();
                db.ref('users/' + user.uid).child('verified').set('1').then(() => {
                    if (typeof showUserDetails !== "undefined") showUserDetails(user.email, user);
                    db.goOnline();
                }).catch(() => { db.goOnline(); });
            } catch (e) {}
        }, 2500);
    }

    function fakeSetDataNew(a) {
        if (window.unityInstance) {
            window.unityInstance.SendMessage('FirebasePlayerPrefs2023', 'OnSetData', '{"err":null}&' + [...a].pop());
        }
    }

    Object.defineProperty(window, 'unityInstance', {
        enumerable: false,
        configurable: true,
        get() { return this._unityInstance; },
        set(v) {
            this._unityInstance = v;
            const _setDataNew = window.setDataNew;
            window.setDataNew = cloak(function () {
                if (arguments[1] === 'banned') {
                    fakeSetDataNew(arguments);
                    return;
                }
                if (arguments[1] && arguments[1].includes("dailyReward_")) {
                    fakeSetDataNew(arguments);
                    if (typeof firebase !== "undefined" && typeof showUserDetails !== "undefined") {
                        showUserDetails('', firebase.auth().currentUser);
                    }
                    return;
                }
                if (arguments[1] === 'lastDailyReward') {
                    arguments[2] = '24';
                }
                return _setDataNew?.apply(this, arguments);
            }, _setDataNew);

            if (this._unityInstance) {
                const _SendMessage = this._unityInstance.SendMessage;
                this._unityInstance.SendMessage = cloak(function () {
                    if (arguments[1] === 'OnLoggedInGoogle') { fixDailyRewards(); autoVerify(); }
                    return _SendMessage.apply(this, arguments);
                }, _SendMessage);
            }
        },
    });

    // --- CORE CONFIG ---
    let settings = {
        aimbotEnabled: true,
        aimbotTargeting: "default", // "default" or "visible"
        aimbotTargetPart: "torso", // "torso" or "head"
        aimbotSpeed: 2.0,
        aimbotTriggerMode: "mouse", // "mouse", "key", or "always"
        aimbotTriggerButton: [0, 2], // Left/Right mouse
        fovRadius: 100,
        targetLockEnabled: true,
        targetPriority: "crosshair", // "crosshair", "closest", "farthest"
        triggerbotEnabled: false,
        triggerbotMode: "hold", // "click" or "hold"
        triggerbotCPS: 10,
        triggerbotSensitivity: 6,
        autoclickerEnabled: false,
        autoclickerCPS: 10,
        colorTolerance: 60,
        espEnabled: true,
        espDepthHackEnabled: true,
        hideArmsEnabled: false,
        invisibleEnabled: false,
        spinBotEnabled: false,
        airStrafingEnabled: false,
        fireRateEnabled: false,
        fireRateMultiplier: 1.0,
        customScopeEnabled: false,
        customScopeURL: "",
        autoChatEnabled: false,
        autoChatMessage: "",
        autoChatInterval: 10,
        hudEnabled: true,
        hudSortMode: "length", // "length", "alphabet", "none"
        menuTheme: "default",
        customCrosshair: false,
        crosshairShape: "plus",
        crosshairSize: 20,
        crosshairGap: 5,
        crosshairThickness: 2,
        crosshairColor: { r: 255, g: 43, b: 43 },
        crosshairOpacity: 1.0,
        crosshairOutline: true,
        crosshairDot: false,
        crosshairAnimated: false,
        crosshairRainbow: false,
        instantKillEnabled: false,
    };

    // Sync globals
    window.espEnabled = settings.espEnabled;
    window.espColor = { r: 0, g: 255, b: 0 };
    window.espDepthHackState = settings.espDepthHackEnabled;
    let fovCircleEnabled = true;

    // Load from local storage
    const saved = localStorage.getItem("ZenithProSettings");
    if (saved) {
        try { Object.assign(settings, JSON.parse(saved)); } catch (e) { }
    }
    const saveSettings = () => localStorage.setItem("ZenithProSettings", JSON.stringify(settings));

    // --- ENGINE HOOKS ---
    let gl = null;
    const vertexCheck = (count) => {
        return (count >= 1481 && count <= 1483) || (count >= 1553 && count <= 1555) || (count >= 5615 && count <= 5617) || (count >= 3875 && count <= 3877);
    };

    const wCtx = WebGL2RenderingContext.prototype;

    const originalGetContext = HTMLCanvasElement.prototype.getContext;
    HTMLCanvasElement.prototype.getContext = cloak(new Proxy(originalGetContext, {
        apply(target, thisArg, args) {
            if (args[0] === 'webgl' || args[0] === 'webgl2') {
                args[1] = args[1] || {};
                args[1].preserveDrawingBuffer = true;
            }
            return Reflect.apply(target, thisArg, args);
        }
    }), originalGetContext);

    const drawProxyHandler = {
        apply(target, thisArg, args) {
            const program = thisArg.getParameter(thisArg.CURRENT_PROGRAM);
            if (program) {
                if (!program.uniforms) {
                    const getLoc = name => thisArg.getUniformLocation(program, name);
                    program.uniforms = {
                        vertexCount: getLoc('vertexCount'),
                        espToggle: getLoc('espToggle'),
                        gnilgnim: getLoc('gnilgnim'),
                        espColor: getLoc('espColor'),
                        espDepthHack: getLoc('espDepthHack')
                    };
                }
                if (program.uniforms.espToggle) {
                    gl = thisArg;
                    thisArg.uniform1f(program.uniforms.vertexCount, args[1]);
                    thisArg.uniform1f(program.uniforms.espToggle, window.espEnabled ? 1.0 : 0.0);
                    thisArg.uniform1f(program.uniforms.espDepthHack, window.espDepthHackState ? 1.0 : 0.0);
                    thisArg.uniform1f(program.uniforms.gnilgnim, 13371337.0);
                    if (program.uniforms.espColor) {
                        thisArg.uniform3f(program.uniforms.espColor, window.espColor.r/255, window.espColor.g/255, window.espColor.b/255);
                    }
                }
            }
            return Reflect.apply(target, thisArg, args);
        }
    };

    wCtx.drawElements = cloak(new Proxy(wCtx.drawElements, drawProxyHandler), wCtx.drawElements);
    wCtx.drawElementsInstanced = cloak(new Proxy(wCtx.drawElementsInstanced, drawProxyHandler), wCtx.drawElementsInstanced);

    wCtx.shaderSource = cloak(new Proxy(wCtx.shaderSource, {
        apply(target, thisArg, args) {
            let [shader, src] = args;
            const conditions = "(vertexCount >= 1481.0 && vertexCount <= 1483.0) || (vertexCount >= 1553.0 && vertexCount <= 1555.0) || (vertexCount >= 5615.0 && vertexCount <= 5617.0) || (vertexCount >= 3875.0 && vertexCount <= 3877.0)";
            const vCond = "(vVertexCount >= 1481.0 && vVertexCount <= 1483.0) || (vVertexCount >= 1553.0 && vVertexCount <= 1555.0) || (vVertexCount >= 5615.0 && vVertexCount <= 5617.0) || (vVertexCount >= 3875.0 && vVertexCount <= 3877.0)";

            if (src.includes('gl_Position')) {
                src = src.replace(/void\s+main\s*\(\s*\)\s*\{/, `uniform float vertexCount, espToggle, gnilgnim, espDepthHack;\nuniform vec3 espColor;\nout float vVertexCount;\nvoid main() {\nvVertexCount = vertexCount;\n`)
                    .replace(/(gl_Position\s*=.+;)/, `$1\nif (espToggle > 0.5 && espDepthHack > 0.5 && (${conditions})) gl_Position.z = 0.01 + gl_Position.z * 0.1;\nif (espToggle > 0.5 && gnilgnim == 13371337.0) gl_Position.z *= 1.0;`);
            }
            if (src.includes('SV_Target0')) {
                src = src.replace(/void\s+main\s*\(\s*\)\s*\{/, `uniform float espToggle, gnilgnim, espDepthHack;\nuniform vec3 espColor;\nin float vVertexCount;\nvoid main() {`)
                    .replace(/return;/, `if (espToggle > 0.5 && (${vCond}) && SV_Target0.a > 0.5) SV_Target0 = vec4(espColor, 1.0);\nif (gnilgnim == 13371337.0) SV_Target0.rgb *= 1.0;\nreturn;`);
            }
            args[1] = src;
            return Reflect.apply(target, thisArg, args);
        }
    }), wCtx.shaderSource);

    // --- AIMBOT LOGIC ---
    function getGameCanvas() { return document.querySelector("canvas"); }

    function isTargetPixel(r, g, b, a, t, c) {
        if (a === 0) return false;
        const dr = r - c.r, dg = g - c.g, db = b - c.b;
        return dr * dr + dg * dg + db * db <= t * t;
    }

    function updateAimbot() {
        if (!settings.aimbotEnabled || !gl?.canvas || !document.pointerLockElement) return null;
        const { width, height } = gl.canvas;
        const scanW = Math.min(width, 150), scanH = Math.min(height, 150);
        const centerX = width / 2, centerY = height / 2;
        const startX = Math.floor(centerX - scanW/2), startY = Math.floor(centerY - scanH/2);
        const pixels = new Uint8Array(scanW * scanH * 4);

        let prevFB = null;
        try {
            prevFB = gl.getParameter(gl.FRAMEBUFFER_BINDING);
            gl.bindFramebuffer(gl.FRAMEBUFFER, null);
            gl.readPixels(startX, startY, scanW, scanH, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
        } catch (e) { return null; }
        finally { try { gl.bindFramebuffer(gl.FRAMEBUFFER, prevFB); } catch (e) {} }

        let closest = Infinity, bestDX = 0, bestDY = 0;
        const tol = settings.colorTolerance || 60;
        const targetC = window.espColor;

        for (let i = 0; i < pixels.length; i += 16) {
            const r = pixels[i], g = pixels[i+1], b = pixels[i+2], a_val = pixels[i+3];
            if (isTargetPixel(r, g, b, a_val, tol, targetC)) {
                const idx = i / 4;
                const x = idx % scanW, y = Math.floor(idx / scanW);
                const dx = (startX + x) - centerX, dy = -((startY + y) - centerY);
                const dist = Math.hypot(dx, dy);
                if (dist < settings.fovRadius && dist < closest) { closest = dist; bestDX = dx; bestDY = dy; }
            }
        }
        return closest < Infinity ? { bestDX, bestDY } : null;
    }

    function loop() {
        try {
            if (gl && (gl.isContextLost() || !gl.canvas?.isConnected)) gl = null;
            if (settings.aimbotEnabled) {
                const target = updateAimbot();
                if (target) {
                    let spd = settings.aimbotSpeed * 0.15;
                    getGameCanvas().dispatchEvent(new MouseEvent("mousemove", {
                        movementX: Math.round(target.bestDX * spd),
                        movementY: Math.round(target.bestDY * spd),
                        bubbles: true, cancelable: true, composed: true
                    }));
                }
            }
        } catch(e) {}
        requestAnimationFrame(loop);
    }
    requestAnimationFrame(loop);

    // --- GOONHACK CORE UI (ZENITH ADAPTATION) ---
    function createUI() {
        const style = document.createElement("style");
        style.textContent = [
            "@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700;800&display=swap');",
            "@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:[email protected]&display=swap');",
            ":root {",
            "  --kour-theme-bg: #0d0d0f;",
            "  --kour-theme-accent1: #ff2a2a;",
            "  --kour-theme-accent2: #ff4545;",
            "  --kour-theme-highlight: rgba(255, 42, 42, 0.15);",
            "  --kour-theme-header: linear-gradient(135deg, rgba(255, 42, 42, 0.15), rgba(0, 0, 0, 0.8));",
            "}",
            "#Menu, #Menu * { box-sizing: border-box; }",
            "#Menu { background: var(--kour-theme-bg) !important; color: #eef2ff; font-family: 'JetBrains Mono', 'Consolas', monospace; }",
            ".kour-shell { display: flex; width: 700px; height: min(640px, calc(100vh - 56px)); max-width: calc(100vw - 36px); border: 1px solid rgba(255, 42, 42, 0.3); border-radius: 0px; overflow: hidden; box-shadow: 0 24px 70px rgba(0,0,0,0.8), inset 0 1px 0 rgba(255,42,42,0.1); backdrop-filter: blur(22px); -webkit-backdrop-filter: blur(22px); }",
            ".kour-rail { width: 76px; flex: 0 0 76px; padding: 14px 10px; background: rgba(0,0,0,0.6); border-right: 1px solid rgba(255,42,42,0.2); display: flex; flex-direction: column; align-items: center; gap: 14px; }",
            ".kour-brand { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 0px; background: var(--kour-theme-header); color: #ff2a2a; font-size: 20px; font-weight: 900; letter-spacing: 0; border: 1px solid rgba(255,42,42,0.4); box-shadow: 0 0 15px rgba(255,42,42,0.3); cursor: move; }",
            ".kour-nav { display: flex; flex-direction: column; align-items: center; gap: 9px; width: 100%; }",
            ".kour-nav-button { position: relative; width: 46px; height: 46px; display: grid; place-items: center; border: 1px solid rgba(255,42,42,0.1); border-radius: 0px; color: #64748b; background: rgba(255,255,255,0.02); cursor: pointer; transition: 0.2s; }",
            ".kour-nav-button:hover { color: #ff2a2a; background: rgba(255,42,42,0.05); border-color: rgba(255,42,42,0.3); }",
            ".kour-nav-button.active { color: #fff; background: rgba(255,42,42,0.1); border-color: #ff2a2a; box-shadow: 0 0 15px rgba(255,42,42,0.2); }",
            ".kour-nav-button.active:before { content: ''; position: absolute; left: -11px; width: 3px; height: 24px; background: #ff2a2a; box-shadow: 0 0 10px #ff2a2a; }",
            ".kour-icon { font-family: 'Material Symbols Rounded'; font-size: 24px; width: 24px; height: 24px; }",
            ".kour-panel { flex: 1; min-width: 0; display: flex; flex-direction: column; background: #0d0d0f; }",
            ".kour-topbar { cursor: move; padding: 17px 20px 14px; background: #000; border-bottom: 1px solid rgba(255,42,42,0.3); display: flex; align-items: center; justify-content: space-between; gap: 16px; }",
            ".kour-title { margin: 0; font-size: 18px; font-weight: 900; letter-spacing: 2px; color: #ff2a2a; text-transform: uppercase; text-shadow: 0 0 10px rgba(255,42,42,0.5); }",
            ".kour-subtitle { margin-top: 4px; color: #64748b; font-size: 10px; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; }",
            ".kour-content { padding: 16px; overflow-y: auto; min-height: 0; }",
            ".kour-content::-webkit-scrollbar { width: 4px; }",
            ".kour-content::-webkit-scrollbar-thumb { background: #ff2a2a; }",
            ".kour-section { margin-bottom: 13px; padding: 12px; border: 1px solid rgba(255,42,42,0.15); background: rgba(0,0,0,0.4); }",
            ".kour-section-title { margin: 0 0 10px; color: #ff2a2a; font-size: 10px; font-weight: 800; text-transform: uppercase; border-left: 2px solid #ff2a2a; padding-left: 8px; }",
            ".kour-row { min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 8px 9px; color: #e2e8f0; border-bottom: 1px solid rgba(255,255,255,0.02); }",
            ".kour-row:hover { background: rgba(255,42,42,0.02); }",
            ".kour-label { display: flex; flex-direction: column; gap: 2px; font-size: 11px; font-weight: 700; text-transform: uppercase; }",
            ".kour-switch { position: relative; width: 42px; height: 20px; }",
            ".kour-switch input { opacity: 0; width: 0; height: 0; position: absolute; }",
            ".kour-switch span { position: absolute; inset: 0; background: #1e1e24; border: 1px solid rgba(255,255,255,0.1); transition: 0.2s; }",
            ".kour-switch span:before { content: ''; position: absolute; width: 14px; height: 14px; left: 2px; top: 2px; background: #444; transition: 0.2s; }",
            ".kour-switch input:checked + span { background: rgba(255,42,42,0.2); border-color: #ff2a2a; }",
            ".kour-switch input:checked + span:before { transform: translateX(22px); background: #ff2a2a; box-shadow: 0 0 10px #ff2a2a; }",
            ".kour-slider { -webkit-appearance: none; width: 190px; height: 2px; background: #333; outline: none; }",
            ".kour-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 10px; height: 10px; background: #ff2a2a; cursor: pointer; box-shadow: 0 0 10px rgba(255,42,42,0.5); }",
            ".kour-value { color: #ff2a2a; font-size: 10px; font-weight: 800; min-width: 36px; text-align: right; }",
            ".kour-btn { border: 1px solid #ff2a2a; padding: 9px 12px; color: #fff; background: rgba(255,42,42,0.1); font-family: inherit; font-weight: 800; font-size: 10px; text-transform: uppercase; cursor: pointer; transition: 0.2s; }",
            ".kour-btn:hover { background: #ff2a2a; box-shadow: 0 0 15px rgba(255,42,42,0.4); }",
            "#kour-menu-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(4px); z-index: 9999; display: none; }"
        ].join("\n");
        document.head.appendChild(style);

        const tabMeta = [
            { id: "Combat", title: "Combat", subtitle: "Aim, trigger, and fire controls", icon: "swords" },
            { id: "Visuals", title: "Visuals", subtitle: "ESP, FOV, and display tweaks", icon: "visibility" },
            { id: "Player", title: "Player", subtitle: "Movement, timer, and presence options", icon: "directions_run" },
            { id: "Settings", title: "Settings", subtitle: "Local config, themes, HUD, and keybinds", icon: "settings" }
        ];

        const menuBackdrop = document.createElement("div");
        menuBackdrop.id = "kour-menu-backdrop";
        document.body.appendChild(menuBackdrop);

        const menu = document.createElement("div");
        menu.id = "Menu";
        Object.assign(menu.style, { position: "fixed", top: "50%", left: "50%", transform: "translate(-50%, -50%)", zIndex: "10000", display: "none" });

        const shell = document.createElement("div");
        shell.className = "kour-shell";
        const rail = document.createElement("div");
        rail.className = "kour-rail";
        const brand = document.createElement("div");
        brand.className = "kour-brand";
        brand.textContent = "Z";
        rail.appendChild(brand);
        const nav = document.createElement("div");
        nav.className = "kour-nav";
        rail.appendChild(nav);

        const panel = document.createElement("div");
        panel.className = "kour-panel";
        const topBar = document.createElement("div");
        topBar.className = "kour-topbar";
        const titleWrap = document.createElement("div");
        const titleEl = document.createElement("h2");
        titleEl.className = "kour-title";
        const subtitleEl = document.createElement("div");
        subtitleEl.className = "kour-subtitle";
        titleWrap.append(titleEl, subtitleEl);
        topBar.appendChild(titleWrap);
        
        const contentArea = document.createElement("div");
        contentArea.className = "kour-content";
        panel.append(topBar, contentArea);
        shell.append(rail, panel);
        menu.appendChild(shell);
        document.body.appendChild(menu);

        let activeTab = "Combat";

        function renderContent() {
            contentArea.innerHTML = "";
            const meta = tabMeta.find(t => t.id === activeTab) || tabMeta[0];
            titleEl.textContent = meta.title;
            subtitleEl.textContent = meta.subtitle;

            nav.innerHTML = "";
            tabMeta.forEach(tab => {
                const btn = document.createElement("div");
                btn.className = "kour-nav-button" + (activeTab === tab.id ? " active" : "");
                btn.innerHTML = `<span class="kour-icon">${tab.icon}</span>`;
                btn.onclick = () => { activeTab = tab.id; renderContent(); };
                nav.appendChild(btn);
            });

            function buildRow(label, controlHtml, bindEvents) {
                const r = document.createElement("div");
                r.className = "kour-row";
                r.innerHTML = `<div class="kour-label">${label}</div><div class="kour-control-group">${controlHtml}</div>`;
                if (bindEvents) bindEvents(r);
                return r;
            }

            function buildToggle(label, key) {
                return buildRow(label, `<label class="kour-switch"><input type="checkbox" ${settings[key] ? "checked" : ""}><span class="kour-switch-slider"></span></label>`, el => {
                    const input = el.querySelector("input");
                    input.onchange = () => { settings[key] = input.checked; saveSettings(); if(key==='espEnabled') window.espEnabled = input.checked; if(key==='espDepthHackEnabled') window.espDepthHackState = input.checked; };
                });
            }

            function buildSlider(label, key, min, max, step) {
                return buildRow(label, `<input type="range" class="kour-slider" min="${min}" max="${max}" step="${step}" value="${settings[key]}"><span class="kour-value">${settings[key]}</span>`, el => {
                    const input = el.querySelector("input");
                    const val = el.querySelector(".kour-value");
                    input.oninput = () => { settings[key] = parseFloat(input.value); val.textContent = settings[key]; saveSettings(); };
                });
            }

            if (activeTab === "Combat") {
                const s1 = document.createElement("div"); s1.className = "kour-section";
                s1.innerHTML = `<h3 class="kour-section-title">Precision</h3>`;
                s1.append(buildToggle("Core Aimbot", "aimbotEnabled"), buildSlider("Smoothing", "aimbotSpeed", 0.1, 10, 0.1), buildToggle("Target Lock", "targetLockEnabled"));
                contentArea.appendChild(s1);
            } else if (activeTab === "Visuals") {
                const s1 = document.createElement("div"); s1.className = "kour-section";
                s1.innerHTML = `<h3 class="kour-section-title">Overlays</h3>`;
                s1.append(buildToggle("Thermal ESP", "espEnabled"), buildToggle("X-Ray (Walls)", "espDepthHackEnabled"), buildSlider("FOV Circle", "fovRadius", 10, 500, 5));
                contentArea.appendChild(s1);
            } else if (activeTab === "Player") {
                const s1 = document.createElement("div"); s1.className = "kour-section";
                s1.innerHTML = `<h3 class="kour-section-title">Movement</h3>`;
                s1.append(buildToggle("Auto-Strafer", "airStrafingEnabled"), buildToggle("Spinbot", "spinBotEnabled"));
                contentArea.appendChild(s1);
            } else {
                const s1 = document.createElement("div"); s1.className = "kour-section";
                s1.innerHTML = `<h3 class="kour-section-title">System</h3>`;
                const btnRow = document.createElement("div"); btnRow.className = "kour-btn-row";
                btnRow.innerHTML = `<button class="kour-btn" id="btn-save">Sync Config</button>`;
                btnRow.querySelector("#btn-save").onclick = () => { saveSettings(); alert("Settings Synced!"); };
                s1.appendChild(btnRow);
                contentArea.appendChild(s1);
            }
        }

        let drag = false, ox, oy;
        topBar.onmousedown = e => { drag = true; ox = e.clientX - menu.offsetLeft; oy = e.clientY - menu.offsetTop; };
        window.addEventListener('mousemove', e => { if(drag) { menu.style.left = (e.clientX - ox) + 'px'; menu.style.top = (e.clientY - oy) + 'px'; }});
        window.addEventListener('mouseup', () => drag = false);

        document.addEventListener('keydown', e => {
            if (e.target.matches('input, textarea')) return;
            if (e.key === 'Tab') {
                e.preventDefault(); e.stopPropagation();
                const isHidden = menu.style.display === 'none';
                menu.style.display = isHidden ? 'block' : 'none';
                menuBackdrop.style.display = isHidden ? 'block' : 'none';
            }
        }, true);

        renderContent();
    }

    createUI();
})();