:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{color:#f2f2f2;background:#0b0b0f;height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;overflow:hidden}.game{position:fixed;inset:0;overflow:hidden}.scene{z-index:0;inset:0;position:absolute!important}.overlay{z-index:1;cursor:crosshair;position:absolute;inset:0}.menu{z-index:10;text-align:center;background:radial-gradient(circle at 50% 30%,#1c1c26,#0b0b0f 70%);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:16px;display:flex;position:absolute;inset:0}.menu h1{letter-spacing:-.02em;margin:0;font-size:clamp(2.2rem,7vw,4.5rem)}.menu h1 span{color:#fc0}.menu p{opacity:.75;margin:0}.menu label{opacity:.9;flex-direction:column;gap:6px;font-size:.85rem;display:flex}.menu select,.menu button{font:inherit;color:inherit;background:#1a1a22;border:1px solid #3a3a48;border-radius:8px;padding:10px 18px}.menu button{color:#111;cursor:pointer;background:#fc0;border:0;min-width:160px;font-weight:700}.menu button:disabled{opacity:.6;cursor:wait}.menu .error{color:#ff6b6b;max-width:420px}.crosshair{z-index:3;pointer-events:none;width:22px;height:22px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair:before,.crosshair:after{content:"";background:#fff;position:absolute;box-shadow:0 0 3px #000}.crosshair:before{clip-path:polygon(0 0,100% 0,100% 35%,0 35%,0 65%,100% 65%,100% 100%,0 100%);width:2px;height:100%;top:0;left:50%;transform:translate(-50%)}.crosshair:after{clip-path:polygon(0 0,35% 0,35% 100%,0 100%,65% 0,100% 0,100% 100%,65% 100%);width:100%;height:2px;top:50%;left:0;transform:translateY(-50%)}.pause{z-index:3;text-align:center;pointer-events:none;background:#00000073;place-content:center;display:grid;position:absolute;inset:0}.pause p{margin:0;font-size:1.4rem;font-weight:700}.pause small{opacity:.7}.hud{z-index:4;text-shadow:0 1px 3px #000;pointer-events:none;flex-direction:column;gap:2px;font-size:.8rem;display:flex;position:absolute;top:12px;left:12px}.hud strong{font-size:1rem}.aim-hint{z-index:4;pointer-events:none;background:#0a0a0e8c;border-radius:6px;padding:4px 10px;font-size:.75rem;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.enemy-count{z-index:4;pointer-events:none;background:#0a0a0e8c;border-radius:6px;padding:6px 12px;font-size:.9rem;position:absolute;top:12px;right:12px}.enemy-count strong{color:#fc0;font-size:1.1rem}.attribution{z-index:4;opacity:.8;text-shadow:0 1px 2px #000;pointer-events:none;font-size:.7rem;position:absolute;bottom:6px;right:8px}.menu .credit{opacity:.5;font-size:.75rem}.compass{z-index:4;pointer-events:none;background:#0a0a0e73;border-radius:6px;width:min(360px,100vw - 32px);height:30px;position:absolute;top:12px;left:50%;overflow:hidden;transform:translate(-50%);-webkit-mask-image:linear-gradient(90deg,#0000,#000 18% 82%,#0000);mask-image:linear-gradient(90deg,#0000,#000 18% 82%,#0000)}.compass-strip{will-change:transform;height:100%;position:absolute;top:0;left:50%}.compass-mark{opacity:.55;font-size:.65rem;font-weight:600;position:absolute;top:50%;transform:translate(-50%,-50%)}.compass-mark.major{opacity:1;font-size:.85rem}.compass-mark.north{color:#ff5a4f}.compass-needle{border:5px solid #0000;border-bottom-color:#fc0;width:0;height:0;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.hud{top:50px!important}.arm-wrap{z-index:2;pointer-events:none;transform-origin:70% 100%;width:min(34vw,420px);position:absolute;bottom:-6%;right:8%;transform:rotate(-8deg)}.arm-wrap.walking .arm{animation:.45s ease-in-out infinite bob}.arm{filter:drop-shadow(0 8px 12px #00000080);position:relative}.arm-svg{width:100%;height:auto;display:block;overflow:visible}.arm.recoil{animation:.16s ease-out recoil}.flash{aspect-ratio:1;background:radial-gradient(circle,#fff 0%,#ffd34d 35%,#ff8c0000 70%);width:22%;animation:.1s ease-out forwards flash;position:absolute;top:-4%;left:44%;transform:translate(-50%,-50%)}@keyframes recoil{0%{transform:translateY(0)rotate(0)}30%{transform:translateY(26px)rotate(5deg)}to{transform:translateY(0)rotate(0)}}@keyframes flash{0%{opacity:1;scale:1}to{opacity:0;scale:1.6}}@keyframes bob{0%,to{transform:translate(0)}50%{transform:translate(-6px,10px)}}.emerald-count{z-index:4;background:#0a0a0e8c;border-radius:6px;padding:6px 12px;font-size:.9rem;position:absolute;top:52px;right:12px}.emerald-count strong{color:#2bea7d;font-size:1.1rem}.minimap{z-index:4;aspect-ratio:1.35;pointer-events:none;background:#2b3036;border:3px solid #0c0e12e6;border-radius:10px;width:clamp(150px,22vw,240px);position:absolute;bottom:16px;left:16px;overflow:hidden;box-shadow:0 4px 14px #00000073}.minimap canvas,.bigmap canvas{width:100%;height:100%;display:block}.minimap-hint{opacity:.75;text-shadow:0 1px 2px #000;font-size:.65rem;position:absolute;bottom:4px;right:6px}.bigmap{z-index:8;background:#080a0ce0;flex-direction:column;align-items:center;gap:8px;padding:24px 16px 40px;display:flex;position:absolute;inset:0}.bigmap canvas{border-radius:8px;flex:1;max-width:900px;min-height:0}.bigmap p{opacity:.8;margin:0;font-size:.8rem}.energy{z-index:4;text-shadow:0 1px 2px #000;pointer-events:none;flex-direction:column;gap:4px;font-size:.72rem;display:flex;position:absolute;bottom:calc(26px + clamp(150px,22vw,240px)/1.35);left:16px}.energy-bar{background:#0a0a0e99;border-radius:5px;gap:3px;padding:3px;display:flex}.energy-bar i{background:#ffffff1f;border-radius:2px;width:clamp(10px,1.6vw,18px);height:10px}.energy-bar i.on{background:linear-gradient(#5ef08f,#22b85a)}.energy-bar i.on.low{background:linear-gradient(#ff7a6a,#d8342a)}.hurt-flash{z-index:5;pointer-events:none;background:radial-gradient(#c8000000 45%,#c800008c 100%);animation:.45s ease-out forwards hurt;position:absolute;inset:0}@keyframes hurt{0%{opacity:1}to{opacity:0}}.gameover{z-index:9;text-align:center;background:#280000b8;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;display:flex;position:absolute;inset:0}.gameover h2{margin:0;font-size:clamp(1.8rem,6vw,3rem)}.gameover button{color:#111;cursor:pointer;background:#fc0;border:0;border-radius:8px;padding:10px 22px;font-size:1rem;font-weight:700}.emerald-toast{z-index:6;color:#eafff2;pointer-events:none;background:#062816c7;border:2px solid #2bea7d;border-radius:10px;padding:10px 22px;font-size:clamp(1.1rem,3.4vw,1.6rem);font-weight:800;animation:2.5s ease-out forwards toast;position:absolute;top:22%;left:50%;transform:translate(-50%)}@keyframes toast{0%{opacity:0;transform:translate(-50%,10px)scale(.9)}12%{opacity:1;transform:translate(-50%)scale(1)}80%{opacity:1}to{opacity:0}}.gameover.win{background:#042c18c7}.menu.cover-screen{background:#000;gap:0;padding:0}.cover{aspect-ratio:1376/768;width:min(85vw,152.292vh);position:relative;box-shadow:0 0 0 1px #111,0 0 60px #ff78282e}.cover img{object-fit:contain;-webkit-user-select:none;user-select:none;width:100%;height:100%}.cover-actions{flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;bottom:9%;left:50%;transform:translate(-50%)}.cover-actions button{text-transform:uppercase;letter-spacing:.06em;padding:.6em 2.2em;font-size:clamp(1rem,1.8vw,1.4rem);box-shadow:0 0 0 3px #000,0 6px 18px #0009}.cover-screen .credit{padding:0 16px;position:absolute;bottom:1.5vh;left:0;right:0}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.copyright-btn.copyright-btn{color:#e8e8ee;cursor:pointer;background:#14141ad9;border:1px solid #3a3a48;border-radius:50%;width:40px;min-width:0;height:40px;padding:0;font-size:1.2rem;font-weight:600;position:absolute;bottom:16px;right:18px}.copyright-btn.copyright-btn:hover{background:#2a2a34}.credits-backdrop{z-index:20;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.credits-modal{text-align:center;background:#15151c;border:1px solid #3a3a48;border-radius:12px;width:min(360px,100%);padding:20px 22px;font-size:.85rem}.credits-modal p{opacity:.85;margin:0 0 8px}.credits-modal .credits-author{opacity:1;font-size:1.05rem;line-height:1.5}.credits-modal hr{border:0;border-top:1px solid #2c2c38;margin:12px 0}.credits-modal button{margin-top:8px}.is-touch{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.touch-controls{z-index:6;position:absolute;inset:0}.touch-look{touch-action:none;position:absolute;inset:0}.touch-stick{left:max(28px, env(safe-area-inset-left));touch-action:none;background:#0a0a0e59;border:2px solid #ffffff59;border-radius:50%;place-items:center;width:124px;height:124px;display:grid;position:absolute;bottom:24px}.touch-knob{pointer-events:none;background:#ffffff8c;border-radius:50%;width:56px;height:56px;box-shadow:0 2px 8px #0006}.touch-buttons{right:max(24px, env(safe-area-inset-right));grid-template-columns:auto auto;grid-template-areas:"map jump"".fire";place-items:end;gap:12px;display:grid;position:absolute;bottom:22px}.touch-btn{color:#fff;text-shadow:0 1px 2px #000;touch-action:none;-webkit-tap-highlight-color:transparent;border:2px solid #ffffff80;border-radius:50%;font-size:.75rem;font-weight:700}.touch-btn:active{transform:scale(.93)}.touch-btn.fire{background:#d6282899;grid-area:fire;width:92px;height:92px}.touch-btn.jump{background:#1e78dc8c;grid-area:jump;width:66px;height:66px}.touch-btn.map{background:#0a0a0e8c;grid-area:map;width:52px;height:52px;font-size:.65rem}.is-touch .minimap{top:72px;bottom:auto;left:max(12px, env(safe-area-inset-left));width:112px}.is-touch .minimap-hint{display:none}.is-touch .energy{top:162.963px;bottom:auto;left:max(12px, env(safe-area-inset-left))}.is-touch .bigmap{z-index:7}.rotate-hint{display:none}@media (pointer:coarse) and (orientation:portrait){.rotate-hint{z-index:50;text-align:center;background:#0b0b0f;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex;position:fixed;inset:0}.rotate-hint p{margin:0;font-size:1.3rem;font-weight:700}.rotate-hint small{opacity:.8;max-width:260px}.rotate-icon{border:3px solid #fc0;border-radius:8px;width:46px;height:76px;animation:1.8s ease-in-out infinite rotate-phone}}@keyframes rotate-phone{0%,25%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}
