/* VVHL — salary cap display (2026-10-14), loaded by management.html (the hub's
   roster, trade builder and free agents) and teams.html (club page roster and
   cap tile) and player.html (cap hit in the hero). Data: data/salaries.json / the hub payload's salary view
   (api/salary-lib.php). Kept out of vvhl-espn.css so only these three pages
   change when it does. */

/* hub: cap summary over the roster table */
.es-hub-cap { display: grid; gap: 0.5rem; margin: 0 0 0.9rem; padding: 0.8rem 1rem; border: 1px solid var(--es-line); border-radius: 10px; background: var(--es-card); }
body.es-page.is-navy .es-hub-cap { background: linear-gradient(180deg, #073562, #021d3b); border-color: rgba(127, 190, 255, 0.14); }
.es-hub-cap.is-over { border-color: rgba(215, 38, 61, 0.6); }
.es-hub-cap.is-under { border-color: rgba(214, 140, 30, 0.6); }
.es-hub-cap-nums { display: grid; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr)); gap: 0.6rem; }
.es-hub-cap-nums span { display: block; color: var(--es-muted); font-family: var(--es-font-display); font-size: 0.72rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; }
.es-hub-cap-nums b { font-family: var(--es-font-display); font-size: 1.25rem; font-variant-numeric: tabular-nums; }
.es-sal-bar, .es-hub-cap-bar { position: relative; height: 0.5rem; border-radius: 999px; background: rgba(127, 160, 189, 0.22); }
.es-sal-bar i, .es-hub-cap-bar i { position: absolute; inset: 0 auto 0 0; border-radius: 999px; background: var(--es-teal); }
.is-over .es-sal-bar i, .es-hub-cap.is-over .es-hub-cap-bar i { background: #d7263d; }
.is-under .es-sal-bar i, .es-hub-cap.is-under .es-hub-cap-bar i { background: #d68c1e; }
.es-sal-bar b, .es-hub-cap-bar b { position: absolute; top: -0.2rem; bottom: -0.2rem; width: 2px; margin-left: -1px; background: var(--es-muted); }
.es-hub-cap-state { color: var(--es-teal); font-size: 0.85rem; font-weight: 600; }
.es-hub-cap.is-over .es-hub-cap-state { color: #ff8b9c; }
.es-hub-cap.is-under .es-hub-cap-state { color: #f0b45a; }

/* hub: salary column, trade builder chips and cap impact, free agents note */
.es-hub-sal { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.es-hub-sal.is-default { color: var(--es-muted); font-weight: 500; font-style: italic; }
.es-hub-sal-chip, .es-sal-chip { margin-left: auto; padding: 0.05rem 0.45rem; border-radius: 999px; background: rgba(0, 179, 201, 0.16); color: var(--es-teal); font-size: 0.76rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.es-hub-trade-pick .es-hub-sal-chip { margin-left: 0.4rem; }
.es-hub-trade-cap { display: grid; gap: 0.2rem; margin: 0.7rem 0 0.2rem; }
.es-hub-trade-cap:empty { display: none; }
.es-hub-trade-cap-line { color: var(--es-teal); font-size: 0.88rem; font-variant-numeric: tabular-nums; }
.es-hub-trade-cap-line.is-bad { color: #ff8b9c; font-weight: 600; }
.es-hub-fa-cap { margin: 0 0 0.6rem; color: var(--es-muted); font-size: 0.86rem; }

/* club page: salary column and the cap tile */
.es-team-roster-table td.es-sal-cell { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.es-team-roster-table td.es-sal-cell.is-default { color: var(--es-muted); font-weight: 500; font-style: italic; }
.es-team-tile .es-sal-bar { margin-top: 0.35rem; }
.es-team-tile.is-over .es-team-tile-value { color: #ff8b9c; }
.es-sal-note { margin: 0.6rem 0 0; color: var(--es-muted); font-size: 0.82rem; }
.es-team-tile-cap { font-size: 0.78rem; color: var(--es-ink-soft); font-variant-numeric: tabular-nums; }

/* player page: cap hit beside number / position / club */
.es-player-salary { color: var(--es-teal); font-weight: 700; font-variant-numeric: tabular-nums; }
.es-player-salary.is-default { color: var(--es-muted); font-weight: 500; font-style: italic; }
