NL Helper

Профессиональный помощник куратора форума Black Russia

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         NL Helper
// @namespace    https://forum.blackrussia.online
// @version      5.0.0
// @description  Профессиональный помощник куратора форума Black Russia
// @author       Nicki_Lachowski & Claude
// @match        https://forum.blackrussia.online/threads/*
// @match        https://forum.blackrussia.online/threads/*/*
// @match        http://forum.blackrussia.online/threads/*
// @match        http://forum.blackrussia.online/threads/*/*
// @include      https://forum.blackrussia.online/threads/*
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        GM_listValues
// @grant        GM_registerMenuCommand
// @license      MIT
// @run-at       document-idle
// ==/UserScript==

/* global XF */
(function () {
    'use strict';

    console.log('%c[NL Helper 5.0] ✅ Запущен: ' + window.location.href, 'color:#ff6b2b;font-size:14px;font-weight:bold');

    // ═══════════════════════════════════════════════════════════════
    //  ХРАНИЛИЩЕ
    // ═══════════════════════════════════════════════════════════════
    const STORAGE = {
        TEMPLATES: 'nl_tpl_v5',
        SETTINGS:  'nl_set_v5',
        FLOOD:     'nl_flood_v5',
        PENDING:   'nl_pend_v5',
        THEME:     'nl_hud_v5',
        HISTORY:   'nl_hist_v5',
        STATS:     'nl_stats_v5',
    };
    const STORAGE_VERSION = 5;
    const MAX_CUSTOM      = 50;
    const MAX_HISTORY     = 30;

    // ═══════════════════════════════════════════════════════════════
    //  СЕЛЕКТОРЫ
    // ═══════════════════════════════════════════════════════════════
    const SEL = {
        editor:       '.fr-element.fr-view',
        blockMessage: '.blockMessage',
        usernameLink: 'a.username',
        overlayClose: 'a.overlay-titleCloser',
        titleValue:   '.p-title-value',
        firstPost:    '.message-body .bbWrapper',
        replyCandidates: [
            'button.button--primary.button--icon--reply.rippleButton',
            '.formButtonGroup-primary button[type="submit"]',
            '.formButtonGroup-primary button',
            'button.button--icon--reply',
            '.button--icon--write.rippleButton',
            '.uix_quickReply--button',
            'button.button--icon--write',
            'button[data-xf-click="quick-reply"]',
            '.js-quickReply',
        ],
        submitCandidates: [
            '.button--icon--reply.rippleButton',
            'button[data-xf-click="quick-reply"]',
            '.js-quickReply',
        ],
    };

    function findReplyBtn() {
        for (const sel of SEL.replyCandidates) {
            const el = document.querySelector(sel);
            if (el) return el;
        }
        return null;
    }
    function clickSubmit() {
        for (const sel of SEL.submitCandidates) {
            const el = document.querySelector(sel);
            if (el) { el.click(); return; }
        }
    }

    // ═══════════════════════════════════════════════════════════════
    //  ПРЕФИКСЫ
    // ═══════════════════════════════════════════════════════════════
    const P = {
        NONE: 0, UNACCEPT: 4, ACCEPT: 8, PIN: 2,
        RESHENO: 6, CLOSE: 7, WATCHED: 9,
        GA: 12, TEX: 13, REALIZOVANO: 5, OJIDANIE: 14,
    };
    const PREFIX_NAMES = {
        0: 'Без префикса', 4: 'Отказано',   8: 'Одобрено',
        2: 'На рассмотрении', 6: 'Решено',   7: 'Закрыто',
        9: 'Рассмотрено',  12: 'Гл. Администратору',
       13: 'Тех. Специалисту', 5: 'Реализовано', 14: 'Ожидание',
    };
    const PREFIX_COLORS = {
        0:  '#666',     4: '#ff4757', 8: '#61bd6d',
        2:  '#ffa502',  6: '#1e90ff', 7: '#747d8c',
        9:  '#ffa502', 12: '#a55eea',13: '#ff6348',
        5:  '#61bd6d', 14: '#747d8c',
    };
    const OPEN_PFXS = new Set([P.PIN, P.GA, P.TEX, P.OJIDANIE]);

    // ═══════════════════════════════════════════════════════════════
    //  ВКЛАДКИ
    // ═══════════════════════════════════════════════════════════════
    const TABS = [
        { id: 'recent',  name: '🕐 Недавние'      },
        { id: 'players', name: '👤 Игроки'         },
        { id: 'admins',  name: '🛡 Администрация'  },
        { id: 'leaders', name: '👑 Лидеры'         },
        { id: 'appeals', name: '⚖️ Обжалования'    },
        { id: 'rp_bio',  name: '📋 РП Био'         },
        { id: 'rp_sit',  name: '🎬 РП Ситуация'    },
        { id: 'opg',     name: '🔫 НеОф. Орг.'     },
        { id: 'custom',  name: '⭐ Мои'            },
    ];

    // ═══════════════════════════════════════════════════════════════
    //  ТЕМЫ
    // ═══════════════════════════════════════════════════════════════
    const THEMES = {
        amber:  { name:'🟠 NL Amber',   accent:'#f0900a', bg:'#0f0c07', bg2:'#161009', bg3:'#1e1710', border:'#30220a', text:'#f2e8d0', text2:'#7a6440', gradient:'linear-gradient(135deg,#f0900a,#c45f00)' },
        purple: { name:'🟣 NL Purple',  accent:'#a855f7', bg:'#0c0a12', bg2:'#120f1a', bg3:'#181426', border:'#28203a', text:'#ede8f8', text2:'#6e5f8a', gradient:'linear-gradient(135deg,#a855f7,#7c3aed)' },
        cyan:   { name:'🔵 NL Cyan',    accent:'#06b6d4', bg:'#040e12', bg2:'#071318', bg3:'#0b1c22', border:'#0d2e38', text:'#d0f0f8', text2:'#346070', gradient:'linear-gradient(135deg,#06b6d4,#0284c7)' },
        red:    { name:'🔴 NL Crimson', accent:'#ef4444', bg:'#0f0606', bg2:'#160909', bg3:'#1e0e0e', border:'#320f0f', text:'#f8e8e8', text2:'#7a4040', gradient:'linear-gradient(135deg,#ef4444,#b91c1c)' },
        green:  { name:'🟢 NL Matrix',  accent:'#22c55e', bg:'#050f08', bg2:'#08140b', bg3:'#0d1e10', border:'#0f3018', text:'#d0f0da', text2:'#3a7050', gradient:'linear-gradient(135deg,#22c55e,#15803d)' },
        white:  { name:'⚪ NL Arctic',  accent:'#e2e8f0', bg:'#06080c', bg2:'#0c0f14', bg3:'#12161e', border:'#20252e', text:'#f0f4ff', text2:'#606880', gradient:'linear-gradient(135deg,#e2e8f0,#94a3b8)' },
    };

    // ═══════════════════════════════════════════════════════════════
    //  СТОП-СЛОВА
    // ═══════════════════════════════════════════════════════════════
    const DEFAULT_MG_TERMS = [
        'лвл','lvl','admin','админ','бан','ban','варн','warn',
        'деморган','нонрп','nonrp','dm','дб','db','зз','zz',
        'тк','tk','ск','sk','увал','мут','кик','hp','хп',
        'гдб','gdb','спавн','spawn','телепорт','teleport',
        'читер','cheat','hack','хак',
    ];

    // ═══════════════════════════════════════════════════════════════
    //  ПЛЕЙСХОЛДЕРЫ
    // ═══════════════════════════════════════════════════════════════
    const PH_HELP = [
        ['{nickname}',  'Ник игрока из темы'],
        ['{mention}',   'Упоминание [USER=id]ник[/USER]'],
        ['{server}',    'Название сервера'],
        ['{date}',      'Текущая дата'],
        ['{time}',      'Текущее время'],
        ['{greeting}',  'Приветствие по времени суток'],
        ['{thread_id}', 'Номер темы'],
    ];

    // ═══════════════════════════════════════════════════════════════
    //  ШАБЛОНЫ ПО УМОЛЧАНИЮ
    // ═══════════════════════════════════════════════════════════════
    const DEFAULT_TEMPLATES = {
        players: [
            { id:'p1', title:'На рассмотрении', prefix:P.PIN, tags:'рассмотрение, жалоба', isPinned:true, isNew:false, uses:0,
              content:'Ваша жалоба успешно принята и взята на рассмотрение.\nУбедительная просьба не создавать дубликаты данной темы, иначе ваш форумный аккаунт может быть заблокирован.' },
            { id:'p2', title:'Одобрено — игрок наказан', prefix:P.ACCEPT, isPinned:true, isNew:false, uses:0, tags:'одобрено, наказание, жалоба',
              content:'Ваша жалоба была рассмотрена и получает статус — Одобрено.\nИгрок понесёт наказание в соответствии с регламентом сервера.' },
            { id:'p3', title:'Отказано — нарушений нет', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'отказано, чистый',
              content:'Ваша жалоба была рассмотрена и получает статус — Отказано.\nНарушений со стороны данного игрока обнаружено не было.' },
            { id:'p4', title:'Отказано — недостаточно доказательств', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'отказано, доказательства, видео',
              content:'Ваша жалоба была рассмотрена и получает статус — Отказано.\nПредоставленных доказательств недостаточно для вынесения наказания.\nПожалуйста, при повторном нарушении предоставьте качественную видеозапись.' },
            { id:'p5', title:'Отказано — жалоба не по регламенту', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'отказано, регламент, формат',
              content:'Ваша жалоба была рассмотрена и получает статус — Отказано.\nЖалоба оформлена не по регламенту либо содержит неверную информацию.\nПожалуйста, ознакомьтесь с правилами подачи жалоб и попробуйте снова.' },
            { id:'p6', title:'Ожидание — запрос доказательств', prefix:P.OJIDANIE, isPinned:false, isNew:false, uses:0, tags:'ожидание, доказательства, видео, 24часа',
              content:'Ваша жалоба взята на рассмотрение, однако требуются дополнительные доказательства.\nПожалуйста, предоставьте видеозапись нарушения в данной теме в течение 24 часов.\nЕсли доказательства не будут предоставлены вовремя, жалоба будет отклонена.' },
            { id:'p7', title:'Решено — ситуация урегулирована', prefix:P.RESHENO, isPinned:false, isNew:false, uses:0, tags:'решено, урегулирована',
              content:'Данная жалоба получает статус — Решено.\nСитуация была урегулирована в рамках сервера.' },
            { id:'p8', title:'Одобрено — пункт правил', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'одобрено, пункт, правила', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]?.??.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Описание пункта правил[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Наказание[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p9', title:'Отказано — пункт правил', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'отказано, пункт, правила', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]?.??.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Описание пункта правил[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Наказание[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p10_a', title:'Одобрено — 2.01', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'RP, роль, 2.01, нарушение RP, наказание', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.01.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено поведение, нарушающее нормы Role Play процессов[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p11_d', title:'Отказано — 2.01', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'RP, роль, 2.01, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.01.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено поведение, нарушающее нормы Role Play процессов[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p12_a', title:'Одобрено — AFK 2.02', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'AFK, 2.02, отсутствие, процесс, наказание', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.02.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено целенаправленно уходить от Role Play процесса[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p13_d', title:'Отказано — AFK 2.02', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'AFK, 2.02, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.02.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено целенаправленно уходить от Role Play процесса[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p14_a', title:'Одобрено — 2.03', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'NonRP, езда, 2.03, транспорт, наказание', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.03.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещён NonRP Drive — вождение транспорта в невозможных условиях[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p15_d', title:'Отказано — 2.03', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'NonRP, езда, 2.03, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.03.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещён NonRP Drive — вождение транспорта в невозможных условиях[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p16_a', title:'Одобрено — 2.04', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'помеха, 2.04, процесс, наказание, ban', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.04.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены действия, создающие помехи в игровом процессе или выполнении работ[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 10 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p17_d', title:'Отказано — 2.04', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'помеха, 2.04, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.04.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены действия, создающие помехи в игровом процессе или выполнении работ[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 10 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p18_a', title:'Одобрено — 2.05', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'обман, OOC, IC, 2.05, наказание, ban', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.05.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены любые OOC-обманы и IC-обманы с нарушением RP правил[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p19_d', title:'Отказано — 2.05', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'обман, OOC, IC, 2.05, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.05.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены любые OOC-обманы и IC-обманы с нарушением RP правил[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p20_a', title:'Одобрено — 2.06', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.07.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено нахождение в AFK без ESC, создающее помеху игрокам[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Kick[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p21_d', title:'Отказано — 2.06', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.07.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено нахождение в AFK без ESC, создающее помеху игрокам[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Kick[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p22_a', title:'Одобрено — 2.08', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'мораль, 2.08, сек, вар, наказание', tags:'мораль, 2.08, секс, варн, наказание', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.08.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена любая форма аморальных действий сексуального характера[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p23_d', title:'Отказано — 2.08', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'мораль, 2.08, отказано', tags:'мораль, 2.08, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.08.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена любая форма аморальных действий сексуального характера[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p24_a', title:'Одобрено — 2.09', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'слив, 2.09, склад, наказание, ban', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.09.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено сливать склад фракции / семьи[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p25_d', title:'Отказано — 2.09', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'слив, 2.09, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.09.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено сливать склад фракции / семьи[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p26_a', title:'Одобрено — 2.10', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'/do, 2.10, обман, команда, наказание', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.10.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено обманывать в /do[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p27_d', title:'Отказано — 2.10', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'/do, 2.10, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.10.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено обманывать в /do[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p28_a', title:'Одобрено — 2.11', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'работа, 2.11, транспорт, наказание', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.11.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование рабочего или фракционного транспорта в личных целях[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p29_d', title:'Отказано — 2.11', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'работа, 2.11, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.11.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование рабочего или фракционного транспорта в личных целях[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p30_a', title:'Одобрено — 2.12', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, tags:'медиа, 2.12, помеха, наказание, ban', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.12.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена помеха в работе официальных медиалиц проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p31_d', title:'Отказано — 2.12', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, tags:'медиа, 2.12, отказано', isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.12.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена помеха в работе официальных медиалиц проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p32_a', title:'Одобрено — DB (DriveBy)', tags:'DB, 2.13, driveby, убийство, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.13.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен DB (DriveBy) — убийство/урон без IC причины с транспорта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 60 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p33_d', title:'Отказано — DB (DriveBy)', tags:'DB, 2.13, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.13.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен DB (DriveBy) — убийство/урон без IC причины с транспорта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 60 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p34_a', title:'Одобрено — TK (Team Kill)', tags:'TK, 2.15, teamkill, фракция, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.15.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен TK (Team Kill) — убийство члена своей/союзной фракции без IC причины[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 60 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p35_d', title:'Отказано — TK (Team Kill)', tags:'TK, 2.15, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.15.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен TK (Team Kill) — убийство члена своей/союзной фракции без IC причины[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 60 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p36_a', title:'Одобрено — SK (Spawn Kill)', tags:'SK, 2.16, spawnkill, спавн, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.16.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен SK (Spawn Kill) — убийство/урон на титульной территории или у интерьеров[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 60 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p37_d', title:'Отказано — SK (Spawn Kill)', tags:'SK, 2.16, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.16.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен SK (Spawn Kill) — убийство/урон на титульной территории или у интерьеров[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 60 минут / Warn[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p38_a', title:'Одобрено — MG (MetaGaming)', tags:'MG, 2.18, metagaming, ooc, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.18.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещён MG (MetaGaming) — использование OOC-информации в IC-процессе[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p39_d', title:'Отказано — MG (MetaGaming)', tags:'MG, 2.18, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.18.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещён MG (MetaGaming) — использование OOC-информации в IC-процессе[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p40_a', title:'Одобрено — DM (DeathMatch)', tags:'DM, 2.19, deathmatch, убийство, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.19.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещён DM (DeathMatch) — убийство/нанесение урона без IC-причины[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 90 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p41_d', title:'Отказано — DM (DeathMatch)', tags:'DM, 2.19, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.19.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещён DM (DeathMatch) — убийство/нанесение урона без IC-причины[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 90 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p42_a', title:'Одобрено — 2.20', tags:'massdm, 2.20, множественное убийство, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.20.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен Mass DM — убийство/урон без IC причины трём и более игрокам[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Warn / Ban 3–7 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p43_d', title:'Отказано — 2.20', tags:'massdm, 2.20, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.20.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен Mass DM — убийство/урон без IC причины трём и более игрокам[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Warn / Ban 3–7 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p44_a', title:'Одобрено — 2.21', tags:'баги, 2.21, система, эксплуатация, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.21.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено обходить игровую систему или использовать баги сервера[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Warn / Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p45_d', title:'Отказано — 2.21', tags:'баги, 2.21, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.21.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено обходить игровую систему или использовать баги сервера[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Warn / Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p46_a', title:'Одобрено — 2.22', tags:'читы, 2.22, программы, макросы, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.22.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено хранить/использовать стороннее ПО или читы, включая макросы[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p47_d', title:'Отказано — 2.22', tags:'читы, 2.22, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.22.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено хранить/использовать стороннее ПО или читы, включая макросы[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p48_a', title:'Одобрено — 2.23', tags:'ошибки, 2.23, администрация, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.23.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено скрывать ошибки игровых систем от администрации[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p49_d', title:'Отказано — 2.23', tags:'ошибки, 2.23, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.23.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено скрывать ошибки игровых систем от администрации[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p50_a', title:'Одобрено — 2.24', tags:'скрывание, 2.24, администрация, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.24.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено скрывать от администрации нарушителей или злоумышленников[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p51_d', title:'Отказано — 2.24', tags:'скрывание, 2.24, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.24.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено скрывать от администрации нарушителей или злоумышленников[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p52_a', title:'Одобрено — 2.25', tags:'репутация, 2.25, проект, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.25.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены попытки навредить репутации проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p53_d', title:'Отказано — 2.25', tags:'репутация, 2.25, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.25.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены попытки навредить репутации проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p54_a', title:'Одобрено — 2.26', tags:'ресурсы, 2.26, проект, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.26.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено намеренно наносить вред ресурсам проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p55_d', title:'Отказано — 2.26', tags:'ресурсы, 2.26, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.26.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено намеренно наносить вред ресурсам проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p56_a', title:'Одобрено — 2.27', tags:'информация, 2.27, администрация, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.27.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено распространять внутреннюю информацию администрации проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p57_d', title:'Отказано — 2.27', tags:'информация, 2.27, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.27.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено распространять внутреннюю информацию администрации проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p58_a', title:'Одобрено — 2.28', tags:'валюта, 2.28, деньги, реальные, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.28.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена покупка/продажа внутриигровой валюты за реальные деньги[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan + обнуление аккаунта + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p59_d', title:'Отказано — 2.28', tags:'валюта, 2.28, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.28.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена покупка/продажа внутриигровой валюты за реальные деньги[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan + обнуление аккаунта + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p60_a', title:'Одобрено — 2.30', tags:'экономика, 2.30, сервер, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.30.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено пытаться нанести ущерб экономике сервера[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p61_d', title:'Отказано — 2.30', tags:'экономика, 2.30, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.30.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено пытаться нанести ущерб экономике сервера[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p62_a', title:'Одобрено — 2.31', tags:'реклама, 2.31, проект, сторонние, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.31.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено рекламировать на серверах сторонние проекты, каналы и ресурсы[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p63_d', title:'Отказано — 2.31', tags:'реклама, 2.31, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.31.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено рекламировать на серверах сторонние проекты, каналы и ресурсы[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p64_a', title:'Одобрено — 2.32', tags:'обман, 2.32, администрация, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.32.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено введение в заблуждение / обман администрации на всех ресурсах[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7–15 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p65_d', title:'Отказано — 2.32', tags:'обман, 2.32, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.32.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено введение в заблуждение / обман администрации на всех ресурсах[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7–15 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p66_a', title:'Одобрено — 2.33', tags:'уязвимость, 2.33, правила, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.33.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено пользоваться уязвимостью правил[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p67_d', title:'Отказано — 2.33', tags:'уязвимость, 2.33, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.33.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено пользоваться уязвимостью правил[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p68_a', title:'Одобрено — 2.37', tags:'угрозы, 2.37, ooc, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.37.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены OOC-угрозы, в том числе завуалированные[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 120 минут / Ban 7–15 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p69_d', title:'Отказано — 2.37', tags:'угрозы, 2.37, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.37.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены OOC-угрозы, в том числе завуалированные[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 120 минут / Ban 7–15 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p70_a', title:'Одобрено — 2.38', tags:'информация, 2.38, личные данные, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.38.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено распространять личную информацию игроков[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p71_d', title:'Отказано — 2.38', tags:'информация, 2.38, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.38.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено распространять личную информацию игроков[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan + ЧС проекта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p72_a', title:'Одобрено — 2.39', tags:'злоупотребление, 2.39, нарушения, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.39.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Злоупотребление нарушениями правил сервера (6+ нарушений за 7 дней)[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7–15 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p73_d', title:'Отказано — 2.39', tags:'злоупотребление, 2.39, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.39.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Злоупотребление нарушениями правил сервера (6+ нарушений за 7 дней)[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7–15 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p74_a', title:'Одобрено — 2.40', tags:'деструктив, 2.40, проект, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.40.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены деструктивные действия по отношению к проекту[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 300 минут / Ban 30 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p75_d', title:'Отказано — 2.40', tags:'деструктив, 2.40, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.40.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены деструктивные действия по отношению к проекту[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 300 минут / Ban 30 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p76_a', title:'Одобрено — 2.42', tags:'продажа, 2.42, аккаунт, имущество, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.42.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Попытка продажи игрового имущества или аккаунта за реальные деньги[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p77_d', title:'Отказано — 2.42', tags:'продажа, 2.42, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.42.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Попытка продажи игрового имущества или аккаунта за реальные деньги[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p78_a', title:'Одобрено — 2.43', tags:'промокод, 2.43, код, обмен, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.43.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена продажа/обмен бонус-кодов и промокодов проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 120 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p79_d', title:'Отказано — 2.43', tags:'промокод, 2.43, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.43.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена продажа/обмен бонус-кодов и промокодов проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 120 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p80_a', title:'Одобрено — 2.47', tags:'поля, 2.47, транспорт, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.47.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено передвижение по полям на рабочем грузовом транспорте[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 60 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p81_d', title:'Отказано — 2.47', tags:'поля, 2.47, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.47.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено передвижение по полям на рабочем грузовом транспорте[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 60 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p82_a', title:'Одобрено — 2.48', tags:'репутация, 2.48, семья, лидер, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.48.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена продажа/передача репутации семьи; сокрытие нарушителей лидером[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Обнуление рейтинга / обнуление аккаунта лидера[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p83_d', title:'Отказано — 2.48', tags:'репутация, 2.48, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.48.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена продажа/передача репутации семьи; сокрытие нарушителей лидером[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Обнуление рейтинга / обнуление аккаунта лидера[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p84_a', title:'Одобрено — 2.50', tags:'задержание, 2.50, аукцион, казино, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.50.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены задержания и аресты в интерьере аукциона, казино, во время мероприятий[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Warn / Ban 10 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p85_d', title:'Отказано — 2.50', tags:'задержание, 2.50, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.50.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены задержания и аресты в интерьере аукциона, казино, во время мероприятий[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Warn / Ban 10 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p86_a', title:'Одобрено — 2.52', tags:'аксессуары, 2.52, неадекватное использование, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.52.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено неадекватное использование аксессуаров[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Обнуление аксессуаров / Jail 30 минут при повторном[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p87_d', title:'Отказано — 2.52', tags:'аксессуары, 2.52, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.52.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено неадекватное использование аксессуаров[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Обнуление аксессуаров / Jail 30 минут при повторном[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p88_a', title:'Одобрено — 2.53', tags:'имена, 2.53, нецензурные, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.53.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование нецензурных/оскорбительных названий для игровых ценностей[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Принудительная смена / Ban 1 день / Обнуление при повторном[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p89_d', title:'Отказано — 2.53', tags:'имена, 2.53, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.53.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование нецензурных/оскорбительных названий для игровых ценностей[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Принудительная смена / Ban 1 день / Обнуление при повторном[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p90_a', title:'Одобрено — 2.54', tags:'неуважение, 2.54, администрация, наказание', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.54.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено неуважительное обращение и оскорбление администрации[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 180 / 300 минут при повторном[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p91_d', title:'Отказано — 2.54', tags:'неуважение, 2.54, отказано', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.54.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено неуважительное обращение и оскорбление администрации[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 180 / 300 минут при повторном[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p92_a', title:'Одобрено — 2.55', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.55.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещается багоюз, связанный с анимацией[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 120 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p93_d', title:'Отказано — 2.55', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.55.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещается багоюз, связанный с анимацией[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Jail 120 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p94_a', title:'Одобрено — 2.57', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.57.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещается брать в долг игровые ценности и не возвращать их[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p95_d', title:'Отказано — 2.57', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]2.57.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещается брать в долг игровые ценности и не возвращать их[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p96_a', title:'Одобрено — 3.02', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.02.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование Caps Lock в любом чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p97_d', title:'Отказано — 3.02', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.02.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование Caps Lock в любом чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p98_a', title:'Одобрено — 3.03', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.03.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены оскорбления, расизм, дискриминация в OOC чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p99_d', title:'Отказано — 3.03', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.03.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены оскорбления, расизм, дискриминация в OOC чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p100_a', title:'Одобрено — 3.04', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.04.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено оскорбление или упоминание родных в любом чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 300 минут / Ban 7 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p101_d', title:'Отказано — 3.04', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.04.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено оскорбление или упоминание родных в любом чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 300 минут / Ban 7 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p102_a', title:'Одобрено — 3.05', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.05.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен флуд — 3 и более повторяющихся сообщений[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p103_d', title:'Отказано — 3.05', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.05.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещен флуд — 3 и более повторяющихся сообщений[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p104_a', title:'Одобрено — 3.06', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.06.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено злоупотребление знаками препинания и символами[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p105_d', title:'Отказано — 3.06', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.06.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено злоупотребление знаками препинания и символами[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p106_a', title:'Одобрено — 3.08', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.08.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены любые формы «слива» через глобальные чаты[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p107_d', title:'Отказано — 3.08', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.08.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены любые формы «слива» через глобальные чаты[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p108_a', title:'Одобрено — 3.10', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.10.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено выдавать себя за администратора[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7–15 дней + ЧС сервера[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p109_d', title:'Отказано — 3.10', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.10.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено выдавать себя за администратора[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 7–15 дней + ЧС сервера[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p110_a', title:'Одобрено — 3.11', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.11.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено вводить игроков в заблуждение путём злоупотребления командами[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p111_d', title:'Отказано — 3.11', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.11.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено вводить игроков в заблуждение путём злоупотребления командами[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15–30 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p112_a', title:'Одобрено — 3.12', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.12.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено подавать репорт транслитом, с Caps Lock или нецензурной бранью[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Report Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p113_d', title:'Отказано — 3.12', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.12.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено подавать репорт транслитом, с Caps Lock или нецензурной бранью[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Report Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p114_a', title:'Одобрено — 3.14', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.14.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено включать музыку в Voice Chat[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 60 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p115_d', title:'Отказано — 3.14', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.14.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено включать музыку в Voice Chat[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 60 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p116_a', title:'Одобрено — 3.16', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.16.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено создавать посторонние шумы или звуки[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное предупреждение / Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p117_d', title:'Отказано — 3.16', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.16.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено создавать посторонние шумы или звуки[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное предупреждение / Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p118_a', title:'Одобрено — 3.18', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.18.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены споры и обсуждения на политические, религиозные, расовые темы[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 180 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p119_d', title:'Отказано — 3.18', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.18.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещены споры и обсуждения на политические, религиозные, расовые темы[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 180 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p120_a', title:'Одобрено — 3.19', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.19.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование сторонних программ для изменения голоса[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 60 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p121_d', title:'Отказано — 3.19', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.19.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование сторонних программ для изменения голоса[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 60 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p122_a', title:'Одобрено — 3.20', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.20.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование транслита в любом чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p123_d', title:'Отказано — 3.20', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.20.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование транслита в любом чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p124_a', title:'Одобрено — 3.21', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.21.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена реклама промокодов в игре[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p125_d', title:'Отказано — 3.21', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.21.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена реклама промокодов в игре[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Ban 15 дней[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p126_a', title:'Одобрено — 3.22', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.22.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено публиковать объявления в помещениях государственных организаций[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p127_d', title:'Отказано — 3.22', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.22.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено публиковать объявления в помещениях государственных организаций[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p128_a', title:'Одобрено — 3.23', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.23.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование нецензурных слов в VIP чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p129_d', title:'Отказано — 3.23', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.23.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использование нецензурных слов в VIP чате[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p130_a', title:'Одобрено — 3.24', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.24.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено токсичное поведение в IC чате, унижающее честь и достоинство[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное предупреждение / Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p131_d', title:'Отказано — 3.24', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]3.24.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено токсичное поведение в IC чате, унижающее честь и достоинство[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное предупреждение / Mute 30 минут[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p132_a', title:'Одобрено — 4.03', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.03.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена передача игрового аккаунта третьим лицам[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p133_d', title:'Отказано — 4.03', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.03.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена передача игрового аккаунта третьим лицам[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p134_a', title:'Одобрено — 4.04', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.04.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено регистрировать более трёх игровых аккаунтов на сервере[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p135_d', title:'Отказано — 4.04', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.04.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено регистрировать более трёх игровых аккаунтов на сервере[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p136_a', title:'Одобрено — 4.05', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.05.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена передача или трансфер игровых ценностей между аккаунтами[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Warn / Ban 15 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p137_d', title:'Отказано — 4.05', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.05.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещена передача или трансфер игровых ценностей между аккаунтами[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Warn / Ban 15 дней / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p138_a', title:'Одобрено — 4.06', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.06.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Никнейм должен быть в формате «Имя_Фамилия» на английском языке[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p139_d', title:'Отказано — 4.06', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.06.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Никнейм должен быть в формате «Имя_Фамилия» на английском языке[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p140_a', title:'Одобрено — 4.07', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.07.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использовать более двух заглавных букв в никнейме[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p141_d', title:'Отказано — 4.07', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.07.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использовать более двух заглавных букв в никнейме[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p142_a', title:'Одобрено — 4.08', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.08.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использовать никнейм, не соответствующий реальным именам[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p143_d', title:'Отказано — 4.08', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.08.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использовать никнейм, не соответствующий реальным именам[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p144_a', title:'Одобрено — 4.09', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.09.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использовать никнейм с матерными словами или оскорблениями[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p145_d', title:'Отказано — 4.09', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.09.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено использовать никнейм с матерными словами или оскорблениями[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p146_a', title:'Одобрено — 4.10', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.10.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено создавать никнейм, похожий на никнеймы других игроков или администраторов[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p147_d', title:'Отказано — 4.10', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.10.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено создавать никнейм, похожий на никнеймы других игроков или администраторов[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Устное замечание + смена никнейма / PermBan[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p148_a', title:'Одобрено — 4.11', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.11.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Владеть бизнесами разрешается только с одного основного аккаунта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Обнуление твинк аккаунта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p149_d', title:'Отказано — 4.11', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.11.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Владеть бизнесами разрешается только с одного основного аккаунта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Обнуление твинк аккаунта[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p150_a', title:'Одобрено — 4.14', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.14.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено иметь транспортную/строительную компанию без активности в игре[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Обнуление компании без компенсации[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p151_d', title:'Отказано — 4.14', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.14.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено иметь транспортную/строительную компанию без активности в игре[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | Обнуление компании без компенсации[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p152_a', title:'Одобрено — 4.15', prefix:P.ACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#61bd6d][I]Одобрено[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nИгрок понесёт наказание по следующему пункту общих правил серверов;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.15.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено создавать промокод, идентичный промокоду блогера проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan / Обнуление имущества[/I][/SIZE][/COLOR][/SPOILER]' },
            { id:'p153_d', title:'Отказано — 4.15', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0, isRaw:true,
              content:'[SIZE=6][COLOR=rgb(255,255,255)][I]Ваша жалоба была рассмотрена и получает статус — [/I][/COLOR][COLOR=#ff4757][I]Отказано[/I][/COLOR][COLOR=rgb(255,255,255)][I].\nНарушение не подтверждено. Тем не менее, обратите внимание на следующий пункт правил;[/I][/COLOR][/SIZE]\n[SPOILER="Посмотреть пункт правил"][COLOR=rgb(209,72,65)][SIZE=6][I]4.15.[/I][/SIZE][/COLOR][SIZE=6][I] [COLOR=rgb(209,213,216)]Запрещено создавать промокод, идентичный промокоду блогера проекта[/COLOR][/I][/SIZE][COLOR=rgb(209,72,65)][SIZE=6][I] | PermBan / Обнуление имущества[/I][/SIZE][/COLOR][/SPOILER]' },
        ],
        admins: [
            { id:'a1', title:'На рассмотрении', prefix:P.PIN, isPinned:true, isNew:false, uses:0,
              content:'Ваша жалоба на администратора принята и взята на рассмотрение.\nРезультат рассмотрения будет опубликован в данной теме.' },
            { id:'a2', title:'Одобрено — администратор наказан', prefix:P.ACCEPT, isPinned:true, isNew:false, uses:0,
              content:'Ваша жалоба была рассмотрена и получает статус — Одобрено.\nДействия администратора были признаны неправомерными, сотрудник понесёт дисциплинарное взыскание.' },
            { id:'a3', title:'Отказано — действия правомерны', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0,
              content:'Ваша жалоба была рассмотрена и получает статус — Отказано.\nДействия администратора были признаны правомерными и соответствующими регламенту сервера.' },
            { id:'a4', title:'Отказано — нет доказательств', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0,
              content:'Ваша жалоба была рассмотрена и получает статус — Отказано.\nПредоставленных материалов недостаточно для установления нарушения со стороны сотрудника.' },
            { id:'a5', title:'Передано Гл. Администратору', prefix:P.GA, isPinned:false, isNew:false, uses:0,
              content:'Ваша жалоба была рассмотрена и передана на рассмотрение Главному Администратору.\nОжидайте ответа в данной теме.' },
        ],
        leaders: [
            { id:'l1', title:'На рассмотрении', prefix:P.PIN, isPinned:true, isNew:false, uses:0,
              content:'Ваша жалоба на лидера принята и взята на рассмотрение.\nРезультат будет опубликован в данной теме.' },
            { id:'l2', title:'Одобрено — лидер наказан', prefix:P.ACCEPT, isPinned:true, isNew:false, uses:0,
              content:'Ваша жалоба была рассмотрена и получает статус — Одобрено.\nЛидер понесёт наказание согласно действующему регламенту.' },
            { id:'l3', title:'Отказано — нарушений не выявлено', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0,
              content:'Ваша жалоба была рассмотрена и получает статус — Отказано.\nФактов нарушения со стороны лидера обнаружено не было.' },
            { id:'l4', title:'Реализовано', prefix:P.REALIZOVANO, isPinned:false, isNew:false, uses:0,
              content:'Ваша жалоба была рассмотрена и получает статус — Реализовано.\nМеры по исправлению ситуации приняты.' },
        ],
        appeals: [
            { id:'ap1', title:'На рассмотрении', prefix:P.PIN, isPinned:true, isNew:false, uses:0,
              content:'Ваше обжалование принято и взято на рассмотрение.\nРезультат будет опубликован в данной теме в ближайшее время.' },
            { id:'ap2', title:'Обжалование одобрено — бан снят', prefix:P.ACCEPT, isPinned:true, isNew:false, uses:0,
              content:'Ваше обжалование было рассмотрено и получает статус — Одобрено.\nНаказание снято. Ваш аккаунт разблокирован. Желаем приятной игры.' },
            { id:'ap3', title:'Обжалование отклонено — бан оставлен', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0,
              content:'Ваше обжалование было рассмотрено и получает статус — Отказано.\nНаказание оставлено в силе. Нарушение было совершено умышленно и подтверждается имеющимися доказательствами.' },
            { id:'ap4', title:'Отказано — повторное нарушение', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0,
              content:'Ваше обжалование было рассмотрено и получает статус — Отказано.\nУчитывая систематический характер нарушений, наказание остаётся в силе.' },
            { id:'ap5', title:'Ожидание — проверка обстоятельств', prefix:P.OJIDANIE, isPinned:false, isNew:false, uses:0,
              content:'Ваше обжалование принято на рассмотрение. Для вынесения решения требуется дополнительная проверка обстоятельств.\nОжидайте ответа в течение 72 часов.' },
            { id:'ap6', title:'Передано Тех. Специалисту', prefix:P.TEX, isPinned:false, isNew:false, uses:0,
              content:'Ваше обращение было передано Техническому Специалисту для детального рассмотрения.\nОжидайте ответа.' },
        ],
        rp_bio: [
            { id:'rb1', title:'Биография одобрена', prefix:P.ACCEPT, isPinned:true, isNew:false, uses:0,
              content:'Ваша РП-биография была проверена и получает статус — Одобрено.\nПоздравляем, биография соответствует требованиям сервера. Приятной игры!' },
            { id:'rb2', title:'На доработку — слишком короткая', prefix:P.PIN, isPinned:true, isNew:false, uses:0,
              content:'Ваша РП-биография взята на проверку, однако требует доработки.\nБиография слишком короткая. Минимальный объём — 200 слов, максимальный — 600 слов. Пожалуйста, дополните историю персонажа.' },
            { id:'rb3', title:'На доработку — MG-термины', prefix:P.PIN, isPinned:false, isNew:false, uses:0,
              content:'Ваша РП-биография взята на проверку, однако требует доработки.\nВ тексте обнаружены термины, нарушающие атмосферу ролевой игры (метагейминг). Пожалуйста, перепишите биографию, избегая OOC-терминологии.' },
            { id:'rb4', title:'На доработку — нет структуры', prefix:P.PIN, isPinned:false, isNew:false, uses:0,
              content:'Ваша РП-биография взята на проверку, однако требует доработки.\nБиографии не хватает структуры: необходимо описать детство, становление личности и мотивацию персонажа.' },
            { id:'rb5', title:'Отказано — не соответствует требованиям', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0,
              content:'Ваша РП-биография была проверена и получает статус — Отказано.\nПредставленный текст не соответствует требованиям сервера. Пожалуйста, ознакомьтесь с правилами оформления биографии и подайте заявку повторно.' },
        ],
        rp_sit: [
            { id:'rs1', title:'Ситуация принята', prefix:P.PIN, isPinned:true, isNew:false, uses:0,
              content:'Ваша РП-ситуация принята и будет рассмотрена в ближайшее время.\nОжидайте ответа от куратора.' },
            { id:'rs2', title:'Ситуация одобрена', prefix:P.ACCEPT, isPinned:true, isNew:false, uses:0,
              content:'Ваша РП-ситуация была рассмотрена и получает статус — Одобрено.\nСитуация разрешена в соответствии с правилами сервера.' },
            { id:'rs3', title:'Отказано — нарушение RP', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0,
              content:'Ваша РП-ситуация была рассмотрена и получает статус — Отказано.\nВ ходе ситуации зафиксированы грубые нарушения ролевых правил сервера.' },
            { id:'rs4', title:'Отказано — недостаточно скриншотов', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0,
              content:'Ваша РП-ситуация была рассмотрена и получает статус — Отказано.\nДля подтверждения ситуации недостаточно скриншотов или видеоматериалов.' },
        ],
        opg: [
            { id:'o1', title:'Заявка принята', prefix:P.PIN, isPinned:true, isNew:false, uses:0,
              content:'Заявка на создание неофициальной организации принята и взята на рассмотрение.\nВам будет предоставлен ответ в течение 72 часов.' },
            { id:'o2', title:'Заявка одобрена', prefix:P.ACCEPT, isPinned:true, isNew:false, uses:0,
              content:'Заявка на создание неофициальной организации была рассмотрена и получает статус — Одобрено.\nПоздравляем! Ваша организация официально зарегистрирована на сервере.' },
            { id:'o3', title:'Отказано — не выполнены условия', prefix:P.UNACCEPT, isPinned:false, isNew:false, uses:0,
              content:'Заявка на создание неофициальной организации была рассмотрена и получает статус — Отказано.\nУсловия для создания организации не выполнены. Ознакомьтесь с требованиями и подайте заявку повторно.' },
            { id:'o4', title:'На доработку', prefix:P.OJIDANIE, isPinned:false, isNew:false, uses:0,
              content:'Заявка на создание неофициальной организации требует доработки.\nПожалуйста, исправьте указанные замечания и обновите тему.' },
            { id:'o5', title:'Расформирована', prefix:P.CLOSE, isPinned:false, isNew:false, uses:0,
              content:'Неофициальная организация расформирована по решению администрации в связи с систематическими нарушениями правил сервера.' },
        ],
        custom: [],
    };

    // ═══════════════════════════════════════════════════════════════
// ПОЛНАЯ АВТОМАТИЧЕСКАЯ ОПТИМИЗАЦИЯ НАЗВАНИЙ И ТЕГОВ (РАЗДЕЛ ИГРОКИ)
// ═══════════════════════════════════════════════════════════════
(function() {
    // Полная карта коротких названий и расширенных поисковых тегов для Black Russia
    const ruleMapping = {
        // --- РАЗДЕЛ 2: ИГРОВОЙ ПРОЦЕСС ---
        '2.01': { short: 'RP (Нарушение RP)', tags: 'rp, рп, нарушение рп, поведение, не по рп, нонрп' },
        '2.02': { short: 'AFK (Уход от RP)', tags: 'afk, авк, уход от рп, уход от ареста, офф от рп, уход, лив' },
        '2.03': { short: 'NRP Drive (НонРП езда)', tags: 'nrp drive, нонрп драйв, нонрп езда, езда, срезы, встречка, поля, неправдоподобная езда' },
        '2.04': { short: 'Помеха (Помеха игрокам)', tags: 'помеха, помеха работе, инкассаторам, дальнобойщикам, таран, мешает, помеха игровому процессу' },
        '2.05': { short: 'Обман (OOC/IC Обман)', tags: 'обман, оос обман, ic обман, развод, кидок, скам, украл деньги' },
        '2.07': { short: 'AFK без ESC (Помеха)', tags: 'afk без esc, помеха, афк на дороге, афк в проходе, кик' },
        '2.08': { short: 'Аморальные действия', tags: 'аморалка, аморальные действия, секс отыгровки, изнасилование, варн' },
        '2.09': { short: 'Слив склада', tags: 'слив склада, слив фамы, слив склада фракции, ресурсы' },
        '2.10': { short: 'Обман в /do', tags: 'обман в до, обман do, do, вранье в до' },
        '2.11': { short: 'Личный транспорт', tags: 'рабочий транспорт в личных целях, фракционный транспорт, фракция' },
        '2.12': { short: 'Помеха медиа лицам', tags: 'помеха стримеру, помеха блогеру, стримснайп, мешает стриму' },
        '2.13': { short: 'DB (DriveBy)', tags: 'db, дб, таран, убийство машиной, нанесение урона транспортом' },
        '2.15': { short: 'TK (Team Kill)', tags: 'tk, тк, тим килл, убийство своих, огонь по своим, фракция' },
        '2.16': { short: 'SK (Spawn Kill)', tags: 'sk, ск, спавн килл, убийство на спавне, титулка, база' },
        '2.18': { short: 'MG (Meta Gaming)', tags: 'mg, мг, метагейминг, оос в ic, информация из реальности, чат' },
        '2.19': { short: 'DM (Death Match)', tags: 'dm, дм, дезматч, убийство без причины, нанесение урона' },
        '2.20': { short: 'Mass DM', tags: 'масс дм, mass dm, масс убийство, расстрел, убийство троих' },
        '2.21': { short: 'Обход системы', tags: 'обход системы, багоюз системы, передача денег через багажник, махинации' },
        '2.22': { short: 'Сторонний софт', tags: 'софт, читы, читер, скрипты, макросы, стороннее по, сборка' },
        '2.23': { short: 'Скрытие багов', tags: 'скрытие багов, багоюз, скрытие ошибок, заблуждение' },
        '2.24': { short: 'Скрытие нарушителей', tags: 'соучастие, скрытие злоумышленников, покрывательство, чсп' },
        '2.25': { short: 'Вред репутации', tags: 'вред проекту, репутация, слив проекта' },
        '2.26': { short: 'Вред ресурсам', tags: 'вред ресурсам, дудос, ddos, вред форуму, вред серверам' },
        '2.27': { short: 'Слив инфы админов', tags: 'слив админ инфы, распространение переписок, слив админки' },
        '2.28': { short: 'Покупка/Продажа ИВ', tags: 'вирты, покупка вирт, продажа вирт, ив, покупка ив, черны рынок' },
        '2.30': { short: 'Ущерб экономике', tags: 'раздача денег, порча экономики, ущерб экономике' },
        '2.31': { short: 'Реклама проектов', tags: 'реклама, сторонние проекты, пиар каналов, ссылки' },
        '2.32': { short: 'Обман администрации', tags: 'обман адм, введение в заблуждение, подделка док-в' },
        '2.33': { short: 'Уязвимость правил', tags: 'уязвимость правил, обход правил, дыры в правилах' },
        '2.40': { short: 'Поля на рабочем тс', tags: 'езда по полям, рабочее тс, грузовик, курьер' },
        '2.45': { short: 'Наказание от Команды', tags: 'команда проекта, спец администрация' },
        '2.47': { short: 'Поля на грузовом тс', tags: 'поля, грузовик, фура, езда по полям, дальнобой' },
        '2.53': { short: 'Баги стрельбы (+C)', tags: '+c, плюс ц, отводы, слайды, сбив анимации, стрельба' },
        '2.54': { short: 'Оскорбление адм', tags: 'оск адм, неуважение к адм, неадекват адм, угрозы адм' },

        // --- РАЗДЕЛ 3: ПРАВИЛА ЧАТА ---
        '3.01': { short: 'Общепринятый язык', tags: 'язык, транслит, чат, русский язык' },
        '3.02': { short: 'Caps Lock (Капс)', tags: 'капс, верхний регистр, caps, заглавные буквы, крупный текст' },
        '3.03': { short: 'Оскорбление игроков', tags: 'оск, оскорбление, оск игроков, мат, брань' },
        '3.04': { short: 'Упоминание родных', tags: 'упом род, mq, оск род, родня, маме привет' },
        '3.05': { short: 'Flood (Флуд)', tags: 'флуд, flood, спам, чат, повторение сообщений' },
        '3.06': { short: 'Злоуп. символами', tags: 'знаки препинания, злоупотребление символами, спам знаками' },
        '3.21': { short: 'Запрещенная реклама', tags: 'реклама в чат, вип чат, гос чат, коммерция' },
        '3.22': { short: 'Объявления в госс', tags: 'рынок в больнице, рынок в госс, торговля, продажа в здании' },
        '3.23': { short: 'Мат в VIP-чат', tags: 'вип чат, vip чат, мат в вип, нецензурная брань' },

        // --- РАЗДЕЛ 4: НИКНЕЙМЫ / ПРОМОКОДЫ ---
        '4.05': { short: 'Реклама в нике', tags: 'ник реклама, реклама сторонних ресурсов, сайт в нике' },
        '4.08': { short: 'Символы/цифры в нике', tags: 'нонрп ник, цифры в нике, символы в нике, ошибки в нике' },
        '4.09': { short: 'Матерный/Оск ник', tags: 'оск ник, мат в нике, политика в нике, религия в нике' },
        '4.10': { short: 'Фейк никнейм', tags: 'фейк ник, подмена букв, фейк админа, подделка аккаунта' },
        '4.11': { short: 'Бизнес на твинках', tags: 'твинки, бизнес, владение бизнесом, мультиаккаунт' },
        '4.14': { short: 'Неактив компании', tags: 'неактивность тк, строительная компания, обнуление тк, не заходил' },
        '4.15': { short: 'Фейк промокод', tags: 'промокод, фейк промо, промокод блогера, копия промо' }
    };

    // Карта жестких базовых тегов для стандартных (общих) вердиктов по ID
    const generalTags = {
        'p1': 'игроки, жалоба, рассмотрение, закреплено, в работе',
        'p2': 'игроки, жалоба, одобрено, наказание выдано, регламент, закреплено',
        'p3': 'игроки, жалоба, отказано, нарушений нет, чист',
        'p4': 'игроки, жалоба, отказано, недостаточно доказательств, видео, скриншот',
        'p5': 'игроки, жалоба, отказано, не по регламенту, формат, форма подачи',
        'p6': 'игроки, жалоба, ожидание, запрос доказательств, 24 часа, предоставить видео',
        'p7': 'игроки, жалоба, решено, ситуация урегулирована, закрыто',
        'p8': 'игроки, жалоба, одобрено, пункт правил, ручной выбор',
        'p9': 'игроки, жалоба, отказано, пункт правил, ручной выбор'
    };

    // Автоматически определяем доступный массив (в глобальной области или внутри структуры скрипта)
    const templatesList = (typeof DEFAULT_TEMPLATES !== 'undefined' && DEFAULT_TEMPLATES.players) || (typeof players !== 'undefined' ? players : null);

    if (templatesList && Array.isArray(templatesList)) {
        templatesList.forEach(tpl => {
            let ruleNum = null;

            // Шаг 1. Пытаемся извлечь пункт правил из текущих тегов (поиск подстроки вида '2.01')
            if (tpl.tags) {
                const matchTags = tpl.tags.match(/\b\d+\.\d+\b/);
                if (matchTags) ruleNum = matchTags[0];
            }

            // Шаг 2. Если в тегах пусто, ищем пункт правил в самом названии шаблона
            if (!ruleNum && tpl.title) {
                const matchTitle = tpl.title.match(/\b\d+\.\d+\b/);
                if (matchTitle) ruleNum = matchTitle[0];
            }

            // Шаг 3. Если заголовок не помог, парсим текст BB-кода из content (например: [I]2.01.[/I])
            if (!ruleNum && tpl.content) {
                const matchContent = tpl.content.match(/\[I\](\d+\.\d+)\.\[\/I\]/);
                if (matchContent) ruleNum = matchContent[1];
            }

            // Определяем глобальный маркер статуса на основе текста в заголовке
            const isApproved = tpl.title.toLowerCase().includes('одобрено');
            const isRejected = tpl.title.toLowerCase().includes('отказано');
            const statusTag = isApproved ? 'одобрено' : isRejected ? 'отказано' : 'жалоба';

            if (ruleNum) {
                // Если номер пункта найден в базе ruleMapping
                if (ruleMapping[ruleNum]) {
                    const baseStatus = isApproved ? 'Одобрено' : isRejected ? 'Отказано' : 'Рассмотрено';

                    // Перезаписываем заголовок в идеальный читаемый вид
                    tpl.title = `${baseStatus} — ${ruleMapping[ruleNum].short} [${ruleNum}]`;

                    // Перезаписываем теги мощным поисковым набором
                    tpl.tags = `игроки, жалоба, ${statusTag}, пункт ${ruleNum}, ${ruleMapping[ruleNum].tags}`;
                } else {
                    // Если пункт правил обнаружен, но его нет в карте ruleMapping (страховочный вариант)
                    const baseStatus = isApproved ? 'Одобрено' : isRejected ? 'Отказано' : 'Рассмотрено';
                    tpl.title = `${baseStatus} — Пункт правил ${ruleNum}`;
                    tpl.tags = `игроки, жалоба, ${statusTag}, пункт ${ruleNum}`;
                }
            } else {
                // Обработка стандартных административных шаблонов, не привязанных к конкретным пунктам правил
                if (generalTags[tpl.id]) {
                    tpl.tags = generalTags[tpl.id];
                } else {
                    // Универсальный генератор тегов для любых кастомных элементов
                    tpl.tags = `игроки, жалоба, ${statusTag}, ${tpl.title.toLowerCase().replace(/[^a-zа-я0-9\s]/g, '')}`;
                }
            }
        });
        console.log(`[Успех] Оптимизатор успешно пересобрал базу данных! Обработано шаблонов: ${templatesList.length}`);
    } else {
        console.error("[Ошибка] Не удалось обнаружить массив 'players' для выполнения автоматической оптимизации.");
    }
})();

    // ═══════════════════════════════════════════════════════════════
    //  СОСТОЯНИЕ
    // ═══════════════════════════════════════════════════════════════
    let TPLS     = loadTemplates();
    let SETS     = loadSettings();
    let STATS    = loadStats();
    let HIST     = loadHistory();
    let curTheme = localStorage.getItem(STORAGE.THEME) || 'amber';
    let curTab   = 'players';
    let manageMode = false;
    let floodIv  = null;
    let styleEl  = null;

    const theme = () => {
        const t = THEMES[curTheme];
        if (!t) { curTheme = 'amber'; localStorage.setItem(STORAGE.THEME, 'amber'); return THEMES.amber; }
        return t;
    };

    // ═══════════════════════════════════════════════════════════════
    //  ЗАГРУЗКА / СОХРАНЕНИЕ
    // ═══════════════════════════════════════════════════════════════
    function loadTemplates() {
        try {
            const raw = localStorage.getItem(STORAGE.TEMPLATES);
            if (!raw) {
                const defs = deepClone(DEFAULT_TEMPLATES);
                defs.custom = [];
                return defs;
            }
            const parsed = JSON.parse(raw);
            const data = (parsed.version === STORAGE_VERSION && parsed.data) ? parsed.data : (parsed.data || parsed);
            Object.values(data).forEach(arr => { if (Array.isArray(arr)) arr.forEach(t => { if (t.uses === undefined) t.uses = 0; if (t.tags === undefined) t.tags = ''; }); });
            const defaults = deepClone(DEFAULT_TEMPLATES);
            defaults.custom = [];
            const result = {};
            for (const key of Object.keys(defaults)) {
                const saved = data[key];
                result[key] = (Array.isArray(saved) && saved.length > 0 && key !== 'custom') ? saved : defaults[key];
            }
            if (Array.isArray(data.custom)) result.custom = data.custom;
            return result;
        } catch(e) {
            localStorage.removeItem(STORAGE.TEMPLATES);
            const defs = deepClone(DEFAULT_TEMPLATES);
            defs.custom = [];
            return defs;
        }
    }
    function loadSettings() {
        const def = { autoSubmit: false, floodControl: true, serverName: 'ASTANA', mgTerms: [...DEFAULT_MG_TERMS], minBioWords: 200, hotkeys: true };
        try { const s = JSON.parse(localStorage.getItem(STORAGE.SETTINGS)); return s ? { ...def, ...s } : def; }
        catch(e) { return def; }
    }
    function loadStats() {
        try { return JSON.parse(localStorage.getItem(STORAGE.STATS)) || { total: 0, byPrefix: {}, byTab: {}, byDay: {} }; }
        catch(e) { return { total: 0, byPrefix: {}, byTab: {}, byDay: {} }; }
    }
    function loadHistory() {
        try { return JSON.parse(localStorage.getItem(STORAGE.HISTORY)) || []; }
        catch(e) { return []; }
    }
    function saveTemplates(d) { localStorage.setItem(STORAGE.TEMPLATES, JSON.stringify({ version: STORAGE_VERSION, data: d || TPLS })); }
    function saveSettings()   { localStorage.setItem(STORAGE.SETTINGS, JSON.stringify(SETS)); }
    function saveStats()      { localStorage.setItem(STORAGE.STATS, JSON.stringify(STATS)); }
    function saveHistory()    { localStorage.setItem(STORAGE.HISTORY, JSON.stringify(HIST)); }
    function deepClone(o)     { return JSON.parse(JSON.stringify(o)); }

    // ═══════════════════════════════════════════════════════════════
    //  УТИЛИТЫ
    // ═══════════════════════════════════════════════════════════════
    function esc(s) { return String(s).replace(/[&<>"']/g, c => ({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c])); }
    function fmtDate(d) { return new Date(d).toLocaleDateString('ru-RU', {day:'2-digit',month:'2-digit',year:'numeric'}); }
    function fmtTime(d) { return new Date(d).toLocaleTimeString('ru-RU', {hour:'2-digit',minute:'2-digit'}); }
    function timeAgo(ts) {
        const s = Math.floor((Date.now() - ts) / 1000);
        if (s < 60) return s + 'с назад';
        if (s < 3600) return Math.floor(s/60) + 'м назад';
        if (s < 86400) return Math.floor(s/3600) + 'ч назад';
        return Math.floor(s/86400) + 'д назад';
    }
    function greeting() {
        const h = new Date().getHours();
        if (h>=4  && h<12) return 'Доброе утро';
        if (h>=12 && h<18) return 'Добрый день';
        if (h>=18)         return 'Добрый вечер';
        return 'Доброй ночи';
    }
    const LAYOUT = {q:'й',w:'ц',e:'у',r:'к',t:'е',y:'н',u:'г',i:'ш',o:'щ',p:'з','[':'х',']':'ъ',a:'ф',s:'ы',d:'в',f:'а',g:'п',h:'р',j:'о',k:'л',l:'д',';':'ж',"'":'э',z:'я',x:'ч',c:'с',v:'м',b:'и',n:'т',m:'ь',',':'б','.':'ю'};
    const toRu = s => s.split('').map(c => LAYOUT[c]||c).join('');
    const fuzz = (q,t) => { if(!q) return true; const n=q.toLowerCase(); const tx=t.toLowerCase(); return tx.includes(n)||tx.includes(toRu(n)); };
    function getAuthor() {
        const el = document.querySelector(SEL.usernameLink);
        return { name: el ? el.textContent.trim() : 'Игрок', id: el ? (el.getAttribute('data-user-id')||'') : '' };
    }

    // ═══════════════════════════════════════════════════════════════
    //  ПЛЕЙСХОЛДЕРЫ
    // ═══════════════════════════════════════════════════════════════
    function applyPH(text) {
        const {name, id} = getAuthor();
        const mention = id ? `[USER=${id}]${name}[/USER]` : name;
        const threadId = window.location.pathname.replace(/\D/g,'') || '';
        return text
            .replace(/\{nickname\}/g,  name)
            .replace(/\{mention\}/g,   mention)
            .replace(/\{server\}/g,    String(SETS.serverName||'ASTANA').toUpperCase())
            .replace(/\{date\}/g,      fmtDate(Date.now()))
            .replace(/\{time\}/g,      fmtTime(Date.now()))
            .replace(/\{greeting\}/g,  greeting())
            .replace(/\{thread_id\}/g, threadId);
    }

    // ═══════════════════════════════════════════════════════════════
    //  ВСТАВКА ШАБЛОНА
    // ═══════════════════════════════════════════════════════════════
    function insertTemplate(tpl) {
        try {
            const {name, id} = getAuthor();
            const mention = id ? `[USER=${id}]${name}[/USER]` : name;
            const srv = String(SETS.serverName||'ASTANA').toUpperCase();
            const pc  = PREFIX_COLORS[tpl.prefix] || '#61bd6d';

            // isRaw: контент уже содержит готовый BB-код тела — только плейсхолдеры
            if (tpl.isRaw) {
                let rawBody = applyPH(String(tpl.content||''))
                    .replace(/\{mention\}/g, mention);
                const fin =
                    `[CENTER][FONT=times new roman]\n` +
                    `[COLOR=rgb(209,213,216)][I][IMG]https://i.postimg.cc/9QhjNYgx/Untitled38-20260604131933.png[/IMG][/I][/COLOR]\n\n` +
                    `[COLOR=rgb(255,255,255)][SIZE=7][I]${greeting()}, уважаемый [/I][/SIZE][/COLOR]` +
                    `[COLOR=rgb(209,213,216)][SIZE=7][I]${mention}![/I][/SIZE][/COLOR]\n\n` +
                    `${rawBody}\n\n` +
                    `[URL='https://postimg.cc/gw6vPFsb'][IMG]https://i.postimg.cc/jjMvPRJ2/Untitled36-20260604131154.png[/IMG][/URL]\n\n` +
                    `[COLOR=rgb(209,213,216)][COLOR=rgb(255,255,255)][SIZE=6][I]Приятной игры на сервере[/I][/SIZE][/COLOR] ` +
                    `[COLOR=rgb(84,172,210)][SIZE=6][I]${srv}[/I][/SIZE][/COLOR][/COLOR]\n` +
                    `[COLOR=rgb(209,213,216)][COLOR=rgb(255,255,255)][SIZE=6][I]С уважением,[/I][/SIZE][/COLOR] ` +
                    `[COLOR=rgb(209,72,65)][SIZE=6][I]Администрация сервера[/I][/SIZE][/COLOR][/COLOR]\n` +
                    `[/FONT][/CENTER]`;
                const ed = document.querySelector(SEL.editor);
                if (!ed) { alert('❌ Редактор не найден. Откройте форму ответа.'); return; }
                ed.innerHTML = fin.replace(/\n/g,'<br>');
                ['input','keyup','change'].forEach(ev => ed.dispatchEvent(new Event(ev,{bubbles:true})));
                document.querySelector(SEL.overlayClose)?.click();
                closeMain();
                if (tpl.prefix) setPrefix(tpl.prefix);
                if (SETS.autoSubmit) submit();
                recordUse(tpl, curTab);
                return;
            }

            let rawBody = applyPH(String(tpl.content||''))
                .replace(/\[url=[^\]]*\]\[img\][^\[]*\[\/img\]\[\/url\]/gi,'')
                .replace(/\[img\][^\[]*\[\/img\]/gi,'')
                .replace(/\[\/?(CENTER|FONT|COLOR|SIZE|I|B|U)(=[^\]]+)?\]/gi,'')
                .trim();

            const hl = (text, pat) => text.replace(
                new RegExp(`(${pat})`, 'i'),
                `[/I][/COLOR][COLOR=${pc}][I]$1[/I][/COLOR][COLOR=rgb(255,255,255)][I]`
            );
            if      (tpl.prefix===P.ACCEPT||tpl.prefix===P.REALIZOVANO) rawBody = hl(rawBody,'Одобрено|Реализовано');
            else if (tpl.prefix===P.UNACCEPT)   rawBody = hl(rawBody,'Отказано');
            else if (tpl.prefix===P.PIN||tpl.prefix===P.OJIDANIE)       rawBody = hl(rawBody,'На рассмотрении|Ожидание');
            else if (tpl.prefix===P.RESHENO)    rawBody = hl(rawBody,'Решено');
            else if (tpl.prefix===P.CLOSE)      rawBody = hl(rawBody,'Закрыто');

            const fin =
                `[CENTER][FONT=times new roman]\n` +
                `[COLOR=rgb(209,213,216)][I][IMG]https://i.postimg.cc/9QhjNYgx/Untitled38-20260604131933.png[/IMG][/I][/COLOR]\n\n` +
                `[COLOR=rgb(255,255,255)][SIZE=7][I]${greeting()}, уважаемый [/I][/SIZE][/COLOR]` +
                `[COLOR=rgb(209,213,216)][SIZE=7][I]${mention}![/I][/SIZE][/COLOR]\n\n` +
                `[SIZE=6][COLOR=rgb(255,255,255)][I]${rawBody}[/I][/COLOR][/SIZE]\n\n` +
                `[URL='https://postimg.cc/gw6vPFsb'][IMG]https://i.postimg.cc/jjMvPRJ2/Untitled36-20260604131154.png[/IMG][/URL]\n\n` +
                `[COLOR=rgb(209,213,216)][COLOR=rgb(255,255,255)][SIZE=6][I]Приятной игры на сервере[/I][/SIZE][/COLOR] ` +
                `[COLOR=rgb(84,172,210)][SIZE=6][I]${srv}[/I][/SIZE][/COLOR][/COLOR]\n` +
                `[COLOR=rgb(209,213,216)][COLOR=rgb(255,255,255)][SIZE=6][I]С уважением,[/I][/SIZE][/COLOR] ` +
                `[COLOR=rgb(209,72,65)][SIZE=6][I]Администрация сервера[/I][/SIZE][/COLOR][/COLOR]\n` +
                `[/FONT][/CENTER]`;

            const ed = document.querySelector(SEL.editor);
            if (!ed) { alert('❌ Редактор не найден. Откройте форму ответа.'); return; }
            ed.innerHTML = fin.replace(/\n/g,'<br>');
            ['input','keyup','change'].forEach(ev => ed.dispatchEvent(new Event(ev,{bubbles:true})));

            document.querySelector(SEL.overlayClose)?.click();
            closeMain();
            if (tpl.prefix) setPrefix(tpl.prefix);
            if (SETS.autoSubmit) submit();
            recordUse(tpl, curTab);
        } catch(err) {
            console.error('NL Helper insertTemplate:', err);
            alert('❌ Ошибка вставки: ' + err.message);
        }
    }

    // ═══════════════════════════════════════════════════════════════
    //  ПРЕФИКС
    // ═══════════════════════════════════════════════════════════════
    function setPrefix(id) {
        if (typeof XF === 'undefined') { console.warn('XF не определен'); return; }
        const ti = document.querySelector(SEL.titleValue)?.lastChild?.textContent?.trim() || '';
        try {
            const fd = new FormData();
            fd.append('prefix_id',id); 
            fd.append('title',ti);
            fd.append('_xfToken',XF.config.csrf);
            fd.append('_xfRequestUri',window.location.pathname);
            fd.append('_xfWithData',1); 
            fd.append('_xfResponseType','json');
            const open = OPEN_PFXS.has(id) ? 1 : 0;
            fd.append('discussion_open',open); 
            fd.append('sticky',open);
            
            const url = new URL(window.location.href);
            const editUrl = url.pathname.replace(/\/$/, '') + '/edit';
            
            fetch(editUrl, {method:'POST', body:fd, credentials:'same-origin'})
                .then(r => {
                    if (!r.ok) { console.error('Ошибка префикса:', r.status); showNotification('❌ Ошибка при установке префикса', 'error'); return null; }
                    return r.json();
                })
                .then(d => {
                    if (d && d.status === 'ok') {
                        showNotification('✅ Префикс установлен', 'success');
                        if (SETS.autoSubmit) setTimeout(() => location.reload(), 500);
                    } else if (d) {
                        console.warn('Статус ответа:', d);
                        showNotification('⚠️ Ответ сервера: ' + (d.status || 'неизвестно'), 'error');
                    }
                })
                .catch(err => {
                    console.error('Ошибка в setPrefix:', err);
                    showNotification('❌ Ошибка: ' + err.message, 'error');
                });
        } catch (err) {
            console.error('Ошибка подготовки запроса:', err);
            showNotification('❌ Ошибка подготовки: ' + err.message, 'error');
        }
    }

    // ═══════════════════════════════════════════════════════════════
    //  SUBMIT + FLOOD
    // ═══════════════════════════════════════════════════════════════
    function submit() {
        clickSubmit();
        if (!SETS.floodControl) return;
        let n=0;
        const iv = setInterval(()=>{
            n++;
            const e = document.querySelector(SEL.blockMessage);
            if (e && e.textContent.includes('подождать')) { clearInterval(iv); doFlood(e.textContent); }
            if (n>25) clearInterval(iv);
        },100);
    }
    function doFlood(txt) {
        const m = txt.match(/(\d+)\s*(секунд|минут)/); if(!m) return;
        let s = parseInt(m[1]); if(m[2].includes('минут')) s*=60;
        localStorage.setItem(STORAGE.FLOOD, Date.now()+s*1000);
        const ed = document.querySelector(SEL.editor);
        localStorage.setItem(STORAGE.PENDING, ed?ed.innerHTML:'');
        floodTimer(s);
    }
    function floodTimer(secs) {
        const b = findReplyBtn(); if(!b) return;
        const sp = b.querySelector('.button-text'); const og = sp?.textContent||'Ответить'; let t=secs;
        const up=()=>{ if(sp) sp.textContent=`⏳ ${t}с`; b.classList.add('nl-fa'); }; up();
        if (floodIv) clearInterval(floodIv);
        floodIv = setInterval(()=>{
            t--; up();
            if(t<=0){
                clearInterval(floodIv); localStorage.removeItem(STORAGE.FLOOD);
                b.classList.remove('nl-fa'); if(sp) sp.textContent=og;
                const pd=localStorage.getItem(STORAGE.PENDING);
                if(pd){ const ed=document.querySelector(SEL.editor); if(ed){ed.innerHTML=pd;ed.dispatchEvent(new Event('input',{bubbles:true}));} localStorage.removeItem(STORAGE.PENDING); }
                if(SETS.autoSubmit) setTimeout(()=>clickSubmit(),500);
            }
        },1000);
    }
    function checkFlood() {
        const tg=parseInt(localStorage.getItem(STORAGE.FLOOD)); if(!tg) return;
        const r=Math.ceil((tg-Date.now())/1000); if(r>0) floodTimer(r); else localStorage.removeItem(STORAGE.FLOOD);
    }

    // ═══════════════════════════════════════════════════════════════
    //  СТАТИСТИКА
    // ═══════════════════════════════════════════════════════════════
    function recordUse(tpl, tabId) {
        tpl.uses = (tpl.uses||0)+1; saveTemplates();
        STATS.total = (STATS.total||0)+1;
        STATS.byPrefix[tpl.prefix] = (STATS.byPrefix[tpl.prefix]||0)+1;
        STATS.byTab[tabId] = (STATS.byTab[tabId]||0)+1;
        const today = new Date().toISOString().slice(0,10);
        STATS.byDay[today] = (STATS.byDay[today]||0)+1;
        saveStats();
        const threadTitle = document.querySelector(SEL.titleValue)?.textContent?.trim()||'(без названия)';
        HIST.unshift({ id:tpl.id, title:tpl.title, tabId, threadTitle, threadUrl:window.location.href, prefix:tpl.prefix, usedAt:Date.now() });
        if (HIST.length>MAX_HISTORY) HIST.length=MAX_HISTORY;
        saveHistory();
    }

    // ═══════════════════════════════════════════════════════════════
    //  ГОРЯЧИЕ КЛАВИШИ
    // ═══════════════════════════════════════════════════════════════
    function initHotkeys() {
        document.addEventListener('keydown', e => {
            if (!SETS.hotkeys) return;
            if (e.altKey && (e.key==='h'||e.key==='H'||e.key==='р'||e.key==='Р')) {
                e.preventDefault(); e.stopPropagation();
                document.querySelector('.nl-ov') ? closeMain() : openMain();
                return;
            }
            if (e.altKey && (e.key==='b'||e.key==='B'||e.key==='и'||e.key==='И')) {
                e.preventDefault(); e.stopPropagation();
                openBioAnalyzer(); return;
            }
            if (e.key==='Escape') {
                if (document.querySelector('.nl-ov')) { closeMain(); return; }
                if (document.querySelector('.nl-dov')) { document.querySelector('.nl-dov')?.remove(); return; }
            }
            if (e.altKey && e.key>='1' && e.key<='9') {
                const idx = parseInt(e.key)-1;
                if (idx < TABS.length) {
                    e.preventDefault(); e.stopPropagation();
                    curTab = TABS[idx].id;
                    if (!document.querySelector('.nl-ov')) { openMain(); }
                    else { document.querySelectorAll('.nl-tab').forEach(t=>t.classList.toggle('active',t.dataset.tab===curTab)); renderCards(); }
                }
            }
        }, { capture: true });
    }

    // ═══════════════════════════════════════════════════════════════
    //  CSS
    // ═══════════════════════════════════════════════════════════════
    function buildCSS(hd) {
        return `
@import url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@400;500;600;700&family=Share+Tech+Mono&display=swap');

:root {
    --nl-bg:       ${hd.bg};
    --nl-bg2:      ${hd.bg2};
    --nl-bg3:      ${hd.bg3};
    --nl-border:   ${hd.border};
    --nl-accent:   ${hd.accent};
    --nl-text:     ${hd.text};
    --nl-text2:    ${hd.text2};
    --nl-grid:     ${hd.accent}07;
}

/* ── Кнопки на форуме ── */
.nl-btn-main {
    font-family:'Rajdhani',sans-serif !important; font-weight:700 !important;
    font-size:11px !important; letter-spacing:1px !important; text-transform:uppercase !important;
    background:transparent !important; color:${hd.accent} !important;
    border:1px solid ${hd.accent} !important;
    clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px)) !important;
    padding:8px 16px !important; cursor:pointer !important;
    margin:3px 5px 3px 0 !important; height:36px !important;
    display:inline-flex !important; align-items:center !important;
    vertical-align:middle !important; flex-shrink:0 !important;
    transition:all .2s !important;
    box-shadow:0 0 10px ${hd.accent}25 !important;
}
.nl-btn-main:hover { background:${hd.accent} !important; color:#000 !important; box-shadow:0 0 20px ${hd.accent}55 !important; }
#nl-bio-btn   { color:#3b82f6 !important; border-color:#3b82f6 !important; box-shadow:0 0 10px #3b82f625 !important; }
#nl-bio-btn:hover   { background:#3b82f6 !important; color:#fff !important; }
#nl-stats-btn { color:#22c55e !important; border-color:#22c55e !important; box-shadow:0 0 10px #22c55e25 !important; }
#nl-stats-btn:hover { background:#22c55e !important; color:#fff !important; }

/* ── Анимации ── */
@keyframes nl-fade { from{opacity:0} to{opacity:1} }
@keyframes nl-up   { from{opacity:0;transform:translateY(14px)} to{opacity:1;transform:none} }
@keyframes nl-scan {
    0%,100% { transform:scaleX(0.1); opacity:0; }
    50%      { transform:scaleX(1);  opacity:0.6; }
}

/* ── Overlay ── */
.nl-ov {
    position:fixed; inset:0; z-index:99999;
    background:rgba(0,0,0,0.88);
    display:flex; align-items:center; justify-content:center;
    font-family:'Rajdhani',sans-serif;
    backdrop-filter:blur(5px);
    animation:nl-fade .18s ease;
}

/* ── Главное окно ── */
.nl-m {
    background:${hd.bg};
    background-image:linear-gradient(${hd.accent}05 1px,transparent 1px),linear-gradient(90deg,${hd.accent}05 1px,transparent 1px);
    background-size:28px 28px;
    width:1100px; max-width:97vw; height:88vh; max-height:860px;
    clip-path:polygon(0 0,calc(100% - 20px) 0,100% 20px,100% 100%,20px 100%,0 calc(100% - 20px));
    overflow:hidden;
    display:flex; flex-direction:row;
    border:1px solid ${hd.border};
    box-shadow:0 0 0 1px ${hd.accent}10, 0 24px 60px rgba(0,0,0,.8);
    animation:nl-up .2s ease;
}

/* ── Сайдбар ── */
.nl-sidebar {
    width:220px; background:${hd.bg2}; border-right:1px solid ${hd.border};
    display:flex; flex-direction:column; flex-shrink:0;
}
.nl-logo-area {
    padding:22px 20px 18px; border-bottom:1px solid ${hd.border};
    position:relative; overflow:hidden;
}
.nl-logo-area::after {
    content:''; position:absolute; bottom:0; left:0; right:0; height:1px;
    background:linear-gradient(90deg,transparent,${hd.accent},transparent);
    animation:nl-scan 3s ease-in-out infinite; opacity:.5;
}
.nl-logo-text {
    font-family:'Rajdhani',sans-serif; font-size:28px; font-weight:700;
    color:${hd.text}; line-height:1; letter-spacing:2px; text-transform:uppercase;
}
.nl-logo-text span { color:${hd.accent}; }
.nl-logo-sub {
    font-family:'Share Tech Mono',monospace; font-size:10px;
    color:${hd.text2}; letter-spacing:1.5px; text-transform:uppercase; margin-top:4px;
}

/* ── Вкладки ── */
.nl-tabs { flex:1; overflow-y:auto; padding:10px 0; display:flex; flex-direction:column; gap:2px; }
.nl-tabs::-webkit-scrollbar { width:3px; }
.nl-tabs::-webkit-scrollbar-thumb { background:${hd.border}; }
.nl-tab {
    padding:10px 20px; background:none; border:none;
    border-left:2px solid transparent;
    color:${hd.text2};
    font-family:'Rajdhani',sans-serif; font-size:13px; font-weight:600;
    letter-spacing:.05em; text-transform:uppercase;
    cursor:pointer; text-align:left; transition:all .15s;
}
.nl-tab:hover { color:${hd.text}; background:${hd.bg3}; }
.nl-tab.active { color:${hd.accent}; border-left-color:${hd.accent}; background:${hd.accent}0d; }

/* ── Кнопки подвала сайдбара ── */
.nl-sb-foot { padding:14px; border-top:1px solid ${hd.border}; display:flex; flex-direction:column; gap:6px; }
.nl-hb {
    background:${hd.bg3}; border:1px solid ${hd.border};
    padding:9px 12px; cursor:pointer; color:${hd.text2};
    font-family:'Rajdhani',sans-serif; font-size:12px; font-weight:600;
    letter-spacing:.06em; text-transform:uppercase;
    transition:all .15s; text-align:left; width:100%;
    clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px));
}
.nl-hb:hover { border-color:${hd.accent}; color:${hd.accent}; background:${hd.accent}0d; }

/* ── Основной контент ── */
.nl-main-content { flex:1; display:flex; flex-direction:column; min-width:0; background:${hd.bg}; }

/* ── Топ-панель ── */
.nl-hd {
    padding:16px 22px 14px; border-bottom:1px solid ${hd.border};
    display:flex; flex-direction:column; gap:12px; flex-shrink:0;
    background:linear-gradient(90deg,${hd.accent}05 0%,transparent 60%);
}
.nl-hd-top { display:flex; gap:12px; align-items:center; }
.nl-sr {
    flex:1; background:${hd.bg2}; border:1px solid ${hd.border};
    color:${hd.text}; padding:10px 16px;
    font-family:'Rajdhani',sans-serif; font-size:14px; outline:none; transition:border-color .15s;
    clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);
}
.nl-sr:focus { border-color:${hd.accent}; box-shadow:0 0 0 1px ${hd.accent}20; }
.nl-sr::placeholder { color:${hd.text2}; }
.nl-cl {
    width:36px; height:36px; flex-shrink:0;
    background:${hd.bg2}; border:1px solid ${hd.border};
    color:${hd.text2}; font-size:20px; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    transition:all .15s;
    clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px));
}
.nl-cl:hover { background:rgba(239,68,68,.15); border-color:#ef4444; color:#ef4444; }

/* ── Панель префиксов ── */
.nl-pb { display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.nl-pp {
    font-family:'Rajdhani',sans-serif; font-size:11px; font-weight:700;
    text-transform:uppercase; letter-spacing:.5px;
    padding:4px 11px; border:1px solid; cursor:pointer;
    transition:all .15s; background:transparent;
    clip-path:polygon(0 0,calc(100% - 6px) 0,100% 6px,100% 100%,6px 100%,0 calc(100% - 6px));
}
.nl-pp:hover { filter:brightness(1.2); transform:translateY(-1px); }

/* ── Контент ── */
.nl-ct { flex:1; overflow-y:auto; padding:18px 22px; }
.nl-ct::-webkit-scrollbar { width:4px; }
.nl-ct::-webkit-scrollbar-thumb { background:${hd.border}; }

/* ── Сетка карточек ── */
.nl-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; align-content:start; }

/* ── Карточка ── */
.nl-card {
    background:${hd.bg2}; border:1px solid ${hd.border};
    border-left:2px solid transparent;
    clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));
    padding:16px; cursor:pointer; transition:all .18s; position:relative; overflow:hidden;
    box-sizing:border-box;
}
.nl-card:hover { border-left-color:${hd.accent}; box-shadow:0 4px 20px rgba(0,0,0,.3); transform:translateY(-1px); }
.nl-card.pinned { border-left-color:${hd.accent}; background:${hd.accent}06; }
.nl-card h3 {
    font-family:'Rajdhani',sans-serif; font-weight:700; font-size:14px; letter-spacing:.04em;
    color:${hd.text}; margin:0 0 7px; padding-right:22px; line-height:1.3;
    text-transform:uppercase;
}
.nl-card-preview {
    font-family:'Rajdhani',sans-serif; font-size:12px; color:${hd.text2}; margin:0 0 12px; line-height:1.5;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.nl-badge {
    display:inline-block; font-size:10px; padding:2px 9px;
    font-family:'Rajdhani',sans-serif; font-weight:700; text-transform:uppercase; letter-spacing:.5px;
    clip-path:polygon(0 0,calc(100% - 5px) 0,100% 5px,100% 100%,5px 100%,0 calc(100% - 5px));
}
.nl-new {
    display:inline-block; font-size:9px; font-weight:700; font-family:'Rajdhani',sans-serif;
    padding:1px 7px; background:rgba(34,197,94,.15); color:#22c55e;
    margin-left:6px; vertical-align:middle; text-transform:uppercase; letter-spacing:.5px;
}
.nl-uses { position:absolute; bottom:12px; right:14px; font-family:'Share Tech Mono',monospace; font-size:10px; color:${hd.text2}; }
.nl-pin-star { position:absolute; top:12px; right:14px; color:${hd.accent}; font-size:12px; }

/* Tooltip */
.nl-tooltip {
    position:absolute; bottom:calc(100% + 8px); left:50%; transform:translateX(-50%);
    background:${hd.bg3}; border:1px solid ${hd.border};
    clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px));
    padding:10px 13px; font-family:'Rajdhani',sans-serif; font-size:12px; color:${hd.text}; line-height:1.6;
    width:280px; z-index:99999; pointer-events:none;
    box-shadow:0 8px 24px rgba(0,0,0,.7);
    white-space:pre-wrap; word-break:break-word;
    opacity:0; transition:opacity .15s;
}
.nl-card:hover .nl-tooltip { opacity:1; }

/* Overlay редактирования */
.nl-mo { position:absolute; inset:0; background:rgba(8,6,4,.92); display:none; align-items:center; justify-content:center; gap:10px; }
.nl-card.em .nl-mo { display:flex; }
.nl-card.em { cursor:default; }
.nl-card.em:hover { transform:none; box-shadow:none; }
.nl-ib {
    width:38px; height:38px;
    background:${hd.bg3}; border:1px solid ${hd.border};
    color:${hd.text}; font-size:15px; cursor:pointer;
    display:flex; align-items:center; justify-content:center; transition:all .15s;
    clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px));
}
.nl-ib:hover { border-color:${hd.accent}; color:${hd.accent}; }
.nl-ib.del:hover { border-color:#ef4444; color:#ef4444; }

/* ── Футер ── */
.nl-ft {
    display:flex; align-items:center; justify-content:space-between;
    padding:12px 22px; background:${hd.bg2}; border-top:1px solid ${hd.border};
    flex-shrink:0; flex-wrap:wrap; gap:10px;
}
.nl-fl { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.nl-cl2 { display:flex; align-items:center; gap:7px; font-family:'Rajdhani',sans-serif; font-size:13px; color:${hd.text2}; cursor:pointer; font-weight:600; user-select:none; letter-spacing:.04em; }
.nl-cl2 input { accent-color:${hd.accent}; width:14px; height:14px; cursor:pointer; }
.nl-sep { width:1px; height:18px; background:${hd.border}; }
.nl-sin { background:${hd.bg3}; border:1px solid ${hd.border}; color:${hd.text}; padding:7px 12px; font-family:'Rajdhani',sans-serif; font-size:13px; width:110px; outline:none; transition:border-color .15s; clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,0 100%); }
.nl-sin:focus { border-color:${hd.accent}; }
.nl-sin::placeholder { color:${hd.text2}; }

/* ── Кнопки ── */
.nl-btn {
    padding:8px 16px; border:none;
    font-family:'Rajdhani',sans-serif; font-size:12px; font-weight:700;
    text-transform:uppercase; letter-spacing:.5px; cursor:pointer; transition:all .15s;
    clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px));
}
.nl-btn-sm { padding:6px 12px; font-size:11px; }
.nl-bp { background:${hd.accent}; color:#000; border:1px solid ${hd.accent}; }
.nl-bp:hover { filter:brightness(1.1); box-shadow:0 0 16px ${hd.accent}50; }
.nl-bd { background:rgba(239,68,68,.1); border:1px solid rgba(239,68,68,.35); color:#ef4444; }
.nl-bd:hover { background:rgba(239,68,68,.2); }
.nl-bs { background:rgba(34,197,94,.1); border:1px solid rgba(34,197,94,.35); color:#22c55e; }
.nl-bs:hover { background:rgba(34,197,94,.2); }
.nl-bn { background:${hd.bg3}; border:1px solid ${hd.border}; color:${hd.text2}; }
.nl-bn:hover { border-color:${hd.accent}; color:${hd.accent}; }
.nl-fr { display:flex; gap:8px; }

/* ── Пустое состояние ── */
.nl-empty { text-align:center; padding:54px 20px; color:${hd.text2}; font-family:'Rajdhani',sans-serif; font-size:14px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; }
.nl-empty-icon { font-size:40px; margin-bottom:12px; opacity:.4; }
.nl-fa { opacity:.5 !important; pointer-events:none !important; }

/* ── Диалоги ── */
.nl-dov { position:fixed; inset:0; z-index:999999; background:rgba(0,0,0,.85); backdrop-filter:blur(4px); display:flex; align-items:center; justify-content:center; font-family:'Rajdhani',sans-serif; animation:nl-fade .15s ease; }
.nl-dbox { background:${hd.bg}; border:1px solid ${hd.border}; clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,16px 100%,0 calc(100% - 16px)); padding:24px; width:560px; max-width:94vw; max-height:90vh; overflow-y:auto; box-shadow:0 20px 50px rgba(0,0,0,.8); display:flex; flex-direction:column; gap:14px; animation:nl-up .18s ease; }
.nl-dt { font-family:'Rajdhani',sans-serif; font-weight:700; font-size:17px; letter-spacing:.06em; text-transform:uppercase; color:${hd.text}; border-bottom:1px solid ${hd.border}; padding-bottom:12px; }
.nl-f  { display:flex; flex-direction:column; gap:6px; }
.nl-f label { font-family:'Rajdhani',sans-serif; font-size:11px; color:${hd.text2}; font-weight:700; text-transform:uppercase; letter-spacing:.5px; }
.nl-ph-hint { font-size:11px; color:${hd.text2}; line-height:1.8; font-family:'Rajdhani',sans-serif; }
.nl-ph-hint code { background:${hd.bg3}; padding:1px 6px; color:${hd.accent}; font-size:10.5px; font-family:'Share Tech Mono',monospace; }
.nl-in, .nl-sel, .nl-ta { background:${hd.bg2}; border:1px solid ${hd.border}; color:${hd.text}; padding:10px 14px; font-family:'Rajdhani',sans-serif; font-size:14px; outline:none; transition:border-color .15s; width:100%; box-sizing:border-box; }
.nl-in:focus, .nl-sel:focus, .nl-ta:focus { border-color:${hd.accent}; box-shadow:0 0 0 1px ${hd.accent}18; }
.nl-ta { resize:vertical; min-height:120px; line-height:1.6; }
.nl-sel option { background:${hd.bg2}; }
.nl-da { display:flex; gap:10px; justify-content:flex-end; margin-top:4px; }

/* Вкладки в диалоге */
.nl-dtabs { display:flex; gap:2px; border-bottom:1px solid ${hd.border}; margin-bottom:2px; }
.nl-dtab { padding:9px 16px; background:none; border:none; border-bottom:2px solid transparent; color:${hd.text2}; font-family:'Rajdhani',sans-serif; font-size:13px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; cursor:pointer; transition:all .15s; margin-bottom:-1px; }
.nl-dtab:hover { color:${hd.text}; }
.nl-dtab.active { color:${hd.accent}; border-bottom-color:${hd.accent}; }
.nl-dpanel { display:none; flex-direction:column; gap:13px; }
.nl-dpanel.active { display:flex; }

/* ── Выбор темы ── */
.nl-hov { position:fixed; inset:0; z-index:999998; background:rgba(0,0,0,.82); backdrop-filter:blur(4px); display:flex; align-items:center; justify-content:center; font-family:'Rajdhani',sans-serif; }
.nl-hbox { background:${hd.bg}; border:1px solid ${hd.border}; clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,16px 100%,0 calc(100% - 16px)); padding:22px; width:360px; box-shadow:0 16px 50px rgba(0,0,0,.8); }
.nl-htitle { font-family:'Rajdhani',sans-serif; font-weight:700; font-size:16px; letter-spacing:.08em; text-transform:uppercase; color:${hd.text}; margin-bottom:16px; text-align:center; }
.nl-hgrid { display:flex; flex-direction:column; gap:8px; }
.nl-hi { display:flex; align-items:center; gap:12px; padding:11px 16px; border:1px solid ${hd.border}; cursor:pointer; transition:all .18s; background:${hd.bg2}; clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px)); }
.nl-hi:hover { border-color:var(--th-a); transform:translateX(3px); }
.nl-hi.active { border-color:var(--th-a); background:var(--th-a)0d; }
.nl-hs { width:26px; height:26px; flex-shrink:0; clip-path:polygon(0 0,calc(100% - 6px) 0,100% 6px,100% 100%,0 100%); }
.nl-hn { font-family:'Rajdhani',sans-serif; font-size:14px; font-weight:700; letter-spacing:.04em; color:${hd.text}; }
.nl-hclose { margin-top:14px; width:100%; padding:10px; border:1px solid ${hd.border}; background:${hd.bg2}; color:${hd.text2}; cursor:pointer; font-family:'Rajdhani',sans-serif; font-size:13px; font-weight:600; text-transform:uppercase; letter-spacing:.06em; transition:all .15s; clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px)); }
.nl-hclose:hover { color:${hd.text}; border-color:${hd.accent}; }

/* ── Статистика / История / Настройки ── */
.nl-stat-row { display:flex; justify-content:space-between; align-items:center; padding:10px 14px; background:${hd.bg2}; border:1px solid ${hd.border}; border-left:2px solid ${hd.accent}40; }
.nl-stat-title { color:${hd.text}; font-family:'Rajdhani',sans-serif; font-size:13px; font-weight:600; letter-spacing:.04em; }
.nl-stat-val { font-weight:700; font-family:'Share Tech Mono',monospace; font-size:14px; }
.nl-stat-val.ok   { color:#22c55e; } .nl-stat-val.warn { color:#f59e0b; } .nl-stat-val.err  { color:#ef4444; }
.nl-stat-details  { font-size:11.5px; color:${hd.text2}; margin-top:5px; line-height:1.55; font-family:'Rajdhani',sans-serif; }
.nl-stat-section  { font-family:'Rajdhani',sans-serif; font-size:11px; color:${hd.accent}; letter-spacing:1.2px; text-transform:uppercase; margin:12px 0 6px; font-weight:700; }
.nl-stat-grid     { display:flex; flex-direction:column; gap:6px; }
.nl-bar-wrap      { display:flex; align-items:center; gap:9px; }
.nl-bar           { flex:1; height:4px; background:${hd.border}; overflow:hidden; }
.nl-bar-fill      { height:100%; transition:width .4s ease; }
.nl-hist-item { display:flex; gap:11px; align-items:flex-start; padding:10px 14px; background:${hd.bg2}; border:1px solid ${hd.border}; border-left:2px solid transparent; cursor:pointer; transition:all .15s; clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,0 100%); }
.nl-hist-item:hover { border-left-color:${hd.accent}; }
.nl-hist-dot  { width:8px; height:8px; flex-shrink:0; margin-top:4px; }
.nl-hist-body { flex:1; min-width:0; }
.nl-hist-tpl  { font-family:'Rajdhani',sans-serif; font-size:13px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:${hd.text}; }
.nl-hist-thread { font-size:12px; color:${hd.text2}; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-family:'Rajdhani',sans-serif; }
.nl-hist-time { font-size:11px; color:${hd.text2}; flex-shrink:0; font-family:'Share Tech Mono',monospace; }
.nl-set-row { display:flex; justify-content:space-between; align-items:center; padding:11px 14px; background:${hd.bg2}; border:1px solid ${hd.border}; }
.nl-set-label { font-family:'Rajdhani',sans-serif; font-size:13px; color:${hd.text}; font-weight:700; letter-spacing:.04em; }
.nl-set-desc  { font-size:11px; color:${hd.text2}; margin-top:2px; font-family:'Rajdhani',sans-serif; }
.nl-tag-list  { display:flex; flex-wrap:wrap; gap:6px; }
.nl-tag { display:flex; align-items:center; gap:5px; background:${hd.bg3}; border:1px solid ${hd.border}; padding:4px 12px; font-family:'Share Tech Mono',monospace; font-size:11px; color:${hd.text2}; }
.nl-tag button { background:none; border:none; color:${hd.text2}; cursor:pointer; font-size:14px; line-height:1; padding:0; }
.nl-tag button:hover { color:#ef4444; }
.nl-verdict { text-align:center; padding:10px 16px; font-family:'Rajdhani',sans-serif; font-weight:700; font-size:14px; text-transform:uppercase; letter-spacing:.4px; clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px)); }

/* ── Нотификация ── */
.nl-notif {
    position:fixed; top:20px; right:20px; padding:10px 18px;
    font-family:'Rajdhani',sans-serif; font-size:13px; font-weight:700;
    letter-spacing:.08em; text-transform:uppercase; z-index:200000;
    clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px));
    animation:nl-up .2s ease;
}
        `;
    }

    function applyCSS() {
        if (styleEl) styleEl.remove();
        styleEl = document.createElement('style');
        styleEl.textContent = buildCSS(theme());
        document.head.appendChild(styleEl);
    }

    // ═══════════════════════════════════════════════════════════════
    //  ГЛАВНОЕ ОКНО
    // ═══════════════════════════════════════════════════════════════
    function openMain() {
        if (document.querySelector('.nl-ov')) return;
        document.body.style.overflow = 'hidden';

        const ov = document.createElement('div');
        ov.className = 'nl-ov';
        ov.innerHTML = `
            <div class="nl-m">
                <aside class="nl-sidebar">
                    <div class="nl-logo-area">
                        <div class="nl-logo-text">NL<span>.</span></div>
                        <div class="nl-logo-sub">Helper v5.0 · Alt+H</div>
                    </div>
                    <nav class="nl-tabs">
                        ${TABS.map(t=>`<button class="nl-tab${t.id===curTab?' active':''}" data-tab="${t.id}">${t.name}</button>`).join('')}
                    </nav>
                    <div class="nl-sb-foot">
                        <button class="nl-hb" id="nl-hud">🎨 Тема</button>
                        <button class="nl-hb" id="nl-history-btn">🕐 История</button>
                        <button class="nl-hb" id="nl-settings-btn">⚙️ Настройки</button>
                    </div>
                </aside>

                <main class="nl-main-content">
                    <header class="nl-hd">
                        <div class="nl-hd-top">
                            <input type="text" class="nl-sr" placeholder="🔍 Поиск шаблонов (EN→RU)...">
                            <div class="nl-cl" title="Закрыть (Esc)">✕</div>
                        </div>
                        <div class="nl-pb">
                            ${Object.entries(PREFIX_NAMES).filter(([i])=>i!=0).map(([i,n])=>
                                `<button class="nl-pp" data-p="${i}" style="color:${PREFIX_COLORS[i]};border-color:${PREFIX_COLORS[i]}44">${n}</button>`
                            ).join('')}
                        </div>
                    </header>

                    <section class="nl-ct"><div class="nl-grid"></div></section>

                    <footer class="nl-ft">
                        <div class="nl-fl">
                            <label class="nl-cl2"><input type="checkbox" id="nl-as" ${SETS.autoSubmit?'checked':''}> Авто-отправка</label>
                            <label class="nl-cl2"><input type="checkbox" id="nl-fc" ${SETS.floodControl?'checked':''}> Анти-флуд</label>
                            <div class="nl-sep"></div>
                            <input type="text" id="nl-srv" class="nl-sin" placeholder="Сервер…" value="${esc(SETS.serverName||'')}" title="Название сервера ({server})">
                            <div class="nl-sep"></div>
                            <button class="nl-btn nl-bn nl-btn-sm" id="nl-exp">📤 Экспорт</button>
                            <button class="nl-btn nl-bn nl-btn-sm" id="nl-imp">📥 Импорт</button>
                            <input type="file" id="nl-file" style="display:none" accept=".json">
                        </div>
                        <div class="nl-fr">
                            <button class="nl-btn ${manageMode?'nl-bs':'nl-bd'}" id="nl-mg">${manageMode?'✓ Готово':'✎ Редактировать'}</button>
                            <button class="nl-btn nl-bp" id="nl-cr">+ Создать</button>
                        </div>
                    </footer>
                </main>
            </div>`;

        document.body.appendChild(ov);
        renderCards();
        bindMain(ov);
    }

    function closeMain() {
        const ov = document.querySelector('.nl-ov'); if(ov) ov.remove();
        document.body.style.overflow = '';
    }

    function bindMain(ov) {
        ov.querySelector('.nl-cl').onclick = closeMain;
        ov.onclick = e => { if (e.target===ov) closeMain(); };

        ov.querySelectorAll('.nl-tab').forEach(t => {
            t.onclick = () => {
                curTab = t.dataset.tab;
                ov.querySelectorAll('.nl-tab').forEach(x=>x.classList.remove('active'));
                t.classList.add('active');
                ov.querySelector('.nl-sr').value='';
                renderCards();
            };
        });

        ov.querySelector('.nl-sr').oninput = e => renderCards(e.target.value);
        ov.querySelector('#nl-srv').oninput = e => { SETS.serverName=e.target.value.trim(); saveSettings(); };
        ov.querySelectorAll('.nl-pp').forEach(b => {
            b.onclick = () => { if(!manageMode){ closeMain(); setPrefix(parseInt(b.dataset.p)); } };
        });

        ov.querySelector('#nl-as').onchange = e => {
            if (e.target.checked && !confirm('При авто-отправке шаблон отправится сразу. Включить?')) { e.target.checked=false; return; }
            SETS.autoSubmit=e.target.checked; saveSettings();
        };
        ov.querySelector('#nl-fc').onchange = e => { SETS.floodControl=e.target.checked; saveSettings(); };
        ov.querySelector('#nl-hud').onclick         = openThemePicker;
        ov.querySelector('#nl-settings-btn').onclick = openSettings;
        ov.querySelector('#nl-history-btn').onclick  = openHistory;
        ov.querySelector('#nl-cr').onclick = createDialog;
        ov.querySelector('#nl-mg').onclick = () => {
            manageMode = !manageMode;
            const b = ov.querySelector('#nl-mg');
            b.textContent = manageMode?'✓ Готово':'✎ Редактировать';
            b.className = `nl-btn ${manageMode?'nl-bs':'nl-bd'}`;
            renderCards();
        };

        ov.querySelector('#nl-exp').onclick = () => {
            const blob = new Blob([JSON.stringify({version:STORAGE_VERSION,data:TPLS},null,2)],{type:'application/json'});
            const url  = URL.createObjectURL(blob);
            const a = Object.assign(document.createElement('a'),{href:url,download:`NL_Backup_${fmtDate(Date.now()).replace(/\./g,'-')}.json`});
            a.click(); URL.revokeObjectURL(url);
        };
        ov.querySelector('#nl-imp').onclick = () => ov.querySelector('#nl-file').click();
        ov.querySelector('#nl-file').onchange = e => {
            const file=e.target.files[0]; if(!file) return;
            const r=new FileReader();
            r.onload = ev => {
                try {
                    const p=JSON.parse(ev.target.result);
                    if(!p.data){ alert('❌ Неверный формат.'); return; }
                    const cnt=Object.values(p.data).reduce((s,a)=>s+a.length,0);
                    if(!confirm(`Импортировать ${cnt} шаблонов? Текущие данные будут заменены.`)) return;
                    TPLS=p.data; saveTemplates(); alert('✅ Импортировано!'); renderCards();
                } catch { alert('❌ Ошибка чтения JSON.'); }
            };
            r.readAsText(file);
        };
    }

    // ═══════════════════════════════════════════════════════════════
    //  РЕНДЕР КАРТОЧЕК
    // ═══════════════════════════════════════════════════════════════
    function renderCards(filter='') {
        const grid = document.querySelector('.nl-grid'); if(!grid) return;
        grid.innerHTML = '';
        let items = [];

        if (curTab==='recent') {
            const seen=new Set();
            for (const h of HIST) {
                if (seen.has(h.id)) continue; seen.add(h.id);
                let found=null;
                for (const arr of Object.values(TPLS)) { found=arr.find(t=>t.id===h.id); if(found) break; }
                if (found) items.push(found);
            }
        } else if (filter) {
            Object.values(TPLS).forEach(arr=>items.push(...arr));
            items=items.filter(t=>fuzz(filter,t.title)||fuzz(filter,t.content));
        } else {
            items=[...(TPLS[curTab]||[])];
        }

        items.sort((a,b)=>{
            if(a.isPinned!==b.isPinned) return b.isPinned?1:-1;
            if(a.isNew!==b.isNew)       return b.isNew?1:-1;
            if(curTab==='recent') return (b.uses||0)-(a.uses||0);
            return 0;
        });

        if (!items.length) {
            grid.innerHTML=`<div class="nl-empty"><div class="nl-empty-icon">${filter?'🔍':curTab==='recent'?'🕐':'📂'}</div>${filter?'Ничего не найдено':curTab==='recent'?'История пуста':'Раздел пуст'}</div>`;
            return;
        }

        items.forEach(tpl=>{
            const preview = tpl.content.replace(/\[.*?\]/g,'').replace(/<.*?>/g,'').substring(0,90);
            const full    = tpl.content.replace(/\[.*?\]/g,'').replace(/<.*?>/g,'');
            const pc = PREFIX_COLORS[tpl.prefix]||'#666';
            const pn = PREFIX_NAMES[tpl.prefix] ||'Без префикса';

            const c = document.createElement('div');
            c.className = `nl-card${tpl.isPinned?' pinned':''}${manageMode?' em':''}`;
            const titleDisplay = tpl.title.length > 35 ? tpl.title.substring(0, 35) + '…' : tpl.title;
            c.innerHTML = `
                ${tpl.isPinned ? '<div class="nl-pin-star">★</div>' : ''}
                <h3 title="${esc(tpl.title)}">${esc(titleDisplay)}${tpl.isNew?'<span class="nl-new">NEW</span>':''}</h3>
                <div class="nl-card-preview">${esc(preview)}…</div>
                <span class="nl-badge" style="background:${pc}12;color:${pc};border:1px solid ${pc}30">${pn}</span>
                ${tpl.uses?`<span class="nl-uses">×${tpl.uses}</span>`:''}
                <div class="nl-tooltip">${esc(full)}</div>
                <div class="nl-mo">
                    <button class="nl-ib" data-a="ed"  title="Редактировать">✎</button>
                    <button class="nl-ib" data-a="dup" title="Дублировать">⧉</button>
                    <button class="nl-ib" data-a="pin" title="${tpl.isPinned?'Открепить':'Закрепить'}">${tpl.isPinned?'★':'☆'}</button>
                    <button class="nl-ib del" data-a="del">🗑</button>
                </div>`;

            if (!manageMode) {
                c.onclick = () => insertTemplate(tpl);
            } else {
                c.querySelector('[data-a="ed"]').onclick  = e=>{e.stopPropagation();editDialog(tpl);};
                c.querySelector('[data-a="dup"]').onclick = e=>{
                    e.stopPropagation();
                    const cl={...deepClone(tpl),id:'u'+Date.now(),title:tpl.title+' (копия)',isNew:true,uses:0};
                    (TPLS[curTab]||TPLS.custom).push(cl); saveTemplates(); renderCards();
                };
                c.querySelector('[data-a="pin"]').onclick = e=>{e.stopPropagation();tpl.isPinned=!tpl.isPinned;saveTemplates();renderCards();};
                c.querySelector('[data-a="del"]').onclick = e=>{
                    e.stopPropagation();
                    if(!confirm(`Удалить "${tpl.title}"?`)) return;
                    for(const k of Object.keys(TPLS)) TPLS[k]=TPLS[k].filter(t=>t.id!==tpl.id);
                    saveTemplates(); renderCards();
                };
            }
            grid.appendChild(c);
        });
    }

    // ═══════════════════════════════════════════════════════════════
    //  ДИАЛОГ СОЗДАНИЯ / РЕДАКТИРОВАНИЯ
    // ═══════════════════════════════════════════════════════════════
    function createDialog() {
        if (!TPLS.custom) TPLS.custom=[];
        if (TPLS.custom.length>=MAX_CUSTOM){ alert(`Лимит: ${MAX_CUSTOM} кастомных шаблонов.`); return; }
        showEditDialog('Создать шаблон',{title:'',prefix:0,tags:'',content:''},v=>{
            if(!v.title||!v.content){ alert('Название и текст обязательны.'); return; }
            TPLS.custom.push({id:'u'+Date.now(),title:v.title,prefix:parseInt(v.prefix),tags:v.tags||'',content:v.content,isPinned:false,isNew:true,uses:0});
            curTab='custom';
            document.querySelectorAll('.nl-tab').forEach(t=>t.classList.toggle('active',t.dataset.tab==='custom'));
            saveTemplates(); renderCards();
        });
    }
    function editDialog(tpl) {
        showEditDialog('Редактировать шаблон',tpl,v=>{ tpl.title=v.title; tpl.prefix=parseInt(v.prefix); tpl.tags=v.tags||''; tpl.content=v.content; saveTemplates(); renderCards(); });
    }
    function showEditDialog(title, tpl, cb) {
        const ov=document.createElement('div'); ov.className='nl-dov';
        const phHtml=PH_HELP.map(([p,d])=>`<code>${p}</code> ${d}`).join(' &nbsp;·&nbsp; ');
        ov.innerHTML=`
            <div class="nl-dbox">
                <div class="nl-dt">${esc(title)}</div>
                <div class="nl-f"><label>Название</label><input class="nl-in" id="dd-t" value="${esc(tpl.title||'')}" placeholder="Например: Одобрено — скам"></div>
                <div class="nl-f"><label>Префикс</label><select class="nl-sel" id="dd-p">${Object.entries(PREFIX_NAMES).map(([i,n])=>`<option value="${i}" ${parseInt(i)===(tpl.prefix||0)?'selected':''}>${n}</option>`).join('')}</select></div>
                <div class="nl-f"><label>Теги (для поиска)</label><input class="nl-in" id="dd-tags" value="${esc(tpl.tags||'')}" placeholder="Например: скам, мошенничество, жалоба"></div>
                <div class="nl-f">
                    <label>Текст (BB-код + плейсхолдеры)</label>
                    <textarea class="nl-ta" id="dd-c" rows="8">${esc(tpl.content||'')}</textarea>
                    <div class="nl-ph-hint">${phHtml}</div>
                </div>
                <div class="nl-da">
                    <button class="nl-btn nl-bd" id="dd-x">Отмена</button>
                    <button class="nl-btn nl-bp" id="dd-s">Сохранить</button>
                </div>
            </div>`;
        document.body.appendChild(ov);
        ov.querySelector('#dd-x').onclick=()=>ov.remove();
        ov.querySelector('#dd-s').onclick=()=>{
            cb({title:ov.querySelector('#dd-t').value.trim(),prefix:ov.querySelector('#dd-p').value,tags:ov.querySelector('#dd-tags').value.trim(),content:ov.querySelector('#dd-c').value.trim()});
            ov.remove();
        };
        ov.querySelector('#dd-t').focus();
        ov.onclick=e=>{if(e.target===ov)ov.remove();};
    }

    // ═══════════════════════════════════════════════════════════════
    //  ВЫБОР ТЕМЫ
    // ═══════════════════════════════════════════════════════════════
    function openThemePicker() {
        const pk=document.createElement('div'); pk.className='nl-hov';
        pk.innerHTML=`
            <div class="nl-hbox">
                <div class="nl-htitle">🎨 Тема оформления</div>
                <div class="nl-hgrid">
                    ${Object.entries(THEMES).map(([k,hd])=>`
                        <div class="nl-hi ${curTheme===k?'active':''}" data-k="${k}" style="--th-a:${hd.accent}">
                            <div class="nl-hs" style="background:${hd.gradient}"></div>
                            <span class="nl-hn">${hd.name}</span>
                        </div>`).join('')}
                </div>
                <button class="nl-hclose">Закрыть</button>
            </div>`;
        document.body.appendChild(pk);
        pk.querySelectorAll('.nl-hi').forEach(i=>{
            i.onclick=()=>{ curTheme=i.dataset.k; localStorage.setItem(STORAGE.THEME,curTheme); pk.remove(); applyCSS(); closeMain(); setTimeout(openMain,50); };
        });
        pk.querySelector('.nl-hclose').onclick=()=>pk.remove();
    }

    // ═══════════════════════════════════════════════════════════════
    //  ИСТОРИЯ
    // ═══════════════════════════════════════════════════════════════
    function openHistory() {
        const ov=document.createElement('div'); ov.className='nl-dov';
        const rows = HIST.length===0
            ? '<div class="nl-empty"><div class="nl-empty-icon">🕐</div>История пуста</div>'
            : HIST.map(h=>{
                const pc=PREFIX_COLORS[h.prefix]||'#666';
                return `<div class="nl-hist-item" data-url="${esc(h.threadUrl)}">
                    <div class="nl-hist-dot" style="background:${pc}"></div>
                    <div class="nl-hist-body">
                        <div class="nl-hist-tpl">${esc(h.title)}</div>
                        <div class="nl-hist-thread">${esc(h.threadTitle)}</div>
                    </div>
                    <div class="nl-hist-time">${timeAgo(h.usedAt)}</div>
                </div>`;
            }).join('');
        ov.innerHTML=`
            <div class="nl-dbox" style="width:520px">
                <div style="display:flex;justify-content:space-between;align-items:center">
                    <div class="nl-dt">🕐 История использования</div>
                    ${HIST.length?'<button class="nl-btn nl-bd nl-btn-sm" id="hc">Очистить</button>':''}
                </div>
                <div style="display:flex;flex-direction:column;gap:6px">${rows}</div>
                <div class="nl-da"><button class="nl-btn nl-bp" id="hx" style="width:100%">Закрыть</button></div>
            </div>`;
        document.body.appendChild(ov);
        ov.querySelector('#hx').onclick=()=>ov.remove();
        const hcBtn=ov.querySelector('#hc');
        if(hcBtn) hcBtn.onclick=()=>{ if(!confirm('Очистить историю?')) return; HIST.length=0; saveHistory(); ov.remove(); };
        ov.querySelectorAll('.nl-hist-item').forEach(el=>{ el.onclick=()=>{ if(el.dataset.url) window.open(el.dataset.url,'_blank'); }; });
        ov.onclick=e=>{if(e.target===ov)ov.remove();};
    }

    // ═══════════════════════════════════════════════════════════════
    //  СТАТИСТИКА
    // ═══════════════════════════════════════════════════════════════
    function openStats() {
        const hd=theme();
        const ov=document.createElement('div'); ov.className='nl-dov';
        const byTab=Object.entries(STATS.byTab||{}).sort(([,a],[,b])=>b-a).slice(0,6);
        const maxT=byTab[0]?.[1]||1;
        const allTpls=Object.values(TPLS).flat().sort((a,b)=>(b.uses||0)-(a.uses||0)).slice(0,5);
        const days7=[]; for(let i=6;i>=0;i--){ const d=new Date();d.setDate(d.getDate()-i);const k=d.toISOString().slice(0,10);days7.push({label:d.toLocaleDateString('ru-RU',{day:'2-digit',month:'2-digit'}),count:STATS.byDay?.[k]||0}); }
        const max7=Math.max(...days7.map(d=>d.count),1);

        ov.innerHTML=`
            <div class="nl-dbox" style="width:500px">
                <div class="nl-dt" style="text-align:center">📊 Статистика</div>
                <div class="nl-stat-row"><span class="nl-stat-title">Всего использований</span><span class="nl-stat-val ok">${STATS.total||0}</span></div>
                <div class="nl-stat-section">📅 Активность за 7 дней</div>
                <div style="display:flex;gap:7px;align-items:flex-end;height:70px;padding:4px 0">
                    ${days7.map(d=>`
                        <div style="flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;height:100%">
                            <div style="flex:1;display:flex;align-items:flex-end;width:100%">
                                <div style="width:100%;height:${Math.max(4,Math.round(d.count/max7*100))}%;background:${hd.accent};opacity:.85"></div>
                            </div>
                            <div style="font-size:10px;color:${hd.text2};font-family:'Share Tech Mono',monospace">${d.label}</div>
                            ${d.count?`<div style="font-size:10px;color:${hd.accent};font-weight:700;font-family:'Share Tech Mono',monospace">${d.count}</div>`:''}
                        </div>`).join('')}
                </div>
                <div class="nl-stat-section">📂 По разделам</div>
                <div class="nl-stat-grid">
                    ${byTab.map(([id,cnt])=>{
                        const tab=TABS.find(t=>t.id===id);
                        return `<div class="nl-bar-wrap">
                            <div style="width:130px;font-size:12px;color:${hd.text2};font-family:'Rajdhani',sans-serif">${tab?.name||id}</div>
                            <div class="nl-bar"><div class="nl-bar-fill" style="width:${Math.round(cnt/maxT*100)}%;background:${hd.accent}"></div></div>
                            <div style="font-size:12px;color:${hd.text};font-weight:600;width:26px;text-align:right;font-family:'Share Tech Mono',monospace">${cnt}</div>
                        </div>`;
                    }).join('')||`<div style="font-size:12px;color:${hd.text2}">Нет данных</div>`}
                </div>
                <div class="nl-stat-section">🏆 Топ шаблонов</div>
                <div class="nl-stat-grid">
                    ${allTpls.map((t,i)=>`<div class="nl-stat-row"><span class="nl-stat-title">${i+1}. ${esc(t.title)}</span><span class="nl-stat-val" style="color:${hd.accent}">×${t.uses||0}</span></div>`).join('')||`<div class="nl-empty" style="padding:10px;font-size:13px">Нет данных</div>`}
                </div>
                <div class="nl-da" style="justify-content:space-between">
                    <button class="nl-btn nl-bd nl-btn-sm" id="sr">Сбросить</button>
                    <button class="nl-btn nl-bp" id="sx">Закрыть</button>
                </div>
            </div>`;
        document.body.appendChild(ov);
        ov.querySelector('#sx').onclick=()=>ov.remove();
        ov.querySelector('#sr').onclick=()=>{
            if(!confirm('Сбросить статистику?')) return;
            STATS={total:0,byPrefix:{},byTab:{},byDay:{}};
            Object.values(TPLS).flat().forEach(t=>t.uses=0);
            saveStats(); saveTemplates(); ov.remove();
        };
        ov.onclick=e=>{if(e.target===ov)ov.remove();};
    }

    // ═══════════════════════════════════════════════════════════════
    //  АНАЛИЗАТОР БИОГРАФИИ
    // ═══════════════════════════════════════════════════════════════
    function openBioAnalyzer() {
        const postEl = document.querySelector(SEL.firstPost);
        const autoText = postEl ? postEl.textContent.trim() : '';
        showBioWindow(autoText);
    }

    function analyzeBio(text) {
        const words = text.split(/[\s\n]+/).filter(w=>w.length>0);
        const terms = SETS.mgTerms || DEFAULT_MG_TERMS;
        const foundMg = [];
        terms.forEach(term => {
            const re = new RegExp('(?:^|[\\s,.:;!?"\'\\/\\\\(\\)\\[\\]])(' + term.replace(/[.*+?^${}()|[\]\\]/g,'\\$&') + ')(?=[\\s,.:;!?"\'\\/\\\\(\\)\\[\\]]|$)','gi');
            if (re.test(text)) foundMg.push(term);
        });
        const badCommas    = (text.match(/,[^\s\n0-9)]/g)||[]).length;
        const badSentences = (text.match(/[.!?]\s+[а-яёa-z]/g)||[]).length;
        const minWords     = SETS.minBioWords || 100;
        const wordsOk      = words.length >= minWords;
        const mgOk         = foundMg.length === 0;
        const puncIssues   = badCommas + badSentences;

        let verdict, vColor;
        if (!mgOk) { verdict='❌ Отказать — найдены MG-термины'; vColor='#ff4757'; }
        else if (!wordsOk) { verdict='⚠️ На доработку — текст слишком короткий'; vColor='#ffa502'; }
        else if (puncIssues > 5) { verdict='⚠️ На доработку — много пунктуационных ошибок'; vColor='#ffa502'; }
        else { verdict='✅ Можно одобрить'; vColor='#2ed573'; }

        return { words: words.length, minWords, mg: [...new Set(foundMg)], commas: badCommas, sentences: badSentences, verdict, vColor };
    }

    function showBioWindow(initialText) {
        if (document.querySelector('.nl-bio-ov')) return;
        const hd = theme();
        const ov = document.createElement('div');
        ov.className = 'nl-dov nl-bio-ov';
        ov.innerHTML = `
            <div class="nl-dbox" style="width:620px">
                <div class="nl-dt" style="text-align:center">📋 Анализатор РП Биографии</div>
                <div class="nl-dtabs">
                    <button class="nl-dtab active" data-panel="auto">🔍 Со страницы</button>
                    <button class="nl-dtab" data-panel="manual">✏️ Вставить вручную</button>
                </div>
                <div class="nl-dpanel active" id="bio-panel-auto">
                    ${initialText
                        ? `<div style="font-size:12px;color:${hd.text2};background:${hd.bg3};border:1px solid ${hd.border};padding:12px 14px;max-height:130px;overflow-y:auto;line-height:1.55;font-family:'Rajdhani',sans-serif">${esc(initialText.substring(0,600))}${initialText.length>600?'…':''}</div>`
                        : `<div style="text-align:center;padding:20px;color:#ff4757;font-size:13px;font-family:'Rajdhani',sans-serif">❌ Текст первого поста не найден на этой странице.</div>`
                    }
                </div>
                <div class="nl-dpanel" id="bio-panel-manual">
                    <textarea class="nl-ta" id="bio-manual-text" placeholder="Вставьте текст биографии сюда..." rows="8">${esc(initialText)}</textarea>
                </div>
                <div id="bio-result" style="display:none;flex-direction:column;gap:10px"></div>
                <div class="nl-da" style="justify-content:space-between;align-items:center">
                    <div id="bio-analyze-wrap" style="display:flex;gap:8px">
                        <button class="nl-btn nl-bp" id="bio-analyze">🔍 Анализировать</button>
                        <button class="nl-btn nl-bn" id="bio-clear-res" style="display:none">↺ Сброс</button>
                    </div>
                    <button class="nl-btn nl-bn" id="bio-close">Закрыть</button>
                </div>
            </div>`;
        document.body.appendChild(ov);

        let curPanel = 'auto';
        ov.querySelectorAll('.nl-dtab').forEach(tab => {
            tab.onclick = () => {
                curPanel = tab.dataset.panel;
                ov.querySelectorAll('.nl-dtab').forEach(t=>t.classList.remove('active'));
                ov.querySelectorAll('.nl-dpanel').forEach(p=>p.classList.remove('active'));
                tab.classList.add('active');
                ov.querySelector(`#bio-panel-${curPanel}`).classList.add('active');
                ov.querySelector('#bio-result').style.display='none';
                ov.querySelector('#bio-result').innerHTML='';
                ov.querySelector('#bio-clear-res').style.display='none';
            };
        });

        ov.querySelector('#bio-analyze').onclick = () => {
            const text = curPanel==='auto' ? initialText : ov.querySelector('#bio-manual-text').value.trim();
            if (!text) { alert('Нет текста для анализа.'); return; }
            const res = analyzeBio(text);
            const resEl = ov.querySelector('#bio-result');
            resEl.innerHTML = `
                <div class="nl-verdict" style="background:${res.vColor}18;border:1px solid ${res.vColor}44;color:${res.vColor}">${esc(res.verdict)}</div>
                <div class="nl-stat-grid">
                    <div class="nl-stat-row">
                        <span class="nl-stat-title">Количество слов</span>
                        <span class="nl-stat-val ${res.words>=res.minWords?'ok':'warn'}">${res.words} / ${res.minWords}</span>
                    </div>
                    <div class="nl-stat-row" style="flex-direction:column;align-items:flex-start">
                        <div style="display:flex;justify-content:space-between;width:100%">
                            <span class="nl-stat-title">MG-термины (метагейминг)</span>
                            <span class="nl-stat-val ${res.mg.length===0?'ok':'err'}">${res.mg.length}</span>
                        </div>
                        <div class="nl-stat-details">${res.mg.length>0?'Найдены: <b>'+esc(res.mg.join(', '))+'</b>':'✓ Нарушений не обнаружено'}</div>
                    </div>
                    <div class="nl-stat-row" style="flex-direction:column;align-items:flex-start">
                        <div style="display:flex;justify-content:space-between;width:100%">
                            <span class="nl-stat-title">Пунктуация</span>
                            <span class="nl-stat-val ${(res.commas+res.sentences)===0?'ok':'warn'}">${res.commas+res.sentences} ошибок</span>
                        </div>
                        <div class="nl-stat-details">Запятых без пробела: <b>${res.commas}</b> &nbsp;│&nbsp; Предложений с маленькой буквы: <b>${res.sentences}</b></div>
                    </div>
                </div>`;
            resEl.style.display='flex';
            ov.querySelector('#bio-clear-res').style.display='inline-block';
        };

        ov.querySelector('#bio-clear-res').onclick = () => {
            ov.querySelector('#bio-result').style.display='none';
            ov.querySelector('#bio-result').innerHTML='';
            ov.querySelector('#bio-clear-res').style.display='none';
        };
        ov.querySelector('#bio-close').onclick = () => ov.remove();
        ov.onclick = e => { if (e.target===ov) ov.remove(); };
    }

    // ═══════════════════════════════════════════════════════════════
    //  НАСТРОЙКИ
    // ═══════════════════════════════════════════════════════════════
    function openSettings() {
        const ov=document.createElement('div'); ov.className='nl-dov';
        const renderTags=()=>(SETS.mgTerms||[]).map((w,i)=>`<div class="nl-tag">${esc(w)}<button data-i="${i}">×</button></div>`).join('');
        ov.innerHTML=`
            <div class="nl-dbox" style="width:520px">
                <div class="nl-dt">⚙️ Настройки</div>
                <div class="nl-stat-section">🎮 Общие</div>
                <div style="display:flex;flex-direction:column;gap:8px">
                    <div class="nl-set-row">
                        <div><div class="nl-set-label">Горячие клавиши</div><div class="nl-set-desc">Alt+H — окно, Alt+B — биография, Alt+1-9 — вкладки, Esc — закрыть</div></div>
                        <label class="nl-cl2"><input type="checkbox" id="s-hk" ${SETS.hotkeys?'checked':''}></label>
                    </div>
                </div>
                <div class="nl-stat-section">📋 Анализатор биографий</div>
                <div style="display:flex;flex-direction:column;gap:8px">
                    <div class="nl-set-row">
                        <div class="nl-set-label">Мин. слов в биографии</div>
                        <input type="number" class="nl-sin" id="s-min" value="${SETS.minBioWords||200}" min="10" max="2000" style="width:80px">
                    </div>
                    <div class="nl-f">
                        <label>MG-термины (стоп-слова)</label>
                        <div style="display:flex;gap:7px"><input class="nl-in" id="s-mg-new" placeholder="Добавить термин…" style="flex:1"><button class="nl-btn nl-bp nl-btn-sm" id="s-mg-add">+</button></div>
                        <div class="nl-tag-list" id="s-mg-list">${renderTags()}</div>
                    </div>
                </div>
                <div class="nl-da" style="justify-content:space-between">
                    <button class="nl-btn nl-bd nl-btn-sm" id="s-reset">Сброс шаблонов</button>
                    <div style="display:flex;gap:8px">
                        <button class="nl-btn nl-bn" id="s-cancel">Отмена</button>
                        <button class="nl-btn nl-bp" id="s-save">Сохранить</button>
                    </div>
                </div>
            </div>`;
        document.body.appendChild(ov);
        const origSets = JSON.stringify(SETS);
        ov.querySelector('#s-hk').onchange=e=>SETS.hotkeys=e.target.checked;
        ov.querySelector('#s-min').oninput=e=>SETS.minBioWords=parseInt(e.target.value)||100;
        const list=ov.querySelector('#s-mg-list');
        const bindTags=()=>{
            list.querySelectorAll('button[data-i]').forEach(btn=>{
                btn.onclick=()=>{ SETS.mgTerms.splice(parseInt(btn.dataset.i),1); list.innerHTML=renderTags(); bindTags(); };
            });
        };
        bindTags();
        const addMg=()=>{
            const inp=ov.querySelector('#s-mg-new'); const val=inp.value.trim().toLowerCase();
            if(!val||SETS.mgTerms.includes(val)){inp.value='';return;}
            SETS.mgTerms.push(val); list.innerHTML=renderTags(); bindTags(); inp.value='';
        };
        ov.querySelector('#s-mg-add').onclick=addMg;
        ov.querySelector('#s-mg-new').onkeydown=e=>{if(e.key==='Enter')addMg();};
        ov.querySelector('#s-save').onclick=()=>{ saveSettings(); ov.remove(); };
        ov.querySelector('#s-cancel').onclick=()=>{ SETS=JSON.parse(origSets); ov.remove(); };
        ov.querySelector('#s-reset').onclick=()=>{
            if(!confirm('Сбросить ВСЕ шаблоны к заводским? Это необратимо.')) return;
            TPLS=deepClone(DEFAULT_TEMPLATES); saveTemplates(); alert('✅ Шаблоны сброшены.'); ov.remove(); renderCards();
        };
        ov.onclick=e=>{if(e.target===ov)ov.remove();};
    }

    // ═══════════════════════════════════════════════════════════════
    //  КНОПКИ НА ФОРУМЕ
    // ═══════════════════════════════════════════════════════════════
    function showNotification(message, type='success') {
        const n=document.createElement('div'); n.className='nl-notif';
        n.style.cssText=`background:${type==='error'?'rgba(220,60,60,0.92)':theme().accent};color:${type==='error'?'#fff':'#000'};border:1px solid ${type==='error'?'#cc3333':theme().accent};`;
        n.textContent=message; document.body.appendChild(n);
        setTimeout(()=>n.remove(),2200);
    }

    function injectButtons() {
        if (document.getElementById('nl-btn')) return;
        if (!document.body) { setTimeout(injectButtons,100); return; }

        const hd = theme();
        const mkBtn = (id,txt,fn) => {
            const b=document.createElement('button');
            b.id=id; b.type='button'; b.className='nl-btn-main';
            b.textContent=txt;
            b.addEventListener('click',e=>{e.stopPropagation();e.preventDefault();fn();});
            return b;
        };

        const replyBtn = findReplyBtn();
        if (replyBtn && replyBtn.parentNode) {
            const wrap=document.createElement('div');
            wrap.id='nl-inline-wrap';
            wrap.style.cssText='display:inline-flex;align-items:center;vertical-align:middle;gap:6px;margin:0 0 0 8px;';
            wrap.appendChild(mkBtn('nl-btn',       '⬡ NL HELPER',   openMain));
            wrap.appendChild(mkBtn('nl-bio-btn',   '📋 АНАЛИЗ БИО', openBioAnalyzer));
            wrap.appendChild(mkBtn('nl-stats-btn', '📊 СТАТИСТИКА',  openStats));
            replyBtn.insertAdjacentElement('afterend', wrap);
        } else {
            const panel=document.createElement('div');
            panel.id='nl-float-panel';
            panel.setAttribute('style','position:fixed;bottom:20px;right:20px;z-index:2147483647;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:auto;');
            const bStyle=[
                `background:${hd.bg2}`,`color:${hd.accent}`,
                `border:1px solid ${hd.accent}`,
                'clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px))',
                'padding:9px 18px','font-family:Rajdhani,sans-serif',
                'font-size:11px','font-weight:700','letter-spacing:1px',
                'text-transform:uppercase','cursor:pointer','width:165px',
                'text-align:center',`box-shadow:0 0 12px ${hd.accent}40`,
                'transition:all .2s','display:block',
            ].join(';');
            [
                ['nl-btn','⬡ NL HELPER',openMain],
                ['nl-bio-btn','📋 АНАЛИЗ БИО',openBioAnalyzer],
                ['nl-stats-btn','📊 СТАТИСТИКА',openStats],
            ].forEach(([id,txt,fn])=>{
                const b=mkBtn(id,txt,fn);
                b.removeAttribute('class');
                b.setAttribute('style',bStyle);
                b.addEventListener('mouseenter',()=>{b.style.background=hd.accent;b.style.color='#000';});
                b.addEventListener('mouseleave',()=>{b.style.background=hd.bg2;b.style.color=hd.accent;});
                panel.appendChild(b);
            });
            document.body.appendChild(panel);
        }
    }

    function tryInlineInsert() {
        if (document.getElementById('nl-btn')) return;
        const replyBtn=findReplyBtn();
        if (!replyBtn||!replyBtn.parentNode) return;
        const floatPanel=document.getElementById('nl-float-panel');
        if (floatPanel) floatPanel.remove();
        injectButtons();
    }

    // ═══════════════════════════════════════════════════════════════
    //  ИНИЦИАЛИЗАЦИЯ
    // ═══════════════════════════════════════════════════════════════
    function init() {
        applyCSS();
        initHotkeys();
        checkFlood();
        injectButtons();

        const ob=new MutationObserver(()=>tryInlineInsert());
        ob.observe(document.body,{childList:true,subtree:true});
        setTimeout(()=>ob.disconnect(),15000);

        if (typeof GM_registerMenuCommand !== 'undefined') {
            GM_registerMenuCommand('NL Helper: Открыть',          openMain);
            GM_registerMenuCommand('NL Helper: Анализ биографии', openBioAnalyzer);
            GM_registerMenuCommand('NL Helper: Статистика',       openStats);
            GM_registerMenuCommand('NL Helper: Сброс шаблонов', ()=>{
                if (confirm('Сбросить шаблоны?')) { TPLS=deepClone(DEFAULT_TEMPLATES); saveTemplates(); location.reload(); }
            });
        }

        console.log('%c[NL Helper 5.0] ✅ Инициализирован', 'color:#ff6b2b;font-weight:bold');
    }

    if (document.readyState==='loading') {
        document.addEventListener('DOMContentLoaded',init);
    } else {
        init();
    }

})();