body {
    min-height: max(884px, 100dvh);
  }

  .grid.invalid {
    animation: shake 0.5s;
  }

  .is-active-cell {
    box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1);
  }

  @keyframes shake {
    0% { transform: translateX(0); }
    10% { transform: translateX(-10px); }
    20% { transform: translateX(10px); }
    30% { transform: translateX(-10px); }
    40% { transform: translateX(10px); }
    50% { transform: translateX(0); }
  }
