/* Liga Monumental — design tokens + componentes compartidos.
   UNA sola fuente de verdad visual. La portada (tema verde) y la demo
   (tema morado) usan exactamente los mismos componentes. */
:root{
  /* base */
  --ink:#1c2620; --muted:#5c6b62; --line:#e2e8e4; --bg:#f4f7f5; --card:#fff;
  /* brand (sitio real, verde) */
  --brand:#0b6e3b; --brand-dark:#095a30;
  /* demo (morado) */
  --demo:#5b3a8f; --demobg:#f3eefc; --demoline:#d7c8ef;
  /* estados */
  --good:#1f7a4d;
  --warn:#8a6a00; --warnbg:#fff3d6; --warnline:#e9d38a;
  --danger:#b3261e; --dangerbg:#fdeceb; --dangerline:#f1b3af;
  /* dorado (campeón/destacado) */
  --gold:#b8860b; --goldbg:#fffdf2; --goldline:#e8d27a;
  /* tema activo (por defecto: verde del sitio real) */
  --accent:#0b6e3b; --accentbg:#eaf5ee; --accentline:#b7ddc4;
}
body.theme-demo{ --accent:var(--demo); --accentbg:var(--demobg); --accentline:var(--demoline); }

/* ══ App con pestañas (body.tabapp): portada y demo ══ */
/* Páginas con pestañas: body scrollea normal; barra inferior = el
   ESTÁNDAR de la industria (fixed + bottom:0 + safe-area). Sin JS de
   posicionamiento, sin sticky, sin shell bloqueado — decisión final.
   Nota: iOS 26 tiene un bug ABIERTO de WebKit (#300965) donde el
   toolbar dinámico puede dejar un hueco transitorio bajo barras fijas;
   afecta a TODA la web (YouTube incluido) y se corrige del lado de
   Apple. La app instalada (PWA standalone) no tiene toolbar y queda
   perfecta siempre. */
