/* DESBLOQUEIO PROGRESSIVO — Onda 0 (docs/audit/DESBLOQUEIO_PROGRESSIVO_AUDITORIA_2026-09-19.md).
   O game.js põe no <body> uma classe desbloq-falta-<id> para cada coisa que o
   personagem ainda não liberou (tabela em src/progression/desbloqueio-domain.js).
   Aqui só se ESCONDE: nada sai do HTML (static-audit confere id por id), e com o
   Editor V3 aberto (body.col-v3-ativo) a tela mostra tudo para o autor calibrar.
   O #gameShell nos seletores do menu vence o "#gameShell>.main-nav>.nav-button
   {display:flex!important}" do Combate B (combate-b.css). */

/* Onda 1 — nível 5 */
body:not(.col-v3-ativo).desbloq-falta-contratos #gameShell .nav-more-menu [data-view="contracts"],
body:not(.col-v3-ativo).desbloq-falta-farmar_anterior #stageBackButton,
body:not(.col-v3-ativo).desbloq-falta-farmar_anterior #stageResumeButton,
body:not(.col-v3-ativo).desbloq-falta-auto_equip #autoEquipButton,
/* conteúdo — 1ª Etapa 10 */
body:not(.col-v3-ativo).desbloq-falta-auto_boss #autoBossStatusPill,
body:not(.col-v3-ativo).desbloq-falta-auto_boss .automation-boss-controls,
/* Ferreiro 15, Sets 25, Mercado 70 (plano do autor 06/10) */
body:not(.col-v3-ativo).desbloq-falta-sets #gameShell .main-nav [data-view="sets"],
body:not(.col-v3-ativo).desbloq-falta-ferreiro #gameShell .main-nav [data-view="forge"],
body:not(.col-v3-ativo).desbloq-falta-ferreiro #gameShell [data-forge-id],
body:not(.col-v3-ativo).desbloq-falta-mercado .vendor-subtab[data-vendor-panel="market"],
body:not(.col-v3-ativo).desbloq-falta-mercado #storeView .loja-atalho-mercado,
/* Alma 30, Pets 35, Auto Reciclar e Bestiário 40 */
body:not(.col-v3-ativo).desbloq-falta-auto_reciclar .inventory-automation-details,
body:not(.col-v3-ativo).desbloq-falta-pets #gameShell .main-nav [data-view="merchant"],
body:not(.col-v3-ativo).desbloq-falta-alma [data-character-tab="soul"],
/* 01/10: a ficha B ("#statModal .character-tab-button{display:flex!important}", personagem-b.css)
   vencia a linha de cima e a aba ALMA aparecia antes do nível 30 (clicar só voltava para a Visão
   geral: "quem começa agora acha que tá bugado"). Com o #statModal esta linha pesa mais. */
body:not(.col-v3-ativo).desbloq-falta-alma #statModal [data-character-tab="soul"],
/* 22/10 ("Sistema de Alma", plano aprovado): a barra ✦ ALMA da arena aparece junto com a aba, no nível 30.
   A classe vital-alma é posta pelo game.js (atualizarAtalhoDaAlma) na célula do #soulXpBar (o número #hudAlmaNum do HUD mora dentro dela e some junto). */
body:not(.col-v3-ativo).desbloq-falta-alma .vital-alma,
body:not(.col-v3-ativo).desbloq-falta-bestiario #gameShell .nav-more-menu [data-view="codex"],
/* PvP 50, Social e Party 80, Ilha 90 */
body:not(.col-v3-ativo).desbloq-falta-pvp #navPvpButton,
body:not(.col-v3-ativo).desbloq-falta-pvp #bottomNavPvp,
body:not(.col-v3-ativo).desbloq-falta-pvp [data-rail-card="coliseu"],
/* 15/10: Sentinelas no 55 (o botão também espera a chave do servidor: sentinelas-ui.js) */
body:not(.col-v3-ativo).desbloq-falta-sentinelas #navSentinelasButton,
/* 04/11: a Praça do Castelo no 20 (o botão também espera a chave do servidor: praca-ui.js) */
body:not(.col-v3-ativo).desbloq-falta-praca #navPracaButton,
body:not(.col-v3-ativo).desbloq-falta-ilha [data-rail-card="ilha"],
/* 06/10: a aba ILHA DO DRAGÃO entra por JS no PvP (ilha-ui.js), que abre antes (50) */
body:not(.col-v3-ativo).desbloq-falta-ilha #colosseumModal [data-ilha-tab],
body:not(.col-v3-ativo).desbloq-falta-social #navSocialButton,
body:not(.col-v3-ativo).desbloq-falta-social [data-rail-card="social"],
body:not(.col-v3-ativo).desbloq-falta-social [data-rail-card="guild-boss"],
/* 06/10: GvG e Siege (guilda) moram no PvP, que abre antes; a aba GUILDA do chat; adicionar amigo
   pela ficha de outro jogador (player-card-ui.js) e pelo menu do nome no chat (chat-ui.js) */
