/*
 * Footy Classics — 2026 FIFA World Cup theme.
 * Palette drawn from the official FIFA World Cup 26 brand identity:
 * black + white as the base, gold as the accent, and the three host
 * nations (Canada red, Mexico green, USA blue) as secondary highlights.
 */

:root {
  --wc-black:        #0A0A0A;
  --wc-charcoal:     #1A1A1A;
  --wc-graphite:     #2A2A2A;
  --wc-white:        #FFFFFF;
  --wc-bone:         #F4F1EA;
  --wc-gold:         #C9A227;
  --wc-gold-bright:  #E8C547;
  --wc-gold-dark:    #8C6E10;

  /* Host nation accents. */
  --wc-can-red:      #E31B23;
  --wc-mex-green:    #006847;
  --wc-usa-blue:     #002868;

  --wc-text:         var(--wc-white);
  --wc-text-muted:   #B8B8B8;
  --wc-border:       rgba(255, 255, 255, 0.08);

  --font-display: 'Bebas Neue', 'Impact', sans-serif;
  --font-body:    'Noto Sans', system-ui, -apple-system, sans-serif;
}

/* ============ Base ============ */
html, body {
  background-color: var(--wc-black);
  color: var(--wc-text);
  font-family: var(--font-body);
  font-weight: 400;
  margin: 0;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, .display {
  font-family: var(--font-display);
  letter-spacing: 0.02em;
  font-weight: 400;
  line-height: 1;
}

a { color: inherit; }
a:hover { color: var(--wc-gold-bright); }

/* The official background motif: a repeating "26" pattern.
 * Implemented with an inline SVG data-uri so it ships with the page. */
.wc-pattern {
  background-color: var(--wc-black);
  background-image:
    radial-gradient(ellipse at top, rgba(201, 162, 39, 0.08) 0%, transparent 55%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240'%3E%3Cg fill='none' stroke='%23C9A227' stroke-width='1' stroke-opacity='0.07'%3E%3Ctext x='20' y='80' font-family='Impact,sans-serif' font-size='90' font-weight='900'%3E26%3C/text%3E%3Ctext x='130' y='200' font-family='Impact,sans-serif' font-size='90' font-weight='900'%3E26%3C/text%3E%3C/g%3E%3C/svg%3E");
  background-size: auto, 240px 240px;
  background-position: top center, 0 0;
}

/* ============ Nav ============ */
:root {
  --wc-nav-height: 64px;
  --wc-ticker-height: 44px;
}
.wc-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 2.5rem;
  height: var(--wc-nav-height);
  background: linear-gradient(180deg, rgba(10,10,10,0.95) 0%, rgba(10,10,10,0.7) 100%);
  border-bottom: 1px solid var(--wc-border);
  backdrop-filter: blur(8px);
}
.wc-brand {
  font-family: var(--font-display);
  font-size: 1.6rem;
  letter-spacing: 0.08em;
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
.wc-brand-mark {
  display: inline-block;
  background: var(--wc-gold);
  color: var(--wc-black);
  font-family: var(--font-display);
  padding: 0.05rem 0.55rem;
  border-radius: 4px;
  font-size: 1.3rem;
  letter-spacing: 0;
}
.wc-brand-tld {
  color: var(--wc-text-muted);
  font-weight: 400;
}
.wc-nav-links {
  display: flex;
  align-items: center;
  gap: 2.25rem;       /* between groups */
  font-family: var(--font-display);
  letter-spacing: 0.12em;
  font-size: 1.05rem;
  text-transform: uppercase;
  list-style: none;
  padding: 0;
  margin: 0;
}
.wc-nav-links a {
  position: relative;
  padding: 0.25rem 0;
  transition: color 0.2s;
}
.wc-nav-links a::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -4px;
  height: 2px;
  background: var(--wc-gold);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.25s ease;
}
.wc-nav-links a:hover::after { transform: scaleX(1); }

/* Live vote tally pill in the nav. The dot pulses to signal "live data". */
.wc-nav-tally a {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.3rem 0.7rem 0.3rem 0.55rem;
  border: 1px solid var(--wc-gold);
  background: rgba(201, 162, 39, 0.08);
  font-family: var(--font-display);
  letter-spacing: 0.1em;
  color: var(--wc-gold-bright) !important;
  font-size: 0.95rem;
  text-transform: uppercase;
}
.wc-nav-tally a::after { display: none; }
.wc-nav-tally a:hover { background: rgba(201, 162, 39, 0.2); }
.wc-nav-tally .dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--wc-gold-bright);
  box-shadow: 0 0 8px rgba(232, 197, 71, 0.7);
  animation: wc-tally-pulse 2s ease-in-out infinite;
}
.wc-nav-tally .count {
  color: var(--wc-white);
  font-size: 1.05rem;
  letter-spacing: 0.04em;
  min-width: 1.5ch;
  display: inline-block;
  text-align: right;
  transition: color 0.3s ease;
}
.wc-nav-tally .count.bump {
  color: var(--wc-gold-bright);
  text-shadow: 0 0 12px rgba(232, 197, 71, 0.6);
}
.wc-nav-tally .label {
  color: var(--wc-text-muted);
  font-size: 0.8rem;
  letter-spacing: 0.15em;
}
@keyframes wc-tally-pulse {
  0%, 100% { opacity: 0.7; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.3); }
}
@media (max-width: 768px) {
  /* Hide the tally on narrow screens so the rest of the nav fits. */
  .wc-nav-tally { display: none; }
}

/* ============ Fixtures ticker ============ */
.wc-ticker {
  position: fixed;
  top: var(--wc-nav-height);
  left: 0; right: 0;
  z-index: 40;
  display: flex;
  align-items: stretch;
  background: var(--wc-charcoal);
  border-bottom: 1px solid var(--wc-border);
  height: var(--wc-ticker-height);
  overflow: hidden;
}
.wc-ticker-track {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  gap: 2.5rem;
  white-space: nowrap;
  animation: wc-marquee 90s linear infinite;
  will-change: transform;
}
.wc-ticker:hover .wc-ticker-track { animation-play-state: paused; }
@keyframes wc-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.wc-ticker-loading {
  padding: 0 1.5rem;
  color: var(--wc-text-muted);
  font-size: 0.9rem;
}
.wc-ticker-pill {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0 1.25rem 0 1rem;
  height: 100%;
  font-family: var(--font-display);
  letter-spacing: 0.08em;
  font-size: 0.95rem;
  color: var(--wc-white);
  border-left: 1px solid var(--wc-border);
  text-decoration: none;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, padding 0.2s ease;
}
.wc-ticker-pill::after {
  content: 'RANK →';
  position: absolute;
  right: 0.75rem;
  top: 50%;
  transform: translate(8px, -50%);
  opacity: 0;
  font-size: 0.7rem;
  letter-spacing: 0.15em;
  color: var(--wc-black);
  background: var(--wc-gold);
  padding: 0.18rem 0.5rem;
  transition: opacity 0.2s ease, transform 0.2s ease;
  pointer-events: none;
}
.wc-ticker-pill:hover {
  background: var(--wc-gold);
  color: var(--wc-black);
  padding-right: 4.5rem;
}
.wc-ticker-pill:hover .wc-ticker-day,
.wc-ticker-pill:hover .wc-ticker-vs,
.wc-ticker-pill:hover .wc-ticker-time {
  color: var(--wc-black);
  background: rgba(0,0,0,0.1);
}
.wc-ticker-pill:hover::after {
  opacity: 1;
  transform: translate(0, -50%);
}
/* Single solid-gold anchor at the left of the ticker. Replaces the older
 * two-line instructional label so the bar has one bold call-to-action
 * instead of competing gold blocks. */
.wc-ticker-all {
  position: relative;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0 1.25rem;
  font-family: var(--font-display);
  letter-spacing: 0.14em;
  font-size: 0.9rem;
  text-transform: uppercase;
  color: var(--wc-black);
  background: var(--wc-gold);
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  transition:
    background 0.2s ease,
    padding 0.2s ease,
    box-shadow 0.2s ease,
    transform 0.2s ease;
  z-index: 2;
  cursor: pointer;
}
/* Animated shine sweep: a diagonal white band passes across the button on
 * hover to reinforce clickability beyond the static color shift. */
