*{margin:0;padding:0;box-sizing:border-box;}
body{background:#000;overflow:hidden;font-family:'Segoe UI',sans-serif;user-select:none;-webkit-user-select:none;}
body.cursor-hidden,body.cursor-hidden *{cursor:none!important;}
#canvas{display:block;width:100vw;height:100vh;}
#world-pickup-art-layer{position:fixed;inset:0;z-index:4;pointer-events:none;overflow:hidden;contain:layout paint style;}
.world-weapon-pickup-art,.world-health-pickup-art{position:absolute;left:0;top:0;height:auto;max-width:none;visibility:hidden;pointer-events:none;user-select:none;-webkit-user-drag:none;transform-origin:50% 62%;will-change:left,top,width,transform,opacity;filter:none;}
.world-health-pickup-art{filter:none;}
#ui{position:fixed;inset:0;pointer-events:none;z-index:10;}
#fp-weapon-art-wrap{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:3;opacity:0;visibility:hidden;transition:opacity .08s linear;contain:layout paint style;}
#fp-weapon-art-wrap.on.shown{opacity:1;visibility:visible;}
#fp-weapon-art-wrap.scope-hidden{opacity:0;visibility:hidden;}
#fp-weapon-art-stage{position:absolute;right:var(--fp-right,-1vw);bottom:var(--fp-bottom,-1vh);width:var(--fp-width,48vw);max-width:980px;transform-origin:88% 84%;transform:translate3d(var(--fp-dx,0px),var(--fp-dy,0px),0) rotate(var(--fp-rot,0deg)) scale(var(--fp-scale,1));will-change:transform;filter:drop-shadow(0 18px 16px rgba(0,0,0,.48));}
#fp-weapon-art-wrap[data-weapon-key="shotgun"] #fp-weapon-art-stage{filter:drop-shadow(0 8px 6px rgba(0,0,0,.32));}
#fp-weapon-art-wrap[data-weapon-key="shotgun"] #fp-weapon-action{filter:none;}
#fp-weapon-art-wrap[data-weapon-key="shotgun"] #fp-weapon-art{transition:none;}
#fp-weapon-art{display:block;width:100%;height:auto;max-width:none;-webkit-user-drag:none;user-select:none;transition:opacity .04s linear;}
#fp-weapon-action{position:absolute;inset:0;display:none;pointer-events:none;opacity:0;background-repeat:no-repeat;background-position:0 0;filter:drop-shadow(0 18px 16px rgba(0,0,0,.48));will-change:background-position,opacity;}
.generated-combat-vfx[data-kind="sniperMuzzle32"],.generated-combat-vfx[data-kind="sniperSmoke32"],.generated-combat-vfx[data-kind="sniperBullet32"]{mix-blend-mode:screen;}
.generated-combat-vfx[data-kind="sniperCasing32"]{mix-blend-mode:normal;filter:drop-shadow(0 3px 3px rgba(0,0,0,.42));}
#fp-weapon-action.on{display:block;opacity:1;}
#fp-plasma-muzzle-anchor{position:absolute;left:var(--fp-muzzle-x,22%);top:var(--fp-muzzle-y,34%);width:0;height:0;pointer-events:none;}
#fp-weapon-flash{position:absolute;left:var(--fp-muzzle-x,6%);top:var(--fp-muzzle-y,20%);width:154px;height:96px;opacity:0;transform:translate(-91%,-50%) rotate(calc(-8deg + var(--fp-flash-twist,0deg))) scale(var(--fp-flash-pop,0));transform-origin:92% 50%;filter:drop-shadow(0 0 8px var(--fp-flash-mid,#ffd15a)) drop-shadow(0 0 18px var(--fp-flash-edge,#ff6d1f));mix-blend-mode:screen;will-change:opacity,transform;pointer-events:none;background-image:var(--fp-flash-image,none);background-repeat:no-repeat;background-size:400% 200%;background-position:var(--fp-flash-x,0%) var(--fp-flash-y,0%);}
#fp-weapon-flash::before{content:'';position:absolute;inset:0;clip-path:polygon(100% 43%,78% 34%,84% 12%,58% 34%,55% 2%,34% 38%,0 50%,34% 62%,55% 98%,58% 66%,84% 88%,78% 66%,100% 57%);background:radial-gradient(ellipse at 94% 50%,var(--fp-flash-core,#fff9df) 0 8%,var(--fp-flash-mid,#ffd15a) 16%,var(--fp-flash-edge,#ff6d1f) 36%,transparent 72%);}
#fp-weapon-flash::after{content:'';position:absolute;right:0;top:50%;width:46px;height:46px;transform:translate(18%,-50%);border-radius:50%;background:radial-gradient(circle,var(--fp-flash-core,#fff9df) 0 12%,var(--fp-flash-mid,#ffd15a) 28%,var(--fp-flash-edge,#ff6d1f) 48%,transparent 72%);filter:blur(.2px);}
#fp-weapon-art-wrap[data-weapon-key="shotgun"] #fp-weapon-flash,#fp-weapon-art-wrap[data-weapon-key="rocket"] #fp-weapon-flash{width:110px;height:62px;background-image:none!important;filter:drop-shadow(0 0 6px var(--fp-flash-mid,#ffd15a)) drop-shadow(0 0 11px var(--fp-flash-edge,#ff6d1f));}
#fp-weapon-art-wrap[data-weapon-key="shotgun"] #fp-weapon-flash::before,#fp-weapon-art-wrap[data-weapon-key="rocket"] #fp-weapon-flash::before{inset:18% 4% 18% 26%;clip-path:ellipse(48% 32% at 82% 50%);border-radius:50%;background:radial-gradient(ellipse at 88% 50%,var(--fp-flash-core,#fff9df) 0 10%,var(--fp-flash-mid,#ffd15a) 24%,var(--fp-flash-edge,#ff6d1f) 44%,transparent 74%);}
#fp-weapon-art-wrap[data-weapon-key="shotgun"] #fp-weapon-flash::after,#fp-weapon-art-wrap[data-weapon-key="rocket"] #fp-weapon-flash::after{width:28px;height:28px;}
#xhair{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:48px;height:48px;--xh-gap:6px;transition:opacity .08s ease;z-index:24;}
.xh-arm{position:absolute;background:rgba(255,255,255,.92);border-radius:2px;box-shadow:0 0 5px rgba(255,255,255,.24);}
.xh-t,.xh-b{width:2px;height:9px;left:23px;}
.xh-l,.xh-r{width:9px;height:2px;top:23px;}
.xh-t{bottom:calc(50% + var(--xh-gap));}.xh-b{top:calc(50% + var(--xh-gap));}
.xh-l{right:calc(50% + var(--xh-gap));}.xh-r{left:calc(50% + var(--xh-gap));}
.xh-dot{position:absolute;width:4px;height:4px;background:#fff;border-radius:50%;top:22px;left:22px;box-shadow:0 0 6px rgba(255,255,255,.34);}

/* Weapon bar at top */
#weapon-bar{position:absolute;top:38px;left:50%;transform:translateX(-50%);display:flex;gap:5px;z-index:12;}
.wb-slot{background:linear-gradient(180deg,rgba(13,18,27,.90),rgba(0,0,0,.78));border:1px solid rgba(190,215,235,.22);border-radius:11px;padding:4px 7px 5px;text-align:center;min-width:78px;cursor:default;transition:border-color .15s,background .15s,transform .15s,box-shadow .15s;overflow:hidden;}
.wb-slot.active{border-color:#ffd700;background:linear-gradient(180deg,rgba(80,61,0,.55),rgba(20,12,0,.82));box-shadow:0 0 15px rgba(255,200,0,.35),inset 0 0 18px rgba(255,205,0,.08);transform:translateY(1px);}
.wb-asset{display:block;width:58px;height:30px;object-fit:contain;margin:0 auto 1px;opacity:.72;filter:drop-shadow(0 2px 3px rgba(0,0,0,.75));transition:opacity .15s,filter .15s,transform .15s;}
.wb-slot.active .wb-asset{opacity:1;filter:drop-shadow(0 0 6px rgba(255,215,0,.52));transform:scale(1.06);}
.wb-key{font-size:8px;color:#7d8792;letter-spacing:1px;font-weight:800;line-height:1;}
.wb-slot.active .wb-key{color:#ffd700;}
.wb-name{font-size:9px;color:#b8c0c9;margin-top:1px;white-space:nowrap;font-weight:700;letter-spacing:.25px;}
.wb-slot.active .wb-name{color:#fff;}
.wb-slot.locked{opacity:.42;filter:saturate(.35);border-color:rgba(110,125,140,.16);background:linear-gradient(180deg,rgba(8,12,18,.72),rgba(0,0,0,.82));}
.wb-slot.locked .wb-asset{opacity:.24;filter:grayscale(1) brightness(.55);}
.wb-slot.locked .wb-name{color:#68737e;font-size:8px;}
.wb-slot.locked .wb-key{color:#59626b;}
.wb-reserve{margin-top:2px;min-height:9px;font:800 8px/1 Consolas,'Courier New',monospace;color:#6ee7ff;letter-spacing:.35px;}
.wb-slot.locked .wb-reserve{color:#4b535b;}


/* Team score bar */
#team-bar{position:absolute;top:8px;left:50%;transform:translateX(-50%);display:flex;gap:16px;align-items:center;}
#team-bar .tb-side{font-size:17px;font-weight:900;min-width:105px;text-align:center;white-space:nowrap;}
#team-bar .tb-vs{font-size:11px;color:#888;letter-spacing:3px;font-weight:700;}
#tb-ally{color:#44aaff;}
#tb-enemy{color:#ff4444;}

/* Tactical minimap + lower-left objective stack */
#left-tactical-stack{position:absolute;left:18px;bottom:65px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:254px;pointer-events:none;z-index:13;}
#frontline-map{position:relative;width:236px;padding:7px 8px 8px;border-radius:15px;background:linear-gradient(180deg,rgba(7,15,24,.94),rgba(1,5,9,.88));border:1px solid rgba(98,191,245,.34);box-shadow:0 9px 26px rgba(0,0,0,.36),inset 0 0 22px rgba(60,170,240,.04);pointer-events:none;}
#frontline-map-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px 5px;font-size:7px;font-weight:900;letter-spacing:1.1px;color:#8cdcff;}
#frontline-map-hint{max-width:132px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffe36f;text-shadow:0 0 7px rgba(255,210,70,.24);}
#frontline-minimap{display:block;width:218px;height:218px;margin:0 auto;border-radius:50%;background:#071018;border:1.5px solid rgba(130,215,255,.74);box-shadow:0 0 0 2px rgba(20,60,90,.42),0 0 18px rgba(40,180,255,.13),inset 0 0 22px rgba(0,0,0,.64);}
#frontline-map-legend{display:flex;justify-content:center;gap:8px;margin:5px 0 4px;font-size:5.5px;font-weight:900;letter-spacing:.48px;color:#7f919f;}
.fm-player{color:#bffcff}.fm-blue{color:#62cfff}.fm-target{color:#ffe176}
#frontline-objective{position:relative;width:100%;box-sizing:border-box;padding:7px 8px 6px;border-radius:10px;background:linear-gradient(180deg,rgba(9,18,27,.72),rgba(0,0,0,.48));border:1px solid rgba(255,214,90,.20);text-align:center;pointer-events:none;transition:border-color .16s,box-shadow .16s;}
#frontline-title{font-size:9px;font-weight:900;letter-spacing:1.1px;color:#ffe176;text-shadow:0 0 9px rgba(255,205,70,.28);display:flex;align-items:center;justify-content:center;gap:6px;}
#frontline-bearing{display:inline-flex;width:13px;height:13px;align-items:center;justify-content:center;transform-origin:50% 50%;transition:transform .09s linear;color:#fff2a0;text-shadow:0 0 9px rgba(255,210,75,.72);}
#frontline-objective.inside{background:linear-gradient(180deg,rgba(19,39,45,.82),rgba(0,10,13,.62));border-color:rgba(94,255,207,.50);box-shadow:0 0 16px rgba(70,255,196,.10);}
#frontline-state{margin-top:2px;font-size:8px;font-weight:800;letter-spacing:.55px;color:#c5d0da;}
#frontline-track{position:relative;height:5px;margin-top:5px;border-radius:5px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.10);overflow:hidden;}
#frontline-ally-progress,#frontline-enemy-progress{position:absolute;top:0;height:100%;transition:width .10s linear;}
#frontline-ally-progress{right:50%;background:linear-gradient(90deg,#2677ff,#61d7ff);box-shadow:0 0 9px rgba(60,180,255,.55);}
#frontline-enemy-progress{left:50%;background:linear-gradient(90deg,#ff6f62,#ef244b);box-shadow:0 0 9px rgba(255,55,80,.50);}
#frontline-mid{position:absolute;top:-2px;bottom:-2px;left:50%;width:2px;transform:translateX(-1px);background:rgba(255,255,255,.74);}
#frontline-score{margin-top:4px;font-size:7px;font-weight:800;letter-spacing:.45px;color:#8f9eaa;}
#frontline-objective.ally{border-color:rgba(80,190,255,.44)}#frontline-objective.enemy{border-color:rgba(255,75,95,.44)}#frontline-objective.contested{border-color:rgba(255,225,100,.64);}
#ally-panel{position:relative;bottom:auto;left:auto;display:flex;gap:5px;flex-wrap:wrap;width:254px;max-width:254px;}

#xp-wrap{position:absolute;top:18px;left:18px;transform:none;text-align:left;z-index:13;pointer-events:none;}
#xp-lbl{display:inline-block;font-size:11px;color:#7eeaff;letter-spacing:2px;font-weight:900;margin-bottom:5px;padding:4px 9px;border-radius:9px;background:rgba(4,15,25,.78);border:1px solid rgba(70,210,255,.36);box-shadow:0 0 11px rgba(30,185,255,.12);}
#xp-bar{width:230px;height:7px;background:rgba(0,0,0,.58);border-radius:4px;overflow:hidden;border:1px solid rgba(0,200,255,.4);box-shadow:0 0 8px rgba(0,190,255,.10);}
#xp-fill{height:100%;background:linear-gradient(90deg,#0088ff,#00ffff);border-radius:4px;width:0%;}
#hp-wrap{position:absolute;bottom:90px;left:50%;transform:translateX(-50%);text-align:center;z-index:24;}
#hp-txt{font-size:12px;font-weight:700;letter-spacing:2px;margin-bottom:3px;color:#aaffaa;}
#hp-bar{width:240px;height:13px;background:rgba(0,0,0,.55);border-radius:7px;overflow:hidden;border:1px solid rgba(255,255,255,.22);}
#hp-fill{height:100%;border-radius:7px;transition:width .1s;}
#armor-row{margin-top:3px;display:none;}
#armor-bar{width:240px;height:5px;background:rgba(0,0,0,.4);border-radius:3px;overflow:hidden;border:1px solid rgba(80,180,255,.3);}
#armor-fill{height:100%;background:linear-gradient(90deg,#44aaff,#aaddff);border-radius:3px;}
#hud{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:14px;z-index:24;}
.hb{background:rgba(0,0,0,.65);border:2px solid rgba(255,220,0,.4);border-radius:14px;padding:6px 14px;color:#fff;text-align:center;}
.hl{font-size:9px;letter-spacing:2px;color:#ffd700;text-transform:uppercase;margin-bottom:2px;}
.hv{font-size:22px;font-weight:900;}
#whud{position:absolute;bottom:18px;right:18px;background:rgba(0,0,0,.78);border:2px solid rgba(255,220,0,.52);border-radius:14px;padding:8px 14px;color:#fff;text-align:center;min-width:110px;z-index:24;box-shadow:0 8px 24px rgba(0,0,0,.34);}
#wname{font-size:9px;letter-spacing:2px;color:#ffd700;text-transform:uppercase;margin-bottom:3px;}
#wammo{font-size:20px;font-weight:900;}
#wtot{font-size:10px;color:#aaa;margin-top:2px;}
#perk-panel{position:absolute;top:96px;left:14px;display:flex;flex-direction:column;gap:3px;}
.ptag{background:rgba(0,0,0,.7);border:1px solid rgba(255,220,0,.45);border-radius:8px;padding:2px 9px;font-size:11px;color:#ffd700;}
#stats-panel{position:absolute;top:96px;right:14px;background:rgba(0,0,0,.72);border:1px solid rgba(0,200,255,.35);border-radius:13px;padding:9px 13px;min-width:145px;font-size:11px;color:#ccc;line-height:1.9;pointer-events:none;}
#stats-panel .sh{font-size:9px;letter-spacing:2px;color:#00ddff;text-transform:uppercase;margin-bottom:5px;font-weight:700;}
#stats-panel .sr{display:flex;justify-content:space-between;gap:8px;}
#stats-panel .sv{color:#fff;font-weight:800;}
#reload-wrap{position:absolute;top:calc(50% + 22px);left:50%;transform:translateX(-50%);display:none;text-align:center;}
#reload-track{width:96px;height:5px;background:rgba(0,0,0,.65);border-radius:3px;border:1px solid rgba(255,220,0,.45);}
#reload-fill{height:100%;background:linear-gradient(90deg,#ffd700,#ffaa00);border-radius:3px;width:0%;}
#reload-lbl{font-size:10px;color:#ffd700;letter-spacing:1px;margin-top:3px;font-weight:700;}
#mines-panel{position:absolute;bottom:18px;left:18px;background:rgba(0,0,0,.65);border:2px solid rgba(255,100,0,.45);border-radius:14px;padding:8px 14px;color:#fff;text-align:center;display:none;z-index:24;}
#mine-lbl{font-size:9px;letter-spacing:2px;color:#ff8800;text-transform:uppercase;margin-bottom:3px;}
#mine-cnt{font-size:18px;font-weight:900;color:#ff8800;}
#score-pop{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%);font-size:34px;font-weight:900;color:#ffd700;text-shadow:0 0 20px #ffa500;pointer-events:none;opacity:0;transition:opacity .3s,top .3s;}
#ann{position:absolute;top:27%;left:50%;transform:translate(-50%,-50%);font-size:36px;font-weight:900;color:#fff;text-shadow:0 0 28px #00aaff;pointer-events:none;opacity:0;letter-spacing:2px;white-space:nowrap;transition:opacity .5s;}
#pmsg{position:absolute;top:16%;left:50%;transform:translateX(-50%);font-size:18px;font-weight:800;color:#44ffaa;pointer-events:none;opacity:0;white-space:nowrap;transition:opacity .4s;}
#pmsg.rocket-cooling-message{top:50%;transform:translate(-50%,-50%);width:max-content;max-width:calc(100% - 32px);padding:12px 18px;border:1px solid rgba(255,173,75,.6);border-radius:10px;background:rgba(8,15,23,.88);color:#ffe4b4;font-size:clamp(16px,2vw,24px);line-height:1.35;text-align:center;white-space:normal;z-index:30;box-shadow:0 4px 22px rgba(0,0,0,.4);}
#rmsg{position:absolute;top:45%;left:50%;transform:translateX(-50%);color:#ff4444;font-size:15px;font-weight:700;letter-spacing:2px;opacity:0;pointer-events:none;}
#dfx{position:fixed;inset:0;background:radial-gradient(circle at center,rgba(255,0,0,0) 48%,rgba(120,0,0,0) 100%);pointer-events:none;z-index:8;transition:none;}
#smoke-overlay{position:fixed;inset:0;z-index:9;pointer-events:none;opacity:0;background-image:var(--smoke-overlay-image,none),radial-gradient(circle at 50% 46%,rgba(72,78,82,.99) 0%,rgba(45,50,54,1) 48%,rgba(15,18,21,1) 100%);background-position:center;background-size:cover;background-repeat:no-repeat;transition:opacity .08s linear;}
.generated-combat-overlay{position:fixed;inset:0;pointer-events:none;opacity:0;z-index:7;background-image:var(--combat-overlay-image,none);background-position:center;background-size:cover;background-repeat:no-repeat;transform-origin:50% 50%;will-change:opacity,transform;}
#low-health-overlay{display:none!important;}
#suppression-overlay{transition:opacity .08s linear;}
#sprint-speed-overlay{display:none!important;}
#damage-edge-overlay.on{animation:generatedDamageEdge .72s ease-out both;}
#armor-hit-overlay{mix-blend-mode:screen;}#armor-hit-overlay.on{animation:generatedArmorHit .48s ease-out both;}
#explosion-shockwave-overlay{mix-blend-mode:screen;}#explosion-shockwave-overlay.on{animation:generatedExplosionShockwave .70s ease-out both;}
#respawn-materialize-overlay{mix-blend-mode:screen;}#respawn-materialize-overlay.on{animation:generatedRespawnMaterialize 1.10s ease-out both;}
@keyframes generatedDamageEdge{0%{opacity:0}12%{opacity:calc(var(--overlay-strength,.8)*.95)}55%{opacity:calc(var(--overlay-strength,.8)*.62)}100%{opacity:0}}
@keyframes generatedArmorHit{0%{opacity:0;transform:scale(.96)}18%{opacity:var(--overlay-strength,.7);transform:scale(1)}100%{opacity:0;transform:scale(1.04)}}
@keyframes generatedExplosionShockwave{0%{opacity:0;transform:scale(.72)}22%{opacity:var(--overlay-strength,.8);transform:scale(.94)}100%{opacity:0;transform:scale(1.16)}}
@keyframes generatedRespawnMaterialize{0%{opacity:0;transform:scale(1.05)}18%{opacity:.88;transform:scale(.99)}62%{opacity:.52}100%{opacity:0;transform:scale(1)}}

#rwarn{position:absolute;top:36%;left:50%;transform:translateX(-50%);font-size:20px;font-weight:900;color:#ff2200;pointer-events:none;opacity:0;white-space:nowrap;}
#combo{position:absolute;top:32%;right:55px;font-size:24px;font-weight:900;pointer-events:none;opacity:0;}
#hs-pop{position:absolute;top:37%;left:50%;transform:translateX(-50%);font-size:26px;font-weight:900;color:#ff4400;pointer-events:none;opacity:0;}
#no-ammo{position:absolute;top:56%;left:50%;transform:translateX(-50%);font-size:14px;font-weight:800;color:#ff4444;pointer-events:none;opacity:0;background:rgba(0,0,0,.65);padding:4px 14px;border-radius:8px;white-space:nowrap;}

#lvl-ann{position:fixed;inset:0;background:rgba(0,0,0,.88);display:none;align-items:center;justify-content:center;z-index:400;pointer-events:none;}
#lvl-ann.on{display:flex;}
#lvl-ann-inner{text-align:center;user-select:none;}
#lvl-ann-title{font-size:80px;font-weight:900;color:#ffd700;text-shadow:0 0 50px #ffa500,0 0 100px #ff6600;letter-spacing:5px;animation:lvlPop .5s ease-out;}
@keyframes lvlPop{from{transform:scale(.5);opacity:0;}to{transform:scale(1);opacity:1;}}
#lvl-ann-num{font-size:54px;font-weight:900;color:#fff;text-shadow:0 0 25px #00aaff;margin-top:4px;}
#lvl-ann-sub{font-size:18px;color:#aaa;margin-top:12px;letter-spacing:2px;}
#lvl-ann-bar-bg{width:300px;height:7px;background:rgba(255,255,255,.15);border-radius:4px;margin:14px auto 0;overflow:hidden;border:1px solid rgba(255,220,0,.35);}
#lvl-ann-bar{height:100%;background:linear-gradient(90deg,#ffd700,#ff4400);border-radius:4px;width:100%;}
#perk-menu{position:fixed;inset:0;background:rgba(2,5,12,.88);backdrop-filter:blur(9px);display:none;align-items:center;justify-content:center;z-index:500;pointer-events:all;padding:20px;}
#perk-menu.on{display:flex;}
#perk-box{text-align:center;background:radial-gradient(ellipse at 50% 0,rgba(50,78,110,.22),transparent 65%),#090f1a;border:1px solid #344253;border-radius:24px;box-shadow:0 32px 100px #0009,inset 0 1px 0 #ffffff0d;padding:30px;width:min(1320px,100%);max-width:100%;max-height:calc(100dvh - 40px);overflow:auto;scrollbar-width:thin;scrollbar-color:#435368 #0b111b;}
#perk-title{font-size:clamp(23px,3vw,36px);font-weight:900;color:#ffe080;text-shadow:0 2px 20px #ffbd2726;letter-spacing:2px;margin-bottom:10px;line-height:1.2;}
#perk-sub{font-size:14px;color:#aab8c8;margin-bottom:20px;line-height:1.5;}
#perk-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;align-items:stretch;width:100%;min-width:0;text-align:left;}
.pcard{box-sizing:border-box;background:radial-gradient(circle at 50% 18%,color-mix(in srgb,var(--rarity) 12%,transparent),transparent 58%),linear-gradient(160deg,#1b2636,#0d1522);border:1px solid #475366;border-radius:16px;padding:22px 20px 18px;min-height:350px;cursor:pointer;color:#fff;font:inherit;transition:transform .16s,border-color .16s,box-shadow .16s;display:grid;grid-template-rows:88px 22px minmax(48px,auto) minmax(64px,1fr) minmax(48px,auto);row-gap:12px;align-items:center;text-align:center;}
.pcard:hover{transform:translateY(-4px);border-color:var(--rarity);box-shadow:0 10px 32px #0006,0 0 22px color-mix(in srgb,var(--rarity) 20%,transparent);}
.pcard.disabled{opacity:.45;filter:saturate(.55);cursor:not-allowed;border-color:rgba(255,255,255,.14);}
.pcard.disabled:hover{transform:none;box-shadow:none;}
.pcard-ic{font-size:32px;margin-bottom:8px;align-self:center;}
.pcard-nm{width:100%;min-width:0;margin:0;font-size:16px;font-weight:800;line-height:1.35;color:#f4f7fc;align-self:center;text-align:center;overflow-wrap:anywhere;}
.pcard-ds{width:100%;min-width:0;margin:0;font-size:13px;color:#bfccda;line-height:1.55;align-self:start;text-align:center;overflow-wrap:anywhere;}
.pcard-meta{box-sizing:border-box;width:100%;min-width:0;margin:0;padding:12px 0 0;border-top:1px solid #ffffff14;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;font-size:11px;line-height:1.35;color:#8fa1b6;align-self:end;white-space:normal;overflow-wrap:anywhere;}
.pcard-note{font-size:10px;color:#ffcc66;margin-top:6px;font-weight:700;align-self:center;}

#perk-build{margin:0 auto 24px;padding:10px 18px;max-width:760px;border:1px solid #2b3d53;border-radius:10px;background:#101c2b;color:#a6cbea;font-size:12px;line-height:1.55;}
#perk-actions{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:15px;}
#perk-reroll{pointer-events:auto;border:1px solid rgba(120,210,255,.48);border-radius:999px;padding:10px 24px;background:linear-gradient(135deg,rgba(28,80,145,.95),rgba(64,45,150,.95));color:#fff;font-weight:900;letter-spacing:1.2px;cursor:pointer;box-shadow:0 0 18px rgba(80,150,255,.22);}
#perk-reroll:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.12);}
#perk-reroll:disabled{opacity:.38;cursor:not-allowed;filter:grayscale(.6);}
#perk-hint{font-size:12px;color:#8495aa;line-height:1.6;max-width:680px;margin:14px auto 0;}
.pcard{position:relative;overflow:hidden;}
.pcard::before{content:'';position:absolute;inset:0 0 auto 0;height:3px;background:var(--rarity,#9aa4b2);box-shadow:0 0 14px var(--rarity,#9aa4b2);}
.pcard.rarity-common{--rarity:#a9b3c1;border-color:rgba(169,179,193,.38);}
.pcard.rarity-rare{--rarity:#38a8ff;border-color:rgba(56,168,255,.48);}
.pcard.rarity-epic{--rarity:#b66cff;border-color:rgba(182,108,255,.52);}
.pcard.rarity-legendary{--rarity:#ffb21c;border-color:rgba(255,178,28,.62);box-shadow:0 0 20px rgba(255,150,0,.10);}
.pcard-rarity{justify-self:center;align-self:center;margin:0;padding:5px 10px;border-radius:6px;border:1px solid color-mix(in srgb,var(--rarity) 38%,transparent);background:color-mix(in srgb,var(--rarity) 8%,transparent);color:var(--rarity);font-size:9px;font-weight:800;line-height:1.1;letter-spacing:1.5px;text-transform:uppercase;}
.pcard-rank{color:#fff;font-weight:900;}
.pcard-path{color:#8fc8ff;}


#loading{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#05070b;color:#fff;pointer-events:all;}
#loading.hidden{display:none;}
#loading-box{width:min(430px,86vw);text-align:center;}
#loading-title{font-size:31px;font-weight:900;color:#ffd700;letter-spacing:3px;text-shadow:0 0 24px rgba(255,190,0,.55);}
#loading-sub{margin-top:9px;color:#b9c7d5;font-size:13px;letter-spacing:1px;min-height:20px;}
#loading-track{height:10px;margin-top:18px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.18);border-radius:8px;overflow:hidden;}
#loading-fill{height:100%;width:0;background:linear-gradient(90deg,#ff9d00,#ffe45c);transition:width .18s ease;}
#loading-pct{margin-top:8px;color:#8fa4b8;font-size:12px;font-weight:800;}
.btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.35);}

.fs{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:200;color:#fff;pointer-events:auto;isolation:isolate;}
#menu{background:rgba(0,0,0,.94);}
#pause{background:rgba(0,5,20,.90);display:none;}
#menu .btn,#pause .btn,#settings-modal .btn{position:relative;z-index:2;pointer-events:auto;touch-action:manipulation;-moz-user-select:none;}
#pause.on{display:flex;}
#death-flash{position:fixed;inset:0;background:rgba(255,0,0,0);pointer-events:none;z-index:600;transition:none;}
#death-msg{position:absolute;inset:19% 10% 17%;transform:none;font-size:clamp(18px,2.05vw,34px);font-weight:900;color:#ff3333;text-shadow:0 0 42px #ff0000,0 2px 0 #560000;pointer-events:none;opacity:0;z-index:1;letter-spacing:clamp(1px,.22vw,4px);white-space:normal;text-align:center;line-height:1.08;min-width:0;}
.bigtitle{font-size:64px;font-weight:900;color:#ffd700;text-shadow:0 0 30px #ffa500,0 4px 0 #b8860b;margin-bottom:8px;letter-spacing:5px;}
.hints{margin:16px 0;color:#aaa;font-size:13px;line-height:2.2;text-align:center;}
.btn{padding:13px 42px;font-size:17px;font-weight:800;border:none;border-radius:50px;cursor:pointer;text-transform:uppercase;letter-spacing:3px;margin-top:10px;}
.byellow{background:linear-gradient(135deg,#ffd700,#ff8800);color:#000;box-shadow:0 4px 24px rgba(255,200,0,.5);}
.byellow:hover{opacity:.9;}
.brestart{background:linear-gradient(135deg,#ff5b4d,#b50024);color:#fff;box-shadow:0 4px 24px rgba(255,40,50,.34);border:1px solid rgba(255,255,255,.16);}
.brestart:hover{filter:brightness(1.12);}
#pause .pause-actions{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:12px;}
#pause .pause-note{margin-top:8px;color:#9aa7b8;font-size:11px;letter-spacing:.6px;text-align:center;max-width:440px;line-height:1.5;}

/* Ally indicators */
#ally-panel{position:relative;bottom:auto;left:auto;display:flex;gap:6px;width:100%;}
.ally-icon{background:rgba(0,60,120,.7);border:1px solid rgba(68,170,255,.5);border-radius:8px;padding:3px 8px;font-size:11px;color:#88ccff;}

#weapon-bar{pointer-events:auto;flex-wrap:nowrap;justify-content:center;max-width:min(98vw,1180px);}
#weapon-bar .wb-slot{touch-action:manipulation;}
#ally-panel{flex-wrap:wrap;max-width:min(58vw,520px);}
#mobile-controls{position:fixed;inset:0;z-index:120;display:none;pointer-events:none;}
#mobile-controls.on{display:block;}
#mobile-left{position:absolute;left:max(14px,env(safe-area-inset-left));bottom:calc(max(18px,env(safe-area-inset-bottom)) + 88px);width:min(28vw,190px);height:min(28vw,190px);pointer-events:auto;touch-action:none;border-radius:50%;background:radial-gradient(circle at center,rgba(255,255,255,.08),rgba(0,0,0,.18));border:2px solid rgba(255,255,255,.12);box-shadow:inset 0 0 28px rgba(255,255,255,.06);}
#joy-base{position:absolute;inset:14%;border-radius:50%;border:2px solid rgba(255,255,255,.08);}
#joy-stick{position:absolute;width:34%;height:34%;left:33%;top:33%;border-radius:50%;background:rgba(255,255,255,.22);border:2px solid rgba(255,255,255,.18);box-shadow:0 0 22px rgba(255,255,255,.12);}
#mobile-right{position:absolute;top:0;right:0;bottom:0;width:56vw;pointer-events:auto;touch-action:none;border-radius:0;background:linear-gradient(90deg,rgba(0,0,0,0),rgba(90,170,255,.03));border:none;}
#look-hint{position:absolute;top:18%;right:8%;display:flex;align-items:center;justify-content:center;font-size:12px;letter-spacing:2px;color:rgba(170,220,255,.35);text-transform:uppercase;pointer-events:none;}
#mobile-buttons{position:absolute;right:max(14px,env(safe-area-inset-right));bottom:calc(max(18px,env(safe-area-inset-bottom)) + 88px);display:grid;grid-template-columns:repeat(2,minmax(56px,74px));gap:10px;pointer-events:auto;z-index:2;}
.mbtn{width:min(16vw,74px);height:min(16vw,74px);border-radius:50%;border:2px solid rgba(255,255,255,.16);background:rgba(0,0,0,.46);backdrop-filter:blur(6px);color:#fff;font-weight:900;font-size:18px;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 24px rgba(0,0,0,.24);touch-action:manipulation;}
.mbtn.small{font-size:12px;letter-spacing:1px;text-transform:uppercase;}
.mbtn.fire{background:rgba(255,120,60,.26);border-color:rgba(255,150,70,.42);}
.mbtn.run{background:rgba(60,160,255,.22);border-color:rgba(80,180,255,.38);}
.mbtn.jump{background:rgba(110,255,140,.18);border-color:rgba(110,255,160,.35);}
#mobile-pause{position:absolute;right:max(14px,env(safe-area-inset-right));top:max(14px,env(safe-area-inset-top));width:52px;height:52px;border-radius:16px;background:rgba(0,0,0,.45);border:2px solid rgba(255,255,255,.14);pointer-events:auto;display:flex;align-items:center;justify-content:center;color:#fff;font-size:24px;backdrop-filter:blur(6px);}
#rotate-lock{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.96);z-index:900;color:#fff;text-align:center;padding:24px;}
#rotate-lock.on{display:flex;}
#rotate-lock .rl-box{max-width:420px;}
#rotate-lock .rl-ic{font-size:54px;margin-bottom:16px;}
#rotate-lock .rl-title{font-size:28px;font-weight:900;color:#ffd700;letter-spacing:2px;margin-bottom:10px;}
#rotate-lock .rl-sub{font-size:15px;color:#cfd8dc;line-height:1.6;}
.mobile-only{display:none;}

@media (pointer:coarse), (max-width:1100px){
  #weapon-bar{top:max(42px,calc(env(safe-area-inset-top) + 34px));gap:6px;flex-wrap:wrap;max-width:min(94vw,760px);}
  #left-tactical-stack{left:max(10px,env(safe-area-inset-left));bottom:calc(max(10px,env(safe-area-inset-bottom)) + 52px);width:202px;}
  #frontline-map{width:188px;padding:5px 6px 6px;}
  #frontline-minimap{width:176px;height:176px;}
  #frontline-map-head{font-size:6.5px;}
  #frontline-map-hint{max-width:98px;}
  #ally-panel{width:202px;max-width:202px;gap:4px;}
  .wb-slot{min-width:56px;padding:4px 7px;border-radius:12px;}
  .wb-key{font-size:10px;}
  .wb-name{font-size:10px;}
  #team-bar{top:max(8px,env(safe-area-inset-top));gap:10px;}
  #team-bar .tb-side{font-size:18px;min-width:34px;}
  #xp-wrap{top:max(12px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));transform:none;text-align:left;}
  #xp-bar{width:min(42vw,230px);}
  #perk-panel{top:max(108px,calc(env(safe-area-inset-top) + 98px));left:max(10px,env(safe-area-inset-left));max-width:34vw;}
  #stats-panel{top:max(108px,calc(env(safe-area-inset-top) + 98px));right:max(10px,env(safe-area-inset-right));font-size:9px;min-width:112px;max-width:30vw;padding:7px 8px;line-height:1.45;}
  #ally-panel{bottom:calc(max(16px,env(safe-area-inset-bottom)) + 92px);left:max(12px,env(safe-area-inset-left));gap:5px;max-width:46vw;}
  .ally-icon{font-size:10px;padding:2px 6px;}
  #hud{bottom:calc(max(10px,env(safe-area-inset-bottom)) + 4px);gap:10px;}
  .hb{padding:6px 12px;border-radius:13px;}
  .hv{font-size:18px;}
  #whud,#mines-panel{bottom:calc(max(10px,env(safe-area-inset-bottom)) + 4px);}
  #whud{right:max(12px,env(safe-area-inset-right));min-width:98px;padding:8px 12px;}
  #mines-panel{left:max(12px,env(safe-area-inset-left));padding:8px 12px;}
  #hp-wrap{bottom:calc(max(10px,env(safe-area-inset-bottom)) + 78px);}
  #hp-bar,#armor-bar{width:min(48vw,240px);}
  #xhair{transform:translate(-50%,-50%) scale(.86);}
  .mobile-only{display:block;}
}


#mobile-controls,#rotate-lock{display:none!important;}
.mobile-only{display:none!important;}


/* v21.6 — visual asset pass */
#brand-logo{
  width:min(720px,78vw);
  max-height:210px;
  object-fit:contain;
  margin-bottom:8px;
  filter:drop-shadow(0 0 18px rgba(255,185,30,.48)) drop-shadow(0 10px 28px rgba(0,0,0,.65));
  user-select:none;
  pointer-events:none;
}
/* Legacy SVG crosshair removed in v22.2.
   The live reticle is rendered only by .xh-arm/.xh-dot to avoid double overlays. */
#hp-txt{display:flex;align-items:center;justify-content:center;gap:6px;}
#hp-txt::before{
  content:'';
  width:19px;height:19px;display:inline-block;flex:0 0 auto;
  background:url('../../assets/ui/health.svg?v=bd19f48bd156b74e') center/contain no-repeat;
  filter:drop-shadow(0 0 6px rgba(255,55,80,.55));
}
#armor-row{position:relative;}
#armor-row::before{
  content:'';
  position:absolute;left:-27px;top:50%;transform:translateY(-50%);
  width:20px;height:20px;
  background:url('../../assets/ui/armor.svg?v=bd19f48bd156b74e') center/contain no-repeat;
  filter:drop-shadow(0 0 6px rgba(70,170,255,.55));
}
#xp-wrap::before{
  content:'';
  position:absolute;left:-30px;top:50%;transform:translateY(-50%);
  width:22px;height:22px;
  background:url('../../assets/ui/xp.svg?v=bd19f48bd156b74e') center/contain no-repeat;
  filter:drop-shadow(0 0 7px rgba(255,205,45,.55));
}
@media (max-width:900px){
  #brand-logo{width:min(620px,88vw);max-height:165px;}
  #frontline-objective{top:138px;width:min(300px,70vw);transform:translateX(-50%) scale(.88);transform-origin:top center;}
}


/* v21.7 — character, perk, nature and headshot-finisher visual pass */
.bot-badge-icon,.leader-bot-icon{
  width:18px;height:18px;object-fit:contain;vertical-align:middle;flex:0 0 auto;
  filter:drop-shadow(0 0 6px rgba(255,70,90,.46));
}
#ally-panel .ally-icon{display:flex;align-items:center;gap:5px;}
#perk-panel .ptag{
  display:flex;align-items:center;gap:6px;
  background:linear-gradient(90deg,rgba(4,10,18,.86),rgba(18,24,34,.72));
  box-shadow:inset 0 0 12px rgba(80,170,255,.04);
}
.ptag-ic{
  width:21px;height:21px;object-fit:contain;flex:0 0 auto;
  filter:drop-shadow(0 0 5px rgba(85,190,255,.32));
}
.pcard-ic{
  display:block;width:88px;height:88px;object-fit:contain;margin:0 auto;
  filter:drop-shadow(0 0 11px var(--rarity,#9aa4b2));
  transition:transform .16s ease,filter .16s ease;
}
.pcard:hover .pcard-ic{
  transform:scale(1.10) translateY(-2px);
  filter:drop-shadow(0 0 18px var(--rarity,#9aa4b2));
}
.perk-emoji{font-size:15px;filter:saturate(.9);}

#hs-pop{
  display:flex!important;align-items:center;justify-content:center;gap:10px;
  min-width:210px;padding:7px 16px;border-radius:16px;
  background:linear-gradient(90deg,rgba(20,3,3,.10),rgba(66,10,5,.66),rgba(20,3,3,.10));
  border:1px solid rgba(255,100,55,.30);
  color:#ff7652!important;
  opacity:0!important;
  transform:translateX(-50%) scale(.70)!important;
  pointer-events:none;
  text-shadow:0 0 10px rgba(255,72,38,.85),0 2px 2px #000;
  box-shadow:0 0 24px rgba(255,65,30,.12);
}
#hs-pop img{width:42px;height:42px;object-fit:contain;filter:drop-shadow(0 0 9px rgba(255,110,45,.80));}
#hs-pop span{font-weight:1000;letter-spacing:2.5px;}
#hs-pop.on{animation:zapHeadshotHit .62s cubic-bezier(.18,.72,.18,1) forwards;}
#hs-pop.kill{
  min-width:330px;padding:10px 23px;
  color:#fff0a4!important;
  border-color:rgba(255,210,58,.72);
  background:linear-gradient(90deg,rgba(50,4,2,.16),rgba(125,31,3,.82),rgba(50,4,2,.16));
  text-shadow:0 0 10px #ff3c19,0 0 24px rgba(255,205,45,.92),0 2px 3px #000;
  box-shadow:0 0 32px rgba(255,65,20,.30),inset 0 0 22px rgba(255,207,50,.12);
}
#hs-pop.kill img{width:62px;height:62px;filter:drop-shadow(0 0 13px rgba(255,222,70,.98));}
#hs-pop.kill span{font-size:27px;letter-spacing:3.5px;}
#hs-pop.kill.on{animation:zapHeadshotKill .94s cubic-bezier(.15,.84,.20,1) forwards;}
#hs-kill-flash{
  position:fixed;inset:0;z-index:14;pointer-events:none;opacity:0;
  background:
    radial-gradient(circle at center,rgba(255,248,191,.34) 0 4%,rgba(255,132,23,.22) 8%,rgba(255,32,0,.08) 24%,transparent 52%),
    linear-gradient(90deg,transparent 0 42%,rgba(255,210,64,.16) 49%,rgba(255,255,255,.20) 50%,rgba(255,210,64,.16) 51%,transparent 58%);
  mix-blend-mode:screen;
}
#hs-kill-flash.on{animation:zapKillFlash .52s ease-out forwards;}

#lvl-ann-title{
  display:flex;align-items:center;justify-content:center;gap:12px;
}
#lvl-ann-title img{
  width:54px;height:54px;object-fit:contain;
  filter:drop-shadow(0 0 12px rgba(255,215,40,.82));
  animation:zapLevelIcon 1.1s ease-in-out infinite alternate;
}
#death-msg{
  display:flex;align-items:center;justify-content:center;gap:clamp(8px,1.1vw,16px);
}
#death-msg span{min-width:0;max-width:100%;overflow-wrap:anywhere;}
#death-msg img{
  width:clamp(42px,5vw,72px);height:clamp(42px,5vw,72px);object-fit:contain;flex:0 0 auto;
  filter:drop-shadow(0 0 14px rgba(255,45,45,.75));
}
#frontline-art{display:none;}

@keyframes zapHeadshotHit{
  0%{opacity:0;transform:translateX(-50%) scale(.55) rotate(-3deg)}
  22%{opacity:1;transform:translateX(-50%) scale(1.15) rotate(1deg)}
  62%{opacity:1;transform:translateX(-50%) scale(1)}
  100%{opacity:0;transform:translateX(-50%) scale(.94) translateY(-12px)}
}
@keyframes zapHeadshotKill{
  0%{opacity:0;transform:translateX(-50%) scale(.36) rotate(-5deg)}
  16%{opacity:1;transform:translateX(-50%) scale(1.32) rotate(2deg)}
  29%{transform:translateX(-50%) scale(.96) rotate(-1deg)}
  43%{transform:translateX(-50%) scale(1.10)}
  72%{opacity:1;transform:translateX(-50%) scale(1.02)}
  100%{opacity:0;transform:translateX(-50%) scale(.88) translateY(-20px)}
}
@keyframes zapKillFlash{
  0%{opacity:0}
  12%{opacity:1}
  36%{opacity:.58}
  100%{opacity:0}
}
@keyframes zapLevelIcon{
  from{transform:scale(.94) rotate(-3deg)}
  to{transform:scale(1.08) rotate(3deg)}
}

@media(max-width:900px){
  #hs-pop.kill{min-width:245px;padding:7px 13px;}
  #hs-pop.kill img{width:46px;height:46px;}
  #hs-pop.kill span{font-size:20px;letter-spacing:2px;}
}


/* v21.8 — unique perk icons, combat medals, status HUD and impact feedback */
#status-icons{
  position:absolute;top:58px;left:14px;z-index:13;
  display:flex;gap:5px;align-items:center;pointer-events:none;
}
.status-chip{
  position:relative;width:31px;height:31px;border-radius:9px;padding:2px;
  background:linear-gradient(180deg,rgba(12,21,30,.92),rgba(2,8,13,.86));
  border:1px solid rgba(118,211,255,.32);
  box-shadow:0 0 9px rgba(54,184,255,.12),inset 0 0 8px rgba(255,255,255,.035);
}
.status-chip img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 5px rgba(97,217,255,.38));}
.status-chip span{
  position:absolute;left:50%;top:37px;transform:translateX(-50%);
  opacity:0;white-space:nowrap;font-size:9px;font-weight:800;color:#dff8ff;
  background:rgba(0,7,12,.92);border:1px solid rgba(82,198,255,.3);border-radius:6px;padding:3px 6px;
}
.status-chip:hover span{opacity:1;}

#combat-medal{
  position:absolute;top:19%;left:50%;transform:translateX(-50%) scale(.68);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;z-index:18;
  filter:drop-shadow(0 0 18px rgba(255,194,42,.32));
}
#combat-medal img{width:min(420px,72vw);height:158px;object-fit:contain;}
#combat-medal span{
  margin-top:-36px;padding:4px 16px;border-radius:999px;
  font-size:17px;font-weight:1000;letter-spacing:3px;color:#fff5b5;
  background:rgba(7,10,14,.76);border:1px solid rgba(255,205,52,.48);
  text-shadow:0 0 11px rgba(255,157,31,.85);
}
#combat-medal.on{animation:combatMedalPop 1.45s cubic-bezier(.15,.78,.18,1) forwards;}
@keyframes combatMedalPop{
  0%{opacity:0;transform:translateX(-50%) scale(.42) translateY(24px)}
  14%{opacity:1;transform:translateX(-50%) scale(1.10) translateY(0)}
  28%{transform:translateX(-50%) scale(.97)}
  72%{opacity:1;transform:translateX(-50%) scale(1)}
  100%{opacity:0;transform:translateX(-50%) scale(.90) translateY(-22px)}
}

#armor-break-fx{
  position:fixed;inset:0;z-index:16;pointer-events:none;opacity:0;
  display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at center,rgba(90,218,255,.10),rgba(26,91,255,.10) 30%,transparent 66%);
}
#armor-break-fx img{
  width:min(360px,60vw);height:min(360px,60vw);object-fit:contain;
  filter:drop-shadow(0 0 24px rgba(71,194,255,.85));
}
#armor-break-fx.on{animation:armorBreakFlash .65s ease-out forwards;}
@keyframes armorBreakFlash{
  0%{opacity:0;transform:scale(.45) rotate(-7deg)}
  18%{opacity:1;transform:scale(1.12) rotate(2deg)}
  45%{opacity:.75;transform:scale(.98)}
  100%{opacity:0;transform:scale(1.28)}
}

.pcard-ic{border-radius:16px;}
.ptag-ic{border-radius:6px;}

@media(max-width:900px){
  #status-icons{top:52px;left:8px;gap:3px;}
  .status-chip{width:25px;height:25px;border-radius:7px;}
  #combat-medal{top:16%;}
  #combat-medal img{height:118px;}
  #combat-medal span{font-size:13px;letter-spacing:2px;margin-top:-27px;}
}


/* v21.9 — settings, audio feedback and combat telegraphing */
#hitmarker{position:absolute;left:50%;top:50%;width:38px;height:38px;transform:translate(-50%,-50%) rotate(45deg) scale(.72);opacity:0;z-index:19;pointer-events:none;}
#hitmarker::before,#hitmarker::after{content:'';position:absolute;left:50%;top:50%;width:4px;height:34px;border-radius:3px;background:#fff;box-shadow:0 0 9px rgba(255,255,255,.9);transform:translate(-50%,-50%);}
#hitmarker::after{transform:translate(-50%,-50%) rotate(90deg);}
#hitmarker.on{animation:hitMarkerPulse .18s ease-out forwards;}
#hitmarker.crit::before,#hitmarker.crit::after,#hitmarker.head::before,#hitmarker.head::after{background:#ffe65c;box-shadow:0 0 12px rgba(255,208,43,.95);}
#hitmarker.kill::before,#hitmarker.kill::after{background:#ff4c4c;box-shadow:0 0 14px rgba(255,30,30,.95);}
@keyframes hitMarkerPulse{0%{opacity:0;transform:translate(-50%,-50%) rotate(45deg) scale(.35)}24%{opacity:1;transform:translate(-50%,-50%) rotate(45deg) scale(1.08)}100%{opacity:0;transform:translate(-50%,-50%) rotate(45deg) scale(.78)}}
#xhair.dynamic-fire{transform:translate(-50%,-50%) scale(1.30);}
#xhair.dynamic-hit{filter:drop-shadow(0 0 5px rgba(255,220,70,.95));}
#xhair.suppressed .xh-arm{background:rgba(255,222,145,.96);box-shadow:0 0 calc(5px + var(--suppression)*7px) rgba(255,174,72,.56);}
#xhair.suppressed .xh-dot{background:#fff0bd;box-shadow:0 0 calc(6px + var(--suppression)*8px) rgba(255,174,72,.62);}
#damage-direction{position:absolute;left:50%;top:50%;width:1px;height:1px;z-index:17;pointer-events:none;opacity:0;transform:translate(-50%,-50%) rotate(0deg);}
#damage-direction span{position:absolute;left:-17px;top:-145px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:1000;color:#ff4d3a;text-shadow:0 0 12px rgba(255,35,15,.95),0 2px 2px #210000;}
#damage-direction.on{animation:damageDirectionPulse .72s ease-out forwards;}
#damage-direction.explosive span{font-size:34px;color:#ffb130;text-shadow:0 0 16px rgba(255,103,15,.95);}
@keyframes damageDirectionPulse{0%{opacity:0}12%{opacity:1}48%{opacity:.86}100%{opacity:0}}
#fps-counter{position:absolute;right:12px;top:10px;display:none;z-index:14;min-width:72px;text-align:center;padding:5px 8px;border-radius:8px;background:rgba(5,11,17,.72);border:1px solid rgba(117,208,255,.22);color:#a9e9ff;font:800 11px/1 'Consolas','Courier New',monospace;letter-spacing:.8px;box-shadow:0 0 10px rgba(32,170,255,.08);}
.bsecondary{background:linear-gradient(135deg,#1c3446,#0c1721);color:#cceeff;border:1px solid rgba(93,203,255,.38);box-shadow:0 4px 20px rgba(20,148,220,.18);}
.bsecondary:hover{filter:brightness(1.18);}
#settings-modal{position:fixed;inset:0;z-index:1200;display:none;align-items:center;justify-content:center;background:radial-gradient(circle at center,rgba(10,24,36,.80),rgba(0,3,8,.95));color:#eef8ff;padding:20px;}
#settings-modal.on{display:flex;}
#settings-box{width:min(560px,94vw);padding:24px 26px 22px;border-radius:20px;background:linear-gradient(180deg,rgba(14,27,39,.98),rgba(4,10,16,.98));border:1px solid rgba(96,207,255,.32);box-shadow:0 24px 80px rgba(0,0,0,.65),0 0 36px rgba(36,168,255,.12);}
#settings-title{margin-bottom:18px;text-align:center;font-size:25px;font-weight:1000;letter-spacing:3px;color:#ffd95b;text-shadow:0 0 18px rgba(255,184,30,.35);}
.setting-row,.setting-toggle{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:50px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.07);font-size:13px;font-weight:750;letter-spacing:.4px;}
.setting-control{display:flex;align-items:center;gap:10px;min-width:min(280px,52vw);}
.setting-control input[type=range]{width:210px;accent-color:#46cfff;}
.setting-control select{width:100%;min-height:36px;border:1px solid rgba(100,210,255,.5);border-radius:9px;background:#112330;color:#d9f3ff;font:700 13px 'Segoe UI',sans-serif;padding:6px 10px;cursor:pointer;}
.settings-graphics-state{font-size:12px;color:#8cdefd;text-align:right;margin:3px 0 10px;}
.setting-control span{min-width:54px;text-align:right;color:#7fddff;font-family:Consolas,monospace;font-weight:900;}
.setting-toggle{cursor:pointer;}
.setting-toggle input{width:19px;height:19px;accent-color:#45caff;}
.settings-section-title{margin:18px 0 2px;padding-top:10px;border-top:1px solid rgba(255,214,82,.16);color:#ffd95b;font-size:11px;font-weight:1000;letter-spacing:2.2px;text-align:center;}
.settings-note{margin:14px 0 2px;color:#8fa8ba;font-size:11px;line-height:1.55;text-align:center;}
#settings-box .btn{display:block;margin:18px auto 0;}
#canvas{transform-origin:50% 50%;will-change:transform;}
@media(max-width:700px){#damage-direction span{top:-105px;}#settings-box{padding:18px;}.setting-row{align-items:flex-start;flex-direction:column;gap:7px;}.setting-control{width:100%;min-width:0;}.setting-control input[type=range]{width:100%;}#battle-result-frame{width:min(94vw,680px);bottom:6px;}#death-msg{inset:18% 8% 15%;font-size:clamp(15px,4vw,25px);}}


/* v22.0 — sniper optic and weapon-handling HUD */
#sniper-scope{
  position:fixed;inset:0;z-index:16;pointer-events:none;
  opacity:0;visibility:hidden;transition:opacity .10s ease;
}
#sniper-scope.on{opacity:1;visibility:visible;}
#sniper-scope img{display:block;width:100%;height:100%;object-fit:cover;}
#sniper-scope.rifle-scope img{filter:saturate(1.08) contrast(1.04);}
#sniper-scope.kick img{animation:sniperScopeKick .26s cubic-bezier(.15,.72,.22,1);}
#frontline-capture-burst{position:fixed;left:50%;top:45%;width:min(42vw,520px);aspect-ratio:1;transform:translate(-50%,-50%) scale(.55);opacity:0;visibility:hidden;pointer-events:none;z-index:70;background:url('../../assets/ui/objective/frontline-capture-burst-tech-01.webp?v=bd19f48bd156b74e') center/contain no-repeat;mix-blend-mode:screen;filter:drop-shadow(0 0 28px rgba(80,220,255,.45));}
#frontline-capture-burst.on{visibility:visible;animation:frontlineCaptureBurst 1.05s cubic-bezier(.15,.72,.22,1) both;}
#frontline-capture-burst.enemy{filter:hue-rotate(145deg) drop-shadow(0 0 28px rgba(255,70,85,.42));}
@keyframes frontlineCaptureBurst{0%{opacity:0;transform:translate(-50%,-50%) scale(.45) rotate(-8deg)}24%{opacity:.96;transform:translate(-50%,-50%) scale(.92) rotate(0)}70%{opacity:.72;transform:translate(-50%,-50%) scale(1.08) rotate(4deg)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.18) rotate(7deg)}}
#battle-result-frame{position:fixed;left:50%;top:auto;bottom:clamp(8px,2vh,20px);width:min(78vw,760px);max-width:calc(100vw - 20px);aspect-ratio:16/9;transform:translateX(-50%) scale(.94);transform-origin:50% 100%;opacity:0;visibility:hidden;pointer-events:none;z-index:601;background:url('../../assets/ui/feedback/battle-result-frame-tech-01.webp?v=bd19f48bd156b74e') center/contain no-repeat;filter:drop-shadow(0 0 22px rgba(75,190,255,.28));transition:opacity .12s ease,transform .18s ease;}
#battle-result-frame.on{opacity:.82;visibility:visible;transform:translateX(-50%) scale(1);}
#xhair.scope-hidden{opacity:0!important;}
@keyframes sniperScopeKick{
  0%{transform:scale(1) translateY(0)}
  18%{transform:scale(1.035) translateY(9px)}
  48%{transform:scale(.995) translateY(-3px)}
  100%{transform:scale(1) translateY(0)}
}
@media(max-width:950px){
  .wb-slot{min-width:68px;padding-left:5px;padding-right:5px;}
  .wb-asset{width:52px;}
  .wb-name{font-size:8px;}
}

#wmode{margin-top:2px;color:#86dfff;font:800 10px/1.15 Consolas,'Courier New',monospace;letter-spacing:.7px;text-transform:uppercase;text-shadow:0 0 8px rgba(70,200,255,.25);}

#wstate{margin:3px 0 4px;font:900 8px/1.1 Consolas,'Courier New',monospace;letter-spacing:1px;color:#7dffad;text-transform:uppercase;}
#wstate[data-state="busy"]{color:#ffd15a;}
#wstate[data-state="blocked"]{color:#ff8b6b;}
#xhair.weapon-lowered{opacity:.30;}

/* v22.2 — one authoritative gameplay reticle */
#xhair{background:none!important;margin-left:0!important;margin-top:0!important;filter:none;}
#xhair .xh-dot{display:block!important;}
#xhair.dynamic-hit{filter:drop-shadow(0 0 5px rgba(255,220,70,.95));}


/* v22.3 — continuous battlefield respawn + tactical kill feed */
#kill-feed{
  position:absolute;right:14px;bottom:122px;z-index:16;
  width:min(330px,36vw);display:flex;flex-direction:column;align-items:flex-end;gap:5px;
  pointer-events:none;
}
.kf-row{
  display:flex;align-items:center;justify-content:flex-end;gap:7px;
  max-width:100%;padding:5px 9px;border-radius:9px;
  background:linear-gradient(90deg,rgba(3,8,14,.68),rgba(3,8,14,.90));
  border:1px solid rgba(210,225,240,.14);
  box-shadow:0 5px 18px rgba(0,0,0,.22);
  color:#dce7f2;font:800 10px/1.15 'Segoe UI',sans-serif;letter-spacing:.35px;
  animation:killFeedIn .18s ease-out both;
  transition:opacity .24s ease,transform .24s ease;
}
.kf-row.out{opacity:0;transform:translateX(18px);}
.kf-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:118px;}
.kf-name.ally{color:#72d8ff;text-shadow:0 0 8px rgba(60,185,255,.32);}
.kf-name.enemy{color:#ff7187;text-shadow:0 0 8px rgba(255,65,90,.30);}
.kf-name.player{color:#ffe16b;text-shadow:0 0 8px rgba(255,215,50,.35);}
.kf-icon{min-width:20px;text-align:center;color:#fff;font-size:12px;filter:drop-shadow(0 0 5px rgba(255,255,255,.22));}
@keyframes killFeedIn{from{opacity:0;transform:translateX(18px) scale(.96);}to{opacity:1;transform:none;}}
@media (max-width:900px){
  #kill-feed{right:10px;bottom:118px;width:min(300px,44vw);gap:4px;}
  .kf-row{font-size:9px;padding:4px 7px;}
  .kf-name{max-width:92px;}
}


/* v24 presentation art — protocol-neutral DOM/CSS.
   The same generated raster assets are active on uCoz/static HTTP(S) and direct
   file:// launches. HTTP(S) receives build-query cache busting; file:// uses plain
   relative file paths. Persistent Three.js/WebGL surfaces still never use these
   images, preserving the uCoz anti-black-quad invariant. */
.generated-art-enabled #loading{
  background:linear-gradient(180deg,rgba(0,6,15,.48),rgba(0,0,0,.76)),url('../../assets/ui/backgrounds/loading-bg-arena-01.jpg?v=bd19f48bd156b74e') center/cover no-repeat,radial-gradient(circle at 50% 35%,#0b2038 0,#03070d 55%,#000 100%);
}
.generated-art-enabled #menu{
  background:linear-gradient(180deg,rgba(1,5,12,.24),rgba(1,4,10,.70)),url('../../assets/ui/backgrounds/menu-bg-arena-01.jpg?v=bd19f48bd156b74e') center/cover no-repeat,radial-gradient(circle at 50% 30%,#12233d 0,#050912 48%,#000 100%);
}
.generated-art-enabled #hp-txt::before{background:url('../../assets/ui/health-icon-tech-01.png?v=bd19f48bd156b74e') center/contain no-repeat;}
.generated-art-enabled #armor-row::before{background:url('../../assets/ui/armor-icon-01.png?v=bd19f48bd156b74e') center/contain no-repeat;}
.generated-art-enabled #xp-wrap::before{background:url('../../assets/ui/xp-star-01.png?v=bd19f48bd156b74e') center/contain no-repeat;}
.generated-art-enabled #restartBtn::before{
  content:'';display:inline-block;width:24px;height:24px;margin-right:9px;vertical-align:-7px;border-radius:6px;
  background:url('../../assets/environment/hazard-panel-01.jpg?v=bd19f48bd156b74e') center/cover no-repeat,linear-gradient(135deg,#ff9b18,#2c1600);
  box-shadow:0 0 10px rgba(255,137,25,.32);pointer-events:none;
}
.generated-art-enabled #settings-title::before{
  content:'';display:inline-block;width:34px;height:34px;margin-right:10px;vertical-align:-10px;border-radius:8px;
  background:url('../../assets/environment/terminal-screen-01.jpg?v=bd19f48bd156b74e') center/cover no-repeat,linear-gradient(135deg,#063461,#05101b);
  box-shadow:0 0 12px rgba(40,190,255,.30);pointer-events:none;
}


/* v24.1 generated gameplay UI pack — uCoz HTTP(S) + local file:// presentation.
   These assets decorate DOM/CSS HUD surfaces; they never become WebGL texture quads. */
.generated-art-enabled #team-bar .tb-side{
  display:flex;align-items:center;justify-content:center;gap:5px;
}
.generated-art-enabled #tb-ally::before,
.generated-art-enabled #tb-enemy::before,
.generated-art-enabled #wammo::before,
.generated-art-enabled #reload-lbl::before,
.generated-art-enabled #menu .hints::after{
  content:'';display:inline-block;flex:0 0 auto;background-position:center;background-repeat:no-repeat;background-size:contain;
}
.generated-art-enabled #tb-ally::before{
  width:24px;height:24px;background-image:url('../../assets/ui/teams/blue-team-emblem-01.png?v=bd19f48bd156b74e');
  filter:drop-shadow(0 0 6px rgba(60,190,255,.42));
}
.generated-art-enabled #tb-enemy::before{
  width:24px;height:24px;background-image:url('../../assets/ui/teams/red-team-emblem-01.png?v=bd19f48bd156b74e');
  filter:drop-shadow(0 0 6px rgba(255,70,85,.40));
}
.generated-art-enabled #wammo::before{
  width:24px;height:24px;margin-right:5px;vertical-align:-6px;
  background-image:url('../../assets/ui/pickups/ammo-crate-tech-02.webp?v=bd19f48bd156b74e');
  filter:drop-shadow(0 0 6px rgba(70,205,255,.30));
}
.generated-art-enabled #reload-lbl::before{
  width:20px;height:20px;margin-right:4px;vertical-align:-6px;
  background-image:url('../../assets/ui/perks/reload-tech-01.png?v=bd19f48bd156b74e');
  filter:drop-shadow(0 0 6px rgba(255,190,45,.30));
}
.generated-art-enabled #frontline-art{
  display:inline-block;width:24px;height:24px;margin-right:1px;flex:0 0 auto;
  background:url('../../assets/ui/objective/frontline-capture-tech-01.webp?v=bd19f48bd156b74e') center/contain no-repeat;
  filter:drop-shadow(0 0 7px rgba(80,210,255,.38));
}
.generated-art-enabled #menu .hints::after{
  width:42px;height:42px;margin:7px auto 0;
  background-image:url('../../assets/ui/pickups/weapon-crate-tech-01.png?v=bd19f48bd156b74e');
  filter:drop-shadow(0 0 9px rgba(70,190,255,.24));
}

@media(max-width:760px){#fp-weapon-art-stage{width:min(58vw,var(--fp-width,48vw));max-width:560px;right:var(--fp-right,-1vw);bottom:var(--fp-bottom,-1vh);}}
#fp-weapon-art-wrap[data-weapon-key="pistol"] #fp-weapon-art-stage{width:var(--fp-width,48vw);max-width:980px;}


/* Generated tactical HUD asset pack: DOM/CSS atlases with existing procedural/SVG fallbacks. */
#hitmarker.generated{width:70px;height:70px;background-color:transparent;background-repeat:no-repeat;transform:translate(-50%,-50%) scale(.72);filter:drop-shadow(0 0 8px rgba(255,255,255,.24));}
#hitmarker.generated::before,#hitmarker.generated::after{display:none;}
#hitmarker.generated.on{animation:generatedHitMarkerPulse .22s ease-out forwards;}
@keyframes generatedHitMarkerPulse{0%{opacity:0;transform:translate(-50%,-50%) scale(.36)}24%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}100%{opacity:0;transform:translate(-50%,-50%) scale(.82)}}
.kf-icon.generated{width:28px;height:28px;min-width:28px;flex:0 0 28px;background-color:transparent;background-repeat:no-repeat;filter:drop-shadow(0 0 5px rgba(150,220,255,.30));}
.ally-role-art,.ally-doctrine-art{display:inline-block;width:30px;height:30px;flex:0 0 30px;background-color:transparent;background-repeat:no-repeat;filter:drop-shadow(0 0 5px rgba(70,205,255,.34));}
.ally-doctrine-art{width:34px;height:34px;flex-basis:34px;filter:drop-shadow(0 0 6px rgba(255,202,70,.34));}
#ally-panel .ally-order{width:100%;}
.pcard::after{content:'';position:absolute;inset:6px;z-index:0;pointer-events:none;border:1px solid #ffffff06;border-radius:11px;}
.pcard::before{z-index:2}.pcard>*{position:relative;z-index:1;min-width:0;}
#whud{overflow:visible;}
#whud::before{content:'';position:absolute;left:-116px;top:50%;width:104px;height:52px;transform:translateY(-50%) scale(.82);opacity:0;pointer-events:none;background-image:var(--ammo-warning-image,none);background-size:var(--ammo-warning-size,100% 100%);background-position:var(--ammo-warning-position,50% 50%);background-repeat:no-repeat;transition:opacity .12s,transform .12s;filter:drop-shadow(0 0 8px rgba(255,90,40,.35));}
#whud.ammo-low::before,#whud.ammo-empty::before{opacity:1;transform:translateY(-50%) scale(1);}
#reload-state-art{display:block;width:58px;height:58px;margin:0 auto 4px;background-color:transparent;background-repeat:no-repeat;filter:drop-shadow(0 0 8px rgba(255,185,45,.32));}
#frontline-objective>*{position:relative;z-index:1;}
#frontline-objective.contested::after{content:'';position:absolute;z-index:0;inset:-14px -18px;pointer-events:none;background-image:var(--frontline-contested-image,none);background-size:var(--frontline-contested-size,100% 100%);background-position:var(--frontline-contested-position,50% 50%);background-repeat:no-repeat;opacity:.72;mix-blend-mode:screen;animation:frontlineContestedGeneratedPulse .72s ease-in-out infinite alternate;}
@keyframes frontlineContestedGeneratedPulse{from{opacity:.46;filter:brightness(.92)}to{opacity:.86;filter:brightness(1.16)}}
/* Pickup panel coordinates follow the 1000x320 frame artwork, including transparent margins. */
#pickup-toast{position:absolute;left:50%;top:14%;box-sizing:border-box;width:min(620px,90vw);height:auto;aspect-ratio:1000/320;container-type:inline-size;z-index:26;display:block;padding:0;transform:translate(-50%,-14px) scale(.96);opacity:0;pointer-events:none;background-image:var(--pickup-frame-image,none);background-size:var(--pickup-frame-size,100% 100%);background-position:var(--pickup-frame-position,50% 50%);background-repeat:no-repeat;transition:opacity .18s ease,transform .18s ease;filter:drop-shadow(0 12px 22px rgba(0,0,0,.46));}
#pickup-toast.on{opacity:1;transform:translate(-50%,0) scale(1);}
#pickup-toast-icon{position:absolute;left:5%;top:25%;width:18%;height:50%;object-fit:contain;filter:drop-shadow(0 0 10px rgba(65,210,255,.42));}
.pickup-toast-copy{position:absolute;inset:0;min-width:0;text-align:center;overflow:hidden;}
#pickup-toast-title{position:absolute;left:28.5%;right:9%;top:44.5%;transform:translateY(-50%);box-sizing:border-box;margin:0;padding:0;font-size:clamp(10px,2.4cqw,15px);font-weight:1000;line-height:1.15;letter-spacing:1.1px;color:#8cecff;text-shadow:0 0 10px rgba(55,200,255,.42);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#pickup-toast-detail{position:absolute;left:29%;right:17%;top:68.5%;transform:translateY(-50%);box-sizing:border-box;margin:0;padding:0;font-size:clamp(8px,1.85cqw,11.5px);font-weight:800;line-height:1.15;letter-spacing:.10px;color:#d8e9f5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#pickup-toast[data-tone="gold"] #pickup-toast-title{color:#ffe16a;text-shadow:0 0 10px rgba(255,195,45,.50)}
#pickup-toast[data-tone="green"] #pickup-toast-title{color:#78ffb0;text-shadow:0 0 10px rgba(60,255,150,.42)}
#pickup-toast[data-tone="blue"] #pickup-toast-title{color:#83cfff;text-shadow:0 0 10px rgba(60,160,255,.44)}
@media(max-width:700px){#pickup-toast{top:18%;width:min(430px,92vw);}#whud::before{left:-94px;width:84px;height:42px;}}


/* Generated Asset Pack 8 — tactical readability and motion, DOM/canvas only. */
#projectile-trail-layer,#explosive-fuse-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden;contain:layout paint style;}
#projectile-trail-layer{z-index:9;}#explosive-fuse-layer{z-index:9;}
#xhair.generated-reticle::before{content:none;}
#xhair.generated-reticle .xh-arm{opacity:1;}
#weapon-switch-swipe{position:absolute;left:48%;top:49%;width:min(64vw,760px);height:min(18vw,150px);transform:translate(-50%,-50%);opacity:0;visibility:hidden;pointer-events:none;z-index:22;background-repeat:no-repeat;background-size:700% 100%;background-position:0 50%;mix-blend-mode:screen;filter:drop-shadow(0 0 18px rgba(72,206,255,.32));}
#weapon-switch-swipe.on{visibility:visible;animation:pack8WeaponSwipe .34s steps(6,end) both;}
@keyframes pack8WeaponSwipe{0%{opacity:0;background-position:0 50%;transform:translate(-55%,-50%) scale(.92)}12%{opacity:.78}88%{opacity:.55}100%{opacity:0;background-position:100% 50%;transform:translate(-43%,-50%) scale(1.04)}}
#respawn-countdown{position:absolute;right:5.5%;bottom:8%;width:112px;height:112px;opacity:0;visibility:hidden;background-image:none!important;background-repeat:no-repeat;display:flex;align-items:center;justify-content:center;color:#dffaff;font:900 22px/1 Consolas,monospace;text-shadow:0 2px 3px #00101c;filter:none;}
#respawn-countdown.on{opacity:.90;visibility:visible;}
.rocket-flight-vfx{position:absolute;visibility:hidden;width:var(--rocket-flight-size,150px);height:var(--rocket-flight-size,150px);transform-origin:7% 50%;transform:translate(-7%,-50%) rotate(var(--rocket-flight-rot,0deg));opacity:var(--rocket-flight-opacity,.94);pointer-events:none;background-repeat:no-repeat;mix-blend-mode:screen;filter:drop-shadow(0 0 8px rgba(255,126,28,.66)) drop-shadow(0 0 3px rgba(125,220,255,.42));will-change:left,top,width,height,transform,opacity,background-position;}
.rocket-flight-vfx.ally{filter:drop-shadow(0 0 8px rgba(255,142,36,.64)) drop-shadow(0 0 5px rgba(88,205,255,.52));}
.rocket-flight-vfx.enemy{filter:drop-shadow(0 0 9px rgba(255,82,28,.72)) drop-shadow(0 0 4px rgba(255,176,70,.38));}
.plasma-flight-vfx{position:absolute;visibility:hidden;width:var(--plasma-flight-size,112px);height:var(--plasma-flight-size,112px);transform-origin:76% 50%;transform:translate(-76%,-50%) rotate(var(--plasma-flight-rot,0deg));opacity:var(--plasma-flight-opacity,.94);pointer-events:none;background-repeat:no-repeat;mix-blend-mode:screen;filter:drop-shadow(0 0 8px rgba(45,216,255,.72)) drop-shadow(0 0 5px rgba(125,74,255,.40));will-change:left,top,width,height,transform,opacity,background-position;}
.plasma-flight-vfx.ally{filter:drop-shadow(0 0 9px rgba(52,222,255,.76)) drop-shadow(0 0 5px rgba(105,104,255,.42));}
.plasma-flight-vfx.enemy{filter:drop-shadow(0 0 9px rgba(75,188,255,.72)) drop-shadow(0 0 6px rgba(176,70,255,.48));}
.explosive-fuse-art{position:absolute;width:54px;height:54px;visibility:hidden;transform:translate(-50%,-50%) scale(var(--fuse-scale,1));transform-origin:50% 50%;background-repeat:no-repeat;mix-blend-mode:screen;filter:drop-shadow(0 0 8px rgba(255,150,50,.28));animation:pack8FusePulse .75s ease-in-out infinite alternate;}
@keyframes pack8FusePulse{from{opacity:.76}to{opacity:1}}
.bot-overhead-health{position:fixed;width:82px;height:44px;pointer-events:none;z-index:5;display:none!important;background:rgba(0,12,24,.42);border:1px solid rgba(90,205,255,.20);border-radius:8px;background-repeat:no-repeat;filter:drop-shadow(0 0 7px rgba(50,185,255,.24));}
.bot-overhead-health[data-team="enemy"]{border-color:rgba(255,70,90,.22);filter:drop-shadow(0 0 7px rgba(255,55,85,.26));}
.bot-overhead-fill{position:absolute;left:17px;top:21px;height:4px;width:48px;border-radius:3px;box-shadow:0 0 5px currentColor;}
#combo.generated-meter{width:260px;height:70px;padding:0 20px;display:flex;align-items:center;justify-content:center;text-shadow:0 2px 4px #000;isolation:isolate;}
#combo.generated-meter::before{content:'';position:absolute;inset:0;z-index:-1;background-image:var(--combo-meter-image,none);background-size:var(--combo-meter-size,100% 100%);background-position:var(--combo-meter-position,50% 50%);background-repeat:no-repeat;filter:drop-shadow(0 0 10px rgba(80,210,255,.38));}
.world-pickup-beacon-art{display:none!important;visibility:hidden!important;}
@media(max-width:700px){#respawn-countdown{width:82px;height:82px;right:4%;bottom:7%;font-size:18px}.bot-overhead-health{transform:scale(.86);transform-origin:50% 50%;}}


/* Generated Asset Pack 9 — vector tactical presentation; gameplay state remains authoritative. */
#perk-build{position:relative;min-height:30px;padding-left:38px;display:flex;align-items:center;}
#perk-build.generated-path::before{content:'';position:absolute;left:4px;top:50%;width:30px;height:30px;transform:translateY(-50%);background-image:var(--perk-path-image,none);background-size:var(--perk-path-size,100% 100%);background-position:var(--perk-path-position,50% 50%);background-repeat:no-repeat;filter:drop-shadow(0 0 7px rgba(98,219,255,.34));}
#mine-cnt{display:flex;align-items:center;justify-content:center;gap:4px;flex-wrap:wrap;}
.equipment-ready-art{display:inline-block;width:30px;height:23px;flex:0 0 30px;background-repeat:no-repeat;filter:drop-shadow(0 0 6px rgba(90,220,255,.28));}
.equipment-sep{opacity:.38;margin:0 2px;}
#frontline-track{overflow:visible;position:relative;}
#frontline-track::after{content:'';position:absolute;inset:-11px -15px;pointer-events:none;background-image:var(--frontline-progress-image,none);background-size:var(--frontline-progress-size,100% 100%);background-position:var(--frontline-progress-position,50% 50%);background-repeat:no-repeat;opacity:.68;filter:drop-shadow(0 0 8px rgba(70,205,255,.22));}
.ally-callout-art{display:inline-block;width:22px;height:22px;flex:0 0 22px;background-repeat:no-repeat;filter:drop-shadow(0 0 5px rgba(94,220,255,.30));}
#pause{isolation:isolate;}
#pause .pause-actions{position:relative;isolation:isolate;box-sizing:border-box;width:min(560px,94vw);padding:32px 40px 40px;gap:8px;flex-shrink:0;}
#pause .pause-actions::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background-image:var(--pause-panel-image,none);background-size:100% 100%;background-position:center;background-repeat:no-repeat;opacity:.82;filter:drop-shadow(0 20px 35px rgba(0,0,0,.48));}
#pause .pause-actions>*{position:relative;z-index:1;}
#pause .pause-actions>.btn{max-width:100%;margin:0;flex-shrink:0;}
#pause{overflow-y:auto;padding:24px 0;}
@media(max-height:560px){#pause{justify-content:flex-start;}#pause>*{flex-shrink:0;}}
#mobile-buttons .mbtn.generated-mobile-icon{font-size:0;background-color:rgba(4,18,29,.74);background-repeat:no-repeat;border-color:rgba(85,217,255,.52);box-shadow:0 0 13px rgba(55,190,255,.18);}
#mobile-buttons .mbtn.generated-mobile-icon.fire{border-color:rgba(255,151,72,.62);box-shadow:0 0 14px rgba(255,104,42,.20);}
@media(max-width:700px){.equipment-ready-art{width:24px;height:19px;flex-basis:24px}.ally-callout-art{width:18px;height:18px;flex-basis:18px}#pause .pause-actions{width:94vw;padding:28px 24px 34px}}


/* Generated Asset Pack 10 — bounded DOM-only one-shot combat VFX mega-atlas. */
.generated-combat-vfx-layer{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden;contain:layout paint style;}
.generated-combat-vfx{position:absolute;left:50%;top:50%;display:block;pointer-events:none;background-repeat:no-repeat;transform:translate(-50%,-50%) rotate(var(--vfx-rot,0deg)) scale(var(--vfx-scale,1));transform-origin:50% 50%;will-change:left,top,transform,opacity,background-position;image-rendering:auto;mix-blend-mode:screen;filter:drop-shadow(0 0 7px rgba(255,184,82,.28));}
.generated-combat-vfx[data-kind="brassCasing"],.generated-combat-vfx[data-kind="shotgunShell"],.generated-combat-vfx[data-kind="magazineDrop"]{mix-blend-mode:normal;filter:drop-shadow(0 5px 5px rgba(0,0,0,.62));}
.generated-combat-vfx[data-kind="rocketExplosion"]{filter:drop-shadow(0 0 13px rgba(255,112,24,.55));}
.generated-combat-vfx[data-kind="plasmaImpact"],.generated-combat-vfx[data-kind="plasmaReload"]{filter:drop-shadow(0 0 12px rgba(91,236,255,.48)) drop-shadow(0 0 18px rgba(165,75,255,.25));}
@media(max-width:760px){.generated-combat-vfx{max-width:150px;max-height:150px}.generated-combat-vfx[data-kind="plasmaReload"]{max-width:230px;max-height:130px}}

/* Generated Asset Pack 15 — frag detonation + death transition. */
.generated-combat-vfx[data-kind="fragGrenade"]{filter:drop-shadow(0 0 13px rgba(255,132,38,.62)) drop-shadow(0 0 19px rgba(255,218,92,.20));}
#player-death-vfx{position:fixed;inset:0;z-index:601;display:block;visibility:hidden;opacity:0;pointer-events:none;background-repeat:no-repeat;background-position:0 0;background-size:800% 100%;mix-blend-mode:screen;will-change:opacity,background-position;}
#player-death-vfx.on{visibility:visible;}
@media(max-width:760px){.generated-combat-vfx[data-kind="fragGrenade"]{max-width:210px;max-height:210px}}

/* Generated Asset Pack 18 — shotgun shell insert only. */
.generated-combat-vfx[data-kind="shotgunShellInsert"]{mix-blend-mode:normal;filter:drop-shadow(0 4px 5px rgba(0,0,0,.58)) drop-shadow(0 0 9px rgba(255,163,55,.30));}
@media(max-width:760px){.generated-combat-vfx[data-kind="shotgunShellInsert"]{max-width:104px;max-height:104px}}


/* Generated Asset Pack 20 — player frag grenade and bomb arming. */
.generated-combat-vfx[data-kind="grenadeThrow"]{mix-blend-mode:normal;filter:drop-shadow(0 12px 11px rgba(0,0,0,.55)) drop-shadow(0 0 10px rgba(255,139,48,.20));}
@media(max-width:760px){.generated-combat-vfx[data-kind="grenadeThrow"]{max-width:340px;max-height:340px}}

/* Generated Asset Pack 21 — selected grenade sheet #2: flight, fuse, blast, debris, smoke and scorch. */
.generated-combat-vfx[data-kind="grenadeFlight"]{filter:drop-shadow(0 0 7px rgba(255,161,62,.30));opacity:.78;}
.generated-combat-vfx[data-kind="grenadeFuse"]{filter:drop-shadow(0 0 9px rgba(255,65,26,.68)) drop-shadow(0 0 14px rgba(255,177,56,.28));}
.generated-combat-vfx[data-kind="grenadeExplosion21"]{filter:drop-shadow(0 0 16px rgba(255,104,20,.66)) drop-shadow(0 0 24px rgba(255,203,88,.25));}
.generated-combat-vfx[data-kind="grenadeDebris21"]{filter:drop-shadow(0 3px 4px rgba(0,0,0,.54)) drop-shadow(0 0 8px rgba(255,127,32,.20));}
.generated-combat-vfx[data-kind="grenadeSmoke21"]{mix-blend-mode:normal;filter:drop-shadow(0 7px 8px rgba(0,0,0,.24));}
.generated-combat-vfx[data-kind="grenadeScorch21"]{mix-blend-mode:multiply;filter:none;}
@media(max-width:760px){.generated-combat-vfx[data-kind="grenadeFlight"]{max-width:100px;max-height:100px}.generated-combat-vfx[data-kind="grenadeFuse"]{max-width:112px;max-height:112px}.generated-combat-vfx[data-kind="grenadeExplosion21"],.generated-combat-vfx[data-kind="grenadeSmoke21"],.generated-combat-vfx[data-kind="grenadeDebris21"]{max-width:225px;max-height:225px}.generated-combat-vfx[data-kind="grenadeScorch21"]{max-width:150px;max-height:150px}}

/* Generated Asset Pack 23 — SR-9 muzzle smoke, projectile/supersonic presentation and casing fallback. */
.generated-combat-vfx[data-kind="sniperMuzzle23"]{mix-blend-mode:screen;filter:drop-shadow(0 0 12px rgba(255,214,118,.72)) drop-shadow(0 0 24px rgba(255,103,28,.34));}
.generated-combat-vfx[data-kind="sniperSmoke23"]{mix-blend-mode:normal;filter:drop-shadow(0 6px 8px rgba(0,0,0,.26));opacity:.88;}
.generated-combat-vfx[data-kind="sniperBullet23"]{mix-blend-mode:screen;filter:drop-shadow(0 0 7px rgba(222,246,255,.52));}
.generated-combat-vfx[data-kind="sniperSupersonic23"]{mix-blend-mode:screen;filter:drop-shadow(0 0 9px rgba(205,239,255,.58)) drop-shadow(0 0 18px rgba(109,179,255,.20));}
.generated-combat-vfx[data-kind="sniperCasing23"]{mix-blend-mode:normal;filter:drop-shadow(0 7px 6px rgba(0,0,0,.52)) drop-shadow(0 0 5px rgba(255,180,72,.20));}
@media(max-width:760px){.generated-combat-vfx[data-kind="sniperMuzzle23"]{max-width:280px;max-height:280px}.generated-combat-vfx[data-kind="sniperSmoke23"]{max-width:230px;max-height:230px}.generated-combat-vfx[data-kind="sniperBullet23"],.generated-combat-vfx[data-kind="sniperSupersonic23"]{max-width:380px;max-height:380px}.generated-combat-vfx[data-kind="sniperCasing23"]{max-width:145px;max-height:145px}}

/* Generated Asset Pack 26 — ballistic/energy discharge and heavy explosion diversity. */
.generated-combat-vfx[data-kind="ballisticDischarge26"]{filter:drop-shadow(0 0 11px rgba(255,174,70,.58)) drop-shadow(0 0 18px rgba(255,95,24,.24));}
.generated-combat-vfx[data-kind="energyDischarge26"]{filter:drop-shadow(0 0 12px rgba(74,223,255,.62)) drop-shadow(0 0 22px rgba(46,111,255,.34));}
@media(max-width:760px){.generated-combat-vfx[data-kind="ballisticDischarge26"],.generated-combat-vfx[data-kind="energyDischarge26"]{max-width:185px;max-height:140px}}

/* Generated Asset Pack 27 — retired terminal compatibility art only. */
.generated-combat-vfx[data-kind="terminalArc27"]{mix-blend-mode:screen;filter:drop-shadow(0 0 11px rgba(76,225,255,.68)) drop-shadow(0 0 18px rgba(255,128,38,.28));}
@media(max-width:760px){.generated-combat-vfx[data-kind="terminalArc27"]{max-width:150px;max-height:200px}}

/* Generated Asset Pack 29 — high-fidelity material-aware surface impacts. */
.generated-combat-vfx[data-kind="concreteImpact29"],.generated-combat-vfx[data-kind="metalImpact29"],.generated-combat-vfx[data-kind="techImpact29"],.generated-combat-vfx[data-kind="heavyImpact29"]{mix-blend-mode:normal;}
.generated-combat-vfx[data-kind="concreteImpact29"]{filter:drop-shadow(0 5px 7px rgba(0,0,0,.36)) drop-shadow(0 0 8px rgba(255,151,52,.18));}
.generated-combat-vfx[data-kind="metalImpact29"]{filter:drop-shadow(0 3px 5px rgba(0,0,0,.42)) drop-shadow(0 0 11px rgba(255,174,64,.46));}
.generated-combat-vfx[data-kind="techImpact29"]{filter:drop-shadow(0 4px 6px rgba(0,0,0,.34)) drop-shadow(0 0 12px rgba(74,225,255,.60)) drop-shadow(0 0 17px rgba(255,148,48,.20));}
.generated-combat-vfx[data-kind="heavyImpact29"]{filter:drop-shadow(0 7px 9px rgba(0,0,0,.42)) drop-shadow(0 0 12px rgba(255,134,37,.30));}
@media(max-width:760px){.generated-combat-vfx[data-kind="concreteImpact29"],.generated-combat-vfx[data-kind="metalImpact29"]{max-width:125px;max-height:125px}.generated-combat-vfx[data-kind="techImpact29"]{max-width:132px;max-height:132px}.generated-combat-vfx[data-kind="heavyImpact29"]{max-width:142px;max-height:142px}}

/* Pack34 — persistent readable frag body, projected from actual physics. */
.grenade-flight-art{position:absolute;visibility:hidden;pointer-events:none;background-repeat:no-repeat;transform-origin:50% 50%;mix-blend-mode:normal;filter:drop-shadow(0 1px 2px rgba(0,0,0,.72)) drop-shadow(0 0 3px rgba(92,211,255,.48));will-change:left,top,transform,background-position;}
.grenade-flight-art.enemy{filter:drop-shadow(0 1px 2px rgba(0,0,0,.72)) drop-shadow(0 0 3px rgba(255,152,57,.48));}
.grenade-flight-art.armed{filter:drop-shadow(0 1px 2px rgba(0,0,0,.72)) drop-shadow(0 0 5px rgba(255,156,48,.72));}

/* Pack34 grenade detonation: world-anchored fire/smoke/shards, no screen art. */
.generated-combat-vfx[data-kind="grenadeExplosion34"],.generated-combat-vfx[data-kind="grenadeSmoke34"],.generated-combat-vfx[data-kind="grenadeDebris34"],.generated-combat-vfx[data-kind="grenadeScorch34"]{max-width:none;max-height:none;}
.generated-combat-vfx[data-kind="grenadeExplosion34"]{filter:drop-shadow(0 0 7px rgba(255,131,38,.38));}
.generated-combat-vfx[data-kind="grenadeSmoke34"],.generated-combat-vfx[data-kind="grenadeDebris34"]{mix-blend-mode:normal;filter:none;}
.generated-combat-vfx[data-kind="grenadeScorch34"]{mix-blend-mode:normal;filter:none;}

.generated-combat-vfx[data-kind="grenadeScorch34"],.generated-combat-vfx[data-kind="grenadeScorch21"]{mix-blend-mode:normal;filter:none;transform-origin:0 0;}

#grenade-charge{margin:7px 0 3px;color:#ffc968;font-size:9px;font-weight:700;letter-spacing:.5px;}
#grenade-charge[hidden]{display:none;}
.grenade-charge-track{height:5px;margin-top:4px;border:1px solid #9c7935;background:#121b24;border-radius:3px;overflow:hidden;}
.grenade-charge-fill{height:100%;width:0;background:linear-gradient(90deg,#65d9ee,#ffd06a);}

#fp-weapon-action.grenade-throw-viewport{inset:auto;right:-1vw;bottom:-2vh;width:102vw;height:57.375vw;transform:none;filter:none;}

/* Upgrade selection: content defines height; no text is painted over a raster frame. */
.pcard:focus-visible{outline:3px solid #ffe080;outline-offset:4px;}
.pcard-key{display:inline-grid;place-items:center;width:24px;height:24px;border:1px solid #53647a;border-radius:5px;background:#080f1b;color:#e3edfa;font:700 12px inherit;}
.pcard-path{flex:1;text-align:left;}.pcard-rank{white-space:nowrap;}
#perk-actions{margin-top:26px;}
#perk-reroll{min-height:44px;padding:12px 24px;background:linear-gradient(120deg,#234364,#31466e);border:1px solid #597aa4;box-shadow:0 5px 18px #0004;border-radius:10px;font-size:13px;}
#perk-reroll:focus-visible{outline:3px solid #ffe080;outline-offset:3px;}
@media(max-width:1099px){#perk-cards{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:740px){#perk-menu{padding:12px;}#perk-box{padding:22px 16px;max-height:calc(100dvh - 24px);border-radius:18px;}#perk-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}.pcard{padding:20px 16px 16px;}#perk-title{letter-spacing:1px;}}
@media(max-width:440px){#perk-cards{grid-template-columns:1fr;}.pcard{min-height:320px;grid-template-rows:88px 22px minmax(42px,auto) minmax(48px,1fr) minmax(40px,auto);}.pcard-nm{font-size:17px;}}
@media(prefers-reduced-motion:reduce){.pcard,.pcard-ic{transition:none;}.pcard:hover{transform:none;}}

@media(min-width:441px) and (max-width:1279px){.pcard-nm{font-size:14px;overflow-wrap:normal;hyphens:auto;}}

/* Pack35 missile alpha carries its opaque silver/black body; screen blend erases it. */
#fp-rocket-muzzle-anchor{position:absolute;left:var(--fp-muzzle-x,31.5%);top:var(--fp-muzzle-y,36%);width:0;height:0;pointer-events:none;}
#fp-weapon-art-wrap[data-weapon-key="rocket"] #fp-weapon-art-stage{width:var(--fp-width,55vw);max-width:980px;}
.rocket-flight-vfx.pack35{mix-blend-mode:screen;transform-origin:7% 50%;clip-path:inset(0 0 0 53%);transform:translate(-7%,-50%) rotate(var(--rocket-flight-rot,0deg)) scaleX(var(--rocket-flight-side,1));}
.generated-combat-vfx[data-kind="rocketExplosion35"],.generated-combat-vfx[data-kind="rocketResidual35"]{z-index:2;}
.generated-combat-vfx[data-kind="rocketWall35"],.generated-combat-vfx[data-kind="rocketScorch35"]{z-index:1;}
.generated-combat-vfx[data-kind="rocketMuzzle35"]{mix-blend-mode:screen;transform-origin:25% 50%;transform:translate(-25%,-50%) rotate(var(--vfx-rot,0deg)) scale(var(--vfx-scale,1));}
.generated-combat-vfx[data-kind="rocketExplosion35"],.generated-combat-vfx[data-kind="rocketResidual35"]{mix-blend-mode:normal;}
.generated-combat-vfx[data-kind="rocketScorch35"],.generated-combat-vfx[data-kind="rocketWall35"]{mix-blend-mode:normal;filter:none;}

/* Pack36: the same centered mark in hip-fire and ADS, with one owner. */
#xhair.rifle-reticle .xh-arm,#xhair.rifle-reticle .xh-dot{display:none!important;}
#xhair.rifle-reticle::after{content:'';position:absolute;left:50%;top:50%;width:72px;height:72px;transform:translate(-50%,-50%);background:url('../../assets/ui/scopes/rifle-reticle-36.svg') center/contain no-repeat;}
#fp-shotgun-muzzle-anchor{position:absolute;left:var(--fp-muzzle-x,25%);top:var(--fp-muzzle-y,35%);width:0;height:0;pointer-events:none;}
#fp-rifle-muzzle-anchor{position:absolute;left:var(--fp-muzzle-x,20.3%);top:var(--fp-muzzle-y,22.5%);width:0;height:0;pointer-events:none;}
#fp-pistol-muzzle-anchor{position:absolute;left:var(--fp-muzzle-x,30%);top:var(--fp-muzzle-y,23%);width:0;height:0;pointer-events:none;}
#fp-pistol-ejection-anchor{position:absolute;left:var(--fp-eject-x,52%);top:var(--fp-eject-y,35%);width:0;height:0;pointer-events:none;}
.rifle-flight-vfx{position:absolute;display:block;background-repeat:no-repeat;pointer-events:none;opacity:.95;will-change:transform;}

#fp-shotgun-ejection-anchor{position:absolute;left:var(--fp-eject-x,56%);top:var(--fp-eject-y,38%);width:0;height:0;pointer-events:none;}
.generated-combat-vfx[data-kind="shotgunCasing37"]{mix-blend-mode:normal;filter:drop-shadow(0 2px 2px rgba(0,0,0,.26));}

/* Pack39 FPS16:9 composition uses44% viewport scale; bottom/right anchoring preserves continuous forearms. */
#fp-weapon-art-wrap[data-mine-pack="39"] #fp-weapon-art-stage,
#fp-weapon-action.mine-action-viewport{right:0;bottom:0;width:max(44vw,78.222222vh);height:max(44vh,24.75vw);max-width:none;transform:none;filter:none;}
#fp-weapon-art-wrap[data-mine-pack="39"] #fp-weapon-art-stage #fp-weapon-art{width:100%;height:100%;object-fit:fill;transition:none;}
#fp-weapon-action.mine-action-viewport{inset:auto;right:0;bottom:0;}
.mine-world-art{position:absolute;pointer-events:none;background-repeat:no-repeat;transform:translate(-50%,-50%);mix-blend-mode:normal;}
.generated-combat-vfx[data-kind^="mine"][data-kind$="39"]{mix-blend-mode:normal;filter:none;}

/* Bomb Pack41: ready and action are full viewport images with continuous arms.
 * Bottom exits remain outside the screen in every pose and both aspect ratios. */
#fp-weapon-art-wrap[data-bomb-pack="41"] #fp-weapon-art-stage,
#fp-weapon-action.bomb-action-viewport{inset:auto;right:-1vw;bottom:-2vh;width:min(102vw,181.333333vh);height:min(57.375vw,102vh);max-width:none;transform:none;filter:none;}
#fp-weapon-art-wrap[data-bomb-pack="41"] #fp-weapon-art-stage #fp-weapon-art{width:100%;height:100%;object-fit:fill;transition:none;}
.generated-combat-vfx[data-kind^="bomb"]{mix-blend-mode:normal;filter:none;max-width:none;max-height:none;}

.bomb-world-top-art{position:absolute;width:512px;height:512px;background-size:100% 100%;background-repeat:no-repeat;pointer-events:none;transform-origin:0 0;}

/* Pack42: complete FPS viewport, one decoded hand layer; cloud art below inside smoke/HUD. */
#fp-weapon-art-wrap[data-smoke-pack="42"] #fp-weapon-art-stage,
#fp-weapon-action.smoke-action-viewport{inset:auto;right:-1vw;bottom:-2vh;width:min(70vw,124.444444vh);height:min(39.375vw,70vh);max-width:none;transform:none;filter:none;}
#fp-weapon-art-wrap[data-smoke-pack="42"] #fp-weapon-art-stage #fp-weapon-art{width:100%;height:100%;object-fit:fill;transition:none;}
#smoke-world-layer-42{position:fixed;inset:0;z-index:8;overflow:hidden;pointer-events:none;contain:layout paint style;}
.smoke-world-art-42{position:absolute;visibility:hidden;pointer-events:none;background-repeat:no-repeat;mix-blend-mode:normal;transform-origin:center;}


/* HUD Pack43: nine-slice metal shells. Live text/canvas remain the content owners.
   The 56px source slice maps to an 8–12px rim, preserving corners at any aspect.
   No filters/animations on full panels, no raster WebGL textures. */
.generated-art-enabled :is(#xp-wrap,#team-bar .tb-side,#frontline-map,#stats-panel,#hp-wrap,#whud,#hud .hb,#ally-panel .ally-icon,#frontline-objective){
  border-style:solid;border-color:rgba(72,144,174,.20);border-width:10px;border-radius:3px;
  border-image-slice:56;border-image-width:10px;border-image-repeat:stretch;
  background:linear-gradient(135deg,rgba(11,27,39,.95),rgba(3,10,17,.93));
  box-shadow:0 5px 16px rgba(0,0,0,.32);text-shadow:0 1px 2px #000;
}
.generated-art-enabled #xp-wrap{border-image-source:var(--hud-xp-shell);width:254px;padding:2px 6px 5px;top:14px;left:18px;}
.generated-art-enabled #xp-wrap::before{left:3px;top:5px;transform:none;width:22px;height:22px;}
.generated-art-enabled #xp-lbl{display:block;border:0;border-radius:0;background:none;box-shadow:none;padding:3px 0 3px 26px;margin:0 0 3px;font-size:10px;letter-spacing:.5px;white-space:normal;overflow-wrap:anywhere;line-height:1.4;}
.generated-art-enabled #xp-bar{width:100%;height:5px;border:0;background:#152b3b;border-radius:1px;box-shadow:none;}
.generated-art-enabled #xp-fill{border-radius:1px;}
.generated-art-enabled #team-bar{top:8px;gap:9px;z-index:13;}
.generated-art-enabled #team-bar .tb-side{min-width:145px;padding:0 5px;border-width:8px;border-image-width:8px;font-size:14px;letter-spacing:.6px;}
.generated-art-enabled #tb-ally{border-image-source:var(--hud-teamBlue-shell);}
.generated-art-enabled #tb-enemy{border-image-source:var(--hud-teamRed-shell);background:linear-gradient(135deg,rgba(39,16,25,.95),rgba(13,6,13,.93));}
.generated-art-enabled #team-bar .tb-vs{font:700 9px/1.2 Consolas,monospace;letter-spacing:1px;color:#a1b2c0;}
.generated-art-enabled #weapon-bar{top:58px;gap:5px;width:max-content;}
.generated-art-enabled #weapon-bar .wb-slot{border:6px solid rgba(63,126,151,.18);border-image:var(--hud-squad-shell) 56 / 6px stretch;padding:2px 5px 4px;border-radius:2px;background:linear-gradient(140deg,rgba(10,24,36,.94),rgba(2,8,14,.90));box-shadow:none;}
.generated-art-enabled #weapon-bar .wb-slot.active{border-image-source:var(--hud-ammo-shell);background:linear-gradient(140deg,rgba(55,36,10,.94),rgba(12,13,15,.92));box-shadow:0 0 13px rgba(255,191,69,.15);}
.generated-art-enabled #weapon-bar .wb-slot.locked{border-image-source:var(--hud-squad-shell);}
.generated-art-enabled #frontline-map{border-image-source:var(--hud-map-shell);width:254px;padding:4px 6px 6px;}
.generated-art-enabled #frontline-map-head{padding-bottom:7px;font-size:7px;letter-spacing:.8px;}
.generated-art-enabled #frontline-map-legend{margin:6px 0;font-size:6px;}
.generated-art-enabled #frontline-objective{border-image-source:var(--hud-order-shell);border-width:8px;border-image-width:8px;padding:3px 2px 5px;top:auto;transform:none;}
.generated-art-enabled #frontline-objective.inside{border-image-source:var(--hud-health-shell);}
.generated-art-enabled #frontline-objective.enemy{border-image-source:var(--hud-teamRed-shell);}
.generated-art-enabled #frontline-objective.ally{border-image-source:var(--hud-teamBlue-shell);}
.generated-art-enabled #stats-panel{border-image-source:var(--hud-stats-shell);top:150px;right:18px;width:190px;min-width:0;max-width:none;padding:4px 7px 7px;font-size:11px;line-height:1.8;}
.generated-art-enabled #stats-panel .sh{letter-spacing:1.2px;font-size:8px;border-bottom:1px solid rgba(115,221,240,.18);padding-bottom:4px;margin-bottom:6px;}
.generated-art-enabled #stats-panel .sv{font-family:Consolas,monospace;font-variant-numeric:tabular-nums;}
.generated-art-enabled #hp-wrap{border-image-source:var(--hud-health-shell);width:284px;padding:3px 10px 7px;bottom:100px;}
.generated-art-enabled #hp-txt{font-size:11px;margin-bottom:5px;letter-spacing:1.4px;}
.generated-art-enabled #hp-bar{width:100%;height:9px;border-radius:2px;border:1px solid rgba(107,242,189,.18);}
.generated-art-enabled #hp-fill{border-radius:1px;}
.generated-art-enabled #armor-bar{width:100%;border-radius:1px;height:4px;}
.generated-art-enabled #armor-row::before{left:-19px;width:15px;height:15px;}
.generated-art-enabled #hud{gap:8px;bottom:18px;}
.generated-art-enabled #hud .hb{border-image-source:var(--hud-score-shell);width:86px;min-width:0;padding:3px 5px 4px;}
.generated-art-enabled #hud .hl{font-size:8px;letter-spacing:1.1px;color:#f2cb80;}
.generated-art-enabled #hud .hv{font:900 24px/1.1 Consolas,monospace;font-variant-numeric:tabular-nums;}
.generated-art-enabled #whud{border-image-source:var(--hud-ammo-shell);width:218px;min-width:0;max-width:30vw;padding:4px 7px 6px;text-align:left;}
.generated-art-enabled #wname{font-size:9px;letter-spacing:.8px;line-height:1.4;overflow-wrap:anywhere;padding-bottom:4px;margin-bottom:5px;border-bottom:1px solid rgba(247,198,105,.22);color:#ffd287;}
.generated-art-enabled #wammo{font:900 26px/1.2 Consolas,monospace;color:#d3ffe9;}
.generated-art-enabled #wtot{font-size:9px;line-height:1.4;color:#acbbc6;overflow-wrap:anywhere;}
.generated-art-enabled #wmode,.generated-art-enabled #wstate{letter-spacing:.7px;line-height:1.35;}
.generated-art-enabled #left-tactical-stack{width:254px;bottom:62px;}
.generated-art-enabled #ally-panel{width:254px;max-width:254px;gap:4px;left:auto;bottom:auto;}
.generated-art-enabled #ally-panel .ally-icon{border-image-source:var(--hud-squad-shell);border-width:7px;border-image-width:7px;width:100%;padding:1px 4px;font-size:9px;line-height:1.45;box-shadow:none!important;background:linear-gradient(135deg,rgba(9,28,43,.94),rgba(3,12,23,.94))!important;}
.generated-art-enabled #ally-panel .ally-order{border-image-source:var(--hud-order-shell);background:linear-gradient(135deg,rgba(37,28,9,.94),rgba(14,16,20,.94))!important;}
.generated-art-enabled #ally-panel .ally-icon>span:last-child{min-width:0;overflow-wrap:anywhere;}
.generated-art-enabled #ally-panel .ally-role-art,.generated-art-enabled #ally-panel .ally-doctrine-art{width:24px;height:24px;flex-basis:24px;}
@media(max-width:1400px){
  .generated-art-enabled #weapon-bar{top:78px;max-width:calc(100vw - 32px);}
  .generated-art-enabled #stats-panel{top:168px;}
}
@media(max-width:1100px){
  .generated-art-enabled #xp-wrap{width:214px;left:12px;}
  .generated-art-enabled #team-bar .tb-side{min-width:125px;font-size:12px;}
  .generated-art-enabled #weapon-bar .wb-slot{min-width:0;padding:2px 3px 3px;}
  .generated-art-enabled #weapon-bar .wb-name{font-size:8px;}
  .generated-art-enabled #left-tactical-stack{left:12px;width:214px;bottom:62px;}
  .generated-art-enabled #frontline-map{width:214px;padding:3px 7px 5px;}
  .generated-art-enabled #frontline-minimap{width:176px;height:176px;}
  .generated-art-enabled #ally-panel{width:214px;max-width:214px;}
  .generated-art-enabled #ally-panel .ally-icon{font-size:8px;gap:3px;}
  .generated-art-enabled #stats-panel{width:168px;right:12px;font-size:10px;}
  .generated-art-enabled #whud{right:12px;width:196px;}
  .generated-art-enabled #hp-wrap{width:252px;}
}
@media(max-width:760px){
  .generated-art-enabled #xp-wrap{width:188px;top:8px;left:8px;border-width:8px;border-image-width:8px;}
  .generated-art-enabled #xp-lbl{font-size:9px;letter-spacing:.3px;}
  .generated-art-enabled #team-bar{left:auto;right:8px;transform:none;gap:4px;}
  .generated-art-enabled #team-bar .tb-side{min-width:94px;font-size:10px;padding:0 2px;border-width:6px;border-image-width:6px;}
  .generated-art-enabled #tb-ally::before,.generated-art-enabled #tb-enemy::before{width:18px;height:18px;}
  .generated-art-enabled #weapon-bar{top:65px;gap:3px;flex-wrap:wrap;}
  .generated-art-enabled #weapon-bar .wb-asset{width:34px;height:18px;}
  .generated-art-enabled #weapon-bar .wb-name{font-size:7px;}
  .generated-art-enabled #stats-panel{width:146px;top:172px;font-size:9px;line-height:1.5;}
  .generated-art-enabled #stats-panel .sh{font-size:7px;letter-spacing:.4px;}
  .generated-art-enabled #left-tactical-stack{width:182px;left:8px;bottom:12px;gap:3px;}
  .generated-art-enabled #frontline-map{width:182px;padding:3px;border-width:8px;border-image-width:8px;}
  .generated-art-enabled #frontline-minimap{width:158px;height:158px;}
  .generated-art-enabled #frontline-map-head{font-size:5.5px;letter-spacing:.3px;gap:3px;}
  .generated-art-enabled #frontline-map-hint{max-width:85px;}
  .generated-art-enabled #frontline-objective{width:100%;padding:2px;border-width:6px;border-image-width:6px;}
  .generated-art-enabled #frontline-title{font-size:7px;letter-spacing:.4px;gap:2px;}
  .generated-art-enabled #frontline-art{width:18px;height:18px;}
  .generated-art-enabled #frontline-state{font-size:6px;letter-spacing:.3px;}
  .generated-art-enabled #frontline-score{font-size:5.5px;}
  .generated-art-enabled #ally-panel{width:182px;max-width:182px;gap:2px;}
  .generated-art-enabled #ally-panel .ally-icon{font-size:7px;border-width:5px;border-image-width:5px;}
  .generated-art-enabled #ally-panel .ally-role-art,.generated-art-enabled #ally-panel .ally-doctrine-art{width:18px;height:18px;flex-basis:18px;}
  .generated-art-enabled #ally-panel .ally-callout-art{width:12px;height:12px;flex-basis:12px;}
  .generated-art-enabled #hp-wrap{width:204px;bottom:85px;border-width:8px;border-image-width:8px;padding:3px 6px 5px;}
  .generated-art-enabled #hp-txt{font-size:9px;letter-spacing:.5px;}
  .generated-art-enabled #hud .hb{width:68px;border-width:8px;border-image-width:8px;padding:2px;}
  .generated-art-enabled #hud .hv{font-size:20px;}
  .generated-art-enabled #whud{width:160px;max-width:28vw;border-width:8px;border-image-width:8px;padding:3px;}
  .generated-art-enabled #wammo{font-size:20px;}
  .generated-art-enabled #wname,.generated-art-enabled #wtot{font-size:8px;}
}
@media(max-height:850px) and (min-width:761px){
  .generated-art-enabled #left-tactical-stack{bottom:14px;width:214px;}
  .generated-art-enabled #frontline-map{width:214px;padding:3px 7px 5px;}
  .generated-art-enabled #frontline-minimap{width:176px;height:176px;}
  .generated-art-enabled #ally-panel{width:214px;max-width:214px;}
  .generated-art-enabled #ally-panel .ally-icon{font-size:8px;border-width:5px;border-image-width:5px;}
  .generated-art-enabled #ally-panel .ally-role-art,.generated-art-enabled #ally-panel .ally-doctrine-art{width:20px;height:20px;flex-basis:20px;}
}
@media(max-height:600px){
  .generated-art-enabled #left-tactical-stack{left:8px;bottom:12px;width:164px;gap:3px;}
  .generated-art-enabled #frontline-map{width:164px;padding:3px;border-width:6px;border-image-width:6px;}
  .generated-art-enabled #frontline-minimap{width:96px;height:96px;}
  .generated-art-enabled #frontline-map-head{font-size:5px;letter-spacing:.15px;padding-bottom:3px;gap:2px;}
  .generated-art-enabled #frontline-map-hint{max-width:80px;}
  .generated-art-enabled #frontline-map-legend{font-size:5px;margin:3px 0;gap:5px;}
  .generated-art-enabled #frontline-objective{width:100%;padding:2px;border-width:5px;border-image-width:5px;}
  .generated-art-enabled #frontline-title{font-size:7px;letter-spacing:.3px;gap:2px;}
  .generated-art-enabled #frontline-art{width:14px;height:14px;}
  .generated-art-enabled #frontline-state{font-size:6px;letter-spacing:.1px;}
  .generated-art-enabled #frontline-score{font-size:5px;letter-spacing:.2px;}
  .generated-art-enabled #ally-panel{width:164px;max-width:164px;gap:2px;}
  .generated-art-enabled #ally-panel .ally-icon{font-size:7px;line-height:1.2;border-width:4px;border-image-width:4px;padding:1px 3px;gap:2px;}
  .generated-art-enabled #ally-panel .ally-role-art,.generated-art-enabled #ally-panel .ally-doctrine-art{width:16px;height:16px;flex-basis:16px;}
  .generated-art-enabled #ally-panel .ally-callout-art{width:12px;height:12px;flex-basis:12px;}
}
@media(max-height:600px) and (max-width:760px){
  .generated-art-enabled #weapon-bar{top:92px;}
  .generated-art-enabled #left-tactical-stack{bottom:8px;}
  .generated-art-enabled #frontline-minimap{width:80px;height:80px;}
  .generated-art-enabled #ally-panel .ally-icon{border-width:3px;border-image-width:3px;}
  .generated-art-enabled #ally-panel .ally-role-art,.generated-art-enabled #ally-panel .ally-doctrine-art{width:12px;height:12px;flex-basis:12px;}
}

/* Bullet surface dust/chips are neutral alpha art, with no additive halo. */
.generated-combat-vfx[data-kind="concreteImpact45"],.generated-combat-vfx[data-kind="metalImpact45"],.generated-combat-vfx[data-kind="woodImpact45"],.generated-combat-vfx[data-kind="heavyImpact45"]{mix-blend-mode:normal;filter:none;}

/* Detailed impact sparks/chips at every distance: no geometric/glowing halo. */
.generated-combat-vfx[data-kind="concreteImpact29"],.generated-combat-vfx[data-kind="metalImpact29"],.generated-combat-vfx[data-kind="heavyImpact29"]{mix-blend-mode:normal;filter:none;}
