@keyframes mj-ripple{0%{opacity:.42;width:0;height:0}to{opacity:0;width:190%;height:190%}}@keyframes mj-piece-land{0%{opacity:0;filter:blur(1.5px);transform:translateY(-10%)scale(.72)}68%{opacity:1;filter:blur();transform:translateY(2%)scale(1.06)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}@keyframes mj-connect-drop{0%{opacity:.2;transform:translateY(-170%)scale(.88)}72%{opacity:1;transform:translateY(8%)scale(1.04)}88%{transform:translateY(-3%)scale(.99)}to{transform:translateY(0)scale(1)}}@keyframes mj-checker-hop{0%{opacity:.72;transform:translateY(-24%)scale(.86)}64%{opacity:1;transform:translateY(5%)scale(1.05)}to{transform:translateY(0)scale(1)}}@keyframes mj-reversi-flip{0%{opacity:.35;transform:perspective(220px)rotateY(86deg)scale(.82)}55%{opacity:1;transform:perspective(220px)rotateY(-12deg)scale(1.05)}to{transform:perspective(220px)rotateY(0)scale(1)}}@keyframes mj-line-draw-h{0%{opacity:.25;transform:scaleX(.05)}to{opacity:1;transform:scaleX(1)}}@keyframes mj-line-draw-v{0%{opacity:.25;transform:scaleY(.05)}to{opacity:1;transform:scaleY(1)}}@keyframes mj-hit-burst{0%{filter:brightness(1.7);transform:scale(.45)rotate(-16deg)}70%{filter:brightness(1.2);transform:scale(1.16)rotate(4deg)}to{filter:brightness();transform:scale(1)rotate(0)}}@keyframes mj-miss-splash{0%{opacity:.25;transform:scale(.4)}60%{opacity:1;transform:scale(1.15)}to{opacity:.9;transform:scale(1)}}@keyframes mj-result-rise{0%{opacity:0;transform:translateY(18px)scale(.96)}70%{opacity:1;transform:translateY(-2px)scale(1.01)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes mj-tower-fire{0%{opacity:0;transform:translate(-50%,-50%)scaleX(.05)}28%{opacity:.95}to{opacity:0;transform:translate(-50%,-50%)scaleX(1)}}@keyframes mj-enemy-march{0%,to{transform:translateY(0)rotate(-1deg)}50%{transform:translateY(-4px)rotate(2deg)}}@keyframes mj-arena-pulse{0%,to{box-shadow:inset 0 0 0 1px oklch(100% 0 0/.06),inset 0 0 oklch(83% .17 185/0)}50%{box-shadow:inset 0 0 0 1px oklch(100% 0 0/.08),inset 0 0 52px oklch(83% .17 185/.11)}}@keyframes mj-danger-pulse{0%,to{filter:brightness()}50%{filter:brightness(1.13)saturate(1.12)}}@keyframes mj-card-hit{0%{filter:brightness(1.45);transform:translate(0)}28%{transform:translate(-5px)rotate(-.8deg)}56%{transform:translate(4px)rotate(.8deg)}to{filter:brightness();transform:translate(0)}}.game-route-active [data-game-board] button,.arcade-route button{touch-action:manipulation;-webkit-user-select:none;user-select:none}.game-route-active [data-game-board] button{position:relative}.mj-press-ripple{left:var(--mj-ripple-x);top:var(--mj-ripple-y);z-index:18;aspect-ratio:1;pointer-events:none;background:radial-gradient(circle,oklch(96% .03 190/.4),oklch(83% .17 185/.14) 52%,#0000 72%);border-radius:999px;animation:.42s cubic-bezier(.16,.8,.25,1) forwards mj-ripple;position:absolute;transform:translate(-50%,-50%)}.game-route-active [data-game-board] .game-piece{will-change:transform, filter}.game-route-active [data-game-board=chess] .chess-piece{animation:.21s cubic-bezier(.2,.86,.22,1.1) both mj-piece-land}.game-route-active [data-game-board=checkers] .game-piece{animation:.23s cubic-bezier(.2,.9,.25,1.12) both mj-checker-hop}.game-route-active [data-game-board=connect-4] .connect4-disc[data-disc=R],.game-route-active [data-game-board=connect-4] .connect4-disc[data-disc=Y]{animation:.3s cubic-bezier(.16,.82,.25,1.08) both mj-connect-drop}.game-route-active [data-game-board=reversi] .reversi-disc{backface-visibility:hidden;animation:.28s cubic-bezier(.2,.82,.25,1.08) both mj-reversi-flip}.game-route-active [data-game-board=gomoku] .gomoku-stone,.game-route-active [data-game-board=hex] .hex-stone{animation:.22s cubic-bezier(.2,.86,.22,1.12) both mj-piece-land}.game-route-active [data-game-board=dots-and-boxes] .dots-edge-line[data-taken=true][data-orientation=horizontal]{transform-origin:50%;animation:.21s ease-out both mj-line-draw-h}.game-route-active [data-game-board=dots-and-boxes] .dots-edge-line[data-taken=true][data-orientation=vertical]{transform-origin:50%;animation:.21s ease-out both mj-line-draw-v}.game-route-active [data-game-board=battleships] .battle-cell[data-shot=hit]{animation:.31s cubic-bezier(.2,.85,.25,1.1) both mj-hit-burst}.game-route-active [data-game-board=battleships] .battle-cell[data-shot=miss]{animation:.25s ease-out both mj-miss-splash}[data-game-result]{animation:.36s cubic-bezier(.2,.86,.25,1.06) both mj-result-rise}[data-game-result=win] .lucide-trophy{filter:drop-shadow(0 0 14px oklch(83% .17 185/.48))}@media (width<=640px){.game-route-active main{padding-inline:.75rem!important}.game-route-active .surface:has([data-game-board]){padding-inline:.65rem}.game-route-active [data-game-board=tic-tac-toe] .cell-tile{min-height:clamp(4rem,22vw,5.3rem)}.game-route-active [data-game-board=connect-4] .connect4-column{padding-inline:.18rem}.game-route-active [data-game-board=battleships] .battle-cell{min-width:0;min-height:clamp(1.65rem,8.1vw,2.15rem)}.arcade-route .arcade-action-row{bottom:max(.5rem, env(safe-area-inset-bottom));z-index:30;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:oklch(12% .03 252/.9);border:1px solid oklch(100% 0 0/.08);border-radius:1rem;padding:.45rem;position:sticky;box-shadow:0 14px 32px -20px oklch(2% .02 252/.95)}.arcade-route :is(.arcade-action-button,.arcade-secondary-button){min-height:3rem}}[data-arcade-game=tower-defense] .arcade-scene-citadel[data-running=true]{animation:2.2s ease-in-out infinite mj-arena-pulse}[data-arcade-game=tower-defense] .arcade-tower-slot[data-built=true]{overflow:visible}[data-arcade-game=tower-defense] .arcade-tower-shot{z-index:-1;pointer-events:none;transform-origin:0;filter:drop-shadow(0 0 4px oklch(83% .17 185/.9));background:linear-gradient(90deg,oklch(92% .08 190),oklch(83% .17 185/.5),#0000);width:clamp(2.2rem,9vw,5rem);height:2px;animation:.56s ease-out infinite mj-tower-fire;position:absolute;top:50%;left:50%}[data-arcade-game=tower-defense] .arcade-tower-slot:nth-of-type(2n) .arcade-tower-shot{animation-delay:-180ms;rotate:18deg}[data-arcade-game=tower-defense] .arcade-tower-slot:nth-of-type(3n) .arcade-tower-shot{animation-delay:-360ms;rotate:-18deg}[data-arcade-game=tower-defense] .arcade-enemy-unit{animation:.72s ease-in-out infinite mj-enemy-march}[data-arcade-game=tower-defense] .arcade-scene-citadel[data-boss=true]{animation:.9s ease-in-out infinite mj-danger-pulse}[data-arcade-game=survival-roguelite] .arcade-scene-last-stand[data-active=true]{animation:1.6s ease-in-out infinite mj-arena-pulse}[data-arcade-game=survival-roguelite] .arcade-scene-last-stand[data-boss=true]{animation:.7s ease-in-out infinite mj-danger-pulse}[data-arcade-game=survival-roguelite] .arcade-survival-enemy{transition:transform .18s,filter .18s}[data-arcade-game=survival-roguelite] .arcade-scene-last-stand[data-active=true] .arcade-survival-enemy:nth-of-type(3n){animation:.86s ease-in-out infinite reverse mj-enemy-march}[data-arcade-game=zombie-survival] .arcade-scene-deadnight[data-phase=night]{filter:saturate(1.12)brightness(.9);animation:1.2s ease-in-out infinite mj-danger-pulse}[data-arcade-game=zombie-survival] .arcade-scene-deadnight[data-phase=night] .arcade-horde-unit{animation:.58s ease-in-out infinite mj-enemy-march}[data-arcade-game=zombie-survival] .arcade-scene-deadnight[data-horde=true] .arcade-moon{filter:drop-shadow(0 0 22px oklch(70% .2 24/.42))}[data-arcade-game=crime-empire] .arcade-scene-underworld[data-heat=medium]{box-shadow:inset 0 0 50px oklch(78% .16 52/.07),0 24px 55px -34px oklch(2% .02 252/.98)}[data-arcade-game=crime-empire] .arcade-scene-underworld[data-heat=high]{animation:1.3s ease-in-out infinite mj-danger-pulse;box-shadow:inset 0 0 65px oklch(69% .2 26/.14),0 24px 55px -34px oklch(2% .02 252/.98)}[data-arcade-game=crime-empire] .arcade-scene-underworld[data-heat=high] .arcade-city-windows{filter:drop-shadow(0 0 8px oklch(72% .2 32/.65))}[data-arcade-game=monster-collector] .arcade-creature-card[data-hit-react=true]{animation:.26s ease-out both mj-card-hit}[data-arcade-game=monster-collector] .arcade-scene-mythkin[data-advantage=player] .arcade-creature-card-player,[data-arcade-game=monster-collector] .arcade-scene-mythkin[data-advantage=wild] .arcade-creature-card-wild{border-color:oklch(78% .16 155/.48);box-shadow:0 0 0 1px oklch(78% .16 155/.12),0 18px 34px -22px oklch(78% .16 155/.4)}@media (prefers-reduced-motion:reduce){.mj-press-ripple{display:none}.game-route-active [data-game-board] *,.arcade-route *{animation:none!important}}.a11y-still .mj-press-ripple,.a11y-still .game-route-active [data-game-board] *,.a11y-still .arcade-route *{animation:none!important}
