:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#efe9e0;background:#120c0c;font-synthesis:none;--panel:rgba(14,10,10,.78);--border:rgba(255,220,190,.16);--muted:#b7aa9c;--accent:#ff6a2a;--accent2:#ffd08a;--danger:#ff2e2e}
*{box-sizing:border-box}body{margin:0;overflow:hidden;cursor:default}body.locked{cursor:none}
button,input{font:inherit}button{cursor:pointer;color:inherit;border:0;background:none}button:focus-visible{outline:2px solid var(--accent2);outline-offset:3px}
#viewport{position:fixed;inset:0;outline:none}#viewport canvas{display:block;width:100%;height:100%;touch-action:none}
.hidden{display:none!important}
.eyebrow{font-size:9px;letter-spacing:.2em;font-weight:600;color:var(--muted)}
.panel{background:var(--panel);border:1px solid var(--border);backdrop-filter:blur(12px);border-radius:8px}
kbd{display:inline-block;min-width:22px;padding:3px 7px;margin-right:3px;border:1px solid #6a5a52;border-bottom-width:2px;border-radius:4px;font:11px/1.2 "Courier New",monospace;color:#f4e7d6;background:#221816}

/* loading */
#loading{position:fixed;inset:0;background:#120c0c;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:20;transition:opacity .7s}
#loading.done{opacity:0;pointer-events:none}.title-logo{width:min(760px,88vw);height:auto;display:block;margin:0 auto 22px;animation:logoBreathe 4s ease-in-out infinite}@keyframes logoBreathe{0%,100%{transform:scale(1);filter:drop-shadow(0 0 14px #ff5a1a60) drop-shadow(0 10px 30px #000c)}50%{transform:scale(1.025);filter:drop-shadow(0 0 34px #ff7a2ab0) drop-shadow(0 10px 30px #000c)}}#loading h1{font-weight:400;font-size:44px;letter-spacing:-1.6px;margin:14px 0}
#loading p:not(.eyebrow){font-size:12px;color:#b8a89a;max-width:450px;text-align:center;line-height:1.7;padding:0 20px}
.loading-mark{font-size:50px;color:var(--accent);margin-bottom:10px;animation:spin 16s linear infinite}
.loading-track{height:2px;width:180px;background:#ffffff1c;margin-top:25px;overflow:hidden}.loading-track span{display:block;height:100%;width:40%;background:var(--accent);animation:load 1.3s ease-in-out infinite}
#loading.failed .loading-track{display:none}
@keyframes load{from{transform:translateX(-100%)}to{transform:translateX(350%)}}@keyframes spin{to{transform:rotate(360deg)}}

/* overlays */
.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#1a0e0cc0,#07040499);z-index:10;padding:20px}
.card{width:min(560px,100%);padding:36px 40px;border-radius:14px;background:#160f0ef0;border:1px solid var(--border);box-shadow:0 30px 120px #000a}
.card.small{width:min(380px,100%);padding:28px 32px;text-align:center}
.card h1{font-size:46px;line-height:1.02;letter-spacing:-2px;font-weight:450;margin:12px 0 18px}.card h2{font-weight:400;font-size:26px;margin:10px 0}.dot{color:var(--accent)}
.brief{font-size:13px;line-height:1.75;color:#c9bcae;margin:0 0 22px}.brief b{color:#fff}
.controls{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 14px;margin:0 0 26px;font-size:10px;color:#a79a8d}.controls div{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.controls span{margin-left:4px;letter-spacing:.06em;text-transform:uppercase}
.primary{background:var(--accent);color:#1a0d08;font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:12px;padding:15px 28px;border-radius:6px;box-shadow:0 8px 30px #ff6a2a40}.primary:hover{background:#ff8347}
.fine{font-size:10px;color:#8a7d72;line-height:1.6;margin:18px 0 0}

/* hud */
#hud{position:fixed;inset:0;pointer-events:none;z-index:5}
#crosshair{position:fixed;top:50%;left:50%;width:26px;height:26px;transform:translate(-50%,-50%)}
#crosshair i{position:absolute;background:#fff;box-shadow:0 0 3px #000;opacity:.9}
#crosshair i:nth-child(1){left:12px;top:0;width:2px;height:8px}#crosshair i:nth-child(2){left:12px;bottom:0;width:2px;height:8px}#crosshair i:nth-child(3){top:12px;left:0;height:2px;width:8px}#crosshair i:nth-child(4){top:12px;right:0;height:2px;width:8px}
#scope{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity .12s;background:radial-gradient(circle at center,transparent 0,transparent 26vmin,#000000cc 30vmin,#000000f2 100%)}#scope i{position:absolute;left:50%;top:50%;width:52vmin;height:52vmin;transform:translate(-50%,-50%);border:2px solid #d9d2c2aa;border-radius:50%;background:linear-gradient(#ffffff55,#ffffff55) center/100% 1px no-repeat,linear-gradient(#ffffff55,#ffffff55) center/1px 100% no-repeat}body.zoomed #scope{opacity:1}body.zoomed #crosshair{opacity:0}
#hitmarker{position:fixed;top:50%;left:50%;width:34px;height:34px;transform:translate(-50%,-50%) rotate(45deg);opacity:0;border:2px solid #ffb35a;border-radius:2px}
#hitmarker.show{animation:hit .22s ease-out}#hitmarker.head{border-color:#ff2e2e;width:48px;height:48px;border-width:3px;box-shadow:0 0 14px #ff2e2e88}#hitmarker.head.show{animation:hit .32s ease-out}
@keyframes hit{0%{opacity:1;transform:translate(-50%,-50%) rotate(45deg) scale(1.2)}100%{opacity:0;transform:translate(-50%,-50%) rotate(45deg) scale(.6)}}
#damage{position:fixed;inset:0;background:radial-gradient(ellipse at center,transparent 45%,#c81a1a00 60%,#c81a1aaa 100%);opacity:0}
#damage.flash{animation:dmg .55s ease-out}#damage.heal{background:radial-gradient(ellipse at center,transparent 45%,#2fd66c00 60%,#2fd66caa 100%)}#damage.power{background:radial-gradient(ellipse at center,transparent 45%,#3d8cff00 60%,#3d8cffcc 100%)}
#vignette{position:fixed;inset:0;pointer-events:none;z-index:4;opacity:0;transition:opacity .25s}body.low-health #vignette{opacity:calc(.45 + .55*var(--low,0));box-shadow:inset 0 0 calc(60px + 80px*var(--low,0)) #d61b1b,inset 0 0 12px #ff3b3b;animation:lowpulse 1s infinite alternate}body.powered #vignette{opacity:1;box-shadow:inset 0 0 90px #3d8cff,inset 0 0 14px #9ad0ff}body.powered.low-health #vignette{box-shadow:inset 0 0 90px #3d8cff,inset 0 0 120px #d61b1b}@keyframes lowpulse{to{opacity:calc(.25 + .45*var(--low,0))}}body.powered .ammo{color:#8fd0ff}@keyframes dmg{0%{opacity:1}100%{opacity:0}}
.objective{position:fixed;top:22px;left:22px;padding:14px 18px;min-width:250px}
.objective b{display:block;font-size:15px;font-weight:600;margin:6px 0 8px;color:#fff}
.counter{font-size:22px;font-weight:600;color:var(--accent2)}.counter.small{font-size:14px;color:#e6dccf;margin-top:2px}#banner{position:fixed;left:50%;top:32%;transform:translate(-50%,-50%);font-size:min(9vw,84px);font-weight:800;letter-spacing:-2px;color:#fff;text-shadow:0 0 30px #ff6a2a,0 4px 20px #000;text-transform:uppercase;white-space:nowrap;opacity:0;pointer-events:none;z-index:14}#banner.show{animation:bannerIn 4.2s ease-out forwards}@keyframes bannerIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.7)}12%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}20%{transform:translate(-50%,-50%) scale(1)}80%{opacity:1}100%{opacity:0}}.counter em{font-style:normal;font-size:11px;color:var(--muted);font-weight:500}.objective .sub{font-size:10px;color:var(--muted);margin-top:5px;letter-spacing:.05em;max-width:260px;line-height:1.5}#waypoint{position:fixed;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:2px;color:#8fd0ff;text-shadow:0 1px 6px #000;font-size:11px;font-weight:600;letter-spacing:.06em}#waypoint i{font-style:normal;font-size:22px;animation:pulse .7s infinite alternate}#waypoint.edge i{color:#ffd08a}
.vitals{position:fixed;bottom:26px;left:22px;padding:14px 18px;width:270px}.fuel{margin-top:10px}#fuel-bar{height:100%;width:100%;background:linear-gradient(90deg,#5fb7ff,#c7ecff);transition:width .1s}#fuel-bar.low{background:#ff8a3d}.fuel b{font-size:13px;color:#8fd0ff}
.health{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}.bar{height:8px;background:#ffffff18;border-radius:4px;overflow:hidden}
#health-bar{height:100%;width:100%;background:linear-gradient(90deg,#7fe07f,#d6f57f);transition:width .2s}#health-bar.low{background:linear-gradient(90deg,#ff3d3d,#ff8a4d);animation:pulse .8s infinite alternate}
@keyframes pulse{to{opacity:.55}}.health b{font-size:18px;min-width:34px;text-align:right}
.weapon{position:fixed;bottom:26px;right:22px;padding:14px 18px;text-align:right;min-width:210px}
.slots{display:flex;gap:4px;justify-content:flex-end;margin-bottom:8px}.slot{font-size:8px;letter-spacing:.1em;padding:4px 6px;border:1px solid var(--border);border-radius:4px;color:var(--muted)}.slot.active{background:var(--accent2);color:#1a0d08;border-color:var(--accent2)}
.weapon b{display:block;font-size:13px;font-weight:600}.ammo{font-size:30px;font-weight:700;letter-spacing:-1px;color:#fff;margin-top:2px}.ammo.empty{color:var(--danger)}
.score{position:fixed;top:22px;right:22px;padding:12px 18px;text-align:right}.score b{display:block;font-size:22px;font-weight:600}.souls{margin-top:10px}.souls-hint{font-size:10px;color:var(--muted);letter-spacing:.06em}#souls{color:#7df9ff;font-size:16px}#subtitle{position:fixed;left:50%;bottom:19%;transform:translateX(-50%);max-width:min(900px,90vw);text-align:center;font-size:clamp(15px,1.7vw,22px);font-weight:600;color:#fff5e6;text-shadow:0 2px 6px #000,0 0 18px #000;letter-spacing:.01em;pointer-events:none;z-index:9;padding:8px 16px;background:#00000055;border-radius:8px}#loading.ready{cursor:pointer}#loading.ready .loading-track{display:none}#loading .loading-hint{display:none;margin-top:14px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}#loading.ready .loading-hint{display:block}#loading.ready #loading-text{color:#fff;font-size:22px}.phone-tabs{display:flex;gap:6px;padding:0 4px 10px}.phone-tabs button{flex:1;padding:8px 0;border-radius:8px;background:#1b1b21;color:#9d9daa;font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:600}.phone-tabs button.active{background:#2c2c36;color:#fff}.phone-tabs b{color:#7df9ff;margin-left:6px}#phone-upgrades{max-height:min(52vh,420px);overflow:auto;padding:0 4px}.phone-souls-line{font-size:10px;color:#8d8d99;margin:0 0 4px}.phone-souls-line b{color:#7df9ff;font-size:14px}.shop-head{font-size:9px;letter-spacing:.2em;color:#8d8d99;margin:10px 0 2px;text-transform:uppercase}.shop-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-top:1px solid #23232a}.shop-row b{font-size:12px}.shop-row .desc{font-size:10px;color:#8d8d99;margin-top:2px}.shop-row .lvl{font-size:9px;color:var(--accent2);margin-left:6px;letter-spacing:.06em}.buy{background:#2a1a16;color:#ffd08a;border:1px solid var(--border);padding:7px 10px;border-radius:6px;font-weight:700;min-width:84px;cursor:pointer;font-size:11px;white-space:nowrap}.buy:hover:not(:disabled){border-color:#ffd08a}.buy:disabled{opacity:.4;cursor:default}.buy.max{color:var(--muted)}#paused{cursor:pointer}.reset{display:block;margin:12px auto 4px;font-size:9px;color:#666;letter-spacing:.1em;text-transform:uppercase}.reset:hover{color:#ff8a4d}.slot.locked{opacity:.32}#bossbar{position:fixed;top:64px;left:50%;transform:translateX(-50%);width:min(560px,70vw);text-align:center;z-index:6}#bossbar .eyebrow{color:#ff8a7a;font-size:11px;letter-spacing:.3em}#bossbar .bar{height:12px;margin-top:6px;background:#00000088;border:1px solid #ff6a5a88;border-radius:6px;overflow:hidden}#boss-hp{height:100%;width:100%;background:linear-gradient(90deg,#ff2a00,#ff8a3d);transition:width .15s}#tutorial{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);max-width:min(640px,90vw);text-align:center;font-size:clamp(18px,2.2vw,28px);font-weight:600;line-height:1.5;color:#fff;text-shadow:0 2px 8px #000,0 0 30px #000;background:#000000a8;border:1px solid var(--border);border-radius:12px;padding:22px 28px;z-index:9;pointer-events:none}#tutorial kbd{font-size:18px;vertical-align:middle}
.minimap{position:fixed;right:22px;top:92px;width:214px;padding:12px 14px 10px}
.map-heading{display:flex;justify-content:space-between;font-size:8px;letter-spacing:.14em;color:var(--muted)}.map-heading b{font-size:10px}
.minimap canvas{width:186px;height:129px;display:block;margin-top:6px}
.legend{font-size:8px;color:var(--muted);margin-top:6px;display:flex;gap:10px;align-items:center}.legend i{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:4px}.legend .human{background:#e8e8d8}.legend .demon{background:#ff4a2a}.legend .you{background:#8ff0ff}.legend .mil{background:#9cff5a;border-radius:1px}.counter.military{color:#9cff5a}
.phone-button{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);pointer-events:auto;display:flex;align-items:center;gap:10px;padding:11px 16px;font-size:11px;color:#e6dccf;max-width:360px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.phone-button .icon{color:var(--accent2)}.phone-button.playing .icon{animation:pulse .6s infinite alternate}.phone-button:hover{background:#2a1c18d0}

#intro{position:fixed;inset:0;z-index:11;background:radial-gradient(ellipse at center,#0a0606a8,#050303f0);display:flex;align-items:center;justify-content:center}#intro-line{max-width:900px;padding:0 30px;text-align:center;font-size:min(5vw,44px);font-weight:500;letter-spacing:-.5px;line-height:1.3;color:#f4ead9;text-shadow:0 2px 30px #000;opacity:0}#intro-line.show{animation:introLine 3.4s ease-in-out forwards}@keyframes introLine{0%{opacity:0;transform:translateY(12px)}18%{opacity:1;transform:translateY(0)}82%{opacity:1}100%{opacity:0;transform:translateY(-8px)}}
.debug-button{display:block;margin:14px auto 0;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#a79a8d;padding:8px 12px;border:1px dashed var(--border);border-radius:5px}.debug-button:hover{color:#fff;border-color:#fff6}
/* toast */
#toast{position:fixed;top:22px;left:50%;transform:translateX(-50%);background:#f2dcc3;color:#2a1810;padding:12px 20px;font-size:12px;border-radius:6px;box-shadow:0 5px 30px #0005;max-width:70%;z-index:15;line-height:1.5;pointer-events:none}

/* phone */
.phone{position:fixed;right:40px;bottom:0;width:340px;z-index:12;transform:translateY(112%);transition:transform .38s cubic-bezier(.2,.9,.3,1.1);pointer-events:none}
.phone.open{transform:translateY(-24px);pointer-events:auto}
.phone-shell{background:#0b0b0d;border:2px solid #2a2a30;border-radius:34px 34px 0 0;padding:14px 12px 18px;box-shadow:0 20px 80px #000c,inset 0 0 0 1px #55555a}
.phone-top{display:flex;justify-content:space-between;align-items:center;padding:2px 12px 10px;font-size:10px;color:#9aa}.phone-top button{color:#ccc;font-size:14px}
.phone-screen{aspect-ratio:16/9;background:#000;border-radius:10px;overflow:hidden}#phone-video,#phone-video iframe{width:100%;height:100%;display:block}
.phone-info{padding:12px 6px 4px}.phone-info b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phone-info span{font-size:10px;color:#8d8d99}
.phone-controls{display:flex;justify-content:center;gap:22px;padding:8px 0 2px}.phone-controls button{font-size:20px;width:46px;height:46px;border-radius:50%;background:#1b1b21;color:#fff}.phone-controls button:hover{background:#2c2c36}#phone-play{background:var(--accent);color:#1a0d08}
.phone-hint{text-align:center;font-size:9px;color:#666;margin-top:8px}
.no-js{position:fixed;z-index:50;inset:0;display:grid;place-items:center;background:#120c0c;padding:40px}

@media(max-width:760px){.card{padding:26px 22px}.card h1{font-size:34px}.controls{grid-template-columns:1fr 1fr}.objective{min-width:0;left:12px;top:12px;padding:10px 12px}.minimap{display:none}.vitals{width:200px;left:12px;bottom:16px}.weapon{right:12px;bottom:16px}.score{right:12px;top:12px}.phone{right:0;width:100vw}.phone-button{bottom:100px}}
