/* Touch controls share Meet surfaces, with room for safe-area and call controls. */
@media(any-pointer:coarse){
 .joystick{display:block;position:absolute;z-index:8;left:max(22px,env(safe-area-inset-left));bottom:calc(90px + env(safe-area-inset-bottom));width:108px;height:108px;border:1px solid #ffffff35;border-radius:50%;background:#202124b8;touch-action:none}
 #stick{width:40px;height:40px;left:33px;top:33px;border-radius:50%;background:#a8c7fa;box-shadow:0 2px 8px #0005}
 .mobile-actions{display:grid;grid-template-columns:repeat(3,54px);gap:7px;right:max(16px,env(safe-area-inset-right));bottom:calc(90px + env(safe-area-inset-bottom));z-index:8;touch-action:none}
 .mobile-actions button{width:54px;height:48px;min-height:44px;border:1px solid #ffffff24;border-radius:18px;background:#202124e8;color:#e3e3e3;font-size:11px;padding:3px;touch-action:none}
 .mobile-actions #mobileInteract{background:#a8c7fa;color:#062e6f;grid-column:span 2;width:auto;font-weight:600}
 .mobile-actions #mobileRooms{background:#303b50;color:#d3e3fd}
 .menu-open .mobile-actions,.menu-open .joystick,.meeting-visual .mobile-actions,.meeting-visual .joystick{display:none!important}
 .minimap{display:none}.entry-hint{bottom:calc(26px + env(safe-area-inset-bottom))}
 #menuBtn.menu-trigger{top:max(12px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));min-height:44px;padding:10px 12px}
 #menuBtn kbd{display:none}.audio-hud .meet-control{width:40px;min-width:40px;max-width:40px;height:44px;padding:8px}.audio-hud{gap:3px;padding:4px}
 :is(.seat-prompt,.tv-prompt,.lift-prompt,.executive-entry){max-width:90vw;font-size:12px;min-height:44px}
 #gameChat.is-active{left:12px!important;top:75px!important;width:calc(100vw - 24px)!important;height:min(42dvh,290px)!important;z-index:46}
 #gameChat input{font-size:16px}
 .game-chat:not(.is-active){pointer-events:none;max-width:55vw}.game-chat:not(.is-active) .game-chat-hint{pointer-events:auto}
 .location-toast{max-width:55vw;font-size:13px}
}
@media(max-width:650px){
 .pause-shell{padding:12px!important;gap:12px!important}.pause-sidebar{min-height:0!important}.pause-sidebar nav{overflow:auto;flex-wrap:nowrap!important}.pause-sidebar nav button{min-width:70px;min-height:44px}.pause-content{min-width:0}.pause-content h1{font-size:26px!important}
 .map-layout,.meeting-directory,.meeting-directory-layout{grid-template-columns:1fr!important}.district-tabs{flex-wrap:wrap}.district-tabs button{min-height:44px}
 .setting-row{gap:10px}.setting-row select{max-width:48vw}.identity-form input{font-size:16px}
 #callPanel{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);height:100dvh}
 #callPanel .meeting-header{padding:10px 12px}.meeting-header-meta{display:flex!important;font-size:10px}
 #callPanel .meeting-bottom{padding:8px 6px;gap:6px;flex-wrap:wrap}.meeting-bottom .meeting-audio-state{display:none}
 #callPanel .call-controls{gap:4px;padding:5px;max-width:100%;flex-wrap:wrap;justify-content:center}
 #callPanel .meet-control{width:40px;min-width:40px;height:44px;min-height:44px}.meeting-bottom .meet-control.leave-call{width:56px;min-width:56px}
 #callPanel .meeting-stage{min-width:0;padding:8px}#callPanel .meeting-people{position:absolute;inset:60px 8px 82px;width:auto;max-width:none;z-index:4}
 .call-bar{bottom:calc(8px + env(safe-area-inset-bottom))!important;max-width:calc(100vw - 12px)!important}.call-bar #callDetails{max-width:82px!important}.call-bar .world-call-controls{gap:2px!important}.call-bar .world-call-controls>.meet-control{flex-basis:36px!important;width:36px!important;min-width:36px!important;max-width:36px!important}
 .tv-panel,.lift-panel,.screen-picker,.drop-card{max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);overflow:auto}.tv-panel input{font-size:16px}
}
@media(max-height:500px) and (any-pointer:coarse){.joystick{bottom:18px;width:100px;height:100px}#stick{left:29px;top:29px}.mobile-actions{bottom:18px;grid-template-columns:repeat(4,50px)}.mobile-actions button{width:50px;height:44px}.call-bar{left:50%;bottom:8px!important;max-width:43vw!important}.call-bar #callDetails{display:none}.game-chat:not(.is-active){display:none}}

@media(max-width:650px){#callPanel.call-panel{grid-template-rows:56px minmax(0,1fr) auto}#callPanel .meeting-people{inset:8px 12px 0;max-height:none}#callPanel #roomChatInput{font-size:16px}#callPanel .meeting-dock{max-width:100%}#callPanel .meeting-heading{gap:5px}#callPanel .meeting-heading h2{max-width:130px}.meeting-heading .call-latency{font-size:9px}}
