/* Room leaderboard — used by leaderboard.js. Prefix lb-. Colours come from the
   style.css tokens so it follows the Synapxe palette. */
.lb-list{list-style:none;margin:0;padding:0}
.lb-row{display:grid;grid-template-columns:38px minmax(0,1fr) minmax(60px,26%) 62px;align-items:center;gap:12px;padding:9px 12px;margin:0 0 6px;background:var(--bg-white);border:1px solid var(--border);border-radius:10px}
.lb-row.lb-me{border-color:var(--brand-light);background:#F5F3FF;box-shadow:0 0 0 2px rgba(124,58,237,.16)}
.lb-rank{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-family:'Outfit',sans-serif;font-weight:800;font-size:14px;color:var(--brand);background:#EDE9FE}
.lb-rank.lb-r1{background:#F59E0B;color:#fff}
.lb-rank.lb-r2{background:#94A3B8;color:#fff}
.lb-rank.lb-r3{background:#B45309;color:#fff}
.lb-name{font-weight:600;color:var(--text-heading);font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-you{display:inline-block;margin-left:8px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:var(--brand-light);border-radius:5px;padding:1px 7px;vertical-align:middle}
.lb-bar{height:8px;border-radius:5px;background:#EDE9FE;overflow:hidden}
.lb-bar i{display:block;height:100%;border-radius:5px;background:var(--gradient-brand-vivid)}
.lb-score{text-align:right;font-family:'Outfit',sans-serif;color:var(--text-heading);white-space:nowrap}
.lb-score b{font-size:18px;font-weight:800}
.lb-score small{font-size:12px;color:var(--text-muted);margin-left:1px}
.lb-gap{text-align:center;color:var(--text-dim);letter-spacing:.3em;padding:0 0 6px}
.lb-more,.lb-empty{font-size:13px;color:var(--text-muted);text-align:center;padding:10px}
.lb-empty{border:1.5px dashed var(--border);border-radius:10px;padding:18px}
[hidden]{display:none!important}

/* in-lab panel */
.lb-panel{background:var(--bg-white);border:1px solid var(--border);border-radius:12px;padding:20px 24px;margin:16px 0;box-shadow:var(--shadow-sm)}
.lb-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.lb-head h3{margin:0;font-family:'Outfit',sans-serif;font-size:17px;color:var(--text-heading);border:none;padding:0}
.lb-head .lb-sp{flex:1}
.lb-meta{font-size:12.5px;color:var(--text-muted)}
.lb-btn{appearance:none;cursor:pointer;font:600 12.5px 'DM Sans',sans-serif;color:var(--brand);background:#fff;border:1.5px solid var(--border);border-radius:8px;padding:6px 12px;text-decoration:none}
.lb-btn:hover{border-color:var(--border-hover)}

#lb-body.lb-scroll{max-height:560px;overflow-y:auto;padding-right:4px}

/* projector page */
.lbp-body{background:var(--bg);margin:0;min-height:100vh}
.lbp{max-width:1100px;margin:0 auto;padding:28px 32px 40px}
.lbp-top{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:22px}
.lbp-top h1{margin:0;font-family:'Outfit',sans-serif;font-size:clamp(28px,4vw,46px);color:var(--text-heading);line-height:1.1}
.lbp-top .lbp-sub{font-size:16px;color:var(--text-muted);margin-top:6px}
.lbp-top .lb-sp{flex:1}
.lbp-stats{display:flex;gap:12px}
.lbp-stat{background:var(--bg-white);border:1px solid var(--border);border-radius:12px;padding:10px 18px;text-align:center;min-width:92px}
.lbp-stat b{display:block;font-family:'Outfit',sans-serif;font-size:30px;color:var(--brand);line-height:1.1}
.lbp-stat span{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}
.lbp .lb-row{grid-template-columns:56px minmax(0,1fr) minmax(120px,30%) 96px;gap:18px;padding:12px 18px;margin-bottom:9px;border-radius:14px}
.lbp .lb-rank{width:42px;height:42px;font-size:20px}
.lbp .lb-name{font-size:24px}
.lbp .lb-bar{height:12px}
.lbp .lb-score b{font-size:30px}
.lbp .lb-score small{font-size:16px}
.lbp .lb-more{font-size:17px}
.lbp-foot{display:flex;gap:14px;align-items:center;margin-top:14px;font-size:13px;color:var(--text-muted);flex-wrap:wrap}
.lbp-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--green);margin-right:6px;vertical-align:baseline}
.lbp-dot.off{background:#B45309}
.lbp-err{background:var(--amber-bg);border-left:3px solid #B45309;color:#78350F;padding:10px 14px;border-radius:0 8px 8px 0;font-size:14px;margin-bottom:14px}

@media (max-width:640px){
  .lb-row{grid-template-columns:34px minmax(0,1fr) 54px}
  .lb-bar{display:none}
  .lbp{padding:18px 14px}
  .lbp .lb-row{grid-template-columns:42px minmax(0,1fr) 70px}
  .lbp .lb-name{font-size:18px}
}
@media (prefers-reduced-motion:no-preference){
  .lb-bar i{transition:width .5s var(--ease)}
}
