/* Game text should never highlight while dragging, tapping or issuing orders. */
body{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
input,textarea,[contenteditable=true]{user-select:text;-webkit-user-select:text;-webkit-touch-callout:default}
.catalog-name,.mobile-selection-bar,.mobile-objective,.mobile-sheet-header,.mobile-budget{display:none}
.catalog-note{display:none}
.ranked-entry{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:48px;margin:12px 0 20px;padding:12px 14px;border:1px solid #9d8654;border-radius:9px;background:#e3c98d0d;color:#e8d4a4;text-align:left;font-size:15px}.ranked-entry small{font-size:10px;letter-spacing:1px}.ranked-preview{width:min(720px,94vw)}.ranked-season{font-size:12px;letter-spacing:1.5px;color:#e3c98d}.ranked-features{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:24px 0}.ranked-features article{padding:18px;border:1px solid #40565e;border-radius:10px;background:#1d333c}.ranked-features small{font-size:11px;letter-spacing:1px;color:#e3c98d}.ranked-features h3{font-size:21px;line-height:1.3;margin:10px 0}.ranked-features p{font-size:14px}.ranked-features b{font-size:12px;font-weight:500;color:#dfc792}.leaderboard-preview{border:1px solid #40565e;border-radius:10px;overflow:hidden}.leaderboard-preview>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px}.leaderboard-preview h3{font-size:18px;margin:0}.leaderboard-preview>div>span{font-size:10px;color:#d9c18b}.leaderboard-columns{display:grid;grid-template-columns:60px 1fr 70px;gap:10px;padding:12px 16px;background:#0d2027}.leaderboard-preview>p{text-align:center;padding:18px 12px 22px}.leaderboard-preview p small{font-size:13px;color:#a5bcc1}
@media(max-width:550px){.ranked-features{grid-template-columns:1fr}.ranked-entry small{font-size:9px}.leaderboard-preview h3{font-size:16px}}

@media(max-width:900px) and (pointer:coarse),(max-width:700px){
 #battle{--nav-height:calc(58px + env(safe-area-inset-bottom));--hud-height:calc(48px + env(safe-area-inset-top));--sheet-bottom:var(--nav-height);height:100dvh;min-height:0}
 .battle-top{height:var(--hud-height);padding:env(safe-area-inset-top) max(6px,env(safe-area-inset-right)) 0 max(10px,env(safe-area-inset-left));align-items:center;gap:8px}
 .battle-score{display:flex;flex:1;gap:10px;padding:0;justify-content:flex-start;min-width:54px}.score-side,.score-side:last-child{display:block}.score-side>small{display:none}.score-side>.score{font-size:19px;min-width:0;line-height:1}.score-middle,#victory-target,.battle-version{display:none}
 .mobile-budget{display:flex;flex-direction:column;align-items:flex-end;gap:1px;margin-left:auto;min-width:54px;color:#efd398}.mobile-budget small{font-size:9px;letter-spacing:.4px}.mobile-budget strong{font-size:17px;line-height:1.1;font-variant-numeric:tabular-nums}
 .battle-time{gap:0;width:auto}.battle-time>span{font-size:11px;margin:0 4px;font-variant-numeric:tabular-nums}.battle-time>button{height:44px;min-height:44px;width:44px}.battle-time .fullscreen-hud{display:none}
 .mobile-objective{display:block;position:absolute;top:calc(var(--hud-height) + 9px);left:10px;max-width:calc(100% - 118px);padding:7px 9px;border-radius:7px;background:#302920ed;font-size:11px;color:#f3d69a;z-index:13;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .mission-pill,.field-feed,.radio-caption,.panel-tab,.battle-bottom{display:none!important}
 .camera-tools{top:calc(var(--hud-height) + 10px);right:10px;left:auto;bottom:auto;width:auto;max-width:none;transform:none;border-radius:8px}.camera-tools>button{display:none}.camera-tools #camera-home,.camera-tools #camera-overview{display:block;height:40px;width:42px}.camera-tools .map-tool-switch:not(.hidden){display:flex!important;gap:2px}.camera-tools .map-tool-switch button{width:42px;height:40px;min-width:0;font-size:10px;padding:4px}
 .unit-quick{display:none!important}.unit-label:not(.selected)>span,.unit-label:not(.selected)>i{display:none}.unit-label.selected>span{font-size:10px;padding:3px 5px;max-width:100px;overflow:hidden;text-overflow:ellipsis}
 .zone-label>small,.hq-label>em,.building-label>small,.resource-label>small{display:none}.zone-label>b{width:28px;height:28px;min-width:28px;font-size:15px}.zone-label>i{width:28px}.hq-label>b{font-size:12px}.resource-label>b,.building-label>b{width:25px;height:25px;min-width:25px;font-size:14px}
 .mobile-nav{height:var(--nav-height);z-index:30}.mobile-nav button,.mobile-nav>a{flex:1;min-width:44px;min-height:44px;font-size:11px;color:#a7bcbd;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none}.mobile-nav b{font-size:19px}
 .roster,.reinforcements,.minimap-wrap,body.has-selection[data-mobile-panel=battle] .selection-info,body.army-collapsed.has-selection[data-mobile-panel=battle] .selection-info{display:none!important}
 body .roster,body .reinforcements,body .minimap-wrap,body .selection-info{position:absolute;left:0;right:0;top:calc(var(--hud-height) + 48px);bottom:var(--sheet-bottom);height:auto!important;width:auto;max-width:none;max-height:none!important;margin:0;border-radius:12px 12px 0 0;background:#12262ffc;z-index:23;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;transform:none;opacity:1;pointer-events:auto;padding:16px;box-sizing:border-box}
 body.has-selection #battle{--sheet-bottom:calc(var(--nav-height) + 54px)}
 body[data-mobile-panel=army] .roster{display:flex!important;padding:0}.roster #roster-list,.roster #division-list{flex:1;overflow-y:auto;min-height:0}.roster>*:not(#roster-list):not(#division-list){flex-shrink:0}.roster-team{padding:16px 90px 0 14px}.roster .panel-caption{padding-block:8px}.panel-close{display:none}.roster-tabs>button,#division-open,.roster-all,#mobile-multi{min-height:44px;font-size:13px}
 body[data-mobile-panel=deploy] .reinforcements{display:block!important;padding:16px}.reinforcements .budget{display:none}
 .unit-catalog{display:block;overflow:visible;min-width:0}.unit-catalog #unit-categories{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;overflow:visible;margin:0 0 12px}.unit-catalog #unit-categories button{min-width:0;min-height:44px;font-size:12px;padding:7px 4px;white-space:normal;line-height:1.25}.unit-catalog #unit-categories small{display:inline;font-size:10px;margin-left:4px}
 .unit-catalog .reinforcement-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;flex:none;overflow:visible;min-height:0}.reinforcement-card{display:block;width:100%;min-width:0;max-width:none;height:166px;min-height:166px;margin:0;border-radius:9px}.reinforcement-card img{height:80px}.reinforcement-card>strong{top:80px;bottom:auto;left:10px;right:10px;white-space:normal;font-size:13px;line-height:1.25;letter-spacing:0}.catalog-short{display:none}.catalog-name{display:inline}.reinforcement-card>.price{font-size:14px;left:10px;right:10px;bottom:9px}.reinforcement-card:disabled{opacity:.5}.support-controls{display:flex;margin-top:16px;width:100%;gap:10px}.support-controls button{min-height:54px;min-width:0;flex:1}.support-controls b{white-space:normal}
 body[data-mobile-panel=map] .minimap-wrap{display:block!important;padding:16px}.minimap-wrap>.panel-caption{padding-right:0}#minimap{max-height:none;width:100%;height:auto}#resource-summary{grid-template-columns:1fr 1fr}
 body.has-selection[data-mobile-panel=commands] .selection-info{display:block!important;padding:18px 14px}.selection-detail>img{display:none}.selection-detail h3{padding-right:0;font-size:19px}.selection-detail .detail-health,.selection-detail .veterancy-badge,.selection-detail .air-status{font-size:13px;line-height:1.6}.selection-detail .unit-commands{grid-template-columns:1fr 1fr;gap:9px;margin-top:18px}.selection-info .unit-commands button{font-size:14px;min-height:48px;padding:12px 8px}.selection-info #deselect-units{display:none}.unit-commands kbd{display:none}
 .mobile-selection-bar{display:none;position:absolute;left:0;right:0;bottom:var(--nav-height);height:54px;align-items:center;gap:8px;padding:5px 10px;background:#132a34f7;border-top:1px solid #5c777f;z-index:29}.has-selection .mobile-selection-bar{display:flex}.mobile-selection-bar>span{flex:1;min-width:0;font-size:13px;color:#e1e8dc}.mobile-selection-bar button{min-height:44px;padding:8px 12px;border:1px solid #68858a;border-radius:8px;font-size:13px}.mobile-selection-bar #mobile-commands{background:#d5c18f;color:#12242c;border-color:#d5c18f}.mobile-selection-bar #mobile-deselect{color:#e7ded0}
 body.in-battle:not([data-mobile-panel=battle]) .mobile-sheet-header{display:flex;position:absolute;top:var(--hud-height);left:0;right:0;height:48px;align-items:center;padding:0 90px 0 16px;background:#172e38;border-bottom:1px solid #4f6872;z-index:26;font-size:14px}.mobile-sheet-header strong{font-weight:500}
 #mobile-close{position:absolute;left:auto;right:10px;top:calc(var(--hud-height) + 3px);bottom:auto;transform:none;width:70px;max-width:none;height:42px;min-height:42px;padding:8px 5px;border-radius:8px;font-size:12px;z-index:27}.camera-tools{z-index:20}body:not([data-mobile-panel=battle]) .camera-tools{display:none}
 body.in-battle>.connection-badge{right:10px;top:calc(env(safe-area-inset-top) + 98px);bottom:auto;padding:5px 7px;font-size:10px;max-width:calc(100vw - 116px);left:10px;right:auto;z-index:21;pointer-events:auto;background:#132a34c9}body.in-battle:not([data-mobile-panel=battle])>.connection-badge{display:none}
 body.in-battle>.connection-badge[data-level=ok]{display:none}
 #toasts{top:calc(100px + env(safe-area-inset-top))}.toast{font-size:12px}
}
@media(max-height:500px) and (pointer:coarse){
 #battle{--hud-height:calc(48px + env(safe-area-inset-top));--nav-height:calc(48px + env(safe-area-inset-bottom))}.score-middle{display:none}.mobile-objective{font-size:10px}.battle-top{height:var(--hud-height)}.mobile-nav button,.mobile-nav>a{gap:0;font-size:10px}.mobile-nav b{font-size:16px}#mobile-close{display:block}.mobile-selection-bar{height:48px}.has-selection #battle{--sheet-bottom:calc(var(--nav-height) + 48px)}.unit-catalog .reinforcement-cards{grid-template-columns:repeat(3,minmax(0,1fr))}body.in-battle>.connection-badge{top:calc(60px + env(safe-area-inset-top))}
}

/* Recruitment feedback runs once per tap; the server still confirms every purchase. */
.install-game{margin:10px 0;width:100%}
.reinforcement-card.recruiting{opacity:1;cursor:wait;border-color:#e7b66a;animation:recruit-tap 180ms ease-out}
.reinforcement-card.recruiting::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:#e7b66a;transform-origin:left;animation:recruit-cooldown 350ms linear forwards;pointer-events:none}
.reinforcement-card.recruited{border-color:#a9d79f}
.reinforcement-card.recruited::after{background:#a9d79f}
@keyframes recruit-tap{0%{transform:scale(.94);filter:brightness(1.4)}100%{transform:scale(1);filter:brightness(1)}}
@keyframes recruit-cooldown{from{transform:scaleX(1)}to{transform:scaleX(0)}}
body.reduced .reinforcement-card{animation:none!important}
body.reduced .reinforcement-card::after{animation:none!important}
