/* Phone controls occupy thumb docks; the center remains available for aiming. */
.touch-fullscreen{display:none}
#rotateDevice{position:fixed;inset:0;z-index:250;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 50% 35%,#405344,#182c26 80%);color:#edf2dc;text-align:center}
.rotate-card{max-width:340px}.rotate-card h1{font-size:29px;letter-spacing:-.035em;margin:20px 0 12px}.rotate-card p{font-size:14px;line-height:1.7;color:#c8d6be}.rotate-card small{display:block;font-size:11px;line-height:1.6;color:#a7baa2;margin-top:16px}
.rotate-phone{display:grid;place-items:center;width:74px;height:112px;border:3px solid #c6dc98;border-radius:14px;margin:0 auto 25px;transform:rotate(90deg);font-size:48px;color:#c6dc98}.rotate-card .primary{margin-top:24px;min-height:48px}
body.portrait-blocked #touchControls,body.portrait-blocked #resumePointer{display:none!important}
.touch-order-menu{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);display:flex;gap:6px;padding:8px;background:#20382ff5;border:1px solid #b0c88866;border-radius:10px;box-shadow:0 5px 24px #122a2877;pointer-events:auto}
#touchControls .touch-order-menu button{min-width:60px;min-height:44px;padding:7px 9px}
body.touch-ui{
 --hud-left:max(12px,env(safe-area-inset-left));--hud-right:max(12px,env(safe-area-inset-right));--hud-bottom:max(12px,env(safe-area-inset-bottom));--hud-top:max(8px,env(safe-area-inset-top));
 --stick-size:clamp(96px,26vh,112px);--fire-size:clamp(70px,20vh,84px);
 --dock-left:calc(var(--hud-left) + var(--stick-size) + 14px);--dock-right:calc(var(--hud-right) + var(--fire-size) + 138px)
}
body.touch-ui #topbar{top:var(--hud-top);left:var(--hud-left);right:var(--hud-right)}
body.touch-ui #brand{font-size:11px;gap:6px}body.touch-ui .insignia{width:25px;height:25px;font-size:22px}
body.touch-ui .top-actions{gap:4px}body.touch-ui .top-actions button{width:44px;height:44px}
body.touch-ui #mission{top:60px;left:var(--hud-left);width:166px;padding:8px 10px;background:#eef1dfec}
body.touch-ui .mission-title>span{font-size:21px}body.touch-ui .mission-title h2{font-size:11px;line-height:1.25}body.touch-ui .mission-title{margin-top:4px;gap:7px}
body.touch-ui #radar{right:var(--hud-right);top:60px;width:96px;padding:6px;background:#eef1dfda}body.touch-ui #map{height:82px;margin-top:4px}
body.touch-ui #controlPanel{left:50%;right:auto;top:60px;bottom:auto;transform:translateX(-50%);width:174px}
body.touch-ui .unit-status{width:100%;padding:7px 9px;background:#22392fd9}body.touch-ui .unit-status>.eyebrow{display:none}
body.touch-ui .unit-status h2{font-size:13px;margin:0 0 5px}body.touch-ui .unit-status h2 small{font-size:6px}
body.touch-ui #weapon{font-size:8px;margin-top:5px}body.touch-ui #driveStatus{font-size:8px;margin-top:4px}
body.touch-ui #touchMove{left:var(--hud-left);bottom:var(--hud-bottom);width:var(--stick-size);height:var(--stick-size)}
body.touch-ui #touchMoveKnob{width:42px;height:42px;left:50%;top:50%;margin-left:-21px;margin-top:-21px}
body.touch-ui #touchFire{right:var(--hud-right);bottom:var(--hud-bottom);width:var(--fire-size);height:var(--fire-size);font-size:12px!important}
body.touch-ui #touchAim{right:calc(var(--hud-right) + var(--fire-size) + 10px);bottom:var(--hud-bottom);width:52px;height:52px}
body.touch-ui #touchSprint{right:calc(var(--hud-right) + var(--fire-size) + 72px);bottom:var(--hud-bottom);width:52px;height:52px;font-size:9px}
body.touch-ui #squad{left:var(--dock-left);right:var(--dock-right);bottom:var(--hud-bottom);height:56px;gap:4px;touch-action:pan-x;scroll-snap-type:x proximity}
body.touch-ui .unit-card{flex:1 0 58px;min-height:54px;max-width:116px;padding:5px 4px;scroll-snap-align:start}
body.touch-ui .card-body strong{font-size:9px;margin-top:7px}body.touch-ui .card-body small{font-size:6px}body.touch-ui .card-order{font-size:6px;margin-top:4px}
body.touch-ui #touchBar{left:var(--dock-left);right:var(--dock-right);bottom:calc(var(--hud-bottom) + 64px);height:44px;justify-content:center;flex-wrap:nowrap;gap:4px;pointer-events:none}
body.touch-ui #touchBar>button{min-width:44px;max-width:76px;flex:1 0 44px;padding:4px 6px;font-size:9px;pointer-events:auto}
body.touch-ui #touchLookHint{display:none}body.touch-ui #fullscreenGame{display:none}
@media(pointer:coarse){body.touch-ui #fullscreenGame{display:block}}
body.touch-ui #tacticalBanner{top:58px!important;width:min(45vw,330px);max-width:none;padding:7px 9px;font-size:9px}
body.touch-ui #regionalLegend{font-size:7px;gap:5px;margin:4px 0;white-space:normal}
body.touch-ui.tactical-view{--dock-right:calc(var(--hud-right) + 68px)}
body.touch-ui.tactical-view #controlPanel{display:none}
body.touch-ui.tactical-view #touchBar{left:var(--dock-left);right:var(--dock-right);bottom:calc(var(--hud-bottom) + 64px);overflow-x:auto;justify-content:flex-start;pointer-events:auto;touch-action:pan-x;scrollbar-width:none}
body.touch-ui.tactical-view #touchBar>button{flex:1 0 48px;touch-action:pan-x}
body.touch-ui.tactical-view #touchZoomIn,body.touch-ui.tactical-view #touchZoomOut{position:fixed;right:var(--hud-right);width:48px;height:48px;min-width:48px;min-height:48px;font-size:24px}
body.touch-ui.tactical-view #touchZoomIn{bottom:calc(var(--hud-bottom) + 58px)}body.touch-ui.tactical-view #touchZoomOut{bottom:var(--hud-bottom)}
@media(orientation:landscape) and (max-height:520px){
 body.touch-ui #briefing{padding:60px var(--hud-right) 8px var(--hud-left);align-items:safe center}
 body.touch-ui #briefing .briefing-card{display:grid;grid-template-columns:minmax(180px,.95fr) minmax(220px,1fr);grid-template-areas:"eyebrow field" "title army" "title description" "intro start" "touch skirmish";gap:6px 28px;width:min(100%,840px);max-width:840px;margin:0 auto;padding:6px 12px;max-height:calc(100dvh - 68px);overflow-y:auto}
 body.touch-ui .briefing-card>.eyebrow{grid-area:eyebrow;flex-wrap:wrap;gap:5px;font-size:8px;letter-spacing:.08em;align-self:start}
 body.touch-ui .edition{margin-left:0;font-size:7px}body.touch-ui .tiny-star{font-size:15px}
 body.touch-ui .briefing-card h1{grid-area:title;align-self:center;font-size:clamp(26px,3.8vw,38px);margin:4px 0;line-height:1.07}
 body.touch-ui .briefing-card .intro{grid-area:intro;font-size:10px;line-height:1.5;margin:0;max-width:300px}
 body.touch-ui .briefing-mission{display:none}
 body.touch-ui .briefing-card>.battlefield-picker:not(.army-picker){grid-area:field}
 body.touch-ui .army-picker{grid-area:army;margin:0;padding:8px 9px;border-radius:5px;background:#21382eea}
 body.touch-ui .battlefield-picker{max-width:none;margin:0;font-size:8px}body.touch-ui .battlefield-picker select{min-height:44px;padding:8px 9px;font-size:11px}
 body.touch-ui .faction-description{grid-area:description;font-size:9px;line-height:1.4;margin:0;min-height:0;max-width:none;padding:6px 9px;border-radius:4px;background:#21382eea;color:#edf2db}
 body.touch-ui #start{grid-area:start;margin:0;max-width:none;min-height:44px;padding:11px 14px;font-size:10px}
 body.touch-ui #skirmish{grid-area:skirmish;margin:0;max-width:none;min-height:44px;padding:10px;font-size:9px}
 body.touch-ui .touch-briefing{grid-area:touch;font-size:8px;line-height:1.5;margin:0;align-self:center}
 body.touch-ui .settings-modal{width:min(94vw,820px);max-height:calc(100dvh - 20px);padding:18px}
 body.touch-ui .settings-modal h1{font-size:23px;margin:8px 0}body.touch-ui .settings-modal>p{font-size:10px;margin:8px 0 12px}
 body.touch-ui .settings-actions{position:sticky;bottom:-18px;background:#f0f2e4;padding:8px 0;margin:0}
}
@media(orientation:landscape) and (max-height:420px){
 body.touch-ui #briefing .briefing-card{grid-template-areas:"eyebrow army" "title description" "intro start" "touch skirmish"}
 body.touch-ui .briefing-card>.battlefield-picker:not(.army-picker){display:none}
}
@media(orientation:landscape) and (max-height:300px){
 body.touch-ui:not(.tactical-view) #touchBar{top:var(--hud-top);bottom:auto;left:155px;right:210px}
 body.touch-ui #mission,body.touch-ui #controlPanel,body.touch-ui #radar{top:56px}
 body.touch-ui .unit-status h2{font-size:11px}body.touch-ui #radar{width:84px}body.touch-ui #map{height:65px}
 body.touch-ui #briefing{padding-top:54px}body.touch-ui #briefing .briefing-card{max-height:calc(100dvh - 60px);gap:4px 20px}
}
