/* ==================================================================
   DeuxArcana — tema arcano elemental
   ================================================================== */

:root {
  --fundo-1: #0b0912;
  --fundo-2: #151020;
  --fundo-3: #1d1630;
  --painel: rgba(255, 255, 255, 0.045);
  --painel-forte: rgba(22, 17, 35, 0.9);
  --painel-borda: rgba(180, 160, 255, 0.16);
  --texto: #ece7f8;
  --texto-suave: #a79dc2;
  --texto-fraco: #8d83a6;
  --dourado: #d9b45b;
  --dourado-forte: #f3d485;
  --perigo: #d95757;
  --ok: #58c07a;
  --azul: #6f9de0;

  /* Recursos elementais (chaves internas preservadas) */
  --fogo: #e05548;
  --ar: #4cae5a;
  --agua: #4a86d6;
  --terra: #a4713f;
  --ouro: #e0b13a;
  --qualquer: #9aa0b5;

  --elan: var(--fogo);
  --vida: var(--ar);
  --calma: var(--agua);
  --morte: var(--terra);

  --cor-jogador: #58c07a;
  --cor-oponente: #d95757;
  --cor-mesa: #8b7bd8;

  --fonte-titulo: 'Cinzel', Georgia, 'Times New Roman', serif;
  --fonte-texto: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --sombra: 0 12px 34px rgba(0, 0, 0, 0.48);
  --sombra-carta: 0 8px 22px rgba(0, 0, 0, 0.42);
  --raio: 14px;

  /* Layout do dock inferior da mao */
  --app-pad: 12px;
  --altura-mao-barra: 42px;
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  height: 100%;
}

body {
  font-family: var(--fonte-texto);
  color: var(--texto);
  background:
    radial-gradient(1100px 620px at 12% -12%, rgba(92, 58, 158, 0.38), transparent 62%),
    radial-gradient(900px 520px at 112% 8%, rgba(26, 92, 138, 0.28), transparent 58%),
    radial-gradient(900px 560px at 50% 124%, rgba(128, 74, 34, 0.18), transparent 62%),
    linear-gradient(160deg, var(--fundo-2), var(--fundo-1));
  background-attachment: fixed;
  overflow: hidden;
}

body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.42;
  background-image: radial-gradient(rgba(255, 255, 255, 0.055) 1px, transparent 1px);
  background-size: 4px 4px;
  -webkit-mask-image: radial-gradient(circle at 50% 30%, #000 0%, transparent 78%);
  mask-image: radial-gradient(circle at 50% 30%, #000 0%, transparent 78%);
}

/* Aura elemental ambiente, em movimento lento */
body::after {
  content: '';
  position: fixed;
  inset: -18%;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 18% 28%, rgba(224, 85, 72, 0.1), transparent 24%),
    radial-gradient(circle at 82% 18%, rgba(74, 134, 214, 0.1), transparent 26%),
    radial-gradient(circle at 68% 82%, rgba(224, 177, 58, 0.075), transparent 22%),
    radial-gradient(circle at 32% 72%, rgba(76, 174, 90, 0.08), transparent 23%);
  filter: blur(26px);
  will-change: transform;
  animation: deriva-arcana 28s ease-in-out infinite alternate;
}

@keyframes deriva-arcana {
  0% {
    transform: translate3d(-2%, -1%, 0) scale(1);
  }
  50% {
    transform: translate3d(1.5%, 2%, 0) scale(1.05);
  }
  100% {
    transform: translate3d(3%, -2%, 0) scale(1.02);
  }
}

.app {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr) auto;
  gap: 12px;
  height: 100vh;
  padding: var(--app-pad);
  padding-bottom: calc(var(--altura-mao-barra) + var(--app-pad) * 2);
}

/* Vinheta cinematografica: escurece as bordas e concentra a leitura no
   centro da mesa sem interferir em cliques. */
.app::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: radial-gradient(
    125% 96% at 50% 38%,
    transparent 54%,
    rgba(4, 3, 9, 0.34) 100%
  );
}

/* Tabuleiro em tres colunas: sua area | mesa | adversario */
.mesa-tres-colunas {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, 1fr);
  gap: 12px;
  /* Cada zona termina no proprio conteudo: sem paineis vazios gigantes
     quando a mesa central tem mais cartas que as areas dos jogadores. */
  align-items: start;
}

.mesa-tres-colunas .zona {
  min-width: 0;
}

/* As larguras preservam as colunas do tabuleiro: 2 cards na area do
   jogador e 3 na mesa central, com a arte ocupando o topo. */
.mesa-tres-colunas .zona--jogador .carta {
  width: 164px;
  min-height: 316px;
}

.mesa-tres-colunas .zona--oponente .carta {
  width: 160px;
  min-height: 276px;
}

.mesa-tres-colunas .zona--oponente .carta--compacta {
  width: 160px;
}

.mesa-tres-colunas .zona--mesa .carta {
  width: 180px;
  min-height: 342px;
}

h1,
h2,
h3 {
  font-family: var(--fonte-titulo);
  letter-spacing: 0.035em;
  margin: 0;
}

.icone {
  width: 1em;
  height: 1em;
  display: inline-block;
  flex: none;
  vertical-align: -0.14em;
}

/* Scrollbars discretas */
* {
  scrollbar-width: thin;
  scrollbar-color: rgba(180, 160, 255, 0.3) transparent;
}

*::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

*::-webkit-scrollbar-thumb {
  background: rgba(180, 160, 255, 0.26);
  border-radius: 999px;
}

*::-webkit-scrollbar-track {
  background: transparent;
}

/* ------------------------------------------------------------------
   Cabecalho + HUD fixa
   ------------------------------------------------------------------ */

.cabecalho {
  grid-column: 1 / -1;
  position: sticky;
  top: 0;
  z-index: 30;
  padding: 10px 16px 12px;
  background:
    linear-gradient(180deg, rgba(28, 22, 45, 0.97), rgba(15, 12, 25, 0.94)),
    radial-gradient(600px 160px at 15% 0%, rgba(217, 180, 91, 0.09), transparent 70%);
  border: 1px solid var(--painel-borda);
  border-radius: var(--raio);
  box-shadow: 0 10px 34px rgba(0, 0, 0, 0.42), inset 0 1px rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(12px);
}

.cabecalho__linha {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.cabecalho__marca {
  font-family: var(--fonte-titulo);
  font-size: 23px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--dourado-forte);
  text-shadow: 0 0 22px rgba(217, 180, 91, 0.35);
  white-space: nowrap;
}

.cabecalho__marca em {
  font-style: normal;
  color: var(--texto);
}

.cabecalho__info {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.cabecalho__turno {
  margin-left: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--fonte-titulo);
  font-size: 14.5px;
  color: var(--texto-suave);
  white-space: nowrap;
}

.cabecalho__turno .icone {
  width: 15px;
  height: 15px;
  color: var(--texto-fraco);
}

.cabecalho__turno--ativo {
  color: var(--dourado-forte);
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(217, 180, 91, 0.1);
  border: 1px solid rgba(217, 180, 91, 0.3);
  animation: turno-ativo 2.2s ease-in-out infinite;
}

.cabecalho__turno--ativo .icone {
  color: var(--dourado-forte);
}

@keyframes turno-ativo {
  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(217, 180, 91, 0);
  }
  50% {
    box-shadow:
      0 0 0 4px rgba(217, 180, 91, 0.1),
      0 0 18px rgba(217, 180, 91, 0.22);
  }
}

@keyframes pulsar {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.56;
  }
}

/* Fichas pequenas do cabecalho */
.ficha {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 9px;
  font-size: 11.5px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.055);
  border: 1px solid rgba(255, 255, 255, 0.09);
  color: var(--texto);
  white-space: nowrap;
}

.ficha .icone {
  width: 14px;
  height: 14px;
  color: var(--texto-suave);
}

.ficha--rodada .icone {
  color: var(--dourado);
}

.ficha--fase {
  background: rgba(217, 180, 91, 0.14);
  border-color: rgba(217, 180, 91, 0.36);
  color: var(--dourado-forte);
}

.ficha--fase .icone {
  color: var(--dourado-forte);
}

.ficha--token,
.ficha--vitoria {
  background: rgba(217, 180, 91, 0.09);
  color: var(--dourado);
}

.ficha--vitoria .icone {
  color: var(--dourado);
}

.ficha--item {
  background: rgba(111, 157, 224, 0.12);
  border-color: rgba(111, 157, 224, 0.3);
  color: #bcd4f5;
}

.ficha--item .icone {
  color: #bcd4f5;
}

/* Barra de status do jogador (sempre visivel) */
.hud {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid rgba(180, 160, 255, 0.12);
}

.hud__identidade {
  display: flex;
  align-items: center;
  gap: 9px;
  padding-right: 14px;
  border-right: 1px solid rgba(180, 160, 255, 0.14);
}

.hud__avatar {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: var(--dourado-forte);
  background: radial-gradient(circle at 32% 24%, rgba(243, 212, 133, 0.24), rgba(217, 180, 91, 0.08));
  border: 1px solid rgba(217, 180, 91, 0.38);
  box-shadow: inset 0 1px rgba(255, 255, 255, 0.12);
}

.hud__avatar .icone {
  width: 19px;
  height: 19px;
}

/* Indicador local de turno: um anel no avatar, sem banner cobrindo a mesa. */
.hud__avatar--ativo {
  border-color: rgba(88, 192, 122, 0.7);
  animation: avatar-turno 2.2s ease-in-out infinite;
}

@keyframes avatar-turno {
  0%,
  100% {
    box-shadow:
      0 0 0 2px rgba(88, 192, 122, 0.14),
      0 0 12px rgba(88, 192, 122, 0.22),
      inset 0 1px rgba(255, 255, 255, 0.12);
  }
  50% {
    box-shadow:
      0 0 0 4px rgba(88, 192, 122, 0.22),
      0 0 22px rgba(88, 192, 122, 0.42),
      inset 0 1px rgba(255, 255, 255, 0.16);
  }
}

.hud__identidade-texto {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.hud__rotulo {
  font-size: 9.5px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--texto-fraco);
}

.hud__vp {
  font-family: var(--fonte-titulo);
  font-size: 19px;
  line-height: 1.05;
  color: var(--dourado-forte);
  font-variant-numeric: tabular-nums;
}

.hud__vp small {
  font-size: 9px;
  color: var(--texto-suave);
}

.hud__vp--ganho {
  animation: vp-ganho 0.9s ease;
}

.hud__vp--perda {
  animation: vp-perda 0.9s ease;
}

@keyframes vp-ganho {
  0%,
  100% {
    color: var(--dourado-forte);
    text-shadow: none;
  }
  40% {
    color: #b8ffc8;
    text-shadow: 0 0 20px rgba(88, 192, 122, 0.8);
  }
}

@keyframes vp-perda {
  0%,
  100% {
    color: var(--dourado-forte);
  }
  40% {
    color: #ff9a9a;
    text-shadow: 0 0 18px rgba(217, 87, 87, 0.8);
  }
}

.hud__recursos {
  display: flex;
  align-items: stretch;
  gap: 6px;
  flex: 1;
  flex-wrap: wrap;
}

.hud__recurso {
  --cor: var(--qualquer);
  --cor-fundo: rgba(154, 160, 181, 0.14);
  --cor-borda: rgba(154, 160, 181, 0.4);
  position: relative;
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 82px;
  padding: 5px 9px 5px 6px;
  border-radius: 11px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.065), rgba(255, 255, 255, 0.02));
  border: 1px solid var(--cor-borda);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease, opacity 0.2s ease;
}

.hud__recurso:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.3);
}

.hud__recurso--vazio {
  opacity: 0.62;
}

.hud__recurso--ganho {
  border-color: rgba(88, 192, 122, 0.9);
  box-shadow: 0 0 18px rgba(88, 192, 122, 0.38);
}

.hud__recurso--gasto {
  border-color: rgba(217, 87, 87, 0.9);
  box-shadow: 0 0 18px rgba(217, 87, 87, 0.32);
}

.hud__recurso-icone {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  color: var(--cor);
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
}

.hud__recurso-icone .icone {
  width: 18px;
  height: 18px;
}

.hud__recurso-texto {
  display: flex;
  flex-direction: column;
  gap: 0;
  line-height: 1;
}

.hud__recurso-nome {
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--texto-suave);
}

.hud__recurso-qtd {
  font-size: 18px;
  line-height: 1.05;
  font-variant-numeric: tabular-nums;
  color: var(--cor);
  font-weight: 800;
}

.hud__extras {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.hud__atalho {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 8px;
  border-radius: 9px;
  font-size: 11.5px;
  color: var(--texto-suave);
  background: rgba(255, 255, 255, 0.035);
  border: 1px solid rgba(255, 255, 255, 0.07);
  white-space: nowrap;
}

.hud__atalho .icone {
  width: 15px;
  height: 15px;
  color: var(--texto-suave);
}

.hud__atalho b {
  color: var(--texto);
  font-size: 12px;
}

.hud__atalho small {
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--texto-fraco);
}

.hud__atalho--item {
  border-color: rgba(217, 180, 91, 0.26);
  color: var(--dourado-forte);
}

.hud__atalho--item .icone,
.hud__atalho--item b {
  color: var(--dourado-forte);
}

/* Monte de cartas atras do contador do baralho */
.hud__atalho[data-hud-baralho] {
  position: relative;
  padding-left: 16px;
}

.hud__atalho[data-hud-baralho]::before,
.hud__atalho[data-hud-baralho]::after {
  content: '';
  position: absolute;
  left: 3px;
  top: 50%;
  width: 8px;
  height: 12px;
  border-radius: 2px;
  border: 1px solid rgba(217, 180, 91, 0.38);
  background: linear-gradient(160deg, #3a2d56, #1b142c);
  box-shadow: 0 0 6px rgba(217, 180, 91, 0.12);
  transform: translateY(-50%) rotate(-9deg);
}

.hud__atalho[data-hud-baralho]::after {
  left: 6px;
  transform: translateY(-50%) rotate(6deg);
}

.hud__atalho[data-hud-baralho] .icone {
  position: relative;
  z-index: 1;
}

/* Numero flutuante de ganho/perda */
.recurso-flutuante {
  position: absolute;
  right: 6px;
  top: -2px;
  z-index: 6;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 0.02em;
  pointer-events: none;
  text-shadow: 0 2px 6px rgba(0, 0, 0, 0.85);
  animation: flutuar-recurso 1.1s ease-out forwards;
}

.recurso-flutuante--ganho {
  color: #8ef0a6;
}

.recurso-flutuante--gasto {
  color: #ff9d9d;
}

@keyframes flutuar-recurso {
  0% {
    opacity: 0;
    transform: translateY(5px) scale(0.85);
  }
  18% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateY(-36px) scale(1.08);
  }
}

/* ------------------------------------------------------------------
   Layout do tabuleiro
   ------------------------------------------------------------------ */

