.center { min-height: 100dvh; display: grid; place-items: center; padding: 16px; }
.loginbox { width: min(420px, 100%); }
.loginbox input[type=password] { font-size: 28px; letter-spacing: 10px; text-align: center; }
.err { color: var(--bad); font-weight: 600; }
#main { display: flex; flex-direction: column; height: 100dvh; }
.vhead { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 16px; background: var(--surface); border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.vhead h1 { margin: 0; font-size: 1.3em; }
.vgrid { flex: 1; min-height: 0; display: grid; grid-template-columns: 1fr; grid-template-rows: 55dvh auto; }
.vmap { position: relative; min-height: 300px; }
.vside { overflow: auto; padding: 12px 16px 24px; }
.vside h2 { font-size: 1.05em; margin: 16px 0 8px; }
@media (min-width: 900px) { .vgrid { grid-template-columns: 1fr 440px; grid-template-rows: 1fr; } .vside { border-left: 1px solid var(--border); } }
.vrank { list-style: none; margin: 0; padding: 0; }
.vrank li { display: flex; align-items: center; gap: 10px; padding: 8px 10px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; margin-bottom: 6px; }
.vrank .pos { font-weight: 800; font-size: 1.3em; width: 26px; text-align: center; }
.vrank .pts { margin-left: auto; font-weight: 800; font-size: 1.3em; text-align: right; }
.vrank .badges { font-size: .8em; }
.prog { display: grid; grid-template-columns: 70px 1fr 64px; align-items: center; gap: 8px; margin-bottom: 6px; font-weight: 600; }
.prog .bar { height: 14px; background: var(--surface-2); border-radius: 999px; overflow: hidden; }
.prog .bar > div { height: 100%; }
.vrecent { list-style: none; padding: 0; margin: 0; }
.vrecent li { display: flex; gap: 10px; align-items: center; padding: 6px 0; border-bottom: 1px solid var(--border); font-size: .92em; }
.vrecent img { width: 56px; height: 56px; object-fit: cover; border-radius: 8px; }
.winner { text-align: center; padding: 14px; border-radius: 12px; background: linear-gradient(135deg, #ffe082, #ffca28); color: #3e2a00; font-weight: 800; font-size: 1.2em; }
body.kiosk .vhead { padding: 6px 16px; }
body.kiosk { font-size: 20px; }
body.kiosk .vgrid { grid-template-columns: 1fr; grid-template-rows: 1fr; }
body.kiosk.showRank .vmap { display: none; }
body.kiosk:not(.showRank) .vside { display: none; }
body.kiosk .vside { max-width: 900px; margin: 0 auto; width: 100%; border: 0; }
