/* MIL GRAU RP — Data, Icons, Helpers */

const PRODUCTS = [
  // ===== VIPs =====
  { id: 'vip-bronze', name: 'VIP Bronze', cat: 'VIPs', catSlug: 'vips',
    price: 39.90, oldPrice: null, stock: '500+',
    color: '#78350f', accent: '#d97706', icon: 'pass-1', tier: 1,
    desc: 'O primeiro nível de VIP. Acesso prioritário e benefícios essenciais para começar com tudo.',
    features: ['Fila prioritária no servidor', '1 slot reservado', 'Tag VIP no Discord', 'Suporte agilizado', 'Skin inicial exclusiva'] },
  { id: 'vip-prata', name: 'VIP Prata', cat: 'VIPs', catSlug: 'vips',
    price: 59.90, oldPrice: null, stock: '300+', popular: true,
    color: '#374151', accent: '#9CA3AF', icon: 'pass-2', tier: 2,
    desc: 'Mais slots, mais vantagens. O VIP que paga sozinho com os benefícios in-game.',
    features: ['Tudo do Bronze', '2 slots reservados', 'Skin exclusiva mensal', 'Cargo Prata no Discord', 'Acesso a sorteios VIP'] },
  { id: 'vip-ouro', name: 'VIP Ouro', cat: 'VIPs', catSlug: 'vips',
    price: 89.90, oldPrice: null, stock: '200+', popular: true,
    color: '#92400e', accent: '#D4AF37', icon: 'pass-3', tier: 3,
    desc: 'O VIP que separa quem joga de quem joga sério. Status reconhecido na cidade inteira.',
    features: ['Tudo do Prata', '3 slots reservados', '2 skins exclusivas/mês', 'Veículo VIP exclusivo', 'Cargo Ouro no Discord'] },
  { id: 'vip-diamante', name: 'VIP Diamante', cat: 'VIPs', catSlug: 'vips',
    price: 149.90, oldPrice: null, stock: '100+', bestseller: true,
    color: '#0c4a6e', accent: '#06b6d4', icon: 'diamond', tier: 3,
    desc: 'O topo da pirâmide. Para quem vive a cidade 24/7 e quer cada vantagem possível.',
    features: ['Tudo do Ouro', '5 slots reservados', 'Acesso a eventos VIP', 'Suporte prioritário absoluto', 'Roupas lendárias'] },
  { id: 'vip-milgrau', name: 'VIP MIL GRAU', cat: 'VIPs', catSlug: 'vips',
    price: 249.90, oldPrice: 297.90, discount: 16, stock: '50+', bestseller: true,
    color: '#7c3a00', accent: '#FF7A00', icon: 'crown', tier: 3,
    desc: 'O VIP mais exclusivo da cidade. Selo dourado, frota lendária e acesso ao topo.',
    features: ['Tudo do Diamante', '8 slots reservados', 'Selo MIL GRAU permanente', 'Acesso a eventos privados', 'Veículo MIL GRAU exclusivo', 'Suporte dedicado'] },

  // ===== MANSÃO =====
  { id: 'mansao-pequena', name: 'Mansão Studio', cat: 'MANSÃO', catSlug: 'mansao',
    price: 197.90, oldPrice: null, stock: '40+',
    color: '#1f2937', accent: '#9ca3af', icon: 'shield',
    desc: 'Sua primeira mansão na cidade. Estilo studio com toques exclusivos e localização privilegiada.',
    features: ['Mansão studio personalizada', 'Garagem para 2 veículos', 'Localização exclusiva', 'Decoração customizável'] },
  { id: 'mansao-media', name: 'Mansão Média', cat: 'MANSÃO', catSlug: 'mansao',
    price: 397.90, oldPrice: 497.90, discount: 20, stock: '20+', popular: true,
    color: '#0c4a6e', accent: '#06b6d4', icon: 'shield',
    desc: 'O upgrade certo. Mais espaço, garagem maior e o conforto que você merece.',
    features: ['Mansão de 2 andares', 'Garagem para 4 veículos', 'Piscina e área gourmet', 'Sistema de segurança', 'Skin de mansão exclusiva'] },
  { id: 'mansao-luxo', name: 'Mansão de Luxo', cat: 'MANSÃO', catSlug: 'mansao',
    price: 697.90, oldPrice: 897.90, discount: 22, stock: '10', bestseller: true,
    color: '#92400e', accent: '#D4AF37', icon: 'crown',
    desc: 'A mansão dos sonhos. Helipad, piscina infinita e a vista mais privilegiada da cidade.',
    features: ['Mansão de 3 andares', 'Garagem para 8 veículos', 'Helipad privativo', 'Piscina infinita', 'Sistema de TVs e som premium', 'Decoração de luxo'] },
  { id: 'mansao-milgrau', name: 'Mansão MIL GRAU', cat: 'MANSÃO', catSlug: 'mansao',
    price: 1497.90, oldPrice: null, stock: '3', bestseller: true,
    color: '#7c3a00', accent: '#FF7A00', icon: 'diamond',
    desc: 'A mansão mais exclusiva da cidade. Edição limitada com tudo que dinheiro pode comprar.',
    features: ['Mansão exclusiva MIL GRAU', 'Garagem para 15 veículos', 'Pista privativa de grau', 'Helipad e barco', 'Skin única na cidade', 'Selo dourado permanente'] },

  // ===== DINHEIRO =====
  { id: 'cartao-50k', name: 'Cartão 50k', cat: 'DINHEIRO', catSlug: 'dinheiro',
    price: 27.90, oldPrice: null, stock: '999+',
    color: '#064e3b', accent: '#00C896', icon: 'money',
    desc: 'R$ 50.000 entregues direto no seu cartão da cidade. O empurrãozinho inicial.',
    features: ['R$ 50.000 in-game', 'Entrega imediata', 'Crédito direto no cartão', 'Sem taxa adicional'] },
  { id: 'cartao-100k', name: 'Cartão 100k', cat: 'DINHEIRO', catSlug: 'dinheiro',
    price: 47.90, oldPrice: null, stock: '999+', popular: true,
    color: '#064e3b', accent: '#00C896', icon: 'money',
    desc: 'R$ 100.000 entregues direto no seu cartão da cidade. Comece com força total.',
    features: ['R$ 100.000 in-game', 'Entrega imediata', 'Crédito direto no cartão', 'Sem taxa adicional'] },
  { id: 'cartao-250k', name: 'Cartão 250k', cat: 'DINHEIRO', catSlug: 'dinheiro',
    price: 109.90, oldPrice: 119.90, discount: 8, stock: '500+', popular: true,
    color: '#064e3b', accent: '#00C896', icon: 'money',
    desc: 'R$ 250.000 para começar com tudo. Compre seu primeiro carro e ainda sobra dinheiro.',
    features: ['R$ 250.000 in-game', 'Entrega imediata', 'Crédito direto no cartão', 'Sem taxa adicional'] },
  { id: 'cartao-500k', name: 'Cartão 500k', cat: 'DINHEIRO', catSlug: 'dinheiro',
    price: 199.90, oldPrice: 247.90, discount: 19, stock: '300+', bestseller: true,
    color: '#064e3b', accent: '#00C896', icon: 'money',
    desc: 'R$ 500.000 in-game. Para quem chega na cidade e já quer comprar uma mansão.',
    features: ['R$ 500.000 in-game', 'Entrega imediata', 'Crédito direto no cartão', 'Sem taxa adicional'] },
  { id: 'cartao-1m', name: 'Cartão 1 Milhão', cat: 'DINHEIRO', catSlug: 'dinheiro',
    price: 379.90, oldPrice: 499.90, discount: 24, stock: '120+', bestseller: true,
    color: '#064e3b', accent: '#00C896', icon: 'money',
    desc: 'R$ 1.000.000 in-game. Você é a elite. A cidade trabalha pra você agora.',
    features: ['R$ 1.000.000 in-game', 'Entrega imediata', 'Crédito direto no cartão', 'Sem taxa adicional', 'Selo de milionário no Discord'] },

  // ===== CARROS VIP =====
  { id: 'carro-tunado', name: 'Carro Tunado VIP', cat: 'CARROS VIP', catSlug: 'carros-vip',
    price: 149.90, oldPrice: null, stock: '80+',
    color: '#7c3a00', accent: '#FF8F1F', icon: 'car', tier: 1,
    desc: 'Seu primeiro carro VIP exclusivo. Modelo tunado com performance e visual exclusivo da cidade.',
    features: ['Carro tunado exclusivo', 'Performance turbinada', 'Skin personalizada', 'Som veicular incluso'] },
  { id: 'carro-esportivo', name: 'Esportivo VIP', cat: 'CARROS VIP', catSlug: 'carros-vip',
    price: 297.90, oldPrice: 397.90, discount: 25, stock: '40+', popular: true,
    color: '#1e3a8a', accent: '#3b82f6', icon: 'car', tier: 2,
    desc: 'Esportivo de alta performance. Velocidade, design agressivo e atenção em todo lugar que você passa.',
    features: ['Esportivo de elite', 'Top speed máximo', 'Skin exclusiva', 'Som premium', 'Placa personalizada'] },
  { id: 'carro-superesportivo', name: 'Superesportivo VIP', cat: 'CARROS VIP', catSlug: 'carros-vip',
    price: 497.90, oldPrice: 697.90, discount: 28, stock: '20+', bestseller: true,
    color: '#92400e', accent: '#D4AF37', icon: 'car', tier: 3,
    desc: 'Superesportivo dos sonhos. Performance brutal e visual de tirar o fôlego.',
    features: ['Superesportivo lendário', 'Performance brutal', 'Skin exclusiva única', 'Som premium veicular', 'Placa personalizada', 'Helicóptero de cortesia'] },
  { id: 'carro-milgrau', name: 'Carro MIL GRAU', cat: 'CARROS VIP', catSlug: 'carros-vip',
    price: 897.90, oldPrice: null, stock: '8', bestseller: true,
    color: '#7c3a00', accent: '#FF7A00', icon: 'car', tier: 3,
    desc: 'O carro mais exclusivo da cidade. Skin MIL GRAU única que ninguém mais tem.',
    features: ['Carro MIL GRAU exclusivo', 'Skin única na cidade', 'Performance máxima', 'Som premium completo', 'Placa MIL GRAU', 'Selo dourado no veículo'] },

  // ===== MOTOS VIP =====
  { id: 'moto-grau', name: 'Moto do Grau', cat: 'MOTOS VIP', catSlug: 'motos-vip',
    price: 119.90, oldPrice: null, stock: '200+', popular: true,
    color: '#7c3a00', accent: '#FF7A00', icon: 'pass-2', tier: 1,
    desc: 'A moto perfeita pra quem vive de grau. Estabilidade no manete e visual de campeão.',
    features: ['Moto exclusiva pro grau', 'Estabilidade aprimorada', 'Skin personalizada', 'Som de escape único'] },
  { id: 'moto-esportiva', name: 'Esportiva VIP', cat: 'MOTOS VIP', catSlug: 'motos-vip',
    price: 197.90, oldPrice: 247.90, discount: 20, stock: '100+', popular: true,
    color: '#1e3a8a', accent: '#3b82f6', icon: 'pass-2', tier: 2,
    desc: 'Esportiva top de linha. A moto que voa na pista e domina o asfalto.',
    features: ['Esportiva top de linha', 'Top speed liberado', 'Skin exclusiva', 'Som de escape premium', 'Customização visual'] },
  { id: 'moto-supersport', name: 'Supersport VIP', cat: 'MOTOS VIP', catSlug: 'motos-vip',
    price: 347.90, oldPrice: 447.90, discount: 22, stock: '50+', bestseller: true,
    color: '#92400e', accent: '#D4AF37', icon: 'pass-3', tier: 3,
    desc: 'A supersport definitiva. Performance de pista e visual brutal pra quem quer chamar atenção.',
    features: ['Supersport lendária', 'Performance brutal', 'Skin única', 'Som premium', 'Placa personalizada'] },
  { id: 'moto-milgrau', name: 'Moto MIL GRAU', cat: 'MOTOS VIP', catSlug: 'motos-vip',
    price: 597.90, oldPrice: null, stock: '12', bestseller: true,
    color: '#7c3a00', accent: '#FF7A00', icon: 'pass-3', tier: 3,
    desc: 'A moto exclusiva da MIL GRAU. Edição limitada pra quem é o rei do grau na cidade.',
    features: ['Moto MIL GRAU exclusiva', 'Skin única na cidade', 'Performance máxima', 'Estabilidade pro grau', 'Som de escape MIL GRAU', 'Selo dourado'] },

  // ===== OUTROS =====
  { id: 'caixa-de-som', name: 'Caixa de Som', cat: 'OUTROS', catSlug: 'outros',
    price: 79.90, oldPrice: null, stock: '300+',
    color: '#365314', accent: '#84cc16', icon: 'boombox',
    desc: 'Caixa de som portátil pra animar qualquer rolê na cidade.',
    features: ['Caixa de som portátil', 'Volume customizável', 'Playlist personalizada', 'Bluetooth in-game'] },
  { id: 'sistema-tvs', name: 'Sistema de TVs', cat: 'OUTROS', catSlug: 'outros',
    price: 197.90, oldPrice: 267.90, discount: 26, stock: '120+', popular: true,
    color: '#1e3a8a', accent: '#3b82f6', icon: 'tv',
    desc: 'Pacote completo de TVs para sua casa, empresa ou estabelecimento.',
    features: ['5 TVs personalizáveis', 'Suporte de parede incluso', 'Customização de canais', 'Instalação assistida'] },
  { id: 'sistema-som', name: 'Sistema de Som', cat: 'OUTROS', catSlug: 'outros',
    price: 131.90, oldPrice: null, stock: '200+',
    color: '#581c87', accent: '#a855f7', icon: 'speaker',
    desc: 'Som de qualidade premium para qualquer ambiente.',
    features: ['Caixas de som premium', 'Volume customizável', 'Playlist personalizada'] },
  { id: 'sistema-veicular', name: 'Sistema Veicular', cat: 'OUTROS', catSlug: 'outros',
    price: 69.90, oldPrice: null, stock: '500+',
    color: '#7c3a00', accent: '#FF8F1F', icon: 'car',
    desc: 'Upgrade completo de som e visual para o seu veículo.',
    features: ['Customização de placa', 'Som premium veicular', 'Tunagem visual', 'Skin de roda exclusiva'] },
  { id: 'armario-pessoal', name: 'Armário Pessoal', cat: 'OUTROS', catSlug: 'outros',
    price: 89.90, oldPrice: null, stock: '400+',
    color: '#1f2937', accent: '#9ca3af', icon: 'box',
    desc: 'Acesso a um armário privado pra guardar tudo que importa na cidade.',
    features: ['Armário 100 slots', 'Acesso 24/7', 'Localização secreta', 'Câmera de segurança'] },

  // ===== UPGRADES =====
  { id: 'up-bronze-prata', name: 'Upgrade Bronze → Prata', cat: 'UPGRADES', catSlug: 'upgrades',
    price: 24.90, oldPrice: null, stock: '999+',
    color: '#374151', accent: '#9CA3AF', icon: 'pass-2',
    desc: 'Já tem o VIP Bronze? Pague só a diferença e suba pra Prata na hora.',
    features: ['Acesso imediato ao Prata', 'Pagamento da diferença', 'Sem perder benefícios', 'Migração automática'] },
  { id: 'up-prata-ouro', name: 'Upgrade Prata → Ouro', cat: 'UPGRADES', catSlug: 'upgrades',
    price: 34.90, oldPrice: null, stock: '999+', popular: true,
    color: '#92400e', accent: '#D4AF37', icon: 'pass-3',
    desc: 'Tá no Prata? Hora de subir pro Ouro. Pague só a diferença e desbloqueie tudo.',
    features: ['Acesso imediato ao Ouro', 'Pagamento da diferença', 'Sem perder benefícios', 'Migração automática'] },
  { id: 'up-ouro-diamante', name: 'Upgrade Ouro → Diamante', cat: 'UPGRADES', catSlug: 'upgrades',
    price: 64.90, oldPrice: null, stock: '500+', popular: true,
    color: '#0c4a6e', accent: '#06b6d4', icon: 'diamond',
    desc: 'Top de linha. Saia do Ouro e vá direto pro Diamante pagando só a diferença.',
    features: ['Acesso imediato ao Diamante', 'Pagamento da diferença', 'Sem perder benefícios', 'Migração automática'] },
  { id: 'up-diamante-milgrau', name: 'Upgrade Diamante → MIL GRAU', cat: 'UPGRADES', catSlug: 'upgrades',
    price: 109.90, oldPrice: null, stock: '200+', bestseller: true,
    color: '#7c3a00', accent: '#FF7A00', icon: 'crown',
    desc: 'O upgrade definitivo. Vire MIL GRAU pagando só a diferença do que já tem.',
    features: ['Acesso imediato ao MIL GRAU', 'Pagamento da diferença', 'Selo MIL GRAU permanente', 'Migração automática'] },
];

