@font-face{font-family:'Pixelify Sans';src:url('/assets/fonts/PixelifySans.ttf') format('truetype');font-weight:400 700;font-style:normal;font-display:swap}
/* Teacher command screen: one-line roster, TV-sized battlefield, pixel console framing. */
.host-console{--console-bg:#101a32;--console-panel:#1b2945;--console-edge:#52617f;--console-ink:#eff5ff;color:var(--console-ink);background:radial-gradient(ellipse at 70% 15%,#28334f,transparent 65%),var(--console-bg);max-width:none;width:100%;height:100dvh;min-height:0;padding:0 12px 10px;overflow:hidden;font-family:ui-sans-serif,system-ui,sans-serif}
.host-console button{border-radius:3px;border:2px solid #657490;background:#293b59;color:#ecf5ff;box-shadow:inset 0 2px #ffffff12,0 3px #071124;min-height:40px;font-size:16px;padding:7px 12px;transition:background .15s,transform .15s}
.host-console button:hover:not(:disabled){background:#3c5577;filter:none}.host-console button:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 2px #ffffff12,0 1px #071124}.host-console button:disabled{opacity:.5}
.host-console .game-toolbar{height:72px;min-height:0;gap:20px;border-bottom:2px solid #47526c;margin-bottom:12px}
.host-wordmark{font-family:ui-monospace,monospace;font-size:21px;line-height:1;font-weight:1000;letter-spacing:-1px;text-decoration:none;text-shadow:2px 2px #060f21}.host-wordmark span{color:#ff9d78;margin-left:6px}
.host-console .host-code{border:2px solid #64718b;border-radius:3px;background:#121f35;padding:5px 14px;gap:14px;box-shadow:inset 0 2px #050e26}.host-console .host-code small{color:#a6b7d0;font-size:12px;letter-spacing:1px}.host-console .host-code strong{font-size:29px;color:#f9dc81}
.host-console .toolbar-actions{gap:7px}.host-console .toolbar-actions button{font-size:14px;min-height:38px;padding:5px 10px}.host-console .connection{color:#adc1d7;font-size:11px}.host-console [data-ban-count]{font-size:12px;min-width:17px;display:inline-block;color:#ffb48f}
.host-console .host-grid{height:calc(100% - 84px);grid-template-columns:370px minmax(0,1fr);gap:12px;align-items:start}
.host-console .host-rail{border:2px solid var(--console-edge);border-radius:3px;background:linear-gradient(125deg,#25334e,#16253e);box-shadow:inset 0 2px #ffffff12,0 4px #081326;color:#edf5ff;max-height:100%;scrollbar-color:#667797 #17253d;scrollbar-width:thin}
.host-console .host-stats{padding:10px 7px 5px;height:100%;display:flex;flex-direction:column;overflow:hidden}
.rank-title{display:flex;align-items:center;justify-content:space-between;padding:0 6px}.rank-title h2{font:900 18px ui-monospace,monospace;letter-spacing:.5px;margin:0!important}.rank-title>span{color:#ffcf66;font-size:22px}.rank-explainer{font-size:12px;color:#aabbd6;padding:4px 6px 7px;margin:0;border-bottom:1px solid #53617a}
.ranking-head,.host-console .rank-player{display:grid;grid-template-columns:24px minmax(105px,1fr) 43px 38px 36px 42px;gap:3px;align-items:center}
.ranking-head{min-height:26px;font-size:10px;font-weight:900;color:#a6b7d2;padding:0 3px;text-align:right}.ranking-head span:nth-child(2){text-align:left;padding-left:27px}.ranking-list{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin}
.host-console .rank-player{height:25px;width:100%;min-height:25px;padding:0 3px;box-shadow:none;border:0;border-bottom:1px solid #35425c;border-radius:0;background:transparent;font-size:13px;font-variant-numeric:tabular-nums;text-align:right;position:relative;isolation:isolate}
.host-console .rank-player:hover{background:#3b4d70!important}.rank-player.red{--rank-team:#ff9e95}.rank-player.blue{--rank-team:#85d3ff}.rank-player .rank-person{display:flex;align-items:center;gap:3px;min-width:0;text-align:left;color:var(--rank-team)}.rank-person>b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:800;letter-spacing:-.2px}.host-avatar{display:inline-block;width:24px;height:24px;flex:0 0 24px;background-image:url('/assets/avatars.png');background-size:300% 200%;background-position:var(--avatar-x) var(--avatar-y);image-rendering:pixelated;background-repeat:no-repeat}
.rank-number{font-family:ui-monospace,monospace;color:#95a6c4;text-align:center;font-size:12px}.rank-player.podium .rank-number{color:#ffdb7c;font-weight:900}.rank-points{color:#eee2ac;font-weight:900}.rank-coins{color:#dcbf72}.rank-hit,.rank-saved{color:#bed0e2}.rank-player.needs-name{background:#67513166}.name-alert{font-style:normal;color:#ffd179;font-size:12px}.host-roster-hint{font-size:11px;color:#8399b9;margin:7px 4px 0}
.host-console .host-center{height:100%;display:flex;flex-direction:column;justify-content:center;min-width:0;gap:9px}
.host-console .arena-shell{width:100%;max-width:min(100%,calc((100dvh - 215px)*1.7778));margin:0 auto;border-radius:4px;border:3px solid #6f7991;box-shadow:0 4px #050d20,inset 0 0 0 2px #ffffff55;flex:none}
.host-console .arena-world{aspect-ratio:1200/675}.host-console .battle-ticker{height:40px;background:#0f1d33;font-size:17px;color:#eff3ff;border-top:2px solid #62708c}.host-console .ticker-item b.red{color:#ff978f}.host-console .ticker-item b.blue{color:#84d5ff}
.host-console .host-controls{padding:4px 0 0;display:flex;justify-content:center;gap:7px;align-items:center;flex-wrap:wrap;flex:none}.host-console .host-controls button{font-size:15px}.host-console .host-controls [data-host="start"]{background:#d7614e;border-color:#ffa989}.host-console [data-host-count]{font:800 12px ui-monospace,monospace;color:#9fb0ca;margin-left:6px}.host-console [data-host="stats"]{display:none}
.host-match-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;font:800 11px ui-monospace,monospace;letter-spacing:.4px;padding:8px;color:#6c81a2;flex:none}.host-strip-red{color:#e48b88}.host-strip-blue{color:#76bce6}
.host-console .host-focus{display:none;position:absolute;right:14px;top:83px;width:280px;max-height:calc(100dvh - 96px);z-index:45;padding:17px;overflow:auto;box-shadow:0 12px 40px #030719bb}.host-console .host-focus.rail-open{display:block}.host-console .host-focus h2{font:900 18px ui-monospace,monospace}.host-console .focus-team h3{font-size:17px;margin:16px 0 4px}.host-console .focus-team.red h3{color:#ff9e95}.host-console .focus-team.blue h3{color:#8bd5ff}.host-console .focus-group{padding:7px 0;border-bottom:1px solid #46526a}.host-console .focus-group>b{font-size:15px}.host-console .focus-group>span{font-size:13px;color:#a7b9d6}.host-console .focus-group em{background:#3c4d6d;color:#dfeaff;border-radius:2px}.host-console .team-callout{background:#685539;color:#ffe3a2;border:1px solid #b59969;border-radius:2px;font-size:14px;margin-top:8px}.host-console .phaser-mini{color:#cdb7ff;font-size:15px}.host-console .phaser-mini progress{accent-color:#b58dff}
.host-console .intro-banner{background:#14243bf2;border:3px solid #a1b8d4;border-radius:4px;width:94%;padding:20px;color:#eaf4ff;margin:0;box-shadow:0 8px 0 #050d23b3}.host-console .intro-banner h2{text-align:center;font:900 22px ui-monospace,monospace;margin:0 0 14px;color:#fff0b4}.host-console .intro-teams{display:grid;grid-template-columns:1fr 1fr;gap:15px}.host-console .intro-teams>div{padding:12px;border-radius:2px}.host-console .intro-teams .red{background:#552f40;border:2px solid #e58682}.host-console .intro-teams .blue{background:#1f4563;border:2px solid #76bbed}.host-console .intro-teams h3{font-size:20px;color:#fff;margin-bottom:12px}.host-console .intro-names{display:grid;grid-template-columns:1fr 1fr;gap:5px;font-size:clamp(12px,1.05vw,19px);line-height:1.3;color:#f4f7ff}.host-console .intro-names span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:2px 3px;background:#ffffff09;border-radius:0}.host-console .intro-countdown{font:900 24px ui-monospace,monospace;color:#ffdd8c;background:#09182f;border:1px solid #73839f;border-radius:2px;padding:5px 8px}.host-console .intro-banner>.intro-countdown{position:absolute;top:13px;right:14px}
.host-console .lobby-note,.host-console .pause-note{background:#16263eee;color:#f6f5ef;border:3px solid #9eb3cf;border-radius:4px;padding:24px;box-shadow:0 6px 0 #091224}.host-console .lobby-note{width:min(75%,580px)}.host-console .lobby-note h2,.host-console .pause-note h2{font-family:ui-monospace,monospace;font-size:clamp(20px,2vw,32px);line-height:1.25;color:#fff0b5}.host-console .lobby-note p{color:#bed1e7;font-size:20px}.intro-avatar-line{display:flex;justify-content:center;margin:16px 0}.intro-avatar-line .host-avatar{width:48px;height:48px;flex-basis:48px}
.moderation-player{display:flex;align-items:center;gap:15px;margin-bottom:25px}.moderation-player .host-avatar{width:70px;height:70px;flex-basis:70px}.moderation-player h2{margin:0 0 5px}.moderation-player p{margin:0;font-size:17px}.moderation-player.red{color:#b34146}.moderation-player.blue{color:#2678ad}.moderation-actions{display:grid;gap:10px}.moderation-actions button{width:100%;font-size:23px;min-height:56px}.moderation-actions p,.ban-scope{font-size:17px;line-height:1.5;margin:0 0 18px;color:#617383}.danger-button{background:#be4050!important;color:white!important}.ban-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 0;border-bottom:1px solid #c3cfdb}.ban-row strong{font-size:21px}.ban-row button{font-size:18px}.ban-screen{border:3px solid #566889;border-radius:3px;background:#17263c;color:#eff5ff}.ban-screen p{color:#c5d4e9;font-size:20px}
@media(min-width:1750px){.host-console .host-grid{grid-template-columns:405px minmax(0,1fr) 230px}.host-console .host-focus{position:static;width:auto;display:block;height:100%;max-height:100%;box-shadow:inset 0 2px #ffffff12,0 4px #081326;padding:13px}.host-console [data-host="team"]{display:none}.host-console .rank-player{height:29px;min-height:29px;font-size:15px}.rank-person>b{font-size:15px}.host-console .ranking-head,.host-console .rank-player{grid-template-columns:25px minmax(110px,1fr) 49px 40px 42px 45px}.host-console .ranking-head{font-size:11px}.host-console .host-avatar{width:27px;height:27px;flex-basis:27px}.host-console .host-controls button{font-size:17px}.host-console .arena-shell{max-width:min(100%,calc((100dvh - 205px)*1.7778))}}
@media(max-width:1120px){.host-console .host-grid{grid-template-columns:1fr}.host-console .host-stats{display:none;position:absolute;left:12px;top:80px;width:370px;max-width:calc(100% - 24px);height:calc(100dvh - 96px);z-index:45;box-shadow:0 12px 40px #030719bb}.host-console .host-stats.rail-open{display:flex}.host-console [data-host="stats"]{display:block}.host-console .game-toolbar{gap:12px}.host-wordmark{font-size:18px}.host-console .host-code{padding:5px 9px}.host-console .host-code small{display:none}.host-console .host-code strong{font-size:24px}.host-console .toolbar-actions .connection{display:none}.host-console .toolbar-actions button{font-size:13px;padding:5px 8px}.host-console .arena-shell{max-width:min(100%,calc((100dvh - 195px)*1.7778))}.host-console .host-center{justify-content:center}}
@media(max-width:700px){.host-console{padding:0 7px 8px}.host-console .game-toolbar{flex-wrap:wrap;height:auto;min-height:92px;gap:8px;padding:8px 0;margin-bottom:8px}.host-console .toolbar-actions{margin-left:auto;gap:4px}.host-console .host-grid{height:calc(100% - 110px)}.host-console .host-wordmark{font-size:16px}.host-console .host-code strong{font-size:22px}.host-console .toolbar-actions button{min-height:36px;font-size:12px;padding:4px 6px}.host-console .host-match-strip{font-size:9px}.host-match-strip>span:nth-child(2){display:none}.host-console .host-controls button{font-size:14px;min-height:42px}.host-console .host-focus,.host-console .host-stats{top:110px;max-height:calc(100dvh - 125px)}.host-console .intro-banner{padding:12px}.host-console .intro-banner h2{font-size:16px;margin-bottom:7px}.host-console .intro-countdown{font-size:16px}.host-console .intro-teams{gap:8px}.host-console .intro-teams>div{padding:6px}.host-console .intro-teams h3{font-size:14px;margin-bottom:5px}.host-console .intro-names{font-size:11px;gap:2px}.host-console .lobby-note{padding:16px}.intro-avatar-line .host-avatar{width:34px;height:34px;flex-basis:34px}}
.host-wordmark,.host-console .rank-title h2,.host-console .host-focus h2,.host-console .intro-banner h2,.host-console .lobby-note h2,.host-console .pause-note h2{font-family:'Pixelify Sans',ui-monospace,monospace;letter-spacing:.3px}
@media(prefers-reduced-motion:reduce){.host-console *{animation:none!important;transition:none!important}}

/* Names take priority over secondary numbers on a classroom projector. */
.host-console .host-grid{grid-template-columns:430px minmax(0,1fr)}
.host-console .host-focus{display:none;position:absolute;right:14px;top:83px;width:290px;max-height:calc(100dvh - 96px);height:auto;z-index:45;box-shadow:0 12px 40px #030719bb}
.host-console .host-focus.rail-open{display:block}.host-console [data-host="team"]{display:block}
.host-console .ranking-head,.host-console .rank-player{grid-template-columns:32px minmax(0,1fr) 64px;gap:6px}
.host-console .ranking-head>span:nth-child(n+4),.host-console .rank-coins,.host-console .rank-hit,.host-console .rank-saved{display:none}
.host-console .ranking-head{font-size:13px;min-height:30px}.host-console .ranking-head>span:nth-child(2){padding-left:40px}
.host-console .rank-player{height:35px;min-height:35px;font-size:21px}
.host-console .rank-person>b{font:800 22px ui-monospace,monospace;letter-spacing:-.7px;line-height:1;white-space:nowrap}
.host-console .rank-person{gap:6px}.host-console .rank-number{font-size:19px}.host-console .rank-points{font-size:21px}
.host-console .rank-player .host-avatar{width:33px;height:33px;flex-basis:33px}.host-console .rank-title h2{font-size:25px}.host-console .rank-explainer{font-size:15px}.host-console .host-roster-hint{font-size:13px}
.host-console .host-invite{width:88%;max-width:880px;padding:28px 20px}.host-console .lobby-join-code{display:block;font:900 clamp(64px,7.8vw,150px)/1.05 ui-monospace,monospace;letter-spacing:.05em;color:#ffdf86;text-shadow:0 5px #8d6749,3px 0 #8d6749;margin:15px 0 25px}.host-console .host-invite h2{font-size:clamp(26px,2vw,40px);letter-spacing:2px}.host-console .host-invite p{font-size:25px}.host-console .host-invite button{font-size:24px;min-height:55px;padding:12px 26px}.host-console.is-lobby .arena-hud{opacity:0}
.host-player-details{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 25px;text-align:center}.host-player-details span{font-size:15px;color:#667b8d}.host-player-details b{display:block;font-size:26px;color:#233c53}
@media(min-width:1750px) and (min-height:921px){.host-console .host-grid{grid-template-columns:600px minmax(0,1fr)}.host-console .ranking-head,.host-console .rank-player{grid-template-columns:32px minmax(0,1fr) 62px 52px 52px 62px;gap:6px}.host-console .ranking-head>span:nth-child(n+4),.host-console .rank-coins,.host-console .rank-hit,.host-console .rank-saved{display:block}.host-console .rank-coins,.host-console .rank-hit,.host-console .rank-saved{font-size:18px}.host-console .rank-person>b{font-size:24px;letter-spacing:-.8px}.host-console .rank-player{height:35px;min-height:35px}}
@media(min-width:1121px) and (max-height:920px){.host-console .host-grid{grid-template-columns:650px minmax(0,1fr)}.host-console .ranking-list{display:grid;grid-auto-flow:column;grid-template-rows:repeat(var(--ranking-rows),40px);grid-template-columns:1fr 1fr;gap:0 14px;align-content:start}.host-console .rank-player{height:40px;min-height:40px;grid-template-columns:28px minmax(0,1fr) 46px;gap:4px}.host-console .rank-person>b{font-size:22px;letter-spacing:-.9px}.host-console .rank-player .host-avatar{width:29px;height:29px;flex-basis:29px}.host-console .rank-number{font-size:17px}.host-console .rank-points{font-size:18px}.host-console .ranking-head{grid-template-columns:28px minmax(0,1fr) 46px;width:calc(50% - 7px)}.host-console .host-roster-hint{margin-top:8px}.host-console .host-invite{padding:16px}.host-console .lobby-join-code{font-size:clamp(70px,8vw,120px);margin:8px 0 15px}.host-console .host-invite h2{font-size:24px}.host-console .host-invite p{font-size:20px;margin-bottom:12px}.host-console .host-invite button{font-size:20px;min-height:46px}}
@media(max-width:1120px){.host-console .host-grid{grid-template-columns:1fr}.host-console .host-stats{width:430px}.host-console .rank-player{height:40px;min-height:40px}.host-console .lobby-join-code{font-size:clamp(50px,10vw,108px)}}
@media(max-width:700px){.host-console .rank-person>b{font-size:20px}.host-console .rank-player{grid-template-columns:27px minmax(0,1fr) 54px;gap:4px}.host-console .host-focus{top:110px;max-height:calc(100dvh - 125px)}.host-console .host-invite{padding:12px}.host-console .lobby-join-code{font-size:clamp(40px,10.5vw,65px);margin:7px 0 13px}.host-console .host-invite h2{font-size:20px}.host-console .host-invite p{font-size:18px;margin-bottom:12px}.host-console .host-invite button{font-size:18px;min-height:44px}.host-console .host-player-details{grid-template-columns:repeat(2,1fr)}}
/* Host rankings show Score only; students can open their contribution breakdown. */
.host-console .ranking-head>span:nth-child(n+4),.host-console .rank-coins,.host-console .rank-hit,.host-console .rank-saved{display:none}
.host-console .ranking-head,.host-console .rank-player{grid-template-columns:30px minmax(0,1fr) 60px}
@media(min-width:1121px){.host-console .host-grid{grid-template-columns:370px minmax(0,1fr)}}
@media(min-width:1121px) and (max-height:920px){.host-console .host-grid{grid-template-columns:600px minmax(0,1fr)}.host-console .ranking-head,.host-console .rank-player{grid-template-columns:26px minmax(0,1fr) 44px;gap:4px}}

/* Final live layout: compact rankings never claim more than one fifth of the screen. */
.host-console .game-toolbar{height:56px;margin-bottom:8px;gap:15px}.host-console .host-grid{height:calc(100% - 64px);grid-template-columns:min(20vw,330px) minmax(0,1fr);gap:10px}
.host-console .host-stats{padding:6px 4px;overflow:hidden}.host-console .rank-title{height:24px;padding:0 3px;margin-bottom:3px}.host-console .rank-title h2{font-size:22px;line-height:24px}.host-console .rank-title>span{font:700 12px 'Pixelify Sans',monospace;color:#cfbf94}
.host-console .rank-explainer,.host-console .ranking-head,.host-console .host-roster-hint{display:none}
.host-console .ranking-list{display:block;grid-template-columns:none;grid-template-rows:none;overflow:auto;scrollbar-width:thin}
.host-console .rank-player{grid-template-columns:21px minmax(0,1fr) 45px;gap:3px;height:clamp(26px,calc((100dvh - 120px)/var(--roster-count,25)),38px);min-height:26px;padding:0 1px}
.host-console .rank-person{gap:3px}.host-console .rank-person>b{font:800 clamp(22px,1.3vw,24px)/1 ui-monospace,monospace;letter-spacing:-1px}.host-console .rank-number{font-size:15px}.host-console .rank-player .host-avatar{width:24px;height:24px;flex-basis:24px}.host-console .rank-points{font-size:19px;letter-spacing:-.5px;text-align:left}
.host-console .host-focus{top:67px;max-height:calc(100dvh - 80px)}.host-console .arena-shell{max-width:min(100%,calc((100dvh - 176px)*1.7778))}.host-console .host-center{gap:6px}.host-console .host-match-strip{padding:4px 8px}
.host-console .lobby-join-code{font-size:clamp(75px,9.5vw,155px)}
@media(max-width:1120px){.host-console .host-grid{grid-template-columns:1fr}.host-console .host-stats{width:min(330px,calc(100vw - 24px));top:66px;height:calc(100dvh - 78px);max-height:calc(100dvh - 78px)}.host-console .rank-player{height:33px}.host-console .rank-person>b{font-size:22px}.host-console .lobby-join-code{font-size:clamp(58px,10vw,108px)}}
@media(max-width:700px){.host-console .game-toolbar{height:auto;min-height:92px;gap:8px}.host-console .host-grid{height:calc(100% - 110px)}.host-console .host-stats,.host-console .host-focus{top:110px;height:calc(100dvh - 125px);max-height:calc(100dvh - 125px)}.host-console .lobby-join-code{font-size:clamp(40px,10.5vw,65px)}}

/* Classroom TV mode: the only permanent chrome is the game HUD and live score rail. */
.host-console{--rank-name-size:clamp(22px,1.3vw,28px);--rank-name-width:calc(var(--roster-name-ch,12)*(var(--rank-name-size)*.602 - 1px))}
.host-console .host-grid{grid-template-columns:min(20vw,calc(var(--rank-name-width) + 145px)) minmax(0,1fr)}
.host-console .rank-person>b{font-size:var(--rank-name-size)}
.host-console .rank-player{grid-template-columns:21px minmax(0,max-content) minmax(43px,1fr);gap:3px}
.host-console .rank-points{padding-left:7px;font-size:clamp(19px,1.15vw,25px)}
.host-console .intro-banner{position:relative}.host-console .intro-names{font-size:clamp(18px,1.3vw,24px)}
.battle-wordmark{display:none}
.host-console.is-playing{padding:0;background:#0d192b}
.host-console.is-playing>.game-toolbar,.host-console.is-playing .host-controls,.host-console.is-playing .host-match-strip{display:none!important}
.host-console.is-playing .host-grid{height:100%;gap:0;align-items:stretch}
.host-console.is-playing .host-stats{border-width:0 2px 0 0;border-color:#374963;border-radius:0;background:linear-gradient(90deg,#172740,#122038);box-shadow:none;padding:10px 5px}
.host-console.is-playing .rank-player{height:clamp(27px,calc((100dvh - 48px)/var(--roster-count,25)),48px)}
.host-console.is-playing .host-center{position:relative;justify-content:center;gap:0;background:linear-gradient(#0e233a,#14263e);overflow:hidden}
.host-console.is-playing .arena-shell{position:relative;border:0;border-radius:0;box-shadow:none;width:100%;max-width:min(100%,calc((100dvh - 40px)*1.77777))!important;overflow:hidden}
.host-console.is-playing .battle-ticker{border-top:1px solid #416584;height:40px;font-size:clamp(20px,1.5vw,30px);background:#0e1d30}
.host-console.is-playing .battle-wordmark{display:block;position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%);color:#b0c4df;font:700 19px 'Pixelify Sans',monospace;letter-spacing:2px;white-space:nowrap;pointer-events:none}
.battle-wordmark b{color:#f3a786}.host-console.is-playing .arena-clock:after{content:'ROCKET CLUB';display:block;font:700 13px 'Pixelify Sans',monospace;letter-spacing:1px;color:#ddeaff;margin-top:4px}
.host-console.is-playing .battle-wordmark{display:none}
.host-console.is-lobby .arena-shell{max-width:min(100%,calc((100dvh - 170px)*1.77777))!important}
.host-console .intro-avatar-line .host-avatar{width:60px;height:60px;flex-basis:60px}
.host-console.is-playing .host-focus{top:15px;max-height:calc(100dvh - 30px)}
.host-menu-backdrop{z-index:90;background:#030b1d99;backdrop-filter:blur(3px)}
.host-menu-dialog{max-width:410px;padding:24px;background:#182a43;border:2px solid #8c9ab5;border-radius:3px;color:#eff6ff;box-shadow:0 7px #050d1e,0 20px 70px #0009}
.host-menu-dialog h2{font:700 29px 'Pixelify Sans',monospace;letter-spacing:1px;color:#ffe0a0;margin:5px 24px 20px 0}
.host-menu-dialog .close-dialog{color:#cfddf0;min-width:44px;min-height:44px;right:8px;top:8px}
.host-menu-actions{display:grid;gap:9px}.host-menu-dialog button:not(.close-dialog){background:#2b415e;color:#eff4ff;border:2px solid #7388a6;border-radius:2px;min-height:46px;font-size:20px;font-weight:700;padding:9px 12px;box-shadow:0 3px #0b182a}
.host-menu-dialog button:hover:not(:disabled){background:#3b5577}.host-menu-actions button:first-child{background:#2c6759;border-color:#87ccaf}
.host-menu-dialog .moderation-player{margin-bottom:18px}.host-menu-dialog .moderation-player.red{color:#ffaaa0}.host-menu-dialog .moderation-player.blue{color:#92d6ff}.host-menu-dialog .moderation-player h2{color:inherit;font-size:27px}.host-menu-dialog .moderation-player p{color:#b4c9e1}.host-menu-dialog .host-player-details b{color:#f7e8b7;font-size:22px}.host-menu-dialog .host-player-details span{color:#b7c9df;font-size:13px}.host-menu-dialog .moderation-actions p{color:#adbed5;font-size:14px;margin-bottom:9px}.host-menu-dialog .moderation-actions{gap:6px}.host-menu-dialog .validation-message{color:#f5bf8a}
.host-manage-list{display:grid;grid-template-columns:1fr 1fr;gap:7px;max-height:55vh;overflow:auto;padding:0 2px 5px}.host-manage-list button{display:flex;align-items:center;gap:5px;min-width:0;padding:5px!important;font-size:18px!important}.host-manage-list button.red strong{color:#ffaea1}.host-manage-list button.blue strong{color:#91dbff}.host-manage-list strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.host-menu-bans{margin-top:14px;width:100%}
@media(min-width:1750px){.host-console.is-playing .rank-player .host-avatar{width:30px;height:30px;flex-basis:30px}.host-console.is-playing .rank-player{grid-template-columns:24px minmax(0,max-content) minmax(48px,1fr)}.host-console.is-playing .rank-number{font-size:19px}.host-console.is-playing .rank-title h2{font-size:26px}.host-console.is-playing .rank-title>span{font-size:16px}}
@media(max-width:1120px){.host-console .host-grid{grid-template-columns:1fr}.host-console.is-playing .host-stats{top:0;left:0;height:100dvh;max-height:100dvh;width:310px;z-index:46}.host-console .intro-names{font-size:16px}}
@media(max-width:700px){.host-console .intro-names{font-size:12px}.host-console.is-playing .battle-ticker{font-size:17px}}
/* Fixed allowance for twelve-character names; score columns always line up. */
.host-console{--rank-name-width:calc(12*(var(--rank-name-size)*.602 - 1.25px))}
.host-console .rank-player,.host-console.is-playing .rank-player{grid-template-columns:19px minmax(0,1fr) 58px;gap:3px}
.host-console .rank-person>b{letter-spacing:-1.5px}.host-console .rank-points{padding-left:0;text-align:right}
.host-console .rank-title>span{padding-right:3px}
@media(min-width:1750px){.host-console .rank-player,.host-console.is-playing .rank-player{grid-template-columns:24px minmax(0,1fr) 70px}}

/* Audio belongs in the lobby and the host's popup, leaving the TV battle clear. */
.host-console .toolbar-actions .host-sound-toggle{min-height:44px;font-size:15px;white-space:nowrap}
.host-console .host-sound-toggle.is-on,.host-menu-dialog .host-sound-toggle.is-on{background:#235b59;border-color:#79d2c9;color:#dcfff7}
.host-menu-with-sound{max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#6d88a6 #182a43}
.host-sound-panel{margin-top:20px;padding:14px;background:#0f2037;border:2px solid #4f6a8a;border-radius:2px;box-shadow:inset 0 2px #050e22}
.host-sound-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.host-sound-row h3{margin:0;color:#a1ede4;font:700 27px 'Pixelify Sans',ui-monospace,monospace;letter-spacing:.4px}
.host-menu-dialog .host-sound-toggle{min-height:46px;font-size:19px;white-space:nowrap}
.host-sound-volume{display:grid;grid-template-columns:auto minmax(60px,1fr) 48px;align-items:center;gap:10px;margin:12px 0;color:#d5e7fb;font-size:18px;font-weight:700}
.host-sound-volume input[type=range]{appearance:none;-webkit-appearance:none;width:100%;height:44px;min-width:0;margin:0;padding:0;border:0;box-shadow:none;border-radius:0;background:transparent;cursor:pointer;accent-color:#82e8d8}
.host-sound-volume input[type=range]::-webkit-slider-runnable-track{height:8px;border:1px solid #6984a5;border-radius:0;background:#304866;box-shadow:inset 0 2px #0c1a2d}
.host-sound-volume input[type=range]::-moz-range-track{height:6px;border:1px solid #6984a5;border-radius:0;background:#304866;box-shadow:inset 0 2px #0c1a2d}
.host-sound-volume input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:22px;height:26px;margin-top:-10px;border:2px solid #d4fff4;border-radius:2px;background:#58baad;box-shadow:0 3px #071527}
.host-sound-volume input[type=range]::-moz-range-thumb{width:18px;height:22px;border:2px solid #d4fff4;border-radius:2px;background:#58baad;box-shadow:0 3px #071527}
.host-sound-volume input[type=range]:focus-visible{outline:3px solid #a8ecff;outline-offset:2px}
.host-sound-volume input[type=range]:disabled{opacity:.45;cursor:not-allowed}
.host-sound-volume output{text-align:right;color:#ffe1a0;font-variant-numeric:tabular-nums}
.host-menu-dialog .host-sound-preview{width:100%;background:#493e75;border-color:#ac9dda;font-family:'Pixelify Sans',ui-monospace,monospace;font-size:24px;min-height:48px}
.host-menu-dialog .host-sound-preview:hover:not(:disabled){background:#65528d}
.host-menu-dialog .host-sound-panel button:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:700px){.host-console .toolbar-actions{flex-wrap:wrap}.host-console .toolbar-actions .host-sound-toggle{font-size:14px}.host-sound-panel{padding:12px}.host-sound-volume{font-size:16px;gap:8px}.host-menu-dialog .host-sound-toggle{font-size:17px}}
