
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
img{max-width:100%;height:auto}
:root{--c1:#22c55e;--c2:#6fd996;--bg:#f4f6f9;--white:#fff;--ink:#111827;--ink2:#4b5563;--ink3:#9ca3af;--ink4:#6b7280;--rule:#e5e7eb;--rule2:#d8dee8;--paper:#f6f7f9;--mono:'JetBrains Mono',monospace;--green:#16a34a;--red:#ef4444;}
html{scroll-behavior:smooth}
html{min-height:100%;font-family:'DM Sans',sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;}
/* Fondo de página con tintes sutiles de los colores del torneo (no plano) */
body{
  min-height:100%;font-family:'DM Sans',sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;
  background:
    radial-gradient(1000px 620px at 108% -5%, #22c55e14, transparent 55%),
    radial-gradient(900px 620px at -8% 105%, #6fd99612, transparent 55%),
    var(--bg);
  background-attachment:fixed;
}

/* ── HERO ─────────────────────────────────────────────── */
.hero{
  color:#fff;
  height:clamp(200px,30vw,320px);
  background-size:cover;background-position:center;
  display:flex;align-items:flex-end;
}
.hero-content{
  max-width:900px;margin:0 auto;width:100%;
  padding:0 16px 18px;
  display:flex;align-items:center;gap:14px;
}
.hero-logo{width:64px;height:64px;border-radius:14px;object-fit:contain;background:rgba(255,255,255,.92);padding:6px;box-shadow:0 6px 24px rgba(0,0,0,.30);flex-shrink:0}
.hero-title{font-family:'Barlow Condensed',sans-serif;font-size:clamp(30px,5vw,50px);font-weight:900;text-transform:uppercase;letter-spacing:-.5px;line-height:1;text-shadow:0 2px 16px rgba(0,0,0,.45);text-align:left}
.hero-dates{font-size:15px;font-weight:600;opacity:.92;font-family:'JetBrains Mono',monospace}
.hero-city{font-size:13px;opacity:.8}

/* ── NAV horizontal sticky ───────────────────────────── */
.top-nav{
  position:sticky;top:0;z-index:100;
  display:flex;align-items:center;justify-content:flex-end;gap:8px;
  background:linear-gradient(135deg,var(--c2),var(--c1));padding:6px 12px;
  box-shadow:0 4px 18px rgba(0,0,0,.18);
}
/* Centrado real: con .nav-btns como flex:1 (intento anterior) los botones
   quedaban centrados solo en el hueco que sobraba TRAS el selector de
   idioma, no en el ancho total de la barra -- como el selector ocupa sitio
   a la derecha, el centro de "lo que sobra" cae un poco más a la
   izquierda que el centro real de la barra, que es justo lo que se seguía
   viendo descuadrado. Con position:absolute + left:50% se centra contra
   el ancho TOTAL de .top-nav (que ya es position:sticky, así que sirve de
   referencia), sin que el ancho del selector de idioma afecte al cálculo.
   .top-nav pasa a solo tener que colocar el selector (justify-content:
   flex-end), que ahora es su único hijo en el flujo normal. */
.nav-btns{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;gap:4px;max-width:calc(100% - 96px);overflow-x:auto;-webkit-overflow-scrolling:touch}
.nav-btn{
  display:flex;align-items:center;gap:7px;
  padding:8px 16px;border:none;border-radius:10px;
  background:transparent;cursor:pointer;
  color:rgba(255,255,255,.88);font-size:13px;font-weight:700;
  font-family:'DM Sans',sans-serif;white-space:nowrap;
  transition:all .15s;text-transform:uppercase;letter-spacing:.3px;
}
.nav-btn:hover{background:rgba(255,255,255,.12);color:#fff}
/* Ya no necesita margin-left:auto: al ser el segundo (y último) hijo
   directo de .top-nav, después de .nav-btns (que absorbe todo el hueco
   con flex:1), este selector queda pegado a la derecha por construcción. */
.lang-sel{position:relative;flex:none}
.lang-sel-btn{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:9px;padding:6px 8px;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;cursor:pointer}
.lang-sel-btn:hover{background:rgba(255,255,255,.22)}
.lang-sel-flag{width:16px;height:11px;border-radius:2px;object-fit:cover;display:block;flex-shrink:0}
.lang-sel-caret{font-size:9px;opacity:.7}
.lang-sel-menu{list-style:none;margin:0;padding:6px;position:absolute;top:calc(100% + 6px);right:0;background:color-mix(in srgb,var(--c2) 45%,#0b1220);border:1px solid rgba(255,255,255,.18);border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,.4);min-width:96px;display:none;z-index:400}
.lang-sel-menu.open{display:block}
.lang-sel-menu li{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:7px;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;color:#fff;cursor:pointer;white-space:nowrap}
.lang-sel-menu li:hover{background:rgba(255,255,255,.14)}
.lang-sel-menu li[aria-selected="true"]{background:color-mix(in srgb,var(--c1) 38%,transparent)}
.nav-btn.active{background:rgba(255,255,255,.22);color:#fff}
.nav-icon{font-size:16px;line-height:1}
.live-toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%) translateY(160%);background:var(--ink);color:#fff;padding:12px 18px;border-radius:12px;font-size:14px;font-weight:700;box-shadow:0 8px 28px rgba(0,0,0,.28);z-index:9999;opacity:0;transition:transform .32s cubic-bezier(.2,.85,.3,1),opacity .3s;max-width:90vw;text-align:center;pointer-events:none}
.live-toast.show{transform:translateX(-50%) translateY(0);opacity:1}
@keyframes bcFlash{0%,18%{box-shadow:0 0 0 3px rgba(34,197,94,.6)}100%{box-shadow:0 0 0 3px rgba(34,197,94,0)}}
.flash-update{animation:bcFlash 1.6s ease-out;border-radius:12px}
@media (prefers-reduced-motion: reduce){.live-toast{transition:opacity .2s}.flash-update{animation:none}}

/* ── MAIN ─────────────────────────────────────────────── */
.app-main{max-width:760px;margin:0 auto;width:100%;padding:24px 16px 84px}
.bc-watermark{display:block;text-align:center;font-size:11px;font-weight:600;color:var(--ink3);text-decoration:none;padding:0 64px 22px}
.bc-watermark:hover{color:var(--ink2);text-decoration:underline}

/* ── Admin bar ───────────────────────────────────────── */
.admin-topbar{background:#0f1f3d;color:#fff;padding:8px 16px;font-size:12px;display:flex;align-items:center;gap:8px;font-family:'JetBrains Mono',monospace}
.admin-role{background:rgba(255,255,255,.15);padding:2px 8px;border-radius:4px;font-size:10px}
.admin-topbar button{margin-left:auto;background:rgba(255,255,255,.15);border:none;color:#fff;padding:4px 12px;border-radius:6px;cursor:pointer;font-size:11px}

/* ── VISTA TORNEO (info) ─────────────────────────────── */
.info-grid{display:grid;grid-template-columns:1fr 320px;gap:18px;margin-bottom:18px;align-items:start}
.info-main{background:var(--white);border-radius:18px;padding:26px;border:1.5px solid var(--rule);box-shadow:0 2px 12px rgba(0,0,0,.04)}
.info-side{display:flex;flex-direction:column;gap:14px}
.side-card{background:var(--white);border-radius:16px;border:1.5px solid var(--rule);overflow:hidden;box-shadow:0 2px 12px rgba(0,0,0,.04);text-decoration:none;color:inherit;display:block}
.side-card-head{background:linear-gradient(135deg,var(--c2),var(--c1));color:#fff;font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;padding:11px 16px;font-family:'JetBrains Mono',monospace;opacity:.95}
.side-card-body{padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.side-row{display:flex;align-items:flex-start;gap:10px}
.side-ico{font-size:17px;flex-shrink:0;width:22px;text-align:center}
.side-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--ink3);font-family:'JetBrains Mono',monospace}
.side-val{font-size:14px;font-weight:600;color:var(--ink);line-height:1.4;margin-top:1px}
.side-card-link{cursor:pointer;transition:transform .15s,box-shadow .15s}
.side-card-link:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.1)}
.side-maplink{font-size:12px;font-weight:700;color:var(--c1);margin-top:6px}
.attach-chip{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;background:linear-gradient(135deg,var(--c2),var(--c1));color:#fff;border-radius:9px;font-size:12px;font-weight:700;text-decoration:none;transition:opacity .15s;word-break:break-word}
.attach-chip:hover{opacity:.85}
.attach-poster{display:block;border-radius:12px;overflow:hidden;border:1.5px solid var(--rule);background:#f4f6f9}
.attach-poster img{display:block;width:100%;max-height:360px;object-fit:contain;background:#f4f6f9}
.info-description{font-size:14px;line-height:1.7;color:var(--ink2)}
.desc-subtitle{font-weight:800;font-size:15px;color:var(--ink);margin:14px 0 4px}
.desc-line{margin-bottom:4px}
@media (max-width:720px){
  .info-grid{grid-template-columns:1fr}
  .info-side{flex-direction:column}
}
.info-hero-card{
  background:var(--white);border-radius:20px;padding:28px;
  border:1.5px solid var(--rule);margin-bottom:18px;
  box-shadow:0 2px 12px rgba(0,0,0,.04);
}
.info-title{font-family:'Barlow Condensed',sans-serif;font-size:30px;font-weight:900;text-transform:uppercase;letter-spacing:-.5px;margin-bottom:14px;border-bottom:3px solid var(--c1);padding-bottom:10px;display:inline-block}
.info-row{display:flex;align-items:flex-start;gap:12px;padding:9px 0;font-size:14px;color:var(--ink2);line-height:1.5}
.info-row-icon{font-size:18px;flex-shrink:0;width:26px;text-align:center}
.info-row strong{color:var(--ink)}
.info-stats{display:flex;gap:0;margin:18px 0;background:var(--white);border-radius:16px;border:1.5px solid var(--rule);overflow:hidden;box-shadow:0 2px 12px rgba(0,0,0,.04)}
.info-stat{flex:1;padding:20px 10px;text-align:center;border-right:1px solid var(--rule);transition:background .15s}
.info-stat:hover{background:color-mix(in srgb,var(--c1) 6%,#fff)}
.info-stat:last-child{border-right:none}
.info-stat-n{display:block;font-family:'Barlow Condensed',sans-serif;font-size:38px;font-weight:900;color:var(--c1);line-height:1}
.info-stat-l{display:block;font-size:11px;color:var(--ink3);font-weight:700;margin-top:4px;text-transform:uppercase;letter-spacing:.6px}
.info-section-title{font-family:'Barlow Condensed',sans-serif;font-size:19px;font-weight:900;text-transform:uppercase;color:var(--ink2);padding:0 0 8px;border-bottom:2px solid var(--c1);margin:24px 0 12px}
.btn-more{background:none;border:1.5px solid var(--rule);border-radius:10px;padding:10px 16px;font-size:13px;font-weight:700;color:var(--ink2);cursor:pointer;width:100%;margin-top:10px;transition:all .15s}
.btn-more:hover{border-color:var(--c1);color:var(--c1)}

/* ── Mi equipo ───────────────────────────────────────── */
.search-bar{margin-bottom:16px}
.search-bar input{width:100%;padding:13px 16px;border:1.5px solid var(--rule);border-radius:12px;font-size:14px;font-family:'DM Sans',sans-serif;background:var(--white)}
.search-bar input:focus{border-color:var(--c1);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--c1) 18%,transparent)}
.team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.team-card{background:var(--white);border-radius:14px;padding:14px;border:1.5px solid var(--rule);display:flex;align-items:center;gap:11px;cursor:pointer;transition:all .15s}
.team-card:hover{border-color:var(--c1);background:color-mix(in srgb,var(--c1) 6%,#fff);transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.06)}
/* object-fit:cover (no "contain"): con "contain" un logo cuya imagen
   original trajera mucho margen/transparencia alrededor del escudo se veía
   notablemente más pequeño que otro logo recortado justo al borde, aunque
   el contenedor midiera lo mismo — con "cover" todos rellenan el mismo
   espacio visual sin depender del recorte de la imagen original.
   padding:1px: un poco de aire para que el escudo no toque el marco
   literalmente, sin encoger de más a los logos que ya traen margen propio
   dentro de su imagen (ese es el límite real de lo que arregla el CSS —
   dos escudos recortados de forma distinta en origen nunca van a
   verse EXACTAMENTE igual de grandes, esto es el punto intermedio). */
.team-logo{width:36px;height:36px;border-radius:8px;object-fit:cover;flex-shrink:0;background:#fff;padding:1px;border:1px solid var(--rule)}
.team-logo-ph{width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,#e8edf4,#dde4ee);flex-shrink:0;display:inline-block}
.team-card-name{font-size:13px;font-weight:700;line-height:1.2}
.team-card-cat{font-size:11px;color:var(--ink3);margin-top:2px;font-family:'JetBrains Mono',monospace}

/* Team detail */
.back-btn{background:var(--white);border:1.5px solid var(--rule);border-radius:10px;padding:8px 16px;font-size:12px;font-weight:700;color:var(--ink2);cursor:pointer;margin-bottom:16px;transition:all .15s}
.back-btn:hover{border-color:var(--c1);color:var(--c1)}
.team-detail-header{display:flex;align-items:center;gap:14px;margin-bottom:18px;background:var(--white);padding:18px;border-radius:16px;border:1.5px solid var(--rule)}
.team-detail-header .team-logo,.team-detail-header .team-logo-ph{width:52px;height:52px}
.team-detail-name{font-family:'Barlow Condensed',sans-serif;font-size:27px;font-weight:900;text-transform:uppercase;line-height:1}
.team-detail-cat{font-size:12px;color:var(--ink3);font-family:'JetBrains Mono',monospace;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-top:3px}
.team-detail-locker{display:inline-block;font-size:12px;color:var(--c1);font-weight:700;margin-top:6px;background:color-mix(in srgb,var(--c1) 10%,#fff);padding:3px 10px;border-radius:8px}
.detail-tabs{display:flex;background:var(--white);border-radius:12px;border:1.5px solid var(--rule);padding:4px;margin-bottom:16px;gap:4px}
.detail-tab{flex:1;padding:10px;border:none;border-radius:9px;background:none;cursor:pointer;font-size:13px;font-weight:700;color:var(--ink3);transition:all .15s}
.detail-tab.active{background:var(--c1);color:#fff}
.roster-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-bottom:8px}
.roster-card{display:flex;align-items:center;gap:11px;background:var(--white);border:1.5px solid var(--rule);border-radius:12px;padding:10px 12px}
.roster-photo{width:44px;height:44px;border-radius:10px;object-fit:cover;flex-shrink:0;background:#f0f4f8}
.roster-photo-ph{width:44px;height:44px;border-radius:10px;background:linear-gradient(135deg,var(--c2),var(--c1));color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;font-family:'Barlow Condensed',sans-serif;flex-shrink:0}
.roster-info{min-width:0;flex:1}
.roster-name{font-size:13px;font-weight:700;line-height:1.2;display:flex;align-items:center;gap:5px}
.roster-num{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;background:var(--c1);color:#fff;border-radius:5px;font-size:11px;font-weight:800;padding:0 4px}
.roster-meta{font-size:11px;color:var(--ink3);margin-top:2px}
.detail-section-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:var(--ink3);margin:18px 0 8px;font-family:'JetBrains Mono',monospace}
.my-team-row{background:color-mix(in srgb,var(--c1) 16%,#fff)!important;font-weight:800;box-shadow:inset 3px 0 0 var(--c1)}
#detail-standings .standings-table tr:first-child td{background:transparent}

/* ── Clasificación ───────────────────────────────────── */
.standings-tabs{display:flex;background:var(--white);border-radius:12px;border:1.5px solid var(--rule);padding:4px;margin-bottom:16px;gap:4px}
.stab{flex:1;padding:10px;border:none;border-radius:9px;background:none;cursor:pointer;font-size:13px;font-weight:700;color:var(--ink3);transition:all .15s}
.stab.active{background:var(--c1);color:#fff}
.standings-cat-title{font-family:'Barlow Condensed',sans-serif;font-size:19px;font-weight:900;text-transform:uppercase;color:var(--ink2);padding:0 0 8px;border-bottom:2px solid var(--c1);margin:22px 0 10px}
.group-block{background:var(--white);border:1.5px solid var(--rule);border-radius:14px;padding:13px 14px 4px;margin-bottom:14px}
.group-title{font-family:'Barlow Condensed',sans-serif;font-size:17px;font-weight:900;text-transform:uppercase;color:var(--ink2);padding:0 0 7px;border-bottom:2px solid var(--c1);margin:0 0 9px}
.grp-collapse{border-top:1px solid var(--rule)}
.grp-collapse-head{width:100%;display:flex;align-items:center;justify-content:space-between;background:none;border:none;cursor:pointer;padding:10px 2px;font-size:12px;font-weight:700;color:var(--ink2);font-family:inherit}
.grp-collapse-head:hover{color:var(--c1)}
.grp-arrow{transition:transform .2s;color:var(--ink3);font-size:13px}
.grp-collapse-head.open .grp-arrow{transform:rotate(180deg)}
.grp-collapse-body{padding:2px 0 10px}
/* Desplegable de categoría anidado dentro del día */
.grp-cat-collapse{margin:8px 0;border:1px solid var(--rule);border-radius:10px;overflow:hidden;background:var(--paper,#f6f7f9)}
.grp-cat-head{width:100%;display:flex;align-items:center;gap:10px;background:none;border:none;cursor:pointer;padding:11px 14px;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:16px;text-transform:uppercase;letter-spacing:.5px;color:var(--c1)}
.grp-cat-head:hover{filter:brightness(1.1)}
.grp-cat-head .grp-cat-name{flex:1;text-align:left}
.grp-cat-head .grp-cat-count{background:var(--c1);color:#fff;font-family:var(--mono,monospace);font-size:11px;font-weight:700;padding:2px 9px;border-radius:50px;letter-spacing:0}
.grp-cat-head.open .grp-arrow{transform:rotate(180deg)}
.grp-cat-collapse .grp-collapse-body{padding:4px 12px 12px}
.group-block .standings-table{font-size:12px}
.group-block .standings-table th,.group-block .standings-table td{padding:7px 6px}
.match-cards-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}
@media(max-width:600px){.match-cards-grid{grid-template-columns:1fr}}
.gm-day{font-weight:800;font-size:12.5px;color:var(--ink2);margin:14px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--rule)}
.gm-cat-sep{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:15px;text-transform:uppercase;letter-spacing:.5px;color:var(--c1);margin:16px 0 9px;padding:5px 12px;background:var(--paper,#f6f7f9);border-left:3px solid var(--c1);border-radius:6px}
.gm-cat-sep:first-child{margin-top:4px}
.gm-cat-sep-event{color:var(--ink3);border-left-color:var(--ink4)}
.gm-ref{margin-top:7px;padding-top:6px;border-top:1px dashed var(--rule);font-size:11px;font-weight:700;color:var(--ink3);display:flex;align-items:center;gap:3px}
.gm-card{border:1px solid var(--rule);border-radius:12px;padding:9px 11px;background:var(--white)}
.gm-card.played{border-color:var(--rule2)}
.gm-head{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--ink4);font-weight:700;margin-bottom:8px;text-transform:uppercase;letter-spacing:.4px}
.gm-cat{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gm-court{flex-shrink:0}
.gm-main{display:flex;align-items:center;gap:10px}
.gm-teams{flex:1;display:flex;flex-direction:column;gap:7px;min-width:0}
.gm-trow{display:flex;align-items:center;justify-content:space-between;gap:8px}
.gm-team{display:flex;align-items:center;gap:7px;min-width:0;font-weight:700;font-size:12px;color:var(--ink);line-height:1.2}
.gm-team .team-logo,.gm-team .team-logo-ph{width:20px;height:20px;flex-shrink:0}
.gm-tn{min-width:0}
.gm-trow.gm-hl .gm-tn{color:var(--c1);font-weight:800}
.gm-sc{flex-shrink:0;min-width:26px;text-align:center;font-weight:800;font-size:13px;border-radius:7px;padding:3px 7px}
.gm-sc.win{background:#e8f9ee;color:#16a34a}
.gm-sc.lose{background:#fdecec;color:#dc2626}
.gm-sc.draw{background:#e9edf2;color:#5b6472}
.gm-time{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;line-height:1.12;font-variant-numeric:tabular-nums}
.gm-warm{font-size:10px;font-weight:700;color:#e8731c}
.gm-start{font-size:16px;font-weight:800;color:var(--c1)}
.gm-end{font-size:11px;font-weight:600;color:var(--ink4)}
.gm-special{border-style:dashed;background:repeating-linear-gradient(45deg,var(--paper),var(--paper) 7px,var(--white) 7px,var(--white) 14px)}
.gm-special-body{flex:1;display:flex;align-items:center;gap:9px;min-height:40px;min-width:0}
.gm-special-ic{font-size:18px;flex-shrink:0}
.gm-special-label{font-weight:800;font-size:11.5px;color:var(--ink2);text-transform:uppercase;letter-spacing:.4px;line-height:1.2}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-top:4px}
.cat-card{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;padding:16px 18px;border:1px solid var(--rule);border-radius:14px;background:var(--white);cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.cat-card:hover{border-color:var(--c1);box-shadow:0 5px 16px rgba(0,0,0,.09);transform:translateY(-2px)}
.cat-card-name{font-weight:900;font-size:18px;color:var(--ink)}
.cat-card-meta{font-size:11px;color:var(--ink4);font-weight:600}
.cat-card-go{margin-top:5px;font-size:12px;font-weight:700;color:var(--c1)}
.cl-back{margin:0 0 14px;padding:8px 14px;border:1px solid var(--rule);border-radius:10px;background:var(--white);font-weight:700;font-size:13px;color:var(--ink2);cursor:pointer}
.cl-back:hover{border-color:var(--c1);color:var(--c1)}
.cl-cat-title{font-weight:900;font-size:23px;color:var(--ink);margin-bottom:12px}
.table-wrap{overflow-x:auto;border-radius:14px;border:1.5px solid var(--rule);margin-bottom:16px;background:var(--white);box-shadow:0 2px 10px rgba(0,0,0,.03)}
.standings-table{width:100%;border-collapse:collapse;font-size:13px}
.standings-table th{background:#f9fafb;color:var(--ink3);font-size:10px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;padding:10px 8px;border-bottom:1.5px solid var(--rule);text-align:center;white-space:nowrap}
.standings-table td{padding:10px 8px;border-bottom:1px solid var(--rule);text-align:center;vertical-align:middle}
.standings-table tr:last-child td{border-bottom:none}
.standings-table tr:first-child td{background:color-mix(in srgb,var(--c1) 8%,#fff)}
.standings-table .left{text-align:left}
.standings-table .bold{font-weight:700}
.standings-table .pts{font-weight:900;color:var(--c1);font-size:14px}
.standings-table .team-logo,.standings-table .team-logo-ph{width:24px;height:24px;vertical-align:middle;margin-right:7px}

/* Pro wall */
.pro-wall{text-align:center;padding:48px 24px;background:var(--white);border-radius:18px;border:2px dashed #d8dee8}
.pro-wall-icon{font-size:44px;margin-bottom:12px}
.pro-wall-title{font-family:'Barlow Condensed',sans-serif;font-size:24px;font-weight:900;text-transform:uppercase;margin-bottom:8px}
.pro-wall-desc{font-size:14px;color:var(--ink2);line-height:1.7;max-width:320px;margin:0 auto}
.score-lock{font-size:16px}
.score-locked-bar{font-size:11px;color:var(--ink3);padding:4px 14px 8px;font-style:italic}

/* ── Calendario ──────────────────────────────────────── */
.schedule-search{display:flex;gap:8px;margin-bottom:16px}
.schedule-search input{flex:1;padding:12px 16px;border:1.5px solid var(--rule);border-radius:12px;font-size:14px;font-family:'DM Sans',sans-serif;background:var(--white)}
.schedule-search input:focus{border-color:var(--c1);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--c1) 18%,transparent)}
.schedule-search button{padding:12px 22px;background:var(--c1);color:#fff;border:none;border-radius:12px;font-weight:700;cursor:pointer;font-size:14px}
.day-block{margin-bottom:14px}
.day-header{display:flex;align-items:center;justify-content:space-between;padding:13px 18px;background:var(--white);border-radius:13px;border:1.5px solid var(--rule);cursor:pointer;margin-bottom:8px;transition:border-color .15s}
.day-header:hover{border-color:var(--c1)}
.day-title{font-family:'Barlow Condensed',sans-serif;font-size:18px;font-weight:900;text-transform:uppercase;color:var(--ink2)}
.day-chevron{font-size:14px;color:var(--ink3)}

/* Noticias */
.news-form{background:var(--white);border-radius:14px;padding:16px;margin-bottom:14px;border:1.5px solid var(--rule)}
.news-form-title{font-weight:700;font-size:13px;margin-bottom:9px}
.news-form input,.news-form textarea{width:100%;padding:9px 12px;border:1.5px solid var(--rule);border-radius:8px;font-family:'DM Sans',sans-serif;font-size:13px;margin-bottom:7px;resize:vertical}
.news-form button{background:var(--c1);color:#fff;border:none;border-radius:8px;padding:10px;font-weight:700;cursor:pointer;width:100%}
.news-card{background:var(--white);border-radius:14px;padding:15px;margin-bottom:9px;border:1.5px solid var(--rule);position:relative}
.news-del{position:absolute;top:10px;right:10px;background:none;border:none;cursor:pointer;color:var(--ink3);font-size:15px}
.news-title{font-weight:700;font-size:14px;margin-bottom:4px;padding-right:22px}
.news-body{font-size:13px;color:var(--ink2);line-height:1.5;margin-bottom:5px}
.news-date{font-size:10px;color:var(--ink3);font-family:'JetBrains Mono',monospace}

/* Login */
.login-wrap{display:flex;align-items:center;justify-content:center;min-height:46vh}
.login-card{background:var(--white);border-radius:20px;padding:30px;max-width:330px;width:100%;border:1.5px solid var(--rule);box-shadow:0 10px 36px rgba(0,0,0,.08);text-align:center}
.login-icon{font-size:38px;margin-bottom:10px}
.login-title{font-family:'Barlow Condensed',sans-serif;font-size:23px;font-weight:900;text-transform:uppercase;margin-bottom:6px}
.login-sub{font-size:12px;color:var(--ink3);margin-bottom:18px;line-height:1.5}
.login-card input{width:100%;padding:11px 14px;border:1.5px solid var(--rule);border-radius:10px;font-family:'DM Sans',sans-serif;font-size:14px;margin-bottom:9px;text-align:left}
.login-card input:focus{border-color:var(--c1);outline:none}
.login-card button{background:linear-gradient(135deg,#6fd996,#22c55e);color:#fff;border:none;border-radius:10px;padding:13px;font-size:14px;font-weight:700;cursor:pointer;width:100%}

/* Admin home */
.admin-home{max-width:460px;margin:0 auto}
.admin-home-title{font-family:'Barlow Condensed',sans-serif;font-size:25px;font-weight:900;text-transform:uppercase;margin-bottom:8px}
.admin-home-desc{font-size:13px;color:var(--ink2);line-height:1.6;margin-bottom:14px}
.admin-rules{background:var(--white);border-radius:12px;padding:13px;border:1.5px solid var(--rule);margin-bottom:14px;display:flex;flex-direction:column;gap:8px}
.rule-item{font-size:13px;font-weight:600}
.rule-item.ok{color:var(--green)}
.rule-item.no{color:var(--ink3)}
.btn-go-schedule{background:linear-gradient(135deg,#6fd996,#22c55e);color:#fff;border:none;border-radius:10px;padding:13px;font-size:14px;font-weight:700;cursor:pointer;width:100%}

/* Patrocinadores */
.sponsors-bar{margin:32px auto 0;padding:24px 16px;background:var(--white);border-radius:16px;border:1.5px solid var(--rule);max-width:760px;width:100%}
.sponsors-label{font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--ink3);font-family:'JetBrains Mono',monospace;margin-bottom:16px;text-align:center}
.sponsors-logos{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:center}
.sponsor-item{display:flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:12px;border:1.5px solid var(--rule);background:#fafbfc;transition:all .15s;min-width:72px;text-decoration:none}
.sponsor-item:hover{border-color:var(--c1);background:color-mix(in srgb,var(--c1) 6%,#fff);transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,.07)}
.sponsor-logo{height:44px;max-width:110px;object-fit:contain}
.sponsor-name-only{font-size:13px;font-weight:700;color:var(--ink2)}

/* Empty */
.empty{text-align:center;padding:48px 20px;color:var(--ink3);font-size:14px;line-height:1.7}

/* Móvil: nav se mantiene arriba con scroll horizontal */
@media (max-width:520px){
  .hero{height:clamp(160px,42vw,220px)}
  .hero-content{padding:0 14px 12px;gap:10px}
  .hero-logo{width:46px;height:46px;border-radius:10px}
  .nav-btn{padding:9px 13px;font-size:11px}
  .nav-btn span:last-child{display:none}
  .nav-icon{font-size:19px}
  .info-stat-n{font-size:30px}
}

/* ── Fase final / Bracket (app pública) ── */
.bv-wrap{max-width:1000px;margin:0 auto}
.bv-head{margin-bottom:20px}
.bv-title{font-size:24px;font-weight:800;color:var(--ink);letter-spacing:-.3px}
.bv-sub{font-size:13px;color:var(--ink3);margin-top:3px}
/* Carrusel de rondas: una ronda ocupa toda la anchura (móvil y escritorio
   por igual) y se pasa a la siguiente deslizando o con los botones ‹ ›
   del paginador — antes todas las rondas se amontonaban diminutas en una
   fila y había que hacer zoom para leer los equipos. */
/* Envoltorio que recorta la altura del carrusel a la ronda que se está
   viendo (ver _bvSyncViewportHeight) — sin JS se queda en altura
   automática (como si no existiera), así que nunca rompe nada. */
.bv-viewport{overflow:hidden;width:100%;box-sizing:border-box;transition:height .25s ease}
/* Sin padding lateral (antes 2px a cada lado): esos 2px hacían que el
   ancho "de contenido" de .bv-scroll (donde se apoya cada ronda al
   100%) no coincidiera exacto con el ancho visible de la pantalla,
   dejando asomar un pelín de la siguiente ronda por el borde derecho
   en vez de quedar completamente oculta hasta deslizar. */
.bv-scroll{overflow-x:auto;padding:6px 0 20px;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}
/* align-items:flex-start (no stretch): si no, todas las rondas se estiran a
   la altura de la ronda con más partidos, y en la Final (1 solo partido) el
   "center" de .bv-col-body deja un hueco enorme antes y después en vez de
   que la columna mida lo que ocupa su contenido. */
/* Sin min-width:min-content (el equivalente .bkt del admin tampoco lo
   lleva): forzar aquí un ancho mínimo hacía que algunos móviles en
   vertical calculasen el ancho de esta fila a partir de la suma del
   contenido de TODAS las rondas en vez de una ronda = una pantalla,
   rompiendo el encaje del carrusel (tarjeta cortada por la derecha, ronda
   no centrada) aunque en horizontal/escritorio, con más ancho de sobra, no
   se notara. */
.bv{display:flex;align-items:flex-start}
.bv-col{display:flex;flex-direction:column;min-width:100%;width:100%;flex:0 0 100%;box-sizing:border-box;scroll-snap-align:start}
.bv-col-head{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--c1);text-align:center;margin-bottom:10px;padding-bottom:8px;border-bottom:2px solid color-mix(in srgb,var(--c1) 15%,transparent)}
/* center (no space-around): con menos partidos en la ronda esto los
   mantiene agrupados con un hueco fijo, en vez de estirarse con huecos
   enormes para igualar la altura de la ronda con más partidos. */
.bv-col-body{display:flex;flex-direction:column;justify-content:center;flex:1;gap:16px}
.bv-cell{display:flex;flex-direction:column;justify-content:center;flex:1 0 auto;position:relative;padding:7px 0}
.bv-goals{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px;padding:0 8px;justify-content:center}
.bv-goal{font-size:10px;font-weight:600;color:#64748b;background:#eef2f7;border-radius:6px;padding:2px 7px}
/* Ancho cómodo y centrado — si no, al ocupar la ronda toda la pantalla en
   escritorio, la tarjeta del partido se estiraría de borde a borde. Mismo
   ancho en TODAS las rondas (antes solo/duo tenían un ancho distinto al
   resto), igual que la tarjeta de 3er/4º puesto (.bv-third, también 460px). */
.bv-match{position:relative;border:1.5px solid var(--rule);border-radius:12px;overflow:hidden;background:var(--white);box-shadow:0 1px 3px rgba(17,24,39,.06);margin:0 auto;max-width:460px;width:100%}
.bv-team{display:flex;align-items:center;justify-content:space-between;padding:10px 13px;gap:8px;border-bottom:1px solid var(--rule);min-height:40px}
.bv-team .team-logo,.bv-team .team-logo-ph{width:26px;height:26px;flex-shrink:0}
.bv-team:last-child{border-bottom:none}
.bv-name{flex:1;font-size:13.5px;font-weight:600;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bv-team.ph .bv-name{color:var(--ink3);font-weight:500;font-style:italic}
.bv-when{font-size:10px;font-weight:700;color:#6b7280;text-align:center;margin:0 16px 5px;letter-spacing:.2px}
.bv-ref{font-size:10px;font-weight:700;color:#6b7280;text-align:center;margin:5px 16px 0;padding-top:5px;border-top:1px dashed var(--rule)}
.bv-third-title{font-size:12px;font-weight:800;color:var(--ink2);margin-bottom:8px;text-align:center}
/* Ancla dura con !important: el partido de la Final y el de 3er/4º van en
   la misma página del carrusel (la última ronda) y deben medir
   EXACTAMENTE igual, pero se seguían viendo distintos pese a que ambos
   tenían max-width:460px en reglas separadas -- para eliminar cualquier
   ambigüedad de cascada se fuerza aquí el mismo valor en las dos, sin
   dejar sitio a que ninguna otra regla los desajuste. */
.bv-col:last-child .bv-col-body .bv-match{max-width:460px !important;width:100% !important;margin:0 auto !important}
.bv-third{margin:14px auto 0;border-top:1px dashed var(--rule);padding-top:12px;box-sizing:border-box;max-width:460px !important;width:100% !important}
.bv-third .bv-match{max-width:460px !important;width:100% !important;margin:0 auto !important}
.bv-de-title{font-size:13px;font-weight:800;color:var(--ink);margin:16px 16px 6px}
.bv-extras{margin:10px 16px 4px;display:flex;flex-direction:column;gap:6px}
.bv-extra-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff8e1;border:1px dashed #f0c14b;border-radius:9px;padding:8px 12px}
.bv-extra-when{font-size:11px;font-weight:700;color:#92722a;font-family:'JetBrains Mono',monospace}
.bv-extra-label{font-size:12px;font-weight:800;color:#7a5e1a}
.fb-fab{position:fixed;right:16px;bottom:16px;width:44px;height:44px;border-radius:50%;border:none;background:var(--c1);color:#fff;font-size:21px;font-weight:800;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.22);z-index:900}
.fb-overlay{position:fixed;inset:0;background:rgba(15,23,42,.55);display:none;align-items:center;justify-content:center;z-index:950;padding:16px}
.fb-card{background:#fff;border-radius:16px;max-width:420px;width:100%;padding:20px;position:relative;box-shadow:0 20px 60px rgba(0,0,0,.3);max-height:90vh;overflow:auto}
.fb-x{position:absolute;top:10px;right:14px;border:none;background:none;font-size:24px;color:#9ca3af;cursor:pointer;line-height:1}
.fb-title{font-size:18px;font-weight:800;color:var(--ink);margin-bottom:4px}
.fb-sub{font-size:13px;color:var(--ink3);margin-bottom:15px;line-height:1.4}
.fb-q{margin-bottom:13px}
.fb-q>span{display:block;font-size:14px;font-weight:600;color:var(--ink2);margin-bottom:7px}
.fb-yn{display:flex;gap:8px}
.fb-opt{flex:1;padding:9px;border:1.5px solid var(--rule);background:#fff;border-radius:9px;font-size:14px;font-weight:700;color:var(--ink2);cursor:pointer}
.fb-opt.active{background:var(--c1);color:#fff;border-color:var(--c1)}
.fb-q-text textarea{width:100%;box-sizing:border-box;padding:10px;border:1.5px solid var(--rule);border-radius:9px;font-size:14px;font-family:inherit;resize:vertical}
.fb-send{width:100%;padding:12px;border:none;border-radius:10px;background:var(--c1);color:#fff;font-size:15px;font-weight:800;cursor:pointer;margin-top:6px}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--c1);outline-offset:2px;border-radius:6px}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.001ms !important;transition-duration:.001ms !important;scroll-behavior:auto !important}}
.sched-cat-filter{display:flex;flex-wrap:wrap;gap:6px;margin:0 16px 10px}
.scf{padding:6px 13px;border:1.5px solid var(--rule);background:#fff;color:var(--ink2);border-radius:999px;font-size:12px;font-weight:700;cursor:pointer}
.scf.active{background:var(--c1);color:#fff;border-color:var(--c1)}
.team-sel-cat{font-size:13px;font-weight:800;color:var(--c1);margin:16px 16px 8px;text-transform:uppercase;letter-spacing:.5px}
.team-view-tabs{display:flex;gap:6px;background:var(--white);border:1.5px solid var(--rule);border-radius:12px;padding:4px;margin:0 0 14px}
.tv-tab{flex:1;padding:11px;border:none;border-radius:9px;background:none;cursor:pointer;font-size:14px;font-weight:700;color:var(--ink3);transition:all .15s}
.tv-tab.active{background:var(--c1);color:#fff}
.tg-cat{margin-bottom:10px;border:1.5px solid var(--rule);border-radius:12px;overflow:hidden;background:var(--white)}
.tg-cat-head{width:100%;display:flex;align-items:center;justify-content:space-between;padding:13px 16px;background:none;border:none;cursor:pointer;font-size:15px;font-weight:800;color:var(--c1);text-transform:uppercase;letter-spacing:.5px}
.tg-cat-head .tg-arrow{transition:transform .2s;color:var(--ink3)}
.tg-cat-head.open .tg-arrow{transform:rotate(180deg)}
.tg-cat-body{padding:4px 14px 14px}
.tg-group-label{font-size:12px;font-weight:800;color:var(--ink3);text-transform:uppercase;letter-spacing:.5px;margin:12px 2px 8px}
.team-also{margin:8px 16px 0;font-size:12px;color:var(--ink3);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.team-also-chip{padding:4px 11px;border:1.5px solid var(--rule);background:#fff;color:var(--c1);border-radius:999px;font-size:12px;font-weight:700;cursor:pointer}
.detail-day-label{font-size:12px;font-weight:800;color:var(--c1);text-transform:uppercase;letter-spacing:.4px;margin:14px 0 7px;padding-left:2px}
.bv-score{font-weight:800;font-size:14px;color:var(--ink3);min-width:18px;text-align:center}
.bv-team.won{background:linear-gradient(90deg,color-mix(in srgb,var(--c1) 16%,transparent),color-mix(in srgb,var(--c1) 4%,transparent))}
.bv-team.won .bv-name{color:var(--ink);font-weight:800}
.bv-team.won .bv-score{color:var(--c1)}
.bv-col:last-child .bv-match{border-color:color-mix(in srgb,#d4af37 55%,transparent);box-shadow:0 2px 14px rgba(212,175,55,.18)}
.bv-col:last-child .bv-col-head{color:#b8860b;border-bottom-color:rgba(212,175,55,.3)}
.bv-champion{display:flex;align-items:center;gap:14px;margin:8px auto 0;max-width:340px;padding:16px 20px;background:linear-gradient(135deg,#fff8e1,#fffdf5);border:1.5px solid rgba(212,175,55,.4);border-radius:14px;box-shadow:0 4px 18px rgba(212,175,55,.15)}
.bv-champion-ico{font-size:34px;line-height:1}
.bv-champion-lbl{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:#b8860b}
.bv-champion-name{font-size:19px;font-weight:800;color:var(--ink);margin-top:2px}
/* ── Paginador del carrusel de rondas (‹ Ronda X/N ›) ── */
/* margin-top en positivo (antes -8px): con margen negativo el paginador se
   subía y quedaba pisando el borde inferior de la última tarjeta de la
   ronda -- según la altura exacta que calculaba el ajuste de .bv-viewport,
   se le podían tapar los botones ‹ › casi enteros y solo asomaban un par
   de gajos de círculo sin ninguna tarjeta ni número al lado, con pinta de
   resto suelto en vez de un control de navegación reconocible. */
.bv-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin:14px 0 20px}
.bv-pg-btn{width:32px;height:32px;flex-shrink:0;border:1.5px solid var(--rule);border-radius:50%;background:#fff;color:var(--ink2);font-size:17px;font-weight:800;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.bv-pg-btn:hover{background:var(--c1);border-color:var(--c1);color:#fff}
.bv-pg-dots{display:flex;align-items:center;gap:6px}
.bv-pg-dot{width:7px;height:7px;border-radius:50%;background:var(--rule);transition:all .15s}
.bv-pg-dot.active{background:var(--c1);width:18px;border-radius:4px}
@media(max-width:640px){.bv-name{font-size:13px}}