const CATEGORIES = [
  { slug: 'vips', label: 'VIPs', emoji: '👑' },
  { slug: 'mansao', label: 'MANSÃO', emoji: '🏠' },
  { slug: 'dinheiro', label: 'DINHEIRO', emoji: '💰' },
  { slug: 'carros-vip', label: 'CARROS VIP', emoji: '🚘' },
  { slug: 'motos-vip', label: 'MOTOS VIP', emoji: '🏍️' },
  { slug: 'outros', label: 'OUTROS', emoji: '🔗' },
  { slug: 'upgrades', label: 'UPGRADES', emoji: '🔝' },
];

const CAT_DESC = {
  'vips': 'Status, prioridade e benefícios completos no servidor.',
  'mansao': 'Mansões exclusivas para quem mora no topo da cidade.',
  'dinheiro': 'Cartões com saldo direto na sua conta da cidade.',
  'carros-vip': 'A frota dos sonhos. Carros exclusivos de quem manda no asfalto.',
  'motos-vip': 'O grau é vida. Motos exclusivas só do MIL GRAU.',
  'outros': 'Itens diversos para personalizar sua experiência.',
  'upgrades': 'Já tem VIP? Faça o upgrade pagando só a diferença.',
};

const fmtBRL = (n) => 'R$ ' + n.toFixed(2).replace('.', ',').replace(/\B(?=(\d{3})+(?!\d))/g, '.');

