#game{touch-action:none;width:100%;height:100%}#touchControls{position:fixed;inset:0;z-index:12;pointer-events:none;touch-action:none}#touchControls[hidden]{display:none!important}#touchLook{position:absolute;right:0;top:52px;bottom:70px;width:64%;pointer-events:auto;touch-action:none}#touchPad{position:absolute;bottom:calc(85px + env(safe-area-inset-bottom));left:calc(18px + env(safe-area-inset-left));width:112px;height:112px;border:2px solid #abc9bb70;border-radius:50%;background:#11282e55;pointer-events:auto;touch-action:none;display:grid;place-items:center}#touchPad:after{content:'DÉPLACEMENT';position:absolute;bottom:-20px;color:#ccd9ceaa;font:8px system-ui}#touchStick{width:43px;height:43px;border:1px solid #e2ead5a0;border-radius:50%;background:#9dbaa477;pointer-events:none}.touchButton{position:absolute;min-height:45px;min-width:48px;padding:7px;border:1px solid #bcd4c280;border-radius:12px;background:#10292ed4;color:#eff2da;font:bold 10px system-ui;pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;user-select:none}.touchButton.pressed{background:#a8c4a3cc;color:#17252b;border-color:#fff}#touchFire{right:calc(20px + env(safe-area-inset-right));bottom:calc(95px + env(safe-area-inset-bottom));width:76px;height:76px;border-radius:50%;background:#833c2ba8;font-size:13px;border:2px solid #e5b28d}#touchReload{right:calc(25px + env(safe-area-inset-right));bottom:calc(184px + env(safe-area-inset-bottom))}#touchGrenade{right:calc(108px + env(safe-area-inset-right));bottom:calc(96px + env(safe-area-inset-bottom))}#touchSprint{left:calc(145px + env(safe-area-inset-left));bottom:calc(99px + env(safe-area-inset-bottom))}#touchWeapon{right:calc(190px + env(safe-area-inset-right));bottom:calc(95px + env(safe-area-inset-bottom));max-width:85px}.touchTools{position:absolute;top:calc(9px + env(safe-area-inset-top));right:calc(10px + env(safe-area-inset-right));display:flex;gap:6px}.touchTools .touchButton{position:static;min-width:48px;min-height:42px}body.touch-mode #statusbar{height:calc(65px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);grid-template-columns:1fr 58px 1fr}body.touch-mode .statSide{padding:4px}body.touch-mode .stat strong{font-size:21px}body.touch-mode .stat small{font-size:8px}body.touch-mode .face,body.touch-mode .face canvas{width:56px;height:56px}body.touch-mode #team{display:none}body.touch-mode #top{top:calc(8px + env(safe-area-inset-top));left:calc(8px + env(safe-area-inset-left));right:auto;font-size:9px;max-width:52%;pointer-events:none}body.touch-mode #top .box{padding:6px;line-height:1.4}body.touch-mode #levelLabel{display:none}body.touch-mode #mapWrap{top:calc(66px + env(safe-area-inset-top));left:calc(8px + env(safe-area-inset-left));right:auto;padding:4px;font-size:8px;pointer-events:none}body.touch-mode #mapWrap canvas{width:94px;height:94px;margin:3px 0}body.touch-mode #mapWrap small{display:none}body.touch-mode #combatInfo{left:50%;bottom:70px;transform:translateX(-50%);font-size:8px}body.touch-mode #weaponLabel{bottom:70px;font-size:9px}body.touch-mode #fpsCounter{top:55px;left:40%}body.touch-mode #feed{max-width:35%;font-size:9px}#touchHint{font:11px system-ui;line-height:1.6;color:#bed2c5}.screen{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.panel{max-height:94dvh}button,a,input,select{touch-action:manipulation}#pause input,#pause select{max-width:55%}#pause .settingsPage label{flex-wrap:wrap;gap:8px}#pause .bindingRow{min-height:44px}.networkLink{color:#d3c099!important;text-decoration:none}#pause{z-index:25}#upgradeScreen{z-index:24}
@media (pointer:coarse){input,select{font-size:16px!important}#menu button,#pause button,.upgrade{min-height:44px}#menu .panel{padding:20px}#menu .launchGrid{gap:20px}#menu .characterStage canvas{height:220px}}
@media(max-height:500px) and (orientation:landscape){#menu .launchGrid{grid-template-columns:1fr 1fr;gap:20px}#menu .panel{padding:16px}#menu .logo{font-size:29px}#menu .logo span{font-size:12px}#menu .edition{margin-bottom:12px}#menu .characterStage canvas{height:170px}#menu .lead{font-size:11px}#menu .customFields{gap:7px}#menu .modeRow{gap:8px}body.touch-mode #mapWrap canvas{width:76px;height:76px}body.touch-mode #mapWrap{top:61px}body.touch-mode #top{font-size:8px}body.touch-mode #net{font-size:8px}}
@media(orientation:portrait){body.touch-mode #top{max-width:56%}body.touch-mode .touchTools{top:80px}body.touch-mode #touchLook{top:130px;bottom:210px;width:100%}body.touch-mode #touchPad{bottom:115px}body.touch-mode #touchFire{bottom:120px}body.touch-mode #touchReload{bottom:205px}body.touch-mode #touchGrenade{bottom:70px;right:20px}body.touch-mode #touchSprint{bottom:70px;left:20px}body.touch-mode #touchWeapon{bottom:70px;right:90px}body.touch-mode #mapWrap{top:140px}body.touch-mode #combatInfo{display:none}body.touch-mode .stat strong{font-size:17px}}

#mobilePause{position:fixed;right:12px;top:12px;z-index:13;min-height:44px;padding:10px;font:12px system-ui}#mobilePause[hidden]{display:none}
@media(max-height:380px) and (orientation:landscape){#touchPad{width:96px;height:96px;bottom:78px}#touchStick{width:36px;height:36px}#touchPad:after{display:none}body.touch-mode #touchHint{font-size:10px}}

/* Two-thumb layout. Gameplay surfaces never delegate touch gestures to the browser. */
body.game-playing,body.game-playing #hud,body.game-playing #hud *,#touchControls *{touch-action:none!important;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#touchAimPad{position:absolute;right:calc(18px + env(safe-area-inset-right));bottom:calc(85px + env(safe-area-inset-bottom));width:112px;height:112px;border:2px solid #e5b28d;border-radius:50%;background:#402a285c;pointer-events:auto;display:grid;place-items:center}
#touchAimStick{width:43px;height:43px;border:1px solid #ffdcc0;border-radius:50%;background:#bc846a90;pointer-events:none}
#touchAimPad.pressed{border-color:#fff0d0;background:#713b3270}#touchAimLabel{position:absolute;bottom:-20px;font:8px system-ui;color:#f4d5b5;pointer-events:none;white-space:nowrap}
#touchControls #touchFire{right:calc(146px + env(safe-area-inset-right));bottom:calc(89px + env(safe-area-inset-bottom));width:58px;height:58px;font-size:10px}
#touchControls #touchReload{right:calc(145px + env(safe-area-inset-right));bottom:calc(155px + env(safe-area-inset-bottom))}
#touchControls #touchGrenade{right:calc(18px + env(safe-area-inset-right));bottom:calc(216px + env(safe-area-inset-bottom))}
#touchControls #touchWeapon{right:calc(100px + env(safe-area-inset-right));bottom:calc(216px + env(safe-area-inset-bottom))}
#touchAimFire{left:calc(18px + env(safe-area-inset-left));bottom:calc(216px + env(safe-area-inset-bottom));font-size:9px}
@media(orientation:portrait){body.touch-mode #touchAimPad{bottom:calc(135px + env(safe-area-inset-bottom))}body.touch-mode #touchPad{bottom:calc(135px + env(safe-area-inset-bottom))}#touchControls #touchFire{right:calc(18px + env(safe-area-inset-right));bottom:calc(270px + env(safe-area-inset-bottom))}#touchControls #touchReload{right:calc(87px + env(safe-area-inset-right));bottom:calc(270px + env(safe-area-inset-bottom))}#touchControls #touchGrenade{right:calc(18px + env(safe-area-inset-right));bottom:calc(76px + env(safe-area-inset-bottom))}#touchControls #touchWeapon{right:calc(103px + env(safe-area-inset-right));bottom:calc(76px + env(safe-area-inset-bottom))}#touchControls #touchSprint{left:calc(18px + env(safe-area-inset-left));bottom:calc(76px + env(safe-area-inset-bottom))}#touchAimFire{bottom:calc(270px + env(safe-area-inset-bottom))}}
@media(max-height:380px) and (orientation:landscape){#touchAimPad{width:96px;height:96px;bottom:78px}#touchAimStick{width:36px;height:36px}#touchAimLabel{bottom:-15px}#touchControls #touchGrenade,#touchControls #touchWeapon,#touchAimFire{bottom:190px}}

#touchAimPad.firing{background:#a737287d;border-color:#ffb39e;box-shadow:0 0 18px #ff613b80}#touchAimPad.firing #touchAimStick{background:#ef785ab0}

/* Floating joystick capture areas; visual bases follow the initial contact. */
#touchMoveZone,#touchAimZone{position:absolute;top:64px;bottom:70px;width:50%;pointer-events:auto;touch-action:none;z-index:0}#touchMoveZone{left:0}#touchAimZone{right:0}
#touchControls #touchLook{display:none}#touchControls #touchPad,#touchControls #touchAimPad{position:fixed;pointer-events:none;z-index:1}#touchControls .touchButton,.touchTools{z-index:2}
#toast{pointer-events:none}#pause select,#pause button,#pause input{pointer-events:auto;touch-action:manipulation}#pause .panel{overscroll-behavior:contain;touch-action:pan-y;overflow-y:auto;-webkit-overflow-scrolling:touch}
#weaponNotice{position:absolute;left:50%;top:59%;transform:translateX(-50%);padding:8px 12px;border:1px solid #e6b66e;background:#111b22ed;color:#ffce87;text-align:center;font:11px system-ui;max-width:75vw;min-width:190px;pointer-events:none}#weaponNotice[hidden]{display:none}#weaponNotice.dry{border-color:#ff7964;color:#ff9983}#cross.empty:before,#cross.empty:after{filter:sepia(1) saturate(9) hue-rotate(315deg)}
.choiceTrigger{font:inherit;text-transform:none;min-height:44px;min-width:150px;max-width:60%;background:#182c32;color:#eef1e4;border:1px solid #6e918e;text-align:left;padding:10px}.choiceTrigger:after{content:' ▾';float:right}.choiceNative{display:none!important}
#choiceDialog{position:fixed;inset:0;z-index:70;background:#030a10dd;display:grid;place-items:center;padding:16px;touch-action:manipulation}#choiceDialog[hidden]{display:none}#choiceDialog .choicePanel{width:min(480px,94vw);max-height:85dvh;overflow:auto;background:#122329;border:1px solid #78988d;padding:18px;overscroll-behavior:contain;touch-action:pan-y}#choiceDialog h2{font:18px system-ui;color:#eac491}#choiceDialog button{display:block;width:100%;margin:8px 0;min-height:48px;text-transform:none;background:#233c42;border:1px solid #587b77}#choiceDialog button[aria-pressed=true]{border-color:#edc58a;background:#465c51}#choiceDialog .choiceCancel{background:#17252c}
#fpsCounter{white-space:pre-line;background:#07131ee8;border:1px solid #688a91;padding:8px;line-height:1.5;max-width:90vw;pointer-events:none;font-size:10px;z-index:14}body.touch-mode #fpsCounter{left:8px;top:65px;font-size:9px}


/* 6.10.25 — responsive touch HUD: compact icon controls and stable sizing. */
body.touch-mode{--hc-stick:clamp(88px,17vmin,124px);--hc-knob:clamp(34px,6.4vmin,46px);--hc-action:clamp(42px,7.8vmin,56px);--hc-gap:clamp(8px,1.7vmin,14px);--hc-hud:clamp(58px,10.5vmin,74px)}
body.touch-mode #touchPad,body.touch-mode #touchAimPad{width:var(--hc-stick);height:var(--hc-stick);bottom:calc(var(--hc-hud) + 18px + env(safe-area-inset-bottom));will-change:left,top,transform;contain:layout style paint}
body.touch-mode #touchStick,body.touch-mode #touchAimStick{width:var(--hc-knob);height:var(--hc-knob);will-change:transform}
body.touch-mode .touchButton{min-width:var(--hc-action);min-height:var(--hc-action);width:var(--hc-action);height:var(--hc-action);padding:0;border-radius:50%;background:#10292e73;border-color:#c5ded18a;color:#f2f5e6;display:grid;place-items:center;font-size:clamp(17px,3.8vmin,24px);line-height:1;opacity:.82}
body.touch-mode .touchButton.pressed{opacity:1;background:#a8c4a3b8}
body.touch-mode #touchFire{width:calc(var(--hc-action) * 1.16);height:calc(var(--hc-action) * 1.16);right:calc(var(--hc-stick) + 34px + env(safe-area-inset-right));bottom:calc(var(--hc-hud) + 20px + env(safe-area-inset-bottom));font-size:clamp(20px,4.3vmin,28px);background:#833c2b78}
body.touch-mode #touchReload{right:calc(var(--hc-stick) + 38px + env(safe-area-inset-right));bottom:calc(var(--hc-hud) + var(--hc-action) + 34px + env(safe-area-inset-bottom))}
body.touch-mode #touchGrenade{right:calc(18px + env(safe-area-inset-right));bottom:calc(var(--hc-hud) + var(--hc-stick) + 38px + env(safe-area-inset-bottom))}
body.touch-mode #touchWeapon{right:calc(var(--hc-action) + 28px + env(safe-area-inset-right));bottom:calc(var(--hc-hud) + var(--hc-stick) + 38px + env(safe-area-inset-bottom));max-width:none}
body.touch-mode #touchSprint{left:calc(var(--hc-stick) + 34px + env(safe-area-inset-left));bottom:calc(var(--hc-hud) + 20px + env(safe-area-inset-bottom))}
body.touch-mode .touchTools{top:calc(8px + env(safe-area-inset-top));right:calc(8px + env(safe-area-inset-right));gap:var(--hc-gap)}
body.touch-mode .touchTools .touchButton{min-width:var(--hc-action);min-height:var(--hc-action)}
body.touch-mode #statusbar{height:calc(var(--hc-hud) + env(safe-area-inset-bottom))}
body.touch-mode #mapWrap canvas{width:clamp(78px,15vmin,112px);height:clamp(78px,15vmin,112px)}
body.touch-mode #mapWrap{top:calc(clamp(54px,9vmin,70px) + env(safe-area-inset-top));background:#0a1419c9;opacity:.88}
body.touch-mode #touchAimLabel{font-size:clamp(7px,1.6vmin,9px);bottom:-18px}
body.touch-mode #touchMoveZone,body.touch-mode #touchAimZone{top:calc(52px + env(safe-area-inset-top));bottom:calc(var(--hc-hud) + 6px + env(safe-area-inset-bottom))}
#mobilePause{width:44px;min-width:44px;border-radius:50%;background:#10292e80;border:1px solid #c5ded18a;color:#f2f5e6;font-size:20px;opacity:.82}
@media (pointer:coarse){#pause .pausePanel{width:min(640px,96vw)!important;max-height:calc(100dvh - 12px)!important}.pausePage,.settingsPage{padding:clamp(12px,2.8vmin,18px)!important;gap:8px!important}.pauseChrome{padding:8px 12px!important}.pauseBrand{padding:4px 0 10px!important}.pauseBrand>strong{font-size:clamp(28px,8vmin,38px)!important}.pauseBrand>small{font-size:9px!important}.pauseState{margin:8px 0 2px!important;padding:7px 10px!important}.pauseActions{gap:6px!important;margin-top:8px!important}.pauseActions button{min-height:44px!important;padding:8px 11px!important}.pauseActions button>span{font-size:11px!important}.pauseActions button>small{font-size:8px!important}.pauseActions button:after{font-size:21px!important}.pauseHint{margin-top:10px!important}.settingsPage label{padding:7px 0!important}.settingsPage h3{margin-top:14px!important}.joinSetupPanel{width:min(900px,97vw)!important}.screen{padding-left:clamp(6px,2vmin,16px);padding-right:clamp(6px,2vmin,16px)}}
@media (max-width:560px){body.touch-mode .stat strong{font-size:clamp(15px,4.7vw,19px)}body.touch-mode .stat small{font-size:7px}body.touch-mode .face,body.touch-mode .face canvas{width:clamp(44px,12vw,54px);height:clamp(44px,12vw,54px)}body.touch-mode #statusbar{grid-template-columns:1fr clamp(46px,13vw,58px) 1fr}.joinSetupActions button{min-width:0}.customFields{grid-template-columns:1fr!important}}
@media (pointer:coarse) and (orientation:portrait){body.touch-mode #touchPad,body.touch-mode #touchAimPad{bottom:calc(var(--hc-hud) + 58px + env(safe-area-inset-bottom))}body.touch-mode #touchFire{right:calc(16px + env(safe-area-inset-right));bottom:calc(var(--hc-hud) + var(--hc-stick) + 78px + env(safe-area-inset-bottom))}body.touch-mode #touchReload{right:calc(var(--hc-action) + 26px + env(safe-area-inset-right));bottom:calc(var(--hc-hud) + var(--hc-stick) + 78px + env(safe-area-inset-bottom))}body.touch-mode #touchGrenade{right:calc(16px + env(safe-area-inset-right));bottom:calc(var(--hc-hud) + 8px + env(safe-area-inset-bottom))}body.touch-mode #touchWeapon{right:calc(var(--hc-action) + 26px + env(safe-area-inset-right));bottom:calc(var(--hc-hud) + 8px + env(safe-area-inset-bottom))}body.touch-mode #touchSprint{left:calc(16px + env(safe-area-inset-left));bottom:calc(var(--hc-hud) + 8px + env(safe-area-inset-bottom))}body.touch-mode #mapWrap{top:calc(74px + env(safe-area-inset-top))}}
@media (pointer:coarse) and (max-height:430px) and (orientation:landscape){body.touch-mode{--hc-stick:clamp(78px,24vh,96px);--hc-action:clamp(38px,11vh,46px);--hc-hud:clamp(52px,15vh,62px)}#pause .pausePanel{max-height:98dvh!important}.pauseBrand>small,.pauseHint{display:none}.pauseActions button{min-height:40px!important;padding:6px 10px!important}.pauseChrome{padding:6px 10px!important}.pausePage,.settingsPage{padding:10px 14px!important}}

.touchIconButton>span{pointer-events:none;display:block;line-height:1}

/* 6.10.26 — explicit touch pictograms, map beside its control, faster aim reacquisition. */
body.touch-mode #mapWrap{
 left:auto!important;
 top:calc(8px + env(safe-area-inset-top))!important;
 right:calc(18px + env(safe-area-inset-right) + (var(--hc-action) * 3) + (var(--hc-gap) * 2))!important;
 padding:4px;
 border-color:#6f8f8b;
 background:#081216d9;
 box-shadow:0 5px 18px #0009;
 opacity:.94;
}
body.touch-mode #mapWrap>div,body.touch-mode #mapWrap>small{display:none!important}
body.touch-mode #mapWrap canvas{display:block;width:clamp(82px,15vmin,116px);height:clamp(82px,15vmin,116px);margin:0!important}
.touchIconButton img,#mobilePause img{display:block;width:68%;height:68%;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 1px 1px #000b)}
body.touch-mode #touchFire img{width:74%;height:74%}
body.touch-mode .touchButton.pressed img{transform:scale(.9);filter:drop-shadow(0 1px 1px #0008) brightness(1.15)}
#mobilePause{display:grid;place-items:center;padding:0}
#mobilePause img{width:58%;height:58%}
@media (pointer:coarse) and (max-width:430px){body.touch-mode #mapWrap canvas{width:78px;height:78px}body.touch-mode #mapWrap{right:calc(14px + env(safe-area-inset-right) + (var(--hc-action) * 3) + (var(--hc-gap) * 2))!important}}

/* 6.10.27 — gyro aim hides the right joystick while keeping touch action buttons. */
body.touch-gyro #touchAimPad,body.touch-gyro #touchAimZone,body.touch-gyro #touchAimLabel{display:none!important}
body.touch-gyro #touchFire{right:calc(18px + env(safe-area-inset-right));}
@media (pointer:coarse) and (orientation:portrait){body.touch-gyro #touchFire{right:calc(16px + env(safe-area-inset-right));bottom:calc(var(--hc-hud) + var(--hc-stick) + 78px + env(safe-area-inset-bottom))}}

/* 6.10.38 — direct touch door action above the two-thumb capture zones. */
body.touch-mode #useDoor{touch-action:none;min-height:52px;max-width:100%;font-size:13px}
body.touch-mode #doorHud{top:calc(64px + env(safe-area-inset-top));width:min(420px,90vw);font-size:11px}
body.touch-mode #touchSprint[aria-pressed=true]{opacity:1;border:2px solid #d6f5a5;background:#456b39cc;box-shadow:0 0 10px #acd97566}

/* Outer sprint ring: stays outside the normal stick without extra layout reads. */
body.touch-mode #touchPad{contain:layout style;overflow:visible}
#touchPad:before{content:'';position:absolute;inset:-9%;border:2px dashed #d7c48a99;border-radius:50%;pointer-events:none}
#touchPad.sprint-zone:before{border-style:solid;border-color:#a5ffd5;background:#80edba12}
#touchPad.sprint-zone{border-color:#a5ffd5}
