/* CSS-BUILD-MARKER: 2026-06-25s (cola-acciones-IA) */
/* ════════════════════════════════════════════════════════════════════
   DB-CARDGAME — Estilos del juego de cartas (Fase 1).
   Reusa los tokens del juego (--game, --surface, --accent, tipos…).
   ════════════════════════════════════════════════════════════════════ */
#screen-cardgame { background: radial-gradient(120% 90% at 50% 0%, #16203c 0%, var(--bg) 70%); }
.cg-wrap {
  max-width: 1280px; margin: 0 auto; padding: 10px 12px 18px;
  display: flex; flex-direction: column; gap: 10px; min-height: 100%;
}

/* Cabecera */
.cg-top { display: flex; align-items: center; gap: 10px; }
.cg-back {
  width: 40px; height: 40px; flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  background: var(--surface); border: 1px solid var(--border); border-radius: 10px;
  color: var(--text); cursor: pointer; transition: background .15s;
}
.cg-back:hover { background: var(--surface2); }
.cg-back svg { width: 22px; height: 22px; }
.cg-title {
  flex: 1 1 auto; text-align: center; margin: 0;
  font-family: var(--game); font-weight: 800; letter-spacing: 3px;
  font-size: 1.45rem; text-transform: uppercase;
  background: linear-gradient(180deg, #ffe27a 0%, #f5a623 55%, #d98410 100%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 1px 0 rgba(0,0,0,.5)) drop-shadow(0 0 10px rgba(245,166,35,.35));
}
.cg-turn, .cg-top > span { min-width: 64px; text-align: right;
  font-family: var(--game); font-weight: 700; color: var(--muted); font-size: .85rem; }
.cg-turn {
  color: #ffd479; font-weight: 800; letter-spacing: .5px;
  background: rgba(245,166,35,.12); border: 1px solid rgba(245,166,35,.3);
  border-radius: 999px; padding: 4px 12px; min-width: 0;
}

/* Barra de jugador (KOs + estado) */
.cg-strip {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 14px; border-radius: 12px;
  background: linear-gradient(180deg, rgba(255,255,255,.06), rgba(0,0,0,.25));
  border: 1px solid var(--border);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05);
}
.cg-strip-ai { border-color: rgba(231,76,60,.4); box-shadow: inset 0 1px 0 rgba(255,255,255,.04), 0 0 0 1px rgba(231,76,60,.06); }
.cg-strip-you { border-color: rgba(39,174,96,.45); box-shadow: inset 0 1px 0 rgba(255,255,255,.04), 0 0 0 1px rgba(39,174,96,.06); }
.cg-strip-name { font-family: var(--game); font-weight: 800; letter-spacing: 1px; font-size: .82rem; min-width: 48px; color: var(--text); }
.cg-hpbar {
  position: relative; flex: 1 1 auto; height: 18px; border-radius: 9px;
  background: rgba(0,0,0,.4); border: 1px solid rgba(255,255,255,.1); overflow: hidden;
}
.cg-hpfill { position: absolute; inset: 0 auto 0 0; background: linear-gradient(90deg, #e74c3c, #f5a623, #39b85a); transition: width .4s ease; }
.cg-strip-ai .cg-hpfill { background: linear-gradient(90deg, #c0392b, #e74c3c); }
.cg-hpnum { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-family: var(--game); font-weight: 800; font-size: .74rem; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.7); }
.cg-energy { display: inline-flex; align-items: center; gap: 6px; min-width: 90px; justify-content: flex-end; }
.cg-pips { display: inline-flex; gap: 2px; }
.cg-pip { width: 8px; height: 12px; border-radius: 2px; background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.15); transition: background .25s, box-shadow .25s, transform .2s; }
.cg-pip.on { background: linear-gradient(180deg, #ffe27a, #f5b400); border-color: #c8920a;
  box-shadow: 0 0 6px rgba(245,180,0,.6); }
.cg-pip.future { opacity: .35; }
.cg-pip.spend { animation: cgPipSpend .45s ease; }
.cg-pip.need { animation: cgPipNeed .7s ease; }
@keyframes cgPipSpend { 0% { transform: scale(1.5); background: #fff; box-shadow: 0 0 12px #fff; } 100% { transform: scale(1); } }
@keyframes cgPipNeed { 0%,100% { box-shadow: none; } 30%,70% { background: #ff8a4a; box-shadow: 0 0 10px #ff8a4a; transform: scale(1.3); } }
.cg-pip-num { font-family: var(--game); font-weight: 800; font-size: .78rem; color: #ffd479; }
/* Rival como objetivo de ataque directo */
.cg-face-target { cursor: pointer; box-shadow: 0 0 0 2px var(--accent2), 0 0 16px rgba(231,76,60,.5); animation: cgPulse 1s ease-in-out infinite; }
.cg-face-hint { font-family: var(--game); font-weight: 800; font-size: .72rem; color: #fff;
  background: var(--accent2); padding: 2px 8px; border-radius: 6px; }
@keyframes cgPulse { 0%,100% { filter: brightness(1); } 50% { filter: brightness(1.25); } }

/* ── TAPETE de juego (mesa estilo Magic) ── */
/* ── Tablero apaisado con fondo (imagen) y huecos en posición absoluta ── */
.cg-board {
  position: relative; width: 100%; max-width: 1280px; margin: 6px auto;
  aspect-ratio: 1672 / 941;
  background-size: cover; background-position: center; border-radius: 14px;
  box-shadow: inset 0 0 60px rgba(0,0,0,.45), 0 8px 26px rgba(0,0,0,.5);
  overflow: hidden;
}
/* Cada hueco se centra en su % (left/top apuntan al CENTRO del hueco) */
.cg-bslot {
  position: absolute; transform: translate(-50%, -50%);
  display: flex; align-items: center; justify-content: center;
}
/* ── Tamaño de carta en el tablero ──
   Las cartas son altas (320×448) y los huecos del fondo son más cuadrados, así
   que las dimensionamos por ANCHO para que quepan en la ALTURA del hueco.
   Al pasar el ratón se levantan y amplían para verlas enteras. */
.cg-bslot-active { width: 6.7%; }
.cg-bslot-bench  { width: 6.7%; }
.cg-bslot-deck   { width: 9%; }

.cg-bslot { display: flex; align-items: center; justify-content: center; overflow: visible; }
.cg-board .cg-card {
  width: 100%; height: auto !important; aspect-ratio: 320 / 448; position: relative; line-height: 0; font-size: 0;
  transition: transform .16s ease, filter .16s ease; transform-origin: center center; cursor: pointer;
}
/* HOVER: la carta se levanta y crece para verla entera y legible */
.cg-board .cg-card:hover {
  transform: scale(1.9); z-index: 30; filter: drop-shadow(0 8px 18px rgba(0,0,0,.7));
}
.cg-board .cg-bslot:hover { z-index: 30; }
.cg-board .cg-card .cg-tcg-scaled {
  width: 100% !important; height: 100% !important; position: absolute; inset: 0;
  overflow: hidden; border-radius: 7px; display: block;
}
.cg-board .cg-card .cg-tcg-scaled .tcg-card {
  position: absolute !important; top: 0; left: 0; width: 100% !important; max-width: 100% !important;
  transform: none !important; display: block;
}
.cg-board .cg-card .cg-tcg-scaled svg { display: block; width: 100%; height: auto; }
.cg-board .cg-card .cg-ov,
.cg-board .cg-card .cg-energy-dots { position: absolute; }
.cg-board .cg-slot { width: 100%; aspect-ratio: 320 / 448; }
.cg-deck-big { width: 100%; aspect-ratio: 320 / 448; }

/* Hueco vacío: solo una etiqueta tenue, el marco ya está en el fondo */
.cg-slot {
  width: 100%; aspect-ratio: 320 / 448; border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.015);
}
.cg-slot-need { animation: cgPulse 1.1s ease-in-out infinite; outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 10px; }
.cg-slot-tag { font-family: var(--game); font-weight: 700; font-size: .56rem; letter-spacing: 1.4px; color: rgba(255,255,255,.3); text-shadow: 0 1px 3px rgba(0,0,0,.8); }

/* Las capas internas de la carta TCG no capturan el toque: el clic llega al
   contenedor .cg-card que lleva el onclick. */
.cg-card .cg-tcg-scaled,
.cg-card .cg-tcg-scaled * { pointer-events: none; }

/* Anular colocación: cartas recogibles */
.cg-pickable { cursor: pointer; }
.cg-pickable:hover .cg-tcg-scaled { outline: 2px solid #ff9d6b; outline-offset: -1px; border-radius: 10px; }

/* Mazo grande a los lados (marco azul), tamaño carta */
.cg-deck-big {
  position: relative; width: 100%; aspect-ratio: 320 / 448; border-radius: 8px;
  background-size: cover; background-position: center;
  border: 2px solid rgba(120,170,230,.5);
  box-shadow: 0 4px 14px rgba(0,0,0,.55), inset 0 0 0 1px rgba(0,0,0,.4);
  display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
}
.cg-deck-n {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);
  font-family: var(--game); font-weight: 800; font-size: 1.5rem; color: #fff;
  text-shadow: 0 2px 6px rgba(0,0,0,.95), 0 0 10px rgba(0,0,0,.8);
}
.cg-deck-lbl { font-family: var(--game); font-weight: 700; font-size: .56rem; letter-spacing: 1px;
  color: rgba(255,255,255,.7); margin-bottom: 4px; text-shadow: 0 1px 2px rgba(0,0,0,.9); }

/* Controles bajo el tablero */
.cg-controls { max-width: 1280px; margin: 8px auto 0; }
.cg-phasebar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: center; }
.cg-phase-info { font-family: var(--game); font-weight: 600; font-size: .9rem; color: #d7e4f0; text-align: center; }
.cg-phase-info b { color: #ffd479; }

/* Energía/PV overlay tamaño en tablero */
.cg-card-bench .cg-ov-hpnum { font-size: .62rem; }

/* Mano */
.cg-hand-label { font-family: var(--game); font-weight: 700; font-size: .76rem; color: var(--muted); letter-spacing: 1px; margin-top: 10px; }
/* ── Mano en ABANICO ── */
.cg-hand {
  display: flex; justify-content: center; align-items: flex-end;
  min-height: 230px; padding: 30px 0 8px;
}
.cg-card-hand {
  width: 138px; height: 193px; flex: 0 0 auto;
  margin: 0 -34px;                       /* solapamiento del abanico */
  transform-origin: bottom center;
  transform: rotate(var(--fan-ang, 0deg)) translateY(var(--fan-lift, 0px));
  transition: transform .22s cubic-bezier(.22,.61,.36,1), margin .22s ease, filter .2s ease;
  position: relative;
  z-index: calc(10 + var(--fan-i, 0));
  cursor: pointer;
  will-change: transform;
}
.cg-card-hand .cg-tcg-scaled { width: 138px; height: 193px; }
.cg-card-hand .cg-tcg-scaled .tcg-card { transform: scale(0.43); }
/* HOVER: la carta se endereza, sube y se amplía de forma ESTABLE.
   · scale 1.9 (legible sin invadir toda la pantalla)
   · translateY moderado para que no rebote bajo el cursor
   · transición con curva suave; el reposo no añade delay para que responda ya,
     pero el origen bottom-center evita que la carta "salte" lateralmente. */
.cg-card-hand:hover,
.cg-card-hand.cg-playable:hover,
.cg-card-hand.cg-unplayable:hover {
  /* IMPORTANTE: NO escalamos el contenedor. Si lo escaláramos, su caja de
     detección de :hover crecería al doble y tendrías que alejar mucho el ratón
     para "soltar" la carta. En su lugar escalamos el contenido interior
     (.cg-tcg-scaled), dejando la zona sensible del tamaño de la carta en
     reposo: el hover se suelta justo al pasar el borde visible. */
  z-index: 200 !important; margin: 0 -34px;
  opacity: 1 !important;
  overflow: visible;
}
/* El contenido visible es lo que se amplía y sube. Para Pokémon es
   .cg-tcg-scaled (hijo). Para entrenadores/objetos, OJO: .cg-trainer-art ES el
   propio contenedor de la carta (lleva cg-card-hand), así que NO lo escalamos
   —eso agrandaría su hitbox de hover—; escalamos su <img> y su fallback, que sí
   son hijos. Igual con .cg-trainer-inner (diseño generado, hijo del contenedor). */
.cg-card-hand:hover .cg-tcg-scaled,
.cg-card-hand.cg-playable:hover .cg-tcg-scaled,
.cg-card-hand.cg-unplayable:hover .cg-tcg-scaled,
.cg-card-hand.cg-trainer-art:hover .cg-trainer-artimg,
.cg-card-hand.cg-trainer-art:hover .cg-trainer-artfallback,
.cg-card-hand:hover .cg-trainer-inner,
.cg-card-hand.cg-playable:hover .cg-trainer-inner,
.cg-card-hand.cg-unplayable:hover .cg-trainer-inner {
  transform: translateY(-58px) scale(1.9);
  /* Sombra suave + CONTORNO GLOW AZUL para remarcar la carta elevada. */
  filter: drop-shadow(0 14px 24px rgba(0,0,0,.7))
          drop-shadow(0 0 10px rgba(90,170,255,.9))
          drop-shadow(0 0 4px rgba(140,200,255,.95));
  z-index: 200; position: relative;
  transition: transform .22s cubic-bezier(.22,.61,.36,1), filter .2s ease;
}
.cg-card-hand .cg-tcg-scaled,
.cg-card-hand .cg-trainer-artimg,
.cg-card-hand .cg-trainer-artfallback,
.cg-card-hand .cg-trainer-inner {
  transition: transform .2s cubic-bezier(.22,.61,.36,1), filter .2s ease;
  transform-origin: bottom center;
}
/* En hover, la carta de entrenador debe dejar VER su imagen ampliada (en reposo
   recorta con overflow:hidden para el borde redondeado). Además quitamos el
   FONDO NEGRO del contenedor: al elevarse el contenido, su caja vacía dejaba
   ver el fondo #0a0a12 como una "sombra negra" rectangular bajo la carta. */
.cg-card-hand.cg-trainer-art:hover { overflow: visible !important; background: transparent !important; }
.cg-card-hand:hover .cg-tcg-scaled { background: transparent; }
/* Vecinas de la carta ampliada: se apartan a su lado para que la carta en
   hover no las tape (y no les robe el :hover). Lo aplica JS de forma simétrica
   con las clases cg-hand-shift-left / cg-hand-shift-right. */
.cg-card-hand.cg-hand-shift-left { transform: rotate(var(--fan-ang,0deg)) translateY(var(--fan-lift,0px)) translateX(-30px) !important; }
.cg-card-hand.cg-hand-shift-right { transform: rotate(var(--fan-ang,0deg)) translateY(var(--fan-lift,0px)) translateX(30px) !important; }
/* La carta que se arrastra */
/* Mientras se arrastra, la carta de la mano se atenúa para indicar que está
   "viajando". NO usamos pointer-events:none porque rompería el evento dragend. */
.cg-card-hand.cg-dragging {
  opacity: .35;
  transition: opacity .15s ease-out;
}

/* ── Carta: contenedor de la carta TCG escalada + capa de juego ── */
.cg-card { position: relative; user-select: none; transition: transform .14s, filter .15s;
  width: 128px; height: 179px; }
/* La carta TCG mide 320px; la escalamos. El wrapper reserva el tamaño final. */
.cg-tcg-scaled { width: 128px; height: 179px; overflow: hidden; border-radius: 10px; position: relative; }
.cg-tcg-scaled .tcg-card { width: 320px !important; max-width: none !important; transform: scale(0.4); transform-origin: top left; margin: 0 !important; }
@media (max-width: 480px) {
  .cg-card { width: 104px; height: 146px; }
  .cg-tcg-scaled { width: 104px; height: 146px; }
  .cg-tcg-scaled .tcg-card { transform: scale(0.325); }
  .cg-card-hand { width: 118px; height: 165px; }
  .cg-card-hand .cg-tcg-scaled { width: 118px; height: 165px; }
  .cg-card-hand .cg-tcg-scaled .tcg-card { transform: scale(0.369); }
}

/* Capa de juego encima de la carta TCG: ATK/DEF de combate */
.cg-ov { position: absolute; inset: 0; pointer-events: none; }
/* Barra de PV de la criatura, arriba a la derecha de la carta */
.cg-ov-hp {
  position: absolute; top: 3px; right: 3px;
  display: flex; align-items: center; gap: 3px;
  background: rgba(8,12,24,.82); border-radius: 8px; padding: 2px 5px 2px 4px;
  box-shadow: 0 1px 4px rgba(0,0,0,.6);
}
.cg-ov-hpbar { width: 26px; height: 6px; border-radius: 3px; background: rgba(255,255,255,.18); overflow: hidden; }
.cg-ov-hpfill { display: block; height: 100%; background: linear-gradient(90deg, #39b85a, #6fe089); transition: width .35s ease; }
.cg-ov-hp.cg-hp-mid .cg-ov-hpfill { background: linear-gradient(90deg, #e0a82e, #ffd166); }
.cg-ov-hp.cg-hp-low .cg-ov-hpfill { background: linear-gradient(90deg, #e74c3c, #ff7a6b); }
.cg-ov-hpnum { font-family: var(--game); font-weight: 800; font-size: .72rem; color: #fff; min-width: 14px; text-align: center; }

/* Selector de ataque: panel fijo bajo la barra de fase (no flota sobre cartas) */
.cg-atkchooser { display: flex; flex-direction: column; gap: 4px; width: 100%; margin: 4px 0; }
.cg-atkrow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cg-atkrow-name { font-family: var(--game); font-weight: 800; font-size: .72rem; color: var(--accent); min-width: 70px; }
.cg-atkrow-moves { display: flex; gap: 5px; flex-wrap: wrap; }
.cg-act-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.cg-move {
  display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  background: rgba(8,12,24,.9); border: 1px solid rgba(255,255,255,.14);
  border-radius: 7px; padding: 4px 8px; line-height: 1.15;
}
.cg-move:hover { border-color: var(--accent); }
.cg-move.sel { border-color: var(--accent); box-shadow: 0 0 9px rgba(245,166,35,.6); background: rgba(60,44,8,.92); }
.cg-move-name { font-family: var(--game); font-weight: 700; font-size: .68rem; color: #e6edf3; }
.cg-move-dmg { font-family: var(--game); font-weight: 800; font-size: .72rem; color: #ff8a6b; }
.cg-move-cost { font-family: var(--game); font-weight: 800; font-size: .6rem; color: #3a2c00; background: radial-gradient(circle at 40% 35%, #ffe27a, #f5b400);
  border-radius: 50%; width: 15px; height: 15px; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }

/* Daño flotante sobre la carta */
.cg-dmg-float {
  position: absolute; top: 30%; left: 50%; transform: translate(-50%,-50%);
  font-family: var(--game); font-weight: 900; font-size: 1.8rem; color: #ff5a4d;
  text-shadow: 0 2px 6px rgba(0,0,0,.8), 0 0 12px rgba(255,90,77,.8); z-index: 6;
  animation: cgDmgFloat 1s ease forwards; pointer-events: none;
}
@keyframes cgDmgFloat {
  0% { opacity: 0; transform: translate(-50%,-30%) scale(.6); }
  25% { opacity: 1; transform: translate(-50%,-60%) scale(1.15); }
  100% { opacity: 0; transform: translate(-50%,-110%) scale(1); }
}

/* Estados de carta */
.cg-playable { cursor: pointer; }
/* Hover pequeño SOLO para cartas del tablero (banca/activo), NO para la mano.
   La mano usa el zoom grande de .cg-card-hand:hover (más abajo). */
.cg-playable:not(.cg-card-hand):hover { transform: translateY(-8px) scale(1.03); filter: drop-shadow(0 10px 18px rgba(0,0,0,.55)); z-index: 3; }
.cg-unplayable { opacity: .5; filter: grayscale(.5); cursor: help; }
.cg-selectable { cursor: pointer; }
.cg-selectable:hover { transform: translateY(-5px); z-index: 3; }
.cg-selected { transform: translateY(-6px); filter: drop-shadow(0 0 10px var(--accent)); z-index: 4; }
.cg-selected .cg-tcg-scaled { outline: 2px solid var(--accent); outline-offset: -1px; border-radius: 10px; }
.cg-targetable { cursor: crosshair; animation: cgPulse 1s ease-in-out infinite; }
.cg-targetable .cg-tcg-scaled { outline: 2px solid var(--accent2); outline-offset: -1px; border-radius: 10px; }
/* Carta de evolución en la mano (tiene objetivo válido) */
.cg-evo .cg-tcg-scaled { outline: 2px solid var(--accent); outline-offset: -1px; border-radius: 10px; }
.cg-evo-badge { position: absolute; top: -9px; left: 50%; transform: translateX(-50%); z-index: 6;
  font-family: var(--game); font-weight: 800; font-size: .5rem; letter-spacing: .5px; color: #06122e;
  background: var(--accent); padding: 1px 6px; border-radius: 4px; white-space: nowrap; }
/* Criatura en juego que puede recibir la evolución */
.cg-evo-target { cursor: crosshair; animation: cgPulse 1s ease-in-out infinite; }
.cg-evo-target .cg-tcg-scaled { outline: 2px solid var(--accent); outline-offset: -1px; border-radius: 10px; }
.cg-evo-dim { opacity: .45; filter: grayscale(.5); }
.cg-card-evolved { animation: cgEvolved .6s ease; }
@keyframes cgEvolved { 0% { filter: brightness(2.2) drop-shadow(0 0 14px var(--accent)); transform: scale(1.08); }
  100% { filter: none; transform: scale(1); } }
.cg-spent { opacity: .55; filter: grayscale(.55); }
.cg-fresh .cg-tcg-scaled::after { content: 'NUEVA'; position: absolute; top: 5px; right: 5px;
  font-family: var(--game); font-weight: 800; font-size: .5rem; letter-spacing: .5px; z-index: 5;
  color: #cdd6e6; background: rgba(0,0,0,.78); padding: 1px 5px; border-radius: 4px; }
/* Marcada como atacante (tu fase declareAtk) */
.cg-attacking-mark { transform: translateY(-8px); filter: drop-shadow(0 0 10px #ff6b4a); z-index: 4; }
.cg-attacking-mark .cg-tcg-scaled { outline: 2px solid #ff6b4a; outline-offset: -1px; border-radius: 10px; }
.cg-attacking-mark::before { content: 'ATACA'; position: absolute; top: -9px; left: 50%; transform: translateX(-50%);
  z-index: 6; font-family: var(--game); font-weight: 800; font-size: .5rem; letter-spacing: .5px; color: #06122e;
  background: #ff6b4a; padding: 1px 5px; border-radius: 4px; white-space: nowrap; }
/* Atacante rival que puedes elegir bloquear */
.cg-attacker-foe { cursor: pointer; }
.cg-attacker-foe .cg-tcg-scaled { outline: 2px solid #ff8a4a; outline-offset: -1px; border-radius: 10px; animation: cgPulse 1.1s ease-in-out infinite; }
.cg-attacker-foe.cg-blocked .cg-tcg-scaled { outline-color: #4a9bff; animation: none; }
.cg-attacker-foe.cg-blocked::after { content: 'BLOQUEADO'; position: absolute; bottom: -6px; left: 50%; transform: translateX(-50%);
  z-index: 6; font-family: var(--game); font-weight: 800; font-size: .5rem; letter-spacing: .5px; color: #06122e;
  background: #4a9bff; padding: 1px 5px; border-radius: 4px; white-space: nowrap; }
/* Tu criatura asignada como bloqueadora */
.cg-blocking { transform: translateY(-4px); }
.cg-blocking .cg-tcg-scaled { outline: 2px solid #4a9bff; outline-offset: -1px; border-radius: 10px; }
.cg-blocking::before { content: 'BLOQUEA'; position: absolute; top: -9px; left: 50%; transform: translateX(-50%);
  z-index: 6; font-family: var(--game); font-weight: 800; font-size: .5rem; letter-spacing: .5px; color: #06122e;
  background: #4a9bff; padding: 1px 5px; border-radius: 4px; white-space: nowrap; }

/* Animaciones de acción */
.cg-card-played { animation: cgPlayIn .42s cubic-bezier(.2,1.3,.4,1) both; }
@keyframes cgPlayIn { 0% { transform: translateY(28px) scale(.7); opacity: 0; } 100% { transform: translateY(0) scale(1); opacity: 1; } }
.cg-card-attacking { animation: cgLunge .4s ease; z-index: 5; }
@keyframes cgLunge { 0% { transform: translateY(0); } 35% { transform: translateY(-14px) scale(1.06); } 100% { transform: translateY(0); } }
.cg-card-hit { animation: cgShake .4s ease; }
@keyframes cgShake { 0%,100% { transform: translateX(0); } 20% { transform: translateX(-5px); } 40% { transform: translateX(5px); } 60% { transform: translateX(-3px); } 80% { transform: translateX(3px); } }
.cg-card-faint { animation: cgFaint .55s ease forwards; }
@keyframes cgFaint { 0% { opacity: 1; transform: scale(1) rotate(0); } 100% { opacity: 0; transform: scale(.4) rotate(12deg); filter: blur(3px); } }
/* Choque en la línea divisoria: destello e impacto sin mover la carta (para no
   romper su posición avanzada). */
.cg-card-clash .cg-tcg-scaled { animation: cgClash .38s ease; }
@keyframes cgClash {
  0% { filter: brightness(1); box-shadow: none; }
  35% { filter: brightness(1.6) saturate(1.3); box-shadow: 0 0 18px 4px rgba(255,210,120,.85); }
  100% { filter: brightness(1); box-shadow: none; }
}

/* Botones */
.cg-btn {
  font-family: var(--game); font-weight: 800; letter-spacing: .5px; cursor: pointer;
  padding: 11px 20px; border-radius: 12px; font-size: .92rem;
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  background: linear-gradient(180deg, #243463, var(--surface2));
  color: var(--text); border: 1px solid var(--border);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.07), 0 2px 6px rgba(0,0,0,.35);
  transition: transform .12s ease, box-shadow .15s ease, border-color .15s ease, filter .15s ease;
}
.cg-btn:hover { transform: translateY(-2px); border-color: var(--accent); box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 6px 16px rgba(0,0,0,.45); }
.cg-btn:active { transform: translateY(0); box-shadow: inset 0 2px 5px rgba(0,0,0,.4); }
.cg-btn-primary { background: linear-gradient(180deg, #ffe27a, #f5b400); color: #3a2c00; border-color: #c8920a; }
.cg-btn-primary:hover { filter: brightness(1.06); border-color: #ffd479; background: linear-gradient(180deg, #ffe890, #ffbe10); }
.cg-end { flex: 0 0 auto; background: linear-gradient(180deg, #2e7d4f, var(--good)); border-color: #1e8c4d; color: #eafff1; }
.cg-end:hover { border-color: #7be6a6; filter: brightness(1.05); }
.cg-end.is-disabled { opacity: .4; pointer-events: none; }
.cg-dim { opacity: .5; }

/* Pantalla sin cartas */
.cg-empty { margin: auto; text-align: center; max-width: 360px; padding: 30px 20px;
  display: flex; flex-direction: column; align-items: center; gap: 12px; }
.cg-empty-ico { color: var(--muted); }
.cg-empty-title { font-family: var(--game); font-weight: 800; font-size: 1.2rem; color: var(--text); }
.cg-empty-desc { color: var(--muted); font-size: .9rem; line-height: 1.4; }

/* Overlay de fin de partida */
.cg-over { position: absolute; inset: 0; z-index: 20; display: flex; align-items: center; justify-content: center;
  background: rgba(5,8,18,.78); backdrop-filter: blur(3px); }
.cg-over-panel { text-align: center; padding: 28px 30px; border-radius: 18px; width: min(86vw, 360px);
  background: linear-gradient(165deg, #1a2340, #0d1426); border: 1px solid var(--border);
  box-shadow: 0 20px 60px rgba(0,0,0,.6); animation: cgPop .4s cubic-bezier(.2,1.3,.4,1) both; }
@keyframes cgPop { from { transform: scale(.85); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.cg-over-title { font-family: var(--game); font-weight: 800; font-size: 2rem; letter-spacing: 1px; }
.cg-over-win .cg-over-title { color: #ffd479; text-shadow: 0 2px 14px rgba(245,180,0,.5); }
.cg-over-lose .cg-over-title { color: #ff8272; }
.cg-over-sub { color: var(--muted); font-size: .9rem; margin: 6px 0 18px; }
.cg-over-btns { display: flex; gap: 10px; justify-content: center; }

/* El screen necesita posición relativa para el overlay */
#screen-cardgame { position: relative; }

/* Carta de respaldo si TCGCard no está disponible */
.cg-card-fallback { width: 128px; height: 179px; display: flex; align-items: center; justify-content: center;
  text-align: center; padding: 10px; border-radius: 10px; background: linear-gradient(165deg,#20283f,#131a2c);
  border: 1px solid var(--border); font-family: var(--game); font-weight: 800; color: var(--text); }

/* Botón del menú principal para el juego de cartas */
.menu-cardgame {
  --mc: #c08bd8;
  background: linear-gradient(160deg, #d662b8, #a8329a 55%, #7a1f72);
  box-shadow: 0 6px 18px rgba(0, 0, 0, .4), 0 0 20px rgba(200, 70, 180, .42);
}

/* ════════════════════════════════════════════════════════════
   MENÚ DEL MODO (Jugar / Construir mazo)
   ════════════════════════════════════════════════════════════ */
.cg-menu { display: flex; flex-direction: column; gap: 14px; max-width: 460px; margin: 30px auto; padding: 0 12px; }
.cg-menu-btn {
  display: flex; align-items: center; gap: 16px; text-align: left;
  padding: 18px 20px; border-radius: 14px; cursor: pointer;
  background: linear-gradient(165deg, #1a2340, #0d1426); border: 1px solid var(--border);
  color: var(--text); transition: transform .12s, border-color .15s, box-shadow .15s;
}
.cg-menu-btn:hover { transform: translateY(-2px); border-color: var(--accent); box-shadow: 0 8px 20px rgba(0,0,0,.4); }
.cg-menu-ico { width: 52px; height: 52px; flex: 0 0 auto; border-radius: 12px; display: flex; align-items: center; justify-content: center; }
.cg-menu-play .cg-menu-ico { background: linear-gradient(160deg, #2a7d4f, #15512f); color: #c9ffe0; }
.cg-menu-build .cg-menu-ico { background: linear-gradient(160deg, #5a4a8a, #2d2350); color: #e0d4ff; }
.cg-menu-tx { display: flex; flex-direction: column; gap: 2px; }
.cg-menu-tx b { font-family: var(--game); font-weight: 800; font-size: 1.2rem; letter-spacing: .5px; }
.cg-menu-tx small { color: var(--muted); font-size: .82rem; }

/* ════════════════════════════════════════════════════════════
   CONSTRUCTOR DE MAZOS
   ════════════════════════════════════════════════════════════ */
.cg-deck-counter {
  min-width: 72px; text-align: right; font-family: var(--game); font-weight: 800;
  display: flex; align-items: baseline; justify-content: flex-end; gap: 1px;
  padding: 4px 10px; border-radius: 10px; background: rgba(0,0,0,.25);
}
.cg-deck-counter-n { font-size: 1.4rem; color: var(--accent); }
.cg-deck-counter-max { font-size: .9rem; color: #9a96b8; }
.cg-deck-counter-ok { background: rgba(60,200,110,.18); }
.cg-deck-counter-ok .cg-deck-counter-n { color: #5bff9d; }
.cg-deck-counter-over { background: rgba(224,83,59,.22); animation: cgCountPulse 1s ease-in-out infinite; }
.cg-deck-counter-over .cg-deck-counter-n { color: #ff6a52; }
@keyframes cgCountPulse { 0%,100% { box-shadow: 0 0 0 0 rgba(255,80,60,0); } 50% { box-shadow: 0 0 14px 2px rgba(255,80,60,.5); } }
.cg-deck-warn {
  margin: 8px 0; padding: 8px 10px; border-radius: 8px;
  background: rgba(224,83,59,.15); border: 1px solid rgba(224,83,59,.4);
  color: #ff8a78; font-size: .78rem; font-weight: 600; line-height: 1.3;
}
.cg-deck-side-over { color: #ff6a52; font-weight: 900; }
.cg-deck-side-ok { color: #5bff9d; font-weight: 900; }
.cg-deck-namebar { margin-bottom: 4px; }

.cg-deck-modes { display: flex; gap: 8px; justify-content: center; margin: 6px 0; }
.cg-deck-mode {
  font-family: var(--game); font-weight: 700; font-size: .9rem; cursor: pointer;
  padding: 7px 18px; border-radius: 9px; color: var(--text);
  background: var(--surface); border: 1px solid var(--border); transition: background .15s, border-color .15s;
}
.cg-deck-mode:hover { background: var(--surface2); }
.cg-deck-mode.active { background: var(--surface2); border-color: var(--accent); color: var(--accent); }

.cg-deck-gens { display: flex; gap: 5px; justify-content: center; flex-wrap: wrap; margin-bottom: 8px; }
.cg-genchip {
  font-family: var(--game); font-weight: 700; font-size: .78rem; cursor: pointer;
  padding: 4px 11px; border-radius: 7px; color: var(--text);
  background: var(--surface); border: 1px solid var(--border); transition: background .15s;
}
.cg-genchip:hover:not(:disabled) { background: var(--surface2); }
.cg-genchip.active { background: var(--accent); color: #3a2c00; border-color: var(--accent); }
.cg-genchip.empty, .cg-genchip:disabled { opacity: .35; cursor: not-allowed; }

.cg-deck-cols { display: flex; gap: 14px; align-items: flex-start; }
.cg-deck-pool {
  flex: 1 1 auto; display: grid; grid-template-columns: repeat(auto-fill, minmax(116px, 1fr));
  gap: 12px; max-height: 70vh; overflow-y: auto; padding: 8px 6px;
}
.cg-deck-pick {
  position: relative; width: 116px; height: 162px; cursor: pointer;
  transition: transform .14s ease, filter .14s ease;
  border-radius: 11px;
}
.cg-deck-pick-max { cursor: default; filter: grayscale(.65) brightness(.62); opacity: .7; }
.cg-deck-pick-max:hover { transform: none; }
.cg-deck-pick:hover { transform: translateY(-6px) scale(1.04); filter: brightness(1.08); z-index: 2; }
.cg-deck-pick .cg-tcg-scaled { width: 116px; height: 162px; }
.cg-deck-pick .cg-tcg-scaled .tcg-card { width: 320px !important; max-width: none !important; transform: scale(0.3625); transform-origin: top left; }
.cg-deck-pick-add {
  position: absolute; bottom: 5px; right: 5px; width: 26px; height: 26px; border-radius: 50%;
  background: var(--good); color: #fff; font-weight: 800; font-size: 1.15rem; cursor: pointer;
  display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 5px rgba(0,0,0,.5);
  z-index: 3; transition: transform .12s ease;
}
.cg-deck-pick-add:hover { transform: scale(1.18); }
/* Botón − (quitar una copia) abajo-izquierda de la carta del catálogo. */
.cg-deck-pick-rem {
  position: absolute; bottom: 5px; left: 5px; width: 26px; height: 26px; border-radius: 50%;
  background: #e0533b; color: #fff; font-weight: 900; font-size: 1.25rem; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 5px rgba(0,0,0,.5);
  z-index: 3; transition: transform .12s ease;
}
.cg-deck-pick-rem:hover { transform: scale(1.18); }
.cg-deck-pick-n {
  position: absolute; top: 5px; left: 5px; min-width: 24px; height: 24px; padding: 0 5px; border-radius: 12px;
  background: var(--accent); color: #3a2c00; font-family: var(--game); font-weight: 800; font-size: .85rem;
  display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 4px rgba(0,0,0,.5); z-index: 3;
}
.cg-deck-pick.in-deck .cg-tcg-scaled { outline: 3px solid var(--accent); outline-offset: -2px; border-radius: 11px; box-shadow: 0 0 16px rgba(255,200,80,.5); }

.cg-deck-side { flex: 0 0 240px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 14px; position: sticky; top: 8px; }
.cg-deck-side-title { font-family: var(--game); font-weight: 800; font-size: .95rem; color: var(--text); margin-bottom: 4px; }
.cg-deck-list { max-height: 52vh; overflow-y: auto; display: flex; flex-direction: column; gap: 3px; margin-bottom: 10px; }
.cg-deck-row { display: flex; align-items: center; gap: 8px; padding: 4px 6px; border-radius: 7px; background: rgba(255,255,255,.03); }
.cg-deck-row-n { font-family: var(--game); font-weight: 800; color: var(--accent); font-size: .82rem; min-width: 24px; }
.cg-deck-row-name { flex: 1 1 auto; font-family: var(--game); font-weight: 600; font-size: .82rem; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cg-deck-row-del {
  width: 22px; height: 22px; flex: 0 0 auto; border-radius: 6px; cursor: pointer;
  background: var(--surface2); border: 1px solid var(--border); color: var(--accent2);
  font-weight: 800; font-size: 1.1rem; line-height: 1; display: flex; align-items: center; justify-content: center;
}
.cg-deck-row-del:hover { background: rgba(231,76,60,.2); }
.cg-deck-actions { display: flex; flex-direction: column; gap: 8px; }
.cg-deck-empty-msg { color: var(--muted); font-size: .85rem; text-align: center; padding: 20px 10px; font-style: italic; }

/* ── Constructor: nombre, buscador y filtros ── */
.cg-deck-name-input {
  width: 100%; box-sizing: border-box; margin: 6px 0 8px;
  background: var(--surface); border: 1px solid var(--border); border-radius: 10px;
  color: var(--text); font-family: var(--game); font-weight: 800; font-size: 1rem;
  padding: 9px 12px; letter-spacing: .5px;
}
.cg-deck-name-input:focus { outline: none; border-color: var(--accent); }

.cg-deck-filters { display: flex; gap: 8px; align-items: stretch; margin-bottom: 8px; }
.cg-deck-search {
  flex: 1 1 auto; min-width: 0; box-sizing: border-box;
  background: var(--surface); border: 1px solid var(--border); border-radius: 10px;
  color: var(--text); font-size: .9rem; padding: 8px 12px;
}
.cg-deck-search:focus { outline: none; border-color: var(--accent); }
.cg-deck-typesel {
  flex: 0 0 auto; background: var(--surface); border: 1px solid var(--border); border-radius: 10px;
  color: var(--text); font-size: .85rem; font-weight: 700; padding: 8px 10px; cursor: pointer;
}
.cg-deck-typesel:focus { outline: none; border-color: var(--accent); }
.cg-deck-clearf {
  flex: 0 0 auto; width: 38px; border-radius: 10px; cursor: pointer;
  background: var(--surface2); border: 1px solid var(--border); color: var(--accent2);
  font-weight: 800; font-size: 1rem;
}
.cg-deck-clearf:hover { border-color: var(--accent); }

/* Botón "solo ex" del constructor de mazos (dorado al activarse). */
.cg-deck-exfilter {
  flex: 0 0 auto; padding: 0 12px; height: 38px; border-radius: 10px; cursor: pointer;
  background: var(--surface2); border: 1px solid var(--border); color: #d8a93a;
  font-family: var(--game, inherit); font-weight: 800; font-size: .82rem; letter-spacing: .5px;
  transition: all .15s;
}
.cg-deck-exfilter:hover { border-color: #d8a93a; }
.cg-deck-exfilter.on {
  background: linear-gradient(160deg, #f0ce68, #c0930f); color: #4a3406;
  border-color: #ffe9a0; box-shadow: 0 0 10px rgba(216,169,58,.45);
}

/* ── Gestor de mazos (lista) ── */
.cg-deckmgr { max-width: 520px; margin: 0 auto; padding: 8px 4px; }
.cg-deckmgr-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.cg-deckmgr-row { display: flex; gap: 8px; align-items: stretch; }
.cg-deckmgr-main {
  flex: 1 1 auto; display: flex; align-items: center; gap: 14px;
  background: var(--surface); border: 1px solid var(--border); border-radius: 12px;
  padding: 10px 16px; cursor: pointer; text-align: left; transition: transform .12s, border-color .12s;
}
.cg-deckmgr-main:hover { transform: translateY(-2px); border-color: var(--accent); }
.cg-deckmgr-sprite {
  flex: 0 0 auto; width: 56px; height: 56px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  background: radial-gradient(circle at 50% 60%, rgba(255,255,255,.08), transparent 70%);
}
.cg-deckmgr-sprite img { width: 52px; height: 52px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 2px 4px rgba(0,0,0,.5)); }
.cg-deckmgr-txt { display: flex; flex-direction: column; gap: 3px; flex: 1 1 auto; }
.cg-deckmgr-name { font-family: var(--game); font-weight: 800; font-size: 1rem; color: var(--text); letter-spacing: .5px; }
.cg-deckmgr-n { font-family: var(--game); font-weight: 700; font-size: .8rem; color: var(--muted); }
.cg-deckmgr-del {
  flex: 0 0 auto; width: 48px; border-radius: 12px; cursor: pointer;
  background: var(--surface2); border: 1px solid var(--border); color: var(--accent2);
  display: flex; align-items: center; justify-content: center;
}
.cg-deckmgr-del:hover { background: rgba(231,76,60,.2); border-color: #e74c3c; }
.cg-deckmgr-new { width: 100%; }

/* ── Constructor: pestañas Pokémon / Objetos ── */
.cg-deck-tabs { display: flex; gap: 8px; margin: 4px 0 8px; }
.cg-deck-tab {
  flex: 1 1 auto; font-family: var(--game); font-weight: 800; letter-spacing: .5px; cursor: pointer;
  padding: 9px 12px; border-radius: 10px; font-size: .88rem;
  background: var(--surface); color: var(--muted); border: 1px solid var(--border);
  transition: color .15s, border-color .15s, background .15s;
}
.cg-deck-tab:hover { color: var(--text); border-color: var(--accent); }
.cg-deck-tab.active { color: #3a2c00; background: linear-gradient(180deg, #ffe27a, #f5b400); border-color: #c8920a; }

/* ── Constructor: pool de objetos/partidarios ── */
.cg-deck-pool-items {
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)) !important;
}
.cg-deck-pickitem {
  position: relative; cursor: pointer; border-radius: 12px; padding: 10px 10px 12px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--tk) 22%, #11162a), #11162a);
  border: 1px solid color-mix(in srgb, var(--tk) 45%, var(--border));
  display: flex; flex-direction: column; align-items: center; gap: 5px; text-align: center;
  transition: transform .12s ease, box-shadow .15s ease, border-color .15s ease; min-height: 150px;
}
.cg-deck-pickitem:hover { transform: translateY(-3px); border-color: var(--tk); box-shadow: 0 6px 16px rgba(0,0,0,.45); }
.cg-deck-pickitem.in-deck { box-shadow: 0 0 0 2px var(--accent) inset; }
.cg-pickitem-top { font-family: var(--game); font-weight: 800; font-size: .6rem; letter-spacing: 1px; color: var(--tk); text-transform: uppercase; }
.cg-pickitem-icon { width: 42px; height: 42px; color: var(--tk); }
.cg-pickitem-icon svg { width: 100%; height: 100%; }
.cg-pickitem-name { font-family: var(--game); font-weight: 800; font-size: .82rem; color: var(--text); line-height: 1.1; }
.cg-pickitem-text { font-size: .68rem; color: var(--muted); line-height: 1.2; }

/* Panel lateral: subtítulo de objetos y meta */
.cg-deck-side-meta { font-family: var(--game); font-weight: 700; font-size: .72rem; color: var(--muted); margin: -4px 0 8px; }
.cg-deck-sub { font-family: var(--game); font-weight: 800; font-size: .72rem; color: var(--accent); letter-spacing: .5px; text-transform: uppercase; margin: 8px 0 3px; opacity: .85; }
.cg-deck-row-item { background: rgba(245,166,35,.07); }

/* ── Selección de mazo: etiquetas de sección ── */
.cg-decksel-label {
  font-family: var(--game), 'Press Start 2P', monospace; font-weight: 800;
  font-size: 1.05rem; color: var(--accent);
  letter-spacing: 2px; text-transform: uppercase;
  margin: 26px auto 14px; text-align: center; max-width: 1100px;
  position: relative; padding-bottom: 12px;
  text-shadow: 0 2px 12px rgba(255,200,80,.25);
}
.cg-decksel-label::after {
  content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%);
  width: 64px; height: 3px; border-radius: 2px;
  background: linear-gradient(90deg, transparent, var(--accent), transparent);
}

/* ── Título cuando hay un modo activo (más compacto) ── */
.cg-title-mode { font-size: 1.02rem !important; letter-spacing: 1px !important; }

/* ── Menú de modos de juego ── */
/* Contenedor que centra verticalmente la pantalla del juego de cartas. */
.cg-screen { max-width: 600px; margin: 0 auto; padding: 0 12px 40px; }
.cg-screen-center { min-height: calc(100vh - 90px); display: flex; flex-direction: column; justify-content: center; }

.cg-modes { display: flex; flex-direction: column; gap: 12px; max-width: 580px; margin: 0 auto; width: 100%; padding: 4px; }
.cg-mode-card {
  display: flex; align-items: center; gap: 16px; text-align: left; cursor: pointer;
  padding: 16px 18px; border-radius: 16px; position: relative; overflow: hidden;
  background: linear-gradient(160deg, color-mix(in srgb, var(--mc) 26%, #141a30), color-mix(in srgb, var(--mc) 8%, #0e1322));
  border: 1px solid color-mix(in srgb, var(--mc) 55%, var(--border));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12), 0 4px 14px rgba(0,0,0,.35), 0 0 18px color-mix(in srgb, var(--mc) 30%, transparent);
  transition: transform .14s ease, box-shadow .16s ease, filter .14s ease;
}
/* Reflejo de cristal superior (coherencia con los botones del juego). */
.cg-mode-card::after {
  content: ''; position: absolute; left: 8px; right: 8px; top: 5px; height: 40%;
  border-radius: 14px 14px 28px 28px; pointer-events: none;
  background: linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,0));
}
.cg-mode-card:hover { transform: translateY(-3px); filter: brightness(1.08); box-shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 8px 24px rgba(0,0,0,.5), 0 0 26px color-mix(in srgb, var(--mc) 50%, transparent); }
.cg-mode-card:active { transform: translateY(0) scale(.99); }
.cg-mode-card.cg-mode-done { opacity: .55; }
/* "Construir mazo": separada del grupo de modos con un poco de aire y un toque distinto. */
.cg-mode-build { margin-top: 18px; border-style: dashed; }
.cg-mode-build::before {
  content: ''; position: absolute; top: -10px; left: 10%; right: 10%; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.18), transparent);
}
.cg-mode-ico {
  flex: 0 0 auto; width: 54px; height: 54px; border-radius: 14px; font-size: 27px;
  display: flex; align-items: center; justify-content: center; z-index: 1;
  background: color-mix(in srgb, var(--mc) 34%, #0d1117); border: 1px solid color-mix(in srgb, var(--mc) 55%, var(--border));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12);
}
.cg-mode-tx { display: flex; flex-direction: column; gap: 4px; z-index: 1; }
.cg-mode-tx b { font-family: var(--game); font-weight: 800; font-size: 1.08rem; color: #fff; letter-spacing: .5px; }
.cg-mode-tx small { font-size: .82rem; color: #b8b4cf; line-height: 1.3; }
.cg-menu-modes .cg-menu-ico { color: var(--accent); }

@media (max-width: 640px) {
  .cg-deck-cols { flex-direction: column; }
  .cg-deck-side { flex: 1 1 auto; width: 100%; }
  .cg-deck-list { max-height: 30vh; }
  .cg-deck-pool { max-height: 46vh; }
}

/* ════════════════════════════════════════════════════════════════════
   TCG: marcador de KOs, activo, energía acumulada, menú de ataque,
   moneda, modos (energía/retirada/elegir activo). (Fase 3)
   ════════════════════════════════════════════════════════════════════ */

/* Marcador: premios (KOs) por lado */
.cg-strip { display: flex; align-items: center; gap: 12px; padding: 8px 14px; }
.cg-strip-name { font-family: var(--game); font-weight: 800; letter-spacing: 1px; font-size: .82rem; }
.cg-strip-you .cg-strip-name { color: var(--good); }
.cg-strip-ai .cg-strip-name { color: var(--accent2); }
.cg-strip-hand { color: var(--muted); font-size: .74rem; font-family: var(--game); font-weight: 700; margin-left: auto; letter-spacing: .3px; }
.cg-ko-track { display: flex; align-items: center; gap: 6px; padding: 3px 9px; border-radius: 999px; background: rgba(0,0,0,.28); border: 1px solid rgba(255,255,255,.06); }
.cg-ko-pip { width: 14px; height: 14px; border-radius: 50%; border: 1.5px solid rgba(255,255,255,.25); background: rgba(255,255,255,.05); transition: transform .2s, box-shadow .2s; }
.cg-ko-pip.on { background: radial-gradient(circle at 35% 30%, #ffe7a3, var(--accent)); border-color: #ffcf5e; box-shadow: 0 0 9px rgba(245,166,35,.8); transform: scale(1.05); }
.cg-ko-num { font-family: var(--game); font-weight: 800; font-size: .78rem; color: #ffd479; margin-left: 4px; }

/* Activo: carta del frente algo mayor y destacada */
.cg-card-active { width: 128px; height: 179px; }
.cg-slot-front.cg-slot-need { border-color: var(--accent); animation: cgPulse 1.1s ease-in-out infinite; }
.cg-slot-front.cg-slot-need .cg-slot-tag { color: #ffd479; }

/* Energía acumulada (esquina superior izq de la carta en juego) */
.cg-ov-energy {
  position: absolute; top: -5px; left: -5px; z-index: 5;
  display: inline-flex; align-items: center; gap: 1px;
  min-width: 22px; height: 22px; padding: 0 5px; border-radius: 11px;
  background: linear-gradient(160deg, #2a6cc4, #15356b); color: #eaf3ff;
  font-family: var(--game); font-weight: 800; font-size: .76rem;
  border: 1.5px solid rgba(180,210,255,.55); box-shadow: 0 1px 4px rgba(0,0,0,.5);
}
.cg-ov-energy svg { opacity: .95; }
.cg-card-bench .cg-ov-energy { min-width: 18px; height: 18px; font-size: .64rem; top: -4px; left: -4px; }

/* Pistas de modo: elegir Pokémon para energía / retirada / activo */
.cg-energy-pick { cursor: pointer; animation: cgPulse 1s ease-in-out infinite; }
.cg-energy-pick .cg-tcg-scaled { outline: 2px solid #3a7fd0; outline-offset: -1px; border-radius: 10px; }
.cg-retreat-target, .cg-choose { cursor: pointer; animation: cgPulse 1s ease-in-out infinite; }
.cg-retreat-target .cg-tcg-scaled { outline: 2px solid var(--accent); outline-offset: -1px; border-radius: 10px; }
.cg-choose .cg-tcg-scaled { outline: 2px solid var(--good); outline-offset: -1px; border-radius: 10px; }

/* Botón de poner energía */
.cg-btn-energy { background: linear-gradient(180deg, #3a86e0, #1d4f96); border-color: #4a96e6; color: #eaf3ff; }
.cg-btn-energy:hover { border-color: #8fc2ff; filter: brightness(1.06); }
.cg-act-btns { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; justify-content: center; margin-top: 8px; }

/* Menú de ataque (overlay centrado) */
.cg-atkmenu {
  position: fixed; inset: 0; z-index: 60; display: flex; align-items: center; justify-content: center;
  background: rgba(5,8,14,.6); backdrop-filter: blur(2px);
}
.cg-atkmenu-card {
  width: min(340px, 86vw); background: var(--surface); border: 1px solid var(--border);
  border-radius: 14px; padding: 12px; display: flex; flex-direction: column; gap: 8px;
  box-shadow: 0 18px 50px rgba(0,0,0,.6);
}
.cg-atkmenu-head { font-family: var(--game); font-weight: 800; letter-spacing: .5px; color: #ffd479; text-align: center; font-size: .96rem; }
.cg-mv {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 10px 12px; border-radius: 10px; cursor: pointer;
  background: var(--surface2); border: 1px solid var(--border); color: var(--text);
  font-family: var(--game); font-weight: 700;
}
.cg-mv:hover { border-color: var(--accent); }
.cg-mv.is-disabled { opacity: .42; cursor: not-allowed; }
.cg-mv-name { font-size: .9rem; }
.cg-mv-meta { display: inline-flex; align-items: center; gap: 8px; }
.cg-mv-dmg { font-size: 1.05rem; font-weight: 800; color: #fff; }
.cg-mv-cost { color: #9ec5ff; font-weight: 800; }
.cg-mv-eff { font-weight: 800; font-size: .8rem; padding: 1px 5px; border-radius: 6px; }
.cg-mv-eff.up   { color: #ffd45e; background: rgba(255,212,94,.18); }  /* debilidad de tipo */
.cg-mv-eff.buff { color: #7CFFB0; background: rgba(40,180,99,.25); text-shadow: 0 0 6px rgba(124,255,176,.7); }  /* Giovanni / bonus de carta */
.cg-mv-eff.down { color: #ff9d8a; background: rgba(231,76,60,.18); }
.cg-atkmenu-buff { color: #7CFFB0; font-size: .7rem; padding: 1px 6px; border-radius: 6px; background: rgba(40,180,99,.3); margin-left: 6px; }
.cg-atkmenu-x { margin-top: 2px; }

/* Daño flotante supereficaz */
.cg-dmgfloat-super { color: #7CFFB0 !important; text-shadow: 0 0 10px rgba(40,180,99,.9); font-size: 1.5rem !important; }

/* Moneda inicial */
.cg-coin {
  position: fixed; inset: 0; z-index: 70; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 22px;
  background: rgba(5,8,14,.78); backdrop-filter: blur(3px);
  transition: opacity .4s ease; opacity: 1; cursor: pointer;
}
.cg-coin-hide { opacity: 0; pointer-events: none; }

/* Escena 3D: la moneda gira en el eje X (vertical). */
.cg-coin-scene { width: 150px; height: 150px; perspective: 800px; }
.cg-coin-flip {
  position: relative; width: 100%; height: 100%;
  transform-style: preserve-3d;
  animation: cgCoinSpinY 2.3s cubic-bezier(.32,.06,.18,1) forwards;
}
/* La rotación final la fija el lado (you = Master a 0°, ai = Gengar a 180°). */
.cg-coin-you .cg-coin-flip  { animation-name: cgCoinSpinYou; }
.cg-coin-ai  .cg-coin-flip  { animation-name: cgCoinSpinAi; }
.cg-coin-face {
  position: absolute; inset: 0; border-radius: 50%; backface-visibility: hidden;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 10px 30px rgba(0,0,0,.6);
}
.cg-coin-face img { width: 100%; height: 100%; object-fit: contain; }
.cg-coin-master { transform: rotateX(0deg); }
.cg-coin-gengar { transform: rotateX(180deg); }

@keyframes cgCoinSpinYou {
  0%   { transform: rotateX(0deg) scale(.7); }
  100% { transform: rotateX(1440deg) scale(1); }   /* termina mostrando Master Ball */
}
@keyframes cgCoinSpinAi {
  0%   { transform: rotateX(0deg) scale(.7); }
  100% { transform: rotateX(1620deg) scale(1); }   /* +180° → termina en Gengar */
}

/* El texto del turno aparece SOLO al aterrizar (clase añadida por JS). */
.cg-coin-result {
  font-family: var(--game); font-weight: 900; font-size: 1.8rem; letter-spacing: 1px;
  opacity: 0; transform: scale(.8); transition: opacity .35s ease, transform .35s ease;
}
.cg-coin-landed .cg-coin-result { opacity: 1; transform: scale(1); }
.cg-coin-you .cg-coin-result { color: #ffe27a; text-shadow: 0 0 18px rgba(255,210,80,.9), 0 0 36px rgba(255,180,0,.6); }
.cg-coin-ai  .cg-coin-result { color: #c98bff; text-shadow: 0 0 18px rgba(180,110,255,.9), 0 0 36px rgba(130,60,200,.6); }
.cg-coin-hint { font-family: var(--game); font-weight: 600; font-size: .78rem; color: rgba(255,255,255,.55); }

.cg-turn { font-family: var(--game); font-weight: 700; color: var(--muted); font-size: .82rem; }

/* ── Pantalla de selección de mazo ── */
.cg-decksel { display: flex; flex-direction: column; gap: 10px; padding: 12px; max-width: 560px; margin: 0 auto; }
.cg-deckcard {
  display: flex; align-items: stretch; gap: 0; text-align: left; cursor: pointer;
  background: var(--surface); border: 1px solid var(--border); border-radius: 14px; overflow: hidden;
  color: var(--text); transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease;
}
.cg-deckcard:hover { transform: translateY(-2px); border-color: var(--dk); box-shadow: 0 8px 22px rgba(0,0,0,.4), 0 0 0 1px var(--dk); }
.cg-deckcard-bar { width: 8px; flex: 0 0 8px; background: var(--dk); }
.cg-deckcard-body { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; flex: 1 1 auto; }
.cg-deckcard-name { font-family: var(--game); font-weight: 800; font-size: 1.06rem; letter-spacing: .4px; color: #fff; }
.cg-deckcard-theme { font-family: var(--game); font-weight: 700; font-size: .82rem; color: var(--dk); filter: brightness(1.25); }
.cg-deckcard-n { font-size: .74rem; color: var(--muted); font-family: var(--game); font-weight: 600; margin-top: 2px; }
.cg-deckcard-go { align-self: center; padding: 0 16px; font-family: var(--game); font-weight: 800; color: var(--dk); filter: brightness(1.3); white-space: nowrap; }
.cg-deckcard-custom { border-style: dashed; }
.cg-deckcard-empty { opacity: .85; }

/* ── Energías acumuladas: círculos del color del tipo, abajo-izquierda ── */
.cg-energy-dots {
  position: absolute; left: 4px; bottom: 4px; z-index: 12;
  display: flex; flex-wrap: wrap-reverse; gap: 2px; max-width: 64%;
  pointer-events: none;
}
.cg-edot {
  width: 11px; height: 11px; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #fff, var(--ec) 70%);
  border: 1px solid rgba(0,0,0,.5);
  box-shadow: 0 0 5px var(--ec), 0 0 9px var(--ec), inset 0 0 2px rgba(255,255,255,.6);
  animation: cgEdotGlow 1.8s ease-in-out infinite;
}
@keyframes cgEdotGlow {
  0%,100% { box-shadow: 0 0 4px var(--ec), 0 0 7px var(--ec), inset 0 0 2px rgba(255,255,255,.6); }
  50%     { box-shadow: 0 0 7px var(--ec), 0 0 12px var(--ec), inset 0 0 2px rgba(255,255,255,.8); }
}
/* Animación de gastar energía (al atacar/retirar) */
@keyframes cgEdotSpend {
  0% { transform: scale(1.6); opacity: 1; }
  100% { transform: scale(0); opacity: 0; }
}
.cg-edot-spent { animation: cgEdotSpend .4s ease-out forwards; }
.cg-card-bench .cg-edot { width: 8px; height: 8px; }

/* ── Visor de carta ampliada ── */
.cg-inspect {
  position: fixed; inset: 0; z-index: 80; display: flex; align-items: center; justify-content: center;
  background: rgba(5,8,14,.72); backdrop-filter: blur(3px);
}
.cg-inspect-card {
  display: flex; gap: 18px; align-items: center; max-width: min(640px, 92vw);
  background: var(--surface); border: 1px solid var(--border); border-radius: 16px; padding: 18px;
  box-shadow: 0 20px 60px rgba(0,0,0,.6);
}
.cg-inspect-big { width: 240px; flex: 0 0 240px; }
.cg-inspect-big .tcg-card { width: 320px !important; max-width: none !important; transform: scale(0.75); transform-origin: top left; }
.cg-inspect-big { height: 336px; overflow: hidden; }
.cg-inspect-info { flex: 1 1 auto; display: flex; flex-direction: column; gap: 8px; }
.cg-inspect-name { font-family: var(--game); font-weight: 800; font-size: 1.2rem; color: #fff; }
.cg-inspect-sub { font-family: var(--game); font-weight: 600; font-size: .82rem; color: var(--muted); }
.cg-inspect-sub b { color: #ffd479; }
.cg-inspect-atks { display: flex; flex-direction: column; gap: 6px; margin: 6px 0; }
.cg-iatk { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 9px; background: var(--surface2); }
.cg-iatk-cost { display: inline-flex; gap: 2px; min-width: 44px; }
.cg-icost { width: 13px; height: 13px; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #fff, var(--ec) 70%); border: 1px solid rgba(0,0,0,.5);
  box-shadow: 0 0 4px var(--ec); }
.cg-icost-free { color: var(--muted); }
.cg-iatk-name { flex: 1 1 auto; font-family: var(--game); font-weight: 700; color: var(--text); }
.cg-iatk-dmg { font-family: var(--game); font-weight: 800; font-size: 1.1rem; color: #fff; }
@media (max-width: 560px) {
  .cg-inspect-card { flex-direction: column; }
  .cg-inspect-big { width: 200px; flex-basis: 200px; height: 280px; }
  .cg-inspect-big .tcg-card { transform: scale(0.625); }
}

/* ── Animación de entrada de cartas al tablero (escalonada, una a una) ── */
@keyframes cgCardEnter {
  0%   { opacity: 0; transform: translateY(-22px) scale(1.45); filter: brightness(1.7); }
  55%  { opacity: 1; transform: translateY(2px) scale(1.06); filter: brightness(1.2); }
  100% { opacity: 1; transform: translateY(0) scale(1); filter: brightness(1); }
}
.cg-enter { animation: cgCardEnter .36s cubic-bezier(.2,.85,.3,1.05) both; }
/* Entrada de carta del RIVAL: baja desde su mano (arriba), gira un poco y se
   asienta en el tapete. Más marcada y lenta para que se ENTIENDA la jugada. */
.cg-enter-ai { animation: cgCardEnterAI .55s cubic-bezier(.2,.8,.25,1.05) both; transform-origin: center top; }
@keyframes cgCardEnterAI {
  0%   { opacity: 0; transform: translateY(-90px) scale(.7) rotate(-6deg); filter: brightness(1.8); }
  55%  { opacity: 1; transform: translateY(8px) scale(1.08) rotate(2deg); filter: brightness(1.25); }
  78%  { transform: translateY(-3px) scale(.98) rotate(-1deg); filter: brightness(1.1); }
  100% { opacity: 1; transform: translateY(0) scale(1) rotate(0deg); filter: brightness(1); }
}

/* ── Animaciones de combate ── */
/* Vibración al recibir un golpe */
@keyframes cgHitShake {
  0%,100% { transform: translateX(0); }
  15% { transform: translateX(-5px) rotate(-1.5deg); }
  30% { transform: translateX(5px) rotate(1.5deg); }
  45% { transform: translateX(-4px) rotate(-1deg); }
  60% { transform: translateX(4px) rotate(1deg); }
  75% { transform: translateX(-2px); }
}
.cg-hit-shake { animation: cgHitShake .42s ease; }
/* Destello de impacto */
.cg-impact {
  position: absolute; inset: 0; border-radius: 8px; pointer-events: none; z-index: 20;
  background: radial-gradient(circle at 50% 45%, rgba(255,240,200,.95), rgba(255,140,60,.5) 40%, transparent 70%);
  animation: cgImpact .42s ease-out forwards; mix-blend-mode: screen;
}
@keyframes cgImpact {
  0% { opacity: 0; transform: scale(.4); }
  30% { opacity: 1; transform: scale(1.05); }
  100% { opacity: 0; transform: scale(1.3); }
}
/* Número de daño flotante */
.cg-dmgfloat {
  position: absolute; top: 30%; left: 50%; transform: translateX(-50%); z-index: 25;
  font-family: var(--game); font-weight: 900; font-size: 1.7rem; color: #ff5a4a;
  text-shadow: 0 2px 4px rgba(0,0,0,.9), 0 0 10px rgba(255,60,40,.7); pointer-events: none;
  animation: cgDmgFloat 1s ease-out forwards;
}
.cg-dmgfloat-super { color: #ffd23a; font-size: 2rem; text-shadow: 0 2px 4px rgba(0,0,0,.9), 0 0 14px rgba(255,200,40,.9); }
@keyframes cgDmgFloat {
  0% { opacity: 0; transform: translateX(-50%) translateY(8px) scale(.6); }
  25% { opacity: 1; transform: translateX(-50%) translateY(-6px) scale(1.15); }
  100% { opacity: 0; transform: translateX(-50%) translateY(-40px) scale(1); }
}
/* Debilitamiento (KO): la carta se desvanece y cae */
@keyframes cgFaint {
  0% { opacity: 1; transform: translateY(0) scale(1) rotate(0); filter: grayscale(0); }
  40% { opacity: .8; filter: grayscale(.6) brightness(.7); }
  100% { opacity: 0; transform: translateY(26px) scale(.82) rotate(6deg); filter: grayscale(1) brightness(.4); }
}
.cg-faint { animation: cgFaint .7s ease-in forwards; z-index: 15; }
/* Robar carta: sale del mazo hacia la mano */
@keyframes cgDrawFly {
  0% { opacity: 0; transform: translate(var(--dx,0), var(--dy,0)) scale(.5) rotate(-8deg); }
  40% { opacity: 1; }
  100% { opacity: 1; transform: translate(0,0) scale(1) rotate(0); }
}
.cg-draw-fly { animation: cgDrawFly .5s cubic-bezier(.2,.8,.3,1) both; }

/* ── Arrastrar carta al tablero ── */
.cg-board.cg-droppable { outline: 2px dashed rgba(245,166,35,.5); outline-offset: -6px; }
.cg-board.cg-dragover { outline: 3px solid var(--accent); outline-offset: -6px; box-shadow: inset 0 0 40px rgba(245,166,35,.25), inset 0 0 60px rgba(0,0,0,.45), 0 8px 26px rgba(0,0,0,.5); }

/* ── Cartas de Entrenador / Objeto en la mano ── */
.cg-trainer-card .cg-trainer-inner {
  width: 100%; height: 100%; border-radius: 10px; overflow: hidden;
  background: linear-gradient(160deg, color-mix(in srgb, var(--tk) 30%, var(--surface)) 0%, var(--surface) 60%);
  border: 2px solid var(--tk);
  display: flex; flex-direction: column; align-items: center; padding: 8px 6px; gap: 4px;
  box-shadow: inset 0 0 24px rgba(0,0,0,.35);
}
.cg-trainer-top {
  font-family: var(--game); font-weight: 800; font-size: .52rem; letter-spacing: 1.5px;
  color: var(--tk); align-self: stretch; text-align: center;
  border-bottom: 1px solid color-mix(in srgb, var(--tk) 40%, transparent); padding-bottom: 3px;
}
.cg-trainer-icon { width: 54px; height: 54px; margin: 4px 0; filter: drop-shadow(0 2px 4px rgba(0,0,0,.5)); }
.cg-trainer-name {
  font-family: var(--game); font-weight: 800; font-size: .74rem; color: #fff; text-align: center;
  line-height: 1.05; text-shadow: 0 1px 2px rgba(0,0,0,.7);
}
.cg-trainer-text {
  font-family: var(--game); font-weight: 600; font-size: .56rem; color: var(--text);
  text-align: center; line-height: 1.15; opacity: .9; margin-top: auto;
}

/* ── Overlay del Pokédex (ver próximas cartas) ── */
.cg-peek-box {
  background: var(--surface); border: 1px solid var(--border); border-radius: 16px; padding: 22px;
  box-shadow: 0 20px 60px rgba(0,0,0,.6); display: flex; flex-direction: column; align-items: center; gap: 16px;
}
.cg-peek-title { font-family: var(--game); font-weight: 800; font-size: 1.1rem; color: var(--accent); letter-spacing: .5px; }
.cg-peek-row { display: flex; gap: 16px; }
.cg-peek-card { width: 150px; }
.cg-peek-card .tcg-card { width: 150px !important; }
.cg-peek-trainer { width: 150px; height: 210px; border-radius: 10px; border: 2px solid var(--tk);
  background: linear-gradient(160deg, color-mix(in srgb, var(--tk) 30%, var(--surface)), var(--surface) 60%);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 10px; }
.cg-peek-tname { font-family: var(--game); font-weight: 800; color: #fff; text-align: center; }

/* ── Badge "EN PRUEBAS" del botón del juego de cartas en el menú ── */
.menu-btn.menu-cardgame { position: relative; }
.menu-beta {
  position: absolute; top: 6px; right: 6px; z-index: 3;
  font-family: var(--game, 'Rajdhani', sans-serif); font-weight: 800; font-size: .58rem;
  letter-spacing: .8px; color: #fff; background: linear-gradient(135deg, #e74c3c, #c0392b);
  padding: 2px 7px; border-radius: 6px; box-shadow: 0 2px 6px rgba(0,0,0,.45);
  text-transform: uppercase;
}
/* La pantalla del juego ocupa todo el alto disponible */
#screen-cardgame { padding: 0; }
#screen-cardgame .cg-wrap { width: 100%; }

/* ── Ataques clicables dentro del inspector ── */
.cg-inspect-hint { font-family: var(--game); font-weight: 700; font-size: .8rem; color: var(--accent); margin-bottom: 6px; }
.cg-iatk-go { cursor: pointer; border: 2px solid #ffd45e;
  background: color-mix(in srgb, #ffd45e 14%, var(--surface2));
  box-shadow: 0 0 14px 1px rgba(255,212,94,.45); transition: all .15s; animation: cgAtkGlow 1.6s ease-in-out infinite; }
.cg-iatk-go:hover { background: color-mix(in srgb, #ffd45e 28%, transparent); transform: scale(1.03);
  box-shadow: 0 0 20px 3px rgba(255,212,94,.6); }
.cg-iatk-go:active { transform: scale(.98); }
.cg-iatk-locked { opacity: .5; }
.cg-iatk-play { margin-left: auto; font-family: var(--game); font-weight: 800; font-size: .72rem; color: var(--accent); letter-spacing: .5px; }
@keyframes cgAtkGlow {
  0%,100% { box-shadow: 0 0 12px 1px rgba(255,212,94,.4); }
  50% { box-shadow: 0 0 18px 3px rgba(255,212,94,.65); }
}
/* Texto del efecto del ataque (qué hace), bajo cada ataque. */
.cg-iatk-eff { font-size: .8rem; color: #cfd3e6; line-height: 1.35; margin: 2px 0 8px; padding: 0 4px; opacity: .92; }

/* ── Tooltip de carta (hover en PC): ataques + habilidad en castellano ── */
.tcg-card-tooltip {
  position: fixed; z-index: 9999; pointer-events: none;
  width: 300px; max-width: 92vw; padding: 12px; border-radius: 12px;
  background: rgba(14, 18, 32, .98); border: 1px solid #3a4566;
  box-shadow: 0 12px 32px rgba(0, 0, 0, .6);
  font-family: 'Rajdhani', sans-serif; color: #e6edf3;
}
.tcg-tip-card { width: 260px; max-width: 100%; margin: 0 auto 10px; }
.tcg-tip-card .tcg-card { width: 100% !important; }
.tcg-tip-card svg { width: 100%; height: auto; display: block; border-radius: 10px; }
.tcg-tip-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.tcg-tip-name { font-weight: 800; font-size: 1rem; }
.tcg-tip-name i { color: #f0ce68; font-style: italic; }
.tcg-tip-hp { font-weight: 800; font-size: .9rem; color: #9fb2d6; }
.tcg-tip-type { font-size: .72rem; font-weight: 700; color: #8a96ad; letter-spacing: .5px; text-transform: uppercase; margin-bottom: 6px; }
.tcg-tip-hab { background: rgba(192, 50, 43, .14); border: 1px solid rgba(192, 50, 43, .5);
  border-radius: 7px; padding: 5px 7px; margin: 4px 0 7px; font-size: .82rem; }
.tcg-tip-hab-tag { background: #C0322B; color: #fff; font-size: .6rem; font-weight: 800;
  padding: 1px 5px; border-radius: 4px; letter-spacing: .5px; }
.tcg-tip-hab b { color: #ff9a8a; }
.tcg-tip-hab-txt { color: #c9d3e6; font-size: .76rem; font-weight: 500; margin-top: 3px; line-height: 1.3; }
.tcg-tip-atk { display: flex; align-items: baseline; gap: 8px; padding: 3px 0;
  border-top: 1px solid rgba(255, 255, 255, .07); }
.tcg-tip-cost { color: #f0ce68; font-size: .72rem; letter-spacing: 1px; min-width: 38px; }
.tcg-tip-atk-name { flex: 1; font-weight: 700; font-size: .86rem; }
.tcg-tip-dmg { font-weight: 800; font-size: .92rem; color: #ffd66b; }

/* ── Acciones dentro del inspector de carta (energía / retirar / habilidad) ── */
.cg-inspect-acts { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 6px; }
.cg-inspect-acts .cg-act { flex: 1 1 auto; }
.cg-btn-hab { border-color: #c0322b !important; color: #ff9a8a !important; }
.cg-btn-hab:hover { background: rgba(192,50,43,.16) !important; }
/* Botón de retirada en el inspector con glow azul (acción clicable). */
.cg-btn-retreat:not(.cg-act-disabled) {
  border-color: #4a9bff !important; color: #bcdcff !important;
  box-shadow: 0 0 12px 1px rgba(74,155,255,.4);
}
.cg-btn-retreat:not(.cg-act-disabled):hover { background: rgba(74,155,255,.16) !important; box-shadow: 0 0 18px 2px rgba(74,155,255,.55); }
.cg-act-disabled { opacity: .45; cursor: not-allowed; }
.cg-inspect-hab {
  background: rgba(192,50,43,.12); border: 1px solid rgba(192,50,43,.45);
  border-radius: 8px; padding: 7px 9px; margin: 6px 0; font-size: .82rem; line-height: 1.35;
  color: var(--text);
}
.cg-inspect-hab b { color: #ff9a8a; }

/* ── Indicadores de estado (veneno / dormido) sobre la carta en juego ── */
.cg-status-row { position: absolute; top: 4px; left: 4px; display: flex; gap: 3px; z-index: 4; }
.cg-status { font-size: 15px; line-height: 1; filter: drop-shadow(0 1px 2px rgba(0,0,0,.7)); }
.cg-status-poison { color: #b56fd6; }
.cg-status-sleep { color: #7fc7ff; }

/* ══════════════════════════════════════════════════════════════════
   Placas de puntuación DENTRO del tapete + orbe de energía + transporte
   ══════════════════════════════════════════════════════════════════ */
/* Marcador del rival: arriba-derecha. Jugador: abajo-izquierda. */
.cg-scoreplate {
  position: absolute; z-index: 6; display: flex; align-items: center; gap: 11px;
  padding: 9px 18px; border-radius: 999px;
  background: rgba(10,14,22,.66); backdrop-filter: blur(4px);
  border: 1px solid rgba(255,255,255,.16); box-shadow: 0 5px 18px rgba(0,0,0,.5);
  font-family: var(--game, sans-serif);
}
.cg-scoreplate-ai  { top: 3%; right: 2.5%; }
.cg-scoreplate-you { bottom: 3%; left: 2.5%; }
.cg-kp-label { font-weight: 800; font-size: 1rem; letter-spacing: .6px; color: #cfd8e8; }
.cg-kp-pips { display: inline-flex; gap: 6px; }
.cg-kp-pip { width: 18px; height: 18px; border-radius: 50%; background: rgba(255,255,255,.18);
  border: 1px solid rgba(255,255,255,.3); }
.cg-scoreplate-ai  .cg-kp-pip.on { background: #ff7e6b; border-color: #ffb3a8; box-shadow: 0 0 10px rgba(255,126,107,.85); }
.cg-scoreplate-you .cg-kp-pip.on { background: #ffd45e; border-color: #ffe9a8; box-shadow: 0 0 10px rgba(255,212,94,.85); }
.cg-kp-num { font-weight: 900; font-size: 1.55rem; color: #fff; }
.cg-kp-num small { font-weight: 700; font-size: 1rem; color: #9fb0c8; }

/* Orbe de energía grande: abajo-izquierda, encima de la placa del jugador. */
.cg-energy-zone {
  position: absolute; left: 2%; bottom: 11%; z-index: 6;
  display: flex; flex-direction: column; align-items: flex-start; gap: 5px;
}
.cg-eorb-row { display: flex; gap: 10px; }
.cg-eorb {
  width: 72px; height: 72px; border-radius: 50%; position: relative;
  display: flex; align-items: center; justify-content: center;
  background: radial-gradient(circle at 38% 32%, rgba(255,255,255,.4), var(--ec) 72%);
  border: 2.5px solid rgba(255,255,255,.55); color: var(--ec);
  box-shadow: 0 4px 12px rgba(0,0,0,.5);
  /* En reposo (no se puede poner energía): translúcido y apagado. */
  opacity: .38; filter: grayscale(.35) brightness(.85);
  transition: transform .15s, opacity .25s, filter .25s, box-shadow .25s;
}
.cg-eorb-icon { width: 62%; height: 62%; display: block; }
/* Icono REAL del tipo dentro del orbe (typeIcon devuelve un <img> de 18px;
   lo escalamos para que llene el orbe). */
.cg-eorb-typeic { width: 64%; height: 64%; display: flex; align-items: center; justify-content: center; }
.cg-eorb-typeic img {
  width: 100% !important; height: 100% !important; object-fit: contain;
  border-radius: 50%; filter: drop-shadow(0 1px 2px rgba(0,0,0,.6));
}
/* Activo (SÍ se puede poner): opaco, brillante y con GLOW del color del tipo. */
.cg-eorb-active {
  opacity: 1; cursor: grab; filter: none;
  border-color: rgba(255,255,255,.9);
  animation: cgOrbPulse 1.4s ease-in-out infinite;
}
.cg-eorb-active:hover { transform: scale(1.1); }
.cg-eorb-active:active { cursor: grabbing; }
.cg-eorb-sel { outline: 3px solid #fff; outline-offset: 3px; transform: scale(1.06); }
/* Pulso de glow con el color del TIPO (var --eglow), como la plataforma de lucha. */
@keyframes cgOrbPulse {
  0%,100% { box-shadow: 0 4px 12px rgba(0,0,0,.5), 0 0 0 0 var(--eglow), 0 0 10px 2px var(--eglow); }
  50%     { box-shadow: 0 4px 12px rgba(0,0,0,.5), 0 0 22px 8px var(--eglow), 0 0 14px 4px var(--eglow); }
}
.cg-eorb-label {
  font-family: var(--game, sans-serif); font-weight: 700; font-size: .66rem;
  color: #e6edf3; background: rgba(10,14,22,.6); padding: 2px 8px; border-radius: 8px;
  max-width: 160px;
}

/* Bolita de energía que viaja del orbe a la carta. */
.cg-energy-fly {
  position: fixed; z-index: 95; width: 34px; height: 34px; border-radius: 50%;
  transform: translate(-50%,-50%) scale(1); pointer-events: none;
  background: radial-gradient(circle at 38% 32%, rgba(255,255,255,.6), var(--ec) 70%);
  border: 2px solid rgba(255,255,255,.7);
  box-shadow: 0 0 16px 4px color-mix(in srgb, var(--ec) 70%, transparent);
  transition: left .4s cubic-bezier(.4,.05,.2,1), top .4s cubic-bezier(.4,.05,.2,1), transform .4s ease, opacity .4s ease;
}

/* Resalte de cartas válidas mientras está activo el modo energía. */
.cg-energy-on .cg-eorb-active { /* el pulso ya lo marca */ }

/* Si la imagen de la moneda no carga, mostrar un disco de color (no gris). */
.cg-coin-master { background: radial-gradient(circle at 38% 32%, #d9b8e8, #7a3f9e 72%); }
.cg-coin-gengar { background: radial-gradient(circle at 38% 32%, #c9a06a, #4a3826 72%); }
.cg-coin-face.cg-coin-noimg::after {
  content: ''; position: absolute; inset: 18%; border-radius: 50%;
  border: 3px dashed rgba(255,255,255,.5);
}

/* ── Cartel central de cambio de turno ── */
.cg-turnbanner {
  position: absolute; inset: 0; z-index: 40; display: flex; align-items: center; justify-content: center;
  pointer-events: none; opacity: 1; transition: opacity .4s ease;
}
.cg-turnbanner.cg-tb-out { opacity: 0; }
.cg-tb-text {
  font-family: var(--game, sans-serif); font-weight: 900; font-size: 2.6rem; letter-spacing: 2px;
  padding: 14px 36px; border-radius: 16px; background: rgba(8,11,18,.55); backdrop-filter: blur(3px);
  animation: cgTurnPop .5s cubic-bezier(.2,1.4,.4,1);
}
.cg-tb-you .cg-tb-text { color: #ffe27a; text-shadow: 0 0 22px rgba(255,210,80,.95), 0 0 44px rgba(255,180,0,.6); border: 2px solid rgba(255,210,80,.5); }
.cg-tb-ai  .cg-tb-text { color: #d3a0ff; text-shadow: 0 0 24px rgba(170,90,255,1), 0 0 50px rgba(140,50,220,.75); border: 2px solid rgba(170,90,255,.6); }
@keyframes cgTurnPop { 0% { transform: scale(.7); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }

/* ── Cartel central de ATAQUE del rival (nombre del ataque + daño) ── */
.cg-atkbanner {
  position: absolute; inset: 0; z-index: 60; display: flex;
  flex-direction: column; align-items: center; justify-content: center;
  pointer-events: none; opacity: 1; transition: opacity .35s ease;
}
.cg-atkbanner.cg-atkb-out { opacity: 0; }
/* Caja única: fondo negro + GLOW MORADO alrededor. */
.cg-atkb-box {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  padding: 20px 42px; border-radius: 18px;
  background: rgba(10,6,16,.9);
  border: 2.5px solid rgba(170,90,255,.85);
  box-shadow: 0 0 28px 6px rgba(150,70,240,.7), 0 0 60px 14px rgba(120,50,210,.45),
              inset 0 0 24px rgba(120,50,210,.3);
  animation: cgTurnPop .42s cubic-bezier(.2,1.4,.4,1);
}
.cg-atkb-kicker {
  font-family: var(--game, sans-serif); font-weight: 800; font-size: .92rem;
  letter-spacing: 3px; color: #d3a0ff; text-transform: uppercase;
  text-shadow: 0 0 14px rgba(170,90,255,.9);
}
.cg-atkb-move {
  font-family: var(--game, sans-serif); font-weight: 900; font-size: 2.3rem;
  letter-spacing: 1px; color: #fff;
  text-shadow: 0 0 20px rgba(170,90,255,.95), 0 0 44px rgba(130,50,220,.7);
}
.cg-atkb-dmg {
  font-family: var(--game, sans-serif); font-weight: 800; font-size: 1.45rem;
  color: #ffd24a; text-shadow: 0 0 16px rgba(255,180,40,.85);
}

/* ── Revelado central de carta de objeto/entrenador jugada por la IA ── */
.cg-aitrainer {
  position: absolute; inset: 0; z-index: 45; display: flex; align-items: center; justify-content: center;
  pointer-events: none; background: rgba(6,9,15,.5); backdrop-filter: blur(2px);
  opacity: 1; transition: opacity .4s ease;
}
.cg-aitrainer-out { opacity: 0; }
.cg-aitrainer-card {
  width: min(78vw, 300px); padding: 20px 22px; border-radius: 18px;
  background: linear-gradient(165deg, #1a2030, #0e1320);
  border: 2px solid var(--tk); box-shadow: 0 0 40px color-mix(in srgb, var(--tk) 55%, transparent), 0 14px 40px rgba(0,0,0,.6);
  text-align: center; animation: cgTrainerPop .45s cubic-bezier(.2,1.4,.4,1);
}
.cg-aitrainer-kind { font-family: var(--game, sans-serif); font-weight: 800; font-size: .72rem; letter-spacing: 2px; color: var(--tk); }
.cg-aitrainer-name { font-family: var(--game, sans-serif); font-weight: 900; font-size: 1.7rem; color: #fff; margin: 6px 0 10px; }
.cg-aitrainer-text { font-family: 'Rajdhani', sans-serif; font-size: 1rem; color: #cdd6e6; line-height: 1.35; }
.cg-aitrainer-who { margin-top: 12px; font-family: var(--game, sans-serif); font-weight: 700; font-size: .76rem; color: #8693a8; letter-spacing: .5px; }
@keyframes cgTrainerPop { 0% { transform: scale(.7) rotate(-3deg); opacity: 0; } 100% { transform: scale(1) rotate(0); opacity: 1; } }

/* Botones de fin de partida con icono. */
.cg-over-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.cg-over-btn svg { flex: 0 0 auto; }
.cg-over-btns { display: flex; flex-direction: column; gap: 10px; }

/* Selección de relevo (retirada) dentro del inspector. */
.cg-retreat-bench { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin: 10px 0; }
.cg-retreat-pick { background: none; border: 2px solid transparent; border-radius: 12px; padding: 4px; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 4px; transition: border-color .15s, transform .15s; }
.cg-retreat-pick:hover { border-color: var(--accent, #6cf); transform: translateY(-3px); }
.cg-retreat-pick-card { width: 96px; }
.cg-retreat-pick-card .tcg-card { width: 96px !important; }
.cg-retreat-pick-name { font-size: 12px; font-weight: 700; color: #fff; }

/* Botón "Fin de turno" flotante, en la zona inferior derecha (entre la banca y
   el borde), sin solaparse con tu marcador de vida (abajo izquierda). */
.cg-endfloat {
  position: absolute; bottom: 3%; right: 4%; z-index: 7;
  display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 14px; border-radius: 12px; cursor: pointer;
  font-family: var(--game); font-weight: 800; font-size: .82rem; letter-spacing: .4px;
  color: #07210f; border: 2px solid rgba(255,255,255,.35);
  background: linear-gradient(180deg, #5be08a 0%, #27ae60 60%, #1d8a4b 100%);
  box-shadow: 0 4px 14px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.4);
  transition: transform .12s, box-shadow .12s, filter .12s;
}
.cg-endfloat:hover { filter: brightness(1.08); box-shadow: 0 6px 18px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.4); }
.cg-endfloat:active { transform: translateY(2px); }
.cg-endfloat-ready { animation: cgEndPulse 1.2s ease-in-out infinite; }
@keyframes cgEndPulse {
  0%,100% { box-shadow: 0 4px 14px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.4), 0 0 0 0 rgba(91,224,138,.5); }
  50% { box-shadow: 0 4px 14px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.4), 0 0 0 8px rgba(91,224,138,0); }
}
/* La barra de controles inferior ya no se usa (el botón está en el tablero). */
.cg-controls { display: none; }

/* Animación de EVOLUCIÓN: glow dorado-azul + "golpeo/saltito" al evolucionar. */
.cg-board .cg-card.cg-evolving { animation: cgEvolvePop 1s ease-out; z-index: 20; }
.cg-board .cg-card.cg-evolving::after {
  content: ''; position: absolute; inset: -6px; border-radius: 12px; pointer-events: none;
  border: 3px solid #ffe27a;
  box-shadow: 0 0 22px 6px rgba(255,226,122,.9), 0 0 40px 12px rgba(90,170,255,.6);
  animation: cgEvolveGlow 1s ease-out forwards;
}
@keyframes cgEvolvePop {
  0%   { transform: scale(1); }
  25%  { transform: scale(1.18) translateY(-6px); }
  45%  { transform: scale(.96) translateY(2px); }
  65%  { transform: scale(1.06) translateY(-2px); }
  100% { transform: scale(1) translateY(0); }
}
@keyframes cgEvolveGlow {
  0%   { opacity: 0; border-color: #fff; box-shadow: 0 0 8px 2px rgba(255,255,255,.9); }
  30%  { opacity: 1; border-color: #ffe27a; box-shadow: 0 0 26px 8px rgba(255,226,122,1), 0 0 48px 16px rgba(90,170,255,.7); }
  100% { opacity: 0; box-shadow: 0 0 0 0 rgba(255,226,122,0); }
}

/* Etiqueta pasiva/activa en la habilidad del inspector. */
.cg-hab-tag {
  display: inline-block; font-size: .62rem; font-weight: 800; letter-spacing: .5px;
  text-transform: uppercase; padding: 1px 7px; border-radius: 999px; vertical-align: middle;
  background: rgba(255,255,255,.12); color: #ffd45e; border: 1px solid rgba(255,212,94,.4);
}

/* Animación de CURA al aplicar Poción/Superpoción sobre un Pokémon:
   se ilumina con un glow VERDE pulsante y hace un pequeño "respiro". */
.cg-board .cg-card.cg-heal-pulse { animation: cgHealPop 1s ease-out; z-index: 18; }
.cg-board .cg-card.cg-heal-pulse::after {
  content: ''; position: absolute; inset: -5px; border-radius: 12px; pointer-events: none;
  border: 3px solid #5be08a;
  box-shadow: 0 0 22px 6px rgba(91,224,138,.9), 0 0 44px 14px rgba(91,224,138,.5);
  animation: cgHealGlow 1s ease-out forwards;
}
@keyframes cgHealPop {
  0%   { transform: scale(1); }
  30%  { transform: scale(1.08); }
  60%  { transform: scale(.98); }
  100% { transform: scale(1); }
}
@keyframes cgHealGlow {
  0%   { opacity: 0; box-shadow: 0 0 6px 0 rgba(91,224,138,0); }
  30%  { opacity: 1; box-shadow: 0 0 26px 8px rgba(91,224,138,1), 0 0 48px 18px rgba(91,224,138,.6); }
  100% { opacity: 0; box-shadow: 0 0 0 0 rgba(91,224,138,0); }
}
/* Variante neutra para otras cartas de entrenador con objetivo (no cura). */
.cg-board .cg-card.cg-trainer-pulse::after {
  content: ''; position: absolute; inset: -5px; border-radius: 12px; pointer-events: none;
  border: 3px solid #ffd45e;
  box-shadow: 0 0 22px 6px rgba(255,212,94,.9);
  animation: cgHealGlow 1s ease-out forwards;
}

/* ──────────────────────────────────────────────────────────────
   ANIMACIÓN DE VIAJE DE CARTA HACIA OBJETIVO
   El "ghost" se posiciona donde estaba la carta en la mano y se
   anima encogiéndose hacia el Pokémon objetivo, dejando una estela
   visual antes de que llegue el efecto (glow verde/dorado).
   ────────────────────────────────────────────────────────────── */
.cg-trainer-ghost {
  position: fixed; z-index: 9999; pointer-events: none;
  border-radius: 10px;
  background: #3bb273;
  border: 2px solid rgba(255,255,255,.5);
  box-shadow: 0 6px 20px rgba(0,0,0,.45), 0 0 30px rgba(91,224,138,.6);
  display: flex; align-items: center; justify-content: center;
  transition: transform .45s cubic-bezier(.45,.05,.55,.95), opacity .45s ease-out;
  will-change: transform, opacity;
}
.cg-trainer-ghost .cg-tg-name {
  color: #fff; font-family: 'Press Start 2P', monospace;
  font-size: 10px; text-align: center; padding: 0 6px;
  text-shadow: 1px 1px 0 rgba(0,0,0,.6);
  word-break: break-word; line-height: 1.2;
}

/* ──────────────────────────────────────────────────────────────
   DANZA INFERNAL — overlay con monedas + pool de energías
   ────────────────────────────────────────────────────────────── */
.cg-infernodance {
  position: fixed; inset: 0; z-index: 9000;
  background: rgba(0,0,0,.75);
  display: flex; align-items: center; justify-content: center;
  animation: cgIdFade .25s ease-out;
}
/* FASE DE COLOCACIÓN: el fondo no captura eventos (el tablero es accesible) y
   la caja se ancla abajo, compacta, dejando ver los Pokémon arriba. */
.cg-infernodance.cg-id-placing {
  background: transparent;
  pointer-events: none;          /* el fondo deja pasar clicks al tablero */
  align-items: flex-end;
  padding-bottom: 14px;
}
.cg-infernodance.cg-id-placing .cg-id-box {
  pointer-events: auto;          /* la caja sí recibe eventos */
  padding: 12px 18px;
  max-width: 460px;
  background: linear-gradient(160deg, rgba(42,24,16,.97), rgba(74,40,24,.97));
  box-shadow: 0 8px 30px rgba(0,0,0,.6), 0 0 24px rgba(232,100,60,.4);
}
.cg-infernodance.cg-id-placing .cg-id-title,
.cg-infernodance.cg-id-placing .cg-id-subtitle { display: none; }
.cg-infernodance.cg-id-placing .cg-id-coins { margin: 4px 0 8px; transform: scale(.7); }
.cg-infernodance.cg-id-placing .cg-id-result { margin: 4px 0; font-size: 12px; }
@keyframes cgIdFade { from { opacity: 0; } to { opacity: 1; } }
.cg-id-box {
  background: linear-gradient(160deg, #2a1810, #4a2818);
  border: 3px solid #e8643c;
  border-radius: 16px;
  padding: 24px 28px;
  max-width: 520px; width: 92vw;
  box-shadow: 0 12px 50px rgba(232,100,60,.5);
  font-family: 'Press Start 2P', monospace;
  text-align: center;
}
.cg-id-title {
  color: #ffb84d; font-size: 18px; letter-spacing: 2px;
  text-shadow: 2px 2px 0 #5a1f0f, 0 0 12px rgba(255,184,77,.8);
  margin-bottom: 8px;
}
.cg-id-subtitle { color: #f5d4a0; font-size: 10px; line-height: 1.5; margin-bottom: 16px; }
.cg-id-coins { display: flex; justify-content: center; gap: 18px; margin: 16px 0 20px; }
.cg-id-coin { width: 64px; height: 64px; perspective: 600px; opacity: 0; animation: cgIdCoinIn .25s ease-out forwards; }
@keyframes cgIdCoinIn { to { opacity: 1; } }
.cg-id-coin-scene { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; }
.cg-id-coin-flip {
  width: 100%; height: 100%; position: relative; transform-style: preserve-3d;
  animation: cgIdSpin 1s cubic-bezier(.4,.1,.6,.9) forwards;
}
.cg-id-coin.cg-id-heads .cg-id-coin-flip { animation-name: cgIdSpinHeads; }
.cg-id-coin.cg-id-tails .cg-id-coin-flip { animation-name: cgIdSpinTails; }
@keyframes cgIdSpinHeads {
  0%   { transform: rotateY(0deg); }
  100% { transform: rotateY(1440deg); }   /* 4 vueltas, cae en cara */
}
@keyframes cgIdSpinTails {
  0%   { transform: rotateY(0deg); }
  100% { transform: rotateY(1620deg); }   /* 4.5 vueltas, cae en cruz */
}
.cg-id-coin-face {
  position: absolute; inset: 0; backface-visibility: hidden;
  border-radius: 50%; overflow: hidden;
  box-shadow: inset 0 0 0 3px rgba(255,255,255,.3), 0 4px 14px rgba(0,0,0,.5);
}
.cg-id-coin-master { background: radial-gradient(circle at 30% 30%, #ff8a8a, #c2185b); }
.cg-id-coin-gengar { background: radial-gradient(circle at 30% 30%, #b48be0, #4a1a6e); transform: rotateY(180deg); }
.cg-id-coin-face img { width: 100%; height: 100%; object-fit: cover; }

.cg-id-result {
  color: #ffd45e; font-size: 14px; margin: 12px 0;
  transition: opacity .35s ease-out, transform .35s ease-out;
}
.cg-id-result.cg-id-reveal { animation: cgIdResultPop .5s ease-out; }
@keyframes cgIdResultPop { 0% { transform: scale(.7); } 50% { transform: scale(1.15); } 100% { transform: scale(1); } }

.cg-id-pool-label { color: #f5d4a0; font-size: 9px; margin-bottom: 10px; }
.cg-id-pool-orbs { display: flex; justify-content: center; gap: 12px; }
.cg-id-orb {
  width: 38px; height: 38px; border-radius: 50%;
  cursor: pointer;
  box-shadow: 0 0 14px rgba(255,140,40,.7), inset 0 0 0 2px rgba(255,255,255,.3);
  transition: transform .15s ease, box-shadow .15s ease;
  animation: cgIdOrbPulse 1.4s ease-in-out infinite;
}
.cg-id-orb-fire { background: radial-gradient(circle at 30% 30%, #ffd45e, #e8463c, #a01a0c); }
.cg-id-orb:hover { transform: scale(1.15); }
.cg-id-orb-sel {
  transform: scale(1.25);
  box-shadow: 0 0 26px rgba(255,212,94,1), inset 0 0 0 3px #fff;
}
@keyframes cgIdOrbPulse { 0%,100% { filter: brightness(1); } 50% { filter: brightness(1.25); } }

.cg-id-cta { margin-top: 16px; }

/* Pokémon resaltados como objetivos durante la colocación de energías. */
.cg-board .cg-card.cg-id-target {
  cursor: pointer;
  box-shadow: 0 0 0 4px #ffd45e, 0 0 30px rgba(255,212,94,.9);
  animation: cgIdTargetPulse 1s ease-in-out infinite;
}
@keyframes cgIdTargetPulse { 0%,100% { filter: brightness(1.05); } 50% { filter: brightness(1.25); } }

/* Pokémon brilla en naranja cuando absorbe una energía de fuego de Inferno Dance. */
.cg-board .cg-card.cg-id-energy-absorb {
  animation: cgIdAbsorb .8s ease-out;
}
.cg-board .cg-card.cg-id-energy-absorb::after {
  content: ''; position: absolute; inset: -4px; border-radius: 12px; pointer-events: none;
  border: 3px solid #ff8a3c;
  box-shadow: 0 0 26px 8px rgba(255,138,60,.95), 0 0 50px 18px rgba(232,100,60,.55);
  animation: cgIdAbsorbGlow .8s ease-out forwards;
}
@keyframes cgIdAbsorb {
  0% { transform: scale(1); }
  30% { transform: scale(1.08); }
  100% { transform: scale(1); }
}
@keyframes cgIdAbsorbGlow {
  0% { opacity: 0; }
  30% { opacity: 1; }
  100% { opacity: 0; }
}

/* Pokémon objetivo cuando arrastras un orbe encima (más intenso). */
.cg-board .cg-card.cg-id-targethot {
  box-shadow: 0 0 0 5px #ff8a3c, 0 0 38px rgba(255,138,60,1) !important;
  transform: scale(1.06);
}

/* Orbe siendo arrastrado: se atenúa para feedback visual. */
.cg-id-orb.cg-id-orb-dragging {
  opacity: .4;
}

/* ── Giovanni +N visible en la ficha del Pokémon activo ── */
/* Tag verde junto al daño de cada ataque que se beneficia del bonus. */
.cg-iatk-buff {
  font-family: var(--game); font-weight: 800; font-size: .92rem;
  color: #7CFFB0; background: rgba(40,180,99,.28);
  padding: 1px 7px; border-radius: 7px; margin-left: 4px;
  text-shadow: 0 0 8px rgba(124,255,176,.85);
  box-shadow: 0 0 10px rgba(40,180,99,.5), inset 0 0 0 1px rgba(124,255,176,.5);
  animation: cgBuffPulse 1.3s ease-in-out infinite;
}
/* Banner en la cabecera de la ficha cuando Giovanni está activo. */
.cg-inspect-buff {
  display: flex; align-items: center; gap: 7px;
  margin: 8px 0; padding: 7px 11px; border-radius: 10px;
  font-family: var(--game); font-weight: 700; font-size: .82rem;
  color: #7CFFB0;
  background: linear-gradient(100deg, rgba(40,180,99,.22), rgba(40,180,99,.08));
  border: 1.5px solid rgba(124,255,176,.6);
  box-shadow: 0 0 18px rgba(40,180,99,.4), inset 0 0 12px rgba(40,180,99,.15);
  animation: cgBuffGlow 1.6s ease-in-out infinite;
}
.cg-inspect-buff svg { color: #7CFFB0; filter: drop-shadow(0 0 4px rgba(124,255,176,.8)); flex-shrink: 0; }
.cg-inspect-buff b { color: #b6ffd6; font-size: 1rem; }
@keyframes cgBuffPulse {
  0%,100% { filter: brightness(1); transform: scale(1); }
  50%     { filter: brightness(1.25); transform: scale(1.05); }
}
@keyframes cgBuffGlow {
  0%,100% { box-shadow: 0 0 18px rgba(40,180,99,.4), inset 0 0 12px rgba(40,180,99,.15); }
  50%     { box-shadow: 0 0 28px rgba(40,180,99,.65), inset 0 0 16px rgba(40,180,99,.28); }
}
/* Cuando hay buff, el daño de las filas atacables se tiñe de verde claro. */
.cg-iatk-go .cg-iatk-dmg { color: #fff; }

/* ──────────────────────────────────────────────────────────────
   EFECTO GRANDE EN EL CENTRO DE LA CARTA (daño/cura)
   Número bien visible centrado: rojo+glow rojo si negativo (daño),
   verde+glow verde si positivo (cura).
   ────────────────────────────────────────────────────────────── */
.cg-bigfx {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%) scale(.4);
  font-family: var(--game), 'Press Start 2P', monospace;
  font-weight: 900; font-size: 2.6rem;
  pointer-events: none; z-index: 40;
  opacity: 0;
  animation: cgBigFx 1.1s cubic-bezier(.2,.8,.3,1) forwards;
  white-space: nowrap;
}
.cg-bigfx-neg {
  color: #ff5252;
  text-shadow: 0 0 10px rgba(255,40,40,1), 0 0 22px rgba(255,40,40,.8),
               2px 2px 0 #5a0000, -2px -2px 0 #5a0000, 2px -2px 0 #5a0000, -2px 2px 0 #5a0000;
}
.cg-bigfx-pos {
  color: #5bff9d;
  text-shadow: 0 0 10px rgba(40,255,140,1), 0 0 22px rgba(40,255,140,.8),
               2px 2px 0 #003a18, -2px -2px 0 #003a18, 2px -2px 0 #003a18, -2px 2px 0 #003a18;
}
@keyframes cgBigFx {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(.4); }
  25%  { opacity: 1; transform: translate(-50%, -50%) scale(1.25); }
  45%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  75%  { opacity: 1; transform: translate(-50%, -60%) scale(1); }
  100% { opacity: 0; transform: translate(-50%, -85%) scale(.95); }
}
/* Glow del borde de la carta acorde al signo del efecto. */
.cg-board .cg-card.cg-bigfx-glow-neg {
  animation: cgBigGlowNeg 1.1s ease-out;
}
.cg-board .cg-card.cg-bigfx-glow-pos {
  animation: cgBigGlowPos 1.1s ease-out;
}
@keyframes cgBigGlowNeg {
  0%   { box-shadow: 0 0 0 0 rgba(255,40,40,0); }
  30%  { box-shadow: 0 0 24px 7px rgba(255,40,40,.9), inset 0 0 18px rgba(255,40,40,.5); }
  100% { box-shadow: 0 0 0 0 rgba(255,40,40,0); }
}
@keyframes cgBigGlowPos {
  0%   { box-shadow: 0 0 0 0 rgba(40,255,140,0); }
  30%  { box-shadow: 0 0 24px 7px rgba(40,255,140,.9), inset 0 0 18px rgba(40,255,140,.5); }
  100% { box-shadow: 0 0 0 0 rgba(40,255,140,0); }
}

/* Descuento de retirada (Velocidad X): coste base tachado + "-N" en rojo. */
.cg-retreat-base { text-decoration: line-through; opacity: .55; font-weight: 600; margin-right: 2px; }
.cg-retreat-disc {
  color: #ff5252; font-weight: 900;
  text-shadow: 0 0 6px rgba(255,40,40,.7);
  margin-left: 2px;
}

/* Objetivo de ELIO: Pokémon dañado de la banca rival, resaltado en rojo. */
.cg-board .cg-card.cg-elio-target {
  cursor: pointer;
  box-shadow: 0 0 0 4px #ff5252, 0 0 26px rgba(255,60,60,.85) !important;
  animation: cgElioPulse 1s ease-in-out infinite;
}
@keyframes cgElioPulse {
  0%,100% { filter: brightness(1.05); }
  50%     { filter: brightness(1.3); }
}

/* ── Separador entre modos y constructor en el menú ── */
.cg-menu-sep { height: 1px; background: linear-gradient(90deg, transparent, rgba(255,255,255,.14), transparent); margin: 18px 0 14px; }

/* ── Rejilla de selección de mazo con PORTADAS (sprite + personalidad) ── */
.cg-deckgrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 12px;
  margin: 10px 0 18px;
  width: 100%;
  max-width: 1100px;
  margin-left: auto; margin-right: auto;
  box-sizing: border-box;
  padding: 0 12px;
}
.cg-deckcover {
  position: relative; display: flex; flex-direction: column;
  border: none; cursor: pointer; text-align: left;
  border-radius: 14px; overflow: hidden;
  background: linear-gradient(165deg,
              color-mix(in srgb, var(--dk) 38%, #1a1726),
              color-mix(in srgb, var(--dk) 12%, #14121d));
  box-shadow: 0 4px 16px rgba(0,0,0,.4), inset 0 0 0 1.5px color-mix(in srgb, var(--dk) 55%, transparent);
  transition: transform .16s ease, box-shadow .16s ease;
  min-height: 168px;
  padding: 0;
}
.cg-deckcover:hover {
  transform: translateY(-4px) scale(1.02);
  box-shadow: 0 10px 26px color-mix(in srgb, var(--dk) 40%, rgba(0,0,0,.5)), inset 0 0 0 2px var(--dk);
}
.cg-deckcover:active { transform: translateY(-1px) scale(.99); }
.cg-deckcover-art {
  position: relative; height: 108px;
  display: flex; align-items: center; justify-content: center;
  background:
    radial-gradient(circle at 50% 60%, color-mix(in srgb, var(--dk) 55%, transparent), transparent 70%);
  overflow: hidden;
}
.cg-deckcover-art::after {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(circle at 50% 120%, transparent 40%, rgba(0,0,0,.35));
}
.cg-deckcover-sprite {
  width: 80px; height: 80px; object-fit: contain;
  image-rendering: pixelated;
  filter: drop-shadow(0 4px 8px rgba(0,0,0,.6));
  transform: scale(1.15); transform-origin: center center;
  z-index: 1;
}
.cg-deckcover-info { padding: 8px 10px 4px; flex: 1; }
.cg-deckcover-name {
  display: block; font-family: var(--game), 'Press Start 2P', monospace;
  font-size: .72rem; line-height: 1.25; color: #fff;
  text-shadow: 0 1px 3px rgba(0,0,0,.7);
}
.cg-deckcover-theme { display: block; font-size: .66rem; color: color-mix(in srgb, var(--dk) 40%, #c8c4dd); margin-top: 3px; }
.cg-deckcover-go {
  display: block; padding: 6px 10px 9px;
  font-family: var(--game), monospace; font-size: .64rem; font-weight: 800;
  color: var(--dk); filter: brightness(1.5);
  letter-spacing: .5px;
}
.cg-deckcover-custom .cg-deckcover-name { color: #ffe9a8; }

/* ── FASE DE PREPARACIÓN (setup boca abajo) ── */
/* Reverso de carta */
.cg-card-facedown .cg-cardback {
  position: absolute; inset: 0; border-radius: 10px;
  background:
    repeating-linear-gradient(45deg, #2a3566 0 8px, #243056 8px 16px),
    linear-gradient(160deg, #3a4a8a, #1a2348);
  border: 2px solid #5a6cb0;
  box-shadow: inset 0 0 0 3px rgba(255,255,255,.08), inset 0 0 18px rgba(0,0,0,.5);
  display: flex; align-items: center; justify-content: center;
}
.cg-cardback-logo {
  font-size: 2rem; color: rgba(255,255,255,.35);
  text-shadow: 0 0 12px rgba(120,150,255,.6);
}
.cg-card-facedown { cursor: pointer; }
.cg-setup-mine { outline: 2px solid var(--accent); outline-offset: -1px; border-radius: 10px; cursor: pointer; }
.cg-setup-mine:hover { filter: brightness(1.1); }

/* Banner de preparación */
.cg-setup-banner {
  position: absolute; left: 50%; bottom: 8px; transform: translateX(-50%);
  display: flex; align-items: center; gap: 14px;
  background: linear-gradient(160deg, rgba(20,22,40,.96), rgba(30,34,60,.96));
  border: 2px solid var(--accent);
  border-radius: 14px; padding: 10px 16px; z-index: 20;
  box-shadow: 0 6px 24px rgba(0,0,0,.5);
  max-width: 92%;
}
.cg-setup-txt { font-size: .82rem; color: #e8e5f5; line-height: 1.4; }
.cg-setup-txt b { color: var(--accent); letter-spacing: .5px; }
.cg-setup-count { display: inline-block; margin-left: 8px; color: #9fd3ff; font-weight: 700; }
.cg-setup-ready { white-space: nowrap; }
.cg-setup-waiting { justify-content: center; }
.cg-setup-waiting .cg-setup-txt { color: #ffd45e; animation: cgSetupBlink 1.2s ease-in-out infinite; }
@keyframes cgSetupBlink { 0%,100% { opacity: 1; } 50% { opacity: .5; } }
.cg-setup-badge { background: var(--accent) !important; color: #2a2100 !important; }
.cg-slot-need-soft { outline: 1.5px dashed rgba(255,212,94,.4); outline-offset: -3px; }

/* Toast grande central */
.cg-bigtoast {
  position: fixed; top: 38%; left: 50%; transform: translate(-50%, -50%) scale(.6);
  font-family: var(--game), 'Press Start 2P', monospace; font-weight: 900;
  font-size: 2.4rem; color: #fff; z-index: 9500; pointer-events: none;
  text-shadow: 0 0 18px rgba(120,160,255,1), 0 4px 10px rgba(0,0,0,.7);
  animation: cgBigToast 1.4s ease-out forwards;
}
@keyframes cgBigToast {
  0% { opacity: 0; transform: translate(-50%,-50%) scale(.6); }
  20% { opacity: 1; transform: translate(-50%,-50%) scale(1.1); }
  75% { opacity: 1; transform: translate(-50%,-50%) scale(1); }
  100% { opacity: 0; transform: translate(-50%,-60%) scale(1); }
}

/* ── Hover con listado de cartas en la selección de mazo ── */
.cg-deckcover-wrap { position: relative; }
.cg-deckcover-list {
  position: absolute; left: calc(100% + 10px); top: 0;
  width: 220px; max-height: 380px; overflow-y: auto;
  background: linear-gradient(165deg, rgba(24,22,38,.99), rgba(16,14,26,.99));
  border: 1.5px solid var(--dk, #888); border-radius: 12px;
  padding: 12px 14px; z-index: 60;
  box-shadow: 0 12px 36px rgba(0,0,0,.65);
  opacity: 0; visibility: hidden; pointer-events: none;
  transform: translateX(-6px);
  transition: opacity .16s ease, transform .16s ease, visibility .16s;
}
.cg-deckcover-wrap:hover .cg-deckcover-list {
  opacity: 1; visibility: visible; transform: translateX(0);
}
/* Las 2 últimas columnas abren el panel hacia la IZQUIERDA para no salirse. */
.cg-deckgrid > .cg-deckcover-wrap:nth-child(6n) .cg-deckcover-list,
.cg-deckgrid > .cg-deckcover-wrap:nth-child(6n+5) .cg-deckcover-list {
  left: auto; right: calc(100% + 10px);
  transform: translateX(6px);
}
.cg-deckgrid > .cg-deckcover-wrap:nth-child(6n):hover .cg-deckcover-list,
.cg-deckgrid > .cg-deckcover-wrap:nth-child(6n+5):hover .cg-deckcover-list {
  transform: translateX(0);
}
.cg-deckcover-list::after { display: none; }
.cg-dl-title {
  font-family: var(--game), 'Press Start 2P', monospace; font-size: .72rem;
  color: #fff; margin-bottom: 8px; line-height: 1.3;
  border-bottom: 1px solid rgba(255,255,255,.12); padding-bottom: 6px;
}
.cg-dl-ul { list-style: none; margin: 0; padding: 0; }
.cg-dl-ul li { font-size: .72rem; color: #d8d5ee; padding: 2px 0; display: flex; gap: 6px; }
.cg-dl-n { color: var(--accent); font-weight: 800; min-width: 22px; }
.cg-dl-sub { font-size: .64rem; color: #908da8; text-transform: uppercase; margin: 8px 0 4px; letter-spacing: .5px; }
.cg-dl-item { color: #c8c4dd; }

/* ── Carta jugada EN GRANDE (estilo TCG Live) ── */
.cg-played {
  position: fixed; inset: 0; z-index: 9200;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  pointer-events: none;
  background: radial-gradient(circle at center, rgba(0,0,0,.4), rgba(0,0,0,.65));
  animation: cgPlayedBg .3s ease-out;
}
.cg-played-out { animation: cgPlayedBgOut .5s ease-in forwards; }
@keyframes cgPlayedBg { 0% { opacity: 0; } 100% { opacity: 1; } }
@keyframes cgPlayedBgOut { 0% { opacity: 1; } 100% { opacity: 0; } }
.cg-played-label {
  font-family: var(--game), 'Press Start 2P', monospace; font-weight: 900;
  font-size: 1.1rem; letter-spacing: 1px; margin-bottom: 16px;
  color: #fff; text-shadow: 0 2px 10px rgba(0,0,0,.8);
  animation: cgPlayedLabel .5s cubic-bezier(.2,.8,.3,1);
}
.cg-played-you .cg-played-label { color: #9fe8ff; }
.cg-played-ai .cg-played-label { color: #ff9d9d; }
@keyframes cgPlayedLabel {
  0% { opacity: 0; transform: translateY(-14px); }
  100% { opacity: 1; transform: translateY(0); }
}
.cg-played-card {
  animation: cgPlayedCard .55s cubic-bezier(.2,.9,.3,1.1);
  transform-origin: center;
  filter: drop-shadow(0 14px 40px rgba(0,0,0,.7));
}
.cg-played-out .cg-played-card { animation: cgPlayedCardOut .5s ease-in forwards; }
@keyframes cgPlayedCard {
  0% { opacity: 0; transform: scale(.3) rotateY(50deg); }
  55% { opacity: 1; transform: scale(1.12) rotateY(0); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes cgPlayedCardOut {
  0% { opacity: 1; transform: scale(1); }
  100% { opacity: 0; transform: scale(.85) translateY(-30px); }
}
/* Tamaño de la carta TCG grande en la animación */
.cg-played-tcg { width: 260px; height: 364px; overflow: hidden; border-radius: 16px; position: relative; }
.cg-played-tcg .tcg-card { width: 320px !important; max-width: none !important; transform: scale(.8125); transform-origin: top left; }
.cg-trainer-big { width: 240px; height: 336px; }
@media (max-width: 560px) {
  .cg-played-tcg { width: 200px; height: 280px; }
  .cg-played-tcg .tcg-card { transform: scale(.625); }
  .cg-trainer-big { width: 190px; height: 266px; }
}

/* ── ZOOM de carta en el CONSTRUCTOR (no en Colección) ── */
.cg-deck-zoom {
  position: fixed; z-index: 9300; pointer-events: none;
  opacity: 0; transform: scale(.9); transform-origin: center;
  transition: opacity .14s ease, transform .14s ease;
  filter: drop-shadow(0 18px 50px rgba(0,0,0,.8));
}
.cg-deck-zoom.cg-deck-zoom-on { opacity: 1; transform: scale(1); }
.cg-deck-zoom-card { width: 300px; height: 420px; overflow: hidden; border-radius: 18px; position: relative; }
.cg-deck-zoom-card .tcg-card {
  width: 320px !important; max-width: none !important;
  transform: scale(.9375); transform-origin: top left;
}
@media (max-width: 560px) {
  .cg-deck-zoom-card { width: 240px; height: 336px; }
  .cg-deck-zoom-card .tcg-card { transform: scale(.75); }
}

/* ── Botón "Revisar y energías" (verde) ── */
.cg-btn-review {
  background: linear-gradient(165deg, #2f9e5a, #1f7a43);
  color: #fff; border: 1px solid #3fbf72;
  font-weight: 800;
}
.cg-btn-review:hover { filter: brightness(1.12); }

/* ── Pantalla de revisión ── */
.cg-rev-section {
  max-width: 1100px; margin: 0 auto 22px; padding: 16px;
  background: var(--surface); border: 1px solid var(--border); border-radius: 14px;
}
.cg-rev-h { font-family: var(--game), 'Press Start 2P', monospace; font-weight: 800; font-size: 1rem; color: var(--accent); margin-bottom: 6px; }
.cg-rev-sub { font-size: .82rem; color: #b8b4cf; margin-bottom: 14px; line-height: 1.4; }
.cg-rev-sub b { color: #fff; }
.cg-rev-warn { margin-top: 10px; font-size: .78rem; color: #ffb070; }
.cg-energy-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.cg-energy-pick-btn {
  display: flex; align-items: center; gap: 7px;
  padding: 8px 14px; border-radius: 10px; cursor: pointer;
  background: var(--surface2); border: 2px solid var(--border);
  color: #cfcbe4; font-weight: 700; font-size: .82rem; transition: all .12s ease;
}
.cg-energy-pick-btn:hover { border-color: #777; transform: translateY(-1px); }
.cg-energy-pick-btn.suggested { border-color: rgba(255,200,80,.5); }
.cg-energy-pick-btn.on {
  background: rgba(255,255,255,.1); border-color: var(--accent); color: #fff;
  box-shadow: 0 0 12px rgba(255,200,80,.3);
}
.cg-energy-dot { width: 16px; height: 16px; border-radius: 50%; box-shadow: inset 0 0 0 2px rgba(0,0,0,.25); }
.cg-rev-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(116px, 1fr)); gap: 12px; }
.cg-rev-card {
  position: relative; width: 116px; height: 162px; cursor: pointer;
  border-radius: 11px; transition: transform .14s ease;
}
.cg-rev-card:hover { transform: translateY(-5px) scale(1.04); }
.cg-rev-card .cg-tcg-scaled { width: 116px; height: 162px; }
.cg-rev-card .cg-tcg-scaled .tcg-card { width: 320px !important; max-width: none !important; transform: scale(0.3625); transform-origin: top left; }
.cg-rev-cover .cg-tcg-scaled { outline: 3px solid #5bff9d; outline-offset: -2px; border-radius: 11px; box-shadow: 0 0 18px rgba(90,255,150,.55); }
.cg-rev-cover-tag {
  position: absolute; top: 6px; left: 50%; transform: translateX(-50%);
  background: #2f9e5a; color: #fff; font-family: var(--game); font-weight: 800;
  font-size: .58rem; padding: 3px 8px; border-radius: 8px; z-index: 3; letter-spacing: .5px;
}
/* Colores de los puntos de energía por tipo */
.type-bg-normal{background:#9fa19f}.type-bg-fire{background:#e25822}.type-bg-water{background:#2980ef}
.type-bg-grass{background:#3fa129}.type-bg-electric{background:#f2c000}.type-bg-ice{background:#3fd8d8}
.type-bg-fighting{background:#ff8000}.type-bg-poison{background:#9141cb}.type-bg-ground{background:#915121}
.type-bg-flying{background:#81b9ef}.type-bg-psychic{background:#ef4179}.type-bg-bug{background:#91a119}
.type-bg-rock{background:#afa981}.type-bg-ghost{background:#704170}.type-bg-dragon{background:#5060e1}
.type-bg-dark{background:#50413f}.type-bg-steel{background:#60a1b8}.type-bg-fairy{background:#ef70ef}

/* Botón Guardar al final de la pantalla de revisión */
.cg-rev-save { max-width: 1100px; margin: 0 auto 40px; display: flex; justify-content: center; }
.cg-rev-save-btn { font-size: 1.05rem; padding: 14px 48px; }

/* ── Carta de entrenador con ILUSTRACIÓN propia (art PNG) ── */
.cg-trainer-art { position: relative; overflow: hidden; border-radius: 10px; background: #0a0a12; }
.cg-trainer-artimg {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; display: block; border-radius: 10px;
}
/* El diseño SVG generado queda oculto y solo se muestra si la imagen falla. */
.cg-trainer-artfallback { display: none; position: absolute; inset: 0; }
.cg-trainer-art-fail .cg-trainer-artimg { display: none; }
.cg-trainer-art-fail .cg-trainer-artfallback {
  display: flex; flex-direction: column; align-items: center;
  padding: 10px 8px; box-sizing: border-box;
  background: linear-gradient(165deg, color-mix(in srgb, var(--tk) 32%, #14121d), #14121d);
}

/* ── Carta de objeto con ILUSTRACIÓN propia en el CONSTRUCTOR ── */
.cg-deck-pickitem-art { padding: 0 !important; overflow: hidden; }
.cg-pickitem-art { position: absolute; inset: 0; border-radius: inherit; overflow: hidden; cursor: pointer; }
.cg-pickitem-artimg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.cg-pickitem-artfallback { display: none; position: absolute; inset: 0; flex-direction: column; align-items: center; padding: 8px; box-sizing: border-box; }
.cg-pickitem-art-fail .cg-pickitem-artimg { display: none; }
.cg-pickitem-art-fail .cg-pickitem-artfallback { display: flex; background: linear-gradient(165deg, color-mix(in srgb, var(--tk) 32%, #14121d), #14121d); }

/* Banda con el texto del efecto CORRECTO, superpuesta sobre el texto quemado
   en la imagen (que puede tener erratas de la IA). Tapa solo esa franja baja. */
.cg-trainer-arttext {
  position: absolute; left: 6%; right: 6%; bottom: 6.5%;
  z-index: 3; text-align: center;
  font-size: clamp(7px, 2.3cqw, 11px); line-height: 1.18; font-weight: 600;
  color: #e9e9f2; padding: 4px 6px; border-radius: 6px;
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--tk) 22%, rgba(8,9,14,.94)),
    rgba(8,9,14,.97));
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--tk) 40%, transparent) inset;
  backdrop-filter: blur(2px);
}
.cg-trainer-art { container-type: inline-size; }
/* En la carta grande (animación de jugada) el texto puede ser algo mayor. */
.cg-trainer-big .cg-trainer-arttext { font-size: clamp(9px, 2cqw, 14px); bottom: 6%; }
.cg-trainer-art-fail .cg-trainer-arttext { display: none; }

/* Banda de texto correcto en las cartas con imagen del CONSTRUCTOR. */
.cg-pickitem-art { container-type: inline-size; }
.cg-pickitem-arttext {
  position: absolute; left: 6%; right: 6%; bottom: 6.5%; z-index: 3; text-align: center;
  font-size: clamp(6px, 2.4cqw, 10px); line-height: 1.16; font-weight: 600; color: #e9e9f2;
  padding: 3px 5px; border-radius: 6px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--tk) 22%, rgba(8,9,14,.94)), rgba(8,9,14,.97));
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--tk) 40%, transparent) inset;
}
.cg-pickitem-art-fail .cg-pickitem-arttext { display: none; }

/* Zoom de cartas de OBJETO en el constructor: la imagen llena el panel. */
.cg-deck-zoom-card .cg-trainer-art { width: 300px; height: 420px; border-radius: 18px; overflow: hidden; position: relative; }
.cg-deck-zoom-card .cg-trainer-art .cg-trainer-artimg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 640px) {
  .cg-deck-zoom-card .cg-trainer-art { width: 240px; height: 336px; }
}

/* Carta-dorso que vuela cuando el RIVAL roba (sale de su mazo y se desvanece). */
.cg-ai-draw-ghost {
  position: fixed; width: 56px; height: 80px; border-radius: 7px; z-index: 60;
  background-size: cover; background-position: center; pointer-events: none;
  box-shadow: 0 4px 14px rgba(0,0,0,.55);
  animation: cgAIDraw .7s cubic-bezier(.3,.7,.3,1) both;
}
@keyframes cgAIDraw {
  0% { opacity: 0; transform: translate(0,0) scale(.6) rotate(-6deg); }
  25% { opacity: 1; }
  100% { opacity: 0; transform: translate(-40px, -120px) scale(.85) rotate(4deg); }
}
/* Variante: el dorso vuela desde el mazo del rival HASTA su mano (abanico). */
.cg-ai-draw-ghost.cg-ai-draw-tohand { animation: cgAIDrawToHand .85s cubic-bezier(.3,.6,.25,1) both; }
/* Tarjeta Roja: cartas que vuelan de la mano AL MAZO (rebarajar). */
.cg-ai-draw-ghost.cg-redcard-tohand { animation: cgRedcardToDeck .5s cubic-bezier(.4,.4,.3,1) both; }
@keyframes cgRedcardToDeck {
  0%   { opacity: 0; transform: translate(0,0) scale(.78) rotate(0deg); }
  15%  { opacity: 1; }
  100% { opacity: 0; transform: translate(var(--ddx), var(--ddy)) scale(.6) rotate(-8deg); }
}
/* Carta del rival aún no revelada en su secuencia de turno: ocupa su hueco pero
   no se ve (se revela con animación cuando le toca en la cola de acciones). */
.cg-board .cg-card.cg-ai-prehide { visibility: hidden !important; }
/* ── Energía del rival viajando del contador/mazo a la carta destino ── */
.cg-ai-energy-fly {
  position: fixed; z-index: 70; width: 34px; height: 34px; border-radius: 50%;
  background: radial-gradient(circle at 38% 32%, rgba(255,255,255,.55), var(--ec) 72%);
  border: 2px solid rgba(255,255,255,.85);
  box-shadow: 0 0 16px 4px var(--eglow), 0 0 8px 2px var(--eglow);
  pointer-events: none;
  animation: cgAIEnergyFly .62s cubic-bezier(.35,.2,.2,1) both;
}
@keyframes cgAIEnergyFly {
  0%   { opacity: 0; transform: translate(0,0) scale(.5); }
  18%  { opacity: 1; transform: translate(calc(var(--edx) * .15), calc(var(--edy) * .15)) scale(1.15); }
  100% { opacity: 1; transform: translate(var(--edx), var(--edy)) scale(.85); }
}
/* La carta destino "pulsa" al recibir la energía. */
.cg-board .cg-card.cg-energy-land { animation: cgEnergyLand .45s ease-out; }
@keyframes cgEnergyLand {
  0%   { filter: brightness(1); }
  35%  { filter: brightness(1.5) drop-shadow(0 0 12px rgba(180,220,255,.9)); transform: scale(1.06); }
  100% { filter: brightness(1); }
}
@keyframes cgAIDrawToHand {
  0%   { opacity: 0; transform: translate(0,0) scale(.7) rotate(-8deg); }
  12%  { opacity: 1; }
  88%  { opacity: 1; transform: translate(calc(var(--ddx)*.95), calc(var(--ddy)*.95)) scale(.92) rotate(2deg); }
  100% { opacity: 1; transform: translate(var(--ddx), var(--ddy)) scale(.85) rotate(0deg); }
}

/* ── MANO DEL RIVAL: abanico de dorsos en la zona superior del tapete ── */
/* Franja propia ENCIMA del tapete para la mano del rival (así no tapa su banca
   ni la recorta el overflow:hidden del tablero). */
.cg-aihand-strip {
  position: relative; width: 100%; max-width: 1280px; margin: 0 auto;
  height: 96px; display: flex; align-items: flex-start; justify-content: center;
  overflow: visible; z-index: 5;
}
.cg-aihand {
  position: relative; top: 0; left: 0; transform: none;
  display: flex; justify-content: center; align-items: flex-start;
  z-index: 8; pointer-events: none; height: 96px;
}
.cg-aihand-card {
  width: 0; position: relative;
  transform-origin: top center;
  transform: rotate(var(--a, 0deg)) translateY(var(--lift, 0px));
  z-index: calc(1 + var(--i, 0));
  transition: transform .25s cubic-bezier(.3,.7,.3,1);
}
.cg-aihand-back {
  width: 74px; height: 103px; margin-left: -37px;   /* centrado + solapamiento */
  border-radius: 8px; background-size: cover; background-position: center;
  border: 2px solid rgba(120,150,210,.55);
  box-shadow: 0 5px 14px rgba(0,0,0,.55);
}
/* Dorso recién robado: pequeña animación de "llegada" a la mano. */
.cg-aihand-card.cg-aihand-new { animation: cgAIHandIn .45s cubic-bezier(.2,1.3,.4,1) both; }
@keyframes cgAIHandIn {
  0% { opacity: 0; transform: rotate(var(--a,0deg)) translateY(-40px) scale(.6); }
  100% { opacity: 1; transform: rotate(var(--a,0deg)) translateY(var(--lift,0px)) scale(1); }
}
.cg-aihand-count {
  position: absolute; right: -30px; top: 30px;
  font-family: var(--game, sans-serif); font-weight: 800; font-size: .92rem;
  color: #cdd6f0; background: rgba(10,14,24,.72); border: 1px solid rgba(120,150,210,.45);
  border-radius: 10px; padding: 2px 9px; box-shadow: 0 2px 6px rgba(0,0,0,.5);
}
@media (max-width: 480px) {
  .cg-aihand-back { width: 58px; height: 81px; margin-left: -29px; }
  .cg-aihand { height: 82px; }
  .cg-aihand-count { right: -24px; top: 22px; font-size: .82rem; }
}

/* ════════════════════════════════════════════════════════════════════
   MÓVIL VERTICAL — MANO DE CARTAS JUGABLE (build s111)
   En móvil no hay hover, así que el abanico solapado dejaba las cartas
   amontonadas y cortadas por los lados. Aquí convertimos la mano en una
   TIRA HORIZONTAL DESLIZABLE: cada carta entera, sin rotación ni
   solapamiento negativo, y se arrastra con el dedo. Aprovecha el espacio
   inferior que antes quedaba negro. Solo afecta a pantallas estrechas;
   escritorio y tablet mantienen el abanico con hover.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 560px) {
  /* La mano deja de ser abanico centrado y pasa a tira deslizable. */
  .cg-hand {
    display: flex !important;
    flex-wrap: nowrap !important;
    justify-content: flex-start !important;
    align-items: flex-start !important;
    gap: 10px !important;
    min-height: 0 !important;
    padding: 30px 42vw 18px !important;     /* padding lateral = media pantalla: deja
                                               que la 1ª y última carta lleguen al centro */
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x mandatory !important;
    scrollbar-width: none !important;       /* Firefox: oculta barra */
  }
  .cg-hand::-webkit-scrollbar { display: none !important; }  /* WebKit: oculta barra */

  /* Cada carta: enderezada, sin solapamiento, tamaño cómodo y entera. */
  .cg-card-hand {
    width: 150px !important;
    height: 210px !important;
    flex: 0 0 auto !important;
    margin: 0 !important;
    transform: none !important;            /* anula el ángulo del abanico */
    z-index: auto !important;
    scroll-snap-align: center !important;
    transition: transform .18s ease, filter .18s ease !important;
  }
  /* Con foco activo (estilo TCG Pocket), la carta se escala según su cercanía al
     centro usando las variables que pone el JS. La transición lo hace fluido. */
  .cg-hand.cg-hand-focus .cg-card-hand {
    transform: translateY(var(--cg-focus-lift, 0px)) scale(var(--cg-focus-scale, 1)) !important;
    transform-origin: bottom center !important;
    transition: transform .12s ease-out, filter .18s ease !important;
  }
  .cg-hand.cg-hand-focus .cg-card-hand.cg-hand-centered {
    z-index: 10 !important;
    filter: drop-shadow(0 10px 18px rgba(0,0,0,.6))
            drop-shadow(0 0 8px rgba(90,170,255,.7)) !important;
  }
  .cg-card-hand .cg-tcg-scaled {
    width: 150px !important;
    height: 210px !important;
  }
  .cg-card-hand .cg-tcg-scaled .tcg-card {
    transform: scale(0.469) !important;    /* 150/320 ≈ 0.469 para llenar la carta */
  }

  /* En móvil el "hover" lo dispara el navegador al tocar; lo neutralizamos
     para que NO haga el zoom gigante del abanico (que tapaba la pantalla).
     La carta elegida se marca con un realce discreto vía .cg-selected. */
  .cg-card-hand:hover,
  .cg-card-hand.cg-playable:hover,
  .cg-card-hand.cg-unplayable:hover {
    margin: 0 !important;
    z-index: auto !important;
  }
  .cg-card-hand:hover .cg-tcg-scaled,
  .cg-card-hand.cg-playable:hover .cg-tcg-scaled,
  .cg-card-hand.cg-unplayable:hover .cg-tcg-scaled,
  .cg-card-hand.cg-trainer-art:hover .cg-trainer-artimg,
  .cg-card-hand.cg-trainer-art:hover .cg-trainer-artfallback,
  .cg-card-hand:hover .cg-trainer-inner,
  .cg-card-hand.cg-playable:hover .cg-trainer-inner,
  .cg-card-hand.cg-unplayable:hover .cg-trainer-inner {
    transform: none !important;            /* sin el scale(1.9) del abanico */
    filter: none !important;
  }
  /* Carta seleccionada (al tocarla): se eleva un poco y brilla, para saber
     cuál vas a jugar sin que tape el resto. */
  .cg-card-hand.cg-selected {
    transform: translateY(-10px) !important;
    filter: drop-shadow(0 8px 16px rgba(0,0,0,.6))
            drop-shadow(0 0 8px rgba(90,170,255,.9)) !important;
    z-index: 5 !important;
  }

  /* Etiqueta "TU MANO" con un poco más de presencia y centrada. */
  .cg-hand-label {
    text-align: center;
    margin-top: 14px !important;
    font-size: .82rem !important;
  }
}

/* ════════════════════════════════════════════════════════════════════
   MÓVIL VERTICAL — TABLERO TIPO TCG POCKET (build s113)
   El tablero apaisado (aspect 1672/941) quedaba como una franja fina con
   las cartas diminutas. En móvil lo pasamos a VERTICAL (alto > ancho),
   reparte rival arriba / tú abajo (los SLOTS verticales los pone el JS),
   y agrandamos las cartas para que se vean grandes y jugables como en el
   TCG Pocket oficial. El fondo apaisado se recorta con cover. Solo móvil;
   escritorio mantiene el tablero apaisado original.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 560px) {
  /* Tablero vertical: ocupa el alto disponible, fondo recortado a cover. */
  .cg-board {
    aspect-ratio: 3 / 4 !important;
    max-width: 100% !important;
    margin: 4px auto !important;
    background-size: cover !important;
    background-position: center !important;
  }
  /* Cartas del campo MÁS GRANDES (antes 6.7% del ancho apaisado, minúsculas). */
  .cg-bslot-active { width: 21% !important; }
  .cg-bslot-bench  { width: 17% !important; }
  .cg-bslot-deck   { width: 15% !important; }
  /* El activo destaca un poco más que la banca. */
  .cg-board .cg-bslot-active .cg-card { filter: drop-shadow(0 3px 8px rgba(0,0,0,.5)); }

  /* Los marcadores de RIVAL / TÚ y el orbe de energía, más compactos para que
     no tapen las cartas en el tablero vertical. */
  .cg-scoreplate { transform: scale(.9); }
}

/* ════════════════════════════════════════════════════════════════════
   MÓVIL — FASE DE PREPARACIÓN COMPACTA (build s114)
   El banner de "PREPARACIÓN · Coloca tus Pokémon boca abajo…" tapaba el
   tablero en móvil. Aquí lo reducimos a lo imprescindible: ocultamos el
   texto largo y dejamos solo un botón "Listo" compacto + el contador, sin
   la franja ancha. Sigues colocando tus Pokémon tocándolos en el tablero;
   solo desaparece la cartela que estorbaba. Escritorio intacto.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 560px) {
  .cg-setup-banner {
    bottom: 4px !important;
    gap: 8px !important;
    padding: 6px 12px !important;
    max-width: 96% !important;
    background: linear-gradient(160deg, rgba(20,22,40,.82), rgba(30,34,60,.82)) !important;
  }
  /* Oculta el texto largo de instrucciones; deja solo el contador pequeño. */
  .cg-setup-txt { font-size: 0 !important; }
  .cg-setup-txt b { display: none !important; }
  .cg-setup-count {
    font-size: .8rem !important; margin-left: 0 !important;
    color: #9fd3ff !important;
  }
  .cg-setup-count::before { content: 'Coloca tu activo · '; color: #cbd3e8; font-weight: 400; }
  .cg-setup-ready { font-size: .8rem !important; padding: 6px 14px !important; }
  /* Mensaje de espera: que no parpadee tan grande tapando. */
  .cg-setup-waiting { padding: 6px 14px !important; }
  .cg-setup-waiting .cg-setup-txt { font-size: .8rem !important; }
}