// ===== TERMS & CONDITIONS =====
const TERMS = [
  {
    title: '1. Objeto',
    items: [
      '<b>1.1.</b> Os serviços abrangidos por estes Termos consistem na venda de benefícios virtuais para uso no servidor MIL GRAU Roleplay, tais como vantagens de jogo (VIPs), itens virtuais, moedas do jogo, assinaturas e outros produtos/serviços digitais disponibilizados na nossa loja online.',
      '<b>1.2.</b> O Usuário é inteiramente responsável pela veracidade e exatidão dos dados pessoais fornecidos no momento da compra. Informações incorretas ou incompletas podem resultar em atraso ou impossibilidade na entrega dos benefícios.',
      '<b>1.3.</b> Ao efetuar compras em nossa loja virtual, o Usuário adquire direitos de uso sobre os benefícios virtuais escolhidos, mediante o pagamento do valor correspondente e <b>aceitação integral destes Termos</b>. A conclusão da compra e confirmação do pagamento formalizam o contrato de fornecimento do conteúdo digital adquirido.',
      '<b>1.4. Entrega dos benefícios:</b> a disponibilização dos itens virtuais comprados é <b>automática e imediata</b> logo após a confirmação do pagamento. Em alguns casos específicos (como itens ou serviços que exijam configuração manual), a entrega poderá ser realizada diretamente pela equipe do servidor em um prazo acordado. O Usuário será informado se for necessário aguardar pela liberação manual de algum produto.',
      '<b>1.5. Validade dos benefícios:</b> cada benefício virtual possui uma validade definida. Itens temporários (como VIP mensal) expiram na data de vencimento informada no ato da compra. Benefícios marcados como "permanentes" vigoram até o próximo wipe total do servidor (reinício de temporada). <b>Em caso de wipe ou reinício/encerramento do servidor, todos os itens e vantagens – inclusive as permanentes – serão perdidos, sem direito a qualquer reembolso ou compensação</b>, pois essa condição é inerente à natureza do serviço (reset periódico do jogo).',
      '<b>1.6. Ajustes de balanceamento:</b> o desempenho, atributos ou características dos itens e vantagens adquiridos (por exemplo, veículos, armas, habilidades etc.) <b>poderão ser ajustados periodicamente pela equipe do servidor, sem aviso prévio</b>, visando manter o equilíbrio, a jogabilidade justa e o bom funcionamento do ambiente virtual. Tais ajustes são parte da dinâmica de manutenção do servidor e não garantem ao Usuário direito a reembolso ou troca de itens.',
      '<b>1.7. Natureza dos produtos virtuais:</b> o Usuário entende e concorda que <b>todos os produtos/benefícios adquiridos são bens intangíveis, de uso exclusivo dentro do jogo, sem qualquer valor monetário no mundo real</b>. Esses itens virtuais não podem ser convertidos em dinheiro "de volta" ao Usuário, nem transferidos para outros serviços ou servidores externos.',
    ]
  },
  {
    title: '2. Modificações dos Termos',
    items: [
      '<b>2.1.</b> A MIL GRAU Roleplay reserva-se o direito de <b>alterar estes Termos a qualquer tempo</b>, seja por motivos de adequação legal (incluindo atualizações em legislações como o Código de Defesa do Consumidor ou a Lei Geral de Proteção de Dados) ou para melhoria dos serviços e regras da plataforma. As alterações entrarão em vigor imediatamente após sua publicação na plataforma. Recomendamos que o Usuário reveja periodicamente estes Termos. Caso não concorde com as novas condições, o Usuário deverá manifestar sua discordância de forma expressa, por escrito (via nosso canal de suporte no Discord), em até <b>24 horas</b> após a publicação das mudanças, comprometendo-se a não mais utilizar a plataforma. A continuidade de uso dos serviços ou realização de novas compras sem manifestação dentro desse prazo será interpretada como <b>aceite às novas condições</b>.',
      '<b>2.2.</b> Alterações nestes Termos não afetarão retroativamente transações já concluídas antes da publicação das mudanças. Para compras já finalizadas e benefícios já concedidos, valem as condições vigentes à época da compra. As novas disposições aplicar-se-ão apenas às compras futuras.',
    ]
  },
  {
    title: '3. Privacidade e Segurança da Informação',
    items: [
      '<b>3.1.</b> A MIL GRAU Roleplay valoriza a privacidade de seus Usuários e empregará <b>medidas de segurança adequadas</b> para proteger as informações pessoais coletadas. Dados sensíveis serão armazenados de forma segura e utilizados somente para a finalidade de execução dos serviços oferecidos, conforme nossa Política de Privacidade e em consonância com a legislação aplicável. <b>No entanto, o Usuário reconhece que nenhum sistema de segurança é infalível</b>, e a MIL GRAU Roleplay não se responsabiliza por ataques ilícitos de terceiros, falhas de segurança de plataformas externas (por exemplo, gateways de pagamento) ou outros eventos fora de seu controle que possam resultar em acesso indevido, alteração ou vazamento de dados. Em caso de incidente dessa natureza, a equipe se compromete a adotar as medidas cabíveis de mitigação e notificará os usuários afetados, conforme exigido em lei.',
      '<b>3.2.</b> O Usuário desde já autoriza, quando necessário para o cumprimento adequado dos serviços contratados, que a MIL GRAU Roleplay compartilhe informações estritamente necessárias com parceiros comerciais ou fornecedores envolvidos no processamento do pagamento (como MercadoPago, PayPal, instituições financeiras) ou na prestação dos serviços virtuais (por exemplo, serviços de hospedagem do servidor), resguardadas as obrigações de confidencialidade. <b>Em hipótese alguma venderemos ou compartilharemos dados pessoais do Usuário com terceiros para finalidades alheias à prestação de serviço sem o devido consentimento do titular.</b>',
      '<b>3.3.</b> Em caso de dúvidas sobre privacidade, solicitações relativas à proteção de dados pessoais ou exercício de direitos previstos na LGPD (Lei Geral de Proteção de Dados), o Usuário poderá entrar em contato com nossa equipe através do Discord oficial ou pelos canais de suporte disponibilizados.',
    ]
  },
  {
    title: '4. Obrigações do Usuário',
    items: [
      '<b>4.1.</b> Para realizar compras na loja virtual, o Usuário deverá possuir um <b>cadastro válido</b> junto à plataforma MIL GRAU Roleplay, fornecendo todas as informações solicitadas de forma completa, precisa e atualizada. É obrigação do Usuário manter seus dados cadastrais atualizados (incluindo e-mail e contatos) e verificar regularmente as comunicações da loja referentes às transações.',
      '<b>4.2.</b> O Usuário assume plena responsabilidade pela veracidade dos dados fornecidos, comprometendo-se a <b>não utilizar identidade falsa, dados de terceiros sem autorização ou quaisquer informações enganosas</b>. Caso sejam identificadas informações inconsistentes ou dúvidas quanto à identidade do Usuário, poderemos solicitar documentação adicional para verificação. A não cooperação ou a persistência de inconsistências poderão resultar na suspensão da entrega do produto ou até no cancelamento da compra.',
      '<b>4.3.</b> O Usuário também se compromete a <b>guardar em sigilo suas credenciais de acesso</b> (login e senha) da conta na plataforma. Qualquer atividade realizada através da conta do Usuário será de sua exclusiva responsabilidade. Em caso de suspeita de acesso não autorizado ou comprometimento da conta, o Usuário deverá notificar imediatamente a equipe da MIL GRAU Roleplay para que sejam tomadas as devidas providências de proteção.',
    ]
  },
  {
    title: '5. Uso Indevido e Violações',
    items: [
      '<b>5.1.</b> É <b>estritamente proibido</b> ao Usuário empregar qualquer tentativa, método, dispositivo, software, script ou outra forma de intervenção que vise fraudar, burlar, explorar falhas ou interferir no funcionamento normal do servidor ou da loja virtual. Isso inclui, mas não se limita a: utilização de hacks, cheats, bots, mods não autorizados, engenharia reversa, ataques (DDoS, exploits) ou quaisquer meios ilícitos ou não previstos pelas mecânicas oficiais do jogo/servidor.',
      '<b>5.2.</b> Caso seja detectado uso indevido da plataforma ou violações às regras estabelecidas, a MIL GRAU Roleplay poderá adotar as medidas cabíveis. Além das consequências internas (advertência, suspensão ou banimento), o infrator poderá ser <b>responsabilizado civil e penalmente</b> pelos atos ilícitos que vier a praticar, especialmente se causar danos materiais ou à imagem da empresa ou prejuízos à comunidade de jogadores.',
    ]
  },
  {
    title: '6. Sanções',
    items: [
      '<b>6.1.</b> O não cumprimento destes Termos ou das regras do servidor poderá sujeitar o Usuário às seguintes sanções, aplicáveis a critério da administração da MIL GRAU Roleplay, conforme a gravidade da conduta: <b>advertência, suspensão temporária, banimento temporário ou banimento permanente</b> da plataforma (inclusive perda de acesso aos benefícios comprados), sem prejuízo de eventuais medidas judiciais cabíveis. Em especial, o Usuário poderá ser sancionado nas seguintes situações:',
      '<b>a)</b> Se o Usuário descumprir qualquer cláusula destes Termos de Compra ou demais políticas da plataforma;<br/><b>b)</b> Se o Usuário infringir regras internas do servidor (também referidas como "regras internas da cidade"), incluindo regras de conduta, fair-play, uso de linguagem;<br/><b>c)</b> Se forem identificadas práticas fraudulentas ou ilegais por parte do Usuário;<br/><b>d)</b> Se houver inconsistência nas informações fornecidas pelo Usuário no cadastro ou na compra;<br/><b>e)</b> Se o Usuário realizar um procedimento de <b>chargeback (estorno de pagamento)</b> ou abrir disputa junto à operadora financeira após ter recebido e utilizado os itens adquiridos no servidor, caracterizando má-fé. Esta conduta é considerada grave violação contratual e poderá resultar em banimento permanente imediato.',
      '<b>6.2.</b> As sanções acima não eximem o Usuário das responsabilidades decorrentes de seus atos. No caso de banimento temporário ou permanente, <b>o Usuário perderá o acesso aos benefícios virtuais adquiridos, sem direito a reembolso</b>.',
    ]
  },
  {
    title: '7. Cancelamento e Política de Reembolso',
    items: [
      '<b>7.1. Direito de arrependimento:</b> Em conformidade com o artigo 49 do Código de Defesa do Consumidor (Lei 8.078/90), o Usuário pode desistir de uma compra realizada fora do estabelecimento comercial (pela internet) no prazo de até <b>7 (sete) dias</b> a contar da data da compra ou do recebimento do produto/serviço. <b>Entretanto, essa possibilidade somente será válida caso o Usuário não tenha acessado ou usufruído dos benefícios virtuais adquiridos.</b> Se o serviço/produto digital tiver sido integralmente entregue e utilizado pelo Usuário dentro desse período, não será cabível o exercício do direito de arrependimento.',
      '<b>7.2. Transações finais e exceções:</b> Fora da hipótese de arrependimento legal descrita na cláusula 7.1, <b>todas as vendas realizadas são consideradas definitivas e não reembolsáveis</b>. Solicitações motivadas por problemas técnicos do servidor ou falhas comprovadas na entrega do item poderão ser analisadas caso a caso pela administração, que decidirá, a seu exclusivo critério, pela concessão ou não do reembolso.',
      '<b>7.3. Banimentos e violações:</b> <b>Não haverá reembolso em caso de banimento</b> do Usuário por infração das regras ou destes Termos. Se o Usuário for punido (temporária ou permanentemente) em decorrência de uma conduta imprópria ou ilícita, todos os valores pagos por benefícios que ainda estavam em vigência serão perdidos, sem direito a devolução.',
      '<b>7.4. Chargebacks (estornos) indevidos:</b> O procedimento de chargeback – caracterizado pela solicitação unilateral de estorno junto à operadora do cartão, banco ou plataforma de pagamento – <b>não deve ser utilizado como meio de obtenção de reembolso</b> para compras de itens virtuais já entregues. Caso o Usuário, ignorando as vias de suporte oferecidas, opte por abrir uma disputa/estorno após ter recebido o produto digital, tal ato será considerado <b>abuso de direito e descumprimento destes Termos</b>. Nessa situação, a MIL GRAU Roleplay poderá aplicar <b>banimento imediato</b> da conta do Usuário e tomar as medidas necessárias para se defender na disputa, apresentando comprovantes da entrega do produto e da aceitação destes Termos.',
    ]
  },
  {
    title: '8. Assinaturas Recorrentes (VIP Mensal)',
    items: [
      '<b>8.1.</b> Certos benefícios, como o plano <b>VIP Mensal</b>, funcionam na modalidade de assinatura recorrente, com cobranças automáticas em intervalos regulares (mensalmente, salvo indicação em contrário). Ao contratar um VIP recorrente, o Usuário autoriza que a plataforma de pagamento realize cobranças sucessivas na periodicidade acordada, até que a assinatura seja cancelada.',
      '<b>8.2. Cancelamento da assinatura:</b> é responsabilidade exclusiva do Usuário gerenciar e cancelar sua assinatura recorrente caso não deseje mais continuá-la. Para evitar a cobrança do próximo ciclo, o cancelamento deve ser solicitado com pelo menos <b>5 (cinco) dias de antecedência</b> da data de renovação, através dos canais de suporte oficiais.',
      '<b>8.3. Cobranças já efetuadas:</b> se o Usuário não manifestar o desejo de cancelar a assinatura dentro do prazo acima estipulado, o próximo pagamento programado poderá ser capturado automaticamente e o benefício será renovado por mais um ciclo. Nessa hipótese, <b>não haverá direito a reembolso do valor cobrado posteriormente</b>, visto que o serviço estava ativo e reservado para o Usuário.',
      '<b>8.4.</b> A MIL GRAU Roleplay se reserva o direito de, a qualquer momento, descontinuar planos de assinatura ou ajustar suas condições, informando os assinantes com antecedência razoável. Caso um plano recorrente seja descontinuado ou alterado substancialmente, os assinantes ativos terão a opção de cancelamento sem penalidades ou migração para outro plano disponível, conforme o caso.',
    ]
  },
];

