/* =====================================================================
   SISTEMA DE TORNEOS DE BALONCESTO — basket.janickec.com
   Diseño tipo NBA/FIBA · Tema oscuro y claro · Responsive
   ===================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Archivo:ital,wght@0,500;0,700;0,800;0,900;1,800&family=Barlow+Condensed:wght@600;700;800&display=swap');

:root {
  --naranja: #ff6b1a;          /* naranja balón */
  --naranja-osc: #d9550e;
  --azul-cancha: #1d428a;      /* azul FIBA */
  --amarillo: #ffc72c;
}

/* ---------- Tema oscuro (default) ---------- */
[data-bs-theme="dark"] {
  --fondo: #0c0f16;
  --fondo-2: #141926;
  --fondo-3: #1c2335;
  --linea: rgba(255,255,255,.08);
  --texto: #eef1f7;
  --bs-body-bg: var(--fondo);
  --bs-body-color: var(--texto);
}
/* ---------- Tema claro ---------- */
[data-bs-theme="light"] {
  --fondo: #f4f5f8;
  --fondo-2: #ffffff;
  --fondo-3: #eceef3;
  --linea: rgba(10,15,30,.1);
  --texto: #131722;
  --bs-body-bg: var(--fondo);
  --bs-body-color: var(--texto);
}

body { font-family: 'Archivo', system-ui, sans-serif; background: var(--fondo); }
.ls-wide { letter-spacing: .08em; }
.font-marcador { font-family: 'Barlow Condensed', sans-serif; }

a { color: var(--naranja); }
a:hover { color: var(--naranja-osc); }

