:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%;min-height:100vh}.app-screen-root{position:relative;width:100%;min-height:100vh;overflow:hidden}.app-screen-layer{--screen-enter-y: 10px;--screen-enter-scale: .997;--screen-enter-blur: .8px;--screen-enter-sat: .96;--screen-exit-y: -8px;--screen-exit-scale: .996;--screen-exit-blur: 1px;--screen-exit-sat: .95;width:100%;min-height:100vh;will-change:opacity,transform,filter;transition:opacity .22s ease,transform .25s cubic-bezier(.22,1,.36,1),filter .25s ease}.app-screen-layer-deploy{--screen-enter-y: 14px;--screen-exit-y: -4px}.app-screen-layer-report{--screen-enter-y: 6px;--screen-enter-scale: .986;--screen-enter-blur: 1px;--screen-exit-y: -6px;--screen-exit-scale: .992}.app-screen-layer-return{--screen-enter-y: -10px;--screen-exit-y: 8px}.app-screen-layer-menu{--screen-enter-y: 8px;--screen-enter-scale: .993}.app-screen-layer-entering{opacity:0;transform:translateY(var(--screen-enter-y)) scale(var(--screen-enter-scale));filter:saturate(var(--screen-enter-sat)) blur(var(--screen-enter-blur))}.app-screen-layer-entered{opacity:1;transform:translateY(0) scale(1);filter:saturate(1) blur(0)}.app-screen-layer-exiting{opacity:0;transform:translateY(var(--screen-exit-y)) scale(var(--screen-exit-scale));filter:saturate(var(--screen-exit-sat)) blur(var(--screen-exit-blur))}.modal-backdrop,.modal-surface{will-change:opacity,transform,filter}.modal-backdrop{transition:opacity .17s ease}.modal-backdrop-entering,.modal-backdrop-entered{opacity:1}.modal-backdrop-exiting{opacity:0}.modal-surface{transition:opacity .19s ease,transform .22s cubic-bezier(.22,1,.36,1),filter .22s ease}.modal-surface-entering{opacity:0;transform:translateY(11px) scale(.98);filter:saturate(.94)}.modal-surface-entered{transition-delay:45ms;opacity:1;transform:translateY(0) scale(1);filter:saturate(1)}.modal-surface-exiting{transition-delay:0ms;opacity:0;transform:translateY(8px) scale(.987);filter:saturate(.95)}.title-content-shell,.game-content-shell{transition:transform .18s ease,filter .18s ease,opacity .18s ease}.title-content-paused,.game-content-paused{transform:scale(.988);filter:saturate(.9) brightness(.92)}.game-screen-paused{background:radial-gradient(circle at 50% 10%,rgba(148,163,184,.06),transparent 44%),linear-gradient(135deg,#0f0e17,#1a1a2e)}.role-modal-backdrop{background:radial-gradient(circle at var(--role-origin-x, 50%) var(--role-origin-y, 50%),rgba(147,197,253,.12) 0%,rgba(96,165,250,.06) 18%,rgba(0,0,0,0) 42%),#0000008f}.role-modal-surface.modal-surface-entering{transform:translateY(10px) scale(.972)}.codex-entry{will-change:transform,opacity,filter}.codex-entry-stagger{opacity:0;animation:codex-entry-rise .26s cubic-bezier(.22,1,.36,1) forwards}.wave-clear-engaging{animation:wave-clear-engage-shift var(--wave-transition-animation-ms, .84s) cubic-bezier(.22,1,.36,1) forwards}.wave-engage-flash{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:14px;pointer-events:none;background:radial-gradient(circle at 50% 52%,rgba(134,239,172,.28),rgba(74,222,128,.1) 42%,transparent 72%);animation:wave-engage-flash var(--wave-transition-animation-ms, .84s) ease-out forwards}.wave-engage-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;pointer-events:none;background:radial-gradient(circle at 50% 58%,rgba(74,222,128,.2),rgba(74,222,128,.05) 32%,transparent 64%),linear-gradient(180deg,#0b0f1a1a,#0b0f1a80);animation:wave-engage-overlay-fade var(--wave-transition-animation-ms, .84s) ease-out forwards}.wave-engage-streaks{position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(98deg,#a7f3d000 0,#a7f3d000 14px,#a7f3d033 15px,#a7f3d000 18px);transform:translate(-12%);animation:wave-engage-streak-flow var(--wave-transition-animation-ms, .84s) ease-out forwards}.wave-engage-label{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);color:#dcfce7;font-size:clamp(22px,5vw,34px);font-weight:900;letter-spacing:2px;text-shadow:0 0 18px rgba(74,222,128,.52);animation:wave-engage-label-pop var(--wave-transition-animation-ms, .84s) cubic-bezier(.22,1,.36,1) forwards}.wave-next-btn:disabled{cursor:default;opacity:.78}.wave-next-btn-engaging{filter:brightness(1.06);box-shadow:0 0 0 1px #a7f3d066 inset,0 10px 24px #4ade8057}h1{font-size:3.2em;line-height:1.1}button{font-family:inherit}button:focus,button:focus-visible{outline:2px solid #f8fafc;outline-offset:2px}.next-spawn-panel{position:relative;overflow:hidden;box-shadow:0 0 12px color-mix(in srgb,var(--next-glow-color) 22%,transparent)}.screen-life-loss-shake{animation:screen-life-loss-shake .34s ease-out 1}.life-loss-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;pointer-events:none;background:radial-gradient(circle at 50% 20%,rgba(239,68,68,.26),transparent 42%),radial-gradient(circle at 50% 82%,rgba(153,27,27,.24),transparent 44%),#78141426;animation:life-loss-overlay-flash .82s ease-out forwards}.life-loss-banner{position:fixed;top:84px;left:50%;transform:translate(-50%);z-index:1060;pointer-events:none;border:1px solid rgba(255,204,204,.72);border-radius:999px;background:#7f1d1deb;color:#fee2e2;font-size:16px;font-weight:900;letter-spacing:.8px;padding:7px 16px;box-shadow:0 0 26px #ef444485;animation:life-loss-banner-pop .84s cubic-bezier(.22,1,.36,1) forwards}.hud-life-loss-pulse{animation:hud-life-loss-pulse .62s ease-out}.hud-life-loss-float{position:absolute;top:-14px;left:50%;transform:translate(-50%);font-size:12px;font-weight:900;color:#fecaca;text-shadow:0 0 6px rgba(127,29,29,.95);animation:hud-life-loss-float .76s ease-out forwards}.next-spawn-panel:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent 0%,color-mix(in srgb,var(--next-glow-color) 16%,transparent) 35%,transparent 70%);animation:next-panel-sheen 3.1s ease-in-out infinite;pointer-events:none}.next-spawn-dot{animation:next-dot-pulse 2.1s ease-in-out infinite}.next-lane-pulse{animation:next-lane-pulse 2.4s ease-in-out infinite}.damage-burst{animation:damage-burst-rise .6s ease-out forwards}.enemy-hit-flash{animation:enemy-hit-flash .28s ease-out}.fast-enemy-core{animation:fast-enemy-core-pulse 1.1s ease-in-out infinite}.splitter-enemy-core{animation:splitter-enemy-core-pulse 1.35s ease-in-out infinite}.sniper-enemy-core{animation:sniper-enemy-core-pulse 1.2s ease-in-out infinite}.split-child-enemy-core{animation:split-child-enemy-core-pulse 1.05s ease-in-out infinite}.retaliation-lane-flash{animation:retaliation-lane-flash .3s ease-out}.tile-retaliation-flash{animation:tile-retaliation-flash .3s ease-out}.tile-repair-flash{animation:tile-repair-flash .28s ease-out}.row-floor{overflow:hidden}.tile-row-frontline{background:linear-gradient(90deg,#e67e2233,#c0392b24);border:1px solid rgba(230,126,34,.38)}.tile-row-midline{background:linear-gradient(90deg,#3498db33,#2980b924);border:1px solid rgba(52,152,219,.38)}.tile-row-backline{background:linear-gradient(90deg,#27ae6038,#16a08529);border:1px solid rgba(39,174,96,.38)}.wave-clear-panel{position:relative;overflow:hidden;border:1px solid #2f5a3b;border-radius:14px;background:radial-gradient(circle at 50% -30%,#f1c40f33,#27ae6026 40%,#0d1117f5 76%);padding:14px 12px 12px;text-align:center;box-shadow:0 0 0 1px #2ecc7124 inset,0 0 16px #2ecc7124,0 0 24px #f1c40f14;animation:wave-clear-panel-glow 2.4s ease-in-out infinite}.waveclear-top-cta{position:sticky;top:8px;z-index:14;margin-bottom:10px}.wave-clear-confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.wave-clear-spark{position:absolute;top:12%;width:7px;height:7px;border-radius:50%;background:linear-gradient(140deg,#f1c40f,#fff2a6);box-shadow:0 0 6px #ffe6788c;opacity:0;animation:wave-clear-spark-rise ease-out forwards}.wave-next-btn{width:100%;border:none;border-radius:12px;padding:12px 10px;background:linear-gradient(90deg,#1f9b4b,#2ecc71 50%,#1f9b4b);color:#f6fff8;font-size:15px;font-weight:800;letter-spacing:.3px;cursor:pointer;box-shadow:0 0 0 1px #ffffff29 inset,0 6px 14px #2ecc713d;animation:wave-next-btn-attention 2.1s ease-in-out infinite}.wave-next-btn:hover{filter:brightness(1.08)}@keyframes wave-clear-panel-glow{0%,to{box-shadow:0 0 0 1px #2ecc7124 inset,0 0 14px #2ecc711a,0 0 20px #f1c40f0f}50%{box-shadow:0 0 0 1px #2ecc7133 inset,0 0 20px #2ecc712e,0 0 28px #f1c40f1a}}@keyframes wave-clear-spark-rise{0%{transform:translateY(0) scale(.5);opacity:0}15%{opacity:1}to{transform:translateY(-72px) scale(1.1);opacity:0}}@keyframes wave-next-btn-attention{0%,to{transform:scale(1)}50%{transform:scale(1.01)}}@keyframes codex-entry-rise{0%{opacity:0;transform:translateY(7px) scale(.992);filter:saturate(.9)}to{opacity:1;transform:translateY(0) scale(1);filter:saturate(1)}}@keyframes wave-engage-flash{0%{opacity:0}28%{opacity:1}to{opacity:0}}@keyframes wave-clear-engage-shift{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-18px) scale(.962);filter:saturate(1.14) brightness(1.08);opacity:.82}}@keyframes wave-engage-overlay-fade{0%{opacity:0}15%{opacity:1}to{opacity:0}}@keyframes wave-engage-streak-flow{0%{opacity:0;transform:translate(-16%) scale(1.04)}30%{opacity:1}to{opacity:0;transform:translate(9%) scale(1)}}@keyframes wave-engage-label-pop{0%{opacity:0;transform:translate(-50%,-30%) scale(1.2);filter:blur(4px)}24%{opacity:1;transform:translate(-50%,-50%) scale(1);filter:blur(0)}to{opacity:0;transform:translate(-50%,-58%) scale(.97)}}.shot-trace{transform-origin:center bottom;animation:shot-trace-fire .24s ease-out forwards}.shot-trace-blocked{animation:shot-trace-blocked .28s ease-out forwards}.chain-trace{animation:chain-trace-zap .22s ease-out forwards}@keyframes next-panel-sheen{0%,to{transform:translate(-40%);opacity:.22}50%{transform:translate(40%);opacity:.55}}@keyframes screen-life-loss-shake{0%,to{transform:translate(0)}20%{transform:translate(-3px,1px)}40%{transform:translate(3px,-2px)}60%{transform:translate(-4px)}80%{transform:translate(4px,1px)}}@keyframes life-loss-overlay-flash{0%{opacity:0}18%{opacity:1}to{opacity:0}}@keyframes life-loss-banner-pop{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.92)}24%{opacity:1;transform:translate(-50%) translateY(0) scale(1.07)}to{opacity:0;transform:translate(-50%) translateY(-14px) scale(.98)}}@keyframes hud-life-loss-pulse{0%{transform:scale(1);filter:brightness(1)}35%{transform:scale(1.14);filter:brightness(1.48)}to{transform:scale(1);filter:brightness(1)}}@keyframes hud-life-loss-float{0%{opacity:0;transform:translate(-50%) translateY(6px)}25%{opacity:1;transform:translate(-50%) translateY(0)}to{opacity:0;transform:translate(-50%) translateY(-14px)}}@keyframes next-dot-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes next-lane-pulse{0%,to{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--next-glow-color) 22%,transparent),0 0 5px color-mix(in srgb,var(--next-glow-color) 7%,transparent)}50%{box-shadow:inset 0 0 8px color-mix(in srgb,var(--next-glow-color) 10%,transparent),0 0 10px color-mix(in srgb,var(--next-glow-color) 16%,transparent)}}@keyframes damage-burst-rise{0%{opacity:0;transform:translate(-50%,-20%) scale(.9)}20%{opacity:1;transform:translate(-50%,-45%) scale(1)}to{opacity:0;transform:translate(-50%,-95%) scale(.96)}}@keyframes enemy-hit-flash{0%{transform:scale(1);opacity:1}50%{transform:scale(1.04);opacity:.8}to{transform:scale(1);opacity:1}}@keyframes fast-enemy-core-pulse{0%,to{filter:saturate(1) brightness(1)}50%{filter:saturate(1.18) brightness(1.1)}}@keyframes splitter-enemy-core-pulse{0%,to{filter:saturate(1) brightness(1)}50%{filter:saturate(1.14) brightness(1.08)}}@keyframes sniper-enemy-core-pulse{0%,to{filter:saturate(1) brightness(1)}50%{filter:saturate(1.18) brightness(1.14)}}@keyframes split-child-enemy-core-pulse{0%,to{transform:scale(1);filter:saturate(1) brightness(1)}50%{transform:scale(1.03);filter:saturate(1.12) brightness(1.08)}}@keyframes retaliation-lane-flash{0%{opacity:0}35%{opacity:1}to{opacity:0}}@keyframes tile-retaliation-flash{0%{transform:scale(1);opacity:1;filter:brightness(1);box-shadow:0 0 #f8717100}45%{transform:scale(.955);opacity:.76;filter:brightness(1.22);box-shadow:0 0 0 1px #f871716b,0 0 18px #ef444452}to{transform:scale(1);opacity:1;filter:brightness(1);box-shadow:0 0 #f8717100}}@keyframes tile-repair-flash{0%{transform:scale(1);filter:brightness(1)}45%{transform:scale(1.02);filter:brightness(1.12)}to{transform:scale(1);filter:brightness(1)}}@keyframes shot-trace-fire{0%{opacity:0;transform:translate(-50%) scaleY(.15)}30%{opacity:.9;transform:translate(-50%) scaleY(1)}to{opacity:0;transform:translate(-50%) scaleY(.8)}}@keyframes shot-trace-blocked{0%{opacity:0;transform:translate(-50%) scaleY(.15)}30%{opacity:.7;transform:translate(-50%) scaleY(.7)}to{opacity:0;transform:translate(-50%) scaleY(.35)}}@keyframes chain-trace-zap{0%{opacity:0;filter:brightness(1)}40%{opacity:1;filter:brightness(1.35)}to{opacity:0;filter:brightness(1)}}@media (prefers-reduced-motion: reduce){.screen-life-loss-shake,.app-screen-layer,.modal-backdrop,.modal-surface,.title-content-paused,.game-content-paused,.title-content-shell,.game-content-shell,.codex-entry-stagger,.wave-clear-engaging,.wave-engage-flash,.wave-engage-overlay,.wave-engage-streaks,.wave-engage-label,.life-loss-overlay,.life-loss-banner,.hud-life-loss-pulse,.hud-life-loss-float,.next-spawn-panel:after,.next-spawn-dot,.next-lane-pulse,.damage-burst,.enemy-hit-flash,.fast-enemy-core,.splitter-enemy-core,.sniper-enemy-core,.split-child-enemy-core,.retaliation-lane-flash,.tile-retaliation-flash,.tile-repair-flash,.wave-clear-panel,.wave-clear-spark,.wave-next-btn,.shot-trace,.shot-trace-blocked,.chain-trace{animation:none!important}.wave-next-btn,.next-spawn-panel,.row-floor,.title-content-paused,.game-content-paused,button,[class*=tile],[class*=enemy]{transition:none!important}}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}
