/* ════════════════════════════════════════════════════════════════════
   CLASH OF PICKS · TOPBAR — HOJA COMPARTIDA
   ────────────────────────────────────────────────────────────────────
   Antes este bloque estaba COPIADO Y PEGADO dentro de 19 páginas. Cada
   arreglo había que hacerlo 19 veces, y por eso se había desincronizado:
   la tipografía del avatar y de las monedas era Anton en 17 páginas e
   Inter en 5. Ahora vive acá y se toca UNA vez.

   TIPOGRAFÍA DE LA TOPBAR: Inter (Franco, 01/08/2026). Cambiar estas
   DOS declaraciones es todo lo que hace falta para que las 19 páginas
   cambien juntas — antes había que editarlas de a una y por eso se
   habían desincronizado. Inter necesita peso explícito porque Anton
   es de un solo grosor: 800 en el avatar, 700 en las monedas, que es
   lo que iguala el aspecto compacto que tenía.

   ⚠ El nombre del archivo lleva versión (?v=N) porque el navegador
   guarda las hojas en caché: sin eso, al desplegar podrías seguir
   viendo la anterior. La versión sube con cada ZIP.
   ════════════════════════════════════════════════════════════════════ */

/* topbar inline (autocontenido) */
/* TOPBAR — igual a arena original (_14) */


/* ════════ TOPBAR ════════ */
.topbar{
  position:fixed;top:0;left:var(--sidebar-w);right:0;
  /* ⚠⚠ LA ALTURA SALE DEL TOKEN, NO DE UN NÚMERO A MANO (04/09/2026).
     Escrita acá en 64 fijo, la barra medía 64 y DOCE páginas
     —batalla-sobres, clash-draft, doble-nada, draft, draft-doble,
     draft-doble-juego, equipo-competitivo, equipos, grupo, grupos,
     spin, survival— declaraban `:root{--topbar-h:58px}` y con ese 58
     calculaban su `padding-top`: el contenido les arrancaba SEIS
     PIXELES POR DEBAJO de la barra, tapado. Nadie sabía por qué esas
     doce se veían mal y el resto bien, porque los dos números estaban
     en archivos distintos y ninguno de los dos estaba equivocado solo.
     ⚠ El respaldo literal es obligatorio: hay páginas que no cargan
     `cop-ui-tokens.css` y sin él la barra se quedaría sin altura. */
  height:var(--topbar-h, 64px);
  background:rgba(15,15,15,.92);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--card-border);
  display:flex;align-items:center;
  /* ⚠ EL AIRE SE FUE ADENTRO: lo pone `.tb-in`, que además limita el
     ancho. Acá quedaría por fuera del tope de 1500 px y la barra
     volvería a pasarse de los bordes del contenido. */
  padding:0;z-index:40;
  /* ⚠ EL COLOR DE TEXTO SE DECLARA, NO SE HEREDA (31/08/2026). Sin esto
     la barra tomaba el `color` del `body` de cada pantalla: en 10 de las
     34 era blanco puro y en el resto `--text` (var(--text, #f4f6fb)). Nadie lo iba a
     ver —los íconos y las píldoras declaran su propio color— pero un
     componente cuyo aspecto depende de dónde lo cuelguen no es un
     componente. Medido con `getComputedStyle`, no leído. */
  color:var(--text);
}
/* ══════════════════════════════════════════════════════════════════
   ⚠⚠ LOS MISMOS LÍMITES QUE EL CONTENIDO      (Franco, 31/08/2026)
   ------------------------------------------------------------------
   *«los límites de la topbar en ubicación tienen que tener los mismos
   márgenes o bordes que tiene el contenido en la página de inicio, no
   puede pasarse de esos límites»*.
   La barra sigue ocupando todo el ancho —su fondo tiene que llegar a los
   dos bordes de la pantalla— pero su CONTENIDO se frena donde se frena
   el de la página: `--cop-ancho` y `--cop-aire`, los mismos dos valores
   que usa `.main` de la portada.
   ⚠ `margin-right:auto` Y NO `margin:0 auto`: el contenido de la portada
   NO está centrado, arranca pegado a la barra lateral y se corta a los
   1500 px. Centrar la barra la habría dejado desalineada del contenido
   justo en las pantallas anchas, que es donde se nota. */