.card { background: var(--fondo-2); border: 1px solid var(--linea); border-radius: 14px; }
.table { --bs-table-bg: transparent; }
.btn-naranja {
  background: var(--naranja); color: #fff; border: none;
  border-radius: 8px; transition: .15s;
}
.btn-naranja:hover { background: var(--naranja-osc); color: #fff; transform: translateY(-1px); }

.badge-estado-programado { background: var(--azul-cancha); }
.badge-estado-en_juego   { background: #d92626; animation: pulso 1.4s infinite; }
.badge-estado-finalizado { background: #2e7d32; }
.badge-estado-suspendido { background: #757575; }
@keyframes pulso { 50% { opacity: .55; } }

/* =====================================================================
   LOGIN
   ===================================================================== */
.login-bg {
  background:
    radial-gradient(circle at 80% 10%, rgba(255,107,26,.18), transparent 45%),
    radial-gradient(circle at 10% 90%, rgba(29,66,138,.3), transparent 45%),
    var(--fondo);
}
.login-ball {
  width: 70px; height: 70px; margin: auto; border-radius: 50%;
  background: linear-gradient(145deg, var(--naranja), var(--naranja-osc));
  display: flex; align-items: center; justify-content: center;
  font-size: 2rem; color: #fff; box-shadow: 0 10px 35px rgba(255,107,26,.4);
}

/* =====================================================================
   PANEL ADMINISTRATIVO
   ===================================================================== */
.admin-body { min-height: 100vh; }
.sidebar {
  width: 250px; min-height: 100vh; background: var(--fondo-2);
  border-right: 1px solid var(--linea); position: sticky; top: 0;
  height: 100vh; overflow-y: auto;
}
.sidebar .nav-link { color: var(--bs-body-color); border-radius: 9px; font-size: .92rem; }
.sidebar .nav-link:hover { background: var(--fondo-3); }
.sidebar .nav-link.active { background: var(--naranja); color: #fff; }
.sidebar-ball {
  width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0;
  background: var(--naranja); color: #fff; display: inline-flex;
  align-items: center; justify-content: center; font-size: 1.1rem;
}
.sidebar-title { color: var(--bs-body-color); font-size: .8rem; }
.admin-topbar { background: var(--fondo-2); border-bottom: 1px solid var(--linea); position: sticky; top: 0; z-index: 50; }
.admin-main { min-width: 0; }

@media (max-width: 991px) {
  .sidebar { position: fixed; left: -260px; z-index: 1040; transition: left .25s; }
  .sidebar.show { left: 0; box-shadow: 0 0 60px rgba(0,0,0,.5); }
}

/* Tarjetas de estadísticas del dashboard */
.stat-card { position: relative; overflow: hidden; }
.stat-card .stat-icon {
  position: absolute; right: -8px; bottom: -14px; font-size: 4.5rem; opacity: .12;
}
.stat-card .stat-num { font-family: 'Barlow Condensed'; font-size: 2.4rem; font-weight: 800; line-height: 1; }

/* =====================================================================
   SITIO PÚBLICO
   ===================================================================== */
.navbar-publico {
  background: var(--fondo-2); border-bottom: 3px solid var(--naranja);
}
.navbar-publico .nav-link { font-weight: 600; text-transform: uppercase; font-size: .82rem; letter-spacing: .05em; }
.navbar-publico .nav-link.active { color: var(--naranja) !important; }

/* HERO tipo NBA: franja diagonal */
.hero {
  position: relative;
  background:
    linear-gradient(115deg, var(--fondo) 38%, transparent 70%),
    radial-gradient(circle at 75% 30%, rgba(255,107,26,.35), transparent 55%),
    linear-gradient(180deg, #10162a, #0c0f16);
  border-bottom: 1px solid var(--linea);
  padding: 4.5rem 0;
  overflow: hidden;
}
[data-bs-theme="light"] .hero {
  background:
    linear-gradient(115deg, #ffffff 38%, transparent 70%),
    radial-gradient(circle at 75% 30%, rgba(255,107,26,.25), transparent 55%),
    linear-gradient(180deg, #e9ecf5, #f4f5f8);
}
.hero h1 {
  font-family: 'Barlow Condensed'; font-weight: 800; text-transform: uppercase;
  font-size: clamp(2.4rem, 6vw, 4.5rem); line-height: .95;
}
.hero .acento { color: var(--naranja); }
.hero-banner-img { max-height: 320px; object-fit: cover; border-radius: 16px; width: 100%; }

/* Marcadores estilo NBA */
.score-card { transition: .15s; }
.score-card:hover { transform: translateY(-3px); border-color: var(--naranja); }
.score-team { display: flex; align-items: center; gap: .6rem; }
.score-team img, .logo-mini { width: 34px; height: 34px; object-fit: contain; }
.score-pts { font-family: 'Barlow Condensed'; font-size: 1.7rem; font-weight: 800; }
.score-pts.ganador { color: var(--naranja); }

/* Tabla de posiciones */
.tabla-pos th { text-transform: uppercase; font-size: .72rem; letter-spacing: .06em; color: #8b93a7; }
.tabla-pos .pos-num {
  width: 26px; height: 26px; border-radius: 6px; display: inline-flex;
  align-items: center; justify-content: center; font-weight: 700; font-size: .8rem;
  background: var(--fondo-3);
}
.tabla-pos tr.clasifica .pos-num { background: var(--naranja); color: #fff; }

/* Página EN VIVO */
.live-board {
  background: linear-gradient(160deg, #131a2e, #0b0e17);
  border: 1px solid var(--linea); border-radius: 20px;
}
[data-bs-theme="light"] .live-board { background: linear-gradient(160deg, #1d2742, #0f1526); color: #fff; }
.live-score { font-family: 'Barlow Condensed'; font-size: clamp(3.5rem, 12vw, 7rem); font-weight: 800; line-height: 1; }
.live-crono {
  font-family: 'Barlow Condensed'; font-size: 2.2rem; font-weight: 700;
  background: #000; color: #ff4242; border-radius: 10px; padding: .1em .5em;
  display: inline-block; letter-spacing: .08em;
}
.live-dot { width: 10px; height: 10px; border-radius: 50%; background: #ff3b3b; display: inline-block; animation: pulso 1.2s infinite; }
.tabla-cuartos td, .tabla-cuartos th { text-align: center; }

/* Bracket de playoffs */
.bracket { display: flex; gap: 2rem; overflow-x: auto; padding-bottom: 1rem; }
.bracket-ronda { display: flex; flex-direction: column; justify-content: space-around; gap: 1rem; min-width: 230px; }
.bracket-partido { background: var(--fondo-2); border: 1px solid var(--linea); border-radius: 10px; overflow: hidden; }
.bracket-equipo { display: flex; justify-content: space-between; align-items: center; padding: .45rem .7rem; gap: .5rem; }
.bracket-equipo + .bracket-equipo { border-top: 1px solid var(--linea); }
.bracket-equipo.ganador { background: rgba(255,107,26,.14); font-weight: 700; }
.bracket-titulo { text-transform: uppercase; font-size: .72rem; letter-spacing: .1em; color: #8b93a7; text-align: center; }

/* Jugadores / equipos */
.player-card img.player-foto { width: 100%; aspect-ratio: 1/1.05; object-fit: cover; }
.player-num { font-family: 'Barlow Condensed'; font-weight: 800; font-size: 2rem; color: var(--naranja); line-height: 1; }
.team-logo-lg { width: 110px; height: 110px; object-fit: contain; }

/* Galería */
.galeria-item img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 12px; cursor: pointer; transition: .15s; }
.galeria-item img:hover { transform: scale(1.02); }

/* Footer público */
.footer-publico { background: var(--fondo-2); border-top: 3px solid var(--naranja); }

/* Patrocinadores */
.sponsor-logo { max-height: 64px; max-width: 160px; object-fit: contain; filter: grayscale(40%); transition: .2s; }
.sponsor-logo:hover { filter: none; }

/* Utilidades */
.titulo-seccion {
  font-family: 'Barlow Condensed'; font-weight: 800; text-transform: uppercase;
  letter-spacing: .03em; position: relative; padding-left: .8rem;
}
.titulo-seccion::before {
  content: ''; position: absolute; left: 0; top: .12em; bottom: .12em;
  width: 5px; border-radius: 3px; background: var(--naranja);
}
img.logo-fallback { background: var(--fondo-3); border-radius: 6px; padding: 4px; }

@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
}
