.grid-container{display:flex;justify-content:center;align-items:center;padding:10px;overflow-x:auto;-webkit-overflow-scrolling:touch}.grid-container::-webkit-scrollbar{height:8px}.grid-container::-webkit-scrollbar-track{background:rgba(0,0,0,.1);border-radius:4px}.grid-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:4px}.grid-container table{border-spacing:0;border-collapse:collapse}.grid-container tr{display:flex;height:35px}.node{width:35px;height:35px;border:1px solid rgba(0,0,0,.1);padding:0;transition:all .2s ease-out;background:#fff;position:relative}.node:hover{transform:scale(1.1);z-index:2}.node_end,.node_start{background:transparent!important}.node_wall{background:#4a5568;animation:wallAnimation .3s ease-in-out forwards}.node_visited{animation:visitedStartNodeBlueAnimation 1.5s ease-out forwards}.node_visited.node_start{animation:visitedStartNodePurpleAnimation 1.5s ease-out forwards}.node_path{animation:shortestPathAnimation .5s ease-out forwards;background:linear-gradient(45deg,#ffb4a2,#ffcb77);position:relative;overflow:hidden}.node_path:after{content:"";position:absolute;top:0;left:-100%;width:200%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.4) 50%,transparent);animation:pathFlow 2s cubic-bezier(.4,0,.2,1) infinite}.path-step{animation:pathStepAnimation .5s ease-out forwards}.running-girl{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);animation:stepAnimation .1s ease-in-out forwards;opacity:0}@keyframes pathFlow{0%{transform:translateX(-50%) skewX(-15deg)}to{transform:translateX(50%) skewX(-15deg)}}@keyframes stepAnimation{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}40%{transform:translate(-50%,-50%) scale(1)}90%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.8)}}@keyframes wiggle{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes target-bounce{0%,to{transform:scale(1)}50%{transform:scale(1.1) rotate(5deg)}}@keyframes path-step{0%{transform:scale(0) rotate(-180deg)}60%{transform:scale(1.2) rotate(10deg)}to{transform:scale(1) rotate(0)}}@keyframes ripple{0%{transform:scale(.5);opacity:.5}to{transform:scale(1.5);opacity:0}}@keyframes wallAnimation{0%{transform:scale(.3);background-color:#718096}50%{transform:scale(1.2)}to{transform:scale(1);background-color:#4a5568}}@keyframes visitedStartNodePurpleAnimation{0%{transform:scale(.3);background-color:rgba(41,4,24,.75);border-radius:100%}50%{background-color:rgba(97,0,20,.75)}75%{transform:scale(1.2);background-color:rgba(216,5,141,.75)}to{transform:scale(1);background-color:rgba(178,67,255,.75)}}@keyframes visitedStartNodeBlueAnimation{0%{transform:scale(.3);background-color:rgba(0,0,66,.75);border-radius:100%}50%{background-color:rgba(17,104,217,.75)}75%{transform:scale(1.2);background-color:rgba(0,217,159,.75)}to{transform:scale(1);background-color:rgba(148,251,237,.873)}}@keyframes shortestPathAnimation{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.2);opacity:.7}to{transform:scale(1);opacity:1}}@keyframes celebration{0%{transform:translateY(0) scale(1)}50%{transform:translateY(-20px) scale(1.2)}to{transform:translateY(0) scale(1)}}@keyframes bounceAnimation{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes pulseAnimation{0%{transform:scale(1);box-shadow:0 0 0 0 hsla(0,88%,68%,.7)}70%{transform:scale(1.1);box-shadow:0 0 0 10px hsla(0,88%,68%,0)}to{transform:scale(1);box-shadow:0 0 0 0 hsla(0,88%,68%,0)}}@keyframes slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-up{animation:slide-up .5s ease-out forwards}@media (max-width:640px){.grid-container{padding:5px}.node{width:30px}.grid-container tr,.node{height:30px}}.animate-wiggle{animation:wiggle 1s ease-in-out infinite}.animate-float{animation:float 2s ease-in-out infinite}.animate-target-bounce{animation:target-bounce 2s ease-in-out infinite}.animate-path-step{animation:path-step .5s ease-out forwards}.animate-ripple{animation:ripple 1s ease-out infinite}.animate-celebration{animation:celebration .5s ease-out forwards}