*{margin:0;padding:0;box-sizing:border-box}body{background:#1a1a2e;overflow-x:hidden}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#0003}::-webkit-scrollbar-thumb{background:#ffd7004d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffd70080}button:hover{filter:brightness(1.15)}button:active{transform:scale(.97)}@keyframes unitFlash{0%{filter:brightness(1)}20%{filter:brightness(5) saturate(0)}55%{filter:brightness(.4) sepia(1) hue-rotate(330deg)}to{filter:brightness(1)}}.unit-flash{animation:unitFlash .45s ease-out}@keyframes floatUp{0%{opacity:1;transform:translateY(0)}20%{opacity:1}to{opacity:0;transform:translateY(-44px)}}@keyframes deathPop{0%{opacity:1}35%{opacity:1;transform:translateY(-10px) scale(1.5)}to{opacity:0;transform:translateY(-24px) scale(.2)}}@keyframes turnBannerAnim{0%{opacity:0;transform:translate(-50%,-50%) scale(.75)}18%{opacity:1;transform:translate(-50%,-50%) scale(1)}72%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}@keyframes highlightPulse{0%,to{opacity:.55}50%{opacity:1}}.tile-highlight{animation:highlightPulse .8s ease-in-out infinite}@keyframes friendlyPulse{0%,to{opacity:.25;r:17}50%{opacity:.7;r:19}}@keyframes bulletFly{0%{transform:translate(0);opacity:1}to{transform:translate(var(--dx),var(--dy));opacity:.2}}@keyframes healRipple{0%{r:8;opacity:.9;stroke-width:3}60%{r:26;opacity:.5;stroke-width:1.5}to{r:38;opacity:0;stroke-width:.5}}@keyframes healRipple2{0%{r:4;opacity:.7;stroke-width:2}60%{r:18;opacity:.4;stroke-width:1}to{r:28;opacity:0;stroke-width:.5}}@keyframes shakeViewport{0%{transform:translate(0)}15%{transform:translate(-5px,3px)}30%{transform:translate(5px,-4px)}45%{transform:translate(-4px,2px)}60%{transform:translate(3px,-3px)}75%{transform:translate(-2px,2px)}90%{transform:translate(1px,-1px)}to{transform:translate(0)}}.viewport-shake{animation:shakeViewport .38s ease-out}@keyframes turnBannerSlide{0%{transform:translate(-110%);opacity:0}18%{transform:translate(0);opacity:1}72%{transform:translate(0);opacity:1}to{transform:translate(110%);opacity:0}}@keyframes unitBob{0%,to{transform:translateY(0)}30%{transform:translateY(-1px)}60%{transform:translateY(-.5px)}}@keyframes menuFadeIn{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes menuSlideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes titleGlow{0%,to{text-shadow:0 0 20px rgba(255,215,0,.3),0 0 60px rgba(255,215,0,.1),3px 3px 0 #000}50%{text-shadow:0 0 40px rgba(255,215,0,.6),0 0 80px rgba(255,215,0,.25),3px 3px 0 #000}}@keyframes scanline{0%{transform:translateY(-100%)}to{transform:translateY(100vh)}}@keyframes cardPop{0%{opacity:0;transform:scale(.94) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes borderPulse{0%,to{box-shadow:0 0 #ffd70000}50%{box-shadow:0 0 0 3px #ffd70026}}@keyframes impactSpark{0%{opacity:1;transform:scaleX(.3)}40%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(1.5) translate(6px)}}@keyframes impactFlash{0%{opacity:1;r:6}50%{opacity:.8;r:10}to{opacity:0;r:2}}@keyframes victoryPunchIn{0%{opacity:0;transform:scale(2.5);filter:blur(8px)}60%{opacity:1;transform:scale(.95);filter:blur(0)}80%{transform:scale(1.02)}to{opacity:1;transform:scale(1);filter:blur(0)}}