.tb-in{
  width:100%;
  /* ⚠⚠ 25/09/2026 (tanda 9C): el tope es el ANCHO DEL CONTENIDO más su
     aire a cada lado, como `.cop-main--xl` de la portada desde el 04/09.
     Con 1500 a secas el aire quedaba ADENTRO del tope y en pantallas
     anchas la barra terminaba ~29 px antes que el contenido
     (`arnes-lote-ba` 3f). */
  max-width:calc(var(--cop-ancho, 1500px) + var(--cop-aire, 1.8rem) * 2);
  margin-right:auto;
  padding:0 var(--cop-aire, 1.8rem);
  display:flex;align-items:center;gap:1rem;
  box-sizing:border-box;
}

.tb-brand{flex:0 0 auto;display:flex;align-items:center;text-decoration:none}

.tb-brand img{height:20px;width:auto;display:block}

.tb-right{margin-left:auto;display:flex;align-items:center;gap:.7rem;flex:0 0 auto}

.tb-coins{display:flex;align-items:center;gap:var(--gap-sm, .5rem);margin-right:.3rem}

.coin-pill{
  display:inline-flex;align-items:center;gap:.3rem;
  font-weight:700;font-size:var(--fs-md, .88rem);padding:.3rem var(--gap-md, .7rem);border-radius:999px;
  border:1px solid var(--card-border);
}

.coin-pill strong{font-family:'Inter',sans-serif;font-weight:400}

.coin-gold{background:rgba(255,194,51,.12);color:var(--gold);border-color:rgba(255,194,51,.4)}