body:not(.col-v3-ativo).desbloq-falta-social #colosseumModal #tabGvG,
body:not(.col-v3-ativo).desbloq-falta-social #colosseumModal #tabSiege,
body:not(.col-v3-ativo).desbloq-falta-social .col-chat-tabs [data-chat-tab="guild"],
body:not(.col-v3-ativo).desbloq-falta-social .fh-botao.fh-amigo,
body:not(.col-v3-ativo).desbloq-falta-party #gameShell .main-nav [data-view="party"],
/* Onda 5 — nível 60 */
body:not(.col-v3-ativo).desbloq-falta-blood_castle [data-rail-card="blood-castle"],
/* Asas 100, Gens 250 */
body:not(.col-v3-ativo).desbloq-falta-asas .vendor-subtab[data-vendor-panel="wings"],
/* 30/10 (SQL 2042): a Máquina do Caos no 110, logo depois das Asas */
body:not(.col-v3-ativo).desbloq-falta-maquina_caos .vendor-subtab[data-vendor-panel="maquina"],
/* 05/11: Engaste de Gemas (Reset 300 + chave do servidor, SQL 2660): a aba 💎 Engaste do Ferreiro */
body:not(.col-v3-ativo).desbloq-falta-gemas .vendor-subtab[data-vendor-panel="gemas"],
/* 06/11: Ascensão (Reset 1000 + chave do servidor, SQL 2680): a aba ✨ Ascensão do Ferreiro */
body:not(.col-v3-ativo).desbloq-falta-ascensao .vendor-subtab[data-vendor-panel="ascensao"],
body:not(.col-v3-ativo).desbloq-falta-fusao .inv-btn.alimentar,
body:not(.col-v3-ativo).desbloq-falta-gens #tabGens,
/* Onda 7 — 1º Reset */
body:not(.col-v3-ativo).desbloq-falta-criar_guilda #btnCreateGuild,
body:not(.col-v3-ativo).desbloq-falta-troca_classe .vendor-subtab[data-vendor-panel="classchange"],
body:not(.col-v3-ativo).desbloq-falta-marca_regiao #migrarModos,
body:not(.col-v3-ativo).desbloq-falta-marca_regiao #codexAbas,
/* Bônus de Recomeço: NÃO se esconde mais antes do 1º Reset. Desde a 2049 (29/10) o servidor paga desde o nível 1
   (+20% no 1 até +100% no 400) e o ícone tem a frase do começo; a regra antiga (27/10, SQL 2322) escondia o ícone de
   todo herói novo (06/11, autor: "o ícone de exp antes do primeiro reset sumiu?"). A liberação "recomeco" do 1º Reset
   continua só para o guia "O Bônus de Recomeço aumentou!". */
/* 22/10: Migrar só depois do Hardcore; a Dracônica só nos Dragões */
/* 2558 (03/11): com as Marcas das Regiões (1º Reset) a aba Migrar aparece antes, só com a ◆ Marca (o Aprimoramento segue no Reset 10) */
body:not(.col-v3-ativo):not(.mr-marca-liberada).desbloq-falta-migrar .vendor-subtab[data-vendor-panel="migrate"],
body:not(.col-v3-ativo).desbloq-falta-draconica .vendor-subtab[data-vendor-panel="create"],
/* conteúdo — 2ª área, 1ª Asa */
body:not(.col-v3-ativo).desbloq-falta-bau #gameShell .nav-more-menu [data-view="chest"],
/* Titans (10/10): o TITANS do MAIS aparece no Reset 5, junto com o círculo da barra */
body:not(.col-v3-ativo).desbloq-falta-titans #gameShell .nav-more-menu .nav-titans,
/* 25/10 (regra do autor: todo sistema com nível e tutorial): Coleção Visual 25, Mercador Secreto 30, Glória 50,
   Lapidar e Reforja com Life 70, Patronos 80, Molde da asa 100, modos online 150 e Zodíaco no Reset 400 */
