/* $FORGE leaderboard (leaderboard.js) — shared by the landing stage and the game page. */
.lb { --lb-line: var(--line, rgba(255,255,255,.08)); --lb-line2: var(--line-2, var(--line-strong, rgba(255,255,255,.16))); --lb-surface: var(--surface, #111114); position: relative; display: flex; flex-direction: column; min-height: 0; border: 1px solid var(--lb-line); border-radius: 24px; background: radial-gradient(80% 60% at 100% 0%, rgba(153,69,255,.08), transparent 60%), radial-gradient(60% 50% at 0% 100%, rgba(20,241,149,.05), transparent 60%), #0b0b0d; overflow: hidden; }
.lb .mono { font-family: var(--mono, ui-monospace, monospace); }
.lb-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 14px 18px; border-bottom: 1px solid var(--lb-line); }
.lb-status { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--text-2, #a3a3a8); }
.lb-time { color: var(--text-3, #6d6d73); }
.lb-dot { width: 7px; height: 7px; border-radius: 50%; background: #6d6d73; }
.lb-dot.live { background: #14F195; box-shadow: 0 0 10px rgba(20,241,149,.8); animation: lbBeat 2.4s ease-in-out infinite; }
.lb-dot.preview { background: #b98cff; box-shadow: 0 0 10px rgba(153,69,255,.7); }
.lb-dot.offline { background: #ff6b52; }
@keyframes lbBeat { 50% { opacity: .35; } }
.lb-tools { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 12px 18px; border-bottom: 1px solid var(--lb-line); }
.lb-tabs { display: flex; gap: 4px; }
.lb-tabs button { height: 30px; padding: 0 12px; border-radius: 999px; border: 1px solid transparent; background: none; color: var(--text-3, #6d6d73); cursor: pointer; font: 500 10.5px/1 var(--mono, monospace); letter-spacing: .12em; text-transform: uppercase; transition: color .2s, border-color .2s; }
.lb-tabs button:hover { color: var(--text, #f4f4f2); }
.lb-tabs button.on { color: var(--text, #f4f4f2); border-color: var(--lb-line2); }
.lb-search input { width: min(320px, 70vw); height: 34px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--lb-line2); background: rgba(255,255,255,.03); color: var(--text, #f4f4f2); font: 500 12px/1 var(--mono, monospace); letter-spacing: .04em; outline: none; transition: border-color .2s; }
.lb-search input:focus { border-color: rgba(153,69,255,.6); }
.lb-cols, .lb-row { display: grid; grid-template-columns: 52px 34px minmax(0, 1fr) 120px 72px; align-items: center; column-gap: 12px; padding: 0 18px; }
.lb-cols { height: 32px; font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--text-3, #6d6d73); border-bottom: 1px solid var(--lb-line); }
.lb-c-score, .lb-c-chg, .lb-score, .lb-chg { text-align: right; }
.lb-view { position: relative; flex: 1; min-height: 0; overflow: hidden; }
.lb-full .lb-view { overflow-y: auto; overscroll-behavior: contain; max-height: 560px; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.15) transparent; }
.lb-list { position: relative; }
.lb-row { position: absolute; left: 0; right: 0; top: 0; border-bottom: 1px solid var(--lb-line); transition: transform .6s cubic-bezier(.22, 1.12, .36, 1), background-color .4s; will-change: transform; contain: layout paint; }
.lb-row:hover { background-color: rgba(255,255,255,.025); }
.lb-row.is-you { background-color: rgba(153,69,255,.08); box-shadow: inset 2px 0 0 #9945FF; }
.lb-row.up { animation: lbUp 1.6s ease-out; } .lb-row.down { animation: lbDown 1.6s ease-out; }
@keyframes lbUp { 0%, 30% { background-color: rgba(20,241,149,.12); } 100% { background-color: transparent; } }
@keyframes lbDown { 0%, 30% { background-color: rgba(255,90,70,.10); } 100% { background-color: transparent; } }
.lb-row.enter { animation: lbEnter .45s ease-out; }
@keyframes lbEnter { from { opacity: 0; } }
.lb-rank { font-size: 12px; color: var(--text-3, #6d6d73); letter-spacing: .06em; }
.lb-row.podium .lb-rank { color: var(--text, #f4f4f2); }
.lb-av svg { width: 30px; height: 30px; display: block; }
.lb-name { display: flex; align-items: center; gap: 8px; min-width: 0; }
.lb-name b { font: 600 15px/1.2 var(--display, system-ui); letter-spacing: -.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text, #f4f4f2); }
.lb-name em { display: inline-flex; gap: 6px; font-style: normal; flex: none; }
.lb-tag { font: 500 8.5px/1 var(--mono, monospace); letter-spacing: .12em; padding: 3px 5px; border-radius: 4px; border: 1px solid var(--lb-line2); color: var(--text-3, #6d6d73); }
.lb-tag.you { border-color: rgba(153,69,255,.55); color: #c9a8ff; }
.lb-tag.ok { border: 0; padding: 0; font-size: 11px; color: #14F195; }
.lb-score { font-size: 14px; font-weight: 600; color: var(--text, #f4f4f2); font-variant-numeric: tabular-nums; }
.lb-chg { font-size: 11px; color: var(--text-3, #6d6d73); }
.lb-chg.pos { color: #14F195; } .lb-chg.neg { color: #ff6b52; } .lb-chg.new { color: #b98cff; letter-spacing: .1em; }
.lb-empty { padding: 40px 18px; text-align: center; color: var(--text-3, #6d6d73); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; }
.lb-compact .lb-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; padding: 24px; }
.lb-empty[hidden] { display: none !important; }
.lb-empty-cta { display: inline-flex; align-items: center; height: 40px; padding: 0 20px; border-radius: 999px; background: linear-gradient(120deg, #9945FF, #7B61FF 45%, #14F195); color: #0b0b0d; font: 600 11px/1 var(--mono, monospace); letter-spacing: .14em; text-decoration: none; }
.lb-empty-cta:hover { filter: brightness(1.08); }
.lb-foot { padding: 10px 18px; border-top: 1px solid var(--lb-line); font-size: 9.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--text-3, #6d6d73); }
/* compact (landing): no tools, rows fit the stage */
.lb-compact { height: 100%; }
.lb-compact .lb-cols, .lb-compact .lb-row { padding: 0 16px; }
@media (max-width: 760px) {
  .lb-cols, .lb-row { grid-template-columns: 40px 30px minmax(0, 1fr) 84px 44px; column-gap: 8px; padding: 0 12px; }
  .lb-head, .lb-tools, .lb-foot { padding-left: 12px; padding-right: 12px; }
  .lb-search input { width: 100%; }
  .lb-search { flex: 1 1 100%; }
  .lb-score { font-size: 13px; }
}
@media (prefers-reduced-motion: reduce) { .lb-row { transition: none; } .lb-row.up, .lb-row.down, .lb-row.enter, .lb-dot.live { animation: none; } }
.lb-name b { text-transform: none !important; }
.lb-compact .lb-view:has(.lb-empty:not([hidden])) { min-height: 240px; }

/* AI pilots: hold open spots until real pilots arrive */
.lb-ai-note { padding: 4px 8px; border-radius: 999px; border: 1px solid var(--lb-line2); color: var(--text-2, #a3a3a8); font-size: 9.5px; cursor: help; }
