/* meteoro-ui.css — Sistema de diseño compartido (Fase 0).
   Tokens + componentes pulidos tipo app. Identidad cian/verde + gotero naranja de marca.
   Se carga DESPUÉS del CSS propio de cada pantalla, así que sus tokens mandan. */
:root {
  --m-cyan: #38d6ff;      /* dato / acento frío */
  --m-green: #3ee6a0;     /* positivo / éxito */
  --m-red: #ff5d5d;       /* negativo */
  --m-amber: #ffb547;     /* atención */
  --m-brand: #ff7a1a;     /* gotero — marca */
  --m-bg: #0a0f1a;        /* fondo app */
  --m-card: #111a2b;      /* tarjeta */
  --m-line: #20304b;      /* borde */
  --m-ink: #eaf2fb;       /* texto */
  --m-mut: #6c7f99;       /* texto tenue */
  --m-r-card: 15px;       /* radio tarjeta */
  --m-r-pill: 999px;
  --m-nav-h: 64px;        /* alto del bottom nav (sin safe-area) */
}

/* ── Bottom nav (5): fijo abajo, gotero de marca al centro ── */
.mbn {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 120;
  display: flex; align-items: flex-end; justify-content: space-around;
  gap: 2px; padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
  background: #080c14; border-top: 1px solid var(--m-line);
  /* SIN backdrop-filter: en iOS Safari, backdrop-filter + position:fixed sobre el MISMO
     elemento rompe el anclaje y la barra flota a media pantalla al hacer scroll. El fondo
     va sólido (ya era 94% opaco, no se pierde casi nada visual). */
}
.mbn-i {
  flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px;
  color: var(--m-mut); text-decoration: none; font: 600 11px "Inter", system-ui, sans-serif;
  padding: 2px 0; position: relative; -webkit-tap-highlight-color: transparent; transition: color .15s;
}
.mbn-i svg { width: 23px; height: 23px; display: block; }
.mbn-i .mbn-pic { display: block; line-height: 0; }
.mbn-i .mbn-av { width: 24px; height: 24px; border-radius: 50%; object-fit: cover; display: block;
  border: 1.5px solid var(--m-cyan); }
/* blindaje: meteor.css inyecta íconos a "nav a"; aquí no usamos <nav>, pero por si acaso */
.mbn a::before, .mbn a::after { content: none !important; -webkit-mask: none !important; mask: none !important; margin: 0 !important; }
.mbn a { display: flex !important; }
.mbn-i.on { color: var(--m-cyan); }
.mbn-i:active { opacity: .7; }
/* botón central: gotero de marca, elevado */
.mbn-c { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px;
  text-decoration: none; font: 700 11px "Inter", system-ui, sans-serif; color: var(--m-green); }