body:not(.col-v3-ativo).desbloq-falta-colecao_visual button[data-perfil-aba="colecao"],
body:not(.col-v3-ativo).desbloq-falta-altar_asas [data-altar-chamada],
body:not(.col-v3-ativo).desbloq-falta-mercador_secreto #msNpc,
body:not(.col-v3-ativo).desbloq-falta-mercador_secreto #msPilula,
body:not(.col-v3-ativo).desbloq-falta-gloria [data-rk-gloria],
body:not(.col-v3-ativo).desbloq-falta-lapidar .vendor-subtab[data-vendor-panel="lapidar"],
body:not(.col-v3-ativo).desbloq-falta-lapidar #forgeView label.fx-life:has(input[data-reforja-life]),
body:not(.col-v3-ativo).desbloq-falta-patronos [data-rankings-aba="patronos"],
body:not(.col-v3-ativo).desbloq-falta-molde [data-asa-modo="molde"],
body:not(.col-v3-ativo).desbloq-falta-fenda [data-rail-card="fenda"],
body:not(.col-v3-ativo).desbloq-falta-territorio #btnGuildTerritory,
body:not(.col-v3-ativo).desbloq-falta-guerra_ceus [data-rail-card="revezamento"],
body:not(.col-v3-ativo).desbloq-falta-lendas [data-rail-card="lendas"],
body:not(.col-v3-ativo).desbloq-falta-asa_zeratul #asaZeratulBcSelo,
body:not(.col-v3-ativo).desbloq-falta-asa_zeratul #zaBcSlot,
body:not(.col-v3-ativo).desbloq-falta-labirinto [data-rail-card="labirinto"],
body:not(.col-v3-ativo).desbloq-falta-chaos_castle [data-rail-card="chaos_castle"],
body:not(.col-v3-ativo).desbloq-falta-portal_ondas [data-rail-card="portal_ondas"],
body:not(.col-v3-ativo).desbloq-falta-signos #navSignosButton,
body:not(.col-v3-ativo).desbloq-falta-montaria #navMontariaButton,
/* 05/11: Temporada de Lenda (100º Reset + chave do servidor, SQL 2615): a aba Temporada dos RANKINGS */
body:not(.col-v3-ativo).desbloq-falta-temporada_lenda #rankingsView [data-rankings-aba="temporada"],
/* 06/11: Turma da Semana (nível 10 + 4 primeiras semanas + chave do servidor, SQL 2106): a aba Turma dos RANKINGS */
body:not(.col-v3-ativo).desbloq-falta-turma #rankingsView [data-rankings-aba="turma"],
/* 27/10: Reinos além dos Dragões (Reset 1400, SQL 2018): o grupo da bolsa e o título no Mapa */
/* 28/10: Domar Criaturas (nível 45 + chave do servidor, SQL 2024): a aba DOMADAS dos Pets */
body:not(.col-v3-ativo).desbloq-falta-domar #merchantView .pets-abas [data-vendor-panel="domar"],
/* 03/11: Árvores de Habilidades (nível 20 + chave do servidor, SQL 2584): o botão "Árvores" do Grimório */
body:not(.col-v3-ativo).desbloq-falta-arvores .skg-alt [data-arv-abrir],
body:not(.col-v3-ativo).desbloq-falta-reinos #materiaisDosReinos,
body:not(.col-v3-ativo).desbloq-falta-reinos .mundo-grupo-reinos,
/* 26/10 (opção A do autor): Proficiência 15 (a barra na ficha do item; os pontos sobem desde o 1), Consagração 55
   (o painel do Perfil › Título), Brilho 60 (Coleção de Brilho, trilhas e Despertar na aba Sets). O +16 a +25 (90)
   não precisa de seletor: o game.js mostra "libera no nível 90" no lugar do painel (renderForgeUpgradePreview). */