.tabuleiro {
  grid-column: 1;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding-right: 4px;
}

.painel-log {
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: linear-gradient(180deg, rgba(27, 21, 43, 0.96), rgba(16, 13, 27, 0.94));
  border: 1px solid var(--painel-borda);
  border-radius: var(--raio);
  overflow: hidden;
  box-shadow: var(--sombra);
}

.painel-log--flutuante {
  position: fixed;
  top: 12px;
  right: 12px;
  bottom: 12px;
  z-index: 50;
  width: min(390px, calc(100vw - 24px));
  box-shadow: 0 26px 90px rgba(0, 0, 0, 0.72);
  backdrop-filter: blur(12px);
}

.log-fundo {
  position: fixed;
  inset: 0;
  z-index: 25;
  background: rgba(6, 5, 12, 0.46);
  backdrop-filter: blur(2px);
}

/* Painel dos itens magicos disponiveis, aberto pelo botao do cabecalho. */
.painel-itens {
  position: fixed;
  top: 12px;
  right: 12px;
  bottom: 12px;
  z-index: 50;
  display: flex;
  flex-direction: column;
  width: min(430px, calc(100vw - 24px));
  background: linear-gradient(180deg, rgba(27, 21, 43, 0.96), rgba(16, 13, 27, 0.94));
  border: 1px solid var(--painel-borda);
  border-radius: var(--raio);
  overflow: hidden;
  box-shadow: 0 26px 90px rgba(0, 0, 0, 0.72);
  backdrop-filter: blur(12px);
}

.painel-itens__lista {
  flex: 1;
  overflow-y: auto;
  align-content: flex-start;
  padding: 12px;
}

.painel-log__topo {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--painel-borda);
  background: rgba(255, 255, 255, 0.025);
}

.painel-log__topo .painel-log__titulo {
  flex: 1;
  padding: 0;
  border: none;
  background: transparent;
}

.painel-log__fechar {
  color: var(--texto-suave);
}

.painel-log__titulo {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 12px 14px;
  font-size: 14px;
  color: var(--dourado);
  border-bottom: 1px solid var(--painel-borda);
  background: rgba(255, 255, 255, 0.025);
}

.painel-log__titulo .icone {
  width: 15px;
  height: 15px;
}

.painel-log__lista {
  flex: 1;
  overflow-y: auto;
  padding: 9px 11px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.log__entrada {
  margin: 0;
  font-size: 12px;
  line-height: 1.45;
  color: var(--texto);
  border-left: 2px solid transparent;
  padding: 2px 0 2px 7px;
}

.log__entrada--antiga {
  color: var(--texto-suave);
  opacity: 0.72;
}

.log__rodada {
  display: inline-block;
  min-width: 24px;
  font-size: 9.5px;
  font-weight: 700;
  color: var(--dourado);
  opacity: 0.82;
}

.barra-acoes {
  grid-column: 1 / -1;
  position: sticky;
  bottom: calc(var(--altura-mao-barra) + var(--app-pad) * 2);
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  padding: 10px 14px;
  background: linear-gradient(0deg, rgba(22, 17, 35, 0.98), rgba(27, 21, 43, 0.9));
  border: 1px solid var(--painel-borda);
  border-radius: var(--raio);
  box-shadow: 0 -10px 30px rgba(0, 0, 0, 0.32);
  backdrop-filter: blur(10px);
}

.barra-acoes__botoes {
  display: flex;
  gap: 9px;
  flex-wrap: wrap;
}

.barra-acoes__dica {
  margin: 0;
  font-size: 12px;
  color: var(--texto-suave);
  font-style: italic;
}

/* ------------------------------------------------------------------
   Zonas (sua area x area do adversario x mesa)
   ------------------------------------------------------------------ */

.zona {
  position: relative;
  padding: 0 14px 14px;
  border-radius: var(--raio);
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.014));
  border: 1px solid var(--painel-borda);
  box-shadow: inset 0 1px rgba(255, 255, 255, 0.035);
}

.zona--oponente {
  border-color: rgba(217, 87, 87, 0.34);
  background:
    linear-gradient(180deg, rgba(217, 87, 87, 0.1), rgba(255, 255, 255, 0.014) 34%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012));
}

.zona--jogador {
  border-color: rgba(88, 192, 122, 0.45);
  background:
    linear-gradient(180deg, rgba(88, 192, 122, 0.1), rgba(255, 255, 255, 0.018) 34%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012));
  box-shadow:
    0 0 0 1px rgba(88, 192, 122, 0.08),
    0 0 32px rgba(88, 192, 122, 0.07),
    inset 0 1px rgba(255, 255, 255, 0.05);
}

.zona--mesa {
  border-color: rgba(139, 123, 216, 0.34);
  background:
    linear-gradient(180deg, rgba(139, 123, 216, 0.09), rgba(255, 255, 255, 0.014) 38%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012));
}

.zona--mao {
  border-color: rgba(217, 180, 91, 0.34);
  background:
    linear-gradient(180deg, rgba(217, 180, 91, 0.08), rgba(255, 255, 255, 0.014) 40%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012));
}

.zona--oponente.zona--ativa {
  box-shadow:
    0 0 0 1px rgba(217, 87, 87, 0.3),
    0 0 36px rgba(217, 87, 87, 0.14),
    inset 0 1px rgba(255, 255, 255, 0.05);
}

.zona--jogador.zona--ativa {
  box-shadow:
    0 0 0 1px rgba(88, 192, 122, 0.34),
    0 0 38px rgba(88, 192, 122, 0.2),
    inset 0 1px rgba(255, 255, 255, 0.06);
}

/* Foco de turno: a zona de quem age fica nitida; a outra fica recuada. */
.zona {
  transition:
    opacity 0.32s ease,
    filter 0.32s ease,
    box-shadow 0.32s ease,
    transform 0.32s ease;
}

.zona--foco {
  opacity: 1;
  filter: none;
  transform: translateY(-1px);
}

.zona--jogador.zona--foco {
  box-shadow:
    0 0 0 1px rgba(88, 192, 122, 0.42),
    0 0 46px rgba(88, 192, 122, 0.24),
    inset 0 1px rgba(255, 255, 255, 0.07);
}

.zona--oponente.zona--foco {
  box-shadow:
    0 0 0 1px rgba(217, 87, 87, 0.4),
    0 0 46px rgba(217, 87, 87, 0.22),
    inset 0 1px rgba(255, 255, 255, 0.06);
}

.zona--desfocada {
  opacity: 0.78;
  filter: saturate(0.78) brightness(0.92);
}

.zona--desfocada:hover {
  opacity: 0.96;
  filter: none;
}

.zona__faixa {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin: 0 -14px 10px;
  padding: 8px 14px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  border-top-left-radius: var(--raio);
  border-top-right-radius: var(--raio);
}

.zona__faixa--oponente {
  background: linear-gradient(90deg, rgba(217, 87, 87, 0.24), rgba(217, 87, 87, 0.04));
  border-bottom-color: rgba(217, 87, 87, 0.22);
}

.zona__faixa--jogador {
  background: linear-gradient(90deg, rgba(88, 192, 122, 0.23), rgba(88, 192, 122, 0.04));
  border-bottom-color: rgba(88, 192, 122, 0.22);
}

.zona__faixa--mesa {
  background: linear-gradient(90deg, rgba(139, 123, 216, 0.22), rgba(139, 123, 216, 0.04));
  border-bottom-color: rgba(139, 123, 216, 0.22);
}

.zona__faixa--mao {
  background: linear-gradient(90deg, rgba(217, 180, 91, 0.2), rgba(217, 180, 91, 0.035));
  border-bottom-color: rgba(217, 180, 91, 0.2);
}

.zona__selo {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.12em;
}

.zona__selo .icone {
  width: 15px;
  height: 15px;
}

.zona__faixa--oponente .zona__selo {
  color: #f2a5a5;
}

.zona__faixa--jogador .zona__selo {
  color: #a4e9b4;
}

.zona__faixa--mesa .zona__selo {
  color: #c9bef7;
}

.zona__faixa--mao .zona__selo {
  color: var(--dourado-forte);
}

.zona__sub {
  font-size: 11px;
  color: var(--texto-fraco);
  font-style: italic;
}

.zona__cabecalho {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}

.zona__cabecalho h2 {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 16.5px;
  color: var(--texto);
}

.zona__avatar {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  flex: none;
}

.zona__avatar .icone {
  width: 17px;
  height: 17px;
}

.zona__avatar--oponente {
  color: #f2a5a5;
  background: rgba(217, 87, 87, 0.14);
  border: 1px solid rgba(217, 87, 87, 0.36);
}

.zona__avatar--jogador {
  color: #a4e9b4;
  background: rgba(88, 192, 122, 0.14);
  border: 1px solid rgba(88, 192, 122, 0.36);
}

.zona--foco .zona__avatar--oponente {
  box-shadow:
    0 0 0 3px rgba(217, 87, 87, 0.16),
    0 0 16px rgba(217, 87, 87, 0.28);
}

.zona--foco .zona__avatar--jogador {
  box-shadow:
    0 0 0 3px rgba(88, 192, 122, 0.16),
    0 0 16px rgba(88, 192, 122, 0.28);
}

.zona__componentes {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-start;
  min-height: 64px;
  padding: 10px;
  border-radius: 12px;
  background: rgba(5, 4, 10, 0.2);
  border: 1px dashed rgba(255, 255, 255, 0.07);
}

.zona__componentes--oponente {
  border-color: rgba(217, 87, 87, 0.16);
}

.zona__componentes--propria {
  border-color: rgba(88, 192, 122, 0.2);
}

/* Status da IA: mostra a escolha em andamento e a ultima acao executada */
.zona__ia-status {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0 0 10px;
  padding: 7px 10px;
  border-radius: 10px;
  font-size: 11.5px;
  line-height: 1.4;
}

.zona__ia-status .icone {
  width: 15px;
  height: 15px;
  flex: none;
}

.zona__ia-status--pensando {
  color: #f2b8b8;
  background: rgba(217, 87, 87, 0.11);
  border: 1px solid rgba(217, 87, 87, 0.3);
}

.zona__ia-status--acao {
  color: #e8d8a8;
  background: rgba(217, 180, 91, 0.075);
  border: 1px solid rgba(217, 180, 91, 0.22);
}

.zona__ia-status--acao .icone {
  color: var(--dourado);
}

.zona__ia-ghost {
  width: 18px;
  height: 24px;
  display: grid;
  place-items: center;
  border-radius: 4px;
  border: 1px dashed rgba(217, 87, 87, 0.7);
  background: rgba(217, 87, 87, 0.08);
  color: #f2b8b8;
  font-size: 10px;
  font-weight: 800;
  flex: none;
  animation: ghost-ia 1.4s ease-in-out infinite;
}

@keyframes ghost-ia {
  0%,
  100% {
    opacity: 0.5;
    transform: translateY(0) rotate(-3deg);
  }
  50% {
    opacity: 1;
    transform: translateY(-3px) rotate(3deg);
  }
}

.zona__pontos {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin-left: auto;
  flex: none;
}

.zona__pontos i {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: currentColor;
  animation: ponto-ia 1s ease-in-out infinite;
}

.zona__pontos i:nth-child(2) {
  animation-delay: 0.14s;
}

.zona__pontos i:nth-child(3) {
  animation-delay: 0.28s;
}

@keyframes ponto-ia {
  0%,
  80%,
  100% {
    opacity: 0.25;
    transform: translateY(0);
  }
  40% {
    opacity: 1;
    transform: translateY(-2px);
  }
}

/* Etiquetas, placar e blocos internos */
.etiqueta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--texto-suave);
}

.etiqueta .icone {
  width: 12px;
  height: 12px;
}

.etiqueta--passou {
  background: rgba(217, 87, 87, 0.18);
  color: #f0a3a3;
}

.etiqueta--deus {
  background: rgba(139, 123, 216, 0.22);
  color: #d9d0fb;
}

.etiqueta--deus .icone {
  color: #d9d0fb;
}

.placar {
  font-family: var(--fonte-titulo);
  font-size: 19px;
  color: var(--dourado-forte);
  padding: 1px 8px;
  border-radius: 8px;
  background: rgba(217, 180, 91, 0.08);
  border: 1px solid rgba(217, 180, 91, 0.22);
}

.placar small {
  font-size: 10px;
  color: var(--texto-suave);
}

.placar--proprio {
  background: rgba(88, 192, 122, 0.09);
  border-color: rgba(88, 192, 122, 0.26);
  color: #b3f0c1;
}

.bloco {
  margin-bottom: 14px;
}

.bloco:last-child {
  margin-bottom: 0;
}

.bloco__titulo {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--fonte-texto);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--texto-suave);
  margin-bottom: 8px;
}

.bloco__titulo .icone {
  width: 14px;
  height: 14px;
  color: var(--dourado);
}

.bloco__titulo small {
  text-transform: none;
  letter-spacing: 0;
  opacity: 0.68;
  font-weight: 500;
}

.bloco__lista {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.bloco__lista--lugares .carta {
  width: 180px;
}

/* Mercado em trilho horizontal: a mesa mostra uma fileira de lugares em vez
   de empilhar 7+ cartas verticalmente e esticar o tabuleiro inteiro. */
.zona--mesa .bloco {
  position: relative;
}

.zona--mesa .bloco__lista--lugares {
  flex-wrap: nowrap;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  scroll-snap-type: x proximity;
  padding: 2px 2px 8px;
}

.zona--mesa .bloco__lista--lugares .carta {
  flex: 0 0 auto;
  scroll-snap-align: start;
}

.zona--mesa .bloco::after {
  content: '';
  position: absolute;
  top: 32px;
  right: 0;
  bottom: 12px;
  width: 26px;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, rgba(16, 13, 27, 0.78));
}

.bloco__lista--itens .carta {
  width: 164px;
}

.texto-vazio {
  color: var(--texto-suave);
  font-size: 12px;
  font-style: italic;
  margin: 0;
}

.dica-mao {
  font-size: 11px;
  color: var(--texto-suave);
  font-style: italic;
}

.mao__cartas {
  display: flex;
  gap: 11px;
  flex-wrap: wrap;
  padding: 14px 4px 4px;
  align-items: flex-end;
}

/* ------------------------------------------------------------------
   Dock fixo da mao: barra sempre visivel + painel que sobe no hover
   ------------------------------------------------------------------ */

.mao-dock {
  position: fixed;
  left: var(--app-pad);
  right: var(--app-pad);
  bottom: var(--app-pad);
  z-index: 40;
  height: var(--altura-mao-barra);
}

/* Ponte invisivel para o mouse atravessar do painel para a barra */
.mao-dock::before {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 100%;
  height: 7px;
}

