:root{color-scheme:dark;--bg:#13171b;--panel:#1d2328;--line:#343b40;--text:#ece9df;--muted:#969e9e;--green:#c5d79c;--green-dark:#778965;--red:#d76765;--gold:#d8b478;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-synthesis:none}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:#0b0d10;color:var(--text);-webkit-tap-highlight-color:transparent}button{color:inherit;font:inherit;cursor:pointer;border:0;background:transparent;padding:0;touch-action:manipulation}button:disabled{cursor:default;opacity:.4}button:focus-visible{outline:2px solid var(--green);outline-offset:4px}button:active:not(:disabled){filter:brightness(1.15)}h1,h2,h3,p{margin:0}h1{font-size:28px;line-height:1.25;font-weight:800;letter-spacing:.025em}h2{font-size:20px}h3{font-size:15px;margin:23px 0 12px}small{font-size:11px}b,strong{font-weight:700}.ui-icon{width:20px;height:20px;flex:none;vertical-align:middle}.ambient{position:fixed;inset:-60px;background:linear-gradient(#101318c9,#101318f5),url('./assets/scene-leon-distinct.webp') center/cover;filter:blur(28px);opacity:.65;pointer-events:none}.game-shell{position:relative;display:flex;flex-direction:column;margin:auto;width:100%;height:100dvh;isolation:isolate;overflow:hidden;background:var(--bg)}.screen-content{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#424a44 transparent}.screen-content>section{min-height:100%}.boot{margin:auto;text-align:center;letter-spacing:3px}.boot h1{font-size:45px;color:var(--green);margin:15px}.boot p{color:var(--muted);font-size:12px}.sprite,.item-art{display:inline-block;width:calc(var(--art-height)*var(--art-ratio));height:var(--art-height);background-repeat:no-repeat;flex:none;vertical-align:middle;max-width:100%}.sprite{background-image:url('./assets/sprites.webp');filter:drop-shadow(0 4px 2px #0007)}.item-art{background-image:url('./assets/icons.webp');filter:drop-shadow(0 3px 3px #0005)}.icon-button{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line);border-radius:9px;background:#14181b70;flex:none}.icon-button .ui-icon{width:19px;height:19px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2.5px;color:var(--green);margin-bottom:8px}.muted{color:var(--muted);font-size:13px;line-height:1.7}.primary,.secondary{min-height:51px;width:100%;display:flex;align-items:center;justify-content:center;gap:12px;font-size:15px;font-weight:700;border-radius:7px;transition:filter .15s}.primary{background:var(--green);color:#232b22;border:1px solid #d6e7b1;box-shadow:0 3px 0 #7587633f}.primary .ui-icon{width:20px}.secondary{background:#20272a;border:1px solid var(--line);color:#d9ded2}.text-button{width:100%;min-height:39px;text-align:center;font-size:13px;color:var(--muted)}.tiny-button{padding:7px 12px;border:1px solid #70776a;border-radius:5px;font-size:12px;white-space:nowrap}.tiny-button.green{background:var(--green);color:#222a23;border-color:var(--green);font-weight:700}.green-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--green);box-shadow:0 0 7px #c6d89570}.section-head{padding-top:9px}.section-head h1{margin-bottom:10px}.section-head>.muted{font-size:12px}.option-list{display:flex;flex-direction:column;gap:10px}.choice-row{min-height:74px;width:100%;border:1px solid var(--line);background:linear-gradient(120deg,#242a2f,#1c2227);border-radius:8px;padding:12px 15px;display:flex;align-items:center;gap:14px;text-align:left}.choice-row>span:not(.item-art){flex:1}.choice-row strong{display:block;font-size:15px;line-height:1.5}.choice-row small{display:block;color:var(--muted);font-size:12px;line-height:1.7;margin-top:3px}.choice-row>.ui-icon{width:18px;color:#89907c}.choice-row>b{font-size:12px;color:var(--green)}
.home-screen{position:relative;display:flex;flex-direction:column;justify-content:space-between;height:100%;padding:calc(23px + env(safe-area-inset-top)) 24px calc(13px + env(safe-area-inset-bottom));overflow-y:auto}.home-art{position:absolute;z-index:-1;inset:0;background:linear-gradient(0deg,#14181b 0%,#14181bf0 28%,#11151a40 54%,#12151ba0 100%),url('./assets/scene-leon-distinct.webp') center 4%/100% auto no-repeat;background-color:#111519}.home-top{display:flex;align-items:center;justify-content:space-between}.brand{font-size:9px;font-weight:600;letter-spacing:2px;color:#abb4a6}.brand i{display:inline-block;width:6px;height:6px;background:#d7726d;box-shadow:0 0 9px #b43835;border-radius:50%;margin-right:9px}.home-title{margin-top:22px;margin-bottom:auto;position:relative}.home-title .eyebrow{font-size:9px;letter-spacing:2.2px;color:#a9b2a8;margin-bottom:13px}.home-title h1{font-family:"Songti SC","Noto Serif CJK SC","SimSun",serif;font-size:53px;font-weight:900;letter-spacing:4px;color:#eae8dd;text-shadow:0 4px 15px #0009;line-height:1.13}.home-title h1 span{display:block;font-size:49px;color:var(--green);letter-spacing:3px;margin-top:4px}.home-title>p{font-size:12px;line-height:1.9;letter-spacing:1px;color:#b5b9b2;margin-top:16px;text-shadow:0 2px 5px #000}.home-bottom{padding-top:24px;position:relative;margin-top:90px}.choose-caption{display:flex;justify-content:space-between;font-size:11px;letter-spacing:1.5px;margin-bottom:11px;color:#bcc4b5}.choose-caption span:last-child{color:#707b77;font-size:9px}.hero-select{display:flex;gap:7px}.hero-choice{position:relative;flex:1;min-width:0;height:108px;border:1px solid #404847;background:#181e22b5;border-radius:8px;display:flex;flex-direction:column;align-items:center;overflow:hidden;padding:3px 0 7px}.hero-choice.active{border-color:var(--green);background:linear-gradient(#3b473680,#263126db);box-shadow:inset 0 0 0 1px #bbd48c20}.hero-choice .sprite{height:63px;width:calc(63px*var(--art-ratio));margin:0 auto 0}.hero-choice strong{font-size:13px;display:block;text-align:center}.hero-choice small{font-size:9px;color:#a2aaa1;display:block;margin-top:4px}.hero-choice i{position:absolute;right:8px;top:8px;width:4px;height:4px;background:var(--green);border-radius:50%}.hero-trait{margin:12px 0 19px;line-height:1.6;display:flex;gap:9px;font-size:11px;min-height:32px}.hero-trait b{color:var(--green);white-space:nowrap}.hero-trait span{color:#a4aca5}.start-button{justify-content:space-between;padding:0 19px;font-size:16px;height:55px}.start-button small{margin-left:auto;font-size:11px;font-weight:400}.home-meta{display:flex;justify-content:space-between;align-items:center;margin-top:18px;color:#8c9691;font-size:10px}.sound-toggle{display:flex;align-items:center;gap:4px;white-space:nowrap}.sound-toggle .ui-icon{width:13px;height:13px}.fan-note{color:#59635f;text-align:center;font-size:8px;letter-spacing:1px;margin-top:13px}.difficulty{display:flex;border:1px solid var(--line);padding:3px;border-radius:6px;margin-bottom:14px}.difficulty button{flex:1;font-size:11px;padding:7px;color:var(--muted);border-radius:3px}.difficulty .active{background:#343f31;color:var(--green)}
.hud{height:77px;flex:none;position:relative;display:flex;align-items:center;gap:9px;padding:calc(9px + env(safe-area-inset-top)) 15px 14px;background:#191f23;border-bottom:1px solid #30373a;height:calc(77px + env(safe-area-inset-top))}.hero-badge{display:flex;gap:9px;align-items:center;text-align:left;flex:1}.hero-badge>.sprite{height:44px;width:calc(44px*var(--art-ratio));margin-left:1px}.hero-badge strong{display:flex;align-items:center;gap:9px;font-size:14px}.hero-badge strong small{font:9px ui-monospace,monospace;color:var(--green);background:#c9d99515;padding:2px 4px;border-radius:2px}.hp-line{display:block;color:#d8827c;font:12px ui-monospace,monospace;margin-top:6px}.hp-line .ui-icon{width:11px;height:11px;margin-right:2px;fill:#d8827c55}.hp-line>span{color:#8a9290}.hud-counters{display:flex;gap:12px;font:12px ui-monospace,monospace;align-items:center}.hud-counters .ui-icon{width:14px;height:14px;margin-right:3px}.infection{color:#a298b5}.infection.danger{color:#d387a5}.infection small{font-size:9px;color:#6d7476}.gold{color:var(--gold);white-space:nowrap}.hud .icon-button{width:32px;height:32px;margin-left:1px}.hud-bars{position:absolute;bottom:5px;left:15px;right:15px;background:#452d31;height:3px;border-radius:2px;overflow:hidden}.hp-fill{display:block;background:#bb6b63;height:100%}.xp-track{position:absolute;left:15px;right:15px;bottom:0;height:2px;background:#343b31}.xp-track span{display:block;background:#94a76d;height:100%}.bottom-nav{position:relative;height:calc(55px + env(safe-area-inset-bottom));padding:0 10px env(safe-area-inset-bottom);flex:none;display:flex;border-top:1px solid #363c3e;background:#191f23;z-index:3}.bottom-nav button{position:relative;flex:1;display:flex;align-items:center;justify-content:center;gap:7px;font-size:11px;color:#87928d}.bottom-nav .ui-icon{width:18px;height:18px}.bottom-nav button.active{color:var(--green)}.bottom-nav button>b{position:absolute;left:calc(50% + 13px);top:9px;font-size:8px;line-height:12px;border-radius:6px;padding:0 4px;background:var(--green);color:#1f281b}.save-indicator{position:absolute;right:15px;top:calc(81px + env(safe-area-inset-top));font-size:8px;letter-spacing:.5px;color:#737e71;z-index:4;cursor:pointer;pointer-events:auto}.save-indicator.error{color:#db8a70}.save-indicator.saving,.save-indicator.loading{color:#a2aa85}
.route-screen{padding:19px 22px 17px;display:flex;flex-direction:column}.route-screen .section-head h1{font-size:28px;margin-bottom:8px}.route-legend{display:flex;gap:16px;color:#87928d;font-size:10px;padding-top:17px;padding-bottom:6px}.route-legend span{display:flex;align-items:center;gap:4px}.route-legend .ui-icon{width:12px;height:12px}.route-board{position:relative;flex:1;min-height:455px;width:100%;margin:3px auto 0}.route-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.route-lines path{stroke:#414a48;stroke-width:.45;fill:none;stroke-dasharray:2 2}.route-lines path.traveled{stroke:#aec487;stroke-width:.65;stroke-dasharray:none}.map-watermark{position:absolute;top:0;left:50%;transform:translate(-50%,-5%);opacity:.055;pointer-events:none}.route-node{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;flex-direction:column;width:62px;gap:5px;font-size:9px;color:#83908a;opacity:1}.route-node:disabled{opacity:1}.node-circle{display:grid;place-items:center;width:35px;height:35px;border:1px solid #414b47;border-radius:50%;background:#1e2527;box-shadow:0 0 0 4px #141a1c}.node-circle .ui-icon{width:16px;height:16px}.route-node.boss .node-circle{width:50px;height:50px;background:#32272f;border-color:#755256;color:#bc898f}.route-node.boss .ui-icon{width:26px;height:26px}.route-node.elite .node-circle{border-color:#736352;background:#292727;color:#bda082}.route-node.shop .node-circle{color:#b7a675}.route-node.camp .node-circle{color:#8ea1b3}.route-node.reachable{color:var(--green)}.route-node.reachable .node-circle{border-color:var(--green);background:#354031;box-shadow:0 0 0 4px #18201c,0 0 14px #b4d48e19}.route-node.reachable i{position:absolute;left:50%;bottom:-7px;width:3px;height:3px;background:var(--green);border-radius:50%}.route-node.visited{color:#789465}.route-node.visited .node-circle{border-color:#6d855b;background:#263123;color:#afc98a}.route-node.passed{opacity:.32}.route-start{position:absolute;bottom:0;left:0;right:0;font:8px ui-monospace,monospace;color:#616d67;text-align:center;letter-spacing:1px}.route-start .green-dot{margin-right:6px}.route-footer{display:flex;justify-content:space-between;padding:12px 0 0;color:#8a9690;border-top:1px solid #333d36;font-size:10px}.route-footer b{color:#c1c7b9;margin-left:6px}.route-footer>span:last-child{font:11px ui-monospace,monospace;color:#9dafa0}
.screen-battle .screen-content{overflow-y:auto}.battle-screen{display:flex;flex-direction:column;padding:0 0 7px;height:100%;min-height:544px}.battle-caption{display:flex;align-items:center;justify-content:space-between;padding:14px 17px 6px;flex:none;min-height:59px}.chapter-mini{font-size:9px;color:#8f9a94;letter-spacing:1px}.battle-caption h1{font-size:18px;margin-top:4px}.round-badge{display:flex;align-items:center;gap:8px;font-size:9px;color:#8e998e;background:#252e28;border:1px solid #3d473b;padding:7px 9px;border-radius:4px}.round-badge b{font:16px ui-monospace,monospace;color:var(--green)}.arena{position:relative;flex:1;min-height:184px;max-height:300px;isolation:isolate;overflow:hidden;margin-top:0;background:linear-gradient(0deg,#21272c80,#18202320),radial-gradient(ellipse at 80% 40%,#49303d80,transparent 68%);border-bottom:1px solid #3b403d}.arena.act-1{background:linear-gradient(0deg,#202928c0,transparent),radial-gradient(ellipse at 75% 35%,#3f4d3c70,transparent 70%)}.arena.act-2{background:linear-gradient(0deg,#252331a0,transparent),radial-gradient(ellipse at 80% 40%,#49496665,transparent 70%)}.arena-code{position:absolute;top:13px;left:19px;color:#7c8b8523;font:700 32px ui-monospace,monospace;letter-spacing:6px}.arena-code small{display:block;font-size:6px;letter-spacing:2px;margin-top:4px}.arena-floor{position:absolute;bottom:0;left:0;right:0;height:65px;z-index:-1;opacity:.45;background:repeating-linear-gradient(0deg,transparent 0 20px,#4d50512e 20px 21px),repeating-linear-gradient(110deg,transparent 0 60px,#5a5a5833 60px 61px);transform:perspective(180px) rotateX(21deg);border-top:1px solid #48524c4f}.enemy-row{position:absolute;right:17px;top:12px;display:flex;justify-content:center;gap:11px;max-width:calc(100% - 72px)}.enemy{display:flex;flex-direction:column;align-items:center;position:relative;min-width:68px;max-width:185px}.enemy .sprite{height:121px;width:calc(121px*var(--art-ratio));animation:breathe 2.9s ease-in-out infinite}.enemy-row.count-1 .enemy .sprite{height:var(--art-height);width:calc(var(--art-height)*var(--art-ratio))}.enemy-row.count-3{right:10px;max-width:calc(100% - 53px);gap:5px}.count-3 .enemy .sprite{height:98px;width:calc(98px*var(--art-ratio))}.count-3 .enemy{min-width:67px}.intent{display:flex;align-items:center;justify-content:center;gap:4px;min-height:25px;padding:3px 7px;margin-bottom:3px;font-size:10px;white-space:nowrap;color:#abb99c;border:1px solid #67755780;border-radius:4px;background:#202922}.intent .ui-icon{height:12px;width:12px}.intent.attack-intent{background:#3a282a;border-color:#75474a;color:#e19b90}.intent.stun-intent{color:#d8c284;background:#383327}.enemy-name{font-size:10px;margin:4px 0 5px;white-space:nowrap;display:flex;align-items:center;gap:4px;text-shadow:0 2px 3px #000}.enemy-name i{font-size:8px;color:#ed9c7b;font-style:normal}.enemy-hp{position:relative;height:13px;width:100%;max-width:100px;min-width:66px;border:1px solid #694247;background:#34292d;border-radius:3px;overflow:hidden}.enemy-hp i{position:absolute;top:0;bottom:0;left:0;background:#9f565e}.enemy-hp b{position:absolute;inset:0;display:grid;place-items:center;font:8px ui-monospace,monospace;color:#f7e0db;letter-spacing:.4px}.enemy-status{display:flex;flex-wrap:wrap;justify-content:center;gap:3px;max-width:120px;margin-top:4px;min-height:14px}.status{font-size:8px;padding:2px 3px;border-radius:3px;background:#3b4242;color:#c0cac0}.status.burn{background:#743e2f;color:#ecc0a2}.status.poison{background:#3e5134;color:#bfd88b}.status.vuln{background:#593443;color:#e4a6ba}.status.weak{background:#433f55;color:#c5b7dc}.status.stun{background:#655830;color:#e3d092}.status.block{background:#32434d;color:#abcddd}.survivor{position:absolute;bottom:13px;left:22px;display:flex;align-items:flex-end;z-index:1}.survivor .sprite{animation:breathe 3.5s ease-in-out infinite;transform-origin:bottom}.survivor-shield{position:absolute;bottom:0;left:-8px;border:1px solid #627b84;background:#253740e8;padding:4px 6px;border-radius:6px;font:12px ui-monospace,monospace;color:#b4d1dc;box-shadow:0 2px 4px #0007}.survivor-shield .ui-icon{width:13px;height:13px}.focus-badge,.retain-badge{position:absolute;top:1px;left:-10px;font-size:8px;background:#494730;color:#ddce95;white-space:nowrap;padding:3px 4px;border-radius:3px}.retain-badge{top:23px;background:#36454b;color:#abc8cf}.arena-threat{position:absolute;bottom:9px;right:18px;font-size:9px;color:#929d95;text-align:right;display:flex;flex-direction:column;gap:3px}.arena-threat b{font:12px ui-monospace,monospace;color:#c2817c;margin-left:4px}.arena-threat small{font-size:8px;color:#ba7b97}.targeting .enemy{cursor:crosshair}.targeting .enemy .sprite{filter:drop-shadow(0 0 7px #d2987880)}.target-reticle{position:absolute;bottom:-1px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:8px;display:flex;align-items:center;gap:3px;color:#e6c38f;background:#3f3528;border:1px solid #998465;padding:3px 5px;border-radius:3px;z-index:2}.target-reticle .ui-icon{width:12px;height:12px}.enraged .sprite{filter:drop-shadow(0 0 9px #be4f6077)}.play-prompt{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:38px;padding:5px 17px;color:#89958d;font-size:10px;flex:none}.play-prompt.has-card{color:var(--green);background:#a9bf8210}.play-prompt>span{line-height:1.6}.hint-button{border:1px solid #48554c;border-radius:50%;width:17px;height:17px;font-size:10px;flex:none}.hand{display:flex;overflow-x:auto;overflow-y:hidden;gap:9px;flex:none;padding:7px 17px 8px;min-height:208px;scroll-snap-type:x proximity;scrollbar-width:none}.hand::-webkit-scrollbar{display:none}.game-card{position:relative;display:flex;flex-direction:column;text-align:center;align-items:stretch;flex:0 0 128px;min-height:190px;padding:13px 10px 0;border:1px solid #6b6460;border-radius:7px;background:linear-gradient(145deg,#4c3937,#2b2829);box-shadow:0 4px 6px #0004;overflow:hidden;scroll-snap-align:center;transition:transform .16s,border-color .16s}.game-card.skill{border-color:#5c6b62;background:linear-gradient(145deg,#38483f,#252e2b)}.game-card.tactic{border-color:#66667c;background:linear-gradient(145deg,#3e4053,#282b35)}.game-card.curse{background:linear-gradient(135deg,#583e54,#352d37);border-color:#895c7c}.card-cost{position:absolute;left:8px;top:8px;display:grid;place-items:center;width:21px;height:24px;border-radius:5px;border:1px solid #c2b89880;background:#22271ed9;color:#e7e4cb;font:700 16px ui-monospace,monospace}.card-rarity{position:absolute;right:8px;top:12px;font-size:8px;color:#b1b2a2;letter-spacing:1px}.card-name{margin-top:21px;font-size:13px;white-space:nowrap;line-height:20px}.card-name>b{color:var(--green);font-size:12px}.card-art{display:flex;align-items:center;justify-content:center;height:72px;position:relative;background:radial-gradient(ellipse,#bbbb9d15,transparent 72%);margin:0 -4px}.card-art .item-art{max-width:91px}.card-text{font-size:12px;line-height:1.6;color:#d9d7cb;flex:1;padding-top:1px;padding-bottom:10px;min-height:53px}.card-footer{font-size:8px;display:flex;justify-content:space-between;color:#b3b7a6;padding:7px 0;border-top:1px solid #ddd6bc18;margin-top:auto;letter-spacing:.5px}.game-card.unavailable{opacity:.53}.game-card.selected{border-color:var(--green);box-shadow:0 0 0 2px #cadc9a,0 0 13px #b5d08440;transform:translateY(-4px)}.game-card.upgraded .card-name{color:var(--green)}.game-card.upgraded{border-color:#a9ba80}.empty-hand{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:13px;line-height:2.3;color:#82917f;border:1px dashed #454e44;border-radius:7px}.empty-hand small{font-size:11px}.battle-controls{display:flex;gap:11px;align-items:center;padding:9px 17px 7px;flex:none;height:70px}.energy{min-width:77px}.energy>span,.ammo-control>span{font-size:9px;color:#a9b69a;display:block;margin-bottom:2px}.energy .ui-icon,.ammo-control .ui-icon{width:11px;height:11px}.energy strong,.ammo-control strong{font:700 23px ui-monospace,monospace;color:var(--green);display:block}.energy strong small,.ammo-control strong small{font-size:10px;color:#76816f}.energy>i{display:flex;gap:3px;height:4px;margin-top:3px}.energy>i b{width:8px;height:3px;border-radius:2px;background:#c5d79c}.ammo-control{text-align:left;min-width:86px;padding:0 11px;border-left:1px solid #3a4437}.ammo-control strong{color:#d6c5a0}.ammo-control>span{color:#bcbaa1}.ammo-control>small{color:#848c7c;font-size:8px;display:block;margin-top:2px;white-space:nowrap}.end-turn{margin-left:auto;min-height:47px;flex:1;max-width:164px;display:flex;align-items:center;justify-content:center;gap:6px;background:#c4d29e;border:1px solid #d8e4b5;color:#263023;border-radius:7px;font-size:13px;font-weight:700;white-space:nowrap}.end-turn .ui-icon{width:16px;height:16px}.pile-row{display:flex;justify-content:space-between;padding:3px 18px 6px;flex:none;min-height:25px;color:#7d8a7f;font-size:9px}.pile-row .ui-icon{width:11px;height:11px}.pile-row b{margin:0 3px;color:#a8b295;font:11px ui-monospace,monospace}.pile-row button:nth-child(2){color:#677466;font-size:8px}
.room-screen{padding:26px 23px 27px;display:flex;flex-direction:column;gap:19px}.room-screen .section-head{margin-bottom:0}.room-screen>.primary{margin-top:auto}.room-screen>.text-button{margin-top:auto}.room-art{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;min-height:175px;border-bottom:1px solid #343c39;position:relative;background:radial-gradient(ellipse,#84996b15,transparent 70%);padding:17px 0}.room-art>span:last-child:not(.item-art){color:#687767;font:8px ui-monospace,monospace;letter-spacing:3px}.story{font-size:14px;color:#c4c7b8;line-height:1.95;padding-bottom:4px}.gear-row{display:flex;align-items:center;gap:15px;text-align:left;width:100%;padding:14px 15px;border:1px solid #4c5348;border-radius:8px;background:linear-gradient(120deg,#29302a,#21262a);min-height:93px}.gear-row>span:not(.item-art){flex:1}.gear-row strong{font-size:15px;display:block;margin:3px 0 5px}.gear-row small{font-size:9px;color:#a5b794;letter-spacing:.5px}.gear-row>span>span{font-size:12px;color:#9da898;line-height:1.7;display:block}.gear-row>.ui-icon{width:17px;height:17px;color:#abb885}.gear-row.legendary{border-color:#a28a53;background:linear-gradient(120deg,#3e3a2a,#24272a)}.gear-row.legendary small{color:#d3bc83}.gear-row[data-equipped]{border-color:var(--green)}.gear-row[data-equipped] strong:after{content:'已装备';font-size:9px;padding:2px 4px;color:var(--green);margin-left:8px;background:#c8d79215}.item-loot{display:flex;gap:14px;align-items:center;background:#20282a;padding:13px 15px;border-radius:7px;border:1px solid #3c4740;font-size:14px}.item-loot small{display:block;font-size:10px;color:#8f9b8c;margin-top:5px}.victory-symbol{margin:20px auto 0;width:75px;height:75px;border-radius:50%;display:grid;place-items:center;border:1px solid #8fa16d;background:radial-gradient(#677b4550,#28342760);box-shadow:0 0 0 9px #a3b16b09;color:var(--green)}.victory-symbol .ui-icon{width:31px;height:31px}.loot-stats{display:flex;justify-content:center;gap:65px;margin:7px 0 10px}.loot-stats>div{display:flex;align-items:center;flex-direction:column;gap:7px}.loot-stats .ui-icon{color:var(--gold);width:17px;height:17px}.loot-stats strong{font:28px ui-monospace,monospace;color:#e1dabf}.loot-stats span{font-size:10px;color:#9ba68f}.reward-cards{display:flex;gap:11px;overflow-x:auto;margin:16px -9px 0;padding:7px 9px 15px;min-height:269px;justify-content:flex-start;scrollbar-width:thin}.reward-cards .game-card{flex:0 0 calc((100% - 22px)/3);min-width:122px;min-height:240px}.reward-cards .card-art{height:90px}.reward-cards .card-text{font-size:13px}.choice-note{font-size:10px;color:#9ba48f;text-align:center}.level-emblem{display:flex;align-items:center;justify-content:center;gap:16px;min-height:95px;background:radial-gradient(#84974b15,transparent 70%);color:var(--green)}.level-emblem strong{font:40px ui-monospace,monospace}.level-emblem .ui-icon{height:35px;width:35px}.shop-screen{gap:15px;padding-top:25px}.shop-wallet{display:flex;gap:8px;align-items:center;font-size:11px;color:#bcaa7b;border-bottom:1px solid #414538;padding-bottom:15px}.shop-wallet strong{font:24px ui-monospace,monospace;color:var(--gold)}.shop-wallet span{margin-left:auto;color:#828d7b;font-size:9px}.shop-wallet .ui-icon{width:17px}.shop-offers{display:flex;flex-direction:column;gap:7px}.shop-offer{display:flex;gap:12px;align-items:center;text-align:left;border:1px solid #3f4840;border-radius:7px;background:#222a27;padding:11px 12px;min-height:84px}.shop-offer>span:not(.item-art){flex:1}.shop-offer small{font-size:8px;color:#98aa88;display:block;margin-bottom:3px}.shop-offer strong{display:block;font-size:14px;margin-bottom:4px}.shop-offer>span>span{font-size:11px;color:#99a291;line-height:1.65;display:block}.shop-offer>b{font:11px ui-monospace,monospace;color:var(--gold);white-space:nowrap}.shop-offer .item-art{max-width:53px}.shop-offer.sold{opacity:.45}.shop-services{display:flex;gap:8px}.shop-services .secondary{min-height:44px;font-size:11px;display:flex;flex-direction:column;gap:3px}.shop-services b{font:9px ui-monospace,monospace;color:#c9b17e}.event-outcome{font-size:14px;line-height:1.9;color:var(--green);padding:19px 15px;border:1px solid #667655;background:#3d4b322b;border-radius:7px}.event-outcome .ui-icon{width:17px;height:17px;margin-right:6px}.event-screen .choice-row{min-height:82px}.briefing-screen{justify-content:center;gap:24px;text-align:center;position:relative}.briefing-screen>.eyebrow{margin-top:15px}.briefing-screen h1{font-size:35px}.chapter-number{font:100px ui-monospace,monospace;color:#b6ce911c;letter-spacing:12px;margin:10px 0 0;line-height:1}.chapter-recovery{font-size:11px;display:flex;align-items:center;gap:8px;justify-content:center;color:#c3b894;padding:14px;border:1px solid #59604c;border-radius:6px;background:#343b2c20}.chapter-recovery .ui-icon{width:14px;height:14px}.briefing-screen>.primary{margin-top:25px}.result-screen{padding:28px 26px 32px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:20px;background:radial-gradient(ellipse at 50% 30%,#3e2a35a0,transparent 65%)}.result-screen.won{background:radial-gradient(ellipse at 50% 30%,#35422d80,transparent 65%)}.result-art{padding-top:5px;margin:0 auto}.result-screen h1{font-size:29px;font-family:"Songti SC",serif;color:#d2b3ad}.result-screen.won h1{color:var(--green)}.result-screen>p{font-size:13px;color:#a4a99c;line-height:1.9}.result-stats{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:23px 10px;border-top:1px solid #46413d;border-bottom:1px solid #46413d;padding:23px 0;margin:1px 0}.result-stats strong{font:25px ui-monospace,monospace;display:block;color:#e0d6c8}.result-stats span{display:block;font-size:9px;color:#909889;margin-top:8px}.result-screen .unlock-note{font-size:10px;color:#afc791}.result-signature{color:#617060;font:8px ui-monospace,monospace;letter-spacing:1.5px}
.sheet{position:fixed;inset:auto 0 0;margin:0 auto;width:min(100%,540px);max-width:540px;max-height:88dvh;padding:0 20px calc(20px + env(safe-area-inset-bottom));color:var(--text);border:1px solid #4a5249;border-bottom:0;border-radius:17px 17px 0 0;background:#191f23;box-shadow:0 -20px 80px #0008;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#596550 transparent}.sheet::backdrop{background:#070b10b8;backdrop-filter:blur(3px)}.sheet-handle{width:32px;height:3px;border-radius:4px;background:#677266;margin:9px auto 10px}.sheet>header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;background:#191f23;padding:5px 0 14px;z-index:10;border-bottom:1px solid #3b443e}.sheet>header .icon-button{width:29px;height:29px}.sheet>header .ui-icon{width:16px;height:16px}.sheet-body{padding-top:18px}.sheet-body>.primary,.sheet-body>.secondary{margin-top:14px}.sheet-body>.gear-row{margin-top:9px}.deck-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px 10px;margin-top:17px}.deck-grid .game-card{width:100%;min-width:0;min-height:198px;padding:10px 8px 0}.deck-grid .card-text{font-size:11px;min-height:47px}.deck-grid .card-name{font-size:11px}.deck-grid .card-art{height:63px}.deck-grid .card-art .item-art{height:54px;width:calc(54px*var(--art-ratio))}.deck-grid .card-rarity{font-size:7px}.deck-grid .card-cost{width:18px;height:21px;font-size:14px;top:6px;left:6px}.card-detail{display:flex;justify-content:center;margin:6px auto 18px}.card-detail .game-card{flex-basis:180px;min-height:266px}.card-detail .card-name{font-size:17px}.card-detail .card-art{height:109px}.card-detail .card-art .item-art{height:84px;width:calc(84px*var(--art-ratio))}.card-detail .card-text{font-size:15px}.card-detail .card-footer{font-size:10px}.card-detail .card-cost{font-size:21px;height:29px;width:28px}.card-detail .card-rarity{font-size:9px}.empty-state{font-size:13px;line-height:1.9;color:#929f8c;text-align:center;padding:27px 5px}.hero-info,.enemy-info{display:flex;gap:25px;align-items:center;padding:8px 8px 20px}.hero-info>div,.enemy-info>div{flex:1;font-size:12px;color:#b0baaa;line-height:1.85}.hero-info strong{display:block;color:var(--green);font-size:15px;margin-bottom:7px}.hero-info p{margin-bottom:10px}.hero-info>div>span{font:11px ui-monospace,monospace;color:#8da975}.enemy-info .enemy-status{max-width:100%;justify-content:flex-start;margin:10px 0}.enemy-info p{margin-bottom:8px}.enemy-info b{color:#d6ceba}.status-summary{border-top:1px solid #46503f;padding:16px 0}.status-summary p{display:flex;justify-content:space-between;font-size:13px;color:#9faba0;line-height:2.2}.status-summary b{font:13px ui-monospace,monospace;color:#d2dac4}.help-intro{display:flex;align-items:center;gap:18px;font-size:12px;line-height:1.9;color:#b6bfab;margin-bottom:20px}.help-list{list-style:none;counter-reset:guide;padding:0;margin:0 0 19px;display:flex;flex-direction:column;gap:19px}.help-list li{position:relative;padding-left:32px;counter-increment:guide}.help-list li:before{content:counter(guide,decimal-leading-zero);position:absolute;left:0;top:1px;font:12px ui-monospace,monospace;color:#a8bc89}.help-list b{display:block;font-size:14px;color:#d7ddc7;margin-bottom:7px}.help-list span{font-size:12px;line-height:1.85;color:#9da998;display:block}.save-detail{display:flex;align-items:center;gap:9px;padding:0 0 17px;color:#9dbb84;font-size:12px}.save-detail.error{color:#d78d70}.save-detail.error .green-dot{background:#d78d70}.save-detail .tiny-button{margin-left:auto;font-size:10px}.save-detail+.option-list{margin-bottom:19px}.save-detail+.option-list .choice-row{min-height:51px;justify-content:space-between;font-size:13px}.battle-log{border-left:1px solid #5c6d4d;padding-left:18px;margin:3px 0 22px;color:#a5b397;font:12px ui-monospace,"PingFang SC",sans-serif;line-height:2.6}.map-sheet .route-screen{padding:0 0 15px}.map-sheet .section-head{display:none}.map-sheet .route-board{min-height:466px;flex:none}.toast{position:fixed;z-index:100;left:50%;top:calc(28px + env(safe-area-inset-top));transform:translate(-50%,-14px);background:#d0dbb8;border:1px solid #dbe7c0;color:#273320;border-radius:7px;padding:12px 18px;font-size:12px;box-shadow:0 8px 30px #0007;max-width:calc(100vw - 35px);width:max-content;pointer-events:none;opacity:0;transition:opacity .2s,transform .2s}.toast.visible{opacity:1;transform:translate(-50%,0)}.taking-damage:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:20;box-shadow:inset 0 0 55px #b3405490;animation:flash .3s ease-out forwards}@keyframes breathe{50%{transform:translateY(-2px)}}@keyframes flash{from{opacity:1}to{opacity:0}}
@media(min-width:600px){body{display:flex;align-items:center;justify-content:center}.game-shell{height:min(940px,calc(100dvh - 32px));max-width:480px;border:1px solid #454c44;border-radius:15px;box-shadow:0 25px 100px #000c;margin:auto}.home-screen{padding-left:28px;padding-right:28px}.home-title h1{font-size:59px}.home-title h1 span{font-size:55px}.home-bottom{margin-top:120px}.sheet{bottom:16px;border-bottom:1px solid #4a5249;border-radius:16px;width:min(480px,100%);max-height:calc(100dvh - 55px)}.toast{top:30px}.route-board{min-height:480px}.deck-grid .card-name{font-size:13px}.deck-grid .card-text{font-size:12px}.hero-choice{height:115px}.hero-choice .sprite{height:69px;width:calc(69px*var(--art-ratio))}.battle-screen{min-height:544px}.hand{min-height:218px}.game-card{min-height:200px;flex-basis:139px}.card-text{font-size:13px}}
@media(max-height:750px){.home-screen{padding-top:17px}.home-title{margin-top:14px}.home-title h1{font-size:44px}.home-title h1 span{font-size:41px}.home-title>p{font-size:10px;margin-top:10px}.home-bottom{margin-top:27px;padding-top:18px}.hero-choice{height:94px}.hero-choice .sprite{height:54px;width:calc(54px*var(--art-ratio))}.hero-trait{font-size:10px;margin:9px 0 12px}.home-meta{margin-top:11px}.start-button{height:49px;min-height:49px}.fan-note{margin-top:9px}.battle-caption{min-height:49px;padding-top:10px}.arena{min-height:168px}.enemy-row{top:3px}.enemy .sprite{height:105px;width:calc(105px*var(--art-ratio))}.enemy-row.count-1 .enemy .sprite{height:124px;width:calc(124px*var(--art-ratio))}.survivor .sprite{height:89px;width:calc(89px*var(--art-ratio))}.count-3 .enemy .sprite{height:89px;width:calc(89px*var(--art-ratio))}.hand{min-height:194px}.game-card{min-height:178px}.card-art{height:63px}.card-art .item-art{height:58px;width:calc(58px*var(--art-ratio))}.battle-controls{height:66px}.battle-screen{min-height:525px}.route-board{min-height:405px}.route-screen{padding-top:15px}.route-legend{padding-top:13px}.route-screen .section-head h1{font-size:25px}.room-screen{padding-top:22px;gap:15px}.room-art{min-height:145px}.result-screen{gap:16px}.result-art .sprite{height:157px;width:calc(157px*var(--art-ratio))}}
@media(max-width:374px){.hud{padding-left:11px;padding-right:11px}.hud-counters{gap:8px;font-size:11px}.hero-badge{gap:6px}.hero-badge strong{font-size:13px;gap:5px}.home-screen{padding-left:19px;padding-right:19px}.home-title h1{font-size:47px}.home-title h1 span{font-size:44px}.hero-select{gap:6px}.hero-trait{gap:6px}.home-meta{font-size:8px}.battle-controls{gap:7px;padding-left:13px;padding-right:13px}.energy{min-width:65px}.ammo-control{min-width:72px;padding-left:9px;padding-right:4px}.end-turn{font-size:12px;gap:3px}.enemy-row{gap:7px;right:12px}.survivor{left:15px}.count-3 .enemy .sprite{height:82px;width:calc(82px*var(--art-ratio))}.count-3 .enemy{min-width:61px}.count-3 .intent{font-size:8px;padding-left:4px;padding-right:4px}.count-3 .enemy-name{font-size:9px}.deck-grid{grid-template-columns:repeat(2,1fr);gap:14px}.deck-grid .card-name{font-size:13px}.deck-grid .card-text{font-size:12px}.choice-row{padding-left:12px;padding-right:12px;gap:11px}.bottom-nav button{gap:5px}.route-screen{padding-left:17px;padding-right:17px}.route-legend{gap:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.battle-caption-tools{display:flex;align-items:center;gap:8px}.audio-quick.icon-button{width:31px;height:31px;border-color:#4b554a;color:#919f85}.audio-quick .ui-icon{width:16px;height:16px}.audio-quick.active{color:#cddd9d;border-color:#829768;background:#394830}.audio-quick.muted{opacity:.5}.sound-toggle{min-height:32px;font-size:12px;color:#c3d798}.sound-toggle .ui-icon{width:17px;height:17px}.home-meta{gap:10px}.audio-status{font-size:13px;line-height:1.8;padding:12px 14px;border:1px solid #47573e;border-radius:7px;background:#2c3b272f;color:#bdd29e;margin-bottom:20px}.audio-controls{display:flex;flex-direction:column;gap:16px}.audio-control{display:flex;align-items:center;gap:14px;justify-content:space-between}.audio-control strong{font-size:16px;display:block}.audio-control small{display:block;font-size:12px;color:#91a08a;margin-top:7px;line-height:1.7}.audio-switch{display:flex;gap:10px;align-items:center;font-size:12px;white-space:nowrap;color:#919b90;padding:8px 0 8px 8px}.audio-switch i{position:relative;display:block;height:22px;width:39px;border:1px solid #5d6857;background:#343d31;border-radius:12px}.audio-switch i:before{content:'';position:absolute;top:3px;left:3px;width:14px;height:14px;background:#9daba2;border-radius:50%;transition:transform .16s}.audio-switch.on{color:var(--green)}.audio-switch.on i{background:#7c9660;border-color:#abc781}.audio-switch.on i:before{background:#f0f4dd;transform:translateX(17px)}.audio-volume{display:block;padding:0 0 17px;margin-bottom:5px;border-bottom:1px solid #394335}.audio-volume>span{display:flex;justify-content:space-between;font-size:13px;align-items:center;color:#a7b69c}.audio-volume output{font:13px ui-monospace,monospace;color:var(--green)}.audio-volume input{width:100%;accent-color:#bdd98c;min-height:32px;cursor:pointer;margin:10px 0 0}.audio-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:3px 0 13px}.audio-buttons .text-button{grid-column:span 2;min-height:35px;font-size:12px}
.card-name{font-size:14px}.card-text{font-size:14px;line-height:1.55;min-height:62px}.game-card{flex-basis:138px;min-height:211px}.hand{min-height:230px}.card-footer{font-size:10px}.card-rarity{font-size:10px;letter-spacing:0}.card-cost{font-size:18px}.play-prompt{font-size:12px;min-height:41px}.battle-caption h1{font-size:20px}.round-badge{font-size:12px}.intent{font-size:12px;min-height:27px}.intent .ui-icon{width:13px;height:13px}.enemy-name{font-size:12px}.enemy-hp{height:15px}.enemy-hp b{font-size:10px}.enemy-status .status{font-size:10px}.arena-threat{font-size:11px}.arena-threat small{font-size:10px}.survivor-shield{font-size:14px}.target-reticle{font-size:11px}.pile-row{font-size:11px;min-height:30px}.pile-row button:nth-child(2){font-size:10px}.energy>span,.ammo-control>span{font-size:11px}.ammo-control>small{font-size:10px}.end-turn{font-size:14px;min-height:49px}.hud-counters{font-size:14px}.hp-line{font-size:14px}.hp-line b,.infection b{font-weight:400}.bottom-nav button{font-size:13px}.tiny-button{font-size:13px}.route-node{font-size:12px}.node-circle{width:38px;height:38px}.route-legend{font-size:12px;gap:11px}.route-legend .ui-icon{width:14px;height:14px}.choice-row strong{font-size:16px}.choice-row small,.gear-row>span>span{font-size:14px}.story{font-size:16px}.shop-offer>span>span{font-size:13px}.deck-grid .card-name{font-size:13px}.deck-grid .card-text{font-size:13px;min-height:61px}.deck-grid .game-card{min-height:220px}.reward-cards .game-card{min-width:137px;min-height:247px}.reward-cards .card-text{font-size:14px}.enemy-info>div{font-size:14px}.low-health .hp-line{color:#ff9784}.low-health .hud-bars{background:#6b272a}.low-health .hp-fill{background:#ed685d;animation:danger-pulse 1.3s ease-in-out infinite}.low-health .arena{box-shadow:inset 0 0 45px #ad344321}
.combat-fx{position:absolute;inset:0;pointer-events:none;z-index:12;overflow:hidden}.fx-number{position:absolute;color:#ffe9c5;z-index:5;font:900 31px ui-monospace,"PingFang SC",monospace;text-shadow:0 3px 0 #5c2924,0 0 8px #000,2px 0 0 #291b1b,-2px 0 0 #291b1b;white-space:nowrap;animation:damage-float .82s ease-out both;transform:translate(-50%,-50%)}.fx-number.hurt{color:#ffb5a2;text-shadow:0 3px 0 #762b34,0 0 8px #000;font-size:33px}.fx-number.block{color:#b5e2ff;font-size:17px;text-shadow:0 2px 0 #30485c,0 0 7px #000}.fx-number.heal{color:#d2f5a6;text-shadow:0 2px 0 #42612e,0 0 7px #000}.fx-number.reload{color:#e9d9a8;font-size:17px;text-shadow:0 2px 0 #665535,0 0 7px #000}.fx-number.burn{color:#ffb678;font-size:20px;text-shadow:0 2px 0 #7b3b2c,0 0 7px #000}.fx-number.poison{color:#c3dd9c;font-size:20px;text-shadow:0 2px 0 #465936,0 0 7px #000}.fx-number.kill{color:var(--green);font-size:15px;letter-spacing:3px;margin-top:31px;text-shadow:0 2px 2px #172014,0 0 9px #000}.fx-banner{position:absolute;left:50%;top:10px;transform:translateX(-50%);max-width:95%;width:max-content;color:#e0e4cd;background:#1d281bdd;border:1px solid #93a97377;border-radius:5px;box-shadow:0 3px 16px #0005;padding:8px 15px;font-size:13px;font-weight:700;letter-spacing:.6px;white-space:nowrap;animation:banner-in .78s ease-out both;z-index:6}.fx-banner.enemy-banner{color:#ebbcac;border-color:#936554;background:#412b2ae8}.fx-banner.boss-banner{color:#ffd1b8;border-color:#c06c69;background:#622d38ec;font-size:16px;top:21%}.fx-banner.victory-banner{color:#d5eab1;top:30%;font-size:20px;letter-spacing:4px;padding:15px 25px;background:#253020de;border-color:#cbdc9b}.fx-tracer{position:absolute;height:2px;transform-origin:left center;background:linear-gradient(90deg,#ffdf9550,#ffe9b5,#fff);box-shadow:0 0 8px #ffb857;animation:tracer .2s ease-out forwards;border-radius:3px}.fx-tracer.knife{height:3px;background:linear-gradient(90deg,transparent,#bdcddf,#f4f9ff);box-shadow:0 0 5px #bddbfa}.fx-tracer.blast{height:12px;background:linear-gradient(90deg,transparent,#ffac74cc,#f0d49c);box-shadow:0 0 18px #ff7634;animation:tracer .25s ease-out forwards}.survivor.fx-muzzle:after{content:'';position:absolute;right:-10px;top:47%;height:23px;width:29px;background:radial-gradient(ellipse,#fff 5%,#ffedbe 25%,#ffbc6577 45%,transparent 70%);filter:drop-shadow(0 0 8px #ffcf7d);pointer-events:none;animation:muzzle-flash .14s ease-out both}.survivor .sprite.fx-recoil{animation:recoil .22s ease-out}.enemy .sprite.fx-hit{animation:hit-reaction .28s ease-out}.enemy .sprite.fx-armored{animation:armor-reaction .26s ease-out}.enemy .sprite.fx-lunge{animation:enemy-lunge .33s cubic-bezier(.25,.1,.25,1)}.survivor .sprite.fx-hurt{animation:hero-hurt .33s ease-out}.fx-guard{filter:drop-shadow(0 0 9px #82c4ed);transition:filter .2s}.fx-heal{filter:drop-shadow(0 0 12px #badf8c)}.fx-reloading{animation:reload-pulse .3s ease-out}.fx-fallen{animation:enemy-fall .35s ease-in forwards}.enemy.fx-fallen .sprite{animation:none}.fx-enrage{filter:drop-shadow(0 0 19px #f76683)}.game-shell.fx-shake{animation:screen-shake .29s ease-out}.game-shell.fx-blast{animation:screen-shake .27s ease-out}.game-shell.fx-blast:after{content:'';position:absolute;inset:0;z-index:30;pointer-events:none;background:radial-gradient(ellipse at 65% 40%,#ffddb333,transparent 65%);animation:flash .28s ease-out forwards}.resolving .hand .game-card{pointer-events:none}.resolving .battle-controls .end-turn{color:#858d74;background:#3c4533;border-color:#677053;opacity:1}.resolving .bottom-nav{opacity:.65}.draw-in .game-card{animation:draw-card .25s ease-out backwards}.draw-in .game-card:nth-child(2){animation-delay:.045s}.draw-in .game-card:nth-child(3){animation-delay:.09s}.draw-in .game-card:nth-child(4){animation-delay:.135s}.draw-in .game-card:nth-child(5){animation-delay:.18s}.draw-in .game-card:nth-child(6){animation-delay:.225s}.enemy-hp i,.hp-fill{transition:width .16s ease-out}
@keyframes damage-float{0%{opacity:0;transform:translate(-50%,0) scale(.65)}13%{opacity:1;transform:translate(-50%,-13px) scale(1.15)}32%{opacity:1;transform:translate(-50%,-25px) scale(1)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-64px) scale(.95)}}@keyframes recoil{0%,100%{transform:translateX(0)}22%{transform:translateX(-10px) rotate(-4deg)}60%{transform:translateX(-3px) rotate(-1deg)}}@keyframes hit-reaction{0%{filter:brightness(3) saturate(.25);transform:translateX(7px) rotate(4deg)}40%{filter:brightness(1.6);transform:translateX(-4px) rotate(-2deg)}100%{filter:brightness(1);transform:translateX(0)}}@keyframes armor-reaction{0%{filter:brightness(1.9) sepia(.25) hue-rotate(165deg);transform:translateX(3px)}100%{filter:brightness(1);transform:translateX(0)}}@keyframes enemy-lunge{0%,100%{transform:translate(0,0)}34%{transform:translate(-32px,-9px) rotate(-8deg)}55%{transform:translate(-22px,2px) rotate(-3deg)}}@keyframes hero-hurt{0%{filter:brightness(2) sepia(.5);transform:translateX(-9px) rotate(-5deg)}30%{filter:brightness(1.3);transform:translateX(5px) rotate(3deg)}100%{filter:brightness(1);transform:translateX(0)}}@keyframes screen-shake{0%,100%{transform:translate(0,0)}15%{transform:translate(-4px,2px)}30%{transform:translate(5px,-2px)}45%{transform:translate(-3px,-1px)}60%{transform:translate(3px,1px)}80%{transform:translate(-1px,0)}}@keyframes enemy-fall{0%{opacity:1;transform:translateY(0)}35%{opacity:.8;filter:grayscale(.3)}100%{opacity:0;transform:translateY(20px) rotate(9deg);filter:grayscale(1)}}@keyframes muzzle-flash{0%{opacity:1;transform:scale(.6)}25%{opacity:1;transform:scale(1.3)}100%{opacity:0;transform:scale(.4)}}@keyframes tracer{0%{opacity:1;clip-path:inset(0 90% 0 0)}25%{opacity:1;clip-path:inset(0 0 0 10%)}100%{opacity:0;clip-path:inset(0 0 0 95%)}}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-6px)}15%,75%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,0)}}@keyframes reload-pulse{0%,100%{filter:brightness(1)}35%{filter:brightness(1.7);transform:translateY(-2px)}}@keyframes draw-card{from{opacity:0;transform:translateY(19px)}to{opacity:1;transform:translateY(0)}}@keyframes danger-pulse{50%{opacity:.65}}
@media(max-width:374px){.hud-counters{font-size:12px}.hp-line{font-size:13px}.battle-caption h1{font-size:18px}.battle-caption-tools{gap:5px}.audio-quick.icon-button{width:27px;height:29px}.round-badge{gap:5px;padding:6px;font-size:11px}.enemy-row.count-3 .intent{font-size:10px}.count-3 .enemy-name{font-size:10px}.card-name{font-size:14px}.card-text{font-size:14px}.home-meta{font-size:9px}.sound-toggle{font-size:11px}.bottom-nav button{font-size:12px}}
@media(max-height:750px){.hand{min-height:221px}.game-card{min-height:204px}.arena{min-height:174px}.battle-screen{min-height:591px}.card-art{height:62px}.play-prompt{min-height:38px}.pile-row{min-height:27px}.enemy-name{font-size:11px}.intent{font-size:11px}.home-meta{margin-top:6px}.sound-toggle{font-size:11px}}
@media(prefers-reduced-motion:reduce){.fx-tracer,.survivor.fx-muzzle:after{display:none}.fx-number{animation:none!important;transform:translate(-50%,-50%)}.fx-fallen{opacity:.18}.fx-banner{animation:none!important}.taking-damage:after,.fx-blast:after{opacity:.1}}
.game-card.fx-invalid{animation:invalid-card .26s ease-out}@keyframes invalid-card{20%{transform:translateX(-4px);border-color:#e3a081}45%{transform:translateX(4px)}70%{transform:translateX(-2px)}100%{transform:translateX(0)}}
