Rush Team Hack — Wallhack, Aimbot, ESP e Sem Recuo 2026

Hack gratuito para Rush Team em gaming-style.com — wallhack, aimbot, ESP, sem recuo, modo fantasma e chams. No navegador, sem download. Versão completa em rushteam.tools

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name            Rush Team Hack — Wallhack, Aimbot, ESP & No Recoil 2026
// @name:tr         Rush Team Hile — Wallhack, Aimbot, ESP ve Geri Tepme Yok 2026
// @name:ru         Rush Team Хак — Валлхак, Аимбот, ESP и Без Отдачи 2026
// @name:fr         Rush Team Hack — Wallhack, Aimbot, ESP & Sans Recul 2026
// @name:pt-BR      Rush Team Hack — Wallhack, Aimbot, ESP e Sem Recuo 2026
// @name:de         Rush Team Hack — Wallhack, Aimbot, ESP & Kein Rückstoß 2026
// @name:es         Rush Team Hack — Wallhack, Aimbot, ESP y Sin Retroceso 2026
// @namespace       https://rushteam.tools
// @version         2.3.13
// @description     Free Rush Team hack for gaming-style.com — wallhack, aimbot, ESP, no recoil, ghost mode & chams. Browser-based, no download. Full version at rushteam.tools
// @description:tr  gaming-style.com için ücretsiz Rush Team hilesi — wallhack, aimbot, ESP, geri tepme yok, ghost modu ve chams. Tarayıcı tabanlı, indirme yok. Tam sürüm: rushteam.tools
// @description:ru  Бесплатный хак для Rush Team на gaming-style.com — валлхак, аимбот, ESP, без отдачи, режим призрака и чамс. В браузере, без скачивания. Полная версия на rushteam.tools
// @description:fr  Hack Rush Team gratuit pour gaming-style.com — wallhack, aimbot, ESP, sans recul, mode fantôme et chams. Dans le navigateur, sans téléchargement. Version complète sur rushteam.tools
// @description:pt-BR  Hack gratuito para Rush Team em gaming-style.com — wallhack, aimbot, ESP, sem recuo, modo fantasma e chams. No navegador, sem download. Versão completa em rushteam.tools
// @description:de  Kostenloser Rush Team Hack für gaming-style.com — Wallhack, Aimbot, ESP, kein Rückstoß, Geistermodus und Chams. Im Browser, kein Download. Vollversion auf rushteam.tools
// @description:es  Hack gratuito para Rush Team en gaming-style.com — wallhack, aimbot, ESP, sin retroceso, modo fantasma y chams. En el navegador, sin descarga. Versión completa en rushteam.tools
// @author          Polyfillers
// @homepage        https://rushteam.tools
// @match           https://www.gaming-style.com/RushTeam/RushTeamWebGL/index.php*
// @match           https://www.gaming-style.com/RushTeam/index.php*
// @icon            https://www.google.com/s2/favicons?sz=64&domain=gaming-style.com
// @grant           none
// @run-at          document-start
// ==/UserScript==