.mao-barra {
  position: relative;
  z-index: 2;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 0 14px;
  border-radius: 14px;
  border: 1px solid rgba(217, 180, 91, 0.34);
  background:
    linear-gradient(180deg, rgba(42, 33, 60, 0.98), rgba(22, 17, 34, 0.98));
  color: var(--dourado-forte);
  font-family: var(--fonte-texto);
  font-size: 12px;
  cursor: pointer;
  box-shadow:
    0 -8px 26px rgba(0, 0, 0, 0.38),
    0 0 22px rgba(217, 180, 91, 0.08),
    inset 0 1px rgba(255, 255, 255, 0.08);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.mao-barra:hover,
.mao-dock--aberta .mao-barra,
.mao-dock--comprando .mao-barra {
  border-color: rgba(243, 212, 133, 0.62);
  box-shadow:
    0 -8px 30px rgba(0, 0, 0, 0.42),
    0 0 30px rgba(217, 180, 91, 0.2),
    inset 0 1px rgba(255, 255, 255, 0.12);
}

/* Compra: o painel sobe para receber a carta, em vez de descer na jogada. */
.mao-dock--comprando .mao-barra {
  border-color: rgba(243, 212, 133, 0.78);
  box-shadow:
    0 -8px 32px rgba(0, 0, 0, 0.45),
    0 0 34px rgba(217, 180, 91, 0.28),
    inset 0 1px rgba(255, 255, 255, 0.14);
}

.mao-barra .icone {
  width: 16px;
  height: 16px;
  flex: none;
}

.mao-barra strong {
  font-family: var(--fonte-titulo);
  font-size: 13px;
  letter-spacing: 0.05em;
  color: var(--dourado-forte);
  white-space: nowrap;
}

.mao-barra__contagem {
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(217, 180, 91, 0.12);
  border: 1px solid rgba(217, 180, 91, 0.26);
  color: var(--dourado);
  font-size: 10px;
  font-weight: 700;
  white-space: nowrap;
}

.mao-barra__dica {
  margin-left: auto;
  color: var(--texto-fraco);
  font-size: 10.5px;
  font-style: italic;
  white-space: nowrap;
}

.mao-barra__seta {
  display: inline-flex;
  align-items: center;
  color: var(--dourado);
  transition: transform 0.24s ease;
  transform: rotate(-90deg);
  flex: none;
}

.mao-barra__seta .icone {
  width: 14px;
  height: 14px;
}

.mao-dock:hover .mao-barra__seta,
.mao-dock--aberta .mao-barra__seta,
.mao-dock:focus-within .mao-barra__seta,
.mao-dock--comprando .mao-barra__seta {
  transform: rotate(90deg);
}

.mao-painel {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(100% + 6px);
  z-index: 1;
  max-height: min(52vh, 440px);
  overflow-y: auto;
  padding: 14px 16px 12px;
  border-radius: 16px 16px 0 0;
  border: 1px solid rgba(217, 180, 91, 0.32);
  border-bottom: none;
  background:
    radial-gradient(700px 240px at 20% 0%, rgba(217, 180, 91, 0.09), transparent 70%),
    linear-gradient(180deg, rgba(31, 24, 46, 0.99), rgba(15, 11, 25, 0.99));
  box-shadow:
    0 -22px 70px rgba(0, 0, 0, 0.62),
    0 0 30px rgba(217, 180, 91, 0.1);
  backdrop-filter: blur(14px);

  visibility: hidden;
  opacity: 0;
  transform: translateY(22px);
  pointer-events: none;
  transition:
    opacity 0.22s ease,
    transform 0.28s cubic-bezier(0.2, 0.8, 0.2, 1),
    visibility 0s linear 0.28s;
}

.mao-dock:hover .mao-painel,
.mao-dock--aberta .mao-painel,
.mao-dock:focus-within .mao-painel,
.mao-dock--comprando .mao-painel {
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
  transition:
    opacity 0.22s ease,
    transform 0.28s cubic-bezier(0.2, 0.8, 0.2, 1),
    visibility 0s linear 0s;
}

/* Carta escolhida: o painel desce e some, deixando a carta destacada
   "para fora" da mao enquanto ela e levada para a area de jogo. */
.mao-dock.mao-dock--jogando .mao-painel,
.mao-dock.mao-dock--jogando:hover .mao-painel,
.mao-dock.mao-dock--jogando:focus-within .mao-painel {
  visibility: visible;
  opacity: 0;
  transform: translateY(calc(100% + 20px));
  pointer-events: none;
  transition:
    transform 0.32s cubic-bezier(0.5, 0, 0.75, 0.4) 0.12s,
    opacity 0.2s ease 0.2s,
    visibility 0s linear 0.46s;
}

/* Dentro do painel, a zona da mao vira apenas o conteudo */
.mao-painel .zona--mao {
  padding: 0;
  border: none;
  background: transparent;
  box-shadow: none;
}

.mao-painel .zona--mao .zona__faixa {
  display: none;
}

.mao-painel .zona--mao .zona__cabecalho {
  margin-bottom: 4px;
}

.mao-painel .zona--mao .mao__cartas {
  padding: 8px 0 2px;
}

.mao-painel .zona--mao .carta {
  width: 184px;
  min-height: 338px;
}

/* ------------------------------------------------------------------
   Monte do baralho pessoal, na coluna direita do painel da mao.
   Cada carta vira uma camada deslocada; a face de cima e o verso arcano.
   ------------------------------------------------------------------ */

.mao__conteudo {
  display: flex;
  align-items: flex-start;
  gap: 18px;
}

.mao__cartas {
  flex: 1 1 auto;
  min-width: 0;
}

.mao__baralho {
  position: sticky;
  top: 0;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  /* Folga para a lombada inclinada das camadas (acima e à esquerda da face). */
  padding: 48px 10px 2px 50px;
}

.monte {
  /* Mesmo tamanho das cartas da mao (ver .mao-painel .zona--mao .carta).
     O passo de cada camada empilhada forma a espessura do monte. */
  --monte-passo-x: -6px;
  --monte-passo-y: -6px;
  position: relative;
  width: 184px;
  height: 338px;
}

.monte__carta,
.monte__face {
  position: absolute;
  inset: 0;
  border-radius: 14px;
  border: 1px solid rgba(217, 180, 91, 0.34);
}

.monte__carta {
  /* Cada camada sobe e desliza um pouco: a lombada inclinada do monte.
     Sem z-index de proposito: a ordem do DOM ja empilha certo (a mais
     distante primeiro, a de cima por ultimo) e a face pinta sobre todas.
     Assim a borda de CADA carta fica visivel na escada. */
  transform: translate(
    calc(var(--camada) * var(--monte-passo-x)),
    calc(var(--camada) * var(--monte-passo-y))
  );
  border-color: rgba(217, 180, 91, 0.5);
  background: linear-gradient(160deg, #322553, #16111f);
  box-shadow: -1px -1px 0 rgba(0, 0, 0, 0.45);
}

.monte__face {
  z-index: 200;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: var(--dourado);
  background:
    radial-gradient(circle at 50% 42%, rgba(217, 180, 91, 0.24), transparent 42%),
    repeating-linear-gradient(
      45deg,
      rgba(217, 180, 91, 0.05) 0 2.5px,
      transparent 2.5px 12px
    ),
    linear-gradient(160deg, #2b2142, #120e1e);
  box-shadow:
    inset 0 0 40px rgba(0, 0, 0, 0.5),
    0 0 26px rgba(217, 180, 91, 0.14);
}

.monte__face::before {
  content: '';
  position: absolute;
  inset: 13px;
  border: 1px solid rgba(217, 180, 91, 0.24);
  border-radius: 10px;
}

.monte__icone {
  width: 64px;
  height: 64px;
  opacity: 0.82;
  filter: drop-shadow(0 0 12px rgba(217, 180, 91, 0.55));
}

/* Baralho vazio: contorno tracejado, sem face de carta. */
.mao__baralho--vazio .monte {
  opacity: 0.55;
}

.mao__baralho--vazio .monte__face {
  background: transparent;
  border-style: dashed;
  box-shadow: none;
}

.mao__baralho--vazio .monte__face::before {
  display: none;
}

.mao__baralho--vazio .monte__icone {
  opacity: 0.4;
}

.monte__rotulo {
  position: absolute;
  left: 50%;
  bottom: 14px;
  transform: translateX(-50%);
  z-index: 300;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 12px;
  border-radius: 999px;
  background: rgba(20, 14, 32, 0.86);
  border: 1px solid rgba(217, 180, 91, 0.4);
  color: var(--dourado);
  font-size: 11px;
  white-space: nowrap;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(4px);
}

.monte__rotulo-icone {
  width: 13px;
  height: 13px;
  flex: none;
}

.monte__contagem {
  font-size: 13px;
}

.monte__rotulo small {
  color: var(--texto-fraco);
}

@media (max-width: 520px) {
  .mao__conteudo {
    gap: 12px;
  }

  .mao__baralho {
    padding: 42px 4px 2px 28px;
  }

  .monte {
    /* Acompanha a carta da mao no mesmo breakpoint (160x306). */
    --monte-passo-x: -3px;
    --monte-passo-y: -5px;
    width: 160px;
    height: 306px;
  }

  .monte__icone {
    width: 54px;
    height: 54px;
  }

  .monte__rotulo {
    bottom: 10px;
    padding: 3px 10px;
    font-size: 10px;
  }

  .monte__rotulo small {
    display: none;
  }
}

@media (max-width: 520px) {
  .mao-barra {
    gap: 7px;
    padding: 0 11px;
  }

  .mao-barra__dica {
    display: none;
  }

  .mao-barra__seta {
    margin-left: auto;
  }

  .mao-painel {
    max-height: 58vh;
    padding: 12px 12px 10px;
  }

  .mao-painel .zona--mao .carta {
    width: 160px;
    min-height: 306px;
  }
}

/* ------------------------------------------------------------------
   Recursos / chips
   ------------------------------------------------------------------ */

.essencia {
  --cor: var(--qualquer);
  --cor-fundo: rgba(154, 160, 181, 0.16);
  --cor-borda: rgba(154, 160, 181, 0.42);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  min-height: 23px;
  padding: 2px 7px 2px 4px;
  border-radius: 999px;
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  color: var(--texto);
  font-size: 11px;
  font-weight: 800;
  line-height: 1;
  box-shadow: inset 0 1px rgba(255, 255, 255, 0.12);
  vertical-align: middle;
}

.essencia__icone {
  width: 15px;
  height: 15px;
  color: var(--cor);
  flex: none;
}

.essencia__qtd {
  min-width: 9px;
  text-align: center;
}

.essencia__nome {
  font-size: 10px;
  font-weight: 700;
}

.essencia__igual {
  font-size: 9px;
  opacity: 0.8;
}

.essencia--grande {
  min-height: 34px;
  padding: 5px 12px;
  font-size: 14px;
  gap: 5px;
}

.essencia--grande .essencia__icone {
  width: 19px;
  height: 19px;
}

.essencia--qualquer {
  --cor: var(--qualquer);
  --cor-fundo: rgba(154, 160, 181, 0.14);
  --cor-borda: rgba(154, 160, 181, 0.38);
}

.custo-vazio {
  font-size: 9.5px;
  font-style: italic;
  color: var(--texto-fraco);
}

/* Cores por recurso (chaves internas preservadas) */
.essencia--elan,
.hud__recurso--elan {
  --cor: var(--fogo);
  --cor-fundo: rgba(224, 85, 72, 0.17);
  --cor-borda: rgba(224, 85, 72, 0.48);
}

.essencia--vida,
.hud__recurso--vida {
  --cor: var(--ar);
  --cor-fundo: rgba(76, 174, 90, 0.16);
  --cor-borda: rgba(76, 174, 90, 0.46);
}

.essencia--calma,
.hud__recurso--calma {
  --cor: var(--agua);
  --cor-fundo: rgba(74, 134, 214, 0.17);
  --cor-borda: rgba(74, 134, 214, 0.48);
}

.essencia--morte,
.hud__recurso--morte {
  --cor: var(--terra);
  --cor-fundo: rgba(164, 113, 63, 0.18);
  --cor-borda: rgba(164, 113, 63, 0.52);
}

.essencia--ouro,
.hud__recurso--ouro {
  --cor: var(--ouro);
  --cor-fundo: rgba(224, 177, 58, 0.16);
  --cor-borda: rgba(224, 177, 58, 0.48);
}

/* ------------------------------------------------------------------
   Cartas
   ------------------------------------------------------------------ */

.carta {
  --acento: #9d8bc9;
  --fundo-a: #241c36;
  --fundo-b: #151020;
  --carta-pad: 10px;
  position: relative;
  width: 204px;
  min-height: 348px;
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: var(--carta-pad);
  border-radius: 14px;
  background: linear-gradient(168deg, var(--fundo-a) 0%, var(--fundo-b) 100%);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-color: color-mix(in srgb, var(--acento) 34%, rgba(255, 255, 255, 0.12));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.1),
    inset 0 0 0 1px rgba(0, 0, 0, 0.34),
    0 2px 0 rgba(0, 0, 0, 0.55),
    0 14px 30px rgba(0, 0, 0, 0.48);
  font-size: 12px;
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease,
    border-color 0.18s ease,
    opacity 0.18s ease;
  cursor: default;
  user-select: none;
  overflow: visible;
}

.carta::before {
  content: '';
  position: absolute;
  inset: 0 0 auto;
  z-index: 2;
  height: 3px;
  border-radius: 12px 12px 0 0;
  background: linear-gradient(90deg, transparent, var(--acento), transparent);
  opacity: 0.85;
}

.carta::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.045), transparent 18%),
    radial-gradient(150px 100px at 100% 0%, rgba(255, 255, 255, 0.055), transparent 70%);
}

.carta > * {
  z-index: 1;
}

/* ------------------------------------------------------------------
   Arte da carta (opcional, carregada de assets/cards/<nome>.png)
   A imagem ocupa o topo e "sangra" ate as bordas; o placeholder arcano
   fica atras dela para que cartas sem arte mantenham o mesmo formato.
   ------------------------------------------------------------------ */

.carta__arte {
  position: relative;
  /* A arte ocupa o espaco que sobra: cartas com pouco texto ganham uma
     ilustracao maior em vez de um rodape vazio. Cartas cheias mantem o
     minimo legivel. */
  flex: 1 1 auto;
  min-height: 96px;
  margin: calc(var(--carta-pad) * -1) calc(var(--carta-pad) * -1) 0;
  overflow: hidden;
  border-radius: 12px 12px 0 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  background: linear-gradient(160deg, var(--fundo-a), var(--fundo-b));
  isolation: isolate;
}

.carta__arte::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(9, 7, 15, 0) 46%, rgba(9, 7, 15, 0.46) 100%),
    radial-gradient(120% 90% at 50% 0%, rgba(255, 255, 255, 0.09), transparent 58%);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.055);
}

/* Arte procedural: um sigilo unico por carta, com a cor da essencia
   dominante. Nada aqui e um "icone de imagem faltando"; o PNG real, quando
   existir, simplesmente cobre este fundo. */