.wc-ticker-all::before {
  content: '';
  position: absolute;
  top: -50%;
  left: -75%;
  width: 50%;
  height: 200%;
  background: linear-gradient(
    100deg,
    transparent 0%,
    rgba(255, 255, 255, 0.45) 50%,
    transparent 100%
  );
  transform: skewX(-20deg);
  transition: left 0.55s ease;
  pointer-events: none;
}
.wc-ticker-all:hover {
  background: var(--wc-gold-bright);
  padding: 0 1.9rem 0 1.25rem;
  box-shadow:
    inset 0 0 0 2px var(--wc-black),
    0 0 22px rgba(232, 197, 71, 0.55);
  transform: scale(1.02);
}
.wc-ticker-all:hover::before {
  left: 125%;
}
.wc-ticker-all:active { transform: scale(0.98); }

/* The arrow lives in its own span so we can independently animate it on
 * hover (slide right + bigger). */
.wc-ticker-all .arrow {
  display: inline-block;
  transition: transform 0.2s ease;
}
.wc-ticker-all:hover .arrow {
  transform: translateX(4px) scale(1.2);
}
.wc-ticker-day {
  font-size: 0.75rem;
  letter-spacing: 0.18em;
  padding: 0.1rem 0.45rem;
  background: var(--wc-gold);
  color: var(--wc-black);
}
.wc-ticker-vs {
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  color: var(--wc-text-muted);
  text-transform: lowercase;
}
.wc-ticker-time {
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  color: var(--wc-text-muted);
  margin-left: 0.5rem;
}
.wc-ticker-flag { font-size: 1.1rem; line-height: 1; }

/* Push page content below the fixed nav + ticker stack. */
.wc-rank-page,
.wc-leaderboard-page {
  padding-top: calc(var(--wc-nav-height) + var(--wc-ticker-height) + 3rem);
}
.wc-hero {
  padding-top: calc(var(--wc-nav-height) + var(--wc-ticker-height));
}

/* ============ Filter banner (rank page when filtered) ============ */
.wc-filter-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  max-width: 1300px;
  margin: 0 auto 1.5rem;
  padding: 0.85rem 1.25rem;
  border: 1px solid var(--wc-gold);
  background: rgba(201, 162, 39, 0.06);
  font-family: var(--font-display);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.wc-filter-banner .label {
  font-size: 0.8rem;
  color: var(--wc-text-muted);
}
.wc-filter-banner .matchup {
  font-size: 1.15rem;
  color: var(--wc-gold);
}
.wc-filter-banner a {
  font-size: 0.8rem;
  border: 1px solid var(--wc-border);
  padding: 0.4rem 0.85rem;
  text-decoration: none;
}
.wc-filter-banner a:hover { border-color: var(--wc-gold); color: var(--wc-gold); }

/* ============ Hero (index) ============ */
.wc-hero {
  min-height: 100vh;
  display: flex;
  align-items: center;
  position: relative;
  overflow: hidden;
}
.wc-hero-bg-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  opacity: 0.18;
  z-index: 0;
}
.wc-hero-inner {
  position: relative;
  z-index: 2;
  padding: 0 4rem;
  max-width: 1200px;
}
.wc-eyebrow {
  display: inline-block;
  font-family: var(--font-display);
  letter-spacing: 0.2em;
  font-size: 1rem;
  color: var(--wc-gold);
  padding: 0.35rem 0.75rem;
  border: 1px solid var(--wc-gold);
  margin-bottom: 1.5rem;
}
.wc-hero h1 {
  font-size: clamp(3.5rem, 8vw, 7.5rem);
  text-transform: uppercase;
  margin: 0;
}
.wc-hero h1 .accent { color: var(--wc-gold); }
.wc-hero p {
  font-size: 1.25rem;
  color: var(--wc-text-muted);
  margin: 1.5rem 0 2.5rem;
  max-width: 540px;
  line-height: 1.5;
}
/* Tagline lives between the headline and the descriptive paragraph: it's
 * the value prop in 5 words so Reddit-tier visitors instantly grok the site. */
.wc-hero p.wc-tagline {
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 2.4vw, 1.9rem);
  letter-spacing: 0.06em;
  color: var(--wc-white);
  margin: 1.25rem 0 0.5rem;
  text-transform: uppercase;
  max-width: 640px;
}
.wc-hero p.wc-tagline + p { margin-top: 0.75rem; }

/* Host-nation color strip beneath the hero copy. */
.wc-nations {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 2rem;
}
.wc-nations span {
  height: 6px;
  flex: 0 0 80px;
}
.wc-nations .can { background: var(--wc-can-red); }
.wc-nations .mex { background: var(--wc-mex-green); }
.wc-nations .usa { background: var(--wc-usa-blue); }

/* ============ Buttons ============ */
.wc-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  font-family: var(--font-display);
  letter-spacing: 0.15em;
  font-size: 1.15rem;
  text-transform: uppercase;
  padding: 1rem 2.25rem;
  border: 2px solid var(--wc-gold);
  background: var(--wc-gold);
  color: var(--wc-black);
  transition: all 0.2s ease;
  cursor: pointer;
}
.wc-btn:hover {
  background: transparent;
  color: var(--wc-gold);
}
.wc-btn-ghost {
  background: transparent;
  color: var(--wc-white);
  border-color: var(--wc-white);
}
.wc-btn-ghost:hover {
  background: var(--wc-white);
  color: var(--wc-black);
}

/* ============ Rank page ============ */
.wc-rank-page {
  min-height: 100vh;
  padding: 7rem 2rem 4rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
}
.wc-rank-heading {
  text-align: center;
  margin-bottom: 3rem;
}
.wc-rank-heading h1 {
  font-size: clamp(2.5rem, 5vw, 4rem);
  text-transform: uppercase;
}
.wc-rank-heading p {
  color: var(--wc-text-muted);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-size: 0.85rem;
  margin-top: 0.5rem;
}
.wc-versus {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 2rem;
  align-items: center;
  width: 100%;
  max-width: 1300px;
}
.wc-versus .vs-divider {
  font-family: var(--font-display);
  font-size: 4rem;
  color: var(--wc-gold);
  text-align: center;
  letter-spacing: 0.05em;
  text-shadow: 0 0 30px rgba(201, 162, 39, 0.4);
}

.wc-card {
  position: relative;
  padding: 2rem 1.75rem 2.5rem;
  border: 1px solid var(--wc-border);
  background: linear-gradient(180deg, var(--wc-charcoal) 0%, var(--wc-black) 100%);
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
  overflow: hidden;
  text-align: center;
}
.wc-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 6px;
  background: var(--wc-card-accent, var(--wc-gold));
  transition: height 0.3s ease;
}
.wc-card:hover {
  transform: translateY(-6px);
  border-color: var(--wc-gold);
  box-shadow: 0 20px 60px rgba(201, 162, 39, 0.18);
}
.wc-card:hover::before { height: 12px; }

.wc-card-img-frame {
  width: 220px;
  height: 220px;
  margin: 0 auto 1.25rem;
  border-radius: 50%;
  background: radial-gradient(circle, var(--wc-graphite) 0%, var(--wc-black) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  border: 3px solid var(--wc-card-accent, var(--wc-gold));
  overflow: hidden;
}
.wc-card-img-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
}

.wc-card .wc-name {
  font-family: var(--font-display);
  font-size: 2.25rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin: 0.5rem 0 0.25rem;
}
.wc-card .wc-meta {
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: var(--wc-text-muted);
  letter-spacing: 0.05em;
  margin: 0.1rem 0;
}
.wc-card .wc-position {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 0.85rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--wc-gold);
  border: 1px solid var(--wc-gold);
  padding: 0.25rem 0.85rem;
  margin-top: 0.75rem;
}
.wc-card .wc-select-hint {
  margin-top: 1.25rem;
  font-family: var(--font-display);
  letter-spacing: 0.25em;
  font-size: 0.9rem;
  color: var(--wc-text-muted);
  opacity: 0;
  transition: opacity 0.25s ease;
}
.wc-card:hover .wc-select-hint {
  opacity: 1;
  color: var(--wc-gold);
}

