:root{color:#fff;background:#000;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body.playing{cursor:none}#scene{width:100%;height:100%;display:block;position:fixed;inset:0}#reticle{pointer-events:none;border:2px solid #ffffff8c;border-radius:50%;width:30px;height:30px;margin:-15px 0 0 -15px;transition:border-color .12s,transform .12s,box-shadow .12s;display:none;position:fixed;top:50%;left:50%}#reticle:after{content:"";background:#fffc;border-radius:50%;width:4px;height:4px;margin:-2px 0 0 -2px;position:absolute;top:50%;left:50%}#reticle.locked{border-color:#ff3b3b;transform:scale(.8);box-shadow:0 0 10px #ff3b3bcc}#reticle.locked:after{background:#ff3b3b}#vignette{pointer-events:none;opacity:0;background:radial-gradient(#0000 55%,#0000008c 100%);transition:opacity .15s;position:fixed;inset:0}#edge-glow{pointer-events:none;opacity:0;background:radial-gradient(#0000 45%,#ffaa828c 100%);position:fixed;inset:0}#debug{z-index:2;pointer-events:none;background:#04121e;border-radius:50%;width:184px;height:184px;position:fixed;bottom:56px;right:64px;overflow:hidden;box-shadow:0 0 0 2px #78e6ffb3,0 0 0 6px #78e6ff1f,0 0 22px #3cbeff66}#debug[hidden]{display:none}#cam{background:#111;width:228px;height:171px;margin:-85.5px 0 0 -114px;position:absolute;top:50%;left:50%;transform:scale(-1.1,1.1)}#cam video,#cam canvas{width:100%;height:100%;position:absolute;inset:0}#stats{white-space:pre-wrap;margin:6px 0 0}.buttons{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}button{font:inherit;cursor:pointer;color:#fff;background:#e11b22;border:0;border-radius:8px;padding:12px 22px;font-weight:700}button.secondary{background:#2a2f3a}button:disabled{opacity:.5;cursor:wait}#goal,#score,#villain-hud,#minimap,#toast,#training{z-index:2}#goal{color:#bff4ff;letter-spacing:.12em;pointer-events:none;text-shadow:0 0 8px #50d2ffcc;background:linear-gradient(#041624b8,#0416248c);border:1px solid #78e6ff73;border-left:3px solid #78e6ff;border-right:3px solid #78e6ff;align-items:center;gap:10px;padding:6px 20px;font:700 13px ui-monospace,Menlo,monospace;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 0 14px #3cbeff40}#training{color:#ffe6b0;letter-spacing:.12em;text-align:center;pointer-events:none;text-shadow:0 0 8px #ffbe50b3;background:linear-gradient(#041624b8,#0416248c);border:1px solid #ffc65c80;border-left:3px solid #ffc65c;border-right:3px solid #ffc65c;flex-direction:column;align-items:center;gap:2px;min-width:220px;padding:6px 18px;font:700 12px ui-monospace,Menlo,monospace;display:none;position:fixed;top:62px;left:50%;transform:translate(-50%);box-shadow:0 0 14px #ffbe5033}#training.on{display:flex}#training-title{opacity:.85;font-size:11px}#training-line{color:#fff;font-size:18px}#training-best{opacity:.75;font-size:11px}#goal-arrow{color:#78e6ff;font-size:16px;transition:transform 80ms linear}#goal.reached{color:#ffb4b4;text-shadow:0 0 8px #ff3c3ce6;background:linear-gradient(#3c0a0ecc,#3c0a0e99);border-color:#ff5a5ab3}#goal.reached #goal-arrow{color:#ff6a6a}#reticle.enemy{border-color:#ff2a2a;transform:scale(1.25);box-shadow:0 0 14px #ff2a2af2}#reticle.enemy:after{background:#ff2a2a}#reticle.hit{background:#ffffff8c}#minimap{pointer-events:none;border-radius:50%;position:fixed;bottom:56px;left:64px;box-shadow:0 0 0 2px #78e6ffb3,0 0 0 6px #78e6ff1f,0 0 22px #3cbeff66}#score{letter-spacing:.12em;color:#bff4ff;text-shadow:0 0 8px #50d2ffcc;pointer-events:none;background:linear-gradient(#041624b8,#0416248c);border:1px solid #78e6ff73;border-right:3px solid #78e6ff;padding:6px 16px;font:700 14px ui-monospace,Menlo,monospace;position:fixed;top:16px;right:64px}#villain-hud{text-align:center;pointer-events:none;position:fixed;top:62px;left:50%;transform:translate(-50%)}#villain-info{letter-spacing:.12em;color:#ff8a8a;text-shadow:0 0 6px #000000b3;font:700 12px ui-monospace,Menlo,monospace}#villain-hp{--hp:100%;background:#00000080;border-radius:3px;width:160px;height:6px;margin:4px auto 0;display:none;overflow:hidden}#villain-hp:after{content:"";height:100%;width:var(--hp);background:#ff2a2a;transition:width .15s;display:block}#toast{letter-spacing:.1em;color:#fff;text-shadow:0 0 16px #3cc8ffe6;opacity:0;pointer-events:none;font-family:ui-monospace,Menlo,monospace;font-size:34px;font-weight:800;transition:opacity .25s;position:fixed;top:28%;left:50%;transform:translate(-50%)}#toast.on{opacity:1}#lens-frame{pointer-events:none;will-change:transform;z-index:1;background:radial-gradient(54% 130%,#0000 70%,#3cbeff24 82%,#2896e64d 90%,#96141e9e 96%,#6e0a14d9 100%),radial-gradient(circle,#8ce6ff14 1px,#0000 1.4px) 0 0/7px 7px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(54% 130%,#0000 30%,#000 100%);mask-image:radial-gradient(54% 130%,#0000 30%,#000 100%)}#lens{z-index:2;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}#sense{pointer-events:none;width:100%;height:100%;position:fixed;inset:0}#caption{color:#dfe9ff;text-align:center;pointer-events:none;opacity:0;background:#080c18b8;border:1px solid #78aaff59;border-radius:10px;max-width:min(720px,90vw);padding:8px 16px;font-size:15px;transition:opacity .2s;position:fixed;bottom:52px;left:50%;transform:translate(-50%)}#caption.on{opacity:1}#intro{z-index:50;pointer-events:none;justify-content:center;align-items:flex-end;padding:20px 20px 34px;display:flex;position:fixed;inset:0}#intro[hidden]{display:none}.intro-card{text-align:center;z-index:2;pointer-events:auto;background:#080c18e6;border:1px solid #78aaff59;border-radius:14px;flex-direction:column;align-items:center;gap:8px;width:min(520px,100%);padding:14px 18px 12px;display:flex;position:relative;box-shadow:0 8px 40px #0009}.intro-art{aspect-ratio:200/130;width:min(250px,60vw)}.intro-art svg{width:100%;height:100%}.intro-card h2{color:#fff;letter-spacing:.06em;margin:0;font-size:20px}.intro-card p{color:#ffffffe0;min-height:2.8em;margin:0;font-size:15px;line-height:1.4}.intro-card .intro-hint{opacity:.5;min-height:0;font-size:11px}.intro-card button{padding:8px 18px}.intro-dots{gap:7px;display:flex}.intro-dots i{background:#ffffff40;border-radius:50%;width:8px;height:8px}.intro-dots i.on{background:#e11b22}#intro-spots{pointer-events:none;z-index:1;position:fixed;inset:0}.intro-spot{border:3px solid #ffc65c;border-radius:12px;animation:1.2s ease-in-out infinite spot-pulse;position:fixed;box-shadow:0 0 0 4px #ffc65c40,0 0 24px #ffc65cb3}@keyframes spot-pulse{50%{box-shadow:0 0 0 8px #ffc65c1f,0 0 34px #ffc65ce6}}#intro-status{letter-spacing:.04em;color:#ffc65c;min-height:1.3em;font-size:14px;font-weight:700}#intro-status.ok{color:#6be08a}#intro-status.wait{animation:1.4s ease-in-out infinite spot-pulse-text}@keyframes spot-pulse-text{50%{opacity:.45}}#replay{color:#fff;text-align:center;pointer-events:none;z-index:40;background:#080c18d9;border:1px solid #ffc65c99;border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:12px 18px;font-size:16px;display:none;position:fixed;top:28%;left:50%;transform:translate(-50%)}#replay.on{display:flex}#replay small{opacity:.75;font-size:13px}#start{z-index:5;text-align:center;background:#07040a;flex-direction:column;justify-content:center;align-items:center;gap:22px;padding:24px;display:flex;position:fixed;inset:0}#start.hidden{display:none}#start:before{content:"";filter:saturate(1.05);background:radial-gradient(70% 60%,#040810c7,#04081059 100%),url(/bg.jpg) 50%/cover;position:absolute;inset:0}#start:after{content:"";pointer-events:none;background:radial-gradient(54% 130%,#0000 70%,#3cbeff24 82%,#2896e64d 90%,#96141e9e 96%,#6e0a14d9 100%),radial-gradient(circle,#8ce6ff1a 1px,#0000 1.4px) 0 0/7px 7px;position:absolute;inset:0}#start>*{z-index:1;position:relative}.start-panel{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:linear-gradient(#041624c7,#04162499);border:1px solid #78e6ff66;border-left:3px solid #78e6ff;border-right:3px solid #78e6ff;flex-direction:column;align-items:center;gap:16px;max-width:820px;padding:30px 48px 28px;display:flex;box-shadow:0 0 40px #3cbeff2e}#start h1{white-space:nowrap;letter-spacing:.08em;color:#ff3a40;text-shadow:0 0 28px #e11b228c;margin:0;font-size:clamp(26px,6.2vw,68px);font-weight:900;line-height:1}#start h1 span{color:#78e6ff;text-shadow:0 0 28px #50d2ffb3}#start p{max-width:520px;margin:0}#status{letter-spacing:.04em;color:#bef4ffd9;font:13px/1.6 ui-monospace,Menlo,monospace}.chips{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.chips span{letter-spacing:.2em;color:#78e6ff;background:#78e6ff12;border:1px solid #78e6ff66;padding:4px 12px;font:700 10px ui-monospace,Menlo,monospace}#start #btn-cam,#start #btn-share{letter-spacing:.22em;text-transform:uppercase;color:#e6fbff;text-shadow:0 0 8px #50d2ffe6;background:#3cbeff33;border:1px solid #78e6ff;border-radius:0;width:min(360px,100%);padding:16px 26px;font:700 16px ui-monospace,Menlo,monospace;transition:background .15s,box-shadow .15s;box-shadow:0 0 18px #3cbeff4d,inset 0 0 18px #3cbeff1f}#start #btn-cam:hover:not(:disabled),#start #btn-share:hover:not(:disabled){background:#3cbeff57;box-shadow:0 0 28px #3cbeff99,inset 0 0 18px #3cbeff33}#start .link{letter-spacing:.16em;text-transform:uppercase;color:#bef4ff80;background:0 0;border:0;border-bottom:1px solid #bef4ff33;border-radius:0;padding:2px 0;font:11px ui-monospace,Menlo,monospace}#start .link:hover{color:#ff9a9a;border-color:#ff787899}#start .link[hidden],.record[hidden]{display:none}#mobile-gate{flex-direction:column;align-items:center;gap:14px;display:none}#start.phone-gate #mobile-gate{display:flex}#start.phone-gate #btn-cam,#start.phone-gate #status,#start.phone-gate .record,#start.phone-gate #btn-reset{display:none}#gate-text{letter-spacing:.04em;color:#bef4ffe6;font:13px/1.6 ui-monospace,Menlo,monospace}#mobile-gate img{border:1px solid #78e6ff66;width:min(320px,100%);box-shadow:0 0 20px #3cbeff33}#start #btn-share{letter-spacing:.14em;padding:14px 18px;font-size:12px}@media (width<=600px){.start-panel{padding:22px 20px 20px}}#rotate{z-index:60;color:#e6fbff;text-align:center;letter-spacing:.12em;background:#040a12f0;flex-direction:column;justify-content:center;align-items:center;gap:8px;font:700 18px ui-monospace,Menlo,monospace;display:none;position:fixed;inset:0}#rotate small{opacity:.7;letter-spacing:.06em;font-size:11px;font-weight:400}@media (orientation:portrait){body.tried #rotate{display:flex}}.record{gap:12px;display:flex}.record div{background:#78e6ff12;border:1px solid #78e6ff59;border-top:2px solid #78e6ff;flex-direction:column;align-items:center;gap:2px;min-width:104px;padding:8px 14px 7px;display:flex}.record b{color:#e6fbff;text-shadow:0 0 10px #50d2ffb3;font:700 24px ui-monospace,Menlo,monospace}.record small{letter-spacing:.2em;color:#78e6ffcc;font:9px ui-monospace,Menlo,monospace}#start .credit{z-index:1;text-shadow:0 1px 3px #000;letter-spacing:.04em;color:#bef4ffa6;background:linear-gradient(#0000,#02060cd9);max-width:none;margin:0;padding:22px 24px 12px;font:10px/1.5 ui-monospace,Menlo,monospace;position:absolute;bottom:0;left:0;right:0}#start .credit a{color:#78e6ff;border-bottom:1px solid #78e6ff66;text-decoration:none}#start .credit a:hover{color:#fff;border-color:#fff}