.carta__arte-vazio {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: block;
  overflow: hidden;
  color: var(--acento);
  background:
    radial-gradient(
      72% 82% at var(--arte-x, 32%) var(--arte-y, 32%),
      rgba(217, 180, 91, 0.26),
      transparent 62%
    ),
    radial-gradient(
      70% 70% at 82% 100%,
      rgba(139, 123, 216, 0.2),
      transparent 70%
    ),
    repeating-linear-gradient(
      135deg,
      rgba(255, 255, 255, 0.02) 0 1px,
      transparent 1px 11px
    ),
    linear-gradient(160deg, var(--fundo-a), var(--fundo-b));
  background:
    radial-gradient(
      72% 82% at var(--arte-x, 32%) var(--arte-y, 32%),
      color-mix(in srgb, var(--arte-cor, #d9b45b) 42%, transparent),
      transparent 64%
    ),
    radial-gradient(
      70% 70% at 82% 100%,
      color-mix(in srgb, var(--arte-cor2, #8b7bd8) 30%, transparent),
      transparent 72%
    ),
    repeating-linear-gradient(
      135deg,
      rgba(255, 255, 255, 0.02) 0 1px,
      transparent 1px 11px
    ),
    linear-gradient(160deg, var(--fundo-a), var(--fundo-b));
}

.carta__arte-vazio::before {
  content: '';
  position: absolute;
  inset: -34%;
  opacity: 0.52;
  background: conic-gradient(
    from var(--arte-giro, 0deg) at 50% 50%,
    transparent 0 11deg,
    color-mix(in srgb, var(--arte-cor, #d9b45b) 16%, transparent) 11deg 12deg,
    transparent 12deg 24deg
  );
  transform: rotate(-10deg);
}

.carta__arte-vazio::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(
    120% 100% at 50% 40%,
    transparent 44%,
    rgba(6, 4, 12, 0.44) 100%
  );
}

.carta__arte-sigilo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0.92;
}

.carta__arte-sigilo circle,
.carta__arte-sigilo path {
  fill: none;
  stroke: var(--arte-cor, #d9b45b);
  stroke-width: 1;
  opacity: 0.55;
  vector-effect: non-scaling-stroke;
}

.carta__arte-sigilo .carta__arte-aura {
  stroke: var(--arte-cor2, #8b7bd8);
  opacity: 0.28;
}

.carta__arte-sigilo .carta__arte-estrelas circle {
  fill: var(--arte-cor2, #8b7bd8);
  stroke: none;
  opacity: 0.85;
}

.carta__arte-sigilo .carta__arte-horizonte {
  fill: var(--arte-cor, #d9b45b);
  stroke: none;
  opacity: 0.2;
}

.carta__arte-medalhao {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  color: var(--arte-cor, #d9b45b);
  background: rgba(10, 7, 18, 0.9);
  background: radial-gradient(
    circle at 32% 26%,
    color-mix(in srgb, var(--arte-cor, #d9b45b) 32%, #141020),
    rgba(10, 7, 18, 0.94) 74%
  );
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-color: color-mix(in srgb, var(--arte-cor, #d9b45b) 55%, transparent);
  box-shadow:
    0 0 20px color-mix(in srgb, var(--arte-cor, #d9b45b) 26%, transparent),
    inset 0 0 14px rgba(255, 255, 255, 0.06);
}

.carta__arte-medalhao .icone,
.carta__arte-vazio .carta__arte-medalhao .icone {
  width: 27px;
  height: 27px;
  opacity: 0.96;
  filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.55));
}

.carta__arte::before {
  content: '';
  position: absolute;
  inset: 5px;
  z-index: 3;
  pointer-events: none;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-color: color-mix(in srgb, var(--arte-cor, #d9b45b) 26%, rgba(255, 255, 255, 0.08));
  border-radius: 8px 8px 0 0;
  box-shadow: inset 0 0 18px rgba(0, 0, 0, 0.28);
}

.carta__arte-img {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform 0.4s ease;
}

.zona--mao .carta:hover .carta__arte-img,
.carta--escolhivel:hover .carta__arte-img {
  transform: scale(1.045);
}

.carta__marca-dagua {
  position: absolute !important;
  right: 2px;
  bottom: 2px;
  z-index: 0 !important;
  width: 74px;
  height: 74px;
  color: #fff;
  opacity: 0.045;
  pointer-events: none;
}

.carta__marca-dagua .icone {
  width: 100%;
  height: 100%;
}

.carta__bloco {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 5px 6px;
  border-radius: 8px;
}

.carta__bloco-rotulo {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 9.5px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.09em;
}

.carta__bloco-rotulo .icone {
  width: 13px;
  height: 13px;
}

/* Area de CUSTO: sempre no topo, com o valor de VP a direita */
.carta__bloco--custo {
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.018));
  border: 1px solid rgba(255, 255, 255, 0.1);
}

.carta__bloco--custo .carta__bloco-rotulo {
  color: #d8cff0;
  margin-right: 1px;
}

/* Area de COLETA: verde, logo abaixo do texto */
.carta__bloco--coleta {
  background: linear-gradient(90deg, rgba(88, 192, 122, 0.14), rgba(88, 192, 122, 0.028));
  border: 1px solid rgba(88, 192, 122, 0.3);
  border-left: 3px solid var(--vida);
}

.carta__bloco--coleta .carta__bloco-rotulo {
  color: #a9e6b5;
}

/* Area de PODER: azul, com custo e efeito separados */
.carta__bloco--poder {
  background: linear-gradient(90deg, rgba(111, 157, 224, 0.12), rgba(111, 157, 224, 0.025));
  border: 1px solid rgba(111, 157, 224, 0.3);
  border-left: 3px solid var(--azul);
}

.carta__bloco--poder .carta__bloco-rotulo {
  color: #c6dcff;
}

/* Area de recursos guardados: dourada tracejada */
.carta__bloco--marcadores {
  background: linear-gradient(90deg, rgba(224, 177, 58, 0.11), rgba(224, 177, 58, 0.025));
  border: 1px dashed rgba(224, 177, 58, 0.5);
}

.carta__bloco--marcadores .carta__bloco-rotulo {
  color: var(--dourado-forte);
}

.carta__custo,
.carta__coleta,
.carta__marcadores,
.carta__poder-custo {
  display: flex;
  flex-wrap: wrap;
  gap: 3px;
  align-items: center;
}

.carta__identidade {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 5px 7px 6px;
  margin: 0 -2px;
  border-radius: 8px;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.055), transparent 82%);
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--acento) 14%, transparent),
    transparent 82%
  );
  border-left: 2px solid rgba(255, 255, 255, 0.18);
  border-left-color: color-mix(in srgb, var(--acento) 62%, transparent);
}

.carta__tipo {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 9.5px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  color: var(--acento);
}

.carta__tipo .icone {
  width: 13px;
  height: 13px;
}

.carta__nome {
  font-family: var(--fonte-titulo);
  font-size: 15.5px;
  font-weight: 700;
  line-height: 1.18;
  color: var(--texto);
  text-wrap: balance;
}

.carta__lado {
  margin-left: 4px;
  font-size: 12px;
  color: var(--dourado-forte);
}

/* Seletor solar/noturno dos Lugares de Poder na mesa. */
.carta__lados {
  display: inline-flex;
  gap: 3px;
  margin-left: 4px;
  vertical-align: middle;
}

.carta__lados .carta__lado {
  margin-left: 0;
}

.carta__lado--opcao {
  padding: 0 4px;
  border: 1px solid rgba(217, 180, 91, 0.32);
  border-radius: 999px;
  background: rgba(217, 180, 91, 0.1);
  color: var(--dourado-forte);
  font: inherit;
  line-height: 1.2;
  cursor: pointer;
  opacity: 0.55;
  transition:
    opacity 0.15s ease,
    background 0.15s ease,
    border-color 0.15s ease;
}

.carta__lado--opcao:hover {
  opacity: 1;
  background: rgba(217, 180, 91, 0.22);
}

.carta__lado--ativo {
  opacity: 1;
  border-color: rgba(217, 180, 91, 0.7);
  background: rgba(217, 180, 91, 0.24);
}

.carta--indisponivel .carta__lado--opcao {
  cursor: pointer;
}

.carta__texto {
  flex: 1;
  font-size: 12px;
  line-height: 1.45;
  color: rgba(236, 231, 248, 0.93);
}

.carta__vp {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  min-width: 32px;
  height: 32px;
  padding: 0 7px;
  border-radius: 999px;
  background: radial-gradient(circle at 30% 22%, #ffe9ae, var(--dourado));
  color: #241a05;
  font-weight: 900;
  font-size: 15px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  border: 1px solid rgba(255, 255, 255, 0.36);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.5),
    0 0 14px rgba(217, 180, 91, 0.45);
  flex: none;
}

.carta__vp .icone {
  width: 14px;
  height: 14px;
}

.carta__vp small {
  font-size: 7.5px;
  font-weight: 800;
}

.carta__poderes {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.carta__poder {
  padding-top: 5px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.carta__poder:first-child {
  padding-top: 0;
  border-top: none;
}

.carta__poder-cabecalho {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 5px;
}

.carta__poder-nome {
  font-size: 10.5px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #dbe7ff;
}

.carta__poder-efeito {
  display: flex;
  gap: 4px;
  margin-top: 3px;
  font-size: 11.4px;
  line-height: 1.4;
  color: #dbe7ff;
}

.carta__seta {
  display: inline-flex;
  align-items: center;
  color: #8fb7f0;
  margin-top: 2px;
}

.carta__seta .icone {
  width: 11px;
  height: 11px;
}

.carta__selo {
  position: absolute;
  right: -6px;
  bottom: -6px;
  z-index: 3;
  padding: 2px 8px;
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-radius: 999px;
  background: #3a3350;
  color: #cfc6ea;
  border: 1px solid rgba(255, 255, 255, 0.12);
}

.carta__selo--virada {
  background: #4a2b34;
  color: #f0b7c3;
}

/* Variacoes por tipo de carta */
.carta--artefato {
  --acento: #d6a66a;
  --fundo-a: #2b2119;
  --fundo-b: #171117;
  border-color: rgba(214, 166, 106, 0.28);
}

.carta--monumento {
  --acento: #6f9de0;
  --fundo-a: #1d2842;
  --fundo-b: #131826;
  border-color: rgba(111, 157, 224, 0.3);
}

.carta--lugar {
  --acento: #a082f0;
  --fundo-a: #271b40;
  --fundo-b: #151022;
  border-color: rgba(160, 130, 240, 0.32);
}

.carta--deus {
  --acento: #58c07a;
  --fundo-a: #1e3327;
  --fundo-b: #122019;
  border-color: rgba(88, 192, 122, 0.32);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.12),
    inset 0 0 0 1px rgba(0, 0, 0, 0.34),
    0 0 28px rgba(88, 192, 122, 0.08),
    0 14px 30px rgba(0, 0, 0, 0.48);
}

.carta--item {
  --acento: #e0b13a;
  --fundo-a: #33271a;
  --fundo-b: #1e1710;
  border-color: rgba(224, 177, 58, 0.32);
}

/* Card compacto */
.carta--compacta {
  --carta-pad: 8px;
  width: 164px;
  min-height: 284px;
  gap: 5px;
  font-size: 11.5px;
}

.carta--compacta .carta__arte {
  min-height: 82px;
}

.carta--compacta .carta__nome {
  font-size: 13px;
}

.carta--compacta .carta__bloco {
  padding: 4px 5px;
  gap: 3px;
}

.carta--compacta .carta__bloco-rotulo {
  font-size: 9px;
}

.carta--compacta .carta__tipo {
  font-size: 9px;
}

.carta--compacta .carta__poder-nome {
  font-size: 9.5px;
}

.carta--compacta .carta__poder-efeito {
  font-size: 10.8px;
}

.carta--compacta .carta__vp {
  min-width: 26px;
  height: 26px;
  font-size: 12px;
  padding: 0 4px;
}

.carta--compacta .carta__vp .icone {
  width: 12px;
  height: 12px;
}

.carta--compacta .carta__texto {
  display: none;
}

/* Estados / interacoes das cartas */
.zona--mao .carta {
  width: 184px;
  min-height: 338px;
  cursor: pointer;
}

.zona--mao .carta:hover {
  transform: translateY(-16px) scale(1.04);
  z-index: 5;
  box-shadow: 0 20px 44px rgba(0, 0, 0, 0.62);
}

.zona--mesa .carta[data-acao] {
  cursor: pointer;
}

.zona--mesa .carta[data-acao]:hover {
  transform: translateY(-5px);
  border-color: var(--dourado);
}

.carta--disponivel {
  border-color: rgba(88, 192, 122, 0.58);
  box-shadow:
    0 0 0 1px rgba(88, 192, 122, 0.14),
    0 0 18px rgba(88, 192, 122, 0.2),
    0 8px 24px rgba(0, 0, 0, 0.45);
}

.carta--indisponivel {
  opacity: 0.55;
  filter: saturate(0.55) brightness(0.9);
  cursor: not-allowed;
}

.zona--mao .carta--indisponivel:hover {
  transform: none;
  box-shadow: var(--sombra-carta);
  border-color: rgba(255, 255, 255, 0.12);
}

.zona--mesa .carta--indisponivel {
  opacity: 0.68;
  filter: saturate(0.55) brightness(0.94);
}

.carta--poder-indisponivel {
  opacity: 0.82;
  filter: saturate(0.7) brightness(0.96);
}

.carta--virada.carta--poder-indisponivel {
  opacity: 0.62;
}

.carta--descartavel {
  border-color: rgba(217, 87, 87, 0.72);
  box-shadow: 0 0 18px rgba(217, 87, 87, 0.22);
}

.carta--reclamavel {
  border-color: rgba(217, 180, 91, 0.66);
  box-shadow:
    0 0 0 1px rgba(217, 180, 91, 0.1),
    0 0 18px rgba(217, 180, 91, 0.18),
    0 10px 24px rgba(0, 0, 0, 0.44);
}

.carta--usavel {
  border-color: rgba(111, 157, 224, 0.8);
  box-shadow:
    0 0 0 1px rgba(111, 157, 224, 0.16),
    0 0 20px rgba(111, 157, 224, 0.26),
    0 10px 24px rgba(0, 0, 0, 0.42);
  cursor: pointer;
}

.carta--usavel:hover {
  transform: translateY(-5px);
}

.carta--virada {
  opacity: 0.76;
  filter: grayscale(0.38);
}

.carta--virada::before {
  background: #4a3f63;
}

.carta--virada::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
  background: repeating-linear-gradient(
    -45deg,
    rgba(255, 255, 255, 0.055) 0 6px,
    transparent 6px 12px
  );
  pointer-events: none;
}

.carta--alvo {
  border-color: rgba(240, 207, 122, 0.85);
  cursor: crosshair;
  animation: alvo-brilho 1.4s ease-in-out infinite;
}

@keyframes alvo-brilho {
  0%,
  100% {
    box-shadow: 0 0 10px rgba(240, 207, 122, 0.25);
  }
  50% {
    box-shadow: 0 0 24px rgba(240, 207, 122, 0.58);
  }
}

.carta--alvo-marcado {
  border-color: var(--perigo);
  box-shadow: 0 0 22px rgba(217, 87, 87, 0.58);
  transform: scale(1.03);
}

.carta--escolhivel {
  cursor: pointer;
}

.carta--escolhivel:hover {
  transform: translateY(-6px);
  border-color: var(--dourado);
}

.carta--escolhida {
  border-color: var(--dourado-forte);
  box-shadow: 0 0 26px rgba(240, 207, 122, 0.62);
  transform: translateY(-8px);
}

.carta--entrando {
  animation: entrada-carta 0.58s cubic-bezier(0.18, 0.9, 0.3, 1.25);
}

@keyframes entrada-carta {
  0% {
    opacity: 0;
    transform: translateY(20px) scale(0.92);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.elemento--tremendo {
  animation: tremor 0.4s ease;
}

@keyframes tremor {
  0%,
  100% {
    transform: translateX(0);
  }
  20% {
    transform: translateX(-6px);
  }
  40% {
    transform: translateX(6px);
  }
  60% {
    transform: translateX(-4px);
  }
  80% {
    transform: translateX(4px);
  }
}

/* ------------------------------------------------------------------
   Botoes
   ------------------------------------------------------------------ */

.botao {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-family: var(--fonte-texto);
  font-size: 13px;
  font-weight: 700;
  padding: 9px 16px;
  border-radius: 10px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  background: linear-gradient(180deg, #342b4d, #231c35);
  color: var(--texto);
  cursor: pointer;
  transition:
    transform 0.13s ease,
    filter 0.13s ease,
    box-shadow 0.13s ease,
    background 0.13s ease;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.28), inset 0 1px rgba(255, 255, 255, 0.08);
}

.botao .icone {
  width: 15px;
  height: 15px;
}

.botao:hover:not(:disabled) {
  transform: translateY(-2px);
  filter: brightness(1.16);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.36), inset 0 1px rgba(255, 255, 255, 0.12);
}

.botao:active:not(:disabled) {
  transform: translateY(0);
}

.botao:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.botao--primario {
  background: linear-gradient(180deg, #f0cf7a, #b98f34);
  border-color: #f5dc9a;
  color: #241a05;
  text-shadow: 0 1px rgba(255, 255, 255, 0.28);
}

.botao--destaque {
  background: linear-gradient(180deg, #79a8ea, #3d68ad);
  border-color: #a8c6f2;
  color: #0d1522;
}

.botao--secundario {
  background: linear-gradient(180deg, #3a3154, #27203b);
}

.botao--perigo {
  background: linear-gradient(180deg, #d05c5c, #963838);
  border-color: #e58b8b;
  color: #fff2f2;
}

.botao--fantasma {
  background: transparent;
  box-shadow: none;
}

.botao--ativo {
  background: linear-gradient(180deg, #d05c5c, #7e2f2f);
  border-color: #f0a3a3;
}

.botao--pequeno {
  padding: 4px 10px;
  font-size: 14px;
  line-height: 1.1;
  min-width: 30px;
}

.botao--log {
  margin-left: auto;
  padding: 5px 10px;
  font-size: 11.5px;
  font-weight: 700;
  background: rgba(255, 255, 255, 0.035);
  border-color: rgba(180, 160, 255, 0.2);
  color: var(--texto-suave);
  box-shadow: none;
}

.botao--log .icone {
  width: 14px;
  height: 14px;
}

.botao--log-ativo {
  color: var(--dourado-forte);
  border-color: rgba(217, 180, 91, 0.42);
  background: rgba(217, 180, 91, 0.11);
}

.botao--som {
  padding: 5px 10px;
  font-size: 11.5px;
  font-weight: 700;
  background: rgba(255, 255, 255, 0.035);
  border-color: rgba(180, 160, 255, 0.2);
  color: var(--texto-suave);
  box-shadow: none;
}

.botao--som .icone {
  width: 15px;
  height: 15px;
}

.botao--som-mudo {
  color: #e58b8b;
  border-color: rgba(229, 139, 139, 0.4);
  background: rgba(229, 139, 139, 0.1);
}

.botao--itens {
  padding: 5px 10px;
  font-size: 11.5px;
  font-weight: 700;
  background: rgba(255, 255, 255, 0.035);
  border-color: rgba(180, 160, 255, 0.2);
  color: var(--texto-suave);
  box-shadow: none;
}

.botao--itens .icone {
  width: 15px;
  height: 15px;
}

.botao--itens-ativo {
  color: var(--dourado-forte);
  border-color: rgba(217, 180, 91, 0.42);
  background: rgba(217, 180, 91, 0.11);
}

/* ------------------------------------------------------------------
   Modais
   ------------------------------------------------------------------ */

.modal-fundo {
  position: fixed;
  inset: 0;
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(8, 6, 14, 0.8);
  backdrop-filter: blur(7px);
}

.modal {
  width: min(1080px, 96vw);
  max-height: 90vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background:
    radial-gradient(600px 240px at 20% 0%, rgba(139, 123, 216, 0.12), transparent 70%),
    linear-gradient(170deg, #241d36, #141021);
  border: 1px solid rgba(180, 160, 255, 0.22);
  border-radius: 18px;
  padding: 0;
  box-shadow: 0 34px 90px rgba(0, 0, 0, 0.74), inset 0 1px rgba(255, 255, 255, 0.06);
}

.modal__titulo {
  flex: none;
  padding: 22px 24px 0;
  font-size: 22px;
  color: var(--dourado-forte);
  margin-bottom: 8px;
}

.modal__descricao {
  flex: none;
  padding: 0 24px;
  font-size: 13.5px;
  color: var(--texto-suave);
  margin: 0 0 14px;
  line-height: 1.5;
}

.modal__corpo {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 0 24px 16px;
}

.modal__acoes {
  flex: none;
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  flex-wrap: wrap;
  padding: 14px 24px 18px;
  border-top: 1px solid var(--painel-borda);
  background: linear-gradient(0deg, #141021 68%, rgba(20, 16, 33, 0.9));
  backdrop-filter: blur(8px);
}

.modal__resumo {
  margin: 12px 0 0;
  font-size: 13px;
  color: var(--texto-suave);
}

.modal__resumo--ok {
  color: var(--ok);
  font-weight: 800;
}

.revisao {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: stretch;
}

.revisao__separador {
  width: 100%;
  font-size: 12.5px;
  color: var(--texto-suave);
  border-top: 1px dashed var(--painel-borda);
  padding-top: 12px;
  margin: 6px 0;
}

.escolhas {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 11px;
}

.escolha {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 9px;
  border-radius: 12px;
  border: 1px solid var(--painel-borda);
  background: rgba(255, 255, 255, 0.04);
  cursor: pointer;
  transition: transform 0.14s ease, border-color 0.14s ease, box-shadow 0.14s ease;
  color: var(--texto);
}

.escolha:hover {
  transform: translateY(-3px);
  border-color: var(--dourado);
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.35);
}

.escolha .carta {
  width: 100%;
  box-shadow: none;
}

.escolha__rotulo {
  font-size: 14px;
  font-weight: 600;
}

.poder-opcao {
  display: flex;
  flex-direction: column;
  gap: 5px;
  text-align: left;
  width: 100%;
}

.poder-opcao .carta__poder {
  border-top: none;
  padding-top: 0;
}

.seletor-essencias {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(175px, 1fr));
  gap: 10px;
}

.seletor-essencias__linha {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 11px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--painel-borda);
}

.seletor-essencias__controles {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}

.seletor-essencias__valor {
  min-width: 22px;
  text-align: center;
  font-weight: 800;
}

/* ------------------------------------------------------------------
   Avisos, alvo e tela final
   ------------------------------------------------------------------ */

.aviso {
  position: fixed;
  left: 50%;
  bottom: 92px;
  transform: translate(-50%, 16px);
  z-index: 70;
  padding: 10px 18px;
  border-radius: 11px;
  background: linear-gradient(180deg, #352c4e, #241d36);
  border: 1px solid var(--painel-borda);
  font-size: 13px;
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.55);
  opacity: 0;
  transition: opacity 0.25s ease, transform 0.25s ease;
  pointer-events: none;
}

.aviso--visivel {
  opacity: 1;
  transform: translate(-50%, 0);
}

.aviso--erro {
  border-color: rgba(217, 87, 87, 0.6);
  color: #f5c2c2;
}

.aviso--alvo {
  bottom: auto;
  top: 76px;
  background: #3d3111;
  border-color: var(--dourado);
  color: var(--dourado-forte);
}

.faixa-alvo {
  position: fixed;
  top: 72px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 40;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 8px 16px;
  border-radius: 999px;
  background: linear-gradient(180deg, #4a3b14, #34290c);
  border: 1px solid var(--dourado);
  color: var(--dourado-forte);
  font-size: 12.5px;
  box-shadow: var(--sombra);
  max-width: calc(100vw - 32px);
}

.faixa-alvo .icone {
  width: 15px;
  height: 15px;
}

.fim-fundo {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: rgba(8, 6, 14, 0.86);
  backdrop-filter: blur(7px);
}

.fim {
  width: min(540px, 92vw);
  padding: 28px 30px;
  border-radius: 18px;
  background:
    radial-gradient(500px 220px at 50% 0%, rgba(217, 180, 91, 0.16), transparent 70%),
    linear-gradient(170deg, #251d38, #141021);
  border: 1px solid rgba(217, 180, 91, 0.28);
  text-align: center;
  box-shadow: 0 34px 90px rgba(0, 0, 0, 0.78);
}

.fim__titulo {
  font-size: 28px;
  color: var(--dourado-forte);
  margin-bottom: 18px;
  text-shadow: 0 0 26px rgba(217, 180, 91, 0.35);
}

.fim__placar {
  list-style: none;
  margin: 0 0 12px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.fim__linha {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 13px;
  border-radius: 11px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--painel-borda);
  font-size: 14px;
}

.fim__linha--humano {
  border-color: rgba(217, 180, 91, 0.5);
  background: rgba(217, 180, 91, 0.07);
}

.fim__linha strong {
  flex: 1;
  text-align: left;
}

.fim__ouro {
  color: var(--ouro);
}

.fim__nota {
  font-size: 12px;
  color: var(--texto-suave);
  margin: 0 0 18px;
}

.carregando,
.erro-fatal {
  grid-column: 1 / -1;
  align-self: center;
  justify-self: center;
  text-align: center;
  color: var(--texto-suave);
  font-size: 15px;
}

.erro-fatal h1 {
  color: var(--perigo);
  margin-bottom: 10px;
}

/* ------------------------------------------------------------------
   Responsivo
   ------------------------------------------------------------------ */

@media (max-width: 1280px) {
  .hud__recurso {
    min-width: 76px;
  }
}

@media (max-width: 1180px) {
  body {
    overflow: auto;
  }

  .app {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto auto;
    height: auto;
    min-height: 100vh;
  }

  .mesa-tres-colunas {
    grid-template-columns: minmax(0, 1fr);
  }

  .painel-log--flutuante {
    top: 8px;
    right: 8px;
    bottom: 8px;
    width: min(390px, calc(100vw - 16px));
    max-height: none;
  }

  .painel-itens {
    top: 8px;
    right: 8px;
    bottom: 8px;
    width: min(430px, calc(100vw - 16px));
  }

  .tabuleiro {
    overflow: visible;
  }

  .barra-acoes {
    position: sticky;
    bottom: calc(var(--altura-mao-barra) + var(--app-pad) * 2);
  }

  .carta {
    width: 190px;
    min-height: 336px;
  }

  .carta--compacta {
    width: 156px;
    min-height: 278px;
  }
}

@media (max-width: 820px) {
  .app {
    --app-pad: 8px;
    padding: var(--app-pad);
    padding-bottom: calc(var(--altura-mao-barra) + var(--app-pad) * 2);
    gap: 9px;
  }

  .cabecalho {
    padding: 9px 11px 10px;
  }

  .cabecalho__marca {
    font-size: 19px;
  }

  .cabecalho__turno {
    width: 100%;
    margin-left: 0;
    justify-content: center;
    padding-top: 4px;
  }

  .hud {
    align-items: flex-start;
  }

  .hud__identidade {
    border-right: none;
    padding-right: 0;
  }

  .hud__recursos {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    width: 100%;
    gap: 5px;
  }

  .hud__recurso {
    min-width: 0;
    padding: 5px;
    justify-content: center;
    gap: 4px;
  }

  .hud__recurso-nome {
    display: none;
  }

  .hud__recurso-icone {
    width: 25px;
    height: 25px;
  }

  .hud__recurso-qtd {
    font-size: 15px;
  }

  .hud__extras {
    width: 100%;
  }

  .zona {
    padding: 0 10px 10px;
  }

  .zona__faixa {
    margin: 0 -10px 9px;
    padding: 7px 10px;
  }

  .zona__sub {
    display: none;
  }

  .zona__componentes {
    padding: 8px;
    gap: 8px;
  }

  .carta,
  .zona--mao .carta {
    width: 174px;
    min-height: 320px;
  }

  .carta--compacta {
    width: 148px;
    min-height: 264px;
  }

  .mesa-tres-colunas .zona--jogador .carta {
    width: 168px;
    min-height: 320px;
  }

  .mesa-tres-colunas .zona--mesa .carta {
    width: 178px;
    min-height: 340px;
  }

  .mesa-tres-colunas .zona--oponente .carta {
    width: 152px;
    min-height: 272px;
  }

  .bloco__lista--lugares .carta {
    width: 176px;
  }

  .bloco__lista--itens .carta {
    width: 150px;
  }

  .modal {
    padding: 0;
  }

  .modal__titulo {
    padding: 16px 16px 0;
    font-size: 19px;
  }

  .modal__descricao {
    padding: 0 16px;
  }

  .modal__corpo {
    padding: 0 16px 14px;
  }

  .modal__acoes {
    padding: 12px 16px 14px;
  }
}

@media (max-width: 520px) {
  .cabecalho__info .ficha--token {
    display: none;
  }

  .hud__avatar {
    width: 32px;
    height: 32px;
  }

  .zona__cabecalho h2 {
    font-size: 14.5px;
  }

  .carta,
  .zona--mao .carta {
    width: 160px;
    min-height: 304px;
  }

  .carta--compacta {
    width: 142px;
    min-height: 258px;
  }

  .mesa-tres-colunas .zona--jogador .carta {
    width: 156px;
    min-height: 312px;
  }

  .mesa-tres-colunas .zona--mesa .carta {
    width: 164px;
    min-height: 318px;
  }

  .mesa-tres-colunas .zona--oponente .carta {
    width: 144px;
    min-height: 270px;
  }
}

/* ------------------------------------------------------------------
   Fase de coleta: destaca a area de coleta dos cards
   ------------------------------------------------------------------ */

.app--coleta .carta__bloco--coleta {
  border-color: rgba(88, 192, 122, 0.78);
  border-left-color: #7fe89a;
  background: linear-gradient(90deg, rgba(88, 192, 122, 0.24), rgba(88, 192, 122, 0.06));
  box-shadow:
    0 0 18px rgba(88, 192, 122, 0.28),
    inset 0 0 14px rgba(88, 192, 122, 0.08);
  animation: coleta-destaque 2.2s ease-in-out infinite;
}

.app--coleta .carta__bloco--coleta .carta__bloco-rotulo {
  color: #d6ffe0;
  font-size: 9.5px;
  letter-spacing: 0.16em;
  text-shadow: 0 0 10px rgba(88, 192, 122, 0.7);
}

.app--coleta .carta__bloco--coleta .essencia {
  box-shadow:
    0 0 12px var(--cor-borda),
    inset 0 1px rgba(255, 255, 255, 0.16);
}

.app--coleta .carta__bloco--coleta .essencia__qtd {
  font-size: 12px;
}

@keyframes coleta-destaque {
  0%,
  100% {
    box-shadow:
      0 0 12px rgba(88, 192, 122, 0.2),
      inset 0 0 12px rgba(88, 192, 122, 0.06);
  }
  50% {
    box-shadow:
      0 0 26px rgba(88, 192, 122, 0.42),
      inset 0 0 16px rgba(88, 192, 122, 0.12);
  }
}

/* ------------------------------------------------------------------
   Efeitos de jogo: banners, flash, carta voadora, pulsos e log
   ------------------------------------------------------------------ */

.anuncio {
  position: fixed;
  top: 23%;
  left: 0;
  right: 0;
  z-index: 90;
  width: fit-content;
  max-width: calc(100vw - 24px);
  margin-inline: auto;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 28px;
  border-radius: 14px;
  background:
    linear-gradient(180deg, rgba(32, 24, 48, 0.97), rgba(15, 11, 25, 0.94));
  border: 1px solid var(--anuncio-cor, var(--dourado));
  box-shadow:
    0 24px 70px rgba(0, 0, 0, 0.65),
    0 0 34px var(--anuncio-brilho, rgba(217, 180, 91, 0.24));
  backdrop-filter: blur(10px);
  pointer-events: none;
  opacity: 0;
  text-align: center;
}

.anuncio--dourado {
  --anuncio-cor: var(--dourado-forte);
  --anuncio-brilho: rgba(217, 180, 91, 0.3);
}

.anuncio--verde {
  --anuncio-cor: #8ef0a6;
  --anuncio-brilho: rgba(88, 192, 122, 0.32);
}

.anuncio--vermelho {
  --anuncio-cor: #ff9d9d;
  --anuncio-brilho: rgba(217, 87, 87, 0.34);
}

.anuncio--azul {
  --anuncio-cor: #9cc4ff;
  --anuncio-brilho: rgba(74, 134, 214, 0.32);
}

.anuncio--visivel {
  opacity: 1;
}

.anuncio--saindo {
  opacity: 0;
  transform: translateY(-16px) scale(0.96);
  transition: opacity 0.26s ease, transform 0.26s ease;
}

.anuncio__texto {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.anuncio__texto strong {
  font-family: var(--fonte-titulo);
  font-size: 29px;
  line-height: 1;
  letter-spacing: 0.13em;
  color: var(--anuncio-cor, var(--dourado-forte));
  text-shadow: 0 0 26px var(--anuncio-brilho, rgba(217, 180, 91, 0.35));
  white-space: nowrap;
}

.anuncio__texto small {
  max-width: min(78vw, 680px);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  line-height: 1.45;
  color: var(--texto-suave);
  white-space: normal;
}

.anuncio__linha {
  width: 34px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--anuncio-cor, var(--dourado)));
}

.anuncio__linha:last-child {
  transform: scaleX(-1);
}

.flash-tela {
  position: fixed;
  inset: 0;
  z-index: 85;
  pointer-events: none;
  opacity: 0;
  /* Pulso de borda: preserva o centro legivel em vez de lavar a tela toda. */
  background: radial-gradient(
    circle at 50% 45%,
    transparent 34%,
    var(--flash-cor, #e0b13a) 100%
  );
  mix-blend-mode: screen;
}

.flash-tela--visivel {
  animation: flash-tela 0.4s ease-out forwards;
}

@keyframes flash-tela {
  0%,
  100% {
    opacity: 0;
  }
  30% {
    opacity: var(--flash-forca, 0.16);
  }
}

.carta-voadora {
  position: fixed;
  z-index: 70;
  width: 26px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 6px;
  border: 2px solid var(--voo-cor, #8b7bd8);
  background: linear-gradient(160deg, #352a51, #171122);
  box-shadow:
    0 0 18px var(--voo-cor, #8b7bd8),
    0 7px 16px rgba(0, 0, 0, 0.5);
  opacity: 0;
  pointer-events: none;
}

.carta-voadora::after {
  content: '✦';
  color: var(--voo-cor, #8b7bd8);
  font-size: 13px;
  line-height: 1;
  text-shadow: 0 0 8px var(--voo-cor, #8b7bd8);
}

.carta-voadora--animada {
  animation: carta-voo 0.66s cubic-bezier(0.35, 0.1, 0.2, 1) forwards;
}

@keyframes carta-voo {
  0% {
    opacity: 0;
    transform: translate(0, 0) scale(0.8) rotate(0deg);
  }
  14% {
    opacity: 1;
  }
  78% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translate(var(--voo-dx), var(--voo-dy)) scale(1.12) rotate(10deg);
  }
}

/* Fichas de recurso viajando entre os cards e o HUD */
.recurso-viajante {
  position: fixed;
  z-index: 45;
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: var(--cor-recurso, #e0b13a);
  background: radial-gradient(
    circle at 34% 28%,
    rgba(255, 255, 255, 0.3),
    rgba(13, 10, 20, 0.97) 72%
  );
  border: 1px solid var(--cor-recurso, #e0b13a);
  box-shadow:
    0 0 20px var(--cor-recurso, #e0b13a),
    0 0 44px rgba(255, 255, 255, 0.08);
  pointer-events: none;
  will-change: transform, opacity;
}

.recurso-viajante .icone {
  width: 16px;
  height: 16px;
}

.recurso-viajante__qtd {
  position: absolute;
  right: -7px;
  bottom: -7px;
  min-width: 17px;
  padding: 1px 4px;
  border-radius: 999px;
  background: #141020;
  border: 1px solid var(--cor-recurso, #e0b13a);
  color: var(--cor-recurso, #e0b13a);
  font-size: 9.5px;
  font-weight: 900;
  line-height: 1.2;
  text-align: center;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.55);
}

.recurso-viajante--perda {
  border-style: dashed;
}

.recurso-viajante--voando {
  animation: token-recurso-entrando 1.05s cubic-bezier(0.25, 0.1, 0.2, 1) forwards;
}

.recurso-viajante--saindo {
  animation: token-recurso-saindo 1.05s ease-in forwards;
}

/* Impacto de chegada/saida do recurso */
.recurso-impacto {
  position: fixed;
  z-index: 46;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 2px solid var(--cor-impacto, #e0b13a);
  box-shadow: 0 0 18px var(--cor-impacto, #e0b13a);
  pointer-events: none;
  transform: translate(-50%, -50%);
  will-change: transform, opacity;
}

.recurso-impacto--ganho {
  animation: impacto-recurso-ganho 0.68s ease-out forwards;
}

.recurso-impacto--ganho::after {
  content: '✦';
  position: absolute;
  left: 50%;
  top: 50%;
  color: var(--cor-impacto, #e0b13a);
  font-size: 15px;
  line-height: 1;
  text-shadow: 0 0 12px var(--cor-impacto, #e0b13a);
  animation: brilho-recurso 0.68s ease-out forwards;
}

.recurso-impacto--perda {
  border-style: dashed;
  animation: impacto-recurso-perda 0.58s ease-in forwards;
}

@keyframes impacto-recurso-ganho {
  0% {
    opacity: 0.95;
    transform: translate(-50%, -50%) scale(0.35);
  }
  55% {
    opacity: 0.75;
    transform: translate(-50%, -50%) scale(1.35);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(2.35);
  }
}

@keyframes impacto-recurso-perda {
  0% {
    opacity: 0.85;
    transform: translate(-50%, -50%) scale(1.35);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.15) rotate(90deg);
  }
}

@keyframes brilho-recurso {
  0% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(0.35) rotate(0deg);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(1.8) rotate(55deg);
  }
}

.recurso-faisca {
  position: fixed;
  z-index: 46;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--cor-impacto, #e0b13a);
  box-shadow: 0 0 9px var(--cor-impacto, #e0b13a);
  pointer-events: none;
  transform: translate(-50%, -50%);
  animation: faisca-recurso-perda 0.58s ease-out forwards;
}

@keyframes faisca-recurso-perda {
  0% {
    opacity: 0.95;
    transform: translate(-50%, -50%) translate(0, 0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) translate(var(--faisca-x, 0), var(--faisca-y, 0))
      scale(0.2);
  }
}

@keyframes token-recurso-entrando {
  0% {
    opacity: 0;
    transform: translate(0, 0) scale(0.6);
  }
  15% {
    opacity: 1;
  }
  85% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translate(var(--token-dx), var(--token-dy)) scale(0.85);
  }
}

@keyframes token-recurso-saindo {
  0% {
    opacity: 1;
    transform: translate(0, 0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translate(var(--token-dx), var(--token-dy)) scale(0.5);
  }
}

.elemento--pulso {
  animation: elemento-pulso 0.72s ease !important;
}

@keyframes elemento-pulso {
  0%,
  100% {
    filter: brightness(1);
  }
  35% {
    filter: brightness(1.18);
    box-shadow: 0 0 30px var(--pulso-cor, rgba(217, 180, 91, 0.5));
  }
}

.zona--pulso {
  animation: zona-pulso 0.68s ease;
}

@keyframes zona-pulso {
  0%,
  100% {
    filter: brightness(1);
  }
  40% {
    filter: brightness(1.14);
    box-shadow:
      0 0 0 1px var(--pulso-cor, rgba(217, 180, 91, 0.3)),
      0 0 38px var(--pulso-cor, rgba(217, 180, 91, 0.25));
  }
}

.hud__atalho--usado {
  animation: item-usado 0.9s ease;
}

@keyframes item-usado {
  0%,
  100% {
    box-shadow: none;
  }
  40% {
    box-shadow: 0 0 22px rgba(111, 157, 224, 0.62);
    border-color: rgba(111, 157, 224, 0.85);
  }
}

.log__entrada--nova {
  border-left-color: var(--dourado);
  background: linear-gradient(90deg, rgba(217, 180, 91, 0.1), transparent 80%);
  animation: entrada-log 0.48s ease-out;
}

.log__entrada--nova .log__texto {
  animation: revelar-log 0.55s ease-out both;
}

@keyframes revelar-log {
  from {
    opacity: 0.2;
    filter: blur(2px);
  }
  to {
    opacity: 1;
    filter: blur(0);
  }
}

@keyframes entrada-log {
  0% {
    opacity: 0;
    transform: translateX(-9px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

.modal-fundo {
  animation: modal-fundo-entrada 0.24s ease-out;
}

.modal {
  animation: modal-entrada 0.36s cubic-bezier(0.2, 0.85, 0.3, 1.18);
}

@keyframes modal-fundo-entrada {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes modal-entrada {
  from {
    opacity: 0;
    transform: translateY(16px) scale(0.965);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@media (max-width: 520px) {
  .anuncio {
    top: 30%;
    gap: 9px;
    padding: 11px 15px;
  }

  .anuncio__texto strong {
    font-size: 21px;
  }

  .anuncio__texto small {
    font-size: 8.5px;
    letter-spacing: 0.14em;
  }

  .anuncio__linha {
    width: 16px;
  }
}

/* ------------------------------------------------------------------
   Efeitos avançados: cartas, ataques, poderes, VP, ambiente
   ------------------------------------------------------------------ */

/* Poeira arcana ambiental */
.ambiente {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

.ambiente__particula {
  position: absolute;
  width: var(--tamanho-particula, 2px);
  height: var(--tamanho-particula, 2px);
  border-radius: 50%;
  background: var(--cor-particula, #d9b45b);
  box-shadow: 0 0 8px var(--cor-particula, #d9b45b);
  opacity: 0.2;
  animation: flutuar-ambiente var(--duracao-particula, 20s) ease-in-out
    var(--atraso-particula, 0s) infinite alternate;
}

@keyframes flutuar-ambiente {
  0% {
    transform: translate3d(0, 0, 0) scale(0.8);
    opacity: 0.12;
  }
  50% {
    opacity: 0.4;
  }
  100% {
    transform: translate3d(22px, -80px, 0) scale(1.2);
    opacity: 0.04;
  }
}

/* Carta inteira voando entre mao, mesa e area */
.carta--viajante {
  z-index: 44 !important;
  pointer-events: none !important;
  filter: drop-shadow(0 18px 26px rgba(0, 0, 0, 0.55));
  border-radius: 13px;
}

.carta--viajante * {
  pointer-events: none !important;
}

/* Carta "puxada" da mao: sombra mais funda e destaque acima do painel. */
.carta--viajante.carta--puxada {
  z-index: 46 !important;
  filter: drop-shadow(0 30px 36px rgba(0, 0, 0, 0.62));
  box-shadow:
    0 30px 62px rgba(0, 0, 0, 0.6),
    0 10px 24px rgba(0, 0, 0, 0.5),
    0 0 38px rgba(217, 180, 91, 0.2);
  will-change: transform;
}

/* Compra: clone do baralho, com verso que vira a face no caminho. */
.carta--viajante.carta--compra-viajante {
  z-index: 48 !important;
  filter: drop-shadow(0 28px 42px rgba(0, 0, 0, 0.62));
  box-shadow:
    0 30px 62px rgba(0, 0, 0, 0.6),
    0 10px 24px rgba(0, 0, 0, 0.5),
    0 0 34px rgba(217, 180, 91, 0.18);
  will-change: transform, opacity;
}

/* Aneis de energia emanando da origem do efeito de compra (a carta que
   gerou o efeito ou a zona do jogador ao passar). */
.compra-energia-anel {
  position: fixed;
  z-index: 44;
  border-radius: 50%;
  border: 2px solid var(--energia-cor, #e0b13a);
  box-shadow:
    0 0 14px color-mix(in srgb, var(--energia-cor, #e0b13a) 55%, transparent),
    inset 0 0 10px color-mix(in srgb, var(--energia-cor, #e0b13a) 35%, transparent);
  pointer-events: none;
  animation: compra-energia-anel 1.35s ease-out forwards;
}

@keyframes compra-energia-anel {
  0% {
    transform: scale(0.25);
    opacity: 0.9;
  }
  70% {
    opacity: 0.35;
  }
  100% {
    transform: scale(1.5);
    opacity: 0;
  }
}

/* Orbe de energia viajando da origem ate o baralho. */
.compra-energia-orbe {
  position: fixed;
  z-index: 47;
  width: 16px;
  height: 16px;
  margin: -8px 0 0 -8px;
  border-radius: 50%;
  background: radial-gradient(
    circle at 50% 45%,
    #fff6dd 0%,
    var(--energia-cor, #e0b13a) 45%,
    transparent 72%
  );
  box-shadow:
    0 0 16px color-mix(in srgb, var(--energia-cor, #e0b13a) 85%, transparent),
    0 0 34px color-mix(in srgb, var(--energia-cor, #e0b13a) 45%, transparent);
  pointer-events: none;
  will-change: transform, opacity;
}

.carta-verso-compra {
  position: absolute;
  inset: 0;
  z-index: 6;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: inherit;
  color: var(--dourado);
  background:
    radial-gradient(circle at 50% 42%, rgba(217, 180, 91, 0.24), transparent 38%),
    repeating-linear-gradient(
      45deg,
      rgba(217, 180, 91, 0.055) 0 2px,
      transparent 2px 9px
    ),
    linear-gradient(160deg, #2b2142, #120e1e);
  border: 1px solid rgba(217, 180, 91, 0.34);
  box-shadow:
    inset 0 0 26px rgba(0, 0, 0, 0.5),
    0 0 22px rgba(217, 180, 91, 0.12);
  pointer-events: none;
}

.carta-verso-compra::before {
  content: '';
  position: absolute;
  inset: 10px;
  border: 1px solid rgba(217, 180, 91, 0.24);
  border-radius: 10px;
}

.carta-verso-compra__icone {
  width: 46px;
  height: 46px;
  opacity: 0.82;
  filter: drop-shadow(0 0 12px rgba(217, 180, 91, 0.55));
}

/* O card real ocupa o layout, mas so aparece quando o clone pousa. */
.carta--reservada {
  visibility: hidden;
  pointer-events: none;
}

/* Contorno do espaco reservado na area de jogo. */
.carta-reserva {
  position: fixed;
  z-index: 43;
  border-radius: 14px;
  border: 1px dashed color-mix(in srgb, var(--reserva-cor, #d9b45b) 72%, transparent);
  background:
    radial-gradient(
      70% 60% at 50% 45%,
      color-mix(in srgb, var(--reserva-cor, #d9b45b) 12%, transparent),
      transparent 76%
    ),
    rgba(8, 6, 14, 0.22);
  pointer-events: none;
  animation: reserva-carta-pulso 0.9s ease-in-out infinite alternate;
}

@keyframes reserva-carta-pulso {
  from {
    opacity: 0.42;
    box-shadow:
      inset 0 0 18px color-mix(in srgb, var(--reserva-cor, #d9b45b) 12%, transparent),
      0 0 16px color-mix(in srgb, var(--reserva-cor, #d9b45b) 14%, transparent);
  }
  to {
    opacity: 0.92;
    box-shadow:
      inset 0 0 34px color-mix(in srgb, var(--reserva-cor, #d9b45b) 20%, transparent),
      0 0 32px color-mix(in srgb, var(--reserva-cor, #d9b45b) 26%, transparent);
  }
}

/* Descarte */
.carta--descartando {
  z-index: 44 !important;
  pointer-events: none !important;
  filter: grayscale(0.55) brightness(0.82);
}

.carta--descartando--animada {
  animation: descarte-carta 0.8s ease-in forwards;
}

@keyframes descarte-carta {
  0% {
    opacity: 1;
    transform: translate(0, 0) rotate(0deg) scale(1);
  }
  100% {
    opacity: 0;
    transform: translate(24px, 120px) rotate(12deg) scale(0.8);
  }
}

/* Carta recem-comprada */
.carta--nova {
  animation: carta-nova 1.2s ease-out;
}

@keyframes carta-nova {
  0% {
    filter: brightness(1.2);
    box-shadow:
      0 0 0 1px #f3d485,
      0 0 30px rgba(217, 180, 91, 0.55);
  }
  100% {
    filter: brightness(1);
  }
}

/* Embaralhar o monte */
.hud__atalho--embaralhando {
  animation: embaralhar-baralho 0.82s ease-in-out;
}

@keyframes embaralhar-baralho {
  0%,
  100% {
    transform: rotate(0deg) scale(1);
  }
  20% {
    transform: rotate(-12deg) scale(1.06);
  }
  50% {
    transform: rotate(14deg) scale(1.09);
  }
  80% {
    transform: rotate(-6deg) scale(1.04);
  }
}

/* Selos de acao */
.selo-acao {
  position: fixed;
  z-index: 47;
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 9.5px;
  font-weight: 800;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  white-space: nowrap;
  pointer-events: none;
  transform: translate(-50%, -50%);
  animation: selo-acao-anim 1.5s ease-out forwards;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4);
}

.selo-acao--dourado {
  color: #241a05;
  background: linear-gradient(180deg, #f3d485, #c79a3d);
  border: 1px solid #ffe9ae;
}

.selo-acao--azul {
  color: #0b1726;
  background: linear-gradient(180deg, #9cc4ff, #5b8bd1);
  border: 1px solid #c9e0ff;
}

.selo-acao--vermelho {
  color: #fff1f1;
  background: linear-gradient(180deg, #e66a6a, #a83737);
  border: 1px solid #ffb3b3;
}

@keyframes selo-acao-anim {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.6) rotate(-6deg);
  }
  18% {
    opacity: 1;
    transform: translate(-50%, -75%) scale(1) rotate(0deg);
  }
  75% {
    opacity: 1;
    transform: translate(-50%, -80%) scale(1) rotate(0deg);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -115%) scale(0.9) rotate(0deg);
  }
}

/* Projetil de ataque/controle */
.projetil-poder {
  position: fixed;
  z-index: 46;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: radial-gradient(
    circle at 34% 30%,
    #ffffff,
    var(--cor-projetil, #e05548) 46%,
    transparent 72%
  );
  box-shadow:
    0 0 18px var(--cor-projetil, #e05548),
    0 0 38px var(--cor-projetil, #e05548);
  pointer-events: none;
}

.projetil-poder::before {
  content: '';
  position: absolute;
  top: 50%;
  right: 100%;
  width: 42px;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--cor-projetil, #e05548));
  transform: translateY(-50%);
  opacity: 0.65;
}

/* Numeros de dano/controle */
.dano-flutuante {
  position: fixed;
  z-index: 47;
  font-family: var(--fonte-titulo);
  font-size: 23px;
  font-weight: 900;
  color: #ff9d9d;
  text-shadow: 0 0 18px rgba(217, 87, 87, 0.8);
  pointer-events: none;
  transform: translate(-50%, -50%);
  animation: dano-flutuante 1.1s ease-out forwards;
}

.dano-flutuante--controle {
  color: #9cc4ff;
  font-size: 14px;
  letter-spacing: 0.1em;
  text-shadow: 0 0 18px rgba(111, 157, 224, 0.8);
}

@keyframes dano-flutuante {
  0% {
    opacity: 0;
    transform: translate(-50%, -30%) scale(0.6);
  }
  18% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.15);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -155%) scale(0.9);
  }
}

/* Runa de poder */
.runa-poder {
  position: fixed;
  z-index: 46;
  width: 104px;
  height: 104px;
  border-radius: 50%;
  border: 2px solid var(--cor-runa, #6f9de0);
  box-shadow:
    0 0 26px var(--cor-runa, #6f9de0),
    inset 0 0 26px rgba(255, 255, 255, 0.08);
  transform: translate(-50%, -50%);
  pointer-events: none;
  animation: runa-poder 0.92s ease-out forwards;
}

.runa-poder::before,
.runa-poder::after {
  content: '✦';
  position: absolute;
  left: 50%;
  color: var(--cor-runa, #6f9de0);
  font-size: 13px;
  line-height: 1;
  text-shadow: 0 0 10px var(--cor-runa, #6f9de0);
  transform: translateX(-50%);
}

.runa-poder::before {
  top: 4px;
}

.runa-poder::after {
  bottom: 4px;
  transform: translateX(-50%) rotate(180deg);
}

@keyframes runa-poder {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.4) rotate(0deg);
  }
  28% {
    opacity: 0.9;
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(1.45) rotate(150deg);
  }
}

/* Varredura de luz na zona ativa */
.varredura-zona {
  position: fixed;
  z-index: 15;
  pointer-events: none;
  background: linear-gradient(
    90deg,
    transparent,
    var(--cor-varredura, #d9b45b),
    transparent
  );
  filter: blur(14px);
  opacity: 0;
  mix-blend-mode: screen;
}

.varredura-zona--animada {
  animation: varredura-zona 0.92s ease-in-out;
}

@keyframes varredura-zona {
  0% {
    opacity: 0;
    transform: translateX(-40%);
  }
  32% {
    opacity: 0.65;
  }
  100% {
    opacity: 0;
    transform: translateX(120%);
  }
}

/* Token de primeiro jogador */
.token-primeiro-voo {
  position: fixed;
  z-index: 47;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #241a05;
  background: radial-gradient(circle at 30% 24%, #ffe9ae, #c79a3d);
  border: 2px solid #f3d485;
  box-shadow: 0 0 24px rgba(217, 180, 91, 0.75);
  font-family: var(--fonte-titulo);
  font-size: 13px;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

/* Barra da mao chamando atencao */
.mao-barra--nova {
  animation: mao-barra-nova 0.9s ease;
}

@keyframes mao-barra-nova {
  0%,
  100% {
    transform: translateY(0);
  }
  32% {
    transform: translateY(-7px);
    box-shadow:
      0 -10px 34px rgba(0, 0, 0, 0.45),
      0 0 34px rgba(217, 180, 91, 0.4);
  }
  60% {
    transform: translateY(0);
  }
}

/* Moedas de VP */
.moeda-vp {
  position: fixed;
  z-index: 47;
  width: 20px;
  height: 20px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #241a05;
  background: radial-gradient(circle at 30% 24%, #ffe9ae, #d9b45b);
  border: 1px solid #f3d485;
  box-shadow: 0 0 16px rgba(217, 180, 91, 0.72);
  pointer-events: none;
}

.moeda-vp .icone {
  width: 12px;
  height: 12px;
}

.moeda-vp--animada {
  animation: moeda-vp 0.8s ease-in-out forwards;
}

@keyframes moeda-vp {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.6);
  }
  16% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translate(calc(-50% + var(--moeda-dx, 0px)), calc(-50% + var(--moeda-dy, 0px)))
      scale(0.9) rotate(360deg);
  }
}

/* Coroa da tela final */
.coroa-vitoria {
  position: fixed;
  top: 9%;
  left: 50%;
  z-index: 95;
  color: var(--dourado-forte);
  filter: drop-shadow(0 0 28px rgba(217, 180, 91, 0.8));
  pointer-events: none;
  animation: coroa-vitoria 2.9s ease-out forwards;
}

.coroa-vitoria .icone {
  width: 66px;
  height: 66px;
}

.coroa-vitoria--derrota {
  color: #9a8fae;
  filter: drop-shadow(0 0 22px rgba(120, 110, 140, 0.6));
}

@keyframes coroa-vitoria {
  0% {
    opacity: 0;
    transform: translate(-50%, -30px) scale(0.5) rotate(-14deg);
  }
  18% {
    opacity: 1;
    transform: translate(-50%, 0) scale(1.12) rotate(4deg);
  }
  72% {
    opacity: 1;
    transform: translate(-50%, 0) scale(1) rotate(0deg);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -10px) scale(1.12);
  }
}

.fim__coroa {
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  margin: 0 auto 8px;
  color: var(--dourado-forte);
  filter: drop-shadow(0 0 22px rgba(217, 180, 91, 0.65));
}

.fim__coroa .icone {
  width: 40px;
  height: 40px;
}

.fim__coroa--derrota {
  color: #9a8fae;
  filter: drop-shadow(0 0 18px rgba(120, 110, 140, 0.55));
}

.fim__vp {
  color: var(--texto);
}

.fim__vp-num {
  font-weight: 800;
  color: var(--dourado-forte);
}

@media (prefers-reduced-motion: reduce) {
  .ambiente {
    display: none;
  }
}

/* ------------------------------------------------------------------
   Acessibilidade: menos movimento
   ------------------------------------------------------------------ */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* ------------------------------------------------------------------
   Tela inicial — escolha do modo de jogo (Solo / Multiplayer)
   ------------------------------------------------------------------ */

.tela-inicial {
  grid-column: 1 / -1;
  grid-row: 1 / -1;
  align-self: center;
  justify-self: center;
  width: min(720px, 94vw);
  z-index: 5;
  animation: tela-inicial-entrada 0.42s cubic-bezier(0.2, 0.85, 0.3, 1.05);
}

@keyframes tela-inicial-entrada {
  from {
    opacity: 0;
    transform: translateY(18px) scale(0.97);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.tela-inicial__cartao {
  background:
    radial-gradient(600px 260px at 18% 0%, rgba(139, 123, 216, 0.14), transparent 70%),
    linear-gradient(170deg, #241d36, #141021);
  border: 1px solid rgba(180, 160, 255, 0.22);
  border-radius: 20px;
  padding: 34px 36px 28px;
  box-shadow:
    0 34px 90px rgba(0, 0, 0, 0.74),
    inset 0 1px rgba(255, 255, 255, 0.06);
  text-align: center;
}

.tela-inicial__marca {
  font-family: var(--fonte-titulo);
  font-size: clamp(34px, 5.4vw, 48px);
  font-weight: 700;
  letter-spacing: 0.02em;
  margin: 0 0 6px;
  color: var(--dourado-forte);
  text-shadow: 0 0 26px rgba(217, 180, 91, 0.38);
}

.tela-inicial__marca em {
  font-style: normal;
  color: var(--texto);
}

.tela-inicial__marca--pequena {
  font-size: clamp(22px, 3.4vw, 28px);
}

.tela-inicial__subtitulo {
  margin: 0 0 20px;
  font-size: 13.5px;
  color: var(--texto-suave);
  line-height: 1.55;
}

.tela-inicial__subtitulo strong {
  color: var(--texto);
}

.tela-inicial__secao {
  font-family: var(--fonte-titulo);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--texto-fraco);
  margin: 22px 0 12px;
}

.tela-inicial__campo {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  max-width: 340px;
  margin: 0 auto;
  text-align: left;
}

.tela-inicial__campo > span,
.tela-inicial__campo > label {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--texto-fraco);
}

.campo-texto,
.tela-inicial__campo input {
  font-family: var(--fonte-texto);
  font-size: 15px;
  font-weight: 600;
  color: var(--texto);
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px solid rgba(180, 160, 255, 0.24);
  background: rgba(10, 8, 18, 0.6);
  outline: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.tela-inicial__campo input:focus {
  border-color: rgba(217, 180, 91, 0.55);
  box-shadow: 0 0 0 3px rgba(217, 180, 91, 0.14);
}

.tela-inicial__nome {
  display: flex;
  align-items: stretch;
  gap: 8px;
}

.tela-inicial__nome input {
  flex: 1;
  min-width: 0;
}

.tela-inicial__sortear {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 42px;
  width: 42px;
  border-radius: 10px;
  border: 1px solid rgba(180, 160, 255, 0.24);
  background: rgba(10, 8, 18, 0.6);
  color: var(--dourado);
  cursor: pointer;
  transition:
    border-color 0.15s ease,
    background 0.15s ease,
    color 0.15s ease,
    transform 0.15s ease;
}

.tela-inicial__sortear:hover {
  border-color: rgba(217, 180, 91, 0.55);
  background: rgba(217, 180, 91, 0.1);
  transform: rotate(-18deg) scale(1.04);
}

.tela-inicial__sortear:focus-visible {
  outline: none;
  border-color: rgba(217, 180, 91, 0.55);
  box-shadow: 0 0 0 3px rgba(217, 180, 91, 0.14);
}

.tela-inicial__sortear .icone {
  width: 18px;
  height: 18px;
}

/* Saudação de boas-vindas (nome já informado antes). Entra com um leve
   "assentar" e uma varredura dourada, casando com a entrada do cartão. */
.tela-inicial__boas-vindas {
  position: relative;
  overflow: hidden;
  max-width: 420px;
  margin: 4px auto 6px;
  padding: 14px 18px 12px;
  border-radius: 14px;
  border: 1px solid rgba(217, 180, 91, 0.28);
  background:
    radial-gradient(220px 90px at 50% 0%, rgba(217, 180, 91, 0.16), transparent 72%),
    rgba(10, 8, 18, 0.42);
  animation: boas-vindas-entrada 0.55s cubic-bezier(0.2, 0.85, 0.3, 1.05);
}

.tela-inicial__boas-vindas::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    115deg,
    transparent 32%,
    rgba(255, 255, 255, 0.18) 48%,
    transparent 64%
  );
  transform: translateX(-130%);
  animation: boas-vindas-brilho 1.5s 0.25s ease-out;
}

@keyframes boas-vindas-entrada {
  from {
    transform: translateY(12px) scale(0.96);
    filter: blur(6px);
  }
  to {
    transform: translateY(0) scale(1);
    filter: blur(0);
  }
}

@keyframes boas-vindas-brilho {
  to {
    transform: translateX(130%);
  }
}

.tela-inicial__saudacao {
  margin: 0;
  font-family: var(--fonte-titulo);
  font-size: 16px;
  line-height: 1.5;
  color: var(--texto-suave);
}

.tela-inicial__saudacao strong {
  color: var(--dourado-forte);
  text-shadow: 0 0 18px rgba(217, 180, 91, 0.38);
}

.tela-inicial__pergunta {
  display: block;
  margin-top: 2px;
  color: var(--texto);
}

.tela-inicial__trocar {
  margin-top: 10px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  font-family: var(--fonte-texto);
  font-size: 11.5px;
  font-weight: 600;
  color: var(--texto-fraco);
  background: transparent;
  border: 1px solid rgba(180, 160, 255, 0.22);
  border-radius: 999px;
  cursor: pointer;
  transition:
    border-color 0.15s ease,
    color 0.15s ease,
    background 0.15s ease;
}

.tela-inicial__trocar:hover {
  color: var(--texto);
  border-color: rgba(217, 180, 91, 0.45);
  background: rgba(217, 180, 91, 0.08);
}

.tela-inicial__trocar .icone {
  width: 14px;
  height: 14px;
  color: var(--dourado);
}

.tela-inicial__modos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
}

.modo {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 22px 18px;
  border-radius: 14px;
  border: 1px solid rgba(180, 160, 255, 0.18);
  background: rgba(255, 255, 255, 0.035);
  color: var(--texto);
  cursor: pointer;
  font-family: var(--fonte-texto);
  transition:
    transform 0.15s ease,
    border-color 0.15s ease,
    background 0.15s ease,
    box-shadow 0.15s ease;
}

.modo:hover {
  transform: translateY(-3px);
  border-color: rgba(217, 180, 91, 0.45);
  background: rgba(217, 180, 91, 0.07);
  box-shadow: 0 12px 26px rgba(0, 0, 0, 0.35);
}

.modo__icone .icone {
  width: 30px;
  height: 30px;
  color: var(--dourado);
}

.modo__titulo {
  font-family: var(--fonte-titulo);
  font-size: 19px;
  font-weight: 700;
  color: var(--dourado-forte);
}

.modo__desc {
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--texto-suave);
}

.tela-inicial__nota {
  margin: 18px 0 0;
  font-size: 11.5px;
  line-height: 1.55;
  color: var(--texto-fraco);
}

.tela-inicial__nota code {
  padding: 1px 6px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.07);
  color: var(--texto-suave);
  font-size: 11px;
}

.tela-inicial__erro {
  margin: 12px 0 0;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  color: #f0a3a3;
}

.tela-inicial__rodape {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 22px;
}

/* Lobby multiplayer ------------------------------------------------ */

.lobby__carregando {
  margin: 18px auto 6px;
  width: fit-content;
  padding: 8px 18px;
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--texto-suave);
  background: rgba(255, 255, 255, 0.05);
  animation: lobby-pulsar 1.4s ease-in-out infinite;
}

@keyframes lobby-pulsar {
  0%,
  100% {
    opacity: 0.55;
  }
  50% {
    opacity: 1;
  }
}

.lobby__codigo {
  display: block;
  margin: 6px auto 0;
  padding: 14px 30px;
  border-radius: 14px;
  border: 2px dashed rgba(217, 180, 91, 0.55);
  background: rgba(217, 180, 91, 0.08);
  color: var(--dourado-forte);
  font-family: var(--fonte-titulo);
  font-size: clamp(30px, 5vw, 40px);
  font-weight: 700;
  letter-spacing: 0.28em;
  text-indent: 0.28em;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}

.lobby__codigo:hover {
  transform: scale(1.03);
  border-color: var(--dourado-forte);
  background: rgba(217, 180, 91, 0.14);
}

.lobby__codigo--copiado {
  border-style: solid;
  border-color: var(--ok);
  background: rgba(88, 192, 122, 0.12);
  color: var(--ok);
}

.lobby__dica {
  margin: 10px 0 0;
  font-size: 11.5px;
  color: var(--texto-fraco);
}

.lobby__aguardando {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin: 22px auto 0;
  padding: 12px 20px;
  width: fit-content;
  border-radius: 12px;
  border: 1px solid rgba(180, 160, 255, 0.18);
  background: rgba(255, 255, 255, 0.04);
  font-size: 13px;
  color: var(--texto-suave);
}

.lobby__pontos {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--dourado);
  box-shadow: 0 0 12px rgba(217, 180, 91, 0.8);
  animation: lobby-pulsar 1.1s ease-in-out infinite;
}

/* Sala conectada (após o amigo entrar) ----------------------------- */

.sala__jogadores {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  margin: 10px 0 4px;
  flex-wrap: wrap;
}

.sala__jogador {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 130px;
  padding: 14px 20px;
  border-radius: 14px;
  border: 1px solid rgba(180, 160, 255, 0.2);
  background: rgba(255, 255, 255, 0.04);
}

.sala__jogador b {
  font-size: 16px;
  color: var(--texto);
}

.sala__jogador small {
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--texto-fraco);
}

.sala__jogador--eu {
  border-color: rgba(88, 192, 122, 0.4);
  background: rgba(88, 192, 122, 0.07);
}

.sala__versus {
  font-family: var(--fonte-titulo);
  font-size: 18px;
  color: var(--dourado);
}

/* Ajustes móveis da tela inicial */
@media (max-width: 520px) {
  .tela-inicial__cartao {
    padding: 24px 18px 20px;
  }

  .lobby__codigo {
    letter-spacing: 0.18em;
    text-indent: 0.18em;
    padding: 12px 18px;
  }
}

/* ==================================================================
   Conta (opcional) e Coleção — barra do menu, painel e álbum
   ================================================================== */

/* Barra "Conta / Coleção" acima do cartão do menu ------------------- */

.tela-inicial__barra {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 14px;
}

.barra-conta__botao {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid rgba(180, 160, 255, 0.24);
  background: rgba(255, 255, 255, 0.045);
  color: var(--texto);
  font-family: var(--fonte-texto);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: transform 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}

.barra-conta__botao:hover {
  transform: translateY(-2px);
  border-color: rgba(217, 180, 91, 0.5);
  background: rgba(217, 180, 91, 0.09);
}

.barra-conta__botao .icone {
  width: 18px;
  height: 18px;
  color: var(--dourado);
}

.barra-conta__botao--logado {
  border-color: rgba(88, 192, 122, 0.42);
  background: rgba(88, 192, 122, 0.09);
}

.barra-conta__botao--logado .icone {
  color: var(--ok);
}

.barra-conta__selo {
  padding: 1px 8px;
  border-radius: 999px;
  background: rgba(10, 8, 18, 0.55);
  font-size: 11.5px;
  color: var(--texto-suave);
}

.barra-conta__novo {
  position: absolute;
  top: -7px;
  right: -7px;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--dourado);
  color: #241d0f;
  font-size: 11.5px;
  font-weight: 800;
  box-shadow: 0 0 12px rgba(217, 180, 91, 0.7);
}

/* Painel de conta --------------------------------------------------- */

.conta {
  display: flex;
  flex-direction: column;
  gap: 14px;
  max-width: 420px;
}

.conta__intro {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--texto-suave);
}

.conta__intro strong {
  color: var(--texto);
}

.conta__abas {
  display: flex;
  gap: 8px;
  padding: 4px;
  border-radius: 12px;
  background: rgba(10, 8, 18, 0.5);
  border: 1px solid var(--painel-borda);
}

.conta__aba {
  flex: 1;
  padding: 9px 12px;
  border-radius: 9px;
  border: none;
  background: transparent;
  color: var(--texto-suave);
  font-family: var(--fonte-texto);
  font-size: 13.5px;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}

.conta__aba--ativa {
  background: rgba(217, 180, 91, 0.16);
  color: var(--dourado-forte);
}

.conta__campo {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* `display: flex` acima venceria o `display: none` padrão do atributo hidden. */
.conta__campo[hidden] {
  display: none;
}

.conta__campo span {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--texto-fraco);
}

.conta__campo input {
  font-family: var(--fonte-texto);
  font-size: 15px;
  font-weight: 600;
  color: var(--texto);
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px solid rgba(180, 160, 255, 0.24);
  background: rgba(10, 8, 18, 0.6);
  outline: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.conta__campo input:focus {
  border-color: rgba(217, 180, 91, 0.55);
  box-shadow: 0 0 0 3px rgba(217, 180, 91, 0.14);
}

.conta__erro {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  color: #f0a3a3;
}

.conta__enviar {
  width: 100%;
}

.conta__nota {
  margin: 0;
  font-size: 11.5px;
  line-height: 1.55;
  color: var(--texto-fraco);
}

.conta__aviso {
  margin: 0 0 4px;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid rgba(217, 180, 91, 0.45);
  background: rgba(217, 180, 91, 0.1);
  font-size: 12px;
  line-height: 1.5;
  color: var(--dourado-forte);
}

.conta__aviso strong {
  color: var(--texto);
}

.conta__perfil {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 14px 16px;
  border-radius: 12px;
  border: 1px solid rgba(88, 192, 122, 0.3);
  background: rgba(88, 192, 122, 0.08);
}

.conta__perfil strong {
  font-size: 16px;
  color: var(--texto);
}

.conta__perfil span {
  font-size: 12.5px;
  color: var(--texto-suave);
}

/* Coleção — álbum de cartas ----------------------------------------- */

.colecao__topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 14px;
  margin-bottom: 12px;
}

.colecao__progresso {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 220px;
  flex: 1;
}

.colecao__barra {
  height: 10px;
  border-radius: 999px;
  background: rgba(10, 8, 18, 0.6);
  border: 1px solid var(--painel-borda);
  overflow: hidden;
}

.colecao__barra span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #8b7bd8, var(--dourado));
  transition: width 0.35s ease;
}

.colecao__contagem {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--texto-suave);
}

.colecao__pacotes {
  display: flex;
  align-items: center;
  gap: 10px;
}

.colecao__pacote-qtd {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid rgba(217, 180, 91, 0.4);
  background: rgba(217, 180, 91, 0.09);
  color: var(--dourado-forte);
  font-weight: 800;
}

.colecao__pacote-qtd .icone {
  width: 18px;
  height: 18px;
}

.colecao__nota {
  margin: 0 0 14px;
  font-size: 12px;
  line-height: 1.55;
  color: var(--texto-fraco);
}

.colecao__nota strong {
  color: var(--texto-suave);
}

.colecao__filtros {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}

.colecao__filtro {
  padding: 6px 13px;
  border-radius: 999px;
  border: 1px solid var(--painel-borda);
  background: rgba(255, 255, 255, 0.04);
  color: var(--texto-suave);
  font-family: var(--fonte-texto);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.colecao__filtro:hover {
  border-color: rgba(217, 180, 91, 0.45);
}

.colecao__filtro--ativo {
  background: rgba(217, 180, 91, 0.16);
  border-color: rgba(217, 180, 91, 0.5);
  color: var(--dourado-forte);
}

.colecao__grade {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(164px, 1fr));
  gap: 12px;
  justify-items: center;
}

.colecao__item {
  width: 100%;
  display: flex;
  justify-content: center;
}

.colecao__item .carta {
  width: 100%;
}

.colecao__item--bloqueada {
  position: relative;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 284px;
  border-radius: 13px;
  border: 1px dashed rgba(180, 160, 255, 0.22);
  background:
    repeating-linear-gradient(
      135deg,
      rgba(255, 255, 255, 0.02) 0 12px,
      rgba(255, 255, 255, 0.045) 12px 24px
    ),
    linear-gradient(168deg, #1b1529, #120d1d);
  color: var(--texto-fraco);
}

.colecao__cadeado .icone {
  width: 30px;
  height: 30px;
  color: rgba(167, 157, 194, 0.55);
}

.colecao__tipo {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.colecao__oculta {
  font-family: var(--fonte-titulo);
  font-size: 40px;
  font-weight: 700;
  color: rgba(167, 157, 194, 0.35);
}

@media (max-width: 520px) {
  .colecao__topo {
    flex-direction: column;
    align-items: stretch;
  }

  .colecao__grade {
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  }
}
