/* Account entry and browser-sized mobile layouts. */
#authGameplayVideo{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;z-index:0;background:#07101a}.auth-video-shade{position:fixed;inset:0;background:linear-gradient(90deg,#06111bc9 0%,#07111b45 45%,#07111bc9 100%);pointer-events:none;z-index:1}#auth .auth-shell{position:relative;z-index:2}#authVideoToggle{position:fixed;right:max(18px,env(safe-area-inset-right));top:max(16px,env(safe-area-inset-top));z-index:3;min-height:40px;border:1px solid #ffffff50;background:#08131a95;color:white;border-radius:20px;padding:8px 16px;cursor:pointer;font:12px system-ui}.auth-gameplay-caption{margin-top:30px;letter-spacing:.24em;font-size:12px;font-weight:700;color:#d9ebe9}#auth .auth-card{background:#101c28e8;backdrop-filter:blur(16px);box-shadow:0 24px 80px #0006}#auth .auth-hero h2{text-shadow:0 3px 30px #0007}@media(max-width:700px){#auth{padding-top:72px!important}.auth-video-shade{background:linear-gradient(0deg,#07111be6,#07111b8a)}.auth-gameplay-caption{margin:12px 0}.auth-hero>p,.auth-tags{display:none}#auth .auth-hero h2{font-size:34px;line-height:1.1}#auth .auth-brand{margin-bottom:12px}}
#auth{box-sizing:border-box;overflow:auto;justify-content:flex-start;text-align:left;background:radial-gradient(ellipse at 15% 20%,#173f4c 0,transparent 48%),radial-gradient(ellipse at 85% 90%,#482f27 0,transparent 45%),#0b141d;padding:clamp(20px,5vw,64px);height:var(--visible-height,100dvh)}
.auth-shell{width:min(1080px,100%);margin:auto;display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(24px,6vw,80px);align-items:center}
.auth-brand{font-size:12px;letter-spacing:.2em;font-weight:800;color:#8ce3cf;margin-bottom:28px}.auth-hero h2{font-size:clamp(36px,5.3vw,68px);letter-spacing:-.055em;line-height:1.04;margin:0 0 20px;max-width:560px}.auth-hero h2 span{color:#91e8d2}.auth-hero>p{font-size:17px;line-height:1.65;color:#b8c6d1;max-width:440px}.auth-tags{display:flex;flex-wrap:wrap;gap:8px;margin:24px 0}.auth-tags span{border:1px solid #ffffff25;border-radius:24px;padding:9px 13px;color:#dee8ef;font-size:12px}.auth-scene{height:108px;display:flex;gap:6px;align-items:flex-end;border-bottom:2px solid #7edac680;padding:0 20px;background:linear-gradient(0deg,#82decb0c,transparent);overflow:hidden}.auth-scene i{display:block;width:38px;height:60%;background:repeating-linear-gradient(90deg,transparent 0 8px,#9ddacc3b 8px 11px),repeating-linear-gradient(0deg,#1a3d4b 0 11px,#8de2cd25 11px 14px);border-top:2px solid #91e8d2}.auth-scene i:nth-child(2n){height:90%}.auth-scene i:nth-child(3n){height:42%;width:58px}.auth-caption{font-size:12px;color:#8299a9;margin-top:12px}
.auth-card{background:#17232ddd;border:1px solid #ffffff20;border-radius:22px;padding:clamp(22px,3vw,38px);box-shadow:0 20px 60px #0004}.auth-card .eyebrow{color:#8ee1ce;font-size:11px;font-weight:700;letter-spacing:.15em;margin:0 0 12px}#auth .auth-card h1{font-size:28px;margin-bottom:8px;letter-spacing:-.03em}.auth-card>p{color:#a8bdcc;font-size:14px;line-height:1.5;margin:0 0 24px}.auth-card label{display:block;font-size:13px;margin:16px 0 7px;color:#dbe7ef}#auth .auth-card input,#auth .auth-card select{box-sizing:border-box;width:100%;font-size:16px;margin:0;padding:14px;border-radius:10px;border:1px solid #6a85954d;background:#0c1723;color:white}#auth input:focus{outline:2px solid #8fe0ce;outline-offset:2px}#authBtn{width:100%;margin:22px 0 0;min-height:48px;background:#8ee2cd;color:#0b2724;font-weight:800}#authBtn:hover{background:#b4f1e2}#authSwitch{display:block;margin:18px auto 0;border:0;background:transparent;color:#b8d5e4;padding:9px;font:inherit;font-size:13px;opacity:1;cursor:pointer}#authError{max-width:none;color:#ffb2a6;line-height:1.5;font-size:13px;margin-top:12px}.auth-note{font-size:11px!important;line-height:1.5;color:#849cab!important;margin:16px 0 0!important}
@media(max-width:700px){#auth{padding:max(20px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left))}.auth-shell{grid-template-columns:1fr;gap:22px;margin:0 auto}.auth-brand{margin-bottom:16px}.auth-hero h2{font-size:40px}.auth-hero>p{font-size:14px;margin:12px 0}.auth-tags{margin:16px 0}.auth-scene,.auth-caption{display:none}.auth-card{padding:22px}.auth-card>p{margin-bottom:14px}}
@media(max-height:500px) and (min-width:701px){#auth{padding:20px}.auth-brand{margin-bottom:12px}.auth-hero h2{font-size:40px}.auth-scene,.auth-caption{display:none}.auth-card{padding:20px}.auth-card>p{margin-bottom:10px}.auth-card label{margin-top:10px}#auth .auth-card input{padding:10px}#authBtn{margin-top:14px}#authSwitch{margin-top:8px}}
.mobile-game #menu,.mobile-game #spawn,.mobile-game #classSelect,.mobile-game #start{box-sizing:border-box;height:var(--visible-height,100dvh);overflow:auto}.mobile-game #menu .panel{justify-content:flex-start;padding:20px;gap:8px;width:min(400px,100%)}.mobile-game #classSelect{padding:16px;justify-content:flex-start}.mobile-game #settingsPanel{max-height:calc(var(--visible-height,100dvh) - 24px);overflow:auto;width:min(480px,85vw);box-sizing:border-box}.mobile-game #board{max-height:calc(var(--visible-height,100dvh) - 24px)}
/* Phone menus also work before gameplay starts, in portrait and landscape. */
#hostingPanel{height:var(--visible-height,100dvh);width:var(--visible-width,100vw);top:var(--visible-top,0px)!important;left:var(--visible-left,0px)!important;right:auto!important;bottom:auto!important;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))!important;overflow:hidden}
#hostingPanel .hosting-card{box-sizing:border-box;max-height:100%!important;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;scroll-padding:20px}
#hostingPanel button,#hostingPanel input,#hostingPanel select{font:inherit;font-size:16px;min-height:44px;box-sizing:border-box}
#hostingPanel button{padding:10px 16px;border:1px solid #59718f;border-radius:9px;background:#284367;color:#fff;cursor:pointer;touch-action:manipulation}
#hostingPanel button:disabled{opacity:.5;cursor:default}
#hostingPanel :focus-visible{outline:2px solid #9ce6db;outline-offset:3px}
#hostingPanel [hidden]{display:none!important}
#publicRooms{display:grid;gap:8px}#publicRooms>div{flex-wrap:wrap}#publicRooms>div>span{flex:1 1 180px;overflow-wrap:anywhere}#roomError{overflow-wrap:anywhere}
/* Hosting panel visual polish — was plain system-default labels/inputs with no hierarchy. */
#hostingPanel .hosting-card{border:1px solid #ffffff20;box-shadow:0 20px 60px #0006}
#hostingPanel h2{margin:0 0 18px;font-size:24px;letter-spacing:-.02em}
#hostingPanel h3{margin:20px 0 8px;font-size:12px;color:#8ee1ce;text-transform:uppercase;letter-spacing:.12em;font-weight:700}
#hostingPanel label{display:block;font-size:13px;color:#b8cbe0;margin:16px 0 7px}
#hostingPanel p{font-size:12px;color:#8299a9;line-height:1.5;margin:6px 0 0}
#hostingPanel select,#hostingPanel input[type=text],#hostingPanel input[type=number]{background:#0c1723!important;border:1px solid #6a85954d!important;border-radius:10px!important;padding:12px!important}
#hostingPanel select:focus,#hostingPanel input:focus{outline:2px solid #8fe0ce;outline-offset:2px}
#hostingPanel #roomSubmit{display:block;width:100%;margin-top:20px;background:#3867d6;border-color:#3867d6;font-weight:700;font-size:15px}
#hostingPanel #roomSubmit:hover:not(:disabled){background:#4a76e0}
#hostingPanel #roomCancel{display:block;width:100%;margin-top:10px;background:transparent;border-color:transparent;color:#9fb3c8;text-decoration:underline}
#hostingPanel #roomError{font-size:13px;min-height:16px;margin-top:14px}
#hostingPanel #refreshRooms{padding:7px 14px;font-size:12px;min-height:36px}
#hostingPanel #publicRoomStatus{margin:8px 0}
#hostingPanel #publicRooms>div{background:#1b2a40;border-color:#2e4365}
#hostingPanel #publicRooms button{background:#3867d6;border-color:#3867d6;font-weight:600;font-size:13px;padding:8px 14px;min-height:36px}
@media(max-width:700px),(pointer:coarse){
 #menu{height:var(--visible-height,100dvh)!important;top:var(--visible-top,0px);overflow:hidden!important;background:linear-gradient(135deg,#0a1726e8,#152a40db)}
 #menu .panel,.mobile-game #menu .panel{top:0;bottom:60px;width:min(460px,100%);max-height:calc(var(--visible-height,100dvh) - 60px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;justify-content:flex-start;gap:10px;padding:max(20px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) 24px max(18px,env(safe-area-inset-left));margin:auto;left:0;right:0}
 #menu .panel>button{flex-shrink:0;min-height:58px;font-size:16px;padding:14px 16px;touch-action:manipulation}#menu h1{flex-shrink:0;font-size:28px;margin-bottom:10px}
 #menu #menuSignout{left:max(18px,env(safe-area-inset-left));bottom:max(8px,env(safe-area-inset-bottom));min-height:44px;padding:10px 14px;font-size:14px}
 #hostingPanel .hosting-card{padding:18px!important;border-radius:14px!important}#hostingPanel h2{font-size:24px;margin-top:0}#hostingPanel p{font-size:14px;line-height:1.5}
}
#roomChat{position:fixed;left:max(12px,env(safe-area-inset-left));bottom:max(110px,env(safe-area-inset-bottom));z-index:19;color:white;font:14px system-ui;max-width:calc(100vw - 24px)}
#roomChat[hidden],#roomChat [hidden]{display:none!important}#roomChat button{min-height:44px;border:1px solid #58728c;border-radius:9px;background:#18334e;color:white;font:inherit;padding:8px 12px;touch-action:manipulation}
#chatBody{box-sizing:border-box;width:min(360px,calc(var(--visible-width,100vw) - 24px));max-height:calc(var(--visible-height,100dvh) - 36px);overflow-y:auto;background:#102033f5;border:1px solid #4d6d87;border-radius:14px;padding:12px;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch}
#chatClose{float:right}#chatStatus{clear:both;font-size:12px;color:#bfcede}#chatMessages{height:140px;max-height:25dvh;overflow-y:auto;overflow-wrap:anywhere;user-select:text}#chatMessages p{margin:7px 0}#chatForm{display:flex;gap:6px;margin:10px 0}#chatText{width:0;flex:1;min-width:0;min-height:44px;font:16px system-ui;color:white;background:#203951;border:1px solid #5c7890;border-radius:8px;padding:8px}
@media(pointer:coarse),(max-width:700px){#roomChat:has(#chatBody:not([hidden])){top:calc(var(--visible-top,0px) + max(12px,env(safe-area-inset-top)));bottom:auto;left:calc(var(--visible-left,0px) + max(12px,env(safe-area-inset-left)))}#chatMessages{height:110px}#voiceToggle,#voiceListen{margin:3px 0}}
#roomChat:has(#chatBody:not([hidden]))>#chatToggle{display:none}
#gameUpdateNotice{position:fixed;right:max(16px,env(safe-area-inset-right));top:max(16px,env(safe-area-inset-top));z-index:110;width:min(360px,calc(100vw - 32px));box-sizing:border-box;padding:18px;border-radius:14px;background:#142a40f5;border:1px solid #8ae2cc;color:white;font:14px/1.5 system-ui;max-height:calc(var(--visible-height,100dvh) - 32px);overflow:auto}#gameUpdateNotice[hidden]{display:none}#gameUpdateNotice strong{font-size:18px}#gameUpdateNotice button{font:16px system-ui;min-height:44px;padding:10px 14px;margin:4px;border:0;border-radius:8px;cursor:pointer;background:#8ae2cc;color:#102c29}#gameUpdateError{color:#ffb7a1}
#requiredUsername{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;background:#081321f5;color:white;padding:20px;box-sizing:border-box;font:16px system-ui;overflow:auto}#requiredUsername form{width:min(420px,100%);max-height:90dvh;overflow:auto;background:#183049;border:1px solid #58788f;padding:24px;box-sizing:border-box;border-radius:16px}#requiredUsername input,#requiredUsername button{width:100%;box-sizing:border-box;min-height:46px;font:16px system-ui;margin:10px 0;padding:12px;border-radius:9px;border:1px solid #6d8d9e}#requiredUsername [role=status]{color:#ffbaa5}
.onlinePlayerName{position:fixed;transform:translate(-50%,-100%);z-index:8;pointer-events:none;font:bold 14px system-ui;text-shadow:0 1px 3px black;display:none;white-space:nowrap}.voiceParticipant{display:flex;align-items:center;gap:8px;margin:8px 0}.voiceParticipant span{flex:1;min-width:0;overflow-wrap:anywhere}.voiceParticipant input{width:90px;min-height:44px}
#supportSkillsPanel,#cityServicePanel,#hunterPanel,#lawPanel{position:fixed;inset:0;z-index:28;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));height:var(--visible-height,100dvh);box-sizing:border-box;background:#081524ed;color:white;display:flex;align-items:center;justify-content:center;font:14px/1.5 system-ui}#supportSkillsPanel[hidden],#cityServicePanel[hidden],#hunterPanel[hidden],#lawPanel[hidden]{display:none!important}#supportSkillsPanel>div,#cityServicePanel>div,#hunterPanel>div,#lawPanel>div{width:min(640px,100%);max-height:100%;box-sizing:border-box;overflow:auto;overscroll-behavior:contain;background:#172c40;padding:20px;border:1px solid #6b8596;border-radius:16px;touch-action:pan-y;-webkit-overflow-scrolling:touch}#supportSkillsPanel button,#cityServicePanel button,#hunterPanel button,#lawPanel button{font:16px system-ui;min-height:44px;padding:10px 14px;margin:4px;border-radius:9px;border:1px solid #809fb2;background:#315674;color:white;cursor:pointer}#supportSkillsPanel button:disabled,#hunterPanel button:disabled{opacity:.45;cursor:default}.supportSkillRow{padding:10px 0;border-top:1px solid #ffffff20}.supportSkillRow p{margin:0 0 8px}#cityServiceOptions{display:flex;flex-direction:column;gap:8px}
#onlineAccountError{position:fixed;inset:0;z-index:121;display:flex;align-items:center;justify-content:center;background:#0b172bf5;color:white;padding:20px;box-sizing:border-box;font:16px system-ui}#onlineAccountError>div{width:min(440px,100%);max-height:90dvh;overflow:auto;background:#1b3047;border-radius:16px;padding:24px;box-sizing:border-box}#onlineAccountError button{font:16px system-ui;min-height:44px;border:0;border-radius:9px;padding:10px 16px;background:#8ee1d1;color:#132b29}
#worldMapPanel,#movieTvPanel{position:fixed;inset:0;z-index:70;box-sizing:border-box;display:flex;justify-content:center;align-items:center;background:#081422ed;color:white;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));height:var(--visible-height,100dvh);font:14px/1.5 system-ui}#worldMapPanel[hidden],#movieTvPanel[hidden],#watchTvButton[hidden]{display:none!important}#worldMapPanel>div,#movieTvPanel>div{width:min(760px,100%);max-height:100%;overflow:auto;overscroll-behavior:contain;box-sizing:border-box;background:#142c41;border:1px solid #597c93;border-radius:14px;padding:18px;touch-action:pan-y;-webkit-overflow-scrolling:touch}#worldMapPanel canvas{display:block;width:100%;height:auto;border-radius:8px;margin:12px 0;background:#203b38}#worldMapPanel input,#movieTvPanel input{box-sizing:border-box;width:100%;font:16px system-ui;padding:12px;min-height:44px;border:1px solid #627e93;border-radius:8px;margin:8px 0;color:white;background:#203d54}#worldMapPanel button,#movieTvPanel button{font:16px system-ui;min-height:44px;padding:10px 14px;margin:4px;border-radius:8px;border:1px solid #7590a5;color:white;background:#31536e;cursor:pointer}#worldMapList{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4px}#movieTvPanel video{display:block;width:100%;max-height:50dvh;background:black;margin:12px 0}#worldMapButton,#watchTvButton{position:fixed;right:max(16px,env(safe-area-inset-right));z-index:14;min-height:44px;background:#183349e8;color:white;border:1px solid #7896aa;border-radius:9px;padding:9px 12px;font:14px system-ui;cursor:pointer}#worldMapButton{top:100px}#watchTvButton{top:150px}
#map3dViewport{position:relative;height:420px;width:100%;overflow:hidden;border-radius:12px;margin:12px 0;background:#152d3d}#map3dViewport canvas{margin:0!important;width:100%!important;height:100%!important;touch-action:none}.map3dLabel{position:absolute;transform:translate(-50%,-150%);padding:3px 6px;background:#102332df;color:white;font:11px system-ui;border:1px solid #7896a1;border-radius:5px;white-space:nowrap;cursor:pointer}.map3dLabel[hidden]{display:none!important}#tvVideoArea{position:relative}#googleTvAds,#houseTvAd{position:absolute;inset:0;z-index:2}#googleTvAds[hidden],#houseTvAd[hidden],#tvAdvertContact[hidden]{display:none!important}#houseTvAd{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:12px;box-sizing:border-box;color:white}#houseTvAd strong{font-size:24px}.tvRemote{display:flex;flex-wrap:wrap;gap:6px}#tvAdvertContact{border-top:1px solid #7aa8b0;padding-top:10px}#tvAdvertContact a,#tvProgrammeCredit a{color:#9be6db}@media(max-width:700px),(max-height:500px){#map3dViewport{height:300px}.map3dLabel{font-size:10px}}
#tvVideoArea{margin:12px 0}#tvVideoArea video{margin:0!important}
#adventurePanel{position:fixed;inset:0;z-index:29;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));box-sizing:border-box;height:var(--visible-height,100dvh);display:flex;align-items:center;justify-content:center;background:#081423ed;color:white;font:15px/1.5 system-ui}#adventurePanel[hidden]{display:none!important}#adventurePanel>div{width:min(560px,100%);max-height:100%;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;background:#19334a;border:1px solid #6c90a6;border-radius:16px;padding:20px;box-sizing:border-box}#adventureOptions{display:flex;flex-direction:column;gap:6px}#adventurePanel button{min-height:44px;font:16px system-ui;padding:10px 14px;border-radius:9px;border:1px solid #799bad;background:#2c506c;color:white;cursor:pointer}
#gameLoading{position:fixed;inset:0;z-index:110;background:#07101d;color:white;display:flex;align-items:flex-end;justify-content:center;padding: max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(32px,env(safe-area-inset-bottom));box-sizing:border-box;min-height:100dvh}
#gameLoading[hidden]{display:none}#gameLoading video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.65}#gameLoading:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent,#07101ded)}
.loading-content{position:relative;z-index:1;width:min(560px,100%);text-align:center}.loading-content h1{font-size:clamp(24px,5vw,40px)}.loading-content progress{width:100%;height:18px;accent-color:#62d8ff}.loading-content strong{display:block;margin-top:12px}.loading-content button{padding:12px 24px;margin-top:12px}

#hunterPanel button,#lawPanel button{display:block;width:calc(100% - 8px);text-align:left}#hunterStatus,#lawSummary{color:#9fd8ff}
