@font-face{font-family:Game;src:local('PingFang SC')}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#bcaa86;color:#283c35;font-family:Game,system-ui,sans-serif;touch-action:none}#stage{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);overflow:hidden}#stage.rotated{transform:translate(-50%,-50%) rotate(90deg)}#game{width:100%;height:100%;display:block;touch-action:none}[hidden]{display:none!important}button,a,input{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}button,.quiet{border:1px solid #274c3930;background:#fffcf2;color:#294137;border-radius:12px;padding:12px 18px;cursor:pointer;font-weight:650;transition:background .15s,transform .15s}button:hover{background:#f0ead5}button:active{transform:scale(.97)}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #4cae8e;outline-offset:3px}.primary{background:#246c53;color:#fff9e7;border:0;box-shadow:0 5px 0 #144c3a}.primary:hover{background:#318668}.primary span{float:right}.quiet{text-decoration:none;background:#fff7e9b0}.icon{border:0;background:transparent;font-size:26px;padding:0 9px;min-height:38px}.screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#1d30284d;z-index:20;padding:16px}.panel{width:min(760px,90%);background:#fff9ecf5;border:1px solid #fff8;border-radius:22px;padding:24px 30px;box-shadow:0 20px 90px #192c2933;max-height:96%;}header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}h2{font-size:26px;margin:6px 0}h3{font-size:16px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#698074}.soft,small{color:#798579;font-size:12px;line-height:1.6}.lobby-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:32px}.friends{border-left:1px solid #29413722;padding-left:28px}.choice>.primary,.friends>button{width:100%;margin:12px 0}.segmented{display:flex;border:1px solid #29413722;border-radius:14px;padding:4px}.segmented button{flex:1;border:0;background:none;font-size:24px;padding:8px}.segmented small{display:block;font-size:11px}.segmented button[aria-pressed=true]{background:#e2eee2;color:#245e46}.choice p{font-size:12px;margin:12px 0}.population{font-size:11px;color:#788477;margin-top:12px}.join-row{display:flex;gap:6px;margin:8px 0}label{font-size:12px}input{min-width:0;width:100%;border:1px solid #274c3930;border-radius:10px;padding:10px;background:#fffdf6;color:#294137}.join-row button{flex-shrink:0}.text-button{border:0;background:none!important;text-align:left;padding:0;font-size:12px}.panel-bottom{display:flex;justify-content:space-between;gap:20px;font-size:11px;color:#748373;margin-top:20px;min-height:15px}.teams{display:grid;grid-template-columns:1fr 1fr;gap:30px;min-height:100px}.teal{color:#247a68}.coral{color:#ba5939}.player-row{display:flex;align-items:center;justify-content:space-between;padding:12px;background:#f0ecdf;border-radius:10px;margin:8px 0;font-size:14px}.player-row small{font-size:10px}.room-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}.room-actions button{font-size:12px}.compact{width:410px}.compact>button{width:100%;margin-top:10px}.compact p{font-size:13px;line-height:1.8}.danger{color:#ad513d}#home{background:linear-gradient(90deg,#f4eddbea 0%,#f4eddbad 38%,transparent 68%);justify-content:flex-start;padding:7%}#home h1{font-size:clamp(30px,5vw,60px);line-height:1.2;margin:20px 0;color:#264f3e;letter-spacing:-2px}#home h1 span{display:block;color:#b6653c;font-size:.6em;letter-spacing:4px;margin-top:12px}#home p{line-height:1.7;font-size:20px;color:#546954}.home-actions{display:flex;gap:10px;margin:26px 0 16px}.home-actions button{min-width:180px}.home-note{position:absolute;right:6%;bottom:15%;font-size:14px;line-height:1.7;color:#fff9e9;text-shadow:0 2px 6px #47351e}footer{position:absolute;bottom:16px;left:7%;font-size:10px;color:#465a405c}#fullscreen{position:absolute;right:12px;top:10px;z-index:35;background:#fbf2df66;border:0;font-size:22px;padding:2px 9px;opacity:.65}#loading{position:absolute;inset:0;background:#f2eedf;z-index:100;display:flex;align-items:center;justify-content:center;flex-direction:column}.mark{width:70px;height:70px;border-radius:24px;background:#f4c65d;color:#345743;display:grid;place-items:center;font-size:38px;font-weight:900;transform:rotate(-8deg)}#loading p{font-size:13px;color:#7a8779}#hud{position:absolute;inset:0;pointer-events:none;z-index:5}#hud button{pointer-events:auto}.corner{position:absolute;left:12px;top:10px;background:#fff8;opacity:.6;font-size:18px}.score{position:absolute;left:50%;top:14px;transform:translateX(-50%);display:flex;align-items:center;gap:20px;background:#fff7e6cb;border:1px solid #fff5;border-radius:14px;padding:6px 20px;color:#335b48}.score>b{font-size:29px;min-width:28px;text-align:center}.score>b:last-child{color:#bf6642}.score>div{text-align:center}.score small{display:block;font-size:9px}.score span{font-size:12px;font-variant-numeric:tabular-nums}#crosshair{position:absolute;left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%);filter:drop-shadow(0 1px 1px #0009)}#crosshair i{background:#fff;position:absolute;border-radius:1px}#crosshair i:nth-child(1){width:2px;height:6px;left:10px;top:0}#crosshair i:nth-child(2){width:2px;height:6px;left:10px;bottom:0}#crosshair i:nth-child(3){width:6px;height:2px;top:10px;left:0}#crosshair i:nth-child(4){width:6px;height:2px;top:10px;right:0}#crosshair.blocked i{background:#edab59}#hitMarker{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#ffd175;font-size:45px;text-shadow:0 1px 5px #333}.vitals{position:absolute;left:26px;bottom:26px;color:#fff8dc;text-shadow:0 1px 4px #342e20;display:flex;align-items:center;gap:9px}.vitals strong{font-size:26px}.vitals small{color:inherit;font-size:10px}.hp-track{width:90px;height:5px;background:#0003;border-radius:3px;overflow:hidden}.hp-track i{display:block;width:100%;height:100%;background:#a6e1a4}.loadout{position:absolute;right:25px;bottom:26px;display:flex;align-items:center;gap:5px}.loadout button{padding:7px 10px;font-size:11px;background:#fff6;border:0}.loadout button[aria-pressed=true]{background:#fffce0bc}.loadout kbd{font:inherit;opacity:.5;margin-left:3px}#ammo{color:#fffbec;font-size:30px;margin-left:12px;text-shadow:0 1px 4px #342e20}#ammo small{color:#fff9;font-size:12px}#latency{position:absolute;left:12px;bottom:4px;color:#fff;font-size:9px;opacity:.32}#feed{position:absolute;right:15px;top:70px;display:flex;flex-direction:column;align-items:flex-end;gap:5px;font-size:11px;color:#fff9e6}#feed span{padding:5px 9px;background:#2e3f3666;border-radius:5px}#centerMessage{position:absolute;top:28%;left:50%;transform:translateX(-50%);color:#fff9e8;font-size:24px;text-shadow:0 2px 5px #0008;text-align:center}#touch{display:none;position:absolute;inset:0;pointer-events:none}#touch button{border:1px solid #fff6;background:#f7f0df33;color:#fff8e3;border-radius:50%;position:absolute;padding:0;text-shadow:0 1px 2px #0004}#lookZone{position:absolute;right:0;top:70px;width:65%;height:65%;pointer-events:auto}#stick{position:absolute;bottom:38px;left:34px;width:108px;height:108px;border:1px solid #fff4;background:#fff1;border-radius:50%;pointer-events:auto}#stickKnob{width:42px;height:42px;background:#fff5;border:1px solid #fff5;border-radius:50%;position:absolute;left:33px;top:33px}#fire{right:35px;bottom:48px;width:73px;height:73px;font-size:15px}#jump{right:123px;bottom:43px;width:48px;height:48px;font-size:12px}#leftGrip{right:232px;bottom:43px;width:44px;height:44px;font-size:11px}#rightGrip{right:181px;bottom:43px;width:44px;height:44px;font-size:11px}#touch button[aria-pressed=true]{background:#f0d68a9c}#toast{position:absolute;bottom:14%;left:50%;transform:translateX(-50%);max-width:75%;padding:10px 18px;border-radius:12px;background:#263e32ed;color:#fff9ec;z-index:80;font-size:12px;text-align:center}#resultScore{font-size:40px;color:#32674e;margin-bottom:16px}#resultPlayers{font-size:12px;line-height:2}.touch #touch{display:block}.touch .vitals{left:34px;bottom:154px}.touch .loadout{right:28px;bottom:137px}.touch .loadout kbd{display:none}.touch .score{top:8px;padding:3px 16px}.touch .score>b{font-size:23px}.touch .home-copy p{font-size:15px}.touch #home h1{font-size:39px;margin:12px 0}.touch .home-actions{margin:16px 0 10px}.touch .home-actions button{min-width:160px}.touch .panel{padding:15px 22px;max-width:690px}.touch header{margin-bottom:9px}.touch h2{font-size:21px}.touch .lobby-grid{gap:22px}.touch .segmented button{font-size:21px;padding:4px}.touch .panel-bottom{margin-top:8px}.touch button{padding:9px 14px}.touch .teams{min-height:84px;gap:20px}.touch .player-row{padding:8px;margin:5px 0}.touch .room-actions{margin-top:10px}.touch .compact p{font-size:11px;line-height:1.5}.touch #touch button{padding:0}.touch .compact{width:440px}.touch footer{bottom:9px}.touch .home-note{bottom:15%;font-size:11px}@media(prefers-reduced-motion:reduce){*{transition:none!important}} 
/* Equipment must stay above the transparent touch-look surface. */
.loadout{z-index:3}#touch{z-index:1}.corner{z-index:4}.touch .loadout button{min-height:36px}
/* Combat HUD: quiet edges, open centre, thumb-reachable fire/aim/jump cluster. */
.score{border:0;border-radius:5px;background:linear-gradient(90deg,#164e4190,#20382d80,#7e422f90);color:#fff8e7;gap:22px;padding:4px 16px;box-shadow:0 2px 8px #182b2420}.score>b:last-child{color:#ffc09a}.score small{color:#e8e5cf90}.score>b{font-size:26px}.score>div{min-width:38px}
.loadout{right:28px;bottom:25px;gap:3px}.loadout button{border-radius:4px;background:#182b244d;color:#fff8e6;border-bottom:2px solid transparent;min-width:62px}.loadout button[aria-pressed=true]{background:#263f3477;border-color:#f6d887}.loadout button:hover{background:#36534699}.loadout #reload{min-width:42px;margin-left:7px}#ammo{min-width:70px;font-variant-numeric:tabular-nums}.vitals{gap:7px}.vitals strong{font-size:22px}.vitals small{opacity:.7}.hp-track{width:100px;height:4px}.corner{background:#173b3233;color:#fff8e5;border-radius:5px;opacity:.55}.corner:hover{opacity:1;background:#173b3277}#feed{opacity:.8;max-width:29%;font-size:10px}#feed span{border-radius:2px;background:#263e3655}
#crosshair{width:18px;height:18px}#crosshair i:nth-child(1),#crosshair i:nth-child(2){left:8px;height:4px}#crosshair i:nth-child(3),#crosshair i:nth-child(4){top:8px;width:4px}#hitMarker{font-size:31px}
.touch .vitals{left:50%;transform:translateX(-50%);bottom:12px}.touch .loadout{left:50%;right:auto;transform:translateX(-50%);bottom:38px}.touch .loadout button{min-height:32px;min-width:54px;padding:4px 8px;font-size:10px}.touch #ammo{font-size:24px;margin-left:5px;min-width:64px}.touch #touch button{color:#fff6e1;border:1px solid #fff5;background:#203d302c;opacity:.76;box-shadow:inset 0 0 0 3px #ffffff09}.touch #touch button:active,.touch #touch button[aria-pressed=true]{background:#e7c97855;opacity:1}#lookZone{top:65px;height:calc(100% - 65px);width:66%}#fire{right:53px;bottom:70px;width:78px;height:78px}#fire svg{width:43px;height:43px;fill:none;stroke:currentColor;stroke-width:2}#fire[data-weapon=knife] svg{transform:rotate(45deg)}#jump{right:22px;bottom:169px;width:48px;height:48px;font-size:29px}#focus{right:147px;bottom:90px;width:48px;height:48px;font-size:29px}#stick{left:46px;bottom:42px;width:110px;height:110px;opacity:.67}.touch .score{top:8px}.touch .compact>button{margin-top:7px}.touch .compact header{margin-bottom:5px}.touch .compact p{margin:7px 0}.touch #menu .panel{width:360px}
@media(max-height:420px){.screen{padding:8px}.panel{padding:12px 20px}.compact>button{padding:8px}.compact p{font-size:11px;margin:6px 0}.compact header{margin-bottom:5px}#home .home-copy p{font-size:14px}#home h1{margin:9px 0;font-size:38px}.home-actions{margin:15px 0 10px}}
#toast{bottom:auto;top:19%;pointer-events:none}
#fire .knife-icon{display:none}#fire[data-weapon=knife] svg{display:none;transform:none}#fire[data-weapon=knife] .knife-icon{display:inline-block}

/* Dynamic origin occupies the left play area, while HUD actions stay above it. */
#moveZone{position:absolute;left:0;top:65px;bottom:0;width:43%;pointer-events:auto;touch-action:none}#stick{pointer-events:none;opacity:.3}#stick.active{opacity:.75}#lookZone{width:57%}.utilities{position:absolute;right:28px;bottom:80px;display:flex;gap:6px;z-index:3}.utilities button{font-size:11px;padding:9px 12px;border:1px solid #fff3;background:#203d3066;color:#fff5df;border-radius:6px}.touch .utilities{right:150px;bottom:154px}.touch .utilities button{padding:9px;font-size:10px}.career-panel{width:min(700px,92%)}#careerProgress{font-size:12px;color:#597364;margin:4px 0 12px}#careerStats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}#careerStats div{padding:9px;background:#e7ecdf;border-radius:8px}#careerStats b,#careerStats small{display:block}#careerStats b{font-size:20px}#achievements{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0;font-size:11px;color:#829082}#achievements .unlocked{color:#286951}#career .panel>small{font-size:10px;line-height:1.4;display:block}#resultPlayers{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;font-size:10px}#result .compact{width:490px}#resultScore{margin-bottom:6px;font-size:30px}#resultNote{font-size:10px;display:block;margin-top:5px}@media(max-height:420px){#careerStats div{padding:6px}#careerStats b{font-size:17px}#achievements{margin:10px 0;gap:5px}.career-panel header{margin-bottom:6px}#careerProgress{margin-bottom:7px}}

#smokeVeil{position:absolute;inset:0;background:#b5bfba;opacity:0;pointer-events:none;transition:opacity .15s;z-index:4}#smokeVeil.visible{opacity:.98}

#hitMarker[data-region=head]{color:#ffbd64;font-size:40px}#hitMarker[data-region=limb]{color:#f8f2dc}

/* Use the rotated stage height, not CSS viewport height, on narrow phones. */
.short-screen .screen{padding:8px}
.short-screen .panel{padding:12px 20px}
.short-screen #career .panel{padding:10px 20px}
.short-screen #career header{margin-bottom:5px}
.short-screen #career h2{margin:3px 0;font-size:20px}
.short-screen #careerProgress{margin:3px 0 7px}
.short-screen #careerStats{gap:6px}
.short-screen #careerStats div{padding:5px 7px}
.short-screen #careerStats b{font-size:17px}
.short-screen #achievements{gap:4px;margin:8px 0}
.short-screen #career .panel>small{font-size:10px;line-height:1.25}
.short-screen #result .panel{display:grid;grid-template-columns:1fr 1fr;column-gap:10px;align-items:start}
.short-screen #result .panel>header,.short-screen #resultScore,.short-screen #resultPlayers,.short-screen #resultNote{grid-column:1/-1}
.short-screen #result .panel>button{min-height:44px;margin-top:10px;padding:8px}
.short-screen #result header{margin-bottom:6px}
.short-screen #result h2{margin:3px 0;font-size:21px}
.short-screen #resultScore{font-size:27px;margin-bottom:4px}
.short-screen #result .panel>.eyebrow,.short-screen #resultTitle{grid-column:1/-1}
.short-screen #resultTitle{font-size:21px;margin:4px 0 6px}
.short-screen.touch #home h1{font-size:36px;margin:8px 0}
.short-screen #home .home-copy p{font-size:14px;margin:10px 0}
.short-screen.touch .home-actions{margin:12px 0 8px}
.short-screen #home .home-copy>small{font-size:10px}
.short-screen .compact>button{padding:8px}
/* Optional information surfaces: compact live scoreboard; home-only challenge board. */
#scoreToggle{pointer-events:auto;border:0;cursor:pointer;font:inherit;color:inherit;z-index:4;min-height:44px}#scoreToggle:hover{background:#fff9e8c9}
#matchBoard{position:absolute;z-index:12;top:64px;left:50%;transform:translateX(-50%);width:min(780px,93%);background:#243d36ed;color:#fff8e9;border:1px solid #fff3;border-radius:12px;padding:10px 16px;pointer-events:none;font-variant-numeric:tabular-nums}#matchBoard header{margin:0 0 7px;display:flex;justify-content:space-between;align-items:center}#matchBoard h2{font-size:16px;margin:0}#boardScore{margin-left:15px;color:#efdcaa}#boardClose{pointer-events:auto;min-height:44px;min-width:44px;background:transparent;color:#fff;border:0;padding:0;font-size:25px}#matchBoard>small{display:block;font-size:9px;opacity:.65;margin-top:7px}.battle-tables{display:grid;grid-template-columns:1fr 1fr;gap:18px}.battle-team{min-width:0}.battle-team h3{font-size:11px;margin:0 0 4px;color:#a0dfc6}.battle-team:nth-child(2) h3{color:#f4baa0}.battle-team table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11px;line-height:1.5}.battle-team th{font-weight:400;opacity:.65;font-size:9px}.battle-team td,.battle-team th{text-align:right;padding:3px 2px;white-space:nowrap}.battle-team td:first-child,.battle-team th:first-child{text-align:left;width:35%;overflow:hidden;text-overflow:ellipsis}.battle-team .self-row{background:#f9e5ac25}.battle-team tr+tr{border-top:1px solid #ffffff12}
#resultPlayers{display:block;margin:8px 0}#result .compact{width:min(740px,94%)}#result .battle-team h3{color:#276d56}#result .battle-team:nth-child(2) h3{color:#a55940}#result .self-row{background:#43896520}#result .battle-team tr+tr{border-color:#29413715}
.rank-panel{width:min(700px,94%);padding:16px 24px}.rank-panel header{margin:0 0 8px}.rank-panel h2{font-size:23px;margin:3px 0}.rank-tabs{display:flex;gap:6px}.rank-tabs button{min-height:44px;flex:1;padding:6px 14px;border-radius:7px;background:#e7eddf}.rank-tabs button[aria-pressed=true]{background:#286b53;color:#fff8e9}.rank-table{width:100%;table-layout:fixed;border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:12px}.rank-table th{text-align:left;font-size:10px;color:#758374;font-weight:400}.rank-table th:first-child{width:15%}.rank-table th:last-child{width:22%}.rank-table td{height:29px;border-bottom:1px solid #29413716;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rank-table td:last-child,.rank-table th:last-child{text-align:right}.rank-bottom{display:flex;justify-content:space-between;align-items:center;gap:6px}.rank-bottom strong{font-size:11px}.rank-bottom button{padding:4px 10px;min-width:40px;min-height:44px;border:0;background:transparent}.rank-bottom span{font-size:10px}#rankStatus{font-size:11px;min-height:18px;padding-top:3px}.rank-panel>small{font-size:9px;line-height:1.4;display:block;opacity:.7}.rank-panel .icon{min-width:44px;min-height:44px}#rankOpen,#careerOpen{min-height:44px;padding:6px 12px}
.short-screen #matchBoard{top:55px;padding:5px 12px}.short-screen #matchBoard header{margin:0}.short-screen .battle-team td{padding:1px 2px}.short-screen #matchBoard>small{margin-top:3px}.short-screen .rank-panel{padding:8px 18px}.short-screen .rank-panel header{margin:0}.short-screen .rank-panel h2{font-size:20px;margin:0}.short-screen .rank-table td{height:23px}.short-screen .rank-panel .eyebrow{font-size:8px}.short-screen .rank-tabs button{min-height:36px}.short-screen .rank-panel>small{font-size:8px}.short-screen #resultPlayers{margin:3px 0}.short-screen #result .battle-tables{gap:10px}.short-screen .battle-team table{font-size:10px}
#rankStatus:empty{display:none}.short-screen .rank-tabs button{min-height:44px}
.short-screen #resultTitle{grid-column:1;grid-row:2}.short-screen #resultScore{grid-column:2;grid-row:2;text-align:right;margin:0}.short-screen #result .panel>button{margin-top:6px}
#result .panel{display:grid;grid-template-columns:1fr 1fr;column-gap:12px;align-items:start}#result .panel>.eyebrow,#resultPlayers,#resultNote{grid-column:1/-1}#resultTitle{grid-column:1;grid-row:2;margin:5px 0;font-size:23px}#resultScore{grid-column:2;grid-row:2;text-align:right;margin:0}#result .panel>button{min-height:44px;padding:8px;margin-top:8px}
.short-screen #home .home-copy p{margin:6px 0;font-size:13px}.short-screen.touch .home-actions{margin:8px 0 6px}.short-screen #home .home-copy>small{font-size:10px}
/* Reserve the footer lane when the landscape stage is only 320px high. */
.short-screen #home{padding-top:12px;padding-bottom:36px}
/* Secondary equipment stays at the edge; the hit areas remain thumb-sized. */
.utilities{gap:4px;padding:0;right:26px;bottom:78px;background:none;border:0;box-shadow:none}
.utilities .utility-slot{position:relative;display:grid;place-items:center;width:52px;min-width:52px;height:46px;min-height:46px;padding:6px 14px 6px 4px;border:0;border-radius:8px;background:#203d301a;color:#fff5dfb3;touch-action:none;text-shadow:0 1px 2px #203d3080}
.utility-slot svg{width:23px;height:27px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round;pointer-events:none;filter:drop-shadow(0 1px 1px #203d3055)}
.utility-slot .utility-label{display:none}.utility-slot kbd{position:absolute;right:4px;top:6px;font-family:inherit;font-size:9px;line-height:12px;opacity:.75}.utility-slot .utility-count{position:absolute;right:3px;bottom:6px;font-size:9px;line-height:12px;font-variant-numeric:tabular-nums}
.utilities .utility-slot:hover:not(:disabled),.utilities .utility-slot:active:not(:disabled){background:#203d3055;color:#fff5df}.utilities .utility-slot:focus-visible{outline:2px solid #fff5df;outline-offset:1px}.utilities .utility-slot.empty{opacity:.35}
.touch .utilities,.short-screen.touch .utilities{right:8px;bottom:8px;gap:4px}
.touch .utilities .utility-slot{width:46px;min-width:46px;height:46px;min-height:46px;padding:5px 12px 5px 3px;background:#203d3010;font-size:10px}
.touch .utility-slot kbd{display:none}.touch .utility-slot svg{width:23px;height:27px}

#crouch{right:82px;bottom:174px;width:46px;height:46px;font-size:13px}
/* Public rooms: four rows fit a short landscape phone; teams are direct actions. */
.public-lobby{width:min(760px,94%);padding:20px 24px}.public-lobby header{margin-bottom:8px}.lobby-summary{display:flex;align-items:center;justify-content:space-between;color:#738274;font-size:11px;margin-bottom:8px}.public-rooms{display:grid;gap:6px;min-height:210px;align-content:start}.public-room-row{display:grid;grid-template-columns:minmax(100px,1fr) 1fr 1fr;gap:8px;align-items:center;border:1px solid #274c3918;border-radius:9px;padding:6px 10px;background:#f4f1e6}.room-caption b,.room-caption small{display:block}.room-caption b{font-size:13px}.room-caption small{font-size:10px}.public-room-row button{min-height:44px;padding:5px 8px;border-radius:7px;font-size:12px;box-shadow:none}.public-room-row button small{display:block;font-size:9px;line-height:1.25}.join-green{background:#e1eee5;color:#286853}.join-orange{background:#f5e5d7;color:#98553a}.create-strip{display:flex;align-items:center;gap:12px;margin-top:10px;font-size:12px}.create-strip .segmented{padding:2px;border-radius:8px}.create-strip .segmented button{font-size:13px;min-height:40px;padding:5px 12px;border-radius:6px}.create-strip #create{min-height:40px;padding:7px 14px;box-shadow:none;font-size:12px}.create-strip #helpOpen{margin-left:auto}.queue-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;background:#e5edde;padding:4px 10px;border-radius:7px;margin-top:5px}.queue-strip button{font-size:11px;padding:6px 10px;min-height:36px}.public-lobby .panel-bottom{margin-top:8px}.rooms-empty{font-size:12px;color:#738274;text-align:center;padding:50px 0}.public-room .team-choice{width:100%;padding:8px;font-size:12px}.public-room .teams{gap:14px}.public-room .player-row{padding:5px 9px;margin:4px 0;font-size:11px}.public-room .room-actions{margin-top:8px}.public-room #roomStatus{margin:7px 0 0}.touch .public-lobby{max-width:740px;padding:12px 18px}.touch .public-lobby{padding:8px 14px;width:96%;max-height:99%}.touch .public-lobby header{margin-bottom:2px}.touch .public-lobby h2{font-size:17px;margin:2px 0}.touch .public-lobby .eyebrow{font-size:8px}.touch .lobby-summary{margin-bottom:3px;font-size:9px}.touch .public-rooms{gap:3px;min-height:188px}.touch .public-room-row{padding:1px 6px;gap:5px}.touch .room-caption b{font-size:11px}.touch .room-caption small{font-size:9px}.touch .public-room-row button{min-height:44px;font-size:10px;padding:2px 5px}.touch .create-strip{margin-top:4px;gap:7px;font-size:10px}.touch .create-strip .segmented button,.touch .create-strip #create{min-height:32px;padding:3px 9px;font-size:11px}.touch .public-lobby .panel-bottom{margin-top:2px;font-size:9px;min-height:11px}.touch .queue-strip{margin-top:2px;padding:1px 6px;font-size:10px}.touch .queue-strip button{min-height:28px;padding:3px 8px}.touch .public-lobby:has(.queue-strip:not([hidden])) .panel-bottom{display:none}.touch .public-lobby:has(.queue-strip:not([hidden])) header .eyebrow{display:none}.touch .public-lobby:has(.queue-strip:not([hidden])) .create-strip{display:none}.touch .public-room{padding:10px 16px}.touch .public-room h2{font-size:17px;margin:2px 0}.touch .public-room header{margin-bottom:3px}.touch .public-room .player-row{padding:2px 7px;margin:2px 0;font-size:10px;line-height:15px}.touch .public-room .team-choice{min-height:32px;padding:4px}.touch .public-room .room-actions button{min-height:32px;padding:5px 9px}.touch .public-room #roomStatus{font-size:9px;margin:3px 0 0}

.touch .public-lobby .text-button{padding:0;min-height:20px}.touch .public-lobby header .icon{min-height:30px;height:30px;padding:0 9px}.touch .public-lobby header .eyebrow{display:none}.touch .public-lobby .public-room-row{grid-template-columns:minmax(100px,1fr) 1fr 1fr;min-height:46px}.touch .public-lobby .public-room-row button{padding:2px 5px;min-height:44px;height:44px}.touch .public-lobby .panel-bottom{margin-top:2px}.touch .public-lobby .segmented button{min-height:32px;font-size:11px;padding:3px 9px}
.touch .public-lobby{position:relative}.touch .public-lobby .lobby-summary{position:absolute;left:205px;right:58px;top:14px;gap:6px;margin:0;font-size:9px}.touch .public-lobby .panel-bottom{display:none}.touch .public-lobby .public-rooms{min-height:0}.touch .public-lobby:has(.queue-strip:not([hidden])) .queue-strip{min-height:38px}
/* Sixteen-player scoreboards keep all eight names per side visible. */
.touch #result .panel{padding:10px 18px}.touch #result .panel>.eyebrow{display:none}.touch #resultTitle{grid-row:1;font-size:19px;margin:2px 0}.touch #resultScore{grid-row:1;font-size:25px}.touch #resultPlayers{margin:3px 0}.touch #result .battle-team table{font-size:10px;line-height:1.3}.touch #result .battle-team td,.touch #result .battle-team th{padding:1px 2px}.touch #result .panel>button{margin-top:4px;min-height:40px;padding:5px 8px}.touch #resultNote{font-size:9px;margin-top:3px}.touch #matchBoard{top:54px;padding:6px 12px}.touch #matchBoard .battle-team table{font-size:10px;line-height:1.4}.touch #matchBoard .battle-team td{padding:1px 2px}
/* Capacity, not room count, is limited. Keep creation visible while rooms scroll. */
.public-lobby{display:flex;flex-direction:column;height:min(560px,94%);max-height:94%}.public-lobby header,.public-lobby .lobby-summary,.public-lobby .create-strip,.public-lobby .panel-bottom,.public-lobby .queue-strip{flex-shrink:0}.public-lobby .public-rooms{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;touch-action:pan-y;overscroll-behavior:contain;scrollbar-width:thin;padding-right:3px}.desktop-choice{display:flex;align-items:center;gap:5px;white-space:nowrap;font-size:11px;color:#536c5c;cursor:pointer}.desktop-choice input{width:16px;height:16px;margin:0;accent-color:#246c53}.public-lobby .create-strip{gap:8px}.touch .public-lobby{height:calc(100% - 12px);max-height:calc(100% - 12px)}.touch .public-lobby .create-strip{gap:6px}.touch .desktop-choice{font-size:10px}.touch .desktop-choice input{width:16px;height:16px}.touch .public-lobby .room-caption small{line-height:1.25;font-size:9px}.touch .public-lobby .room-caption{min-width:0}.touch .public-lobby .lobby-summary{left:190px;right:54px;font-size:8px}.touch .public-lobby .public-room-row{grid-template-columns:minmax(132px,1.2fr) 1fr 1fr}.touch .public-lobby .create-strip>span{display:none}.public-room-row button:disabled{opacity:.5}.public-lobby .lobby-summary #population{white-space:nowrap}

.rank-selectors{display:flex;justify-content:space-between;gap:10px;margin-bottom:6px}.rank-selectors>div{display:flex;gap:4px}.rank-selectors button{min-height:34px;padding:5px 14px;font-size:12px;border-radius:7px;background:transparent}.rank-selectors button[aria-pressed=true]{background:#dcebdc;border-color:#5b8c6b60;color:#245e46}.touch .rank-panel header{margin-bottom:3px}.touch .rank-panel h2{font-size:18px;margin:2px 0}.touch .rank-panel .eyebrow{font-size:8px}.touch .rank-selectors{margin-bottom:3px}.touch .rank-selectors button{padding:3px 12px;min-height:30px;font-size:11px}.touch .rank-tabs button{min-height:30px;padding:3px 14px}.touch .rank-table td{height:21px;padding:2px 5px}.touch .rank-panel #rankRules{font-size:8px;line-height:1.35}.touch .rank-panel .rank-bottom{margin-top:3px}.touch .rank-panel #rankStatus{min-height:13px;font-size:9px}
/* 081: safe-area axes follow the container, not delayed browser orientation. */
#stage{--safe-top:0px;--safe-right:0px;--safe-bottom:0px;--safe-left:0px}
#fullscreen{right:auto;left:calc(12px + var(--safe-left));top:calc(10px + var(--safe-top));width:36px;height:36px;min-height:36px;padding:0;font-size:22px;border-radius:6px}
#stage:has(#hud:not([hidden])) #fullscreen{left:calc(54px + var(--safe-left))}
#stage:has(.screen:not([hidden]):not(#home)) #fullscreen{display:none}
#menuButton{left:calc(12px + var(--safe-left));top:calc(10px + var(--safe-top));width:36px;height:36px;min-height:36px;padding:0}
.score,.touch .score{top:calc(8px + var(--safe-top))}
#feed{right:calc(15px + var(--safe-right));top:calc(70px + var(--safe-top))}
#latency{left:calc(12px + var(--safe-left));bottom:calc(4px + var(--safe-bottom))}
.screen{padding:calc(8px + var(--safe-top)) calc(8px + var(--safe-right)) calc(8px + var(--safe-bottom)) calc(8px + var(--safe-left))}
.screen header{justify-content:flex-start}.screen header>.icon{order:-1;flex-shrink:0}.screen #leaveRoom{order:-1}
#home{padding-left:max(7%,calc(16px + var(--safe-left)));padding-right:max(7%,calc(16px + var(--safe-right)));padding-top:max(7%,calc(50px + var(--safe-top)));padding-bottom:max(7%,calc(30px + var(--safe-bottom)))}
#home footer{left:max(7%,calc(16px + var(--safe-left)));bottom:calc(9px + var(--safe-bottom))}
#touch{inset:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left)}
.loadout{right:calc(28px + var(--safe-right));bottom:calc(25px + var(--safe-bottom))}.vitals{left:calc(26px + var(--safe-left));bottom:calc(26px + var(--safe-bottom))}
.utilities{right:calc(26px + var(--safe-right));bottom:calc(78px + var(--safe-bottom))}
.touch .loadout,.touch .vitals{left:calc(50% + (var(--safe-left) - var(--safe-right))/2);right:auto}.touch .loadout{bottom:calc(38px + var(--safe-bottom))}.touch .vitals{bottom:calc(12px + var(--safe-bottom))}
.touch .utilities,.short-screen.touch .utilities{right:calc(8px + var(--safe-right));bottom:calc(8px + var(--safe-bottom))}
/* A conservative corner reserve, not a claimed measurement of the host capsule. */
.bili-host .screen header{padding-right:64px}.bili-host #home .home-note{right:max(6%,calc(16px + var(--safe-right)))}
.touch .public-lobby .lobby-summary{left:230px;right:16px}.bili-host.touch .public-lobby .lobby-summary{right:80px}
.touch #ranking .panel,.touch #career .panel{max-width:calc(100% - 4px)}

/* 092: center the stage in the same fixed containing block as its measurement.
   Absolute positioning can retain an old layout viewport during native fullscreen. */
#stage{position:fixed}
/* Secondary home action: quiet, but still a full touch target. */
#desktopOpen{font-size:12px;color:#496256;padding:8px 9px;min-height:36px}
#supportAccess{position:absolute;inset:0;z-index:90;display:grid;place-items:center;padding:12px;background:#263c3459}
.support-card,.arena-desktop-dialog{background:#fffcf2;color:#294137;border:1px solid #274c3930;border-radius:20px;padding:24px;box-shadow:0 18px 60px #142e3030;width:min(490px,92%)}
.support-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.support-heading h2,.arena-desktop-dialog h2{font-size:24px;margin:0}.support-heading button{background:transparent;padding:8px 12px;font-size:13px}
.support-card p,.arena-desktop-dialog p{font-size:14px;line-height:1.6;margin:14px 0}.support-progress{display:flex;gap:12px;margin:12px 0;font-size:13px;color:#45715d}.support-actions,.arena-desktop-dialog>div{display:flex;gap:8px;flex-wrap:wrap}.support-actions button{font-size:13px;padding:10px 12px;min-height:40px}#supportRetry{background:#246c53;color:#fff9e7}.support-card small,.arena-desktop-dialog small{display:block;color:#69776e;font-size:11px;margin-top:12px}.arena-desktop-dialog{max-height:90%;margin:auto}.arena-desktop-dialog::backdrop{background:#263c3459}
@media(max-height:420px){.support-card,.arena-desktop-dialog{padding:16px 20px}.support-heading h2,.arena-desktop-dialog h2{font-size:20px}.support-card p,.arena-desktop-dialog p{margin:10px 0}.support-progress{margin:8px 0}#desktopOpen{padding:5px 8px;min-height:32px}}

/* Personal result sharing stays secondary to reading the standings. */
.rank-share-actions{display:flex;gap:8px;margin-top:7px}.rank-share-actions button{min-height:38px;padding:6px 14px;font-size:12px}.rank-share-actions #rankShare{background:#286b53;color:#fff8e9}.rank-rules{font-size:10px;opacity:.75;margin-top:5px}.rank-rules summary{cursor:pointer}.rank-rules small{display:block;line-height:1.5}.rank-panel{max-height:96%;overflow-y:auto;touch-action:pan-y}.rank-panel button:disabled{opacity:.45}
#rankSharePreview{position:absolute;inset:0;z-index:40;background:#142c26c9;display:flex;align-items:center;justify-content:center;padding:12px;touch-action:pan-y}.rank-share-panel{background:#f7f4e8;border-radius:14px;padding:12px 18px;width:min(640px,96%);max-height:100%;overflow:auto}.rank-share-panel header{display:flex;align-items:center;justify-content:space-between;margin:0 0 8px}.rank-share-panel h2{font-size:20px;margin:0}.rank-share-panel header button{min-width:44px;min-height:44px;padding:0}.rank-card-body{display:flex;gap:18px;align-items:center}.rank-card-body img{width:48%;max-height:calc(100vh - 110px);object-fit:contain;user-select:auto;-webkit-touch-callout:default}.rank-card-tools{flex:1;min-width:0;display:grid;gap:8px}.rank-card-tools p{font-size:12px;line-height:1.6;margin:0 0 5px}.rank-card-tools button{min-height:44px;padding:7px 12px;font-size:13px}#rankCardSend{background:#286b53;color:#fff8e9}.rank-card-tools small{font-size:11px;line-height:1.5;min-height:32px}.rank-card-tools input{width:100%;font-size:11px}.short-screen .rank-share-panel{padding:8px 14px}.short-screen .rank-card-body img{max-height:245px}.short-screen .rank-share-panel header{margin-bottom:2px}.short-screen .rank-share-actions{margin-top:2px}.short-screen .rank-share-actions button{min-height:36px}.short-screen .rank-rules{margin-top:2px}

/* Touch targets remain usable while another finger owns the movement stick. */
.touch .loadout button{min-height:44px;min-width:60px;touch-action:none}
