body { background-color: #f4f6f9; font-family: 'Segoe UI', sans-serif; }

/* Tarjetas y Contenedores */
.card-grupo { border: none; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); transition: transform 0.2s; overflow: hidden; background: white; height: 100%; }
.card-grupo:hover { transform: translateY(-5px); box-shadow: 0 10px 25px rgba(0,0,0,0.12); }

/* Cabeceras */
.card-header-grupo { background: linear-gradient(135deg, #0f2027, #203a43, #2c5364); color: white; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; padding: 12px 15px; position: relative; }
.tabla-general thead { background: linear-gradient(135deg, #11998e, #38ef7d); color: white; text-transform: uppercase; }

/* Listas y Tablas */
.list-jugador { border: none; border-bottom: 1px solid #f0f0f0; padding: 10px 15px; }
.list-jugador:last-child { border-bottom: none; }
.list-jugador:hover { background-color: #f1f8ff; }

/* Elementos de Billar */
.billiard-ball { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; background-color: #e9ecef; color: #495057; border-radius: 50%; font-weight: bold; font-size: 0.8rem; margin-right: 10px; box-shadow: inset 0 -2px 4px rgba(0,0,0,0.1); border: 1px solid #dee2e6; }
.badge-handicap { background-color: #fff9c4 !important; color: #000 !important; border: 2px solid #fbc02d !important; min-width: 45px; text-align: center; font-size: 0.85rem; font-weight: 900; padding: 4px 0; display: inline-block; border-radius: 6px; box-shadow: inset 0 0 4px rgba(251, 192, 45, 0.2); }

/* Matriz de Resultados */
.table-matrix { border-collapse: collapse; width: 100%; background: white; border: 1px solid #dee2e6; table-layout: fixed; }
.table-matrix th, .table-matrix td { border: 1px solid #dee2e6; text-align: center; vertical-align: middle; padding: 4px; height: 90px; }
.header-cell { background-color: #000; color: white; font-weight: bold; text-transform: uppercase; width: 150px; }
.cell-diagonal { background-color: #000; }
.cell-match { background-color: #fff; font-size: 0.85rem; height: 100%; width: 100%; display: flex; flex-direction: column; justify-content: center; transition: all 0.2s; }
.cell-match.interactive { cursor: pointer; }
.cell-match.interactive:hover { filter: brightness(95%); box-shadow: inset 0 0 10px rgba(0,0,0,0.1); }

/* Estados de Partida */
.bg-winner { background-color: #c3e6cb !important; color: #155724; }
.bg-loser { background-color: #f5c6cb !important; color: #721c24; }
.bg-wo { background-color: #000 !important; color: #fff !important; } /* Nuevo para WO */
.input-win { background-color: #c3e6cb !important; color: #155724 !important; border-color: #badbcc !important; font-weight: 900 !important; }
.input-loss { background-color: #f5c6cb !important; color: #721c24 !important; border-color: #f5c2c7 !important; }

/* Ranking Especial */
tr.clasificado-verde > td { background-color: #d1e7dd !important; color: #0f5132 !important; box-shadow: none !important; }
tr.clasificado-verde { border-left: 5px solid #198754 !important; }
tr.descalificado-wo > td { background-color: #f8d7da !important; color: #842029 !important; opacity: 0.7; }