:root{--bg:#14261a;--olive:#9cc06a;--sand:#f0d79a;--red:#ff6b4a;--text:#f3f6ee;--glow:0 0 18px rgba(156,192,106,.55)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}
#scene3d{position:fixed;inset:0;width:100%;height:100%;display:block}
.screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px 18px;text-align:center;background:radial-gradient(ellipse at 50% 30%,rgba(40,70,40,.4),rgba(10,20,12,.9) 72%);z-index:5;overflow-y:auto}
.screen[hidden]{display:none}
.screen.clear{background:linear-gradient(180deg,rgba(10,20,12,.15),rgba(10,20,12,.25) 40%,rgba(10,20,12,.85))}
.screen.bottom{justify-content:flex-end}
.dim{background:rgba(10,20,12,.75);backdrop-filter:blur(6px)}
.logo{display:flex;flex-direction:column;align-items:center}
.logo h1{margin:0;font-size:clamp(50px,15vw,96px);line-height:.88;letter-spacing:.05em;font-weight:900;background:linear-gradient(180deg,#f7f3e0,#c9d1a3 50%,#6f8f42);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 4px 0 rgba(0,0,0,.45)) drop-shadow(0 0 14px rgba(156,192,106,.45))}
.brand{font-size:22px;font-weight:800;letter-spacing:.2em;color:var(--sand);text-shadow:0 0 12px rgba(240,215,154,.6);align-self:flex-end}
.subtitle{margin:0 0 6px;letter-spacing:.08em;font-size:15px;text-shadow:0 2px 6px #000}
.kicker{margin:0;font-size:12px;letter-spacing:.24em;opacity:.8}
h2{margin:0 0 4px;letter-spacing:.12em;font-size:24px;text-shadow:var(--glow)}
button{font:inherit;color:inherit;cursor:pointer}
.big{min-width:220px;padding:15px 28px;font-size:21px;font-weight:800;letter-spacing:.16em;border:2px solid var(--olive);border-radius:14px;background:linear-gradient(180deg,rgba(156,192,106,.35),rgba(80,110,50,.25));box-shadow:var(--glow)}
.small{min-width:190px;padding:10px 18px;font-size:14px;letter-spacing:.14em;border:1px solid rgba(156,192,106,.55);border-radius:12px;background:rgba(14,28,16,.65)}
.link{text-decoration:none;color:var(--text);display:inline-block}
.howto{max-width:440px;font-size:12.5px;opacity:.85;line-height:1.5;text-shadow:0 1px 4px #000}
.info{margin:0;opacity:.9;font-size:14px;max-width:440px;text-shadow:0 1px 4px #000}
.goal{margin:0;font-size:16px;max-width:420px;line-height:1.4}
.route{margin:0;font-size:13px;color:var(--sand)}
.result{font-size:48px;font-weight:900;margin:0;color:var(--sand);text-shadow:0 0 18px rgba(240,215,154,.5)}
.roster{list-style:none;margin:4px 0;padding:0;width:min(100%,420px);display:flex;flex-direction:column;gap:5px;text-align:left}
.roster li{padding:7px 10px;border-radius:10px;background:rgba(14,28,16,.7);border:1px solid rgba(156,192,106,.3);font-size:14px}
.roster li small{display:block;opacity:.75;font-size:12px}
.roster li.dead{border-color:rgba(255,107,74,.45)}
.roster li.new{border-color:rgba(240,215,154,.6)}
.graves{list-style:none;margin:0;padding:0;width:min(100%,440px);max-height:34vh;overflow-y:auto;display:flex;flex-direction:column;gap:4px;text-align:left;touch-action:pan-y}
.graves li{padding:6px 10px;border-radius:9px;background:rgba(14,28,16,.78);font-size:13px}
.graves li em{display:block;font-style:italic;opacity:.8;font-size:12px}
.grid{display:grid;grid-template-columns:repeat(3,96px);gap:9px;margin:4px 0 8px}
.grid button{height:74px;border-radius:12px;border:1px solid rgba(156,192,106,.55);background:rgba(20,40,22,.7);font-size:20px;font-weight:900;position:relative;padding:4px}
.grid button small{display:block;font-size:9.5px;font-weight:600;letter-spacing:0;opacity:.85;line-height:1.15;margin-top:3px}
.grid button.done{border-color:var(--sand)}
.grid button:disabled{opacity:.3}
#hud{position:fixed;inset:0;pointer-events:none;z-index:3}
#hud[hidden]{display:none}
.top{position:absolute;top:calc(env(safe-area-inset-top) + 8px);left:10px;right:10px;display:flex;align-items:center;gap:10px}
.icon{pointer-events:auto;width:40px;height:40px;border-radius:12px;border:1px solid rgba(156,192,106,.55);background:rgba(14,28,16,.7);font-size:16px}
.tag{font-size:12px;letter-spacing:.12em;padding:6px 10px;border-radius:10px;background:rgba(14,28,16,.7);border:1px solid rgba(156,192,106,.3)}
.points{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:900;font-size:22px;color:var(--sand);text-shadow:0 0 10px rgba(0,0,0,.9)}
.objective{position:absolute;top:calc(env(safe-area-inset-top) + 56px);left:10px;right:10px;margin:0;text-align:center;font-size:14px;font-weight:700;letter-spacing:.04em;text-shadow:0 1px 4px #000,0 0 10px #000}
.objective.alarm{color:#ffd0c0;animation:blink .6s steps(2) infinite}
@keyframes blink{50%{opacity:.55}}
.squad{position:absolute;left:8px;top:calc(env(safe-area-inset-top) + 84px);list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.squad li{font-size:11.5px;padding:3px 7px;border-radius:8px;background:rgba(14,28,16,.66);border-left:3px solid var(--olive);white-space:nowrap}
.squad li.lead{border-left-color:var(--sand)}
.squad li.off{opacity:.4;text-decoration:line-through;border-left-color:var(--red)}
.message{position:absolute;top:30%;left:0;right:0;text-align:center;font-size:clamp(24px,7.5vw,44px);font-weight:900;letter-spacing:.1em;text-shadow:0 0 16px rgba(0,0,0,.9),0 3px 0 rgba(0,0,0,.5);opacity:0;transition:opacity .25s;padding:0 10px}
.message.shown{opacity:1}
.bottom{position:absolute;right:12px;bottom:calc(env(safe-area-inset-bottom) + 14px);display:flex;flex-direction:column;gap:10px;align-items:flex-end}
.weapon{pointer-events:auto;width:92px;height:70px;border-radius:16px;border:2px solid var(--olive);background:rgba(30,50,26,.72);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;touch-action:none}
.weapon b{font-size:11px;letter-spacing:.14em}
.weapon span{font-size:22px;font-weight:900}
.weapon.rocket{border-color:var(--red)}
.weapon.armed{background:rgba(240,215,154,.45);transform:scale(1.06);box-shadow:0 0 18px rgba(240,215,154,.7)}
.weapon:disabled{opacity:.35}
.arrow{position:absolute;width:34px;height:34px;margin:-17px 0 0 -17px;font-size:28px;line-height:34px;text-align:center;color:var(--sand);text-shadow:0 0 8px #000;transform-origin:50% 50%}
.arrow[hidden]{display:none}
.labels{position:fixed;inset:0;pointer-events:none;z-index:4;overflow:hidden}
.bubble{position:absolute;transform:translate(-50%,-100%);max-width:170px;padding:5px 9px;border-radius:12px;background:#fffef6;color:#1a1a12;font-size:12px;font-weight:700;line-height:1.25;box-shadow:0 2px 0 rgba(0,0,0,.35);white-space:normal;text-align:center;animation:pop .18s ease-out}
.bubble:after{content:"";position:absolute;left:50%;bottom:-6px;margin-left:-6px;border:6px solid transparent;border-bottom:0;border-top-color:#fffef6}
.bubble i{display:block;font-style:normal;font-weight:600;font-size:10px;opacity:.6}
.bubble.enemy{background:#ffe1d6}
.bubble.enemy:after{border-top-color:#ffe1d6}
.pop{position:absolute;transform:translate(-50%,-50%);font-weight:900;font-size:15px;color:var(--sand);text-shadow:0 2px 0 #000,0 0 8px #000;animation:rise 1.1s ease-out forwards}
@keyframes pop{0%{transform:translate(-50%,-100%) scale(.5)}100%{transform:translate(-50%,-100%) scale(1)}}
@keyframes rise{0%{opacity:1;margin-top:0}100%{opacity:0;margin-top:-40px}}
@media (orientation:landscape) and (max-height:500px){.weapon{width:80px;height:58px}.squad{top:calc(env(safe-area-inset-top) + 76px)}}