body:not(.col-v3-ativo).desbloq-falta-proficiencia .ttip-barra.prof,
body:not(.col-v3-ativo).desbloq-falta-proficiencia .ttip-barra-det:has(.ttip-barra.prof),
body:not(.col-v3-ativo).desbloq-falta-consagracao .cg-painel,
body:not(.col-v3-ativo).desbloq-falta-titulos_status .tst-painel,
/* 28/10: a Loja de Visuais (SQL 2010) abre junto da Coleção Visual (25), de onde saem os pontos dela. */
body:not(.col-v3-ativo).desbloq-falta-colecao_visual .vendor-subtab[data-loja-cat="visuais"],
body:not(.col-v3-ativo).desbloq-falta-brilho .sa-album-brilho,
body:not(.col-v3-ativo).desbloq-falta-brilho .sa-brilho-trilhas,
body:not(.col-v3-ativo).desbloq-falta-brilho .sa-despertar,
/* o MAIS some quando tudo o que ele guarda ainda falta */
body:not(.col-v3-ativo).desbloq-falta-mais #gameShell .main-nav .nav-more-wrap,
/* no celular a folha do MAIS ficaria vazia (antes de Contratos nada dela está livre) */
body:not(.col-v3-ativo).desbloq-falta-mais #bottomNavMais{display:none!important}

/* A linha fixa "🔓 Próxima liberação no nível N: …" (princípio 8). */
#proximaLiberacao{
  position:relative;z-index:3;box-sizing:border-box;
  margin:6px auto 14px;padding:4px 14px;width:fit-content;max-width:min(760px,calc(100% - 32px));
  border:1px solid rgba(215,169,68,.35);border-radius:999px;background:rgba(21,24,32,.82);
  color:#e9d6a4;font-size:12.5px;line-height:1.35;text-align:center;
}
#proximaLiberacao[hidden]{display:none!important}