.mbn-c .mbn-drop {
  width: 48px; height: 48px; border-radius: 14px; margin-top: -10px; overflow: hidden;
  background: #070b12; border: 1.5px solid var(--m-green);
  box-shadow: 0 6px 18px rgba(62, 230, 160, .35);
  /* nav dinámico: cuando el centro es una sección (no el logo), su ícono va centrado y en verde */
  display: flex; align-items: center; justify-content: center; position: relative;
  color: var(--m-green);
}
.mbn-c .mbn-drop > svg, .mbn-c .mbn-drop > span > svg { width: 26px; height: 26px; display: block; }
.mbn-c .mbn-mark { width: 100%; height: 100%; object-fit: cover; display: block; }
.mbn-c .mbn-dot-c { position: absolute; top: 4px; right: 4px;
  width: 8px; height: 8px; border-radius: 50%; background: var(--m-green);
  border: 1.5px solid #070b12; }
.mbn-i .mbn-dot { position: absolute; top: 0; left: calc(50% + 7px);
  width: 7px; height: 7px; border-radius: 50%; background: var(--m-green); border: 1.5px solid var(--m-bg); }

/* el contenido no queda tapado por el nav fijo */
body.has-mbn { padding-bottom: calc(var(--m-nav-h) + env(safe-area-inset-bottom)) !important; }
/* iOS/WebKit — LA CAUSA REAL del bottom-nav flotando a media pantalla:
   si el <body> lleva overflow en CUALQUIER eje (aunque el otro sea 'visible'),
   WebKit lo promueve a 'auto' y el body se vuelve contenedor de scroll. Ahí un
   position:fixed hijo del body se ancla al BODY (no al viewport) y flota en medio.
   Chrome/Blink NO hace esa promoción, por eso ahí se veía bien y engañaba.
   Arreglo: el <body> queda con overflow VISIBLE en ambos ejes (estado en el que
   iOS ancla el fixed al viewport). El recorte horizontal lo hace <html>, que es el
   scroller real del viewport y no afecta el anclaje de los elementos fijos. */
/* overflow-x: CLIP (no 'hidden'): clip corta el scroll horizontal SIN volver a <html>
   un contenedor de scroll — y por eso NO rompe el position:fixed en iOS Safari (que era
   la causa de que el ☰/barra se movieran). hidden sí lo rompía. */
html { height: auto; overflow-x: clip; }
body.has-mbn { min-height: 100vh; }

/* ── Barra superior de móvil: logo METEORO IA + ☰ (consistente en todas las secciones).
      Reemplaza los ☰ sueltos por página y el flotante. Solo móvil/tablet; en escritorio
      manda el rail lateral. ── */
.m-topbar { display: none; }
@media (max-width: 1023px) {
  .m-topbar {
    display: flex; align-items: center; gap: 11px;
    /* !important: gana a la regla global 'header:not(#hud){position:relative}' (que
       tiene un id en el :not y por eso más especificidad). Sin esto no queda fija. */
    position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; z-index: 95 !important;
    height: calc(50px + env(safe-area-inset-top));
    padding: env(safe-area-inset-top) 13px 0;
    background: #070b12; border-bottom: 1px solid var(--m-line);
  }
  .m-tb-burger { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 11px;
    display: inline-flex; align-items: center; justify-content: center;
    background: #0e1726; border: 1px solid var(--m-line); color: var(--m-ink); cursor: pointer;
    -webkit-tap-highlight-color: transparent; }
  .m-tb-burger svg { width: 20px; height: 20px; }
  .m-tb-brand { display: inline-flex; align-items: center; gap: 9px; text-decoration: none; min-width: 0; }
  .m-tb-mark { width: 29px; height: 29px; border-radius: 8px; object-fit: cover; flex: 0 0 auto; }
  .m-tb-wm { font: 800 14px "Inter", system-ui, sans-serif; letter-spacing: .1em; color: var(--m-ink); white-space: nowrap; }
  body.has-topbar { padding-top: calc(50px + env(safe-area-inset-top)); }
  /* la barra reemplaza cualquier ☰ por página y el flotante (incluido el .hud-burger
     que bottomnav.js crea desde 'header nav' → 2º menú redundante). */
  body.has-topbar #cart-burger, body.has-topbar .msb-burger-float,
  body.has-topbar .hud-burger { display: none !important; }
  /* la cinta de marcadores (sticky) se pega DEBAJO de la barra, no encima */
  body.has-topbar #scores-banner { top: calc(50px + env(safe-area-inset-top)) !important; }
}

/* ── Tabs de liga en la Cartelera (filtro por deporte) ── */
.ltabs { display: flex; gap: 8px; overflow-x: auto; padding: 2px 0 13px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.ltabs::-webkit-scrollbar { display: none; }
.ltab { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 9px; padding: 9px 17px; border-radius: var(--m-r-pill);
  border: 1px solid var(--m-line); background: #0d1626; color: #cfe0f2; font: 600 14.5px "Inter", system-ui, sans-serif;
  white-space: nowrap; cursor: pointer; transition: border-color .15s, color .15s; }
.ltab.on { border-color: var(--m-cyan); color: var(--m-cyan); background: #0c1a24; }
.ltab .lt-lg { width: 25px; height: 25px; object-fit: contain; flex: 0 0 auto; }
.ltab .lt-ic { font-size: 18px; line-height: 1; }
.ltab .lt-sv { width: 22px; height: 22px; flex: 0 0 auto; }

/* ── Selector de fechas (ayer · hoy · mañana) ── */
.datebar { display: flex; align-items: center; gap: 8px; margin: 2px 0 14px; }
.db-arrow { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 10px; background: #0d1626;
  border: 1px solid var(--m-line); color: #9fb3cc; font-size: 19px; line-height: 1; cursor: pointer; }
.db-days { flex: 1; display: flex; gap: 4px; justify-content: center; }
.db-day { flex: 1; max-width: 130px; padding: 6px 6px 9px; border: none; border-bottom: 2px solid transparent;
  background: transparent; color: #6c7f99; font: 600 14px "Inter", system-ui, sans-serif; cursor: pointer; text-align: center; }
.db-day.on { color: #fff; border-bottom-color: var(--m-cyan); }
#league-bar:not(:empty) { padding: 12px 16px 2px; }

/* ── Menú de secciones (hamburguesa): el .hud-nav pasa a panel lateral ── */
.hud-burger { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px;
  border-radius: 11px; background: #111a2b; border: 1px solid var(--m-line); color: #cfe0f2; cursor: pointer;
  flex: 0 0 auto; margin-left: auto; }
.hud-burger svg { width: 21px; height: 21px; }
/* en headers que no son flex (Cartelera, etc.) el ☰ se ancla arriba-derecha del header */
header:not(#hud) { position: relative; }
header:not(#hud) .hud-burger { position: absolute; top: 12px; right: 16px; margin-left: 0; z-index: 41; }
header:not(#hud) h1 { padding-right: 54px; }
.hud-ov { position: fixed; inset: 0; z-index: 199; background: rgba(2,5,10,.55); opacity: 0; pointer-events: none;
  transition: opacity .22s ease; -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
body.menu-open .hud-ov { opacity: 1; pointer-events: auto; }
.as-drawer { position: fixed !important; inset: 0 0 0 auto; width: min(84vw, 320px); z-index: 200;
  display: flex !important; flex-direction: column !important; align-items: stretch !important;
  justify-content: flex-start !important; gap: 0 !important; flex-wrap: nowrap !important; min-height: 0 !important;
  background: #0c1320; border-left: 1px solid var(--m-line); padding: 14px 0 calc(20px + env(safe-area-inset-bottom)) !important;
  transform: translateX(103%); transition: transform .24s ease; overflow-y: auto; box-shadow: -16px 0 46px rgba(0,0,0,.5); }
body.menu-open .as-drawer { transform: translateX(0); }
/* gana al @media de meteor.css (nav{width:100%!important}) en móvil: el panel NO es full-width */
body .as-drawer { width: min(84vw, 320px) !important; max-width: 320px !important;
  overflow-x: hidden !important; overflow-y: auto !important; justify-content: flex-start !important; }
.as-drawer a { display: flex !important; align-items: center; width: auto; margin: 0; padding: 13px 22px;
  border: none !important; border-radius: 0; background: none !important; color: #dce9f7;
  font: 500 14.5px "Inter", system-ui, sans-serif; letter-spacing: .02em; }
.as-drawer a::before { width: 19px !important; height: 19px !important; margin-right: 14px !important; opacity: .9; }
.as-drawer a:hover, .as-drawer a.active, .as-drawer a.on {
  color: var(--m-cyan) !important; background: rgba(56,214,255,.07) !important; }

/* ════════════════════════════════════════════════════════════════════════
   SIDEBAR DE ESCRITORIO (premium) — solo >=1024px. El bottom-nav manda en móvil.
   ════════════════════════════════════════════════════════════════════════ */
.msb { display: none; }                       /* oculto por defecto (móvil) */

@media (min-width: 1024px) {
  .msb {
    display: flex; flex-direction: column;
    position: fixed; top: 0; left: 0; bottom: 0; width: 244px; z-index: 200;
    padding: 18px 14px 16px; gap: 6px;
    background: linear-gradient(180deg, #0a1220 0%, #070d18 100%);
    border-right: 1px solid var(--m-line);
  }
  .msb-brand { display: flex; align-items: center; gap: 11px; padding: 6px 8px 16px; text-decoration: none;
    border-bottom: 1px solid rgba(255,255,255,.05); margin-bottom: 10px; }
  .msb-mark { width: 34px; height: 34px; border-radius: 9px; object-fit: cover; flex: 0 0 auto;
    box-shadow: 0 4px 14px rgba(62,230,160,.22); }
  .msb-wm { display: flex; flex-direction: column; line-height: 1.1; }
  .msb-wm b { font: 800 14.5px "Inter", system-ui, sans-serif; letter-spacing: .04em; color: var(--m-ink); }
  .msb-wm i { font: 700 8px "JetBrains Mono", monospace; letter-spacing: .22em; color: var(--m-mut); font-style: normal; margin-top: 3px; }

  .msb-nav { display: flex; flex-direction: column; gap: 2px; flex: 1; overflow-y: auto; }
  .msb-nav::-webkit-scrollbar { width: 0; }
  .msb-i, .msb-prof {
    display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 11px;
    text-decoration: none; color: var(--m-mut); position: relative;
    font: 600 13.5px "Inter", system-ui, sans-serif; letter-spacing: .005em;
    transition: color .16s ease, background .16s ease; white-space: nowrap;
  }
  .msb-ic { display: flex; flex: 0 0 auto; }
  .msb-ic svg { width: 20px; height: 20px; }
  .msb-i:hover, .msb-prof:hover { color: var(--m-ink); background: rgba(255,255,255,.035); }
  .msb-i.on { color: var(--m-cyan); background: linear-gradient(90deg, rgba(56,214,255,.12), rgba(56,214,255,.03)); }
  .msb-i.on::before { content: ""; position: absolute; left: 0; top: 9px; bottom: 9px; width: 3px;
    border-radius: 0 3px 3px 0; background: var(--m-cyan); box-shadow: 0 0 10px var(--m-cyan); }
  .msb-prof { margin-top: 8px; border-top: 1px solid rgba(255,255,255,.05); border-radius: 0; padding-top: 14px; }

  /* el contenido se corre a la derecha del rail */
  body.has-sidebar { padding-left: 244px !important; }
  /* en escritorio mandamos el rail: fuera el bottom-nav y su relleno inferior */
  body.has-sidebar.has-mbn { padding-bottom: 0 !important; }
  .has-sidebar .mbn { display: none !important; }

}

/* En pantallas medianas (tablet) el rail se angosta a solo íconos */
@media (min-width: 1024px) and (max-width: 1240px) {
  .msb { width: 72px; padding: 18px 10px 16px; }
  .msb-wm, .msb-i .msb-tx, .msb-prof .msb-tx { display: none; }
  .msb-i, .msb-prof { justify-content: center; }
  .msb-brand { justify-content: center; padding: 6px 0 16px; }
  body.has-sidebar { padding-left: 72px !important; }
}

@media (min-width: 1024px) {
  /* Pie del sidebar: modo + tarjeta de usuario (como el mockup) */
  .msb-foot { margin-top: 6px; border-top: 1px solid rgba(255,255,255,.05); padding-top: 12px; display: flex; flex-direction: column; gap: 10px; }
  .msb-mode { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
  .msb-mode-l { font: 700 8px "JetBrains Mono", monospace; letter-spacing: .18em; color: var(--m-mut); width: 100%; margin-bottom: 2px; }
  .msb-mode-b { flex: 1; min-width: 0; padding: 6px 4px; border-radius: 8px; border: 1px solid var(--m-line);
    background: #0b1322; color: var(--m-mut); font: 600 11px "Inter", system-ui, sans-serif; cursor: pointer; transition: all .15s; white-space: nowrap; }
  .msb-mode-b.on { border-color: var(--m-green); color: var(--m-green); background: rgba(62,230,160,.08); }
  .msb-user { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: 12px; text-decoration: none;
    background: #0b1322; border: 1px solid var(--m-line); transition: border-color .15s; }
  .msb-user:hover { border-color: var(--m-cyan); }
  .msb-uav { width: 34px; height: 34px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; border: 1.5px solid var(--m-cyan); }
  .msb-uinfo { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
  .msb-uinfo b { font: 700 13px "Inter", system-ui, sans-serif; color: var(--m-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 150px; }
  .msb-uinfo i { font: 700 8.5px "JetBrains Mono", monospace; letter-spacing: .14em; color: var(--m-green); font-style: normal; margin-top: 2px; }
}
@media (min-width: 1024px) and (max-width: 1240px) {
  .msb-foot .msb-mode, .msb-uinfo { display: none; }
  .msb-user { justify-content: center; padding: 6px; }
}

/* ── Hamburguesa universal (☰): abre el sidebar (.msb) como drawer en móvil/tablet,
   en TODAS las páginas — antes solo el dashboard tenía cómo abrirlo, así que las demás
   secciones (Estadísticas, Capital, Historial, Noticias, Polymarket, Comunidad) no se
   alcanzaban en el teléfono. El botón lo inyecta sidebar.js. ── */
/* Botón flotante: SOLO se usa de respaldo cuando la página no trae su propia
   hamburguesa en el header (p.ej. la cartelera sí la trae, ahí no flota). */
.msb-burger-float { display: none; }
@media (max-width: 1023px) {
  /* SIN backdrop-filter: en iOS un position:fixed con backdrop-filter propio se
     desancla y hace scroll con la página (el mismo bug del bottom-nav). Fondo
     SÓLIDO para que el ☰ quede realmente fijo en todas las páginas. */
  .msb-burger-float { display: inline-flex; align-items: center; justify-content: center;
    position: fixed; top: calc(9px + env(safe-area-inset-top)); left: 11px; z-index: 96;
    width: 40px; height: 40px; border-radius: 11px; cursor: pointer;
    background: #0b111c; border: 1px solid var(--m-line); color: var(--m-ink);
    box-shadow: 0 4px 14px rgba(0,0,0,.4); }
  .msb-burger-float svg { width: 20px; height: 20px; }
  /* Las páginas con su PROPIO ☰ en el header (#cart-burger) lo tenían en el flujo →
     al hacer scroll se iba de la pantalla y el menú quedaba inalcanzable. Lo fijamos
     igual que el flotante para que quede SIEMPRE anclado arriba-izquierda. Cada página
     le da su tamaño/color; aquí solo el anclaje. */
  #cart-burger { position: fixed !important; top: calc(9px + env(safe-area-inset-top)) !important;
    left: 11px !important; z-index: 97 !important; }
  .d-msb-ov { position: fixed; inset: 0; z-index: 198; background: rgba(2,5,10,.55);
    opacity: 0; pointer-events: none; transition: opacity .22s ease;
    -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
  body.msb-open .d-msb-ov { opacity: 1; pointer-events: auto; }
  .msb { transform: translateX(-104%); transition: transform .24s ease; }
  body.msb-open .msb { display: flex !important; flex-direction: column;
    position: fixed; top: 0; left: 0; bottom: 0; width: min(84vw, 300px); z-index: 200;
    padding: max(18px, env(safe-area-inset-top)) 14px calc(16px + env(safe-area-inset-bottom));
    gap: 6px; background: linear-gradient(180deg,#0a1220,#070d18);
    border-right: 1px solid var(--m-line); box-shadow: 16px 0 46px rgba(0,0,0,.5);
    overflow-y: auto; transform: translateX(0); }
  body.msb-open .msb .msb-brand { display: flex; align-items: center; gap: 11px; padding: 6px 8px 16px;
    text-decoration: none; border-bottom: 1px solid rgba(255,255,255,.05); margin-bottom: 10px; }
  body.msb-open .msb .msb-mark { width: 34px; height: 34px; border-radius: 9px; object-fit: cover; }
  body.msb-open .msb .msb-wm { display: flex; flex-direction: column; line-height: 1.1; }
  body.msb-open .msb .msb-wm b { font: 800 14.5px "Inter", system-ui, sans-serif; color: var(--m-ink); }
  body.msb-open .msb .msb-wm i { font: 700 8px "JetBrains Mono", monospace; letter-spacing: .22em; color: var(--m-mut); font-style: normal; margin-top: 3px; }
  body.msb-open .msb .msb-nav { display: flex; flex-direction: column; gap: 2px; flex: 1; overflow-y: auto; }
  body.msb-open .msb .msb-i { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 11px;
    text-decoration: none; color: var(--m-mut); font: 600 14px "Inter", system-ui, sans-serif; white-space: nowrap; }
  body.msb-open .msb .msb-i .msb-tx { display: inline; }
  body.msb-open .msb .msb-ic { display: flex; flex: 0 0 auto; }
  body.msb-open .msb .msb-ic svg { width: 20px; height: 20px; }
  body.msb-open .msb .msb-i.on { color: var(--m-cyan); background: linear-gradient(90deg, rgba(56,214,255,.12), rgba(56,214,255,.03)); }
  body.msb-open .msb .msb-foot { margin-top: 6px; border-top: 1px solid rgba(255,255,255,.05); padding-top: 12px; display: flex; flex-direction: column; gap: 10px; }
  body.msb-open .msb .msb-mode { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
  body.msb-open .msb .msb-mode-l { font: 700 8px "JetBrains Mono", monospace; letter-spacing: .18em; color: var(--m-mut); width: 100%; }
  body.msb-open .msb .msb-mode-b { flex: 1; padding: 8px 4px; border-radius: 8px; border: 1px solid var(--m-line);
    background: #0b1322; color: var(--m-mut); font: 600 11px "Inter", system-ui, sans-serif; cursor: pointer; }
  body.msb-open .msb .msb-mode-b.on { border-color: var(--m-green); color: var(--m-green); background: rgba(62,230,160,.08); }
  body.msb-open .msb .msb-user { display: flex; align-items: center; gap: 10px; padding: 10px; border-radius: 12px;
    text-decoration: none; background: #0b1322; border: 1px solid var(--m-line); }
  body.msb-open .msb .msb-uav { width: 34px; height: 34px; border-radius: 50%; object-fit: cover; border: 1.5px solid var(--m-cyan); }
  body.msb-open .msb .msb-uinfo { display: flex; flex-direction: column; line-height: 1.2; }
  body.msb-open .msb .msb-uinfo b { font: 700 13px "Inter", system-ui, sans-serif; color: var(--m-ink); }
  body.msb-open .msb .msb-uinfo i { font: 700 8.5px "JetBrains Mono", monospace; letter-spacing: .14em; color: var(--m-green); font-style: normal; margin-top: 2px; }
}

/* ── Instalar como app (PWA): overlay de guía ── */
.pwa-ov { position: fixed; inset: 0; z-index: 400; background: rgba(4,8,15,.74);
  display: flex; align-items: center; justify-content: center; padding: 22px; }
.pwa-card { background: #0f1828; border: 1px solid var(--m-line); border-radius: 18px;
  padding: 24px 22px 18px; max-width: 350px; width: 100%; text-align: center;
  box-shadow: 0 18px 50px rgba(0,0,0,.5); }
.pwa-card img { width: 64px; height: 64px; border-radius: 16px; margin-bottom: 10px; }
.pwa-card > b { display: block; font: 800 17px Inter, sans-serif; color: var(--m-ink); margin-bottom: 12px; }
.pwa-card p { margin: 8px 0; color: #b9c9de; font: 500 14px/1.45 Inter, sans-serif; text-align: left; }
.pwa-card .pwa-x { margin-top: 14px; width: 100%; padding: 11px; border-radius: 11px;
  border: 1px solid rgba(62,230,160,.4); background: rgba(62,230,160,.1);
  color: var(--m-green); font: 800 14px Inter, sans-serif; cursor: pointer; }
.as-drawer .hud-install { color: var(--m-green) !important; font-weight: 700; }

/* ── Pie del menú (rail escritorio Y drawer móvil): récord vivo + idioma.
      GLOBAL a propósito: dentro del @media de escritorio el drawer móvil los
      mostraba crudos (enlace azul subrayado del navegador). ── */
.msb-rec { display: flex; align-items: center; gap: 11px; text-decoration: none;
  border: 1px solid rgba(62,230,160,.28); background: rgba(62,230,160,.07);
  border-radius: 12px; padding: 10px 12px; margin: 0 0 9px; transition: border-color .15s; }
.msb-rec:hover { border-color: rgba(62,230,160,.55); }
.msb-rec b { font: 800 19px "JetBrains Mono", monospace; color: var(--m-green); }
.msb-rec .msb-rec-t { font: 700 8.5px "JetBrains Mono", monospace; letter-spacing: .09em;
  color: var(--m-mut); line-height: 1.5; }
.msb-rec .msb-rec-t i { display: block; font-style: normal; color: #cbd5e1; font-size: 10px; }
.msb-lang { display: flex; gap: 6px; margin-bottom: 10px; }
.msb-lang button { flex: 1; padding: 7px 0; border-radius: 9px; border: 1px solid var(--m-line);
  background: transparent; color: var(--m-mut); font: 800 11px Inter, sans-serif;
  letter-spacing: .06em; cursor: pointer; transition: color .15s, border-color .15s; }
.msb-lang button.on { color: #eaf2fb; border-color: #45597c; background: #16233a; }
.msb-install { display: flex; align-items: center; justify-content: center; gap: 9px; width: 100%;
  margin: 0 0 9px; padding: 11px 12px; border-radius: 12px; cursor: pointer;
  border: 1px solid rgba(62,230,160,.45); background: rgba(62,230,160,.12);
  color: var(--m-green); font: 800 13px Inter, sans-serif; letter-spacing: .02em;
  transition: background .15s; }
.msb-install:hover { background: rgba(62,230,160,.2); }
.msb-install .msb-ic svg { width: 18px; height: 18px; display: block; }
