:root{--bg:#0e1012;--panel:#111315db;--panel-solid:#16181b;--line:#2e2b27;--text:#e8e2d6;--muted:#8f897e;--accent:#e0732e;--accent-2:#f39a4a;--good:#5dff8a;--bad:#e5484d;--hp:#d8423a;--xp:#ffd54f;--head:"Oswald", Impact, "Arial Narrow", sans-serif;--body:"Inter", "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--body);-webkit-user-select:none;user-select:none;margin:0;font-size:14px;overflow:hidden}#app,.game-root{position:fixed;inset:0}.game-root canvas{cursor:crosshair;display:block}h1,h2,h3{font-family:var(--head);letter-spacing:.04em;margin:0 0 10px;font-weight:600}small{color:var(--muted);font-weight:400}.muted{color:var(--muted)}.panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border-radius:4px}.hidden{display:none!important}.btn{font-family:var(--head);letter-spacing:.05em;color:var(--text);border:1px solid #3a3733;border-left:3px solid var(--c,#3a3733);cursor:pointer;background:#25272a;border-radius:3px;padding:7px 14px;font-size:14px;transition:background .12s,transform 60ms}.btn:hover:not(:disabled){background:#303236}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#1a0f07}.btn.primary:hover:not(:disabled){background:var(--accent-2)}.btn.danger{border-color:var(--bad);background:#3a1d1e}.btn.small{padding:3px 9px;font-size:13px}.hud{pointer-events:none;position:absolute;inset:0}.bar{background:#0b0c0d;border:1px solid #333;border-radius:2px;height:20px;position:relative;overflow:hidden}.bar.thin{height:6px}.bar-fill{transition:width .12s linear;position:absolute;inset:0 auto 0 0}.bar-fill.hp{background:linear-gradient(90deg, #8f1f1a, var(--hp))}.bar-fill.xp{background:var(--xp)}.bar-fill.reload{background:var(--accent);transition:none}.bar-fill.stamina{background:#6fc3ff;transition:none}.bar-fill.stamina.exhausted{background:#7c8a96}.stamina-bar{margin-top:-3px}.wslots{gap:4px;margin-bottom:6px;display:flex}.wslot{font-family:var(--head);letter-spacing:.03em;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;border:1px solid #3a3733;border-radius:2px;flex:1;padding:2px 5px;font-size:11px;overflow:hidden}.wslot.active{color:var(--text);border-color:var(--accent);background:#e0732e26}.wslot.empty{opacity:.4}.bar-text{font-family:var(--head);text-shadow:0 1px 2px #000;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;inset:0}.hud-tl{flex-direction:column;gap:7px;width:280px;padding:12px;display:flex;position:absolute;top:16px;left:16px}.armor-line{color:#9fc3e6;font-size:12px}.armor-line.inactive{color:var(--muted)}.level-row{align-items:center;gap:8px;display:flex}.level-row .bar{flex:1}.level{font-family:var(--head);color:var(--xp);font-size:15px}.points-hint{font-family:var(--head);color:var(--xp);font-size:13px;animation:1s infinite alternate pulse}.points-hint:empty{display:none}@keyframes pulse{0%{opacity:.55}to{opacity:1}}.effects{flex-wrap:wrap;gap:4px;display:flex}.effects:empty{display:none}.chip{background:color-mix(in srgb, var(--c) 18%, #111);border:1px solid color-mix(in srgb, var(--c) 60%, #111);color:var(--c);border-radius:2px;padding:2px 6px;font-size:11px}.hud-top{text-align:center;text-shadow:0 2px 6px #000;position:absolute;top:14px;left:50%;transform:translate(-50%)}.wave-title{font-family:var(--head);letter-spacing:.08em;font-size:30px}.wave-sub{color:#cfc8bb;font-size:13px}.extract-bar{width:280px;margin-top:8px;display:none}.extract-bar.show{display:block}.extract-label{font-family:var(--head);color:var(--good);margin-bottom:3px;font-size:13px}.banner{text-align:center;opacity:0;text-shadow:0 3px 12px #000;transition:opacity .35s,transform .35s;position:absolute;top:26%;left:50%;transform:translate(-50%,-10px)}.banner.show{opacity:1;transform:translate(-50%)}.banner-main{font-family:var(--head);letter-spacing:.1em;color:#f0e6d6;font-size:56px;font-weight:700}.banner-sub{color:var(--accent-2);font-size:16px}.hud-bottom{align-items:flex-end;gap:14px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.hotbar{gap:6px;display:flex}.slot{background:var(--panel);border:1px solid var(--line);border-bottom:3px solid var(--c,#333);border-radius:3px;width:78px;height:64px;padding:18px 6px 4px;position:relative}.slot.empty{opacity:.5;border-bottom-color:#333}.slot-key{font-family:var(--head);color:var(--muted);font-size:12px;position:absolute;top:3px;left:6px}.slot-name{color:var(--c,var(--text));font-size:11px;line-height:1.15}.slot-count{font-family:var(--head);font-size:14px;position:absolute;bottom:3px;right:6px}.weapon{width:290px;padding:10px 12px}.weapon-name{font-family:var(--head);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:13px}.ammo{font-family:var(--head);font-size:30px;line-height:1.1}.ammo.low{color:var(--accent-2)}.melee-name{color:var(--muted);margin-top:6px;font-size:11px}.hud-bl{max-width:300px;position:absolute;bottom:16px;left:16px}.backpack-line{font-family:var(--head);font-size:18px}.backpack-line.full{color:var(--accent-2)}.keys{color:#77736b;margin-top:4px;font-size:11px;line-height:1.5}.prompt{font-family:var(--head);letter-spacing:.03em;opacity:0;background:#0009;border-radius:3px;padding:6px 14px;font-size:17px;transition:opacity .15s;position:absolute;bottom:110px;left:50%;transform:translate(-50%)}.prompt.show{opacity:1}.toasts{flex-direction:column;align-items:flex-end;gap:5px;display:flex;position:absolute;top:16px;right:16px}.toast{background:var(--panel);border-left:3px solid;border-radius:2px;padding:6px 12px;font-size:13px;transition:opacity .5s;animation:.2s ease-out toast-in}.toast.fade{opacity:0}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}}.vignette{opacity:0;background:radial-gradient(#0000 45%,#aa0a0abf 100%);position:absolute;inset:0}.extract-arrow{color:var(--good);text-shadow:0 0 10px var(--good);font-size:30px;display:none;position:absolute;top:0;left:0}.extract-arrow.show{display:block}.float-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.float-text{font-family:var(--head);white-space:nowrap;text-shadow:0 1px 3px #000;font-weight:600;position:absolute;top:0;left:0}.float-text.dmg{color:#fff2d6;font-size:15px}.float-text.crit{color:#ffd54f;font-size:21px}.float-text.lvl{color:var(--xp);font-size:24px}.float-text.buff{color:#9ef0ff;font-size:18px}.char-panel{pointer-events:auto;width:400px;max-height:86vh;padding:16px;position:absolute;top:50%;right:16px;overflow-y:auto;transform:translateY(-50%)}.char-panel h2{justify-content:space-between;align-items:baseline;display:flex}.char-panel .pts{color:var(--xp);font-size:14px}.char-panel h3{margin-top:16px;font-size:16px}.stat-row{border-bottom:1px solid #25231f;grid-template-columns:1fr 34px 84px;align-items:center;gap:6px;padding:5px 0;display:grid}.stat-name small{font-size:11px;display:block}.stat-pts{color:var(--xp);font-family:var(--head)}.stat-val{font-family:var(--head);text-align:right}.bag{grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.bag-slot{border:1px solid color-mix(in srgb, var(--c,#333) 70%, #000);cursor:pointer;background:#0d0e10;border-radius:3px;height:52px;padding:5px;position:relative}.bag-slot:hover:not(.empty){background:#2a1414}.bag-slot.empty{cursor:default;border-color:#222}.bag-name{color:var(--c);font-size:11px;line-height:1.15}.bag-val{color:var(--muted);font-size:11px;position:absolute;bottom:3px;right:5px}.buff-row{color:var(--c);padding:2px 0;font-size:13px}.buff-row small{margin-left:6px}.hint{text-align:right;margin-top:12px;font-size:12px}.overlay{pointer-events:auto;z-index:10;background:#050506b8;justify-content:center;align-items:center;animation:.3s fade-in;display:flex;position:absolute;inset:0}@keyframes fade-in{0%{opacity:0}}.modal{text-align:center;background:var(--panel-solid);flex-direction:column;gap:10px;width:360px;padding:26px;display:flex}.modal.wide{width:480px}.modal h1{letter-spacing:.12em;font-size:44px}.modal h1.good{color:var(--good)}.modal h1.bad{color:var(--bad)}.result-stats{justify-content:space-around;margin:6px 0 14px;display:flex}.result-stats b{font-family:var(--head);font-size:30px;display:block}.rows{text-align:left;max-height:220px;margin-bottom:8px;overflow-y:auto}.row{border-bottom:1px solid #25231f;justify-content:space-between;padding:4px 0;display:flex}.hideout{-webkit-user-select:text;user-select:text;background:radial-gradient(at 20% 0,#e0732e1f,#0000 55%),repeating-linear-gradient(135deg,#111315 0 18px,#121416 18px 36px);flex-direction:column;display:flex;position:absolute;inset:0}.ho-header{justify-content:space-between;align-items:center;padding:18px 28px 10px;display:flex}.ho-title{font-family:var(--head);letter-spacing:.14em;font-size:38px;font-weight:700}.ho-title small{font-family:var(--body);letter-spacing:.1em;text-transform:uppercase;font-size:12px;display:block}.ho-cash{font-family:var(--head);color:var(--good);font-size:34px}.ho-tabs{border-bottom:1px solid var(--line);gap:2px;padding:0 28px;display:flex}.tab{font-family:var(--head);letter-spacing:.06em;color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;padding:10px 18px;font-size:16px}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.ho-main{flex:1;gap:20px;min-height:0;padding:20px 28px;display:flex}.ho-content{flex:1;padding-right:6px;overflow-y:auto}.ho-content h2{margin-top:6px}.flash{border-left:3px solid var(--accent);background:#e0732e1f;margin-bottom:12px;padding:8px 12px}.toolbar{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.list{flex-direction:column;gap:5px;display:flex}.item-row{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--c);border-radius:3px;grid-template-columns:1fr 60px auto auto;align-items:center;gap:10px;padding:8px 12px;display:grid}.item-main b{color:var(--c);display:block}.item-count{font-family:var(--head);text-align:right;font-size:18px}.cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:22px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--c,#3a3733);border-radius:3px;flex-direction:column;gap:6px;padding:14px;display:flex}.card p{margin:0}.card .btn{margin-top:auto}.card.equipped{box-shadow:inset 0 0 0 1px var(--accent)}.rarity-title{color:var(--c)}.stat-line{font-size:13px}.req{color:var(--accent-2);font-size:12px}.pips{gap:3px;margin:4px 0;display:flex}.pips span{background:#2a2825;border-radius:1px;flex:1;height:6px}.pips span.on{background:var(--accent)}.char-head{flex-wrap:wrap;align-items:center;gap:18px;margin-bottom:14px;display:flex}.char-head h2{margin:0}.char-head .xp-bar{flex:1;min-width:180px}.char-head .xp-bar .bar-fill{background:#ffd54f;height:100%}.attr-card .now{font-family:var(--head)}.attr-card .counter{justify-content:flex-end}.mini-up{color:var(--muted);justify-content:space-between;align-items:center;font-size:12px;display:flex}.mini-up .btn{margin-top:0}.row-buttons{gap:6px;margin-top:auto;display:flex}.row-buttons .btn{flex:1}.loadout{flex-direction:column;gap:10px;max-width:560px;display:flex}.loadout label{font-family:var(--head);letter-spacing:.04em;grid-template-columns:90px 1fr;align-items:center;display:grid}select{color:var(--text);font-family:var(--body);background:#1d1f22;border:1px solid #3a3733;border-radius:3px;padding:7px 8px}.hotbar-plan{align-items:center;gap:10px;display:flex}.hotbar-plan .slot-key{width:18px;position:static}.hotbar-plan select{flex:1}.counter{font-family:var(--head);align-items:center;gap:6px;display:flex}.deploy{flex-direction:column;align-self:flex-start;gap:8px;width:300px;padding:18px;display:flex}.kv{border-bottom:1px solid #25231f;justify-content:space-between;gap:10px;padding:3px 0;font-size:13px;display:flex}.kv span{color:var(--muted)}.kv b{text-align:right;font-weight:500}.chips{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.chip-btn{font-family:var(--head);letter-spacing:.04em;color:var(--muted);cursor:pointer;background:#1c1e21;border:1px solid #34312d;border-radius:14px;padding:5px 14px;font-size:14px}.chip-btn:hover{color:var(--text)}.chip-btn.active{color:#1a0f07;background:var(--accent);border-color:var(--accent)}.chip-btn.active small{color:#3a2410}.wc-head{justify-content:space-between;align-items:baseline;display:flex}.wc-head h3{margin:0}.rarity-tag{font-family:var(--head);letter-spacing:.06em;text-transform:uppercase;color:var(--c);font-size:12px}.weapon-card.owned{background:linear-gradient(180deg, color-mix(in srgb, var(--c) 8%, transparent), transparent 60%), var(--panel)}.wstats{grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:4px 8px;margin:4px 0;display:grid}.wstats small{text-transform:uppercase;letter-spacing:.05em;font-size:10px;display:block}.wstats b{font-family:var(--head);font-size:15px;font-weight:500}.req.ok{color:var(--muted)}.maps{flex-direction:column;gap:6px;margin-bottom:6px;display:flex}.map-card{text-align:left;font-family:var(--body);color:var(--text);border:1px solid #34312d;border-left:3px solid var(--c);cursor:pointer;background:#1c1e21;border-radius:3px;flex-direction:column;gap:2px;padding:7px 10px;display:flex}.map-card:hover:not(:disabled){background:#25272a}.map-card.selected{box-shadow:inset 0 0 0 1px var(--accent);background:#e0732e1a}.map-card.locked{opacity:.55;cursor:not-allowed}.map-head{font-family:var(--head);letter-spacing:.04em;justify-content:space-between;align-items:baseline;font-size:15px;display:flex}.map-diff{color:var(--c);font-size:12px}.map-card small{font-size:11px}.map-lock{color:var(--accent-2)!important}.deploy-btn{letter-spacing:.12em;background:var(--accent);border-color:var(--accent);color:#1a0f07;margin-top:10px;padding:16px;font-size:22px;font-weight:700}.deploy-btn:hover{background:var(--accent-2)!important}.records{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:grid}.records div{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:11px}.records b{font-family:var(--head);color:var(--text);font-size:22px;display:block}.small{font-size:11px}.empty-state{text-align:center;color:var(--muted);padding:60px 20px}.empty-state h2{color:var(--text)}
