*{margin:0;padding:0;box-sizing:border-box}html,body,#app{width:100%;height:100%;overflow:hidden;background:#1f1711;color:#f0dfb8;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,system-ui,sans-serif;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}#app{position:relative}canvas{display:block;width:100%!important;height:100%!important}#hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;display:none;z-index:10}#hud.active{display:block}#hud>*{pointer-events:none}#hud .ability,#hud #btn-pause{pointer-events:auto}#hearts{position:absolute;top:calc(env(safe-area-inset-top,16px) + 8px);left:calc(env(safe-area-inset-left,16px) + 12px);display:flex;gap:6px}.heart{width:28px;height:28px;background:radial-gradient(circle at 35% 35%,#d0ad73,#c7372f 55%,#641313);clip-path:path("M14 25 L4 14 a5.2 5.2 0 0 1 7.5-7.2 l2.5 2.5 l2.5-2.5 a5.2 5.2 0 0 1 7.5 7.2 z");filter:drop-shadow(0 3px 5px rgba(0,0,0,.85)) drop-shadow(0 0 1px rgba(0,0,0,1))}.heart.empty{background:linear-gradient(180deg,#4a3425,#2a1810);filter:drop-shadow(0 2px 3px rgba(0,0,0,.55)) saturate(0);opacity:.55}#score-frame{position:absolute;top:calc(env(safe-area-inset-top,16px) + 6px);left:50%;transform:translate(-50%);width:130px;height:56px;background:url(/sprites/frame_score.webp) center/contain no-repeat;display:flex;align-items:center;justify-content:center}#score{font-size:26px;font-weight:900;letter-spacing:.08em;color:#2d1810;text-shadow:0 1px 0 rgba(240,223,184,.6),0 0 4px rgba(240,223,184,.6)}#boss-bar{position:absolute;top:calc(env(safe-area-inset-top,16px) + 70px);left:50%;transform:translate(-50%);width:min(420px,70vw);display:none;flex-direction:column;gap:4px;align-items:center}#boss-bar.visible{display:flex}#boss-bar-label{font-size:12px;font-weight:800;letter-spacing:.2em;color:#f0dfb8;text-shadow:0 1px 4px rgba(0,0,0,.8)}#boss-bar-track{width:100%;height:12px;background:#140804c7;border:2px solid rgba(32,24,18,1);outline:1px solid rgba(208,173,115,.5);border-radius:6px;overflow:hidden}#boss-bar-fill{height:100%;width:100%;background:linear-gradient(90deg,#c7372f,#9f1f1f);transition:width .2s ease-out}#fry-ammo{position:absolute;bottom:calc(env(safe-area-inset-bottom,16px) + 96px);left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:3px;pointer-events:none;z-index:11}#fry-ammo-pips{display:flex;gap:3px}.fry-pip{width:12px;height:4px;background:#e6bd68;border:1px solid rgba(32,24,18,.9);border-radius:1px;box-shadow:0 1px 2px #0000008c;transform:skew(-10deg)}.fry-pip.empty{background:#4a34258c}#fry-ammo.reloading .fry-pip{background:#e6bd6866;animation:fry-reload-pulse .6s infinite ease-in-out alternate}@keyframes fry-reload-pulse{0%{opacity:.4}to{opacity:1}}#fry-ammo-label{font-size:9px;font-weight:800;letter-spacing:.2em;color:#d0ad73;text-shadow:0 1px 2px rgba(0,0,0,.85)}#fry-ammo.reloading #fry-ammo-label:after{content:" · RELOADING";color:#e6bd68}#bonus-indicators{position:absolute;top:calc(env(safe-area-inset-top,16px) + 42px);left:calc(env(safe-area-inset-left,16px) + 12px);display:flex;flex-direction:column;gap:4px}.bonus-badge{display:none;background:#201812d1;border:1px solid rgba(208,173,115,.5);border-radius:4px;padding:3px 8px;font-size:10px;font-weight:800;letter-spacing:.14em;color:#f0dfb8;text-shadow:0 1px 2px rgba(0,0,0,.8)}.bonus-badge.visible{display:inline-block}#badge-golden{color:#e6bd68;border-color:#e6bd68b3}#badge-shield{color:#c5d4d4;border-color:#8fa8adb3}#bonus-toast{position:absolute;top:30%;left:50%;transform:translate(-50%,-50%) scale(.85);background:#201812e6;border:2px solid rgba(208,173,115,.6);border-radius:6px;padding:8px 22px;font-size:18px;font-weight:900;letter-spacing:.2em;color:#e6bd68;text-shadow:0 2px 4px rgba(0,0,0,.8);opacity:0;transition:opacity .2s,transform .24s cubic-bezier(.2,1.4,.4,1);pointer-events:none}#bonus-toast.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}#crosshair{position:absolute;top:50%;left:50%;width:28px;height:28px;margin:-14px 0 0 -14px;border:2px solid #ffffff;border-radius:50%;opacity:.95;box-shadow:0 0 0 2px #0000008c,0 0 14px #ffffff73;transition:border-color 90ms,transform 90ms,box-shadow .12s}#crosshair.hit{border-color:#ffb733;box-shadow:0 0 0 2px #0000008c,0 0 22px #ffb733e6;transform:scale(1.5)}#crosshair.empty{border-color:#9f1f1f;box-shadow:0 0 0 2px #0000008c,0 0 10px #9f1f1fb3}#crosshair.reloading{border-color:#e6bd68;animation:reload-spin .6s linear infinite}@keyframes reload-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#crosshair:after{content:"";position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;background:#ffb733;border-radius:50%;box-shadow:0 0 0 1.5px #000000b3}#crosshair:before{content:"";position:absolute;top:50%;left:50%;width:18px;height:18px;margin:-9px 0 0 -9px;background:linear-gradient(to right,transparent 7px,#ffffff 7px,#ffffff 11px,transparent 11px) top/100% 4px no-repeat,linear-gradient(to right,transparent 7px,#ffffff 7px,#ffffff 11px,transparent 11px) bottom/100% 4px no-repeat,linear-gradient(to bottom,transparent 7px,#ffffff 7px,#ffffff 11px,transparent 11px) left/4px 100% no-repeat,linear-gradient(to bottom,transparent 7px,#ffffff 7px,#ffffff 11px,transparent 11px) right/4px 100% no-repeat;pointer-events:none;filter:drop-shadow(0 0 1px rgba(0,0,0,.85))}#fpv-hands{position:absolute;bottom:env(safe-area-inset-bottom,0);left:50%;transform:translate(-50%);width:min(92vw,760px);height:min(58vh,430px);pointer-events:none;z-index:9;background-image:none;background-repeat:no-repeat;background-position:center bottom;background-size:contain;filter:drop-shadow(0 -12px 22px rgba(0,0,0,.42));transition:transform .22s cubic-bezier(.2,1.4,.4,1),filter .2s}#fpv-hands.charging{filter:drop-shadow(0 -10px 22px rgba(230,189,104,.5)) drop-shadow(0 -12px 22px rgba(0,0,0,.42))}#fpv-hands.firing{animation:fpv-fire .22s ease-out}#fpv-hands.ketchup{filter:drop-shadow(0 -10px 22px rgba(199,55,47,.6)) drop-shadow(0 -12px 22px rgba(0,0,0,.42));animation:fpv-ketchup .38s ease-out}#fpv-hands.golden{filter:drop-shadow(0 -12px 26px rgba(230,189,104,.8)) drop-shadow(0 -12px 22px rgba(0,0,0,.42))}@keyframes fpv-fire{0%{transform:translate(-50%) translateY(0)}40%{transform:translate(-50%) translateY(8px) scale(.97)}to{transform:translate(-50%) translateY(0)}}@keyframes fpv-ketchup{0%{transform:translate(-50%) translateY(0)}30%{transform:translate(-50%) translateY(-6px) scale(1.04)}60%{transform:translate(-50%) translateY(12px) scale(.96)}to{transform:translate(-50%) translateY(0)}}#ability-stack{position:absolute;bottom:calc(env(safe-area-inset-bottom,16px) + 18px);right:calc(env(safe-area-inset-right,16px) + 16px);display:flex;flex-direction:column;gap:20px;align-items:center}.ability{--ring: 100%;position:relative;width:96px;height:96px;border:3px solid rgba(255,255,255,.55);border-radius:50%;background:conic-gradient(#ffb733 0% var(--ring),rgba(255,255,255,.12) var(--ring) 100%),radial-gradient(circle at 50% 50%,#4a2818,#1f1711 80%);background-blend-mode:normal,normal;color:#fff5dc;cursor:pointer;touch-action:manipulation;display:flex;align-items:center;justify-content:center;flex-direction:column;box-shadow:0 6px 18px #000000b3,0 0 0 3px #00000073;opacity:.85;transition:opacity .12s,transform 80ms}.ability.ready{opacity:1}.ability.denied{animation:deny-pulse .22s}@keyframes deny-pulse{0%{transform:scale(1)}50%{transform:scale(.92);filter:hue-rotate(-20deg)}to{transform:scale(1)}}.ability:active{transform:scale(.92)}.ability-glyph{font-size:38px;line-height:1;filter:drop-shadow(0 2px 2px rgba(0,0,0,.75))}.ability-label{font-size:12px;font-weight:700;letter-spacing:.12em;opacity:1;margin-top:4px;text-shadow:0 1px 2px rgba(0,0,0,.85)}#btn-pause{position:absolute;top:calc(env(safe-area-inset-top,16px) + 6px);right:calc(env(safe-area-inset-right,16px) + 16px);width:42px;height:42px;border:2px solid rgba(32,24,18,.85);border-radius:8px;background:#201812c7;color:#f0dfb8;font-size:18px;cursor:pointer;touch-action:manipulation}#btn-pause:active{transform:scale(.92)}#boss-dialogue{position:absolute;top:calc(env(safe-area-inset-top,16px) + 130px);left:50%;transform:translate(-50%,-8px);background:#201812eb;border:2px solid #9f1f1f;border-radius:8px;padding:10px 18px;max-width:min(85vw,480px);font-size:15px;font-weight:800;letter-spacing:.08em;color:#f0dfb8;text-align:center;opacity:0;transition:opacity .24s,transform .24s;text-shadow:0 1px 3px rgba(0,0,0,.8)}#boss-dialogue.visible{opacity:1;transform:translate(-50%)}#training-objective{position:absolute;top:calc(env(safe-area-inset-top,16px) + 90px);left:50%;transform:translate(-50%);background:#201812eb;border:2px solid rgba(208,173,115,.7);border-radius:10px;padding:12px 22px;max-width:min(92vw,520px);text-align:center;display:none}#training-objective.visible{display:block}#training-title{font-size:12px;font-weight:800;letter-spacing:.2em;color:#e6bd68;margin-bottom:4px}#training-body{font-size:16px;font-weight:600;letter-spacing:.02em;color:#f0dfb8;line-height:1.3}#damage-numbers{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:12}.damage-number{position:absolute;display:none;font-weight:900;font-size:22px;letter-spacing:.04em;text-shadow:0 2px 0 rgba(0,0,0,.85),0 0 6px rgba(0,0,0,.7);transform:translate(-50%);pointer-events:none}#juice-flash{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:transparent;opacity:0;z-index:13;mix-blend-mode:screen}#low-hp-vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 50%,rgba(160,24,24,.35) 100%);opacity:0;transition:opacity .7s;z-index:11}#low-hp-vignette.on{opacity:1;animation:lowhp-pulse 1.6s infinite ease-in-out}@keyframes lowhp-pulse{0%,to{opacity:.55}50%{opacity:1}}#hit-flash{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse at center,#b41e1e00 50%,#b41e1e8c);opacity:0;transition:opacity .22s}#hit-flash.on{opacity:1}#cutscene-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:none;background:#0a0805;z-index:35}#cutscene-overlay.visible{display:block}#cutscene-video,#cutscene-poster{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}#cutscene-poster{display:none;object-fit:contain}#cutscene-caption{position:absolute;bottom:calc(env(safe-area-inset-bottom,16px) + 18px);left:50%;transform:translate(-50%);background:#201812d9;border:1px solid rgba(208,173,115,.5);border-radius:4px;padding:6px 18px;font-size:16px;font-weight:700;letter-spacing:.1em;color:#f0dfb8;text-align:center;max-width:90vw}#btn-skip-cutscene{position:absolute;top:calc(env(safe-area-inset-top,16px) + 12px);right:calc(env(safe-area-inset-right,16px) + 16px);background:#c87f3a;color:#1f1711;border:2px solid rgba(32,24,18,.85);border-radius:6px;padding:10px 22px;font-size:15px;font-weight:800;letter-spacing:.12em;cursor:pointer;touch-action:manipulation}#main-menu{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:22;background:radial-gradient(ellipse at center,#3a2418,#1f1711 80%)}#main-menu.hidden{display:none}#menu-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:.55;filter:sepia(.2) saturate(.85)}#menu-overlay-tint{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,#1f171173,#0f0b08d9 90%),linear-gradient(180deg,#0f0b0866,#0f0b088c);pointer-events:none}#menu-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:env(safe-area-inset-top,18px) 16px env(safe-area-inset-bottom,18px)}#menu-title{font-size:clamp(36px,9vw,64px);font-weight:900;letter-spacing:.06em;color:#f0dfb8;text-shadow:0 4px 0 #4a3425,0 10px 22px rgba(0,0,0,.75);text-align:center}#menu-subtitle{font-size:clamp(14px,3.5vw,18px);letter-spacing:.18em;color:#e6bd68;text-shadow:0 2px 4px rgba(0,0,0,.75);text-transform:uppercase}#menu-hero{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#d0ad73;opacity:.85;margin-bottom:14px}#menu-buttons{display:flex;flex-direction:column;gap:10px;margin-top:10px;width:min(420px,86vw)}.menu-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:#c87f3a;color:#1f1711;border:2px solid rgba(32,24,18,.95);border-radius:6px;padding:13px 22px;font-size:17px;font-weight:900;letter-spacing:.16em;cursor:pointer;touch-action:manipulation;box-shadow:0 6px #201812f2,0 10px 20px #0000008c;transition:transform 80ms,box-shadow 80ms}.menu-btn:active{transform:translateY(4px);box-shadow:0 2px #201812f2,0 4px 12px #0000008c}.menu-btn.primary{background:#e6bd68}.menu-btn.install{background:#4f5330;color:#f0dfb8}.menu-btn-label{font-size:17px;letter-spacing:.16em}.menu-btn-sub{font-size:10px;font-weight:600;letter-spacing:.06em;color:#1f1711b3;text-transform:none}#menu-footer{margin-top:18px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#d0ad73;opacity:.65}#menu-debug{margin-top:6px;font-size:10px;letter-spacing:.06em;color:#8d6a3d;font-family:SF Mono,Menlo,monospace;opacity:.55;-webkit-user-select:text;user-select:text}#capture-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:none;align-items:center;justify-content:center;pointer-events:none;z-index:18}body.desktop-mode #capture-overlay.visible{display:flex}.capture-card{background:#201812db;border:2px solid rgba(208,173,115,.7);border-radius:8px;padding:14px 26px;text-align:center}.capture-title{font-size:16px;font-weight:900;letter-spacing:.18em;color:#e6bd68}.capture-sub{margin-top:6px;font-size:11px;letter-spacing:.1em;color:#d0ad73;opacity:.85}.modal{position:absolute;top:0;right:0;bottom:0;left:0;display:none;align-items:center;justify-content:center;background:#0f0b08c7;z-index:32;padding:24px}.modal.visible{display:flex}.modal-card{width:min(420px,92vw);background:linear-gradient(180deg,#2a1e15,#1f1711);border:2px solid rgba(208,173,115,.6);border-radius:10px;padding:22px;display:flex;flex-direction:column;gap:12px;box-shadow:0 18px 50px #000000b3}.modal-title{font-size:22px;font-weight:900;letter-spacing:.2em;text-align:center;color:#e6bd68;margin-bottom:4px}.modal-body{font-size:14px;text-align:center;color:#f0dfb8;opacity:.88;line-height:1.4;margin-bottom:8px}.modal-btn{background:#c87f3a;color:#1f1711;border:2px solid rgba(32,24,18,.95);border-radius:6px;padding:12px 18px;font-size:14px;font-weight:800;letter-spacing:.14em;cursor:pointer;touch-action:manipulation;box-shadow:0 4px #201812d9;transition:transform 80ms,box-shadow 80ms}.modal-btn:active{transform:translateY(3px);box-shadow:0 1px #201812d9}.modal-btn.primary{background:#e6bd68}.modal-btn.warn{background:#9f1f1f;color:#f0dfb8}.modal-actions{display:flex;gap:8px;justify-content:space-between;margin-top:6px}.modal-actions .modal-btn{flex:1}.settings-row{display:flex;justify-content:space-between;align-items:center;padding:6px 4px;border-bottom:1px solid rgba(208,173,115,.18);font-size:15px;color:#f0dfb8}.settings-row:last-of-type{border-bottom:none}.difficulty-pills{display:flex;gap:4px}.diff-pill{background:#1f1711d9;color:#d0ad73;border:1.5px solid rgba(32,24,18,.95);border-radius:4px;padding:6px 10px;font-size:11px;font-weight:800;letter-spacing:.12em;cursor:pointer;touch-action:manipulation}.diff-pill.active{background:#c87f3a;color:#1f1711;border-color:#e6bd68}.diff-pill:active{transform:scale(.96)}.controls-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14px;color:#f0dfb8}.controls-list li{display:flex;align-items:center;gap:10px;padding:4px 0;border-bottom:1px solid rgba(208,173,115,.12)}.controls-list li:last-child{border-bottom:none}kbd{display:inline-block;min-width:28px;padding:2px 8px;background:#1f1711;border:1.5px solid #c87f3a;border-radius:3px;color:#e6bd68;font-family:SF Mono,Menlo,monospace;font-size:11px;font-weight:800;letter-spacing:.08em;text-align:center}.ability .key-badge{position:absolute;top:-6px;right:-6px;background:#1f1711;color:#e6bd68;border:1.5px solid #c87f3a;border-radius:3px;padding:1px 4px;font-size:10px;font-weight:800;font-family:SF Mono,Menlo,monospace;display:none}body.desktop-mode .ability .key-badge{display:inline-block}.toggle{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:48px;height:26px;background:#1f1711d9;border:2px solid rgba(32,24,18,.95);border-radius:13px;position:relative;cursor:pointer;outline:none;transition:background-color .16s}.toggle:before{content:"";position:absolute;top:1px;left:1px;width:18px;height:18px;background:#c87f3a;border-radius:50%;transition:transform .16s,background-color .16s}.toggle:checked{background:#4f5330}.toggle:checked:before{transform:translate(22px);background:#e6bd68}.endscreen{position:absolute;top:0;right:0;bottom:0;left:0;display:none;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;background:radial-gradient(ellipse at center,#f0dfb81a,#0a0805f0 70%);z-index:25;padding:24px}.endscreen.visible{display:flex}.endscreen-art{width:clamp(180px,50vw,360px);height:auto;filter:drop-shadow(0 18px 30px rgba(0,0,0,.65));animation:pop .48s cubic-bezier(.2,1.4,.5,1)}.endscreen-title{font-size:clamp(48px,12vw,92px);font-weight:900;letter-spacing:.08em;color:#e6bd68;text-shadow:0 4px 0 #6b3a10,0 10px 24px rgba(0,0,0,.65)}.endscreen-title.lose{color:#c7372f;text-shadow:0 4px 0 #4a0f0f,0 10px 24px rgba(0,0,0,.65)}.endscreen-sub{font-size:16px;opacity:.85;max-width:460px}.endscreen-badge{background:#f0dfb8;color:#2d1810;padding:6px 18px;border-radius:24px;font-size:14px;font-weight:800;letter-spacing:.18em}.endscreen-actions{display:flex;gap:10px}.endscreen-btn{background:#c87f3a;color:#1f1711;border:2px solid rgba(32,24,18,.95);padding:14px 38px;font-size:16px;font-weight:900;letter-spacing:.14em;border-radius:6px;cursor:pointer;margin-top:8px;box-shadow:0 6px #201812f2}.endscreen-btn:active{transform:translateY(4px);box-shadow:0 2px #201812f2}.endscreen-btn.secondary{background:#4f5330;color:#f0dfb8}@keyframes pop{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}#bow-charge{position:absolute;bottom:calc(env(safe-area-inset-bottom,12px) + 4px);left:50%;transform:translate(-50%);width:220px;height:5px;background:#f0dfb82e;border-radius:3px;overflow:hidden;display:none;z-index:9}#bow-charge.active{display:block}#bow-charge-fill{height:100%;background:linear-gradient(90deg,#c87f3a,#e6bd68);width:0%;transition:width 50ms linear}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#bark-layer{position:absolute;bottom:calc(env(safe-area-inset-bottom,16px) + 110px);left:calc(env(safe-area-inset-left,16px) + 16px);max-width:min(60vw,360px);background:#201812eb;border:2px solid rgba(208,173,115,.6);border-radius:6px;padding:8px 14px;opacity:0;transition:opacity .22s;pointer-events:none;z-index:12}#bark-layer.visible{opacity:1}#bark-speaker{font-size:10px;font-weight:800;letter-spacing:.18em;color:#e6bd68;margin-bottom:2px;text-transform:uppercase}#bark-text{font-size:14px;font-weight:600;color:#f0dfb8;line-height:1.3}#objective-card{position:absolute;top:calc(env(safe-area-inset-top,16px) + 70px);left:calc(env(safe-area-inset-left,16px) + 12px);max-width:min(60vw,320px);background:#201812d9;border:1px solid rgba(208,173,115,.5);border-radius:4px;padding:6px 12px;font-size:12px;font-weight:700;letter-spacing:.08em;color:#f0dfb8;opacity:0;transition:opacity .24s;pointer-events:none;z-index:11}#objective-card.visible{opacity:1}#sticker-popup{position:absolute;top:24%;left:50%;transform:translate(-50%,-50%) scale(.85);background:linear-gradient(180deg,#f0dfb8,#d7c49a);color:#1f1711;border:3px dashed rgba(32,24,18,.85);border-radius:8px;padding:12px 26px;text-align:center;opacity:0;transition:opacity .22s,transform .24s cubic-bezier(.2,1.4,.4,1);pointer-events:none;z-index:14}#sticker-popup.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.sticker-popup-title{font-size:10px;letter-spacing:.2em;color:#9f1f1f;font-weight:800;margin-bottom:4px}#sticker-name{font-size:17px;font-weight:900;letter-spacing:.06em}