(function () {
  "use strict";

  const SITE = "https://rushteam.tools";
  const DISCORD = "https://discord.gg/zajEY7YhVE";
  const VERSION = "2.1.1";
  const WEBGL_URL =
    "https://www.gaming-style.com/RushTeam/RushTeamWebGL/index.php";

  const IS_WEBGL = /RushTeamWebGL/.test(window.location.pathname);

  const _cn = ["unity", "canvas"].join("-");
  const _ev = ["mouse", "move"].join("");
  const _na = ["Not", "Allowed"].join("");
  const _uc = ["unity", "container"].join("-");

  let panelOpen = false;
  let _on = false;
  let _ti = null;
  let _str = 180;
  let _mb = false;
  let isDragging = false,
    dragOffX = 0,
    dragOffY = 0;

  document.addEventListener(
    "mousedown",
    (e) => {
      if (e.button === 0) _mb = true;
    },
    true,
  );
  document.addEventListener(
    "mouseup",
    (e) => {
      if (e.button === 0) _mb = false;
    },
    true,
  );

  function _rs() {
    if (_ti) return;
    _ti = setInterval(() => {
      if (!_mb) return;
      const _c = document.getElementById(_cn);
      if (!_c) return;
      _c.dispatchEvent(
        new MouseEvent(_ev, {
          bubbles: true,
          cancelable: true,
          movementX: 0,
          movementY: _str / 50,
        }),
      );
    }, 16);
  }

  function _rx() {
    clearInterval(_ti);
    _ti = null;
  }

  function toggleRecoil() {
    _on = !_on;
    _on ? _rs() : _rx();
    _syncRc();
    toast("Recoil Control " + (_on ? "ON" : "OFF"));
  }

  function _syncRc() {
    document
      .querySelectorAll(
        '#security-toolkit-panel [data-id="norecoil"], #security-toolkit-panel [data-id="norecoil-toggle"]',
      )
      .forEach((row) => {
        const v = row.querySelector(".rt-row-value");
        if (v) v.textContent = _on ? "ON" : "OFF";
        row.classList.toggle("on", _on);
      });
    const dot = document.getElementById("stp-dot-norecoil");
    if (dot) dot.classList.toggle("on", _on);
  }

  function toast(msg) {
    const el = document.createElement("div");
    el.textContent = msg;
    Object.assign(el.style, {
      position: "fixed",
      bottom: "20px",
      right: "20px",
      background: "#0d1117",
      border: "1px solid #10b981",
      color: "#e6edf3",
      padding: "7px 13px",
      borderRadius: "6px",
      fontSize: "11px",
      fontFamily: "monospace",
      zIndex: "2147483647",
      opacity: "0",
      transition: "opacity 180ms ease",
      pointerEvents: "none",
    });
    document.body.appendChild(el);
    requestAnimationFrame(() => {
      el.style.opacity = "1";
    });
    setTimeout(() => {
      el.style.opacity = "0";
      setTimeout(() => el.remove(), 200);
    }, 2200);
  }

  const PANEL_CSS = `
    #security-toolkit-panel {
      --rt-bg-primary: #111118;
      --rt-bg-secondary: #0d0d14;
      --rt-bg-elevated: rgba(255,255,255,0.025);
      --rt-bg-hover: rgba(16,185,129,0.04);
      --rt-bg-active: rgba(16,185,129,0.08);
      --rt-border: rgba(255,255,255,0.04);
      --rt-border-subtle: rgba(255,255,255,0.025);
      --rt-border-active: #10b981;
      --rt-text-primary: #e2e2e8;
      --rt-text-secondary: #7a7a8a;
      --rt-text-muted: #4a4a60;
      --rt-text-accent: #10b981;
      --rt-text-accent-light: #34d399;
      --rt-text-danger: #ef4444;
      --rt-text-warning: #f59e0b;
      --rt-accent: #10b981;
      --rt-accent-dim: rgba(16,185,129,0.15);
      --rt-accent-glow: rgba(16,185,129,0.3);
      --rt-tier-free: #6b6b7b;
      --rt-tier-paid: #10b981;
      --rt-tier-pro: #f59e0b;
      --rt-font: 'Segoe UI', system-ui, -apple-system, sans-serif;
      --rt-font-mono: 'Consolas', 'Monaco', monospace;
      --rt-font-xs: 9px;
      --rt-font-sm: 10px;
      --rt-font-base: 12px;
      --rt-transition: 150ms ease;
    }
    #security-toolkit-panel {
      position: fixed; top: 64px; left: 16px; width: 440px;
      background: var(--rt-bg-primary); border: 1px solid var(--rt-border);
      border-radius: 10px; font-family: var(--rt-font); font-size: var(--rt-font-base);
      color: var(--rt-text-primary); z-index: 999999; display: none;
      user-select: none; overflow: hidden; box-shadow: 0 8px 32px rgba(0,0,0,0.5); line-height: 1.4;
    }
    #security-toolkit-panel.visible { display: block; }
    #security-toolkit-panel * { box-sizing: border-box; }
    .rt-header {
      display: flex; align-items: center; justify-content: space-between;
      padding: 8px 12px; background: var(--rt-bg-secondary);
      border-bottom: 1px solid var(--rt-border); cursor: move;
    }
    .rt-header-left { display: flex; align-items: center; gap: 8px; }
    .rt-logo-box {
      width: 20px; height: 20px; background: var(--rt-accent); border-radius: 3px;
      display: flex; align-items: center; justify-content: center;
      color: #000; font-weight: 900; font-size: 11px; letter-spacing: -0.5px; flex-shrink: 0;
    }
    .rt-title { font-size: var(--rt-font-base); font-weight: 700; color: var(--rt-text-primary); letter-spacing: 1px; text-transform: uppercase; }
    .rt-version { font-size: var(--rt-font-xs); color: var(--rt-text-muted); font-weight: 600; }
    .rt-header-right { display: flex; align-items: center; gap: 8px; }
    .rt-close {
      width: 22px; height: 22px; display: flex; align-items: center; justify-content: center;
      border-radius: 6px; border: none; background: none; color: var(--rt-text-muted);
      cursor: pointer; transition: all var(--rt-transition); padding: 0;
    }
    .rt-close:hover { background: rgba(255,255,255,0.05); color: var(--rt-text-secondary); }
    .rt-tabs {
      display: flex; padding: 0 12px; background: var(--rt-bg-secondary);
      border-bottom: 1px solid var(--rt-border); gap: 0;
    }
    .rt-tab {
      padding: 7px 12px 5px; background: none; border: none;
      border-bottom: 2px solid transparent; color: var(--rt-text-muted);
      font-family: inherit; font-size: var(--rt-font-sm); font-weight: 600;
      cursor: pointer; transition: all var(--rt-transition); white-space: nowrap;
    }
    .rt-tab .rt-tab-hint { font-size: 8px; color: var(--rt-text-muted); opacity: 0.5; margin-left: 3px; vertical-align: super; }
    .rt-tab:hover { color: var(--rt-text-secondary); }
    .rt-tab.active { color: var(--rt-accent); border-bottom-color: var(--rt-accent); }
    .rt-guide-bar {
      display: flex; align-items: center; justify-content: center; gap: 12px;
      padding: 4px 12px; background: var(--rt-bg-secondary);
      border-bottom: 1px solid var(--rt-border); font-size: 8px;
      color: var(--rt-text-muted); letter-spacing: 0.5px;
    }
    .rt-guide-bar kbd {
      display: inline-block; padding: 0 4px; background: rgba(255,255,255,0.04);
      border: 1px solid rgba(255,255,255,0.06); border-radius: 2px;
      font-family: var(--rt-font-mono); font-size: 8px; color: var(--rt-text-secondary); line-height: 1.4;
    }
    .rt-tab-content { display: none; padding: 8px 0; max-height: 420px; overflow-y: auto; }
    .rt-tab-content.active { display: block; }
    .rt-tab-content::-webkit-scrollbar { width: 2px; }
    .rt-tab-content::-webkit-scrollbar-thumb { background: rgba(16,185,129,0.2); border-radius: 1px; }
    .rt-category {
      font-size: 8px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase;
      color: #3a3a50; padding: 8px 14px 3px;
    }
    .rt-category:first-child { padding-top: 4px; }
    .rt-row {
      display: flex; align-items: center; padding: 5px 14px 5px 18px;
      position: relative; cursor: pointer; transition: background var(--rt-transition); min-height: 28px;
    }
    .rt-row:hover { background: var(--rt-bg-hover); }
    .rt-row.on::before {
      content: ''; position: absolute; left: 0; top: 4px; bottom: 4px; width: 3px;
      background: var(--rt-accent); border-radius: 0 2px 2px 0; box-shadow: 0 0 4px var(--rt-accent-glow);
    }
    .rt-row.locked {
      opacity: 0.8; background: rgba(245,158,11,0.03);
      border-left: 2px solid rgba(245,158,11,0.28); cursor: pointer;
    }
    .rt-row.locked .rt-row-name { color: var(--rt-text-secondary); }
    .rt-row.locked .rt-row-key { visibility: hidden; }
    .rt-row.locked .rt-row-value {
      color: #f59e0b; display: flex; align-items: center; justify-content: flex-end; gap: 3px;
    }
    .rt-row.locked .rt-row-value::after {
      content: 'PRO'; font-size: 7px; font-weight: 800; letter-spacing: 0.6px;
      color: rgba(245,158,11,0.65); background: rgba(245,158,11,0.1);
      border: 1px solid rgba(245,158,11,0.22); border-radius: 2px;
      padding: 1px 3px; margin-left: 3px; line-height: 1.4;
    }
    .rt-row.locked:hover { background: rgba(245,158,11,0.08); opacity: 1; border-left-color: rgba(245,158,11,0.6); }
    .rt-row.locked:hover .rt-row-value { color: #fbbf24; }
    .rt-row.locked:hover .rt-row-value::after { color: #f59e0b; background: rgba(245,158,11,0.18); border-color: rgba(245,158,11,0.4); }
    .rt-row-name { flex: 1; font-size: var(--rt-font-sm); font-weight: 500; color: var(--rt-text-primary); }
    .rt-row-key {
      font-size: 8px; color: var(--rt-text-muted); font-weight: 600;
      padding: 1px 5px; background: rgba(255,255,255,0.03); border-radius: 3px;
      margin-right: 8px; font-family: var(--rt-font-mono);
    }
    .rt-row-value { font-size: var(--rt-font-sm); font-weight: 600; color: var(--rt-text-muted); min-width: 30px; text-align: right; }
    .rt-row.on .rt-row-value { color: var(--rt-accent); }
    .rt-row-slider { display: flex; align-items: center; gap: 6px; min-width: 120px; justify-content: flex-end; }
    .rt-slider-track {
      -webkit-appearance: none; appearance: none; height: 3px;
      background: rgba(255,255,255,0.06); border-radius: 2px; outline: none; cursor: pointer; width: 80px;
    }
    .rt-slider-track::-webkit-slider-thumb {
      -webkit-appearance: none; appearance: none; width: 10px; height: 10px;
      background: var(--rt-accent); border-radius: 50%; cursor: pointer; border: none;
    }
    .rt-slider-track::-moz-range-thumb { width: 10px; height: 10px; background: var(--rt-accent); border-radius: 50%; cursor: pointer; border: none; }
    .rt-slider-fill {
      color: var(--rt-text-accent); font-size: var(--rt-font-sm); min-width: 28px;
      text-align: right; font-family: var(--rt-font-mono); font-weight: 600;
    }
    .rt-select {
      background: var(--rt-bg-secondary); border: 1px solid var(--rt-border);
      color: var(--rt-text-primary); padding: 4px 8px; border-radius: 4px;
      font-family: inherit; font-size: var(--rt-font-sm); cursor: pointer; outline: none;
      transition: border-color var(--rt-transition);
    }
    .rt-select:hover, .rt-select:focus { border-color: var(--rt-accent); }
    .rt-select option { background: var(--rt-bg-primary); color: var(--rt-text-primary); }
    .rt-info-row { padding: 3px 14px 3px 18px; font-size: var(--rt-font-xs); color: var(--rt-text-muted); line-height: 1.5; }
    .rt-info-row.rt-nudge { color: #f59e0b; cursor: pointer; letter-spacing: 0.3px; font-weight: 600; }
    .rt-info-row.rt-nudge:hover { color: #fbbf24; }
    .rt-keybind-value {
      background: var(--rt-bg-secondary); border: 1px solid var(--rt-border);
      color: var(--rt-text-primary); padding: 2px 6px; border-radius: 4px;
      font-family: var(--rt-font-mono); font-size: var(--rt-font-xs);
      width: 52px; text-align: center; cursor: default; outline: none;
    }
    .rt-status-bar {
      display: flex; align-items: center; justify-content: space-between;
      padding: 5px 12px; background: var(--rt-bg-secondary); border-top: 1px solid var(--rt-border);
    }
    .rt-status-items { display: flex; gap: 10px; align-items: center; }
    .rt-status-item { display: flex; align-items: center; gap: 4px; font-size: 8px; color: var(--rt-text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; }
    .rt-dot { width: 5px; height: 5px; border-radius: 50%; background: rgba(255,255,255,0.08); transition: background var(--rt-transition), box-shadow var(--rt-transition); }
    .rt-dot.on { background: var(--rt-accent); box-shadow: 0 0 6px var(--rt-accent-glow); }
    .rt-badge { padding: 2px 8px; border-radius: 9999px; font-size: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; line-height: 1.4; }
    .rt-badge-free { background: rgba(107,107,123,0.15); color: var(--rt-tier-free); }
    .rt-badge-paid { background: rgba(16,185,129,0.12); color: var(--rt-tier-paid); }
    .rt-tier-display { display: flex; align-items: center; justify-content: space-between; padding: 4px 14px 4px 18px; }
    .rt-tier-label { font-size: var(--rt-font-sm); color: var(--rt-text-secondary); }
    .rt-tier-value { font-size: var(--rt-font-sm); font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; }
    .rt-timer { font-family: var(--rt-font-mono); font-size: var(--rt-font-sm); font-weight: 600; color: var(--rt-text-secondary); }
    .rt-input-row { display: flex; gap: 4px; align-items: center; padding: 6px 14px; }
    .rt-input {
      background: var(--rt-bg-secondary); border: 1px solid var(--rt-border);
      color: var(--rt-text-primary); padding: 4px 8px; border-radius: 4px;
      font-family: inherit; font-size: var(--rt-font-sm); outline: none;
      transition: border-color var(--rt-transition); width: 60px;
    }
    .rt-input:focus { border-color: var(--rt-accent); }
    .rt-input::placeholder { color: var(--rt-text-muted); }
    .rt-btn {
      padding: 4px 10px; border: 1px solid var(--rt-border); background: var(--rt-bg-elevated);
      color: var(--rt-text-secondary); border-radius: 4px; cursor: pointer;
      font-family: inherit; font-size: var(--rt-font-sm); transition: all var(--rt-transition); white-space: nowrap;
    }
    .rt-btn:hover { border-color: var(--rt-accent); color: var(--rt-accent); }
    .rt-btn-primary { border-color: var(--rt-accent); color: var(--rt-accent); }
    .rt-btn-primary:hover { background: var(--rt-accent-dim); }
    .rt-btn-danger { border-color: rgba(239,68,68,0.3); color: var(--rt-text-danger); }
    .rt-btn-icon-danger {
      flex-shrink: 0; width: 26px; padding: 0; display: flex; align-items: center;
      justify-content: center; color: var(--rt-text-muted); border-color: transparent;
    }
    .rt-btn-icon-danger:hover { color: var(--rt-text-danger); border-color: rgba(239,68,68,0.3); background: rgba(239,68,68,0.08); }
    .rt-btn-warning { border-color: rgba(245,158,11,0.3); color: var(--rt-text-warning); }
    .rt-btn-warning:hover { background: rgba(245,158,11,0.1); border-color: var(--rt-text-warning); }
    .rt-divider { height: 1px; background: var(--rt-border); margin: 8px 0; }
    .rt-discord-card {
      display: flex; align-items: center; justify-content: space-between; gap: 10px;
      margin: 8px 10px 6px; padding: 9px 12px;
      background: rgba(88,101,242,0.1); border: 1px solid rgba(88,101,242,0.3);
      border-radius: 6px; cursor: pointer; transition: background var(--rt-transition), border-color var(--rt-transition);
    }
    .rt-discord-card:hover { background: rgba(88,101,242,0.16); border-color: rgba(88,101,242,0.5); }
    .rt-discord-card-left { display: flex; align-items: center; gap: 9px; }
    .rt-discord-title { font-size: var(--rt-font-sm); font-weight: 700; color: #7289da; line-height: 1.3; }
    .rt-discord-sub { font-size: var(--rt-font-xs); color: rgba(114,137,218,0.65); margin-top: 1px; }
    .rt-discord-join { font-size: var(--rt-font-xs); font-weight: 700; color: #7289da; font-family: var(--rt-font-mono); white-space: nowrap; opacity: 0.8; }
    .rt-discord-card:hover .rt-discord-join { opacity: 1; }
    .rt-plan-row {
      display: flex; align-items: center; gap: 8px; padding: 5px 14px 5px 18px;
      border-bottom: 1px solid var(--rt-border-subtle); cursor: pointer; transition: background 0.15s ease;
    }
    .rt-plan-row:hover { background: rgba(16,185,129,0.07); }
    .rt-plan-row.rt-plan-highlight { background: rgba(16,185,129,0.03); }
    .rt-plan-row.rt-plan-highlight:hover { background: rgba(16,185,129,0.1); }
    .rt-plan-name { flex: 1; font-size: var(--rt-font-sm); font-weight: 600; color: var(--rt-text-primary); display: flex; align-items: center; gap: 5px; }
    .rt-plan-period { font-size: var(--rt-font-xs); color: var(--rt-text-muted); font-family: var(--rt-font-mono); min-width: 42px; text-align: right; }
    .rt-plan-price { font-size: var(--rt-font-sm); font-weight: 700; font-family: var(--rt-font-mono); color: var(--rt-text-accent); min-width: 28px; text-align: right; }
    .rt-plan-price-gold { color: var(--rt-text-warning); }
    .rt-plan-badge { font-size: 7px; font-weight: 700; letter-spacing: 0.5px; padding: 1px 4px; border-radius: 2px; background: rgba(16,185,129,0.1); border: 1px solid rgba(16,185,129,0.25); color: var(--rt-accent); }
    .rt-plan-badge-gold { background: rgba(245,158,11,0.1); border: 1px solid rgba(245,158,11,0.25); color: var(--rt-text-warning); }
    .rt-btn-plan { font-size: var(--rt-font-xs); padding: 3px 8px; font-family: var(--rt-font-mono); letter-spacing: 0.3px; pointer-events: none; }
  `;

  const SVG_CLOSE =
    '<svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M1 1l10 10M11 1L1 11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>';
  const SVG_TRASH =
    '<svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M1 3h10M4 3V2a1 1 0 011-1h2a1 1 0 011 1v1m1 0v7a1 1 0 01-1 1H4a1 1 0 01-1-1V3h8z" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></svg>';
  const SVG_DISCORD =
    '<svg width="16" height="16" viewBox="0 0 24 24" fill="#7289da" style="flex-shrink:0"><path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057c.002.022.015.043.033.054a19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03z"/></svg>';

  const PANEL_HTML = `
    <!-- Title Bar -->
    <div class="rt-header">
      <div class="rt-header-left">
        <div class="rt-logo-box">PF</div>
        <span class="rt-title">Polyfillers Hack</span>
        <span class="rt-version">v${VERSION}</span>
        <span class="rt-badge rt-badge-free">FREE</span>
      </div>
      <div class="rt-header-right">
        <button class="rt-close" id="stp-close">${SVG_CLOSE}</button>
      </div>
    </div>

    <!-- Version notice banner -->
    <div id="stp-version-banner" style="display:flex; background:rgba(124,58,237,0.08); border-bottom:1px solid rgba(124,58,237,0.2); padding:5px 12px; font-size:9px; color:#a78bfa; align-items:center; justify-content:space-between; gap:8px; flex-shrink:0;">
      <span style="flex:1;">GreasyFork edition v${VERSION} — free Recoil Control. Full version info at <a href="${SITE}" target="_blank" style="color:#c4b5fd; text-decoration:none; font-weight:600;">rushteam.tools</a></span>
    </div>

    <!-- Tabs -->
    <div class="rt-tabs">
      <button class="rt-tab active" data-tab="license"><span class="rt-tab-hint">1</span> License</button>
      <button class="rt-tab" data-tab="main"><span class="rt-tab-hint">2</span> Main</button>
      <button class="rt-tab" data-tab="visuals"><span class="rt-tab-hint">3</span> Visuals</button>
      <button class="rt-tab" data-tab="aim"><span class="rt-tab-hint">4</span> Aim</button>
      <button class="rt-tab" data-tab="ghost"><span class="rt-tab-hint">5</span> Ghost</button>
    </div>

    <!-- Guide Bar -->
    <div class="rt-guide-bar">
      <span><kbd>F2</kbd>/<kbd>Ins</kbd> panel</span>
      <span><kbd>↑↓</kbd> nav</span>
      <span><kbd>Enter</kbd> toggle</span>
      <span><kbd>←→</kbd> adjust</span>
      <span><kbd>Tab</kbd> tabs</span>
    </div>

    <!-- ── Tab 1: License ─────────────────────────────────────────────────── -->
    <div class="rt-tab-content active" id="tab-license">

      <div class="rt-discord-card" id="stp-discord-btn">
        <div class="rt-discord-card-left">
          ${SVG_DISCORD}
          <div>
            <div class="rt-discord-title">Support &amp; Help</div>
            <div class="rt-discord-sub">Key delivery · device resets · issues</div>
          </div>
        </div>
        <span class="rt-discord-join">Join →</span>
      </div>

      <div class="rt-category">License Key</div>
      <div class="rt-input-row">
        <input type="text" class="rt-input" id="stp-license-key" placeholder="RT-XXXX-XXXX-XXXX-XXXX" style="flex:1; width:auto; font-size:9px;">
        <button class="rt-btn rt-btn-primary" id="stp-license-apply">Apply</button>
        <button class="rt-btn rt-btn-icon-danger" id="stp-license-clear" title="Clear key">${SVG_TRASH}</button>
      </div>

      <div class="rt-category">Status</div>
      <div class="rt-tier-display">
        <span class="rt-tier-label">Tier</span>
        <span class="rt-tier-value" style="color: var(--rt-tier-free);">FREE</span>
      </div>
      <div class="rt-tier-display">
        <span class="rt-tier-label">Session</span>
        <span class="rt-timer">—</span>
      </div>

      <div class="rt-category">Get a License</div>
      <div class="rt-plan-row" data-checkout="weekly">
        <span class="rt-plan-name">Weekly</span>
        <span class="rt-plan-period">7 days</span>
        <span class="rt-plan-price">$5</span>
        <span class="rt-btn rt-btn-plan">Buy →</span>
      </div>
      <div class="rt-plan-row rt-plan-highlight" data-checkout="monthly">
        <span class="rt-plan-name">Monthly <span class="rt-plan-badge">POPULAR</span></span>
        <span class="rt-plan-period">30 days</span>
        <span class="rt-plan-price">$10</span>
        <span class="rt-btn rt-btn-plan rt-btn-primary">Buy →</span>
      </div>
      <div class="rt-plan-row" data-checkout="lifetime">
        <span class="rt-plan-name">Lifetime <span class="rt-plan-badge rt-plan-badge-gold">BEST</span></span>
        <span class="rt-plan-period">Forever</span>
        <span class="rt-plan-price rt-plan-price-gold">$40</span>
        <span class="rt-btn rt-btn-plan rt-btn-warning">Buy →</span>
      </div>
      <div class="rt-info-row">Instant · Crypto · 0 bans · rushteam.tools</div>

      <div class="rt-divider"></div>
      <div class="rt-info-row" style="text-align:center; padding:6px 14px; cursor:pointer;" id="stp-access-link">
        Get full access at <span style="color:var(--rt-accent);">rushteam.tools</span>
      </div>
    </div>

    <!-- ── Tab 2: Main ────────────────────────────────────────────────────── -->
    <div class="rt-tab-content" id="tab-main">

      <div class="rt-category">Features</div>
      <div class="rt-row locked" data-id="xray">
        <span class="rt-row-name">Wallhack</span>
        <span class="rt-row-key">F3</span>
        <span class="rt-row-value"></span>
      </div>
      <div class="rt-row locked" data-id="chams">
        <span class="rt-row-name">Chams</span>
        <span class="rt-row-key">F4</span>
        <span class="rt-row-value"></span>
      </div>
      <div class="rt-row" data-id="norecoil">
        <span class="rt-row-name">Recoil Control</span>
        <span class="rt-row-key">F5</span>
        <span class="rt-row-value">OFF</span>
      </div>
      <div class="rt-row locked" data-id="desync">
        <span class="rt-row-name">Ghost Hack</span>
        <span class="rt-row-key">F6</span>
        <span class="rt-row-value"></span>
      </div>
      <div class="rt-row locked" data-id="aim">
        <span class="rt-row-name">Aimbot</span>
        <span class="rt-row-key">F7</span>
        <span class="rt-row-value"></span>
      </div>
      <div class="rt-row locked" data-id="bot">
        <span class="rt-row-name">Bot Mode</span>
        <span class="rt-row-key">F8</span>
        <span class="rt-row-value"></span>
      </div>

      <div class="rt-info-row rt-nudge" id="stp-upgrade-nudge" style="display:none;">Features locked — upgrade to unlock all</div>

      <div class="rt-category">Keybinds</div>
      <div class="rt-row" style="cursor:default;" data-id="key-panel">
        <span class="rt-row-name">Panel</span>
        <input type="text" class="rt-keybind-value" value="F2" readonly tabindex="-1">
      </div>
      <div class="rt-row" style="cursor:default;" data-id="key-esp">
        <span class="rt-row-name">Wallhack</span>
        <input type="text" class="rt-keybind-value" value="F3" readonly tabindex="-1">
      </div>
      <div class="rt-row" style="cursor:default;" data-id="key-chams">
        <span class="rt-row-name">Chams</span>
        <input type="text" class="rt-keybind-value" value="F4" readonly tabindex="-1">
      </div>
      <div class="rt-row" style="cursor:default;" data-id="key-norecoil">
        <span class="rt-row-name">Recoil Ctrl</span>
        <input type="text" class="rt-keybind-value" value="F5" readonly tabindex="-1">
      </div>
      <div class="rt-row" style="cursor:default;" data-id="key-desync">
        <span class="rt-row-name">Ghost Hack</span>
        <input type="text" class="rt-keybind-value" value="F6" readonly tabindex="-1">
      </div>
      <div class="rt-row" style="cursor:default;" data-id="key-aimdebug">
        <span class="rt-row-name">Aimbot</span>
        <input type="text" class="rt-keybind-value" value="F7" readonly tabindex="-1">
      </div>
      <div class="rt-row" style="cursor:default;" data-id="key-botmode">
        <span class="rt-row-name">Bot Mode</span>
        <input type="text" class="rt-keybind-value" value="F8" readonly tabindex="-1">
      </div>
      <div class="rt-info-row">Keybind editing available in full version at rushteam.tools</div>

      <div class="rt-category">Network</div>
      <div class="rt-row locked" data-id="bypass">
        <span class="rt-row-name">IP Bypass</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value"></span>
      </div>

    </div>

    <!-- ── Tab 3: Visuals ─────────────────────────────────────────────────── -->
    <div class="rt-tab-content" id="tab-visuals">

      <div class="rt-category">Wallhack</div>
      <div class="rt-row locked" data-id="xray-toggle">
        <span class="rt-row-name">Wallhack</span>
        <span class="rt-row-key">F3</span>
        <span class="rt-row-value"></span>
      </div>
      <div class="rt-row locked" data-id="xray-depth">
        <span class="rt-row-name">Depth Offset</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">-100000</span>
      </div>

      <div class="rt-category">Chams</div>
      <div class="rt-row locked" data-id="chams-toggle">
        <span class="rt-row-name">Chams</span>
        <span class="rt-row-key">F4</span>
        <span class="rt-row-value"></span>
      </div>
      <div class="rt-row locked" data-id="chams-color">
        <span class="rt-row-name">Color</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">Red</span>
      </div>

    </div>

    <!-- ── Tab 4: Aim ─────────────────────────────────────────────────────── -->
    <div class="rt-tab-content" id="tab-aim">

      <div class="rt-category">Aimbot</div>
      <div class="rt-row locked" data-id="aim-toggle">
        <span class="rt-row-name">Aimbot</span>
        <span class="rt-row-key">F7</span>
        <span class="rt-row-value"></span>
      </div>
      <div class="rt-info-row">Hold aim key to lock onto nearest target</div>

      <div class="rt-category">Configuration</div>
      <div class="rt-row locked" data-id="aim-mode">
        <span class="rt-row-name">Mode</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">Smooth</span>
      </div>
      <div class="rt-row locked" data-id="aim-smoothing">
        <span class="rt-row-name">Smoothing</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">0.50</span>
      </div>
      <div class="rt-row locked" data-id="aim-fov">
        <span class="rt-row-name">FOV</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">300</span>
      </div>
      <div class="rt-row locked" data-id="aim-sensitivity">
        <span class="rt-row-name">Sensitivity</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">1.00</span>
      </div>
      <div class="rt-row locked" data-id="aim-headheight">
        <span class="rt-row-name">Target Spot</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">Head</span>
      </div>
      <div class="rt-row locked" data-id="aim-priority">
        <span class="rt-row-name">Priority</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">Crosshair</span>
      </div>

      <div class="rt-category">Aim Key</div>
      <div class="rt-row locked" data-id="aim-key">
        <span class="rt-row-name">Hold Key</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">Mouse4</span>
      </div>

      <div class="rt-category">Recoil Control</div>
      <div class="rt-row" data-id="norecoil-toggle">
        <span class="rt-row-name">Recoil Control</span>
        <span class="rt-row-key">F5</span>
        <span class="rt-row-value">OFF</span>
      </div>
      <div class="rt-row" style="cursor:default;" data-id="rc-strength">
        <span class="rt-row-name">Strength</span>
        <div class="rt-row-slider">
          <input type="range" class="rt-slider-track" id="stp-rc-strength" min="10" max="300" value="180" step="10">
          <span class="rt-slider-fill" id="stp-rc-strength-val">1.80</span>
        </div>
      </div>
      <div class="rt-row" style="cursor:default;" data-id="rc-preset">
        <span class="rt-row-name">Preset</span>
        <select class="rt-select" id="stp-rc-preset" style="width:90px;">
          <option value="light">Light  1.5x</option>
          <option value="medium" selected>Medium 2.0x</option>
          <option value="heavy">Heavy  2.5x</option>
          <option value="sniper">Sniper 1.0x</option>
        </select>
      </div>

    </div>

    <!-- ── Tab 5: Ghost ───────────────────────────────────────────────────── -->
    <div class="rt-tab-content" id="tab-ghost">

      <div class="rt-category">Ghost Hack</div>
      <div class="rt-row locked" data-id="ghost-toggle">
        <span class="rt-row-name">Ghost Hack</span>
        <span class="rt-row-key">F6</span>
        <span class="rt-row-value"></span>
      </div>

      <div class="rt-category">Configuration</div>
      <div class="rt-row locked" data-id="ghost-mode">
        <span class="rt-row-name">Mode</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">Ghost</span>
      </div>
      <div class="rt-info-row">Ghost: frozen until shoot, click = brief flash</div>
      <div class="rt-row locked" data-id="ghost-autopulse">
        <span class="rt-row-name">Auto-Pulse</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value"></span>
      </div>
      <div class="rt-row locked" data-id="ghost-interval">
        <span class="rt-row-name">Interval</span>
        <span class="rt-row-key"></span>
        <span class="rt-row-value">0.4s</span>
      </div>

    </div>

    <!-- Info banner — non-blocking notification about full version -->
    <div id="rt-info-banner" style="display:flex; background:rgba(16,185,129,0.06); border-bottom:1px solid rgba(16,185,129,0.15); padding:5px 12px; font-size:9px; color:#6b7280; align-items:center; justify-content:space-between; gap:8px; flex-shrink:0;">
      <span style="flex:1;">This is the free GreasyFork edition — Recoil Control included. More features at <a href="https://rushteam.tools" target="_blank" style="color:#10b981; text-decoration:none; font-weight:600;">rushteam.tools</a></span>
      <span id="rt-banner-dismiss" style="color:#3a3a50; cursor:pointer; font-size:8px; font-weight:600; padding:2px 4px;">✕</span>
    </div>

    <!-- Status Bar -->
    <div class="rt-status-bar">
      <div class="rt-status-items">
        <div class="rt-status-item"><span class="rt-dot" id="stp-dot-xray"></span> WH</div>
        <div class="rt-status-item"><span class="rt-dot" id="stp-dot-chams"></span> CH</div>
        <div class="rt-status-item"><span class="rt-dot" id="stp-dot-norecoil"></span> RC</div>
        <div class="rt-status-item"><span class="rt-dot" id="stp-dot-aim"></span> AB</div>
        <div class="rt-status-item"><span class="rt-dot" id="stp-dot-ghost"></span> Ghost</div>
        <div class="rt-status-item"><span class="rt-dot" id="stp-dot-bot"></span> Bot</div>
      </div>
      <span class="rt-badge rt-badge-free">FREE</span>
    </div>
  `;

  let panelEl = null;

  function buildPanel() {
    if (panelEl) return;
    const styleEl = document.createElement("style");
    styleEl.textContent = PANEL_CSS;
    (document.head || document.documentElement).appendChild(styleEl);

    const el = document.createElement("div");
    el.id = "security-toolkit-panel";
    el.innerHTML = PANEL_HTML;
    document.body.appendChild(el);
    panelEl = el;
    setupEvents();
  }

  function setupEvents() {
    const p = panelEl;

    p.querySelector("#stp-close").addEventListener("click", () => {
      panelOpen = false;
      p.classList.remove("visible");
    });

    p.querySelector(".rt-header").addEventListener("mousedown", (e) => {
      if (e.target.closest("#stp-close")) return;
      isDragging = true;
      const r = p.getBoundingClientRect();
      dragOffX = e.clientX - r.left;
      dragOffY = e.clientY - r.top;
    });
    document.addEventListener("mousemove", (e) => {
      if (!isDragging) return;
      p.style.left = e.clientX - dragOffX + "px";
      p.style.top = e.clientY - dragOffY + "px";
    });
    document.addEventListener("mouseup", () => {
      isDragging = false;
    });

    p.querySelectorAll(".rt-tab").forEach((tab) => {
      tab.addEventListener("click", () => {
        const id = tab.dataset.tab;
        p.querySelectorAll(".rt-tab").forEach((t) =>
          t.classList.toggle("active", t === tab),
        );
        p.querySelectorAll(".rt-tab-content").forEach((c) =>
          c.classList.toggle("active", c.id === "tab-" + id),
        );
      });
    });

    p.querySelector("#stp-discord-btn").addEventListener("click", () =>
      window.open(DISCORD, "_blank"),
    );

    p.querySelector("#stp-access-link").addEventListener("click", () =>
      window.open(SITE, "_blank"),
    );

    p.querySelectorAll(".rt-plan-row").forEach((row) => {
      row.addEventListener("click", () => window.open(SITE, "_blank"));
    });

    p.querySelector("#stp-license-apply").addEventListener("click", () => {
      toast("Enter your key at rushteam.tools");
      setTimeout(() => window.open(SITE, "_blank"), 400);
    });
    p.querySelector("#stp-license-clear").addEventListener("click", () => {
      p.querySelector("#stp-license-key").value = "";
    });

    p.querySelectorAll(".rt-row.locked").forEach((row) => {
      row.addEventListener("click", (e) => {
        if (e.target.tagName === "SELECT" || e.target.tagName === "INPUT")
          return;
        const name =
          (row.querySelector(".rt-row-name") || {}).textContent ||
          "This feature";
        toast(name.trim() + " — unlock at rushteam.tools");
        setTimeout(() => window.open(SITE, "_blank"), 400);
      });
    });

    p.querySelectorAll(
      '[data-id="norecoil"], [data-id="norecoil-toggle"]',
    ).forEach((row) => {
      row.addEventListener("click", () => toggleRecoil());
    });

    const rcSlider = p.querySelector("#stp-rc-strength");
    const rcVal = p.querySelector("#stp-rc-strength-val");
    if (rcSlider) {
      rcSlider.addEventListener("input", () => {
        _str = +rcSlider.value;
        if (rcVal) rcVal.textContent = (_str / 100).toFixed(2);
        if (_on) {
          _rx();
          _rs();
        }
      });
    }

    const rcPreset = p.querySelector("#stp-rc-preset");
    if (rcPreset) {
      rcPreset.addEventListener("change", () => {
        const map = { light: 150, medium: 200, heavy: 250, sniper: 100 };
        _str = map[rcPreset.value] || 200;
        if (rcSlider) rcSlider.value = String(_str);
        if (rcVal) rcVal.textContent = (_str / 100).toFixed(2);
        if (_on) {
          _rx();
          _rs();
        }
      });
    }

    const nudge = p.querySelector("#stp-upgrade-nudge");
    if (nudge) {
      nudge.style.display = "block";
      nudge.addEventListener("click", () => window.open(SITE, "_blank"));
    }

    const bannerDismiss = p.querySelector("#rt-banner-dismiss");
    if (bannerDismiss) {
      bannerDismiss.addEventListener("click", () => {
        const banner = p.querySelector("#rt-info-banner");
        if (banner) banner.style.display = "none";
      });
    }
  }

  function togglePanel() {
    panelOpen = !panelOpen;
    if (panelEl) panelEl.classList.toggle("visible", panelOpen);
  }

  document.addEventListener(
    "keydown",
    (e) => {
      if (e.key === "F2" || e.key === "Insert") {
        e.preventDefault();
        togglePanel();
      }
      if (e.key === "F5" && document.getElementById("unity-canvas")) {
        e.preventDefault();
        toggleRecoil();
      }
    },
    true,
  );

  function _ab() {
    const _a = document.getElementById(_na);
    const _b = document.getElementById(_uc);
    if (_a) _a.style.setProperty("display", "none", "important");
    if (_b) _b.style.setProperty("display", "block", "important");
  }

  function startBypass() {
    _ab();
    const _obs = new MutationObserver(_ab);
    [_na, _uc].forEach((id) => {
      const el = document.getElementById(id);
      if (el)
        _obs.observe(el, { attributes: true, attributeFilter: ["style"] });
    });
    setTimeout(() => {
      if (typeof runUnityLoader === "function") {
        runUnityLoader();
      } else {
        const _btn = document.getElementById(["loading", "button"].join("-"));
        if (_btn) _btn.click();
      }
    }, 200);
  }

  function buildNotice() {
    if (panelEl) return;

    const styleEl = document.createElement("style");
    styleEl.textContent =
      PANEL_CSS +
      `
      #security-toolkit-notice {
        --rt-bg-primary: #111118; --rt-bg-secondary: #0d0d14;
        --rt-bg-elevated: rgba(255,255,255,0.025); --rt-border: rgba(255,255,255,0.04);
        --rt-text-primary: #e2e2e8; --rt-text-secondary: #7a7a8a; --rt-text-muted: #4a4a60;
        --rt-text-accent: #10b981; --rt-accent: #10b981; --rt-accent-dim: rgba(16,185,129,0.15);
        --rt-font: 'Segoe UI', system-ui, -apple-system, sans-serif;
        --rt-font-mono: 'Consolas', 'Monaco', monospace;
        --rt-font-xs: 9px; --rt-font-sm: 10px; --rt-font-base: 12px; --rt-transition: 150ms ease;
        position: fixed; top: 64px; left: 16px; width: 300px;
        background: var(--rt-bg-primary); border: 1px solid var(--rt-border);
        border-radius: 10px; font-family: var(--rt-font); font-size: var(--rt-font-base);
        color: var(--rt-text-primary); z-index: 999999; display: none;
        user-select: none; overflow: hidden; box-shadow: 0 8px 32px rgba(0,0,0,0.5); line-height: 1.4;
      }
      #security-toolkit-notice.visible { display: block; }
      #security-toolkit-notice * { box-sizing: border-box; }
    `;
    (document.head || document.documentElement).appendChild(styleEl);

    const el = document.createElement("div");
    el.id = "security-toolkit-notice";
    el.innerHTML = `
      <div class="rt-header" style="cursor:move;">
        <div class="rt-header-left">
          <div class="rt-logo-box">PF</div>
          <span class="rt-title">Polyfillers Hack</span>
          <span class="rt-version">v${VERSION}</span>
        </div>
        <div class="rt-header-right">
          <button class="rt-close" id="stp-notice-close">${SVG_CLOSE}</button>
        </div>
      </div>
      <div style="padding:14px 16px 18px; text-align:center;">
        <div style="font-size:10px; color:#7a7a8a; line-height:1.8; margin-bottom:14px;">
          You're on the standard Rush Team client.<br>
          Switch to the ad-free WebGL version for a<br>
          cleaner experience with full toolkit support<br>
          and no interruptions.
        </div>
        <a href="${WEBGL_URL}" style="display:block; background:#10b981; color:#000; font-size:10px; font-weight:700; padding:8px 18px; border-radius:6px; text-decoration:none; font-family:monospace; letter-spacing:0.04em; text-align:center;">Switch to WebGL Version →</a>
      </div>
    `;
    document.body.appendChild(el);
    panelEl = el;

    el.querySelector("#stp-notice-close").addEventListener("click", () => {
      panelOpen = false;
      el.classList.remove("visible");
    });

    el.querySelector(".rt-header").addEventListener("mousedown", (e) => {
      if (e.target.closest("#stp-notice-close")) return;
      isDragging = true;
      const r = el.getBoundingClientRect();
      dragOffX = e.clientX - r.left;
      dragOffY = e.clientY - r.top;
    });
  }

  function init() {
    if (IS_WEBGL) {
      startBypass();
      buildPanel();
      panelOpen = true;
      panelEl.classList.add("visible");
      toast("RushTeam Tools loaded  ·  F2 to toggle panel");
    } else {
      buildNotice();
      panelOpen = true;
      panelEl.classList.add("visible");
    }
  }

  if (document.readyState === "loading") window.addEventListener("load", init);
  else init();
})();