@font-face{font-family:Alegreya;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/alegreya-cyrillic-900-normal-CyoGOJ1p.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Alegreya;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/alegreya-latin-ext-900-normal-CYunbBtb.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Alegreya;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/alegreya-latin-900-normal-BUtBFJj0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/nunito-cyrillic-600-normal-DJGQ2h05.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/nunito-latin-ext-600-normal-Dd9Zuxh1.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/nunito-latin-600-normal-Br8yIETf.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-cyrillic-700-normal-DP36NgGt.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-latin-ext-700-normal-BWeMsAzO.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-latin-700-normal-Dort48En.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-cyrillic-800-normal-D3igD7Kl.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-latin-ext-800-normal-CtU8tJOV.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-latin-800-normal-Dz8SOQK_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/nunito-cyrillic-900-normal-CWPcV0_V.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/nunito-latin-ext-900-normal-Dllsvgjo.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/nunito-latin-900-normal-BVB1fGs6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Nunito,system-ui,-apple-system,Segoe UI,sans-serif;font-weight:600}@media (pointer:coarse) and (height<=500px) and (orientation:landscape),(pointer:coarse) and (width<=500px) and (orientation:portrait){html,body{overscroll-behavior:none;touch-action:manipulation;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;height:100%;overflow:hidden}body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}#root{width:100dvw;height:100dvh;position:fixed;top:0;left:0;overflow:hidden;container:app/size}}@media (pointer:coarse) and (width<=500px) and (orientation:portrait){#root{transform-origin:0 0;width:100dvh;height:100dvw;left:100dvw;transform:rotate(90deg)}}:root{--sprite-idle-ms:2.4s;--sprite-blink-ms:4.2s;--sprite-walk-ms:.64s;--sprite-attack-ms:.56s;--sprite-shoot-ms:.76s;--sprite-hurt-ms:.36s;--sprite-defend-ms:1.4s;--sprite-death-ms:.9s;--sprite-projectile-ms:.42s}.sprite--armored .s-armor-heavy{display:inline}.sprite--armored .s-armor-light{display:none}.sprite{overflow:visible}.sprite *{transform-box:view-box}.sprite .s-rig{transform-origin:46px 88px}.sprite .s-shadow{transform-origin:48px 88.5px}.sprite .s-body{transform-origin:47px 80px}.sprite .s-head{transform-origin:48px 55px}.sprite .s-tail{transform-origin:37px 74px}.sprite .s-arm-back{transform-origin:41px 61px}.sprite .s-arm-front{transform-origin:54px 61px}.sprite .s-leg-back{transform-origin:42px 73px}.sprite .s-leg-front{transform-origin:53.5px 73px}.sprite .s-weapon{transform-origin:60px 75px}.sprite .s-shield{transform-origin:69px 62px}.sprite .s-eye,.sprite .s-ear{transform-box:fill-box}.sprite .s-eye{transform-origin:50% 60%}.sprite .s-ear{transform-origin:50% 100%}.sprite .s-projectile{transform-origin:16px 16px}.sprite[data-anim=idle] .s-body{animation:sp-breathe var(--sprite-idle-ms) ease-in-out infinite}.sprite[data-anim=idle] .s-head{animation:sp-head-idle var(--sprite-idle-ms) ease-in-out infinite}.sprite[data-anim=idle] .s-tail{animation:sp-tail-sway var(--sprite-idle-ms) ease-in-out infinite}.sprite--dog[data-anim=idle] .s-tail{animation:sp-tail-wag calc(var(--sprite-idle-ms) / 4) ease-in-out infinite}.sprite[data-anim=idle] .s-arm-front{animation:sp-arm-idle var(--sprite-idle-ms) ease-in-out infinite}.sprite[data-anim=idle] .s-arm-back{animation:sp-arm-idle var(--sprite-idle-ms) ease-in-out infinite reverse}.sprite[data-anim=idle] .s-ear-front{animation:sp-ear-twitch calc(var(--sprite-idle-ms) * 1.5) ease-in-out infinite}.sprite:is([data-anim=idle],[data-anim=walk],[data-anim=defend]) .s-eye{animation:sp-blink var(--sprite-blink-ms) linear infinite}@keyframes sp-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.015,1.035)}}@keyframes sp-head-idle{0%,to{transform:rotate(-1.5deg)}50%{transform:rotate(2deg)translateY(.4px)}}@keyframes sp-tail-sway{0%,to{transform:rotate(-5deg)}50%{transform:rotate(9deg)}}@keyframes sp-tail-wag{0%,to{transform:rotate(-12deg)}50%{transform:rotate(14deg)}}@keyframes sp-arm-idle{0%,to{transform:rotate(-2deg)}50%{transform:rotate(3deg)}}@keyframes sp-ear-twitch{0%,78%,88%,to{transform:rotate(0)}82%{transform:rotate(-14deg)}85%{transform:rotate(4deg)}}@keyframes sp-blink{0%,93%,to{transform:scaleY(1)}95.5%{transform:scaleY(.1)}}.sprite[data-anim=walk] .s-body{animation:sp-walk-bob calc(var(--sprite-walk-ms) / 2) ease-in-out infinite}.sprite[data-anim=walk] .s-head{animation:sp-walk-head var(--sprite-walk-ms) ease-in-out infinite}.sprite[data-anim=walk] .s-leg-front{animation:sp-walk-leg var(--sprite-walk-ms) ease-in-out infinite}.sprite[data-anim=walk] .s-leg-back{animation:sp-walk-leg var(--sprite-walk-ms) ease-in-out infinite reverse}.sprite[data-anim=walk] .s-arm-front{animation:sp-walk-arm var(--sprite-walk-ms) ease-in-out infinite reverse}.sprite[data-anim=walk] .s-arm-back{animation:sp-walk-arm var(--sprite-walk-ms) ease-in-out infinite}.sprite[data-anim=walk] .s-tail{animation:sp-tail-sway var(--sprite-walk-ms) ease-in-out infinite}.sprite--dog[data-anim=walk] .s-tail{animation:sp-tail-wag calc(var(--sprite-walk-ms) / 2) ease-in-out infinite}.sprite[data-anim=walk] .s-shadow{animation:sp-walk-shadow calc(var(--sprite-walk-ms) / 2) ease-in-out infinite}@keyframes sp-walk-bob{0%,to{transform:translateY(0)rotate(2deg)}50%{transform:translateY(-2px)rotate(2deg)}}@keyframes sp-walk-head{0%,to{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}@keyframes sp-walk-leg{0%,to{transform:rotate(-24deg)}50%{transform:rotate(22deg)}}@keyframes sp-walk-arm{0%,to{transform:rotate(-18deg)}50%{transform:rotate(16deg)}}@keyframes sp-walk-shadow{0%,to{transform:scaleX(1)}50%{transform:scaleX(.9)}}.sprite:is([data-anim=attack],.sprite--melee[data-anim=shoot]) .s-rig{animation:sp-atk-rig var(--sprite-attack-ms) cubic-bezier(.3,.7,.3,1) both}.sprite:is([data-anim=attack],.sprite--melee[data-anim=shoot]) .s-body{animation:sp-atk-body var(--sprite-attack-ms) ease-out both}.sprite:is([data-anim=attack],.sprite--melee[data-anim=shoot]) .s-head{animation:sp-atk-head var(--sprite-attack-ms) ease-out both}.sprite:is([data-anim=attack],.sprite--melee[data-anim=shoot]) .s-leg-front{animation:sp-atk-legf var(--sprite-attack-ms) ease-out both}.sprite:is([data-anim=attack],.sprite--melee[data-anim=shoot]) .s-leg-back{animation:sp-atk-legb var(--sprite-attack-ms) ease-out both}.sprite:is([data-anim=attack],.sprite--melee[data-anim=shoot]) .s-tail{animation:sp-atk-tail var(--sprite-attack-ms) ease-out both}.sprite--melee:is([data-anim=attack],[data-anim=shoot]) .s-arm-front{animation:sp-atk-swing var(--sprite-attack-ms) cubic-bezier(.4,0,.2,1) both}.sprite--melee:is([data-anim=attack],[data-anim=shoot]) .s-weapon{animation:sp-atk-wpn var(--sprite-attack-ms) cubic-bezier(.4,0,.2,1) both}.sprite--melee:is([data-anim=attack],[data-anim=shoot]) .s-arm-back{animation:sp-atk-guard var(--sprite-attack-ms) ease-out both}.sprite--ranged[data-anim=attack] .s-arm-back{animation:sp-atk-bash var(--sprite-attack-ms) cubic-bezier(.4,0,.2,1) both}.sprite--ranged[data-anim=attack] .s-arm-front{animation:sp-atk-guard var(--sprite-attack-ms) ease-out both}@keyframes sp-atk-rig{0%,to{transform:translate(0)}30%{transform:translate(-3px)}55%{transform:translate(7px)}75%{transform:translate(5px)}}@keyframes sp-atk-body{0%,to{transform:rotate(0)}30%{transform:rotate(-7deg)}55%{transform:rotate(9deg)}75%{transform:rotate(5deg)}}@keyframes sp-atk-head{0%,to{transform:rotate(0)}30%{transform:rotate(-4deg)}55%{transform:rotate(5deg)}}@keyframes sp-atk-legf{0%,to{transform:rotate(0)}30%{transform:rotate(6deg)}55%,75%{transform:rotate(-26deg)}}@keyframes sp-atk-legb{0%,to{transform:rotate(0)}30%{transform:rotate(-4deg)}55%,75%{transform:rotate(18deg)}}@keyframes sp-atk-tail{0%,to{transform:rotate(0)}30%{transform:rotate(10deg)}55%{transform:rotate(-14deg)}}@keyframes sp-atk-swing{0%,to{transform:rotate(0)}30%{transform:rotate(55deg)}55%{transform:rotate(-55deg)}72%{transform:rotate(-45deg)}}@keyframes sp-atk-wpn{0%,to{transform:rotate(0)}30%{transform:rotate(140deg)}55%{transform:rotate(65deg)}72%{transform:rotate(55deg)}}@keyframes sp-atk-guard{0%,to{transform:rotate(0)}30%{transform:rotate(-10deg)}55%,75%{transform:rotate(6deg)}}@keyframes sp-atk-bash{0%,to{transform:rotate(0)}30%{transform:rotate(22deg)}55%{transform:rotate(-38deg)}72%{transform:rotate(-30deg)}}.sprite--ranged[data-anim=shoot] .s-rig{animation:sp-sh-rig var(--sprite-shoot-ms) ease-out both}.sprite--ranged[data-anim=shoot] .s-body{animation:sp-sh-body var(--sprite-shoot-ms) ease-out both}.sprite--ranged[data-anim=shoot] .s-head{animation:sp-sh-head var(--sprite-shoot-ms) ease-out both}.sprite--ranged[data-anim=shoot] .s-arm-back{animation:sp-sh-aim var(--sprite-shoot-ms) ease-out both}.sprite--ranged[data-anim=shoot] .s-arm-front{animation:sp-sh-pull var(--sprite-shoot-ms) ease-out both}.sprite--ranged[data-anim=shoot] .s-draw{animation:sp-sh-show var(--sprite-shoot-ms) linear both}.sprite--ranged[data-anim=shoot] .s-string,.sprite--ranged[data-anim=shoot] .s-ammo{animation:sp-sh-hide var(--sprite-shoot-ms) linear both}.sprite--ranged[data-anim=shoot] .s-tail{animation:sp-tail-sway calc(var(--sprite-shoot-ms) / 2) ease-in-out 2}.sprite--ranged[data-anim=shoot] .s-leg-front{animation:sp-sh-legf var(--sprite-shoot-ms) ease-out both}@keyframes sp-sh-rig{0%,58%,to{transform:translate(0)}64%{transform:translate(-3px)}80%{transform:translate(-1px)}}@keyframes sp-sh-body{0%,to{transform:rotate(0)}22%,58%{transform:rotate(-4deg)}64%{transform:rotate(-7deg)}}@keyframes sp-sh-head{0%,to{transform:rotate(0)}22%,58%{transform:rotate(3deg)}64%{transform:rotate(-3deg)}}@keyframes sp-sh-aim{0%,to{transform:rotate(0)}22%,58%{transform:rotate(-7deg)}64%{transform:rotate(-11deg)}}@keyframes sp-sh-pull{0%,to{transform:rotate(0)}22%,58%{transform:rotate(var(--sprite-pull-deg,62deg))}66%{transform:rotate(-35deg)}82%{transform:rotate(-10deg)}}@keyframes sp-sh-show{0%,15%,60%,to{opacity:0}18%,59.9%{opacity:1}}@keyframes sp-sh-hide{0%,15%,60%,to{opacity:1}18%,59.9%{opacity:0}}@keyframes sp-sh-legf{0%,to{transform:rotate(0)}22%,70%{transform:rotate(-12deg)}}.sprite[data-anim=hurt]{animation:sp-flash var(--sprite-hurt-ms) linear both}.sprite[data-anim=hurt] .s-rig{animation:sp-hurt-rig var(--sprite-hurt-ms) ease-out both}.sprite[data-anim=hurt] .s-head{animation:sp-hurt-head var(--sprite-hurt-ms) ease-out both}.sprite[data-anim=hurt] .s-arm-front,.sprite[data-anim=hurt] .s-arm-back{animation:sp-hurt-arm var(--sprite-hurt-ms) ease-out both}.sprite[data-anim=hurt] .s-tail{animation:sp-hurt-tail var(--sprite-hurt-ms) ease-out both}.sprite[data-anim=hurt] .s-eye{animation:sp-hurt-eye var(--sprite-hurt-ms) linear both}@keyframes sp-flash{0%,to{filter:sepia(0)saturate()hue-rotate()brightness()}10%{filter:sepia(0)saturate(.15)hue-rotate()brightness(2.1)}28%,45%{filter:sepia()saturate(6)hue-rotate(-48deg)brightness(.95)}}@keyframes sp-hurt-rig{0%,to{transform:translate(0)rotate(0)}25%{transform:translate(-7px)rotate(-9deg)}60%{transform:translate(-3px)rotate(-3deg)}}@keyframes sp-hurt-head{0%,to{transform:rotate(0)}25%{transform:rotate(-10deg)}}@keyframes sp-hurt-arm{0%,to{transform:rotate(0)}25%{transform:rotate(-30deg)}}@keyframes sp-hurt-tail{0%,to{transform:rotate(0)}25%{transform:rotate(-22deg)}}@keyframes sp-hurt-eye{0%,to{transform:scaleY(1)}10%,60%{transform:scaleY(.15)}}.sprite[data-anim=defend] .s-rig{animation:sp-def-rig var(--sprite-defend-ms) ease-in-out infinite}.sprite[data-anim=defend] .s-body{animation:sp-def-body var(--sprite-defend-ms) ease-in-out infinite}.sprite[data-anim=defend] .s-head{animation:sp-def-head var(--sprite-defend-ms) ease-in-out infinite}.sprite[data-anim=defend] .s-arm-back{animation:sp-def-armb var(--sprite-defend-ms) ease-in-out infinite}.sprite[data-anim=defend] .s-arm-front{animation:sp-def-armf var(--sprite-defend-ms) ease-in-out infinite}.sprite[data-anim=defend] .s-leg-front{animation:sp-def-legf var(--sprite-defend-ms) ease-in-out infinite}.sprite[data-anim=defend] .s-leg-back{animation:sp-def-legb var(--sprite-defend-ms) ease-in-out infinite}.sprite[data-anim=defend] .s-tail{animation:sp-def-tail var(--sprite-defend-ms) ease-in-out infinite}.sprite--ranged[data-anim=defend] .s-arm-back{animation-name:sp-def-armb-r}.sprite--ranged[data-anim=defend] .s-arm-front{animation-name:sp-def-armf-r}@keyframes sp-def-rig{0%,to{transform:translate(-2px)}50%{transform:translate(-2px)translate(-.6px)}}@keyframes sp-def-body{0%,to{transform:scale(1.03,.95)rotate(4deg)}50%{transform:scale(1.035,.94)rotate(4.5deg)}}@keyframes sp-def-head{0%,to{transform:rotate(5deg)translateY(1px)}50%{transform:rotate(6deg)translateY(1.3px)}}@keyframes sp-def-armb{0%,to{transform:rotate(-24deg)translate(2px,-1px)}50%{transform:rotate(-26deg)translate(2px,-1px)}}@keyframes sp-def-armf{0%,to{transform:rotate(-20deg)}50%{transform:rotate(-23deg)}}@keyframes sp-def-armb-r{0%,to{transform:rotate(-30deg)translate(1px,-1px)}50%{transform:rotate(-32deg)translate(1px,-1px)}}@keyframes sp-def-armf-r{0%,to{transform:rotate(-55deg)}50%{transform:rotate(-58deg)}}@keyframes sp-def-legf{0%,to{transform:rotate(-14deg)}50%{transform:rotate(-15deg)}}@keyframes sp-def-legb{0%,to{transform:rotate(12deg)}50%{transform:rotate(13deg)}}@keyframes sp-def-tail{0%,to{transform:rotate(14deg)}50%{transform:rotate(18deg)}}.sprite[data-anim=death]{animation:sp-death-fade var(--sprite-death-ms) ease-out forwards}.sprite[data-anim=death] .s-rig{animation:sp-death-rig var(--sprite-death-ms) cubic-bezier(.5,0,.6,1) forwards}.sprite[data-anim=death] .s-shadow{animation:sp-death-shadow var(--sprite-death-ms) ease-in forwards}.sprite[data-anim=death] .s-head{animation:sp-death-head var(--sprite-death-ms) ease-out forwards}.sprite[data-anim=death] .s-arm-front{animation:sp-death-armf var(--sprite-death-ms) ease-out forwards}.sprite[data-anim=death] .s-arm-back{animation:sp-death-armb var(--sprite-death-ms) ease-out forwards}.sprite[data-anim=death] .s-leg-front{animation:sp-death-legf var(--sprite-death-ms) ease-out forwards}.sprite--ranged[data-anim=death] .s-arm-back{animation-name:sp-death-armb-r}.sprite--ranged[data-anim=death] .s-arm-front{animation-name:sp-death-armf-r}.sprite--ranged[data-anim=death] .s-weapon{animation:sp-death-wpn-r var(--sprite-death-ms) ease-in forwards}.sprite[data-anim=death] .s-tail{animation:sp-death-tail var(--sprite-death-ms) ease-out forwards}.sprite[data-anim=death] .s-eye{animation:sp-death-eye var(--sprite-death-ms) linear forwards}.sprite[data-anim=death] .s-eye-x{animation:sp-death-eyex var(--sprite-death-ms) linear forwards}@keyframes sp-death-fade{0%,50%{filter:grayscale(0)brightness()}to{filter:grayscale(.65)brightness(.85)}}@keyframes sp-death-rig{0%{transform:translate(0)rotate(0)}18%{transform:translate(-4px)rotate(-10deg)}70%{transform:translate(28px,-17px)rotate(-92deg)}82%{transform:translate(28px,-19.5px)rotate(-86deg)}to{transform:translate(28px,-18px)rotate(-90deg)}}@keyframes sp-death-shadow{0%,40%{opacity:1;transform:scaleX(1)}to{opacity:.8;transform:translate(-2px)scaleX(1.55)}}@keyframes sp-death-head{0%{transform:rotate(0)}25%{transform:rotate(-12deg)}to{transform:rotate(6deg)}}@keyframes sp-death-armf{0%{transform:rotate(0)}30%{transform:rotate(-70deg)}to{transform:rotate(-40deg)}}@keyframes sp-death-armb{0%{transform:rotate(0)}30%{transform:rotate(-50deg)}to{transform:rotate(-20deg)}}@keyframes sp-death-armb-r{0%{transform:rotate(0)}30%{transform:rotate(-30deg)}to{transform:rotate(70deg)}}@keyframes sp-death-armf-r{0%{transform:rotate(0)}30%{transform:rotate(-60deg)}to{transform:rotate(-4deg)}}@keyframes sp-death-wpn-r{0%,30%{transform:translate(41px,61px) rotate(0) translate(-41px,-61px) translate(0,0) translate(var(--grip-x),var(--grip-y)) rotate(0) translate(calc(-1 * var(--grip-x)),calc(-1 * var(--grip-y)))}to{transform:translate(41px,61px) rotate(-60deg) translate(-41px,-61px) translate(-25px,0) translate(var(--grip-x),var(--grip-y)) rotate(180deg) translate(calc(-1 * var(--grip-x)),calc(-1 * var(--grip-y)))}}@keyframes sp-death-legf{0%{transform:rotate(0)}40%{transform:rotate(-30deg)}to{transform:rotate(-12deg)}}@keyframes sp-death-tail{0%{transform:rotate(0)}to{transform:rotate(-30deg)}}@keyframes sp-death-eye{0%,15%{opacity:1}18%,to{opacity:0}}@keyframes sp-death-eyex{0%,15%{opacity:0}18%,to{opacity:1}}.sprite[data-anim=fly] .s-projectile{animation:sp-wobble var(--sprite-projectile-ms) ease-in-out infinite}.sprite--projectile-dog[data-anim=fly] .s-projectile{animation:sp-spin var(--sprite-projectile-ms) linear infinite}.sprite[data-anim=fly] .s-trail{animation:sp-trail calc(var(--sprite-projectile-ms) / 2) linear infinite}@keyframes sp-wobble{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}@keyframes sp-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes sp-trail{0%,to{opacity:.9;transform:translate(0)}50%{opacity:.45;transform:translate(-2px)}}@media (prefers-reduced-motion:reduce){.sprite:is([data-anim=idle],[data-anim=walk],[data-anim=fly]) *,.sprite:is([data-anim=idle],[data-anim=walk],[data-anim=fly]),.sprite[data-anim=defend] .s-eye{animation:none!important}.sprite[data-anim=defend] *{animation-play-state:paused!important}}.sprite--cat-shooter{--grip-x:71.5px;--grip-y:67.8px}.sprite--dog-shooter{--grip-x:66px;--grip-y:69.5px}.sprite--ranged[data-anim=death] .s-weapon{transform-origin:0 0}.sprite--cat-shooter{--sprite-pull-deg:84deg}.sprite--dog-shooter{--sprite-pull-deg:92deg}.sprite--dog .s-ear{transform-origin:50% 12%}:root{--bg:#0f1b3d;--bg-2:#0f1d44;--panel:#182a5c;--panel-2:#22387a;--line:#2e4587;--ui-line-2:#3d57a3;--ui-shade:#0a1330;--text:#f4ecd8;--muted:#b9c3e2;--cats:#f2a54e;--cats-soft:color-mix(in srgb, var(--cats) 16%, transparent);--ui-cats-ink:#2b1a0c;--dogs:#6fb3ec;--dogs-soft:color-mix(in srgb, var(--dogs) 16%, transparent);--ui-dogs-ink:#0c1e2e;--ui-gold:#ffc938;--ui-gold-line:#ffe08a;--ui-gold-ink:#2a1d08;--ui-gold-shade:#a86a10;--ui-ribbon:#c8321f;--ui-ribbon-ink:#fff3e0;--ui-ribbon-sub:#fff0e8;--ui-danger:#ffb4a4;--ui-danger-bg:#3b1d33;--ui-danger-line:#b4544a;--ui-ink:#2b1e1a;--ui-steel:#dfe5ea;--ui-shield:#2f6fd0;--ui-board-soil:#5d4730;--ui-board-edge:#3f3020;--ui-scrim:color-mix(in srgb, var(--ui-shade) 72%, transparent);--ui-font:"Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--ui-font-display:"Alegreya", Georgia, "Times New Roman", serif;--hp-good:#6fd35c;--hp-mid:#f1c440;--hp-low:#ef5a43;--melee:#ff6f55;--shot:#6fc3ff;--reach:#fff7cf;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--bg);color:var(--text)}:where(button,a,input,select,[tabindex]):focus-visible{outline:2px solid var(--text);outline-offset:2px}.panel-head h2,.room-h,.field-label,.nick-label,.victory-kicker{letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:800}.battle{background:var(--bg);grid-template:"top top"58px"stage side"minmax(0,1fr)/minmax(0,1fr) 330px;gap:12px;min-width:1100px;height:100vh;padding:0 14px 14px;display:grid;overflow:hidden}.topbar{border-bottom:2px solid var(--line);grid-area:top;justify-content:space-between;align-items:center;gap:16px;display:flex}.brand{font-family:var(--ui-font-display);letter-spacing:0;align-items:center;gap:6px;min-width:250px;font-size:24px;font-weight:900;line-height:1;display:flex}.brand-mark{flex:none;margin-right:6px;display:block}.brand-cat{color:var(--ui-gold)}.brand-dog{color:var(--text)}.brand-vs{color:var(--muted);font-family:var(--ui-font);font-size:14px;font-weight:700}.turn{align-items:center;gap:10px;display:flex}.round-chip,.turn-chip{white-space:nowrap;border:2px solid #0000;border-radius:999px;padding:4px 13px;font-size:15px;font-weight:800}.round-chip{background:var(--panel-2);border-color:var(--ui-line-2)}.turn-chip--cats{background:var(--cats);color:var(--ui-cats-ink)}.turn-chip--dogs{background:var(--dogs);color:var(--ui-dogs-ink)}.turn-unit{color:var(--text);align-items:center;gap:8px;font-weight:600;display:flex}.topbar-right{justify-content:flex-end;align-items:center;gap:8px;min-width:250px;display:flex}.btn{font:inherit;color:var(--text);background:var(--panel-2);border:2px solid var(--ui-line-2);cursor:pointer;box-shadow:0 3px 0 var(--ui-shade);border-radius:12px;align-items:center;gap:9px;padding:8px 18px;font-size:15px;font-weight:800;transition:filter .15s,transform 50ms,opacity .15s;display:inline-flex}@media (hover:hover){.btn:hover:not(:disabled){filter:brightness(1.06)}.btn--primary:hover:not(:disabled),.btn--accent:hover:not(:disabled){filter:brightness(1.1)}}.btn:active:not(:disabled){box-shadow:0 0 0 var(--ui-shade);transform:translateY(3px)}.btn:disabled{opacity:.5;cursor:default}.btn kbd{font:inherit;background:color-mix(in srgb, var(--ui-shade) 50%, transparent);border:1px solid var(--ui-line-2);color:var(--muted);border-radius:6px;padding:0 6px;font-size:12px}.btn--ghost{box-shadow:none;background:0 0;padding:6px 14px;font-size:14px}.btn--ghost:active:not(:disabled){box-shadow:none;transform:none}.btn--primary{background:var(--ui-gold);color:var(--ui-gold-ink);border-color:var(--ui-gold-line);box-shadow:0 3px 0 var(--ui-gold-shade);padding:11px 34px;font-size:18px;font-weight:900}.btn--primary:active:not(:disabled){box-shadow:0 0 0 var(--ui-gold-shade)}.btn--primary kbd{background:color-mix(in srgb, var(--ui-gold-shade) 30%, transparent);border-color:var(--ui-gold-shade);color:var(--ui-gold-ink)}.stage{flex-direction:column;grid-area:stage;gap:10px;min-width:0;min-height:0;display:flex}.field-wrap{flex:1;min-height:0;position:relative}.field{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block;overflow:visible}.field--cursor-move{cursor:pointer}.field--cursor-melee{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M3 3 L17 17 M14 20 L20 14 M19 19 L25 25' stroke='%23000' stroke-width='5' stroke-linecap='round'/%3E%3Cpath d='M3 3 L17 17 M14 20 L20 14 M19 19 L25 25' stroke='%23fff' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E") 3 3,pointer}.field--cursor-shot{cursor:crosshair}.board-edge{fill:var(--ui-board-edge);filter:drop-shadow(0 4px 0 var(--ui-shade))}.board-soil{fill:var(--ui-board-soil)}.cell{stroke:#30421a8c;stroke-width:1.2px}.cell--v0{fill:#86ab5d}.cell--v1{fill:#7fa457}.cell--v2{fill:#8bb062}.cell--v3{fill:#7a9f55}.cell-overlay{fill:#0000;stroke:#0000;stroke-width:2px;transition:fill .12s,stroke .12s}.cell--reach{fill:color-mix(in srgb, var(--reach) 26%, transparent);stroke:color-mix(in srgb, var(--reach) 55%, transparent)}.cell--hover{fill:color-mix(in srgb, var(--reach) 55%, transparent);stroke:var(--reach);stroke-width:2.6px}.cell--melee{fill:color-mix(in srgb, var(--melee) 34%, transparent);stroke:var(--melee);stroke-width:2.6px}.cell--shot{fill:color-mix(in srgb, var(--shot) 32%, transparent);stroke:var(--shot);stroke-width:2.6px}.cell--aim.cell--melee{fill:color-mix(in srgb, var(--melee) 55%, transparent)}.cell--aim.cell--shot{fill:color-mix(in srgb, var(--shot) 55%, transparent)}.cell--active{fill:color-mix(in srgb, var(--ui-gold) 24%, transparent);stroke:var(--ui-gold);stroke-width:3px}.cell--approach{fill:color-mix(in srgb, var(--ui-gold) 60%, transparent);stroke:var(--ui-gold-line);stroke-width:3px;stroke-dasharray:7 4}.path-dot{fill:color-mix(in srgb, var(--reach) 90%, transparent);stroke:color-mix(in srgb, var(--ui-ink) 50%, transparent);stroke-width:1px}.marker-ring{fill:none;stroke-width:3px}.marker--active .marker-ring{stroke:var(--ui-gold);fill:color-mix(in srgb, var(--ui-gold) 25%, transparent)}.marker--melee .marker-ring{stroke:var(--melee);stroke-dasharray:6 4}.marker--shot .marker-ring{stroke:var(--shot);stroke-dasharray:6 4}.marker-pulse{fill:none;stroke:var(--ui-gold);stroke-width:2px;transform-box:fill-box;transform-origin:50%;animation:1.4s ease-out infinite marker-pulse}@keyframes marker-pulse{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.45)}}@media (prefers-reduced-motion:reduce){.marker-pulse{animation:none;display:none}}.unit-hit{fill:#0000;pointer-events:all}.unit .sprite{pointer-events:none}.unit--active .sprite{filter:drop-shadow(0 0 3px color-mix(in srgb, var(--ui-gold) 75%, transparent))}.unit[data-phase="1"] .sprite:is([data-anim=idle],[data-anim=defend]) *{animation-delay:-480ms}.unit[data-phase="2"] .sprite:is([data-anim=idle],[data-anim=defend]) *{animation-delay:-1130ms}.unit[data-phase="3"] .sprite:is([data-anim=idle],[data-anim=defend]) *{animation-delay:-1720ms}.unit[data-phase="4"] .sprite:is([data-anim=idle],[data-anim=defend]) *{animation-delay:-2050ms}.label{transition:opacity .4s}.label--dying{opacity:0}.label-name{fill:var(--text);paint-order:stroke;stroke:color-mix(in srgb, var(--ui-ink) 85%, transparent);stroke-width:3.4px;stroke-linejoin:round;letter-spacing:.2px;font-size:12.5px;font-weight:800}.label--cats .label-name{fill:color-mix(in srgb, var(--cats) 25%, var(--text))}.label--dogs .label-name{fill:color-mix(in srgb, var(--dogs) 25%, var(--text))}.label--active .label-name{fill:var(--ui-gold)}.hp-back{fill:color-mix(in srgb, var(--ui-ink) 80%, transparent)}.hp-fill{transition:width .35s ease-out}.armor-shield{fill:var(--ui-steel);stroke:var(--ui-ink);stroke-width:1.4px}.armor-value{fill:var(--ui-ink);font-size:9.5px;font-weight:900}.defend-circle{fill:var(--ui-shield);stroke:var(--ui-ink);stroke-width:1.2px}.defend-icon{fill:var(--text)}.popup{paint-order:stroke;stroke:color-mix(in srgb, var(--ui-ink) 90%, transparent);stroke-width:4px;stroke-linejoin:round;font-size:22px;font-weight:900;animation:1.1s ease-out forwards popup-rise}.popup--damage{fill:var(--melee)}.popup--info{fill:var(--text);stroke:color-mix(in srgb, var(--ui-shade) 85%, transparent);stroke-width:3.4px;font-size:14px}@keyframes popup-rise{0%{opacity:0;transform:translateY(6px)scale(.6)}15%{opacity:1;transform:translateY(-6px)scale(1.15)}70%{opacity:1;transform:translateY(-22px)scale(1)}to{opacity:0;transform:translateY(-32px)scale(1)}}.popup{transform-box:fill-box;transform-origin:50%}.actions{flex:none;align-items:center;gap:10px;padding:0 4px;display:flex}.hint{color:var(--muted);gap:16px;margin-left:auto;font-size:13px;display:flex}.hint span{align-items:center;gap:6px;display:inline-flex}.swatch{border-radius:4px;width:14px;height:14px;display:inline-block}.swatch--reach{background:color-mix(in srgb, var(--reach) 50%, transparent);border:1.5px solid var(--reach)}.swatch--melee{background:color-mix(in srgb, var(--melee) 45%, transparent);border:1.5px solid var(--melee)}.swatch--shot{background:color-mix(in srgb, var(--shot) 45%, transparent);border:1.5px solid var(--shot)}.side{flex-direction:column;grid-area:side;gap:12px;min-height:0;display:flex}.panel{background:var(--panel);border:2px solid var(--line);border-radius:14px;flex-direction:column;min-height:0;display:flex;overflow:hidden}.panel-head{justify-content:space-between;align-items:baseline;padding:10px 14px 6px;display:flex}.panel-head h2{margin:0}.panel-sub{color:var(--muted);font-size:13px;font-weight:700}.queue{flex:none}.queue-list{flex-direction:column;gap:3px;margin:0;padding:2px 8px 10px;list-style:none;display:flex}.queue-item{border-left:3px solid #0000;border-radius:12px;grid-template-columns:34px 1fr auto 52px;align-items:center;gap:9px;padding:3px 8px 3px 4px;font-size:14px;font-weight:700;display:grid}.queue-item--cats{border-left-color:var(--cats)}.queue-item--dogs{border-left-color:var(--dogs)}.queue-item--break{margin-top:6px}.queue-item--current{background:var(--bg);box-shadow:inset 0 0 0 2px var(--ui-gold)}.queue-item--current .queue-name{color:var(--ui-gold);font-weight:900}.queue-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.queue-tag{background:var(--panel-2);color:var(--muted);border-radius:999px;padding:1px 7px;font-size:11px;font-weight:800}.queue-tag--now{background:var(--ui-gold);color:var(--ui-gold-ink);font-weight:900}.queue-empty{color:var(--muted);padding:6px 10px}.mini-hp{background:color-mix(in srgb, var(--ui-shade) 75%, transparent);border-radius:3px;height:6px;overflow:hidden}.mini-hp-fill{border-radius:3px;height:100%;transition:width .35s;display:block}.mini-hp-fill--good{background:var(--hp-good)}.mini-hp-fill--mid{background:var(--hp-mid)}.mini-hp-fill--low{background:var(--hp-low)}.portrait{background:radial-gradient(circle at 50% 35%, var(--ui-line-2), var(--panel));box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--text) 14%, transparent);border-radius:50%;flex:none;display:inline-block;position:relative;overflow:hidden}.portrait--cats{background:radial-gradient(circle at 50% 35%, color-mix(in srgb, var(--cats) 32%, var(--ui-ink)), var(--ui-ink));box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--cats) 55%, transparent)}.portrait--dogs{background:radial-gradient(circle at 50% 35%, color-mix(in srgb, var(--dogs) 32%, var(--ui-shade)), var(--ui-shade));box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--dogs) 55%, transparent)}.portrait .sprite{width:190%;height:190%;position:absolute;top:-22%;left:-45%}.portrait .sprite *{animation:none!important}.log{flex:auto}.log-list{scroll-behavior:smooth;flex:1;min-height:0;margin:0;padding:2px 12px 12px;font-size:13.5px;line-height:1.4;list-style:none;overflow-y:auto}.log-item{color:var(--text);border-left:2px solid #0000;padding:3px 0 3px 9px}.log-item--cats{border-left-color:color-mix(in srgb, var(--cats) 60%, transparent)}.log-item--dogs{border-left-color:color-mix(in srgb, var(--dogs) 60%, transparent)}.log-item--move,.log-item--wait,.log-item--defend{color:var(--muted)}.log-item--death{color:var(--ui-danger);font-weight:800}.log-item--round{text-align:center;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);background:color-mix(in srgb, var(--line) 45%, transparent);border:0;border-radius:999px;margin:8px 0 4px;padding:2px 0;font-size:12px;font-weight:800}.log-item--win{color:var(--ui-gold);border-left-color:var(--ui-gold);font-weight:800}.log-empty{color:var(--muted);font-style:italic}.unit-card{z-index:20;pointer-events:none;background:var(--panel);border:2px solid var(--line);border-top:3px solid var(--cats);box-shadow:0 4px 0 var(--ui-shade);border-radius:14px;padding:10px 12px;font-size:13.5px;position:fixed}.unit-card--dogs{border-top-color:var(--dogs)}.unit-card-head{align-items:center;gap:10px;margin-bottom:8px;display:flex}.unit-card-name{font-size:16px;font-weight:900}.unit-card-class{color:var(--muted);font-size:12.5px}.unit-card-stats{grid-template-columns:auto 1fr;gap:3px 14px;margin:0;display:grid}.unit-card-stats dt{color:var(--muted)}.unit-card-stats dd{text-align:right;margin:0;font-weight:700}.unit-card-note{color:var(--muted);margin-top:7px;font-size:12px;font-weight:700}.victory{background:var(--ui-scrim);z-index:10;border-radius:18px;justify-content:center;align-items:center;animation:.5s ease-out both victory-in;display:flex;position:absolute;inset:0}.victory-card{text-align:center;min-width:440px;color:var(--ui-ribbon-ink);background:var(--ui-ribbon);border:3px solid var(--ui-gold);box-shadow:0 4px 0 var(--ui-shade);border-radius:18px;padding:26px 40px 30px;animation:.6s cubic-bezier(.2,1.4,.4,1) both victory-pop}.victory .victory-kicker{color:var(--ui-ribbon-sub);font-size:13px}.victory-title{font-family:var(--ui-font-display);color:var(--ui-ribbon-ink);margin:8px 0 18px;font-size:44px;font-weight:900;line-height:1.05}.victory .victory-unit small,.victory .result-forfeit,.victory .result-rematch{color:var(--ui-ribbon-sub)}.victory .btn:not(.btn--primary){background:color-mix(in srgb, var(--ui-shade) 35%, transparent);border-color:color-mix(in srgb, var(--ui-ribbon-ink) 45%, transparent);color:var(--ui-ribbon-ink)}.victory .portrait--cats{box-shadow:0 0 0 2px var(--cats)}.victory .portrait--dogs{box-shadow:0 0 0 2px var(--dogs)}.victory .spinner{border-color:color-mix(in srgb, var(--ui-ribbon-ink) 35%, transparent);border-top-color:var(--ui-ribbon-ink)}.victory-units{flex-wrap:wrap;justify-content:center;gap:14px;margin-bottom:24px;display:flex}.victory-unit{flex-direction:column;align-items:center;gap:4px;font-size:13px;font-weight:800;display:flex}.victory-unit small{color:var(--muted);font-weight:700}@keyframes victory-in{0%{opacity:0}}@keyframes victory-pop{0%{opacity:0;transform:scale(.85)translateY(10px)}}.battle--phone{--pad-t:max(6px, env(safe-area-inset-top));--pad-r:max(6px, env(safe-area-inset-right));--pad-b:max(6px, env(safe-area-inset-bottom));--pad-l:max(6px, env(safe-area-inset-left));--side-min:118px;--stage-h:calc(100cqh - var(--pad-t) - var(--pad-b));grid-template-columns:minmax(0, calc(var(--stage-h) * var(--field-aspect))) minmax(var(--side-min), 1fr);min-width:0;height:100%;padding:var(--pad-t) var(--pad-r) var(--pad-b) var(--pad-l);grid-template-rows:minmax(0,1fr);grid-template-areas:"stage side";gap:6px}.battle--phone.battle--rotated{--pad-l:max(6px, env(safe-area-inset-top));--pad-r:max(6px, env(safe-area-inset-bottom));--pad-t:max(6px, env(safe-area-inset-right));--pad-b:max(6px, env(safe-area-inset-left))}.battle--phone .stage{gap:0}.battle--phone .field{touch-action:none;-webkit-user-select:none;-webkit-touch-callout:none}.battle--phone .side{gap:5px;min-width:0;overflow:hidden;container:side/size}.side-head{flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:4px;display:flex}.battle--phone .turn{flex-wrap:wrap;gap:4px;min-width:0}.battle--phone .round-chip,.battle--phone .turn-chip{padding:3px 8px;font-size:12.5px}.side-tools{gap:4px;margin-left:auto;display:flex}.side-tools .btn{white-space:nowrap;min-height:44px;padding:0 9px;font-size:12.5px;text-decoration:none}.icon-btn{font:inherit;width:38px;height:38px;color:var(--text);background:var(--panel-2);border:2px solid var(--ui-line-2);box-shadow:0 3px 0 var(--ui-shade);cursor:pointer;border-radius:12px;flex:none;justify-content:center;align-items:center;padding:0;font-size:19px;font-weight:800;line-height:1;transition:filter .15s,transform 50ms,opacity .15s;display:inline-flex}@media (hover:hover){.icon-btn:hover:not(:disabled){filter:brightness(1.06)}}.icon-btn:active:not(:disabled){box-shadow:0 0 0 var(--ui-shade);transform:translateY(3px)}.icon-btn:disabled{opacity:.5;cursor:default}.battle--phone .icon-btn{width:44px;height:44px}.btn--small{justify-content:center;min-height:30px;padding:4px 10px;font-size:13px}.battle--phone .btn--small{min-height:44px}.side-status{flex-direction:column;flex:none;gap:4px;min-width:0;font-size:12.5px;display:flex}.side-status>*{max-width:100%;position:static!important;transform:none!important}.side-body{flex-direction:column;flex:1 1 0;min-height:0;display:flex;container:sidebody/size}.side-body>*{flex:auto;min-height:0}.side-log-toggle{flex:none;width:100%}.side-actions{flex:none;grid-template-columns:1fr 1fr;gap:5px;display:grid}.side-actions .btn{justify-content:center;min-height:44px;padding:0 4px;font-size:14px}@container side (width<=150px){.side-actions .btn{font-size:12.5px}.side-tools .btn{padding:0 6px;font-size:11.5px}}.queue--compact{border-radius:12px}.queue--compact .queue-list{grid-template-columns:repeat(auto-fill,minmax(36px,1fr));align-content:start;gap:4px;padding:5px;display:grid}.queue--compact .queue-item{border-bottom:2px solid #0000;border-left:0;border-radius:7px;flex-direction:column;align-items:center;gap:3px;padding:3px 2px 4px;display:flex;position:relative}.queue--compact .queue-item--cats{border-bottom-color:var(--cats)}.queue--compact .queue-item--dogs{border-bottom-color:var(--dogs)}.queue--compact .queue-item--break{margin-top:0}.queue--compact .queue-name{display:none}.queue--compact .mini-hp{width:100%;height:4px}.queue-wait{background:var(--muted);border-radius:50%;width:7px;height:7px;position:absolute;top:2px;right:2px}@container sidebody (width>=230px) and (height>=290px){.queue--compact .queue-list{flex-direction:column;gap:2px;display:flex}.queue--compact .queue-item{border-bottom:0;border-left:3px solid #0000;flex-direction:row;grid-template-columns:24px 1fr 44px;gap:7px;padding:1px 8px 1px 3px;font-size:13px;display:grid}.queue--compact .queue-item--cats{border-left-color:var(--cats)}.queue--compact .queue-item--dogs{border-left-color:var(--dogs)}.queue--compact .queue-item .portrait{width:24px!important;height:24px!important}.queue--compact .queue-name{display:block}.queue-wait{display:none;position:static}}.battle--phone .log .panel-head{align-items:center;padding:6px 8px 4px 10px}.battle--phone .log-list{overscroll-behavior:contain;touch-action:pan-y;scroll-behavior:auto;padding:2px 8px 8px;font-size:12px}.unit-card--docked{z-index:auto;pointer-events:auto;box-shadow:none;padding:7px 8px;font-size:12.5px;position:static;overflow:hidden}.unit-card--docked .unit-card-head{gap:7px;margin-bottom:5px}.unit-card-title{flex:auto;min-width:0}.unit-card--docked .unit-card-name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.unit-card--docked .unit-card-class{font-size:11.5px}.unit-card--docked .unit-card-stats{gap:1px 8px}.unit-card-close{align-self:flex-start;width:30px;height:30px;font-size:20px}.unit-card--docked .unit-card-note{margin-top:4px;font-size:11.5px}.battle--phone .victory{background:0 0;border-radius:0;justify-content:stretch;align-items:stretch;display:flex;position:static;inset:auto}.battle--phone .victory-card{border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:100%;min-width:0;padding:8px 8px 10px;display:flex;overflow:hidden}.battle--phone .victory-kicker{letter-spacing:.6px;font-size:10.5px}.battle--phone .victory-title{margin:0;font-size:19px;line-height:1.15}.battle--phone .victory-units{gap:5px;margin:0}.battle--phone .victory-unit{gap:1px;font-size:11px}.battle--phone .victory-unit .portrait{width:30px!important;height:30px!important}.battle--phone .victory .btn--primary{white-space:nowrap;min-height:44px;padding:0 12px;font-size:15px}.battle--phone .result-details,.battle--phone .result-actions{font-size:12.5px}@container sidebody (width<=200px){.battle--phone .victory-unit>span:not(.portrait){display:none}}.field--mobile .label-name{display:none}.field--mobile .popup{stroke-width:5px;font-size:32px}.field--mobile .popup--info{font-size:22px}.cell--selected{fill:color-mix(in srgb, var(--reach) 62%, transparent);stroke:var(--reach);stroke-width:3.4px}.cell--approach-option{fill:color-mix(in srgb, var(--ui-gold) 28%, transparent);stroke:color-mix(in srgb, var(--ui-gold-line) 85%, transparent);stroke-width:2.4px;stroke-dasharray:5 4}.cell--approach.cell--approach-option{fill:color-mix(in srgb, var(--ui-gold) 60%, transparent);stroke:var(--ui-gold-line);stroke-width:3px;stroke-dasharray:7 4}@container sidebody (height<=220px){.queue--compact .queue-list{grid-template-columns:repeat(auto-fill,minmax(30px,1fr));gap:2px;padding:3px}.queue--compact .queue-item{gap:2px;padding:2px 1px 3px}.queue--compact .queue-item .portrait{width:24px!important;height:24px!important}}.field--disabled{pointer-events:none}.leave-confirm-backdrop{z-index:60}.leave-confirm.modal{max-height:100%;overflow:hidden}.leave-confirm-actions .btn{justify-content:center}.leave-confirm--docked{border-radius:12px;flex-direction:column;justify-content:center;gap:6px;min-width:0;padding:8px 9px 9px;display:flex;overflow:hidden}.leave-confirm-title{margin:0;font-size:16px;line-height:1.2}.leave-confirm-text{color:var(--muted);margin:0;font-size:12.5px;line-height:1.3}.leave-confirm--docked .leave-confirm-actions{flex-direction:column;gap:5px;margin-top:2px;display:flex}.leave-confirm--docked .btn{width:100%;min-height:44px;padding:0 8px;font-size:14.5px}.online-page{background:var(--bg);height:100%;color:var(--text);padding:20px 16px 40px;overflow-y:auto}.online-page>*{max-width:920px;margin-left:auto;margin-right:auto}.online-page>*+*{margin-top:16px}.muted{color:var(--muted)}.online-page .panel{border-radius:18px}.online-page .panel-head{padding:16px 18px 10px}.online-page .panel-head h2{font-family:var(--ui-font-display);letter-spacing:0;text-transform:none;color:var(--text);font-size:26px;font-weight:900;line-height:1.1}.lobby-brand{flex-direction:column;gap:2px;display:flex}.brand--big{flex-wrap:wrap;min-width:0;margin:0;font-size:32px}.brand-sub{color:var(--muted);font-size:14px;font-weight:700}.lobby-head,.page-head{border-bottom:2px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding-bottom:14px;display:flex}.page-head .brand--big{font-size:24px}.lobby-actions,.form-actions,.room-actions,.modal-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}a.btn{text-decoration:none}.btn--sm{min-height:40px;padding:6px 14px;font-size:14px}.btn--accent{background:var(--ui-gold);border-color:var(--ui-gold-line);color:var(--ui-gold-ink);box-shadow:0 3px 0 var(--ui-gold-shade);font-weight:900}.btn--accent:active:not(:disabled){box-shadow:0 0 0 var(--ui-gold-shade)}.text-input{font:inherit;color:var(--text);background:var(--bg);border:2px solid var(--ui-line-2);border-radius:12px;width:100%;min-width:0;min-height:46px;padding:0 14px;font-size:16px;font-weight:800}.text-input:focus{outline:2px solid var(--text);outline-offset:2px}.text-input[aria-invalid=true]{border-color:var(--ui-danger-line)}.text-input--sm{width:200px;min-height:40px;padding:0 12px}.field-label{margin:10px 0 6px}.field-error{color:var(--ui-danger);flex-basis:100%;margin-top:5px;font-size:13px;font-weight:700}.field-ok{color:var(--hp-good);margin-top:5px;font-size:13px}.nick-form{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.nick-label{white-space:nowrap}.lobby-head-tools{flex-wrap:wrap;align-items:center;gap:8px 12px;min-width:0;max-width:100%;display:flex}.page-head-tools{align-items:center;gap:8px;min-width:0;margin-left:auto;display:flex}.lobby-head-tools .nick-form{min-width:0;max-width:100%}.lobby-head-tools .text-input--sm{flex:120px;width:min(200px,100%)}.lang-select{font:inherit;color:var(--text);background:var(--panel);border:2px solid var(--ui-line-2);cursor:pointer;border-radius:12px;max-width:100%;min-height:40px;padding:0 10px;font-size:15px;font-weight:800}.lang-select:focus-visible{outline:2px solid var(--text);outline-offset:2px}.modal-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.modal-head .modal-title{min-width:0}.seg{border:2px solid var(--ui-line-2);border-radius:12px;display:inline-flex;overflow:hidden}.seg-btn{font:inherit;color:var(--muted);background:var(--bg);cursor:pointer;border:0;min-height:42px;padding:0 18px;font-weight:800}.seg-btn+.seg-btn{border-left:2px solid var(--ui-line-2)}.seg-btn--on{color:var(--ui-gold-ink);background:var(--ui-gold);font-weight:900}.seg-btn:focus-visible{outline-offset:-4px}.warn{background:color-mix(in srgb, var(--ui-gold) 10%, transparent);border:2px solid color-mix(in srgb, var(--ui-gold) 40%, transparent);color:var(--ui-gold);border-radius:12px;margin-top:12px;padding:8px 12px;font-size:14px;font-weight:700}.create-form .create-body{padding:0 18px 18px}.create-form .form-actions{margin-top:16px}.games-list{flex-direction:column;gap:8px;margin:0;padding:0 12px 12px;list-style:none;display:flex}.games-empty{color:var(--muted);padding:18px 14px 22px}.game-row{background:var(--bg);border:2px solid var(--line);border-radius:14px;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:10px 14px;display:flex}.game-main{flex:220px;min-width:0}.game-name{text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:900;overflow:hidden}.game-players{color:var(--muted);flex-wrap:wrap;gap:6px;font-size:14px;font-weight:700;display:flex}.game-nick{color:var(--text)}.game-meta{color:var(--muted);font-size:13px;font-weight:700}.game-actions{gap:8px;margin-left:auto;display:flex}.status-chip{border:2px solid var(--line);white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:800}.status-chip--waiting{color:var(--ui-gold);border-color:color-mix(in srgb, var(--ui-gold) 50%, transparent)}.status-chip--side_pick,.status-chip--battle{color:var(--hp-good);border-color:color-mix(in srgb, var(--hp-good) 50%, transparent)}.status-chip--finished{color:var(--muted)}.build-info{text-align:center;color:var(--muted);opacity:.6;font-variant-numeric:tabular-nums;-webkit-user-select:all;user-select:all;font-size:11px}.toast{background:var(--panel-2);border:2px solid var(--ui-line-2);border-radius:12px;padding:9px 14px;font-size:14px;font-weight:800}.toast--error{color:var(--ui-danger);border-color:var(--ui-danger-line);background:var(--ui-danger-bg)}.toast--field{z-index:12;background:var(--ui-danger-bg);box-shadow:0 3px 0 var(--ui-shade);position:absolute;top:14px;left:50%;transform:translate(-50%)}.notice{background:var(--panel-2);border:2px solid var(--ui-line-2);box-shadow:0 3px 0 var(--ui-shade);color:var(--text);border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:9px 14px;font-weight:800;display:flex}.notice-close{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;font-size:18px;line-height:1}.notice-float{z-index:30;max-width:calc(100% - 32px);position:fixed;top:66px;left:50%;transform:translate(-50%)}.conn-banner{z-index:50;background:var(--ui-danger-bg);border:2px solid var(--ui-danger-line);color:var(--ui-danger);box-shadow:0 4px 0 var(--ui-shade);border-radius:999px;align-items:center;gap:9px;padding:9px 16px;font-weight:800;display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%)}.conn-dot{background:var(--hp-low);border-radius:50%;width:9px;height:9px;animation:1s ease-in-out infinite alternate pulse}.spinner{border:2px solid var(--line);border-top-color:var(--ui-gold);vertical-align:-2px;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{to{opacity:.35}}.modal-backdrop{background:var(--ui-scrim);z-index:40;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;max-width:none!important;margin:0!important}.modal{width:100%;max-width:420px;box-shadow:0 4px 0 var(--ui-shade);border-radius:18px;padding:22px 22px 20px}.modal-title{font-family:var(--ui-font-display);margin:0 0 4px;font-size:26px;font-weight:900;line-height:1.1}.modal-sub{color:var(--muted);margin:0 0 6px;font-size:14px;font-weight:600}.modal-actions{justify-content:flex-end;margin-top:18px}.fs-btn .fs-icon{display:block}.fs-hint{overflow-wrap:anywhere;max-height:calc(100% - 8px);overflow-y:auto}.fs-hint-steps{counter-reset:fs-step;flex-direction:column;gap:8px;margin:10px 0 8px;padding:0;list-style:none;display:flex}.fs-hint-steps li{counter-increment:fs-step;align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex}.fs-hint-steps li:before{content:counter(fs-step) ".";color:var(--muted);min-width:1.2em}.fs-hint-icon{color:var(--text);flex:none}@media (height<=500px){.fs-hint-backdrop{padding:8px}.fs-hint{padding:14px 16px 12px}.fs-hint .modal-title{font-size:20px}.fs-hint .modal-actions{margin-top:10px}}.room,.sidepick,.gone{padding:18px 20px 20px}.gone{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.room-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.room-title{font-family:var(--ui-font-display);margin:0;font-size:30px;font-weight:900;line-height:1.1}.room-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;font-weight:700;display:flex}.room-meta b{color:var(--text)}.room-block{margin-top:18px}.room-h{margin:0 0 8px}.room-wait{flex-wrap:wrap;align-items:center;gap:12px;font-weight:700;display:flex}.room-actions{margin-top:18px}.invite{margin-top:14px}.invite-row{flex-wrap:wrap;gap:8px;display:flex}.invite-row .invite-link{flex:260px;font-family:ui-monospace,Menlo,monospace;font-size:13.5px}.invite-link--manual{border-color:var(--ui-gold)}.req-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.req-item{background:var(--bg);border:2px solid var(--line);border-radius:14px;align-items:center;gap:8px;padding:6px 10px;display:flex}.req-nick{flex:1;min-width:0;font-weight:800}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--panel-2);border:2px solid var(--ui-line-2);border-radius:999px;padding:3px 10px;font-size:13px;font-weight:800}.offline-tag{color:var(--ui-danger);background:var(--ui-danger-bg);border:1px solid var(--ui-danger-line);white-space:nowrap;border-radius:999px;padding:1px 7px;font-size:11.5px;font-weight:800}.clock{font-variant-numeric:tabular-nums;background:var(--panel-2);border:2px solid var(--ui-line-2);white-space:nowrap;border-radius:999px;padding:3px 12px;font-weight:800}.clock--cats{color:var(--cats);border-color:color-mix(in srgb, var(--cats) 50%, transparent)}.clock--dogs{color:var(--dogs);border-color:color-mix(in srgb, var(--dogs) 50%, transparent)}.clock--urgent{color:var(--ui-ink);background:var(--hp-low);border-color:var(--hp-low);animation:.5s ease-in-out infinite alternate pulse}.sidepick-cols{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px;display:grid}.sidepick-col{background:var(--bg);border:2px solid var(--line);border-radius:14px;flex-direction:column;align-items:center;gap:10px;min-height:190px;padding:14px 10px;display:flex}.sidepick-col--cats{background:var(--cats-soft);border-color:color-mix(in srgb, var(--cats) 50%, transparent)}.sidepick-col--dogs{background:var(--dogs-soft);border-color:color-mix(in srgb, var(--dogs) 50%, transparent)}.sidepick-title{font-family:var(--ui-font-display);margin:0;font-size:24px;font-weight:900;line-height:1.1}.sidepick-col--cats .sidepick-title{color:var(--cats)}.sidepick-col--dogs .sidepick-title{color:var(--dogs)}.sidepick-seats{flex-direction:column;flex:1;align-items:center;gap:6px;width:100%;display:flex}.seat-chip{background:var(--panel);border:2px solid var(--line);border-radius:999px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;max-width:100%;padding:6px 12px;display:flex}.seat-chip--me{border-color:var(--ui-gold)}.seat-chip--ready{box-shadow:0 0 0 2px color-mix(in srgb, var(--hp-good) 50%, transparent)}.seat-nick{text-overflow:ellipsis;font-weight:800;overflow:hidden}.seat-tag{color:var(--ui-gold);background:color-mix(in srgb, var(--ui-gold) 14%, transparent);border-radius:999px;padding:1px 7px;font-size:11.5px;font-weight:800}.seat-tag--ready{color:var(--hp-good);background:color-mix(in srgb, var(--hp-good) 14%, transparent)}.sidepick-foot{flex-wrap:wrap;align-items:center;gap:14px;margin-top:18px;display:flex}.coin-overlay{background:var(--ui-scrim);z-index:45;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.coin-card{background:var(--panel);border:2px solid var(--line);box-shadow:0 4px 0 var(--ui-shade);border-radius:18px;flex-direction:column;align-items:center;gap:18px;padding:26px 34px;display:flex}.coin{background:var(--ui-gold);border:3px solid var(--ui-gold-line);width:96px;height:96px;box-shadow:inset 0 -6px 0 var(--ui-gold-shade), 0 4px 0 var(--ui-shade);border-radius:50%;justify-content:center;align-items:center;animation:1.2s cubic-bezier(.3,.7,.4,1) both coin-flip;display:flex}.coin-face{font-family:var(--ui-font-display);color:var(--ui-gold-ink);font-size:44px;font-weight:900}.coin--guest{background:var(--ui-steel);border-color:color-mix(in srgb, var(--ui-steel) 40%, white);box-shadow:inset 0 -6px 0 color-mix(in srgb, var(--ui-steel) 50%, var(--ui-shade)), 0 4px 0 var(--ui-shade)}.coin--guest .coin-face{color:var(--ui-shade)}.coin--unknown{background:var(--muted);border-color:color-mix(in srgb, var(--muted) 50%, white);box-shadow:inset 0 -6px 0 color-mix(in srgb, var(--muted) 50%, var(--ui-shade)), 0 4px 0 var(--ui-shade)}.coin--unknown .coin-face{color:var(--ui-shade)}.coin-personal{font-family:var(--ui-font-display);font-size:30px;font-weight:900}.coin-personal--win{color:var(--ui-gold)}.coin-personal--lose{color:var(--muted)}.coin-text{font-size:20px;font-weight:800}@keyframes coin-flip{0%{transform:translateY(40px)rotateX(0)}50%{transform:translateY(-50px)rotateX(1080deg)}to{transform:translateY(0)rotateX(1800deg)}}.players{flex:none}.players-list{flex-direction:column;gap:6px;margin:0;padding:0 12px 10px;list-style:none;display:flex}.player-row{flex-wrap:wrap;align-items:center;gap:6px 8px;padding:5px 0;display:flex}.player-side{border-radius:999px;padding:2px 8px;font-size:12px;font-weight:800}.player-side--cats{color:var(--cats);background:var(--cats-soft)}.player-side--dogs{color:var(--dogs);background:var(--dogs-soft)}.player-nick{text-overflow:ellipsis;min-width:0;font-weight:800;overflow:hidden}.player-hint{color:var(--ui-danger);flex-basis:100%;font-size:12.5px;font-weight:700}.field-wrap[data-pending=true]{cursor:progress}.log-item--timeout{color:var(--ui-gold);font-style:italic}.result-details{flex-direction:column;gap:4px;margin:-8px 0 16px;font-weight:700;display:flex}.result-forfeit{color:var(--muted)}.result-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;display:flex}.result-rematch{min-height:20px;color:var(--ui-gold);flex-basis:100%;justify-content:center;align-items:center;gap:8px;font-weight:700;display:flex}.toast--float{z-index:35;max-width:calc(100% - 32px);position:fixed;top:60px;left:50%;transform:translate(-50%)}@media (pointer:coarse) and (height<=500px) and (orientation:landscape),(pointer:coarse) and (width<=500px) and (orientation:portrait){.btn,.btn--sm,.btn--small,.btn--ghost,.text-input--sm,.lang-select,.seg-btn{min-height:44px}.icon-btn{min-width:44px;min-height:44px}.invite-row .invite-link{font-size:16px}}
