:root{color-scheme:dark;--ink:#edf2e8;--muted:#bbc8b5;--gold:#c9e7b5;--panel:rgba(13,23,20,.95)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#17231e;color:var(--ink);font-family:Inter,system-ui,sans-serif}body{user-select:none}.game{position:relative;width:100%;height:100%;height:100dvh;overflow:hidden}canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.grain{pointer-events:none;position:absolute;inset:0;opacity:.045;background:url('./grain.png') repeat;background-size:64px 64px;mix-blend-mode:screen;animation:tvSnow .48s steps(1,end) infinite;will-change:transform}#screenFlash{z-index:2}.gunship-hud,.focus-hint,.reticle,.hint,.toast{z-index:2}.top{position:absolute;top:max(17px,env(safe-area-inset-top));left:max(18px,env(safe-area-inset-left));pointer-events:none;z-index:2}.brand{display:flex;flex-direction:column;gap:4px;text-shadow:0 1px 6px #000}.brand-name{font-size:13px;letter-spacing:.21em}.brand-sub{font:8px ui-monospace,monospace;letter-spacing:.1em;color:#d0dacc}.mission{position:absolute;left:18px;top:69px;display:flex;align-items:center;gap:13px;color:#d7e4d0;font:9px ui-monospace,monospace;text-shadow:0 1px 4px #000;pointer-events:none;z-index:2}.mission h1{font-size:10px;text-transform:uppercase;letter-spacing:.13em;margin:0;color:#fff}.mission-stat{opacity:.9}.mission-stat b{font-weight:500;color:#fff}.alert{font-size:8px;letter-spacing:.12em;color:#e3c7a2}
.settings{position:absolute;right:max(17px,env(safe-area-inset-right));top:max(15px,env(safe-area-inset-top));z-index:10}.settings summary{display:flex;align-items:center;justify-content:center;gap:8px;list-style:none;min-height:44px;padding:0 14px;cursor:pointer;border:1px solid #c5dec54d;background:#15221bbd;border-radius:8px;color:#e9f6e1;font:11px ui-monospace,monospace}.settings summary::-webkit-details-marker{display:none}.settings[open] summary{margin-left:auto;width:fit-content;background:#26352b}.panel{width:290px;margin-top:9px;padding:18px;background:var(--panel);border:1px solid #c6dcc631;border-radius:10px;max-height:calc(100dvh - 90px);overflow-y:auto;box-shadow:0 12px 35px #0004;backdrop-filter:blur(10px)}.menu-heading{font-size:13px;font-weight:650}.desc{font-size:11px;line-height:1.5;color:#bac7b4;margin:7px 0 16px}.control-label{font:9px ui-monospace,monospace;color:#c3d1bc;letter-spacing:.09em;text-transform:uppercase}select{display:block;width:100%;min-height:44px;margin-top:7px;padding:8px 10px;background:#192b22;border:1px solid #b7d2aa47;border-radius:6px;color:#f4f7f0;font:11px ui-monospace,monospace;cursor:pointer}button,select,summary{touch-action:manipulation}button:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid #c8eca8;outline-offset:3px}.menu-buttons{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:14px 0}.button{min-height:44px;padding:10px 8px;color:#e1ecdb;background:#23352b;border:1px solid #cce2b637;border-radius:6px;font:10px ui-monospace,monospace;cursor:pointer}.button:hover{background:#344c3c}.aim{border-top:1px solid #c9e7b528;padding-top:16px}.control-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.control-row output{color:var(--gold);font:10px ui-monospace,monospace}input[type=range]{width:100%;height:24px;margin:0 0 15px;appearance:none;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:3px;background:linear-gradient(90deg,var(--gold) var(--fill,50%),#ffffff27 var(--fill,50%))}input[type=range]::-webkit-slider-thumb{appearance:none;width:20px;height:20px;margin-top:-8px;border-radius:50%;background:#c5e5aa;border:3px solid #2a3c2c}input[type=range]::-moz-range-track{height:3px;background:#6c8064}input[type=range]::-moz-range-thumb{width:17px;height:17px;border-radius:50%;background:#c5e5aa;border:2px solid #2a3c2c}.telemetry{display:grid;grid-template-columns:1fr 1fr;gap:8px;font:9px ui-monospace,monospace;color:#b7c5b0}.telemetry b{font-weight:400;color:#e2ecd9}#windReadout{display:none}.meter{height:2px;margin:10px 0;background:#ffffff24}.meter span{display:block;height:100%;width:75%;background:var(--gold)}#modeHint{font:9px/1.7 ui-monospace,monospace;color:#9aaa92;margin-bottom:0}
.shot-state{display:block;margin-top:7px;font:8px ui-monospace,monospace;letter-spacing:.1em;color:#d6e6c9;text-shadow:0 1px 4px #000}.hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);font:8px ui-monospace,monospace;color:#e1eada80;pointer-events:none;white-space:nowrap}.mobile-only{display:none}.focus-hint{position:absolute;left:50%;bottom:53px;transform:translateX(-50%);font:9px ui-monospace,monospace;letter-spacing:.08em;color:#d9eac880;text-shadow:0 1px 4px #000;pointer-events:none;white-space:nowrap}.locked .focus-hint{display:none}.locked canvas{cursor:none}
#screenFlash{position:absolute;inset:0;background:radial-gradient(ellipse at 45% 70%,#eef2ed,transparent 75%);pointer-events:none;opacity:0}.reticle{position:absolute;left:50%;top:50%;width:25px;height:25px;transform:translate(-50%,-50%);border:1px solid #ecffe2b3;border-radius:50%;pointer-events:none;box-shadow:0 1px 5px #0005}.reticle:before,.reticle:after{content:'';position:absolute;background:#edffe3b3}.reticle:before{left:50%;top:-9px;width:1px;height:41px}.reticle:after{top:50%;left:-9px;height:1px;width:41px}.gunship-mode #mount canvas{filter:saturate(var(--sensor-saturation,.18)) contrast(1.12)}.software-gpu.gunship-mode #mount canvas{filter:saturate(var(--sensor-saturation,.18)) contrast(1.12)}.gunship-hud{display:none;position:absolute;inset:0;color:#d5ebc9;font:9px ui-monospace,monospace;pointer-events:none;text-shadow:0 1px 4px #001600;letter-spacing:.1em}.gunship-mode .gunship-hud{display:block}.gunship-hud:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 5px,#001b0710 6px);opacity:.22}.sensor-title{position:absolute;left:50%;top:22px;transform:translateX(-50%);font-size:9px;opacity:.8}.sensor-title span{font-size:8px;color:#d5c5a6}.sensor-left{position:absolute;left:18px;bottom:132px;font-size:8px;opacity:.65}.sensor-right{position:absolute;right:20px;top:83px;text-align:right;font-size:8px;line-height:1.8;opacity:.7}.toast{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;opacity:0;text-shadow:0 2px 10px #000}.toast.show{opacity:1}.toast strong{display:block;font-size:24px;text-transform:uppercase}.toast span{font:10px ui-monospace,monospace}.software-gpu .grain{display:none}.software-gpu .panel{backdrop-filter:none}
@media(max-width:740px){.top{left:14px;top:max(14px,env(safe-area-inset-top))}.brand-name{font-size:11px}.brand-sub{font-size:6px;max-width:180px}.settings{right:12px;top:max(10px,env(safe-area-inset-top))}.settings summary{width:44px;padding:0;font-size:18px}.settings summary span{display:none}.panel{width:min(290px,calc(100vw - 24px));padding:16px}.mission{left:14px;right:14px;top:66px;gap:9px;flex-wrap:wrap;font-size:8px}.mission h1{font-size:9px}.mission-stat{font-size:7px}.alert{font-size:7px}.sensor-title{left:auto;right:71px;top:27px;transform:none;font-size:8px}.sensor-left{left:auto;right:14px;bottom:151px;text-align:right;font-size:7px}.sensor-right{top:96px;right:14px;font-size:7px}.hint{bottom:115px;font-size:7px}.mobile-only{display:inline}.desktop-only,.focus-hint{display:none}.reticle{width:21px;height:21px}.reticle:before{height:37px}.reticle:after{width:37px}}
@media(max-height:450px){.mission{top:53px}.brand-sub{display:none}.hint{display:none}.sensor-left{bottom:108px}.sensor-right{top:65px}.panel{max-height:calc(100dvh - 65px)}}
@keyframes tvSnow{0%,100%{transform:translate3d(0,0,0)}12.5%{transform:translate3d(13px,-7px,0)}25%{transform:translate3d(-9px,11px,0)}37.5%{transform:translate3d(5px,17px,0)}50%{transform:translate3d(-18px,-4px,0)}62.5%{transform:translate3d(8px,-15px,0)}75%{transform:translate3d(17px,5px,0)}87.5%{transform:translate3d(-4px,9px,0)}}
@media(prefers-reduced-motion:reduce){.grain{display:none}.soldiers-counter b{animation:none}.mission-stat.counter-pop{animation:none}}
@media(prefers-reduced-motion:reduce){.ammo-unlock{animation:none}}
.arsenal{margin:8px 0 17px}.arsenal-title{display:block;margin-bottom:9px}.weapon-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.weapon-choice{position:relative;display:flex;align-items:center;gap:8px;min-height:59px;padding:8px;color:#e5eee0;text-align:left;background:#1b2c23;border:1px solid #c8ddc426;border-radius:7px;cursor:pointer}.weapon-choice:hover,.weapon-choice[aria-pressed=true]{background:#2a3e30;border-color:#c5d992a1}.weapon-choice:disabled{opacity:.3;filter:grayscale(1);cursor:not-allowed}.weapon-choice.weapon-cannon{grid-column:1/-1;min-height:65px;background:linear-gradient(110deg,#403a22,#283428);border-color:#f3cb6670}.weapon-choice.weapon-cannon[aria-pressed=true]{border-color:#ffd574}.weapon-icon{width:25px;height:25px;flex:none;display:grid;place-items:center;color:#d9e8ce}.weapon-icon svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.weapon-choice b,.weapon-choice small{display:block}.weapon-choice b{font:10px ui-monospace,monospace;color:#f3f4e8}.weapon-choice small{margin-top:4px;font-size:8px;color:#abb8a6}.ammo-count{position:absolute;top:3px;right:5px;color:#fff;font:7px ui-monospace,monospace;text-shadow:0 1px 4px #000;pointer-events:none}.ammo-empty .ammo-count{color:#c0c0c0}.ammo-unlock{animation:ammoBlink .38s ease-in-out 8}.ammo-unlock .ammo-count{color:#eaffb4}@keyframes ammoBlink{0%,100%{border-color:#e5eee07a;box-shadow:0 1px 4px #0005}50%{border-color:#eaffb4;box-shadow:0 0 13px #dbff9d;filter:brightness(1.65)}}.weapon-native{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;opacity:0!important;pointer-events:none!important}.weapon-native:focus{outline:none}.mission .shot-state{display:inline-flex;margin:0;align-items:center;color:#e4e8d9}.mission-stat.counter{display:inline-flex;align-items:center;gap:4px;transform-origin:center}.mission-stat.counter b{font-size:11px}.mission-stat.counter span{font-size:8px}.soldiers-counter b{color:#ffdc54;text-shadow:0 0 8px #ffcc366c;animation:soldierBlink 1.15s ease-in-out infinite}.vehicles-counter b{color:#ff9748;text-shadow:0 0 8px #ff6e2466}.mission-stat.counter-pop{animation:counterPop .34s cubic-bezier(.2,1.6,.35,1)}@keyframes soldierBlink{0%,100%{opacity:1}50%{opacity:.55}}@keyframes counterPop{0%{transform:scale(1)}45%{transform:scale(1.2)}100%{transform:scale(1)}}

/* The WebGL sensor pass adds snow below the HTML optics and controls. */
.sensor-post.gunship-mode #mount canvas{filter:saturate(var(--sensor-saturation,.18)) contrast(var(--sensor-contrast,1.16)) brightness(var(--sensor-brightness,1.025))}
.software-gpu.sensor-post.gunship-mode #mount canvas{filter:saturate(var(--sensor-saturation,.18)) contrast(var(--sensor-contrast,1.16))}
.sensor-post.gunship-mode .grain,.sensor-post.gunship-mode .gunship-hud:after{display:none}
.sensor-post.sensor-effects-off.gunship-mode #mount canvas{filter:saturate(var(--sensor-saturation,.18))}
/* White-hot thermal view, without screen-space target halos. */
.reticle{width:100px;height:100px;border:0;border-radius:0;box-shadow:none;opacity:.68}.reticle:before,.reticle:after{display:none}.reticle svg{width:100%;height:100%;fill:none;stroke:#f4f4ec;stroke-width:1.1;filter:drop-shadow(0 1px 1px #0008)}
.hitmarker{position:absolute;left:50%;top:50%;width:30px;height:30px;transform:translate(-50%,-50%) scale(.8);opacity:0;pointer-events:none;z-index:4;filter:drop-shadow(0 0 2px #000);transition:opacity .05s,transform .08s}.hitmarker.active{opacity:1;transform:translate(-50%,-50%) scale(1)}.hitmarker i{position:absolute;width:9px;height:2px;background:#fff;display:block}.hitmarker i:nth-child(1){left:1px;top:5px;transform:rotate(45deg)}.hitmarker i:nth-child(2){right:1px;top:5px;transform:rotate(-45deg)}.hitmarker i:nth-child(3){left:1px;bottom:5px;transform:rotate(-45deg)}.hitmarker i:nth-child(4){right:1px;bottom:5px;transform:rotate(45deg)}
@media(max-width:740px){.reticle{width:82px;height:82px}}
:root{--touch-ink:#f3f5ed}
.touch-stick,.touch-fire,.touch-camera{position:fixed;z-index:4;pointer-events:none;touch-action:none;opacity:0;visibility:hidden}
.touch-stick{width:104px;height:104px;transform:translate(-50%,-50%);transition:opacity .1s ease,visibility .1s}
.touch-stick.engaged,.touch-fire.active{opacity:1;visibility:visible}
.touch-stick-base{position:absolute;inset:0;border:1.5px solid #f3f5edb3;border-radius:50%;background:transparent;box-shadow:0 0 10px #0004}
.touch-stick-base:before,.touch-stick-base:after{content:"";position:absolute;background:#f3f5ed52}
.touch-stick-base:before{width:1px;height:68%;left:50%;top:16%}
.touch-stick-base:after{height:1px;width:68%;left:16%;top:50%}
.touch-stick-knob{position:absolute;left:50%;top:50%;width:36px;height:36px;transform:translate(calc(-50% + var(--knob-x,0px)),calc(-50% + var(--knob-y,0px)));border:1.5px solid var(--touch-ink);border-radius:50%;background:transparent;box-shadow:0 1px 5px #0008}
.touch-fire{width:74px;height:74px;transform:translate(-50%,-50%) scale(.78);transition:opacity .12s ease,transform .12s ease,visibility .12s}
.touch-fire.active{transform:translate(-50%,-50%) scale(1)}
.touch-fire svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 1px 5px #000c)}
.touch-fire .fire-ring{fill:none;stroke:#f3f5eddf;stroke-width:1.6}
.touch-fire .fire-inner{fill:none;stroke:#f3f5ed85;stroke-width:1;stroke-dasharray:2 3}
.touch-fire .fire-target{fill:none;stroke:#f3f5ed;stroke-width:1.6;stroke-linecap:square}
.touch-fire .fire-target-core{fill:#f3f5ed}
.touch-camera{width:84px;height:84px;transform:translate(-50%,-50%);transition:opacity .1s ease,visibility .1s}
.touch-camera svg{width:100%;height:100%;fill:none;stroke:var(--touch-ink);stroke-width:1.2;stroke-linecap:square;filter:drop-shadow(0 1px 5px #0008)}
.touch-camera.active{opacity:1;visibility:visible}
@media (any-pointer:coarse){
  .touch-stick,.touch-fire{visibility:visible;opacity:.38}
  .touch-stick{left:calc(100vw - max(60px,16vw));top:calc(100dvh - 152px)}
  .touch-fire{left:max(60px,16vw);top:calc(100dvh - 152px)}
  .touch-stick.engaged,.touch-fire.active{opacity:1}
  .hint{display:none}
  .person-view .touch-stick{left:max(60px,16vw);top:calc(100dvh - 152px);opacity:.48}
  .person-view .touch-camera{left:calc(100vw - max(60px,16vw));top:calc(100dvh - 152px);visibility:visible;opacity:.48}
  .person-view .touch-stick.engaged,.person-view .touch-camera.active{opacity:1}
}
.gunship-hud{color:#e6e9e3;letter-spacing:.09em}
.person-pov-status{position:absolute;z-index:3;left:50%;top:max(68px,8vh);transform:translateX(-50%);font:9px ui-monospace,monospace;letter-spacing:.14em;color:#f0f2ec;text-shadow:0 1px 5px #000;pointer-events:none;white-space:nowrap}
.person-pov-status[hidden]{display:none}
.person-view .gunship-hud,.person-view .zoom-control{display:none!important}
.person-view .touch-fire{visibility:hidden!important;opacity:0!important}
@media(max-width:740px){.person-pov-status{top:98px;font-size:8px}}
.sensor-title{top:14px;color:#f1f2ed;font-weight:600;letter-spacing:.16em;text-shadow:0 1px 5px #000}
.sensor-title span{color:#c9cfc5}
.azimuth-tape{position:absolute;top:39px;left:50%;width:190px;transform:translateX(-50%);text-align:center}
.azimuth-labels{display:flex;align-items:center;justify-content:space-between;font:7px ui-monospace,monospace;color:#c6ccc3}
.azimuth-labels b{font-size:9px;color:#fff;font-weight:500}
.azimuth-ruler{display:flex;justify-content:space-between;align-items:flex-start;height:9px;margin-top:2px;border-top:1px solid #dbe3d188}
.azimuth-ruler i{display:block;width:1px;height:4px;background:#dbe3d1aa}
.azimuth-ruler i:nth-child(4n+1){height:8px}
.optic-panel{position:absolute;top:122px;width:142px;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;font:7px ui-monospace,monospace;line-height:1.65}
.optic-left{left:16px}.optic-right{right:16px}
.optic-panel>div:not(.sight-power-meter){display:flex;justify-content:space-between;gap:9px;white-space:nowrap}
.optic-panel span{color:#aeb8ae}.optic-panel b{color:#f0f2ec;font-weight:500;text-align:right}.optic-panel b i{font-style:normal;font-size:9px;color:#fff}
.sight-power-meter{height:2px;margin-top:5px;background:#e8eee32b}.sight-power-meter i{display:block;width:75%;height:100%;background:#e1e7dc;box-shadow:0 0 4px #fff8}
.sight-bottom{position:absolute;bottom:max(12px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;gap:18px;white-space:nowrap;font:7px ui-monospace,monospace;color:#adb7ae;text-shadow:0 1px 4px #000}
.sight-bottom b{color:#e8ece5;font-weight:500}
@media(max-width:740px){.azimuth-tape{top:41px;width:160px}.sensor-title{top:13px}.optic-panel{top:118px;width:112px;padding:6px;font-size:6px}.optic-left{left:10px}.optic-right{right:10px}.optic-panel b i{font-size:8px}.sight-bottom{gap:8px;font-size:6px}}
@media(max-height:450px){.optic-panel{top:87px}.azimuth-tape{top:34px}.sight-bottom{bottom:7px}}
@media(any-pointer:coarse){.touch-stick{left:calc(100vw - max(120px,28vw))}.touch-fire{left:max(60px,16vw)}}
.aim-angles{position:absolute;left:calc(50% - 136px);top:calc(50% + 38px);z-index:3;display:grid;gap:3px;width:92px;padding:0;background:transparent;border:0;box-shadow:none;pointer-events:none;font:7px ui-monospace,monospace;letter-spacing:.08em;color:#d0d6ce;text-shadow:0 1px 4px #000}
.aim-angles span{display:flex;justify-content:space-between;gap:8px;white-space:nowrap}.aim-angles b{font-size:9px;font-weight:500;color:#f3f5ee}
.score-hud{position:absolute;z-index:3;top:13px;right:70px;display:flex;align-items:baseline;gap:7px;color:#dce3d9;font:7px ui-monospace,monospace;letter-spacing:.12em;text-shadow:0 1px 4px #000;pointer-events:none}.score-hud b{font-size:13px;font-weight:500;color:#fff}
.combo-flash{position:absolute;z-index:5;left:50%;top:39%;transform:translate(-50%,-50%) scale(.8);display:flex;flex-direction:column;align-items:center;gap:4px;color:#fff;opacity:0;pointer-events:none;text-align:center;text-shadow:0 1px 8px #000,0 0 10px #fff7;font:10px ui-monospace,monospace;letter-spacing:.2em}.combo-flash.active{animation:comboPop 1.6s ease-out forwards}.combo-flash b{font-size:20px;letter-spacing:.18em}.combo-flash span{font-size:9px;letter-spacing:.12em;color:#e1e7dc}
@keyframes comboPop{0%{opacity:0;transform:translate(-50%,-50%) scale(1.28)}12%{opacity:1;transform:translate(-50%,-50%) scale(1)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(.97)}}
@media(max-width:740px){.score-hud{top:13px;right:70px}.score-hud b{font-size:11px}.combo-flash{top:39%}.combo-flash b{font-size:16px}}
.weapon-optic-cannon155 .reticle{width:122px;height:122px;opacity:.83}.weapon-optic-cannon .reticle{width:92px;height:92px;opacity:.76}
.weapon-optic-ap .reticle{width:76px;height:76px;border:1px solid #f4f4ec9c;border-radius:50%;opacity:.92}.weapon-optic-ap .reticle:before{display:block;left:calc(50% - 3px);top:calc(50% - 3px);width:6px;height:6px;border:1px solid #fff;background:transparent;border-radius:50%}.weapon-optic-ap .reticle:after{display:block;left:calc(50% - 1px);top:calc(50% - 1px);width:2px;height:2px;border-radius:50%;background:#fff}
.weapon-optic-gatling .reticle{width:116px;height:116px;opacity:.9}.weapon-optic-gatling .reticle svg{stroke-width:1.6}
.weapon-optic-rocket .reticle{width:78px;height:78px;border:1px solid #f4f4ec9c;border-radius:50%;opacity:.92}.weapon-optic-rocket .reticle svg{transform:scale(.68)}.weapon-optic-rocket .reticle:before,.weapon-optic-rocket .reticle:after{display:block;left:calc(50% - 3px);top:calc(50% - 3px);width:6px;height:6px;border:1px solid #fff;background:transparent;transform:rotate(45deg)}
.zoom-control{display:none;position:absolute;z-index:5;right:10px;top:max(220px,28vh);width:42px;height:min(42vh,300px);min-height:190px;align-items:center;justify-content:center;pointer-events:auto;color:#e7ece4}
.gunship-mode .zoom-control{display:flex}
.zoom-control:before{content:"";position:absolute;right:4px;top:2px;bottom:2px;width:6px;background:repeating-linear-gradient(to bottom,#dce4d966 0 1px,transparent 1px 13px);pointer-events:none}
.zoom-control input{position:relative;z-index:1;box-sizing:border-box;width:30px;height:100%;margin:0;appearance:none;background:transparent;writing-mode:vertical-lr;direction:ltr;touch-action:none;cursor:ns-resize}
.zoom-control input::-webkit-slider-runnable-track{width:3px;height:100%;border:0;background:linear-gradient(to bottom,#e9eee4 0 45%,#e9eee455 45% 100%);border-radius:2px}
.zoom-control input::-webkit-slider-thumb{appearance:none;width:19px;height:14px;margin-left:-8px;margin-top:0;border:1px solid #f1f4eb;background:#28352d;box-shadow:0 0 6px #0009;border-radius:2px}
.zoom-control input::-moz-range-track{width:3px;height:100%;background:#e9eee455;border:0;border-radius:2px}
.zoom-control input::-moz-range-progress{width:3px;background:#e9eee4}
.zoom-control input::-moz-range-thumb{width:17px;height:12px;border:1px solid #f1f4eb;background:#28352d;border-radius:2px}
.zoom-icon{position:absolute;top:-25px;left:50%;width:17px;height:17px;transform:translateX(-50%);fill:none;stroke:#e7ece4;stroke-width:1.5}
.zoom-control output{position:absolute;bottom:-22px;left:50%;transform:translateX(-50%);padding:0;background:transparent;border:0;font:8px ui-monospace,monospace;white-space:nowrap;text-shadow:0 1px 4px #000}
@media(max-width:740px){.aim-angles{left:calc(50% - 130px);width:82px;font-size:6px}.aim-angles b{font-size:8px}.zoom-control{right:7px;top:max(220px,28vh);width:36px}}
@media(max-height:450px){.zoom-control{top:50%;height:35vh;min-height:110px;max-height:150px;transform:translateY(-50%)}.zoom-icon{top:-20px}.zoom-control output{bottom:-20px}}
.weapon-dock{position:absolute;z-index:6;left:50%;bottom:90px;transform:translateX(-50%);pointer-events:auto}
.weapon-dock .arsenal{margin:0}
.weapon-dock .arsenal-title,.weapon-dock .weapon-native{display:none}
.weapon-dock .weapon-grid{display:flex;gap:4px}
.weapon-dock .weapon-choice,.weapon-dock .weapon-choice.weapon-cannon{display:grid;place-items:center;box-sizing:border-box;width:36px;height:36px;min-height:36px;padding:4px;background:transparent;border:1px solid #e5eee07a;border-radius:4px;box-shadow:0 1px 4px #0005}
.weapon-dock .weapon-choice.weapon-cannon{grid-column:auto}
.weapon-dock .weapon-choice[aria-pressed=true]{background:#dce8d04a;border-color:#fff}
.weapon-dock .weapon-choice>span:not(.weapon-icon):not(.ammo-count){display:none}
.weapon-dock .weapon-icon{width:23px;height:23px}
.weapon-dock .weapon-icon svg{width:22px;height:22px}
.weapon-dock .ammo-count{top:auto;right:0;bottom:0;font-size:6px}
.hud-debug-toggle{position:absolute;right:max(16px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));z-index:11;width:44px;height:44px;display:grid;place-items:center;padding:9px;border:1px solid #e1e9dc88;border-radius:4px;background:transparent;color:#e8eee4;cursor:pointer;touch-action:manipulation;filter:drop-shadow(0 1px 2px #000)}.hud-debug-toggle[aria-pressed=true]{color:#fff;border-color:#fff;box-shadow:0 0 8px #eaffcf55}.hud-debug-toggle svg,.debug-heading svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.debug-open .optic-panel,.debug-open .weapon-dock,.debug-open .aim-angles{visibility:hidden;pointer-events:none}
.debug-tuning{position:absolute;z-index:9;left:18px;bottom:56px;width:320px;max-width:calc(100vw - 72px);max-height:calc(100dvh - 180px);display:flex;flex-direction:column;gap:8px;color:#fff;font:11px/1.4 ui-monospace,monospace;letter-spacing:.035em;text-shadow:-1px -1px 1px #000,1px 1px 2px #000,0 0 6px #000;pointer-events:auto}.debug-tuning[hidden]{display:none}.debug-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #edf4e9aa;min-height:34px;flex:none}.debug-heading b{font-size:13px;letter-spacing:.12em}.debug-heading button{width:34px;height:34px;padding:7px;border:0;background:transparent;color:#fff;cursor:pointer}
.debug-controls-scroll{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding-right:8px}.debug-tuning details>summary{min-height:34px;cursor:pointer;font:12px/34px ui-monospace,monospace;letter-spacing:.08em;touch-action:manipulation}.debug-tuning details[open]>summary{margin-bottom:5px}.debug-tuning-control{margin-bottom:9px}.debug-tuning-control label{display:flex;align-items:center;justify-content:space-between;gap:8px;white-space:nowrap;font-size:11px;font-weight:600}.debug-tuning-control output{color:#efffc8;font-size:14px;font-weight:700;letter-spacing:0}.debug-tuning-control input[type=range]{display:block;width:100%;height:32px;margin:0;accent-color:#e3eadc;touch-action:pan-y}.debug-tuning-control small{display:block;color:#e0e5db;font-size:10px;text-align:right}.debug-sensor-fields{display:grid;gap:5px}.debug-sensor-group{border-top:1px solid #e1e9dc55}.debug-sensor-toggle label{min-height:40px;cursor:pointer}.debug-sensor-toggle output{margin-left:auto}.debug-sensor-toggle input{width:22px;height:22px;margin:0;flex:none;accent-color:#d9efc0}
.debug-save-row{display:flex;align-items:center;gap:10px;flex:none}.debug-tuning button:not(#debugClose){min-height:36px;padding:6px 9px;border:1px solid #e1e9dc91;border-radius:3px;background:transparent;color:#f4f5ee;font:11px ui-monospace,monospace;letter-spacing:.045em;text-shadow:0 1px 4px #000;cursor:pointer}.debug-save-row #saveDebugParams{min-height:44px;white-space:nowrap;font-weight:700}.debug-save-row #debugParamsStatus{font-size:10px}.debug-stream-controls{display:grid;grid-template-columns:1fr 1fr;gap:6px;flex:none}.debug-stream-controls button:disabled{opacity:.4}.debug-tuning #debugStreamStatus{color:#e0e4dc;font-size:10px;flex:none}.debug-tuning button:focus-visible,.hud-debug-toggle:focus-visible{outline:2px solid #eaffc0;outline-offset:3px}
@media(max-width:740px){.debug-tuning{left:12px;bottom:210px;width:310px;max-height:calc(100dvh - 330px);gap:6px}.debug-heading b{font-size:12px}}
@media(max-height:450px){.debug-tuning{bottom:48px;max-height:calc(100dvh - 100px);width:300px}.debug-heading{min-height:28px}.debug-tuning details>summary{min-height:28px;line-height:28px}}
@media(any-pointer:coarse){.weapon-dock{top:218px;bottom:auto}}
@media(max-width:740px) and (min-height:451px){
  .weapon-dock{top:120px;bottom:auto}
  .weapon-dock .weapon-grid{display:grid;grid-template-columns:repeat(3,30px);gap:3px}
  .weapon-dock .weapon-choice,.weapon-dock .weapon-choice.weapon-cannon{width:30px;height:30px;min-height:30px;padding:3px}
  .weapon-dock .weapon-icon{width:20px;height:20px}
  .weapon-dock .weapon-icon svg{width:19px;height:19px}
}
@media(max-height:450px){.weapon-dock{top:auto;bottom:90px}}
.debug-stats{display:flex;flex-direction:column;gap:4px;flex:none;color:#eef4e9;font:11px/1.5 ui-monospace,monospace;letter-spacing:0}
.debug-stats[hidden]{display:none}
.debug-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.debug-metrics span{font-size:9px;color:#dfe6d8}.debug-metrics b{display:block;font-size:20px;color:#fff;font-weight:600}.debug-extra #debugReadout{display:block;white-space:pre-wrap;font-size:11px}.debug-export{margin-top:6px}

/* Thermal AI acquisition boxes */
.soldiers-counter b{color:#ff4d58;text-shadow:0 0 8px #ff334b80;animation:soldierBlink 1.15s ease-in-out infinite}
.target-box-layer{position:absolute;inset:0;z-index:1;pointer-events:none}
.thermal-target-box{position:absolute;left:0;top:0;border:1px solid var(--target-color);box-shadow:inset 0 0 14px color-mix(in srgb,var(--target-color) 12%,transparent),0 0 7px color-mix(in srgb,var(--target-color) 60%,transparent);min-width:3px;min-height:5px}
.thermal-target-box.occluded{border-style:dotted;box-shadow:0 0 5px color-mix(in srgb,var(--target-color) 48%,transparent)}
.thermal-target-box:before{content:attr(data-label);position:absolute;left:-1px;top:-13px;padding:1px 3px;background:#07100dcc;color:var(--target-color);font:7px/10px ui-monospace,monospace;letter-spacing:.08em;text-shadow:0 0 5px color-mix(in srgb,var(--target-color) 55%,transparent);white-space:nowrap}
.thermal-target-box:after{content:'';position:absolute;left:50%;top:50%;width:3px;height:3px;border:1px solid var(--target-color);transform:translate(-50%,-50%);background:#05090780}
.thermal-target-box.soldier{--target-color:#ff4d58}
.thermal-target-box.vehicle{--target-color:#ff9748}
.reticle.target-lock svg{stroke:#ff4d58;filter:drop-shadow(0 0 5px #ff394f);opacity:1}
.debug-nuke-panel{display:grid;grid-template-columns:1fr;gap:6px;padding:8px 0;border-top:1px solid #ffbbb155}.debug-nuke-panel[hidden]{display:none}.debug-nuke-panel output{font-size:10px;color:#f0e8dc;line-height:1.5;overflow-wrap:anywhere}.debug-nuke{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;height:46px;border:1px solid #f2ebe0aa!important;border-radius:4px;background:linear-gradient(90deg,#3b2722ee,#211d1b)!important;color:#fff!important;font-weight:700!important;letter-spacing:.12em!important}.debug-nuke svg{width:23px;height:23px;fill:none;stroke:#fff;stroke-width:1.5}.debug-nuke:not(:disabled){border-color:#ffb1a5!important;box-shadow:0 0 15px #ff693933}.debug-nuke:disabled{opacity:.5;cursor:wait}

.sensor-post.sensor-monochrome.gunship-mode #mount canvas{filter:grayscale(1) contrast(var(--sensor-contrast,1.16)) brightness(var(--sensor-brightness,1.025))}
.software-gpu.sensor-post.sensor-monochrome.gunship-mode #mount canvas{filter:grayscale(1) contrast(var(--sensor-contrast,1.16))}