.wc-loading {
  font-family: var(--font-display);
  letter-spacing: 0.3em;
  font-size: 1.5rem;
  color: var(--wc-gold);
  padding: 4rem 0;
  text-align: center;
}

/* Secondary action under the two cards. Intentionally muted so it doesn't
 * pull attention from the primary "tap a card" gesture. */
.wc-skip-row {
  display: flex;
  justify-content: center;
  margin-top: 2rem;
}
.wc-skip-btn {
  background: transparent;
  border: 1px solid var(--wc-border);
  color: var(--wc-text-muted);
  font-family: var(--font-display);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-size: 0.85rem;
  padding: 0.6rem 1.25rem;
  cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.wc-skip-btn:hover {
  color: var(--wc-gold);
  border-color: var(--wc-gold);
}
.wc-skip-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* ============ Leaderboard ============ */
.wc-leaderboard-page {
  min-height: 100vh;
  padding: 7rem 2rem 4rem;
}
.wc-leaderboard-wrap {
  max-width: 1100px;
  margin: 0 auto;
}
.wc-leaderboard-heading {
  text-align: center;
  margin-bottom: 2.5rem;
}
.wc-leaderboard-heading h1 {
  font-size: clamp(2.5rem, 5vw, 4rem);
  text-transform: uppercase;
}
.wc-leaderboard-heading p {
  color: var(--wc-text-muted);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  font-size: 0.85rem;
  margin-top: 0.5rem;
}

.wc-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--wc-charcoal);
  border: 1px solid var(--wc-border);
}
.wc-table thead th {
  font-family: var(--font-display);
  letter-spacing: 0.18em;
  font-size: 0.85rem;
  text-transform: uppercase;
  color: var(--wc-gold);
  background: var(--wc-black);
  padding: 1rem 1.25rem;
  text-align: left;
  border-bottom: 2px solid var(--wc-gold);
}
.wc-table thead th.right { text-align: right; }
.wc-table tbody td {
  padding: 0.85rem 1.25rem;
  border-bottom: 1px solid var(--wc-border);
  font-size: 0.95rem;
  vertical-align: middle;
}
.wc-table tbody tr {
  transition: background 0.15s ease;
}
.wc-table tbody tr:hover {
  background: rgba(201, 162, 39, 0.05);
}
.wc-rank {
  font-family: var(--font-display);
  font-size: 1.5rem;
  color: var(--wc-text-muted);
  width: 4rem;
}
.wc-rank.gold   { color: var(--wc-gold-bright); text-shadow: 0 0 12px rgba(232,197,71,0.5); }
.wc-rank.silver { color: #C0C0C0; }
.wc-rank.bronze { color: #CD7F32; }

.wc-player-cell {
  display: flex;
  align-items: center;
  gap: 0.85rem;
}
.wc-player-cell img {
  width: 44px; height: 44px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center top;
  background: var(--wc-graphite);
  border: 1px solid var(--wc-border);
}
.wc-player-cell .wc-player-name {
  font-weight: 600;
  color: var(--wc-white);
}
.wc-elo {
  font-family: var(--font-display);
  font-size: 1.4rem;
  letter-spacing: 0.05em;
  color: var(--wc-gold-bright);
  text-align: right;
}

.wc-chip {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.2rem 0.55rem;
  border: 1px solid var(--wc-border);
  color: var(--wc-text-muted);
}

/* ============ Footer strip ============ */
.wc-footer-strip {
  display: flex;
  width: 100%;
  height: 8px;
}
.wc-footer-strip span { flex: 1; }
.wc-footer-strip .can { background: var(--wc-can-red); }
.wc-footer-strip .mex { background: var(--wc-mex-green); }
.wc-footer-strip .usa { background: var(--wc-usa-blue); }

/* ============ Best XI page ============ */
.wc-bestxi-page {
  min-height: 100vh;
  padding: calc(var(--wc-nav-height) + var(--wc-ticker-height) + 3rem) 1.5rem 4rem;
  max-width: 1100px;
  margin: 0 auto;
}
.wc-bestxi-heading { text-align: center; margin-bottom: 2rem; }
.wc-bestxi-heading h1 {
  font-size: clamp(2.5rem, 5vw, 4rem);
  text-transform: uppercase;
}
.wc-bestxi-heading p {
  color: var(--wc-text-muted);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  font-size: 0.85rem;
  margin-top: 0.5rem;
}

.wc-pitch-wrap {
  position: relative;
  width: 100%;
  max-width: 920px;
  margin: 0 auto;
  aspect-ratio: 100 / 70;
  padding: 0;
}
.wc-pitch {
  position: relative;
  width: 100%;
  height: 100%;
  background:
    repeating-linear-gradient(
      0deg,
      #0d3a1a 0px, #0d3a1a 60px,
      #0f4220 60px, #0f4220 120px
    );
  border: 2px solid var(--wc-gold);
  box-shadow: 0 30px 80px rgba(0,0,0,0.6), inset 0 0 60px rgba(0,0,0,0.3);
  overflow: hidden;
}
.wc-pitch-lines {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.wc-row {
  position: absolute;
  left: 0; right: 0;
  display: flex;
  justify-content: space-evenly;
  align-items: center;
}
/* The pitch shows only the defending half. The halfway line is at the
 * top of the visible area, GK is at the bottom (in the penalty box). */
.wc-row-fwd { top: 6%;  }
.wc-row-mid { top: 30%; }
.wc-row-def { top: 56%; }
.wc-row-gk  { top: 80%; }

.wc-pitch-player {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
  cursor: default;
  transition: transform 0.2s ease;
}
.wc-pitch-player:hover { transform: translateY(-4px); }

.wc-pitch-photo {
  width: 84px; height: 84px;
  border-radius: 50%;
  background: var(--wc-charcoal);
  border: 3px solid var(--wc-gold);
  overflow: hidden;
  box-shadow: 0 6px 16px rgba(0,0,0,0.5);
}
.wc-pitch-photo img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}
.wc-pitch-name-tag {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: rgba(10,10,10,0.9);
  border: 1px solid var(--wc-border);
  padding: 0.25rem 0.7rem;
  min-width: 110px;
  text-align: center;
  font-family: var(--font-display);
  letter-spacing: 0.04em;
  line-height: 1.1;
}
.wc-pitch-name-tag .name {
  color: var(--wc-white);
  font-size: 0.85rem;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 130px;
}
.wc-pitch-name-tag .stat {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: 0.15rem;
  font-size: 0.7rem;
  color: var(--wc-gold-bright);
  letter-spacing: 0.1em;
}
.wc-pitch-name-tag .flag { font-size: 0.85rem; }

.wc-pitch-loading {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  letter-spacing: 0.3em;
  color: var(--wc-gold);
}

/* Subs */
.wc-subs {
  margin-top: 3rem;
  text-align: center;
}
.wc-subs h2 {
  font-size: 1.6rem;
  text-transform: uppercase;
  color: var(--wc-gold);
  margin-bottom: 1rem;
  letter-spacing: 0.15em;
}
.wc-subs-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 1rem;
  max-width: 1000px;
  margin: 0 auto;
}
.wc-sub-card {
  padding: 0.85rem;
  border: 1px solid var(--wc-border);
  background: linear-gradient(180deg, var(--wc-charcoal) 0%, var(--wc-black) 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  text-align: center;
}
.wc-sub-card .wc-pitch-photo {
  width: 60px; height: 60px;
  border-width: 2px;
}
.wc-sub-card .pos-chip {
  font-family: var(--font-display);
  font-size: 0.65rem;
  letter-spacing: 0.18em;
  color: var(--wc-black);
  background: var(--wc-gold);
  padding: 0.1rem 0.45rem;
}
.wc-sub-card .name {
  font-family: var(--font-display);
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  color: var(--wc-white);
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.wc-sub-card .elo {
  font-family: var(--font-display);
  font-size: 0.8rem;
  color: var(--wc-gold-bright);
  letter-spacing: 0.08em;
}

@media (max-width: 640px) {
  .wc-pitch-photo { width: 56px; height: 56px; }
  .wc-pitch-name-tag .name { font-size: 0.7rem; max-width: 90px; }
  .wc-pitch-name-tag { min-width: 80px; padding: 0.2rem 0.45rem; }
}

/* ============ Streak counter ============ */
.wc-streak {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  z-index: 60;
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.65rem 1.1rem;
  background: var(--wc-charcoal);
  border: 1px solid var(--wc-gold);
  font-family: var(--font-display);
  letter-spacing: 0.12em;
  color: var(--wc-white);
  font-size: 0.95rem;
  text-transform: uppercase;
  box-shadow: 0 6px 24px rgba(0,0,0,0.5);
  transition: transform 0.2s ease, opacity 0.2s ease;
}
.wc-streak.hidden { display: none; }
.wc-streak .count {
  color: var(--wc-gold-bright);
  font-size: 1.4rem;
  letter-spacing: 0.05em;
}
.wc-streak.celebrate {
  animation: streak-pop 0.7s ease;
}
@keyframes streak-pop {
  0% { transform: scale(1); }
  40% { transform: scale(1.18); background: var(--wc-gold); color: var(--wc-black); }
  100% { transform: scale(1); }
}

/* Confetti pieces (one-shot, JS-injected). */
.wc-confetti-piece {
  position: fixed;
  width: 10px;
  height: 14px;
  z-index: 100;
  pointer-events: none;
  opacity: 0;
  animation: confetti-fall 1.6s cubic-bezier(.25,.46,.45,.94) forwards;
}
@keyframes confetti-fall {
  0%   { opacity: 1; transform: translate(0, 0) rotate(0deg); }
  100% { opacity: 0; transform: translate(var(--dx, 0), 90vh) rotate(720deg); }
}

/* ============ Hover compare tooltip ============ */
.wc-card { position: relative; }
.wc-compare-tooltip {
  position: absolute;
  top: 8px;
  left: 50%;
  transform: translate(-50%, -100%);
  background: var(--wc-black);
  border: 1px solid var(--wc-gold);
  padding: 0.4rem 0.7rem;
  font-family: var(--font-display);
  letter-spacing: 0.1em;
  font-size: 0.85rem;
  color: var(--wc-gold-bright);
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.wc-card:hover .wc-compare-tooltip {
  opacity: 1;
  transform: translate(-50%, -110%);
}
.wc-compare-tooltip .trend.up   { color: #4ade80; }
.wc-compare-tooltip .trend.down { color: #f87171; }
.wc-compare-tooltip .trend.flat { color: var(--wc-text-muted); }

/* ============ Filter row (leaderboard) ============ */
.wc-filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1.5rem;
  max-width: 1100px;
}
.wc-filter-row select {
  appearance: none;
  background: var(--wc-charcoal);
  color: var(--wc-white);
  border: 1px solid var(--wc-border);
  padding: 0.5rem 2rem 0.5rem 0.85rem;
  font-family: var(--font-body);
  font-size: 0.9rem;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23C9A227'%3E%3Cpath d='M4 6l4 5 4-5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.5rem center;
  background-size: 14px;
  min-width: 140px;
}
.wc-filter-row select:hover { border-color: var(--wc-gold); }
.wc-filter-row .reset {
  font-family: var(--font-display);
  letter-spacing: 0.12em;
  font-size: 0.8rem;
  color: var(--wc-text-muted);
  background: transparent;
  border: 1px solid var(--wc-border);
  padding: 0.5rem 0.85rem;
  cursor: pointer;
  text-transform: uppercase;
}
.wc-filter-row .reset:hover { color: var(--wc-gold); border-color: var(--wc-gold); }

/* ============ Player profile page ============ */
.wc-profile-page {
  min-height: 100vh;
  padding: calc(var(--wc-nav-height) + var(--wc-ticker-height) + 3rem) 2rem 4rem;
  max-width: 1100px;
  margin: 0 auto;
}
.wc-profile-grid {
  display: grid;
  grid-template-columns: minmax(260px, 360px) 1fr;
  gap: 2rem;
  align-items: start;
}
@media (max-width: 768px) {
  .wc-profile-grid { grid-template-columns: 1fr; }
}
.wc-profile-card {
  padding: 2rem 1.5rem;
  border: 1px solid var(--wc-border);
  background: linear-gradient(180deg, var(--wc-charcoal) 0%, var(--wc-black) 100%);
  text-align: center;
  position: relative;
}
.wc-profile-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 6px;
  background: var(--wc-gold);
}
.wc-profile-img {
  width: 200px; height: 200px;
  border-radius: 50%;
  border: 4px solid var(--wc-gold);
  overflow: hidden;
  margin: 0 auto 1rem;
  background: var(--wc-graphite);
}
.wc-profile-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center top;
}
.wc-profile-name {
  font-family: var(--font-display);
  font-size: 2rem;
  text-transform: uppercase;
  margin: 0;
}
.wc-profile-sub {
  color: var(--wc-text-muted);
  font-size: 1rem;
  margin: 0.5rem 0 1rem;
  letter-spacing: 0.05em;
}
.wc-profile-pos {
  display: inline-block;
  font-family: var(--font-display);
  letter-spacing: 0.18em;
  font-size: 0.85rem;
  color: var(--wc-gold);
  border: 1px solid var(--wc-gold);
  padding: 0.25rem 0.85rem;
}
.wc-profile-stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;
}
.wc-stat-block {
  padding: 1.25rem;
  border: 1px solid var(--wc-border);
  background: var(--wc-charcoal);
  text-align: center;
}
.wc-stat-block .label {
  font-family: var(--font-display);
  letter-spacing: 0.18em;
  font-size: 0.7rem;
  color: var(--wc-text-muted);
  text-transform: uppercase;
}
.wc-stat-block .value {
  font-family: var(--font-display);
  font-size: 2.25rem;
  color: var(--wc-gold-bright);
  margin-top: 0.3rem;
  line-height: 1;
}
.wc-stat-block .sub {
  font-family: var(--font-body);
  font-size: 0.8rem;
  color: var(--wc-text-muted);
  margin-top: 0.2rem;
}
.wc-stat-block .trend.up { color: #4ade80; }
.wc-stat-block .trend.down { color: #f87171; }

.wc-history-card {
  margin-top: 1.5rem;
  padding: 1.5rem;
  border: 1px solid var(--wc-border);
  background: var(--wc-charcoal);
}
.wc-history-card h3 {
  font-family: var(--font-display);
  letter-spacing: 0.18em;
  font-size: 0.95rem;
  color: var(--wc-gold);
  text-transform: uppercase;
  margin: 0 0 1rem;
}
.wc-spark { width: 100%; height: 120px; }

/* Interactive ELO-history chart on player profile pages. */
.wc-chart-wrap {
  position: relative;
  width: 100%;
  height: 200px;
  user-select: none;
  cursor: crosshair;
}
.wc-chart {
  width: 100%;
  height: 100%;
  display: block;
}
.wc-chart-tip {
  position: absolute;
  top: -8px;
  transform: translate(-50%, -100%);
  background: var(--wc-black);
  border: 1px solid var(--wc-gold);
  padding: 0.4rem 0.7rem;
  font-family: var(--font-display);
  letter-spacing: 0.08em;
  font-size: 0.85rem;
  color: var(--wc-white);
  white-space: nowrap;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.15rem;
}
.wc-chart-tip .elo {
  color: var(--wc-gold-bright);
  font-size: 1rem;
}
.wc-chart-tip .ts {
  color: var(--wc-text-muted);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
}
.wc-chart-tip .up   { color: #4ade80; margin-left: 0.4rem; }
.wc-chart-tip .down { color: #f87171; margin-left: 0.4rem; }
.wc-chart-empty {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--wc-text-muted);
  font-family: var(--font-display);
  letter-spacing: 0.15em;
  font-size: 0.85rem;
  text-transform: uppercase;
  text-align: center;
  padding: 1rem;
}

/* ============ Compare page ============ */
.wc-compare-page {
  min-height: 100vh;
  padding: calc(var(--wc-nav-height) + var(--wc-ticker-height) + 3rem) 2rem 4rem;
  max-width: 1100px;
  margin: 0 auto;
}
.wc-compare-grid {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 1.5rem;
  align-items: stretch;
}
@media (max-width: 768px) {
  .wc-compare-grid { grid-template-columns: 1fr; }
  .wc-compare-grid .vs-divider { display: none; }
}
.wc-compare-slot {
  border: 1px solid var(--wc-border);
  background: linear-gradient(180deg, var(--wc-charcoal) 0%, var(--wc-black) 100%);
  padding: 1.5rem;
  position: relative;
}
.wc-compare-slot.empty { text-align: center; min-height: 320px; }
.wc-compare-search {
  width: 100%;
  background: var(--wc-black);
  color: var(--wc-white);
  border: 1px solid var(--wc-border);
  padding: 0.6rem 0.85rem;
  font-family: var(--font-body);
  font-size: 0.95rem;
}
.wc-compare-search:focus {
  outline: none;
  border-color: var(--wc-gold);
}
.wc-compare-results {
  position: absolute;
  left: 1.5rem; right: 1.5rem;
  top: calc(100% - 0.5rem);
  background: var(--wc-black);
  border: 1px solid var(--wc-gold);
  max-height: 240px;
  overflow-y: auto;
  z-index: 10;
}
.wc-compare-results.hidden { display: none; }
.wc-compare-result {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  padding: 0.5rem 0.75rem;
  border-bottom: 1px solid var(--wc-border);
  cursor: pointer;
}
.wc-compare-result:hover { background: rgba(201,162,39,0.1); }
.wc-compare-result img {
  width: 32px; height: 32px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center top;
  background: var(--wc-graphite);
}
.wc-compare-result .name { color: var(--wc-white); font-size: 0.9rem; }
.wc-compare-result .meta { color: var(--wc-text-muted); font-size: 0.75rem; }

.wc-compare-player .wc-pitch-photo {
  width: 130px; height: 130px;
  margin: 0 auto 1rem;
}
.wc-compare-player .name {
  font-family: var(--font-display);
  font-size: 1.4rem;
  text-transform: uppercase;
  text-align: center;
  margin: 0;
}
.wc-compare-player .meta {
  text-align: center;
  color: var(--wc-text-muted);
  font-size: 0.9rem;
  margin: 0.5rem 0 1.25rem;
}
.wc-compare-bars { display: flex; flex-direction: column; gap: 0.55rem; }
.wc-compare-bar {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.wc-compare-bar .row {
  display: flex;
  justify-content: space-between;
  font-family: var(--font-display);
  letter-spacing: 0.1em;
  font-size: 0.75rem;
  color: var(--wc-text-muted);
  text-transform: uppercase;
}
.wc-compare-bar .row .v { color: var(--wc-gold-bright); }
.wc-compare-bar .track {
  height: 6px;
  background: var(--wc-graphite);
}
.wc-compare-bar .fill {
  height: 100%;
  background: var(--wc-gold);
  width: 0;
  transition: width 0.5s ease;
}
.wc-compare-bar .fill.winner { background: var(--wc-gold-bright); box-shadow: 0 0 10px rgba(232,197,71,0.5); }
.wc-compare-bar .fill.loser  { background: var(--wc-graphite); }

.wc-vs-mid {
  font-family: var(--font-display);
  font-size: 3rem;
  color: var(--wc-gold);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 1rem;
}

/* ============ Share buttons ============ */
.wc-share-row {
  display: flex;
  gap: 0.75rem;
  justify-content: center;
  margin-top: 2rem;
}
.wc-share-row button {
  font-family: var(--font-display);
  letter-spacing: 0.12em;
  font-size: 0.85rem;
  text-transform: uppercase;
  background: transparent;
  color: var(--wc-white);
  border: 1px solid var(--wc-gold);
  padding: 0.65rem 1.1rem;
  cursor: pointer;
  transition: all 0.2s ease;
}
.wc-share-row button:hover {
  background: var(--wc-gold);
  color: var(--wc-black);
}

/* ============ Fixtures page ============ */
.wc-fixtures-page {
  min-height: 100vh;
  padding: calc(var(--wc-nav-height) + var(--wc-ticker-height) + 3rem) 1.5rem 4rem;
  max-width: 900px;
  margin: 0 auto;
}
.wc-fixtures-controls {
  max-width: 480px;
  margin: 0 auto 2rem;
}
.wc-fixtures-list { display: flex; flex-direction: column; gap: 0.75rem; }
.wc-fixtures-date {
  font-family: var(--font-display);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-size: 0.85rem;
  color: var(--wc-gold);
  margin: 1.25rem 0 0.25rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--wc-border);
}
.wc-fixtures-date:first-child { margin-top: 0; }

.wc-fixture-card {
  display: grid;
  grid-template-columns: 90px 1fr auto;
  align-items: center;
  gap: 1rem;
  padding: 0.85rem 1rem;
  background: var(--wc-charcoal);
  border: 1px solid var(--wc-border);
  text-decoration: none;
  color: var(--wc-white);
  transition: border-color 0.2s ease, background 0.2s ease, transform 0.2s ease;
}
.wc-fixture-card:hover {
  border-color: var(--wc-gold);
  background: rgba(201, 162, 39, 0.06);
  transform: translateX(4px);
}
.wc-fixture-time {
  font-family: var(--font-display);
  letter-spacing: 0.08em;
  font-size: 0.9rem;
  color: var(--wc-gold-bright);
}
.wc-fixture-teams {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.6rem;
  font-family: var(--font-display);
  letter-spacing: 0.06em;
  font-size: 1.1rem;
  text-transform: uppercase;
}
.wc-fixture-teams .team { color: var(--wc-white); }
.wc-fixture-teams .vs {
  color: var(--wc-text-muted);
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  text-transform: lowercase;
}
.wc-fixture-venue {
  grid-column: 2;
  font-size: 0.8rem;
  color: var(--wc-text-muted);
  letter-spacing: 0.05em;
}
.wc-fixture-cta {
  grid-column: 3;
  grid-row: 1 / span 2;
  font-family: var(--font-display);
  font-size: 0.75rem;
  letter-spacing: 0.15em;
  color: var(--wc-gold);
  text-transform: uppercase;
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.wc-fixture-card:hover .wc-fixture-cta { opacity: 1; }

@media (max-width: 640px) {
  .wc-fixture-card { grid-template-columns: 70px 1fr; }
  .wc-fixture-cta { display: none; }
  .wc-fixture-venue { grid-column: 1 / -1; padding-left: 70px; }
}

/* ============ Higher-or-Lower game (/play) ============ */
.wc-play-page {
  min-height: 100vh;
  padding: calc(var(--wc-nav-height) + var(--wc-ticker-height) + 2rem) 1.25rem 4rem;
  max-width: 1100px;
  margin: 0 auto;
}
.wc-play-heading { text-align: center; margin-bottom: 1.25rem; }
.wc-play-heading h1 {
  font-size: clamp(2.4rem, 5vw, 3.8rem);
  text-transform: uppercase;
}
.wc-play-heading p {
  color: var(--wc-text-muted);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-size: 0.85rem;
  margin-top: 0.4rem;
}

.wc-play-hud {
  display: flex;
  justify-content: center;
  gap: 2rem;
  margin: 1.5rem 0 2rem;
}
.wc-play-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0.6rem 1.2rem;
  border: 1px solid var(--wc-border);
  background: var(--wc-charcoal);
  min-width: 120px;
}
.wc-play-stat .label {
  font-family: var(--font-display);
  letter-spacing: 0.18em;
  font-size: 0.7rem;
  color: var(--wc-text-muted);
  text-transform: uppercase;
}
.wc-play-stat .value {
  font-family: var(--font-display);
  font-size: 1.8rem;
  color: var(--wc-gold-bright);
}

.wc-play-board { margin-top: 1rem; }

.wc-play-grid {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 1.25rem;
  align-items: stretch;
}

.wc-play-card {
  position: relative;
  padding: 1.5rem 1.25rem 1.75rem;
  border: 1px solid var(--wc-border);
  background: linear-gradient(180deg, var(--wc-charcoal) 0%, var(--wc-black) 100%);
  text-align: center;
  transition: border-color 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
  overflow: hidden;
}
.wc-play-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 5px;
  background: var(--wc-card-accent, var(--wc-gold));
}
.wc-play-card.correct {
  border-color: #4ade80;
  box-shadow: 0 0 30px rgba(74, 222, 128, 0.18);
}
.wc-play-card.wrong {
  border-color: #f87171;
  box-shadow: 0 0 30px rgba(248, 113, 113, 0.18);
}
.wc-play-photo {
  width: 170px; height: 170px;
  margin: 0 auto 1rem;
  border-radius: 50%;
  background: var(--wc-graphite);
  border: 3px solid var(--wc-card-accent, var(--wc-gold));
  overflow: hidden;
}
.wc-play-photo img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center top;
}
.wc-play-name {
  font-family: var(--font-display);
  font-size: 1.8rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin: 0.3rem 0;
}
.wc-play-meta {
  font-size: 0.85rem;
  color: var(--wc-text-muted);
  letter-spacing: 0.05em;
}
.wc-play-elo {
  margin-top: 1.25rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.15rem;
}
.wc-play-elo .label {
  font-family: var(--font-display);
  letter-spacing: 0.2em;
  font-size: 0.7rem;
  color: var(--wc-text-muted);
  text-transform: uppercase;
}
.wc-play-elo .value {
  font-family: var(--font-display);
  font-size: 2.6rem;
  color: var(--wc-gold-bright);
  line-height: 1;
}

.wc-play-vs {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.25rem;
  padding: 0 0.5rem;
}
.wc-play-vs > span {
  font-family: var(--font-display);
  font-size: 2.5rem;
  color: var(--wc-gold);
  letter-spacing: 0.05em;
  text-shadow: 0 0 30px rgba(201, 162, 39, 0.4);
}

.wc-play-chooser {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  min-width: 160px;
}
.wc-play-btn {
  font-family: var(--font-display);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-size: 1rem;
  padding: 0.9rem 1rem;
  border: 2px solid var(--wc-gold);
  background: transparent;
  color: var(--wc-white);
  cursor: pointer;
  transition: all 0.15s ease;
}
.wc-play-btn:hover {
  background: var(--wc-gold);
  color: var(--wc-black);
}
.wc-play-btn.locked { pointer-events: none; opacity: 0.55; }
.wc-play-btn.correct {
  background: #4ade80;
  border-color: #4ade80;
  color: var(--wc-black);
  opacity: 1;
}
.wc-play-btn.wrong {
  background: #f87171;
  border-color: #f87171;
  color: var(--wc-black);
  opacity: 1;
}

/* End-game card */
.wc-play-end {
  padding: 2.5rem 1.5rem;
  border: 1px solid var(--wc-gold);
  background: var(--wc-charcoal);
  text-align: center;
  max-width: 500px;
  margin: 1rem auto 0;
}
.wc-play-end-header {
  font-family: var(--font-display);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--wc-text-muted);
  font-size: 0.95rem;
}
.wc-play-end-streak {
  font-family: var(--font-display);
  font-size: 5rem;
  color: var(--wc-gold-bright);
  line-height: 1;
  margin: 0.5rem 0 0.25rem;
}
.wc-play-end-label {
  font-family: var(--font-display);
  letter-spacing: 0.15em;
  color: var(--wc-text-muted);
  text-transform: uppercase;
  font-size: 0.85rem;
}
.wc-play-end-pb {
  margin-top: 1rem;
  font-family: var(--font-display);
  color: var(--wc-gold);
  letter-spacing: 0.1em;
  font-size: 1rem;
  text-transform: uppercase;
}
.wc-play-end-form {
  margin-top: 1.5rem;
  display: flex;
  gap: 0.5rem;
}
.wc-play-end-form input {
  flex: 1;
  background: var(--wc-black);
  color: var(--wc-white);
  border: 1px solid var(--wc-border);
  padding: 0.7rem 0.85rem;
  font-family: var(--font-body);
}
.wc-play-end-form input:focus { outline: none; border-color: var(--wc-gold); }
.wc-play-end-form button {
  background: var(--wc-gold);
  color: var(--wc-black);
  border: 0;
  font-family: var(--font-display);
  letter-spacing: 0.12em;
  padding: 0 1rem;
  cursor: pointer;
  text-transform: uppercase;
  font-size: 0.85rem;
}
.wc-play-end-form button:disabled { opacity: 0.5; cursor: not-allowed; }
.wc-play-end-skip {
  margin-top: 0.75rem;
  color: var(--wc-text-muted);
  font-family: var(--font-display);
  letter-spacing: 0.12em;
  font-size: 0.75rem;
  cursor: pointer;
}
.wc-play-end-skip:hover { color: var(--wc-gold); }
.wc-play-end-restart {
  margin-top: 1.5rem;
  background: transparent;
  border: 1px solid var(--wc-white);
  color: var(--wc-white);
  font-family: var(--font-display);
  letter-spacing: 0.15em;
  padding: 0.75rem 1.5rem;
  cursor: pointer;
  text-transform: uppercase;
  font-size: 0.9rem;
}
.wc-play-end-restart:hover {
  background: var(--wc-white);
  color: var(--wc-black);
}

/* Today's leaderboard */
.wc-play-footer { margin-top: 3rem; }
.wc-play-leaderboard {
  max-width: 500px;
  margin: 0 auto;
  padding: 1.25rem;
  border: 1px solid var(--wc-border);
  background: var(--wc-charcoal);
}
/* Tab row replacing the old h3 title. Three pill buttons, the active one
 * filled in solid gold so the period being viewed is unambiguous. */
.wc-play-tabs {
  display: flex;
  gap: 0.4rem;
  margin: 0 0 1rem;
  border-bottom: 1px solid var(--wc-border);
  padding-bottom: 0.85rem;
}
.wc-play-tabs button {
  flex: 1;
  background: transparent;
  border: 1px solid var(--wc-border);
  color: var(--wc-text-muted);
  font-family: var(--font-display);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-size: 0.72rem;
  padding: 0.55rem 0.5rem;
  cursor: pointer;
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}
.wc-play-tabs button:hover {
  color: var(--wc-gold);
  border-color: var(--wc-gold);
}
.wc-play-tabs button.active {
  background: var(--wc-gold);
  color: var(--wc-black);
  border-color: var(--wc-gold);
}
.wc-play-leaderboard ol {
  list-style: none;
  padding: 0;
  margin: 0;
  counter-reset: streak;
}
.wc-play-leaderboard li {
  display: flex;
  justify-content: space-between;
  padding: 0.45rem 0;
  border-bottom: 1px solid var(--wc-border);
  counter-increment: streak;
  font-size: 0.95rem;
}
.wc-play-leaderboard li:last-child { border-bottom: 0; }
.wc-play-leaderboard li::before {
  content: counter(streak) ".";
  color: var(--wc-text-muted);
  margin-right: 0.75rem;
  font-family: var(--font-display);
}
.wc-play-leaderboard .name {
  flex: 1;
  color: var(--wc-white);
  font-family: var(--font-display);
  letter-spacing: 0.05em;
}
.wc-play-leaderboard .streak {
  font-family: var(--font-display);
  color: var(--wc-gold-bright);
  font-size: 1.1rem;
}
.wc-play-leaderboard .muted { color: var(--wc-text-muted); font-style: italic; }

@media (max-width: 640px) {
  .wc-play-grid {
    grid-template-columns: 1fr;
    gap: 0.85rem;
  }
  .wc-play-card { padding: 1.1rem 1rem 1.3rem; }
  .wc-play-photo { width: 120px; height: 120px; }
  .wc-play-name { font-size: 1.3rem; }
  .wc-play-elo .value { font-size: 2rem; }
  .wc-play-vs { flex-direction: row; gap: 0.85rem; }
  .wc-play-vs > span { font-size: 1.4rem; }
  .wc-play-chooser { flex-direction: row; min-width: 0; flex: 1; }
  .wc-play-btn { flex: 1; padding: 0.7rem 0.5rem; font-size: 0.85rem; }
  .wc-play-end-streak { font-size: 4rem; }
  .wc-play-hud { gap: 1rem; }
  .wc-play-stat { min-width: 100px; padding: 0.5rem 0.85rem; }
}

/* ============ Footer (real one with sitemap) ============ */
.wc-footer {
  background: var(--wc-black);
  border-top: 1px solid var(--wc-border);
  padding: 3.5rem 1.5rem 1.5rem;
  margin-top: 4rem;   /* breathing room above the footer on short pages */
}
.wc-footer-inner {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: 3rem;
  align-items: start;
}
.wc-footer-brand .wc-brand { font-size: 1.4rem; margin-bottom: 0.85rem; }
.wc-footer-brand p {
  color: var(--wc-text-muted);
  font-size: 0.9rem;
  line-height: 1.5;
  max-width: 32ch;
  margin: 0;
}
.wc-footer-cols {
  display: contents; /* let each column join the parent grid */
}
.wc-footer-col h4 {
  font-family: var(--font-display);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-size: 0.8rem;
  color: var(--wc-gold);
  margin: 0 0 1rem;
}
.wc-footer-col ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.wc-footer-col a {
  color: var(--wc-white);
  text-decoration: none;
  font-size: 0.95rem;
  transition: color 0.15s ease;
}
.wc-footer-col a:hover { color: var(--wc-gold-bright); }

.wc-footer-meta {
  max-width: 1100px;
  margin: 2.5rem auto 0;
  padding-top: 1.25rem;
  border-top: 1px solid var(--wc-border);
  display: flex;
  justify-content: space-between;
  font-family: var(--font-display);
  letter-spacing: 0.15em;
  font-size: 0.7rem;
  color: var(--wc-text-muted);
  text-transform: uppercase;
}

@media (max-width: 768px) {
  .wc-footer { padding: 2.5rem 1.25rem 1.25rem; margin-top: 3rem; }
  .wc-footer-inner {
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
  }
  .wc-footer-brand { grid-column: 1 / -1; }
}
@media (max-width: 480px) {
  .wc-footer-inner { grid-template-columns: 1fr; gap: 1.75rem; }
  .wc-footer-meta { flex-direction: column; gap: 0.4rem; text-align: center; }
}

/* ============ Helpers ============ */
.hidden { display: none !important; }

@media (max-width: 768px) {
  .wc-versus { grid-template-columns: 1fr; }
  .wc-versus .vs-divider { font-size: 2.5rem; }
  .wc-nav-links { gap: 1.4rem; font-size: 0.9rem; }
  .wc-hero-inner { padding: 0 1.5rem; }
  .wc-nav { padding: 1rem 1.5rem; }
}

/* =========================================================================
 * MOBILE POLISH PASS
 * Three breakpoints, narrowest-last:
 *   - <= 900px: tablet portrait, big phones landscape
 *   - <= 640px: most phones in portrait
 *   - <= 380px: small / older phones
 *
 * Everything in here is a refinement of the desktop layout. Keep edits
 * scoped to specific selectors so nothing here bleeds into desktop.
 * ========================================================================= */

@media (max-width: 900px) {
  /* Nav: drop padding, shrink brand, compact links. The tally is already
     hidden under 768px elsewhere in this file. */
  .wc-nav {
    padding: 0 1rem;
  }
  .wc-brand        { font-size: 1.2rem; }
  .wc-brand-mark   { font-size: 1rem; padding: 0.05rem 0.4rem; }
  .wc-nav-links    { gap: 0.85rem; font-size: 0.85rem; }
  .wc-nav-links a  { padding: 0.2rem 0; }

  /* Ticker: smaller pills, smaller label */
  .wc-ticker-all { padding: 0 0.85rem; font-size: 0.78rem; letter-spacing: 0.1em; }
  .wc-ticker-pill  { font-size: 0.85rem; padding: 0 0.85rem; gap: 0.4rem; }
  .wc-ticker-day   { font-size: 0.65rem; padding: 0.08rem 0.35rem; }
  .wc-ticker-time  { font-size: 0.65rem; margin-left: 0.3rem; }

  /* Hero: tighter spacing */
  .wc-hero h1 { font-size: clamp(2.6rem, 8vw, 5rem); }
  .wc-hero p  { font-size: 1.05rem; margin: 1rem 0 1.75rem; }
  .wc-hero p.wc-tagline { font-size: clamp(1.1rem, 3.5vw, 1.5rem); }
  .wc-btn { padding: 0.85rem 1.6rem; font-size: 1rem; }

  /* Rank page: tighten the heading + card column */
  .wc-rank-page { padding-left: 1rem; padding-right: 1rem; }
  .wc-rank-heading h1 { font-size: clamp(2rem, 6vw, 3rem); }

  /* Leaderboard: still a table, just smaller */
  .wc-leaderboard-page { padding-left: 1rem; padding-right: 1rem; }
  .wc-table thead th { font-size: 0.7rem; padding: 0.7rem 0.6rem; letter-spacing: 0.12em; }
  .wc-table tbody td { padding: 0.55rem 0.6rem; font-size: 0.85rem; }
  .wc-rank { font-size: 1.1rem; width: 2.5rem; }
  .wc-elo  { font-size: 1.1rem; }
  .wc-player-cell img { width: 36px; height: 36px; }

  /* Best XI pitch: smaller frame photos */
  .wc-bestxi-page { padding-left: 1rem; padding-right: 1rem; }
  .wc-pitch-photo { width: 64px; height: 64px; }
  .wc-pitch-name-tag { min-width: 80px; padding: 0.18rem 0.45rem; }
  .wc-pitch-name-tag .name { font-size: 0.7rem; max-width: 90px; }
  .wc-pitch-name-tag .stat { font-size: 0.6rem; }
  .wc-row-fwd { top: 4%; } .wc-row-mid { top: 28%; }
  .wc-row-def { top: 54%; } .wc-row-gk  { top: 82%; }

  /* Subs row: smaller cards */
  .wc-sub-card .wc-pitch-photo { width: 50px; height: 50px; }
  .wc-sub-card .name { font-size: 0.75rem; }
  .wc-sub-card .elo  { font-size: 0.7rem; }
}

@media (max-width: 640px) {
  /* Nav links: only show essentials. Compare and Best XI hide; users can
     still reach them via the Home page or by sharing direct links. */
  .wc-nav { padding: 0 0.75rem; }
  .wc-brand {
    font-size: 1.05rem;
    letter-spacing: 0.05em;
    gap: 0.4rem;
  }
  /* Hide ".COM" if it's ever re-added; trim to just the wordmark */
  .wc-brand-tld { display: none; }
  .wc-nav-links { gap: 0.9rem; font-size: 0.7rem; letter-spacing: 0.1em; }
  .wc-nav-links a::after { display: none; }

  /* Ticker: compress further */
  .wc-ticker { height: 38px; }
  .wc-ticker-pill { font-size: 0.75rem; padding: 0 0.7rem; gap: 0.3rem; }
  .wc-ticker-day { font-size: 0.6rem; }
  .wc-ticker-time { display: none; }   /* save space on tiny screens */
  .wc-ticker-vs { display: none; }
  .wc-ticker-flag { font-size: 0.95rem; }
  .wc-ticker-all { padding: 0 0.65rem; font-size: 0.65rem; letter-spacing: 0.08em; }

  /* Recompute room for the fixed bars (they got shorter) */
  :root {
    --wc-nav-height: 56px;
    --wc-ticker-height: 38px;
  }

  /* Hero: tighter still, button full-width-ish */
  .wc-hero-inner { padding: 0 1.25rem; }
  .wc-eyebrow { font-size: 0.75rem; letter-spacing: 0.15em; padding: 0.25rem 0.55rem; }
  .wc-hero h1 { font-size: clamp(2.4rem, 12vw, 4rem); }
  .wc-hero p  { font-size: 0.95rem; max-width: 100%; }
  .wc-hero p.wc-tagline { font-size: 1.1rem; }
  .wc-nations span { flex-basis: 60px; }

  /* Rank page: single column already (768px rule above), but tighten the
     gap between cards and bump touch targets. */
  .wc-versus { gap: 1rem; }
  .wc-versus .vs-divider { font-size: 1.8rem; padding: 0.5rem 0; }
  .wc-card { padding: 1.5rem 1.25rem 1.75rem; }
  .wc-card-img-frame { width: 160px; height: 160px; margin-bottom: 1rem; }
  .wc-card .wc-name { font-size: 1.7rem; }
  .wc-card .wc-meta { font-size: 0.85rem; }
  .wc-card .wc-position { font-size: 0.7rem; padding: 0.2rem 0.6rem; letter-spacing: 0.14em; }

  /* Hover-only "Tap to vote" hint isn't useful on touch — replace with
     a permanent label so users know cards are tappable. */
  .wc-card .wc-select-hint { opacity: 1; color: var(--wc-gold); font-size: 0.75rem; margin-top: 0.85rem; }

  /* Filter banner: stack vertically */
  .wc-filter-banner { flex-direction: column; align-items: flex-start; gap: 0.5rem; padding: 0.7rem 0.85rem; }
  .wc-filter-banner .matchup { font-size: 0.95rem; }

  /* LEADERBOARD — collapse the table to a stacked card per row so it's
     actually readable on a phone. */
  .wc-leaderboard-heading h1 { font-size: 2rem; }
  .wc-filter-row { gap: 0.5rem; }
  .wc-filter-row select { min-width: 0; flex: 1 1 calc(50% - 0.5rem); font-size: 0.85rem; padding: 0.45rem 1.6rem 0.45rem 0.7rem; }
  .wc-filter-row .reset { flex: 1 1 100%; }

  .wc-table, .wc-table thead, .wc-table tbody, .wc-table tr, .wc-table th, .wc-table td {
    display: block;
    width: 100%;
  }
  .wc-table thead { display: none; }   /* labels embedded into each cell */
  .wc-table tr {
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--wc-border);
    display: grid;
    grid-template-columns: 2.5rem 1fr auto;
    grid-template-areas:
      "rank player elo"
      "rank meta meta";
    gap: 0.3rem 0.85rem;
    align-items: center;
  }
  .wc-table tr:hover { background: rgba(201,162,39,0.05); }
  .wc-table tbody td { padding: 0; border-bottom: none; }
  /* Map each cell into a grid area by position (1st=rank, 2nd=player, ...) */
  .wc-table tbody td:nth-child(1) { grid-area: rank; }
  .wc-table tbody td:nth-child(2) { grid-area: player; }
  .wc-table tbody td:nth-child(3),
  .wc-table tbody td:nth-child(4),
  .wc-table tbody td:nth-child(5) { grid-area: meta; display: inline-block; margin-right: 0.6rem; color: var(--wc-text-muted); font-size: 0.78rem; }
  .wc-table tbody td:nth-child(6) { grid-area: elo; }
  .wc-rank { font-size: 1.4rem; width: auto; }
  .wc-elo  { font-size: 1.25rem; }
  .wc-player-cell img { width: 40px; height: 40px; }
  .wc-player-cell .wc-player-name { font-size: 0.95rem; }
  .wc-chip { font-size: 0.65rem; padding: 0.15rem 0.45rem; }

  /* Best XI: stack pitch + subs; portrait pitch reads better on phones */
  .wc-bestxi-heading h1 { font-size: 2rem; }
  .wc-pitch-wrap { aspect-ratio: 3 / 4; max-width: 100%; }
  .wc-pitch-photo { width: 52px; height: 52px; border-width: 2px; }
  .wc-pitch-name-tag { min-width: 68px; padding: 0.12rem 0.35rem; }
  .wc-pitch-name-tag .name { font-size: 0.6rem; max-width: 70px; letter-spacing: 0.02em; }
  .wc-pitch-name-tag .stat { font-size: 0.52rem; gap: 0.2rem; }
  /* Re-stretch the rows for portrait pitch */
  .wc-row-fwd { top: 6%; }
  .wc-row-mid { top: 30%; }
  .wc-row-def { top: 56%; }
  .wc-row-gk  { top: 82%; }
  .wc-subs h2 { font-size: 1.2rem; }
  .wc-subs-row { grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: 0.5rem; }
  .wc-sub-card { padding: 0.6rem; }
  .wc-sub-card .wc-pitch-photo { width: 44px; height: 44px; }

  /* Compare page: stack slots (already done in older breakpoint), tighter */
  .wc-compare-page { padding-left: 1rem; padding-right: 1rem; }
  .wc-compare-slot { padding: 1rem; }
  .wc-compare-player .wc-pitch-photo { width: 100px; height: 100px; }
  .wc-compare-player .name { font-size: 1.1rem; }

  /* Player profile: tighten stat blocks */
  .wc-profile-page { padding-left: 1rem; padding-right: 1rem; }
  .wc-profile-img { width: 150px; height: 150px; border-width: 3px; }
  .wc-profile-name { font-size: 1.5rem; }
  .wc-profile-stats { gap: 0.6rem; }
  .wc-stat-block { padding: 0.85rem; }
  .wc-stat-block .value { font-size: 1.7rem; }
  .wc-stat-block .label { font-size: 0.62rem; letter-spacing: 0.15em; }
  .wc-stat-block .sub   { font-size: 0.72rem; }
  .wc-chart-wrap { height: 160px; }

  /* Fixtures page: shrink everything */
  .wc-fixtures-page { padding-left: 0.85rem; padding-right: 0.85rem; }
  .wc-fixture-card { gap: 0.6rem; padding: 0.7rem 0.85rem; }
  .wc-fixture-teams { font-size: 0.95rem; gap: 0.35rem; }
  .wc-fixture-time { font-size: 0.8rem; }

  /* Streak bubble: don't let it overlap the rank cards */
  .wc-streak { bottom: 1rem; right: 1rem; padding: 0.45rem 0.85rem; font-size: 0.8rem; }
  .wc-streak .count { font-size: 1.1rem; }

  /* Footer host strip */
  .wc-footer-strip { height: 5px; }
}

/* Touch-only: cards should react instantly to a tap. Hover styles only kick
 * in for devices with a real pointer (mouse). This is the modern "hover:
 * hover" / "any-pointer: fine" media query pattern. */
@media (hover: none) {
  /* Replace the desktop hover-shimmer with a press state */
  .wc-card { transition: transform 0.15s ease, box-shadow 0.15s ease; }
  .wc-card:active {
    transform: scale(0.98);
    box-shadow: 0 6px 18px rgba(201, 162, 39, 0.25);
    border-color: var(--wc-gold);
  }
  /* Disable the persistent hover lift on Best XI players */
  .wc-pitch-player:hover { transform: none; }
  .wc-pitch-player:active { transform: scale(0.95); }

  /* Default iOS tap highlight is an ugly translucent black — kill it. */
  a, button, .wc-card { -webkit-tap-highlight-color: transparent; }
}

@media (max-width: 380px) {
  /* Tiny phones: tighten the nav links since they're now just 4 items. */
  .wc-nav-links { font-size: 0.65rem; gap: 0.65rem; }
  .wc-brand { font-size: 0.95rem; }
  .wc-brand-mark { font-size: 0.85rem; padding: 0 0.3rem; }

  .wc-card-img-frame { width: 130px; height: 130px; }
  .wc-card .wc-name { font-size: 1.4rem; }

  .wc-ticker-flag { font-size: 0.85rem; }
}