/* O cartão da onda: canto inferior direito, não é modal e não pausa nada (princípio 7). */
.desbloqueio-cartao{
  position:fixed;right:18px;bottom:18px;z-index:9000;width:min(340px,calc(100vw - 32px));
  padding:14px 16px 12px;border:1px solid rgba(215,169,68,.55);border-radius:14px;
  background:linear-gradient(180deg,#232733,#161922);color:#f4f4f6;
  box-shadow:0 20px 60px rgba(0,0,0,.45),0 0 16px rgba(215,169,68,.18);
  font-size:14px;line-height:1.4;
}
.desbloqueio-cartao[hidden]{display:none!important}
.desbloqueio-cartao-titulo{display:block;margin-bottom:6px;color:#d7a944;font-size:15px}
.desbloqueio-cartao ul{margin:0 0 10px;padding:0;list-style:none;display:grid;gap:3px}
/* Salto grande (offline, Party): a lista vira duas colunas para o cartão não cobrir a tela. */
.desbloqueio-cartao.muitos{width:min(460px,calc(100vw - 32px))}
.desbloqueio-cartao.muitos ul{grid-template-columns:1fr 1fr;column-gap:12px}
.desbloqueio-cartao li{padding:3px 0}
.desbloqueio-cartao-acoes{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.desbloqueio-cartao-acoes button{
  min-height:36px;padding:6px 12px;border:1px solid #343947;border-radius:8px;
  background:#222631;color:#f4f4f6;font-weight:700;font-size:12.5px;cursor:var(--cur-mao,pointer);
}
.desbloqueio-cartao-acoes button.primario{border-color:var(--botao-ouro-borda);background:var(--botao-ouro-fundo);color:var(--botao-ouro-texto)}
/* No celular o cartão sobe acima da barra inferior do Combate B. */
@media (max-width:699px){
  .desbloqueio-cartao{right:16px;left:16px;width:auto;bottom:84px}
}

/* CONTAGEM PARA O RESET (07/10, escolha do autor): do 350 ao 399, na faixa do EXP, à direita do valor. */
#gameShell #battleVitalsStrip .reset-contagem{margin-left:auto;color:var(--b-ouro,#f3cf7a);font-size:calc(8.5px * var(--text-scale,1));font-weight:800;letter-spacing:.06em;white-space:nowrap;line-height:1}
#gameShell #battleVitalsStrip .reset-contagem[hidden]{display:none}
@media (min-width:901px){
  #gameShell #battleVitalsStrip>.vital-meter:nth-child(2){position:relative}
  #gameShell #battleVitalsStrip .reset-contagem{position:absolute;top:2px;right:6px}
}
@media (max-width:900px){
  /* 24/10: no celular a EXP passou a ter a linha inteira; a contagem fica na mesma linha do valor, à direita, e a barra embaixo.
     Antes do nível 30 (EXP no meio, estreita) ela volta para uma linha própria embaixo da barra. */
  #gameShell #battleVitalsStrip>.vital-meter:nth-child(2) .vital-track{order:3}
  #gameShell #battleVitalsStrip .reset-contagem{font-size:calc(8px * var(--text-scale,1))}
  body:not(.col-v3-ativo).desbloq-falta-alma #gameShell #battleVitalsStrip .reset-contagem{order:4;flex:1 0 100%;text-align:right;margin-top:3px}
}

/* Caçadas no nível 45 (07/10): o ícone do topo também some pelo CSS enquanto falta (o cacadas-ui.js já esconde). */
body:not(.col-v3-ativo).desbloq-falta-cacadas #gameShell #topCacadasButton{display:none!important}

/* VISÃO AVANÇADA (17/10, autor: "ranks gerais pode ocultar, isso pode assustar eles"). O Ranking geral, a escada da Evolução,
   o Titan/Sentinela na ficha de outro jogador e o Continente dos Dragões se escondem por JS (visao_avancada, 1º Reset).
   Aqui: o cartão da Torre dos Chefes ("Abre no Reset 10") só aparece junto com os Titans (Reset 5). */
body:not(.col-v3-ativo).desbloq-falta-titans [data-rail-card="torre"]{display:none!important}
#evolucaoConteudo .evolucao-mais{margin:6px 0 10px;color:#c9b98c;font-size:calc(12.5px * var(--text-scale,1));line-height:1.35;text-align:center}
/* 22/10 ("Sistema de Alma"): no celular o combate-b.css põe a 3ª célula da faixa com display:flex!important
   (#gameShell #battleVitalsStrip>.vital-meter:nth-child(3)); e o HUD da arena (hud-arena.css, html:not(#_) ... :has(#soulXpBar)) também; esta pesa mais e a barra ✦ ALMA some antes do nível 30. */
html:not(#_) body:not(.col-v3-ativo).desbloq-falta-alma #gameShell #battleVitalsStrip>.vital-alma:has(#soulXpBar){display:none!important}

/* MANUTENÇÃO PROGRAMADA (24/10, pedido do autor): pílula discreta no canto direito da faixa acima da arena, onde
   morava a pílula das joias; o centro é do "Próxima liberação". Vem ANTES dele no DOM (e da #joiasTopo, que o joias-a-vista.js leva para dentro da arena) e divide a linha com ele
   (margem de baixo negativa, o mesmo jeito que as joias usavam). Sem a linha do centro, ocupa uma linha baixinha. */
#avisoManutencao{
  position:relative;z-index:4;box-sizing:border-box;
  display:block;width:fit-content;max-width:calc(100% - 32px);height:26px;
  margin:6px 16px -26px auto;padding:0 12px;top:6px;
  border:1px solid rgba(215,169,68,.35);border-radius:999px;background:rgba(21,24,32,.82);
  color:#e9d6a4;font-size:12px;line-height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  cursor:var(--cur-seta,default);
}
#avisoManutencao[hidden]{display:none!important}
#avisoManutencao:has(~ #proximaLiberacao[hidden]){margin-bottom:6px;top:0}
/* PC estreito (abaixo de 1300) e celular: o "Próxima liberação" centrado (até 760 px) encostaria; cada um na sua linha. */
@media (max-width:1299px){
  #avisoManutencao{margin-bottom:0;top:0}
  #avisoManutencao:has(~ #proximaLiberacao[hidden]){margin-bottom:6px}
}
@media (max-width:900px){
  #avisoManutencao{height:22px;line-height:20px;font-size:11px;padding:0 10px;margin:4px 8px 0 auto;max-width:calc(100% - 16px)}
  #avisoManutencao:has(~ #proximaLiberacao[hidden]){margin-bottom:4px}
  #avisoManutencao:has(~ #proximaLiberacao.no-ferreiro){display:none!important}
}
