#game { max-width: 880px; margin: 0 auto; padding: 1.5rem 1rem; display: grid; grid-template-columns: 1fr 260px; gap: 1.5rem; align-items: start; }
@media (max-width: 900px) { #game { grid-template-columns: 1fr; } }

.race-top { grid-column: 1 / -1; display: flex; justify-content: space-between; gap: 1rem; align-items: center; flex-wrap: wrap; }
.meta { display: flex; gap: 1.5rem; font-variant-numeric: tabular-nums; }
.meta > div { display: flex; align-items: baseline; gap: .35rem; font-size: 1.6rem; font-weight: 800; }
.meta > div span { font-size: .6rem; letter-spacing: .12em; color: var(--muted); font-weight: 700; text-transform: uppercase; }

#passage { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: clamp(1rem, 2.2vw, 1.3rem); line-height: 2; padding: 1.25rem; background: #ffffff06; border: 1px solid var(--border); border-radius: 14px; user-select: none; height: 11em; overflow-y: auto; scrollbar-width: none; position: relative; mask-image: linear-gradient(180deg, transparent 0%, #000 18%, #000 82%, transparent 100%); }
#passage::-webkit-scrollbar { display: none; }
#passage .c { color: #6a6a78; transition: color .05s; position: relative; }
#passage .c.ok { color: #eaeaf0; }
#passage .c.err { color: #ef476f; background: #ef476f22; border-radius: 2px; }
#passage .c.cursor { color: #eaeaf0; background: var(--accent); color: #111; border-radius: 2px; }

#typer { width: 100%; margin-top: 1rem; padding: .8rem 1rem; font: inherit; font-family: ui-monospace, monospace; font-size: 1rem; background: #ffffff0a; border: 1px solid var(--border); border-radius: 10px; color: inherit; }
#typer:focus { outline: 2px solid var(--accent); border-color: transparent; }
#typer:disabled { opacity: .5; }

#racePanel { background: #ffffff05; border: 1px solid var(--border); border-radius: 12px; padding: 1rem; }
#racePanel h3 { margin: 0 0 .6rem; font-size: .8rem; text-transform: uppercase; letter-spacing: .1em; color: var(--muted); }
#raceList { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .45rem; }
#raceList li { background: #ffffff06; border: 1px solid var(--border); border-radius: 10px; padding: .5rem .65rem; }
#raceList .name { display: flex; justify-content: space-between; align-items: center; font-size: .85rem; }
#raceList .name .wpm { color: var(--muted); font-size: .75rem; font-variant-numeric: tabular-nums; }
#raceList .rank { font-size: .68rem; background: var(--accent); color: #111; padding: .1rem .4rem; border-radius: 4px; font-weight: 700; }
#raceList .bar { height: 5px; background: #ffffff14; border-radius: 3px; margin-top: .3rem; overflow: hidden; }
#raceList .bar > div { height: 100%; background: linear-gradient(90deg, var(--accent), var(--accent2)); transition: width .2s; }
#raceList .quit { opacity: .4; }
#raceList .quit .name { text-decoration: line-through; }

#countdown { position: fixed; inset: 0; display: grid; place-items: center; font-size: 8rem; font-weight: 800; color: var(--accent); background: #000a; backdrop-filter: blur(8px); z-index: 10; font-variant-numeric: tabular-nums; text-shadow: 0 0 40px #f5c45188; }

#lPlayers { list-style: none; padding: 0; margin: 1rem 0; display: flex; flex-direction: column; gap: .4rem; }
#lPlayers li { padding: .6rem .85rem; background: #ffffff08; border: 1px solid var(--border); border-radius: 10px; display: flex; justify-content: space-between; align-items: center; }
#lPlayers li .host { font-size: .65rem; background: var(--accent); color: #111; padding: .15rem .45rem; border-radius: 4px; margin-left: .4rem; font-weight: 700; letter-spacing: .08em; }

#scoreboard { list-style: none; padding: 0; margin: 1rem 0; counter-reset: rank; }
#scoreboard li { padding: .8rem 1rem; background: #ffffff08; border: 1px solid var(--border); border-radius: 10px; margin-bottom: .45rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
#scoreboard li::before { content: counter(rank); counter-increment: rank; font-size: 1.4rem; font-weight: 800; margin-right: .75rem; color: var(--accent); min-width: 1.5rem; }
#scoreboard li:nth-child(1)::before { color: #ffd166; }
#scoreboard li:nth-child(2)::before { color: #c0c0c0; }
#scoreboard li:nth-child(3)::before { color: #cd7f32; }
#scoreboard li.me { outline: 2px solid var(--accent); }
#scoreboard .stats { opacity: .6; font-variant-numeric: tabular-nums; font-size: .85rem; }