.coin-diamond{background:rgba(12,149,235,.12);color:#5fc4ff;border-color:rgba(12,149,235,.4)}

.tb-ico{
  position:relative;width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;font-size:var(--fs-lg, 1.15rem);color:var(--text-dim);
  background:transparent;border:none;cursor:pointer;transition:background .2s,color .2s;
}

.tb-ico:hover{background:rgba(255,255,255,.07);color:#fff}

.tb-badge{
  position:absolute;top:2px;right:0;
  background:var(--red, #ff3b5c);color:#fff;font-size:.62rem;font-weight:700;
  min-width:16px;height:16px;border-radius:999px;
  display:grid;place-items:center;padding:0 4px;
}

.tb-user{
  display:flex;align-items:center;
  padding:.25rem;border-radius:var(--r-card, 14px);text-decoration:none;cursor:pointer;
  background:transparent;transition:background .2s;
}

.tb-user:hover{background:rgba(255,255,255,.07)}

.tb-avatar{
  width:34px;height:34px;border-radius:var(--r-card, 14px);
  background:radial-gradient(ellipse at center,#0a0d14,#000);
  border:none;
  box-shadow:none;
  display:grid;place-items:center;
  font-size:var(--fs-base, 1rem);color:#fff;
}
@media(max-width:760px){
  /* ⚠ EL AIRE VA EN `.tb-in`, NO EN LA BARRA (31/08/2026): declarado
     acá quedaba FUERA del tope de ancho, así que el contenido de la
     barra arrancaba 0,8rem más adentro que el de la página y las dos
     columnas no coincidían. En el teléfono no hay barra lateral, así
     que `left` sí se corrige acá. */
  .topbar{left:0}
  .tb-in{padding:0 var(--cop-aire-movil, 1rem);gap:var(--gap-md, .7rem)}

  .tb-brand img{height:22px}

    .tb-right{gap:.5rem}

  .tb-coins{gap:.3rem}

  .coin-pill{font-size:var(--fs-xs, .72rem);padding:.25rem .5rem;gap:.25rem}

  .tb-ico{width:34px;height:34px;font-size:var(--fs-base, 1rem)}

  .tb-avatar{width:32px;height:32px;border-radius:var(--r-card, 14px);font-size:var(--fs-sm, .8rem)}}


/* ===== TOPBAR UNIFICADA (override) ===== */
/* ⚠⚠⚠ LA BARRA DEJA PASAR EL FONDO  (Franco, 22/09/2026): *«las barras
   también quiero que vayan incluidas, ya que eso le da profundidad y
   uniformidad al diseño como algo completo»*.
   Acá decía `background:var(--s0) !important` y `backdrop-filter:none
   !important` — o sea, gris PLANO y opaco. Ésa fue la razón por la que
   el fondo de app del 16/09 se rechazó al día siguiente: el arte
   quedaba en la franja del medio con dos barras planas arriba y abajo
   diciendo otra cosa. No era un fondo de la app, era un fondo del
   contenido.

   ⚠⚠ TRANSLÚCIDA **CON DESENFOQUE**, NUNCA TRANSPARENTE. Las dos cosas
   van juntas y son una sola decisión: el `.72` deja ver el degradado y
   el `blur` separa el texto de lo que pasa por detrás. Sin la capa de
   color el texto de la topbar queda directamente sobre el degradado y
   se lee PEOR que con el gris plano que Franco ya rechazó — o sea que
   «dejar pasar el fondo» llevado al extremo reintroduce el problema por
   el otro lado. El arnés exige el alpha en su rango Y el desenfoque.

   ⚠ EL `-webkit-` VA: sin él, Safari de iOS no desenfoca y la barra
   queda semitransparente a secas, que es justo el caso ilegible.
   ⚠ EL `!important` SE QUEDA: el `<style>` de cada página carga después
   de esta hoja y con la misma especificidad gana el de la página. Es la
   misma razón por la que estaba antes. */
.topbar{
  background:rgba(var(--barra-rgb, 11,14,20), .72) !important;
  border-bottom:none !important;
  backdrop-filter:blur(16px) saturate(140%) !important;
  -webkit-backdrop-filter:blur(16px) saturate(140%) !important;
}

.tb-right{margin-left:auto;display:flex;align-items:center;gap:.7rem;flex:0 0 auto}

.tb-ico{position:relative;width:40px;height:40px;border-radius:50%;background:transparent;display:grid;place-items:center;color:#fff;transition:background .2s}

.tb-ico svg,.tb-ico img{width:24px;height:24px}
/* los íconos 3D (01/09/2026): la imagen entra en la misma caja que el trazo */
.tb-ico img,.tb-user.tb-user-min img,.fm-title img{object-fit:contain;display:block}

.tb-ico:hover{background:rgba(255,255,255,.07)}

.tb-badge{position:absolute;top:-2px;right:-2px;background:var(--red, #ff3b5c);color:#fff;font-size:var(--fs-xs, .72rem);font-weight:700;min-width:18px;height:18px;border-radius:999px;display:grid;place-items:center;padding:0 4px;border:2px solid #000}

.tb-badge.green{background:var(--ok, #22c55e)}
/* ⚠⚠ `[hidden]` PIERDE CONTRA EL `display:grid` DE ARRIBA y por eso esta
   línea existe (21/09/2026). Es la trampa de siempre: el `display:none`
   que el navegador le da a `[hidden]` sale de la hoja de usuario, y
   cualquier `display` declarado en la hoja de la app le gana. Sin esto,
   el globito nuevo de la campana se ve SIEMPRE —vacío, un puntito rojo
   de 16px— aunque no haya nada que avisar, que es peor que no tenerlo.
   ⚠ VA DESPUÉS de la regla que declara el `display`: misma
   especificidad, gana la última. */
.tb-badge[hidden]{display:none}

.tb-user{display:flex;align-items:center;background:transparent;padding:.2rem;border-radius:var(--r-card, 14px);cursor:pointer;text-decoration:none;transition:background .2s}

.tb-user:hover{background:rgba(255,255,255,.07)}

.tb-avatar{width:40px;height:40px;border-radius:var(--r-card, 14px);overflow:hidden;display:grid;place-items:center;font-family:'Inter',sans-serif;font-weight:800;font-size:var(--fs-base, 1rem);color:#000}

.tb-avatar img{width:100%;height:100%;object-fit:cover}

.tb-coins{display:flex;align-items:center;gap:.7rem;margin-right:.3rem}

.coin-pill{display:inline-flex;align-items:center;gap:var(--gap-sm, .5rem);font-weight:800;font-size:var(--fs-lg, 1.15rem);color:#fff;padding:0;border:none;background:transparent}

.coin-pill strong{font-family:'Inter',sans-serif;font-weight:700}

.cp-coin{display:grid;place-items:center;flex:0 0 auto;width:26px;height:26px;font-family:'Inter',sans-serif;font-weight:700;font-size:.62rem;color:#000}

.cp-coin.gold{border-radius:50%;background:linear-gradient(135deg,#ffd86b,#e0991b);box-shadow:none}

.cp-coin.gem{background:linear-gradient(135deg,#5fc4ff,#2068ff);color:#fff;border-radius:7px;box-shadow:none}
@media(max-width:760px){
  .tb-right{gap:var(--gap-sm, .5rem)}

  .tb-coins{gap:.5rem;margin-right:.15rem}

  .coin-pill{font-size:var(--fs-base, 1rem);gap:.3rem}

  .cp-coin{width:22px;height:22px;font-size:.55rem}

  .tb-ico{width:36px;height:36px}

  .tb-ico svg,.tb-ico img{width:22px;height:22px}

  .tb-avatar{width:36px;height:36px;border-radius:var(--r-card, 14px);font-size:var(--fs-sm, .8rem)}

  .tb-badge{min-width:16px;height:16px;font-size:.62rem}}


/* ===== TOPBAR MOBILE (override compacto + solo ícono de logo) ===== */
.tb-brand .logo-icon{display:none}
@media(max-width:760px){
  /* ⚠ el 58 del teléfono ahora vive en el token (04/09/2026):
     la barra lo lee igual que el resto de la app */
  .topbar{left:0;height:var(--topbar-h, 58px)}
  .tb-in{padding:0 var(--cop-aire-movil, 1rem);gap:var(--gap-sm, .5rem)}

  .tb-brand .logo-full{display:none}

  .tb-brand .logo-icon{display:block;height:28px;width:auto}

  .tb-right{gap:.3rem;margin-left:auto}

  .tb-coins{gap:var(--gap-xs, .3rem);margin-right:.1rem}

  .coin-pill{font-size:var(--fs-md, .88rem);gap:.25rem}

  .cp-coin{width:18px;height:18px;font-size:.46rem}

  .tb-ico{width:32px;height:32px}

  .tb-ico svg,.tb-ico img{width:20px;height:20px}

  .tb-user{padding:.1rem}

  .tb-avatar{width:32px;height:32px;border-radius:var(--r-card, 14px);font-size:var(--fs-xs, .72rem)}

  .tb-badge{min-width:15px;height:15px;font-size:.58rem;border-width:1.5px}}
@media(max-width:380px){
  .tb-in{padding:0 var(--cop-aire-movil, 1rem);gap:.3rem}

  .tb-brand .logo-icon{height:24px}

  .tb-right{gap:.2rem}

  .tb-coins{gap:.25rem}

  .coin-pill{font-size:var(--fs-sm, .8rem)}

  .cp-coin{width:16px;height:16px;font-size:.42rem}

  .tb-ico{width:29px;height:29px}

  .tb-ico svg,.tb-ico img{width:18px;height:18px}

  .tb-avatar{width:29px;height:29px}}


/* ===== MENU LOGO + NOTIFICACIONES (override) ===== */
.tb-brand-wrap{position:relative;flex:0 0 auto}

.brand-chev{display:inline-flex;align-items:center;color:var(--text-dim);margin-left:var(--gap-sm, .5rem);transition:transform .2s}

.brand-chev svg{width:16px;height:16px}

.tb-brand-wrap.open .brand-chev{transform:rotate(180deg)}

.tb-brand{display:flex;align-items:center;cursor:pointer}

.brand-menu{position:absolute;top:calc(100% + .6rem);left:0;z-index:60;min-width:190px;background:#000;border:1px solid var(--card-border);border-radius:14px;padding:var(--gap-sm, .5rem);display:none;flex-direction:column;gap:.15rem;box-shadow:0 16px 44px rgba(0,0,0,.6), 0 0 0 1px rgba(12,149,235,.12)}

.brand-menu.open{display:flex}

.bm-item{display:flex;align-items:center;gap:.7rem;padding:.7rem var(--gap-md, .7rem);border-radius:var(--r-card, 14px);color:var(--text);text-decoration:none;font-weight:600;font-size:var(--fs-base, 1rem);transition:background .2s}

.bm-item:hover{background:rgba(255,255,255,.06)}

.bm-item .bm-ico{font-size:var(--fs-lg, 1.15rem)}

.notif-wrap{position:relative}

.notif-menu{position:absolute;top:calc(100% + .7rem);right:0;z-index:60;width:340px;max-width:calc(100vw - 1.4rem);background:var(--card);border:1px solid var(--card-border);border-radius:var(--r-card, 14px);display:none;flex-direction:column;overflow:hidden;box-shadow:0 16px 44px rgba(0,0,0,.6)}

.notif-menu.open{display:flex}

.nm-head{display:flex;align-items:center;justify-content:space-between;padding:var(--gap-lg, 1rem) 1rem;border-bottom:1px solid var(--card-border)}

.nm-title{font-weight:800;font-size:var(--fs-base, 1rem);color:#fff}

.nm-readall{font-size:var(--fs-sm, .8rem);font-weight:600;color:var(--primary);background:none;cursor:pointer;border:none}

.nm-readall:hover{text-decoration:underline}

.nm-list{max-height:380px;overflow-y:auto}

.nm-item{display:flex;align-items:center;gap:.7rem;padding:var(--gap-md, .7rem) 1rem;border-bottom:1px solid rgba(255,255,255,.04);transition:background .2s;cursor:pointer}

.nm-item:hover{background:rgba(255,255,255,.04)}

.nm-item:last-child{border-bottom:none}

.nm-ico{flex:0 0 auto;width:32px;height:32px;border-radius:var(--r-card, 14px);display:grid;place-items:center;font-size:var(--fs-base, 1rem);background:rgba(12,149,235,.14)}

.nm-ico.win{background:rgba(34,197,94,.16)}

.nm-ico.coin{background:rgba(255,194,51,.16)}

.nm-ico.rival{background:rgba(157,43,255,.16)}

.nm-body{flex:1;min-width:0}

.nm-text{font-size:var(--fs-md, .88rem);color:var(--text);line-height:1.3;font-weight:500}

.nm-text strong{color:#fff;font-weight:700}

.nm-time{font-size:var(--fs-xs, .72rem);color:var(--text-faint);margin-top:.1rem}

.nm-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--primary)}

.nm-item.read .nm-dot{background:transparent}

.nm-empty{padding:2.5rem 1rem;text-align:center;color:var(--text-faint);font-size:var(--fs-md, .88rem)}
@media(max-width:760px){.notif-menu{position:fixed;top:var(--topbar-h, 58px);right:.5rem;left:.5rem;width:auto;max-width:none}}


/* ===== PANEL DE AMIGOS (inyectado) + notif negro ===== */
.notif-menu{background:#000 !important;box-shadow:0 16px 44px rgba(0,0,0,.7), 0 0 0 1px rgba(12,149,235,.12) !important}

.friends-wrap{position:relative}

.friends-menu{position:absolute;top:calc(100% + .7rem);right:0;z-index:60;width:380px;max-width:calc(100vw - 1.4rem);background:#000;border:1px solid var(--card-border);border-radius:var(--r-card, 14px);display:none;flex-direction:column;overflow:hidden;box-shadow:0 16px 44px rgba(0,0,0,.7), 0 0 0 1px rgba(12,149,235,.12)}

.friends-menu.open{display:flex}

.fm-head{display:flex;align-items:center;justify-content:space-between;padding:1rem var(--gap-xl, 1.2rem) var(--gap-md, .7rem)}

.fm-title{display:flex;align-items:center;gap:.5rem;font-weight:800;font-size:var(--fs-base, 1rem);color:#fff}

.fm-title svg,.fm-title img{width:20px;height:20px;color:var(--primary)}

.fm-count{color:var(--text-dim);font-weight:600;font-size:var(--fs-md, .88rem)}

.fm-tabs{display:flex;gap:var(--gap-md, .7rem);padding:0 var(--gap-xl, 1.2rem) 1rem}

.fm-tab{flex:1;padding:.7rem;border-radius:var(--r-card, 14px);font-weight:700;font-size:var(--fs-base, 1rem);background:#0a0d14;border:1px solid var(--card-border);color:var(--text-dim);transition:background .2s,color .2s,border-color .2s,box-shadow .2s}

.fm-tab:hover{color:#fff}

.fm-tab.active{background:rgba(12,149,235,.16);border-color:var(--primary);color:#fff;box-shadow:none}

.fm-list{max-height:420px;overflow-y:auto;padding:0 var(--gap-lg, 1rem) 1rem;display:flex;flex-direction:column;gap:.7rem}

.fm-list::-webkit-scrollbar{display:none}

.fm-item{display:flex;align-items:center;gap:.7rem;padding:var(--gap-lg, 1rem) var(--gap-lg, 1rem);border-radius:14px;background:#000;border:1px solid var(--card-border);transition:border-color .2s;cursor:pointer}

.fm-item:hover{border-color:rgba(12,149,235,.4)}

.fm-card{flex:0 0 auto;width:50px;height:66px;border-radius:var(--r-card, 14px);overflow:hidden;background:radial-gradient(ellipse at center,#0a0d14,#000);display:grid;place-items:center;font-size:var(--fs-2xl, 1.5rem);border:2px solid var(--fm-c,var(--primary));box-shadow:none}

.fm-card img{width:100%;height:100%;object-fit:cover}

.fm-online-wrap{flex:0 0 auto;display:flex;align-items:center}

.fm-online{width:9px;height:9px;border-radius:50%;background:var(--green,#22c55e);box-shadow:none}

.fm-online.off{background:var(--text-faint);box-shadow:none}

.fm-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--gap-xs, .3rem)}

.fm-row{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-md, .7rem)}

.fm-left{display:inline-flex;align-items:center;gap:.5rem;min-width:0}

.fm-flag{width:24px;height:16px;border-radius:3px;object-fit:cover;border:1px solid rgba(255,255,255,.2);flex:0 0 auto}

.fm-name{font-weight:800;font-size:var(--fs-base, 1rem);color:#fff;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.fm-rango{font-size:var(--fs-base, 1rem);line-height:1;flex:0 0 auto;text-align:right;min-width:54px}

.fm-comp{font-size:var(--fs-base, 1rem);color:var(--text-dim);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.fm-trofeos{font-size:var(--fs-base, 1rem);line-height:1;color:var(--gold,#ffc233);font-weight:700;flex:0 0 auto;text-align:right;min-width:54px;white-space:nowrap}

.fm-empty{padding:2.5rem 1rem;text-align:center;color:var(--text-faint);font-size:var(--fs-md, .88rem)}
@media(max-width:760px){.friends-menu{position:fixed;top:var(--topbar-h, 58px);right:.5rem;left:.5rem;width:auto;max-width:none}}
/* ══════════════════════════════════════════════════════════════════
   EL PERFIL SALE DE LA BARRA (Franco, 04/08/2026)
   ------------------------------------------------------------------
   El avatar del usuario ya no va arriba a la derecha: el perfil está
   mucho mejor presentado —grande y protagonista— en el menú lateral,
   al que se llega con la flecha del logo.

   ⚠ SE OCULTA, NO SE BORRA, Y ES A PROPÓSITO.
   `app.html`, `lineup.html` y `modos-competitivos.html` tienen
   JavaScript propio que le habla a `#userAvatar` para pintar la foto
   o la inicial. Si borrara el elemento hoy, esas tres páginas
   tendrían un `null` y el script se cortaría ahí — llevándose puesto
   todo lo que viniera después en ese bloque, en silencio.

   El marcado se borra de verdad en la pasada de unificación de la
   barra, junto con las líneas de script que lo usan. Esto es el paso
   visible; aquel es el paso estructural.
   ══════════════════════════════════════════════════════════════════ */
/* ⚠ F9-UI (20/08/2026): el nuevo ícono minimalista .tb-user-min ES el
   acceso al perfil pedido por Franco — se excluye del apagón viejo. El
   avatar-pelotita (.tb-avatar) sigue apagado. */
.tb-user:not(.tb-user-min), .tb-avatar{ display:none !important; }

/* ════ XP EN LA BARRA + USUARIO MINIMALISTA (F9-UI, 20/08/2026) ════
   La píldora de XP es una .coin-pill más (misma piel que monedas y
   gemas); el nivel va a su derecha como chip fino. El acceso al perfil
   dejó el avatar-pelotita y es un trazo de usuario como el de amigos y
   notificaciones — siempre al extremo derecho de la barra. */
/* el ícono de XP es un .cop-ico normal: hereda el tamaño de las
   píldoras de moneda y gema (tanda UI-2) */
/* ⚠⚠ LA PÍLDORA DE XP ES UN ENLACE DESDE EL 08/09/2026 (Franco: *«la
   página de camino de XP se tiene que abrir al tocar el monto de XP de
   la topbar o el nivel del mismo»*). Pasó de `<span>` a `<a href>` en
   `cop-ui-topbar.js`, y un `<a>` sin estas tres líneas se lleva el azul
   y el subrayado del navegador: la píldora quedaría con otra piel que
   las de monedas y gemas, que es lo único que no puede pasar — son la
   misma pieza.
   ⚠ VAN ACÁ Y NO EN LA REGLA GENERAL DE `.coin-pill`: monedas y gemas
   siguen siendo `<span>` y no necesitan reseteo; escribirlo arriba sería
   estilar un caso que no existe. */
.coin-pill.coin-xp{
  text-decoration:none;color:inherit;cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:border-color .15s, background .15s;
}
/* ⚠ HOVER SÓLO CON PUNTERO DE VERDAD: en el teléfono el navegador simula
   el hover al apoyar el dedo y deja pintado lo que tocaste — se lee como
   «el diseño cambió después de usarlo». */
@media (hover:hover) and (pointer:fine){
  .coin-pill.coin-xp:hover{
    border-color:rgba(var(--cop-acento-rgb, 12,149,235), .55);
    background:rgba(var(--cop-acento-rgb, 12,149,235), .10);
  }
}
/* ⚠ EL FOCO DE TECLADO NO SE SACA: es un enlace de navegación y sin él,
   quien va con teclado o lector de pantalla no sabe dónde está parado. */
.coin-pill.coin-xp:focus-visible{
  outline:2px solid rgb(var(--cop-acento-rgb, 12,149,235));
  outline-offset:2px;
}
.coin-pill.coin-xp .xp-nv{
  margin-left:var(--gap-sm, .5rem);padding:.1rem var(--gap-sm, .5rem);border-radius:999px;
  background:rgba(255,255,255,.08);
  font-family:'Inter',sans-serif;font-size:var(--fs-xs, .72rem);font-weight:800;
  color:var(--text-dim,#8b93a7);white-space:nowrap;
}
.tb-user.tb-user-min{
  /* ⚠ order:99 y no "ser el último del DOM": cop-sesion inyecta su
     botón DESPUÉS y ganaba la esquina. Con flex-order el usuario queda
     al extremo derecho siempre, inyecte quien inyecte. */
  order:99;
  display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:50%;padding:0;
  color:var(--text-dim,#cfd6ee);background:transparent;
  transition:background .2s,color .2s;
}
.tb-user.tb-user-min:hover{background:rgba(255,255,255,.07);color:#fff}
.tb-user.tb-user-min svg,.tb-user.tb-user-min img{width:21px;height:21px;display:block}
@media(max-width:760px){
  .tb-user.tb-user-min{width:34px;height:34px}
  .tb-user.tb-user-min svg,.tb-user.tb-user-min img{width:19px;height:19px}
  /* en pantallas chicas la barra ya está cargada: el número de XP se
     achica igual que el resto de las píldoras, el chip de nivel queda */
  .coin-pill.coin-xp .xp-nv{font-size:.62rem}
}
