/* The player tables (/players, /goalies), the player page and the compare page (PlayersController,
   PlayerController). Built on dense.css; colors are main.css tokens. */

.pl-filters { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin: 10px 0 4px; font-size: 12px; color: var(--muted); }
.pl-filters label { display: inline-flex; align-items: center; gap: 4px; }
.pl-filters select, .pl-filters input, .pl-actions button, .cmp-add input, .cmp-add button {
    font: inherit; font-size: 12px; color: var(--fg); background: var(--bg); border: 1px solid var(--rule-strong);
    border-radius: 3px; padding: 2px 4px; }
.pl-filters .pl-min { width: 5em; }
.pl-tabs { display: flex; flex-wrap: wrap; gap: 0 14px; margin: 8px 0 4px; font-size: 12px; }
.pl-tabs a { padding: 2px 0; color: var(--link); }
.pl-tabs a.cur { color: var(--fg-strong); font-weight: 700; border-bottom: 2px solid var(--fg-strong); }

/* The wide table: the checkbox, rank, name and team stay put while the stats scroll */
.dense-table.players { width: auto; min-width: 100%; }
.dense-table.players thead th a { color: inherit; }
.dense-table.players thead th.cur { color: var(--fg-strong); }
.dense-table.players .ck, .dense-table.players .rk, .dense-table.players .nm { position: sticky; background: var(--bg); z-index: 1; }
/* Exact widths, so each sticky cell's natural place is its sticky offset */
.dense-table.players .ck, .dense-table.players .rk { box-sizing: border-box; }
.dense-table.players .ck { left: 0; width: 18px; min-width: 18px; max-width: 18px; padding-left: 0; padding-right: 0; text-align: center; }
.dense-table.players .ck input { margin: 0; vertical-align: -2px; }
.dense-table.players .rk { left: 18px; width: 36px; min-width: 36px; max-width: 36px; color: var(--muted); }
.dense-table.players .nm { left: 54px; max-width: 170px; overflow: hidden; text-overflow: ellipsis; font-weight: 500; }
.dense-table.players .nm a { color: var(--fg); }
.dense-table.players .tms a { color: var(--fg); }
.dense-table.players .tms a + a::before { content: "/"; color: var(--muted); }
.dense-table.players .ps, .dense-table.players .ag { color: var(--muted); }

/* Every other row faintly shaded, so a row reads across; heat cells keep their color, hover stays stronger */
:is(.dense-table.players, .dense-mini.cmp) tbody tr:nth-child(even):not(.sect) > :not(.hc) { background-color: var(--stripe); }
:is(.dense-table.players, .dense-mini.cmp) tbody tr:hover > :not(.hc) { background-color: var(--band-strong); }

.pl-actions { display: flex; gap: 10px; align-items: center; margin: 8px 0 0; }
.pl-actions button { cursor: pointer; color: var(--link); padding: 3px 10px; }
.pl-actions .cols-toggle { margin: 0; }
.pl-pager { display: flex; gap: 10px; margin: 8px 0; font-size: 12px; }

/* Player page */
.pl-groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 0 24px; align-items: start; }
.pl-groups .pct-table { margin-top: 10px; }
.pl-bio { color: var(--muted); margin: 4px 0 0; }
.pl-bio b { color: var(--fg); font-weight: 600; }
.pct-table th.l { font-weight: 400; color: var(--fg); }
.pct-table td.pc { color: var(--muted); }
.pl-chart { width: 100%; max-width: 900px; height: auto; display: block; }
.pl-chart .ax { stroke: var(--rule-strong); stroke-width: 1; }
.pl-chart .mid { stroke: var(--rule-strong); stroke-dasharray: 3 3; }
.pl-chart .s1 { fill: none; stroke: var(--link); stroke-width: 2; }
.pl-chart .s2 { fill: none; stroke: var(--warn-ink); stroke-width: 2; }
.pl-chart text { fill: var(--muted); font-size: 10px; }
.pl-legend { font-size: 11px; color: var(--muted); }
.pl-legend i { display: inline-block; width: 14px; height: 2px; vertical-align: 3px; margin: 0 4px 0 10px; }
.pl-legend .s1 { background: var(--link); }
.pl-legend .s2 { background: var(--warn-ink); }

/* Compare page */
.cmp-add { position: relative; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 10px 0; font-size: 12px; }
/* Name suggestions under the field (compare-search.js) */
.cmp-suggest { position: absolute; top: 100%; left: 0; z-index: 5; min-width: 24em; margin-top: 2px; background: var(--bg);
    border: 1px solid var(--rule-strong); border-radius: 3px; }
.cmp-suggest ul { list-style: none; margin: 0; padding: 2px 0; }
.cmp-suggest a { display: block; padding: 3px 8px; color: var(--fg); }
.cmp-suggest a.on, .cmp-suggest a:hover { background: var(--band); text-decoration: none; }
.cmp-suggest .cmp-none { margin: 0; padding: 4px 8px; color: var(--muted); }
.cmp-add input[type=search] { width: 16em; }
.cmp-add button { cursor: pointer; color: var(--link); }
.cmp-matches { font-size: 12px; margin: 0 0 8px; }
.cmp-matches a + a { margin-left: 10px; }
.dense-mini.cmp { table-layout: auto; width: auto; min-width: 0; }
.dense-mini.cmp td, .dense-mini.cmp thead th { min-width: 130px; }
.dense-mini.cmp th.l { font-weight: 400; }
.dense-mini.cmp thead th { color: var(--fg); font-size: 12px; }
.dense-mini.cmp thead .rm { font-weight: 400; font-size: 11px; }

@media (max-width: 640px) {
    .dense-table.players .nm { max-width: 120px; }
    .pl-filters { gap: 6px 10px; }
}