// ===== ICONS =====
const Icon = ({ name, size = 20, ...rest }) => {
  const paths = {
    search: <><circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/></>,
    headset: <><path d="M3 14v-3a9 9 0 0 1 18 0v3"/><path d="M21 14v3a2 2 0 0 1-2 2h-1v-7h3M3 14v3a2 2 0 0 0 2 2h1v-7H3"/></>,
    cart: <><circle cx="9" cy="20" r="1.5"/><circle cx="17" cy="20" r="1.5"/><path d="M3 4h2l2.4 11.5a2 2 0 0 0 2 1.5h7.5a2 2 0 0 0 2-1.5L21 8H6"/></>,
    user: <><circle cx="12" cy="8" r="4"/><path d="M4 21a8 8 0 0 1 16 0"/></>,
    arrow: <path d="M5 12h14M13 6l6 6-6 6"/>,
    check: <path d="M5 12l5 5L20 7"/>,
    close: <><path d="M6 6l12 12M6 18L18 6"/></>,
    plus: <><path d="M12 5v14M5 12h14"/></>,
    minus: <path d="M5 12h14"/>,
    trash: <><path d="M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/></>,
    pix: <path d="M9.5 2.5L2.5 9.5a2.1 2.1 0 0 0 0 3l7 7a2.1 2.1 0 0 0 3 0l7-7a2.1 2.1 0 0 0 0-3l-7-7a2.1 2.1 0 0 0-3 0z" fill="currentColor" stroke="none"/>,
    shield: <path d="M12 2l8 4v6c0 5-3.5 9-8 10-4.5-1-8-5-8-10V6l8-4z"/>,
    truck: <><rect x="1" y="6" width="14" height="11" rx="1"/><path d="M15 9h4l3 4v4h-7M5 21a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM18 21a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></>,
    discord: <path d="M19.3 5.3A17 17 0 0 0 14.9 4l-.2.4a13 13 0 0 1 4 1.9 14.5 14.5 0 0 0-12.4 0c1.1-.7 2.5-1.5 4-1.9L10.1 4a17 17 0 0 0-4.4 1.3C2.9 9.4 2.2 13.4 2.5 17.3a17.1 17.1 0 0 0 5.3 2.6l1.1-1.5a11 11 0 0 1-1.7-.8l.4-.3a12 12 0 0 0 10.7 0l.4.3-1.7.8 1.1 1.5a17 17 0 0 0 5.3-2.6c.4-4.6-.6-8.6-3.1-12zM9 14.6c-1 0-1.9-1-1.9-2.2 0-1.2.8-2.2 1.9-2.2s1.9 1 1.9 2.2c0 1.2-.8 2.2-1.9 2.2zm6 0c-1 0-1.9-1-1.9-2.2 0-1.2.8-2.2 1.9-2.2s1.9 1 1.9 2.2c0 1.2-.8 2.2-1.9 2.2z" fill="currentColor" stroke="none"/>,
    instagram: <><rect x="3" y="3" width="18" height="18" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r="0.6" fill="currentColor"/></>,
    tiktok: <path d="M16 4v9a4 4 0 1 1-4-4M16 4c0 2 1.5 4 4 4M16 4h4"/>,
    whatsapp: <path fill="currentColor" stroke="none" d="M17.5 14.4c-.3-.1-1.7-.8-1.9-.9-.3-.1-.5-.1-.7.1-.2.3-.7.9-.9 1.1-.2.2-.3.2-.6.1-1.7-.9-2.9-1.6-4-3.6-.3-.5.3-.5.8-1.5.1-.2 0-.3 0-.5 0-.1-.7-1.6-.9-2.2-.2-.6-.5-.5-.7-.5h-.6c-.2 0-.5.1-.8.4-.3.3-1 1-1 2.4 0 1.4 1 2.8 1.2 3 .1.2 2 3.1 4.9 4.3 1.8.8 2.6 1 3.5.8.5-.1 1.7-.7 1.9-1.4.2-.7.2-1.3.2-1.4-.1-.1-.3-.2-.6-.3zM12 2C6.5 2 2 6.5 2 12c0 1.9.5 3.7 1.5 5.3L2 22l4.8-1.5C8.4 21.5 10.2 22 12 22c5.5 0 10-4.5 10-10S17.5 2 12 2zm0 18.3c-1.7 0-3.4-.5-4.8-1.4l-.3-.2-3.2 1 1-3.1-.2-.3a8.3 8.3 0 1 1 7.5 4z"/>,
    mail: <><rect x="3" y="5" width="18" height="14" rx="2"/><path d="m3 7 9 6 9-6"/></>,
    chat: <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10z"/>,
    star: <path d="M12 2l3 6.5 7 1-5 5 1.2 7L12 18l-6.2 3.5L7 14.5 2 9.5l7-1L12 2z"/>,
    bolt: <path d="M13 2L3 14h7l-1 8 10-12h-7l1-8z" fill="currentColor"/>,
    crown: <path d="M3 8l4 4 5-7 5 7 4-4-1 11H4L3 8z"/>,
    fire: <path d="M12 2c1 4-2 5-2 8a2 2 0 0 0 4 0c0-1 1-2 1-2s4 3 4 8a7 7 0 1 1-14 0c0-4 3-6 4-9 1-2 1-3 1-3s2 1 2 6z"/>,
    box: <><path d="M3 7l9-4 9 4-9 4-9-4z"/><path d="M3 7v10l9 4 9-4V7"/><path d="M12 11v10"/></>,
    'pass-1': <><rect x="3" y="6" width="18" height="12" rx="2"/><path d="M3 10h18M7 14h4"/></>,
    'pass-2': <><rect x="3" y="5" width="18" height="14" rx="2"/><path d="M3 9h18M7 14h6M7 17h3"/></>,
    'pass-3': <><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 8h18M7 13h8M7 16h6"/><circle cx="17.5" cy="14.5" r="1.5" fill="currentColor"/></>,
    money: <><rect x="2" y="6" width="20" height="12" rx="2"/><circle cx="12" cy="12" r="3"/><path d="M6 9v.01M18 15v.01"/></>,
    tv: <><rect x="3" y="5" width="18" height="12" rx="2"/><path d="M8 21h8M12 17v4"/></>,
    speaker: <><rect x="6" y="3" width="12" height="18" rx="2"/><circle cx="12" cy="14" r="3"/><circle cx="12" cy="7" r="1" fill="currentColor"/></>,
    car: <><path d="M3 13l2-5h14l2 5v5h-3v-2H6v2H3v-5z"/><circle cx="7" cy="16" r="1.5" fill="currentColor"/><circle cx="17" cy="16" r="1.5" fill="currentColor"/></>,
    bike: <><circle cx="6" cy="17" r="3"/><circle cx="18" cy="17" r="3"/><path d="M6 17l4-7h5l-3 7M14 5h3l1 5"/></>,
    shirt: <path d="M4 6l4-3h2a2 2 0 0 0 4 0h2l4 3-3 3v11H7V9L4 6z"/>,
    gun: <path d="M3 11h12l4-4h2v4h-2l-4 4h-3l-3 4H5l3-4H3v-4z"/>,
    diamond: <path d="M6 3h12l3 5-9 13L3 8l3-5z"/>,
    boombox: <><rect x="2" y="7" width="20" height="13" rx="2"/><circle cx="8" cy="14" r="2.5"/><circle cx="16" cy="14" r="2.5"/><path d="M7 4l3 3M17 4l-3 3"/></>,
    coin: <><circle cx="12" cy="12" r="9"/><path d="M12 7v10M9 9.5c0-1 1-1.5 3-1.5s3 .5 3 1.5-1 1.5-3 1.5-3 .5-3 1.5 1 1.5 3 1.5 3-.5 3-1.5"/></>,
    copy: <><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></>,
    qrcode: <><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><path d="M14 14h3v3M21 14v3M14 21h3M21 17v4"/></>,
    chevron: <path d="M9 18l6-6-6-6"/>,
    package: <><path d="M21 8l-9-5-9 5 9 5 9-5z"/><path d="M3 8v8l9 5 9-5V8M12 13v8"/></>,
    settings: <><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></>,
    logout: <><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9"/></>,
    'arrow-right': <path d="M5 12h14M13 6l6 6-6 6"/>,
    phone: <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/>,
    send: <path d="M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z"/>,
  };
  const p = paths[name] || null;
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...rest}>{p}</svg>
  );
};

window.MGRP_DATA = { PRODUCTS, CATEGORIES, CAT_DESC, fmtBRL, TERMS };
window.Icon = Icon;