.tabapp{margin:0;background:var(--bg);color:var(--ink);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  font-size:17px;line-height:1.5;-webkit-text-size-adjust:100%}
.tabapp *{box-sizing:border-box}
.tabapp .bar,.tabapp .wrap{max-width:640px;margin:0 auto}
.tabapp main.wrap{padding:18px 16px calc(96px + env(safe-area-inset-bottom))}
.tabapp header{background:var(--accent);color:#fff;padding:20px 16px 16px}
.tabapp header .back{color:#fff;text-decoration:none;opacity:.9;font-size:14px;display:inline-block;margin-bottom:4px}
.tabapp header .title{font-size:22px;font-weight:800}
.tabapp header .sub{font-size:13px;opacity:.85;margin-top:2px}
.tabapp h2{font-size:22px;font-weight:800;margin:0 0 12px}
.tabapp h3{font-size:15px;color:var(--muted);margin:14px 0 8px}
.view{display:none} .view.on{display:block}
.note{font-size:14px;color:var(--muted);margin-top:8px}
.empty{background:var(--card);border:1px dashed var(--line);border-radius:16px;padding:18px;text-align:center;color:var(--muted)}

/* Barra de pestañas STICKY: el body scrollea normal (Safari puede esconder
   su barra) y esta queda pegada al borde visible. Último hijo del body. */
nav.tabbar{position:fixed;left:0;right:0;bottom:0;display:flex;justify-content:center;background:#fff;
  border-top:1px solid var(--line);padding:8px 6px max(6px, env(safe-area-inset-bottom));
  box-shadow:0 -2px 10px rgba(0,0,0,.07);z-index:20}
nav.tabbar button{flex:1;max-width:150px;background:none;border:none;text-align:center;padding:6px 2px;color:#8a94a8;font-family:inherit;cursor:pointer}
nav.tabbar button.on{color:var(--accent)}
nav.tabbar .icon{font-size:22px;display:block}
nav.tabbar .label{font-size:12px;font-weight:700;margin-top:2px}

/* Hero (¿cómo vamos? de un vistazo) */
.hero{background:var(--accentbg);border:1px solid var(--accentline);border-radius:16px;padding:16px 18px;margin-bottom:16px;display:flex;align-items:center;gap:14px}
.hero .pos{font-size:38px;font-weight:800;color:var(--accent);line-height:1}
.hero .txt b{display:block;font-weight:700;font-size:17px}
.hero .txt span{font-size:14px;color:var(--muted)}

/* Selector de serie */
.serietabs{display:flex;gap:8px;margin-bottom:14px}
.serietabs button{flex:1;padding:12px 6px;border-radius:14px;border:2px solid var(--line);background:#fff;color:var(--muted);font-size:15px;font-weight:700;cursor:pointer}
.serietabs button.on{border-color:var(--accent);background:var(--accent);color:#fff}

/* Tabla como lista de filas */
.standings{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.srow{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}
.srow:last-child{border-bottom:none}
.srow.me{background:var(--accentbg);border-left:4px solid var(--accent)}
.pos-chip{width:30px;height:30px;border-radius:8px;background:#eef3f0;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;color:var(--muted);flex-shrink:0}
.srow .info{flex:1;min-width:0}
.srow .team{font-weight:700;font-size:17px}
.srow .stats{font-size:13px;color:var(--muted);margin-top:2px}
.srow .dif{font-size:14px;font-weight:700;flex-shrink:0}
.dif.up{color:var(--good)} .dif.down{color:var(--danger)}
.srow .pts{width:42px;height:42px;border-radius:12px;background:#232b26;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:17px;flex-shrink:0}

/* Racha */
.racha{margin-top:14px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 16px}
.racha h3{margin:0 0 8px}
.racha .linea{display:flex;gap:6px;align-items:center;margin-bottom:6px;font-size:13px;color:var(--muted)}
.racha .lbl{width:64px;font-weight:700}
.f{width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:13px}
.fW{background:var(--good)}.fD{background:#c9a227}.fL{background:var(--danger)}

/* Disciplina */
.summary{border-radius:16px;padding:14px 16px;margin-bottom:14px}
.summary.bad{background:var(--dangerbg);border:1px solid var(--dangerline)}
.summary.ok{background:var(--accentbg);border:1px solid var(--accentline)}
.summary .l1{font-weight:800;font-size:16px;color:var(--danger)}
.summary.ok .l1{color:var(--accent)}
.summary .l2{font-size:14px;color:#8a3d38;margin-top:2px}
.disc-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:10px;cursor:pointer}
.disc-card.susp{border-left:4px solid var(--danger)}
.disc-card.warn{border-left:4px solid #c9a227}
.disc-card .name{font-weight:700;font-size:17px}
.disc-card .folio{font-size:13px;color:var(--muted);font-weight:400}
.badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.badge{font-size:13px;border-radius:999px;padding:4px 11px;font-weight:700}
.badge.y{background:var(--warnbg);color:var(--warn)}
.badge.r{background:var(--dangerbg);color:var(--danger)}
.flag{font-size:14px;font-weight:700;margin-top:8px}
.flag.bad{color:var(--danger)} .flag.warn{color:var(--warn)}

/* Partidos */
.fecha{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 16px;margin-bottom:12px}
.fecha h4{margin:0 0 8px;font-size:14px;color:var(--muted)}
.match{padding:8px 0;border-top:1px dashed var(--line)}
.match:first-of-type{border-top:none}
.score{display:flex;align-items:center;gap:8px;font-size:16px;flex-wrap:wrap}
.serie{font-size:11px;font-weight:700;color:var(--muted);background:#eef3f0;border-radius:6px;padding:2px 6px;white-space:nowrap}
.score .res{margin-left:auto;font-weight:800;white-space:nowrap;font-size:14px}
.chipW{color:var(--good)} .chipD{color:#c9a227} .chipL{color:var(--danger)}
.evts{font-size:14px;color:var(--muted);margin-top:3px}
.other{opacity:.6;font-size:14px}
.pl{color:var(--accent);cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}

/* Goleadores */
.scorers{list-style:none;margin:0;padding:0}
.scorers li{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 16px;margin-bottom:8px;cursor:pointer}
.scorers .g{min-width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;border-radius:10px;font-weight:800;font-size:17px}
.scorers .nm{flex:1;font-weight:700;font-size:16px}
.scorers .fol{color:var(--muted);font-size:13px}

/* Próximo partido + anotados (Inicio) */
.next{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;text-align:center;color:var(--muted)}
.next .vs{font-size:24px;font-weight:800;color:var(--ink)}
.next .when{color:var(--muted);margin-top:6px}
.chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:12px}
.chip{background:#eef3f0;border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:15px;color:var(--ink)}
.next .tag{margin-top:12px;color:var(--muted);font-size:14px}
.cta{display:block;text-align:center;background:var(--accent);color:#fff;text-decoration:none;font-weight:800;padding:14px;border-radius:14px;margin-top:14px;font-size:18px}
ul.list{list-style:none;margin:0;padding:0}
ul.list li{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin-bottom:8px}
.foliochip{font-variant-numeric:tabular-nums;font-weight:800;background:#eef3f0;border-radius:8px;padding:4px 9px;font-size:15px}
ul.list .nm{flex:1;font-weight:600}
li.mutedrow{color:var(--muted);justify-content:center;border-style:dashed !important}
.count{font-size:15px;color:var(--muted);font-weight:600}
.links{display:flex;gap:10px;margin-top:14px}
.links a{flex:1;text-align:center;background:#fff;border:2px solid var(--line);border-radius:14px;padding:12px;color:var(--ink);text-decoration:none;font-weight:700;font-size:15px}
footer.appfoot{color:var(--muted);font-size:13px;text-align:center;margin-top:24px;line-height:1.6;background:var(--accentbg);border:1px solid var(--accentline);border-radius:16px;padding:14px}

/* Ficha emergente compartida (Liga.sheetOpen) */
#liga-overlay{position:fixed;inset:0;background:rgba(20,16,30,.55);display:none;align-items:flex-end;justify-content:center;z-index:50;padding:14px 14px calc(14px + env(safe-area-inset-bottom))}
.liga-sheet{background:#fff;border-radius:18px;max-width:560px;width:100%;max-height:82vh;overflow:auto;padding:18px;position:relative;font-size:16px}
.liga-cerrar{position:absolute;top:10px;right:12px;border:none;background:#eef3f0;border-radius:10px;font-size:17px;padding:6px 11px;cursor:pointer}
.ovfolio{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.ovname{font-size:23px;font-weight:800;margin:2px 0 12px;color:var(--ink)}
.ovtotals{display:flex;gap:10px;margin-bottom:10px}
.ovtotals span{flex:1;text-align:center;background:var(--accentbg);border:1px solid var(--accentline);border-radius:12px;padding:10px 6px;font-weight:800;font-size:17px}
.ovrow{padding:8px 10px;border-bottom:1px solid var(--line);font-size:15px}
.ovrow:last-of-type{border-bottom:none}
.ovrow.susp{background:var(--dangerbg);border-radius:8px;border-bottom:none;margin:2px 0}

/* Banner "torneo ficticio" (portada en modo demo) */
.testbanner{background:var(--demobg);border:1px solid var(--demoline);color:var(--demo);border-radius:16px;padding:12px 14px;margin-bottom:12px;font-size:14px}
