.movement-joystick {
  --joystick-size: 116px;
  position: fixed;
  width: var(--joystick-size);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  z-index: 1002;
  user-select: none;
  pointer-events: auto;
}
.movement-joystick__grip {
  width: 42px;
  height: 24px;
  padding: 0;
  border: 2px solid #a7e8a1;
  border-radius: 12px;
  background: #102a43;
  color: #fff;
  font: 700 18px/1 Arial, sans-serif;
  letter-spacing: 2px;
  cursor: grab;
  touch-action: none;
}
.movement-joystick__grip:active { cursor: grabbing; }
.movement-joystick__base {
  width: var(--joystick-size);
  height: var(--joystick-size);
  box-sizing: border-box;
  display: grid;
  place-items: center;
  border: 2px solid #a7e8a1;
  border-radius: 50%;
  background: rgba(16, 42, 67, .78);
  box-shadow: 0 3px 10px rgba(16, 42, 67, .24);
  touch-action: none;
}
.movement-joystick__knob {
  width: 48px;
  height: 48px;
  padding: 0;
  border: 2px solid #102a43;
  border-radius: 50%;
  background: #a7e8a1;
  box-shadow: 0 2px 5px rgba(0, 0, 0, .25);
  cursor: pointer;
  touch-action: none;
}
.movement-joystick__knob:focus-visible, .movement-joystick__grip:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
@media (max-width: 480px) { .movement-joystick { --joystick-size: 104px; } }
