/* Player Search composition.

   Covers the reference's dedicated Player Lookup panel and the candidate
   table. The loaded Player Profile below keeps its own stylesheets: the
   supplied reference does not depict that state, so nothing here touches it.

   Requires ds_tokens.css, ds_patterns.css, ds_stats_shared.css. */

/* The lookup panel is the one thing on an empty Player Search page, so the
   reference gives it a heavier frame than a normal engraved panel. */
.ps-panel--emphasis {
  border-width: 2px;
  border-color: rgba(213, 177, 101, 0.5);
}

.plsr-lookup {
  padding: 1.5rem clamp(1.4rem, 3vw, 2.4rem);
}

.plsr-field {
  display: grid;
  gap: 0.5rem;
}

.plsr-field > span {
  color: var(--text-soft);
  font-family: var(--font-body);
  font-size: 0.7rem;
  font-weight: 900;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.plsr-searchgrid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.8rem;
}

.plsr-searchgrid input {
  min-width: 0;
  padding: 0.9rem 1.1rem;
  border: 1px solid rgba(213, 177, 101, 0.4);
  border-radius: 8px;
  background: rgba(5, 8, 18, 0.85);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-size: 1.05rem;
}

.plsr-searchgrid .sov-action {
  justify-content: center;
  min-width: 176px;
}

.plsr-note {
  margin: 0.9rem 0 0;
  color: var(--text-soft);
  font-family: var(--font-body);
  font-size: 0.8rem;
  line-height: 1.4;
}

.plsr-choose {
  padding: 1.1rem 1.4rem 0.3rem;
}

.plsr-choose h2 {
  margin: 0 0 0.9rem;
  color: var(--gold-200);
  font-family: var(--font-title);
  font-size: 1.5rem;
}

/* ---------- candidate rows ---------- */

/* The whole cell is the link: the reference makes the row the target, and the
   existing row click handler stays the keyboard-free fallback. */
.plsr-candidate {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  min-width: 0;
  padding: 0.15rem 0;
  color: inherit;
  text-decoration: none;
}

.plsr-avatar {
  width: 38px;
  height: 38px;
  flex: none;
  border: 1px solid rgba(213, 177, 101, 0.5);
  border-radius: 50%;
  object-fit: cover;
}

.plsr-avatar--placeholder {
  display: grid;
  place-items: center;
  border-style: dashed;
  background: rgba(20, 34, 58, 0.9);
  color: var(--gold-300);
  font-family: var(--font-title);
  font-size: 0.95rem;
}

.plsr-candidate-ident {
  min-width: 0;
}

.plsr-candidate-ident b {
  color: #fff6dd;
  font-family: var(--font-body);
  font-size: 0.95rem;
}

.plsr-candidate-country {
  margin-left: 0.35rem;
  color: var(--text-soft);
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 900;
  letter-spacing: 0.06em;
}

.plsr-candidate-sub {
  margin-left: 0.5rem;
  color: var(--text-soft);
  font-family: var(--font-body);
  font-size: 0.78rem;
}

.plsr-num {
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.plsr-rating {
  color: #fff6dd;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.plsr-rank {
  color: var(--gold-300);
  font-family: var(--font-title);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.plsr-th-num {
  text-align: right;
}

@media (max-width: 560px) {
  .plsr-searchgrid {
    grid-template-columns: minmax(0, 1fr);
  }

  .plsr-searchgrid .sov-action {
    min-width: 0;
  }
}

/* The loaded profile is its own header. The shared Stats hero repeated the
   player's name directly above the profile hero and the Player Lookup panel sat
   between the two, so the whole design-system wrapper is hidden while a profile
   is on screen -- hiding the wrapper rather than its three children also drops
   its own padding, which would otherwise leave a band of empty page above the
   profile hero. The Stats section links stay reachable from the site header's
   Stats menu.

   `has-initial-profile` is set server-side for a profile URL and kept in step by
   player_stats.js. Every state that puts the hero back -- search, reset and
   profile-not-found -- clears it first, so the candidate results panel inside
   this wrapper is never hidden while it has something to show. */
.player-profile-shell.has-initial-profile > .ps-wrap {
  display: none;
}
