h1 {
  font-size: 15vmin;
  margin-bottom: 0;
}
h2 {
  font-size: 5vmin;
  margin-top: 0;
  margin-bottom: 40px;
}

body {
  height: 100vh;
  display: flex;
  flex-direction: column;
  background-color: white;
  align-items: center;
  justify-content: center;
  cursor: none;
  --mouseStartX: -64;
  --mouseStartY: -64;
  overflow: hidden;
}

#jail {
  position: relative;
  border: 2px solid gray;
  border-radius: 50%;
  width: 32px;
  height: 32px;
}

#spinner {
  display: none;
  position: absolute;
  width: 100px;
  height: 100px;
  left: 50%;
  top: 50%;
  transform-origin: 50% 50%;
  -webkit-animation: 4s spin linear infinite;
          animation: 4s spin linear infinite;
}

body.seenMouse #spinner {
  display: block;
}

body.seenMouse #cursor {
  position: absolute;
  left: 12px;
  top: 8px;
  -webkit-animation: 2s dragMouse ease forwards;
          animation: 2s dragMouse ease forwards;
  width: 32px;
  height: 32px;
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t/AAABX0lEQVRYw+3UMUvDUBQF4EOv3Nk2OnjxB4gg6OQo2Nm/5c9w0snJyUWlKAhBEaRgKypiiK/FrdBCad/NdWkgFnHyNUvOEshyPk5eHoilRyy7KCm12fOwNASx9D5d34jlshQEsfTMzEpD5IDSEEVAKYh5wMIRvwFU1ZIkXQxiHqCqNp1ObTwe2+vbe3hEEVAsH41GNhgM7OmpGxSRX0TIsgxZlkFVoarw3kNVsbLSwH18vo9Al1Xtr3LvPbz3iKI6bm/O9gEc/jdgKQfk5WnqsLoawXuPtfXtqxCz/wix9PJv/vz8YsQyPD45NeecEcsFsRwEBxTLiWWXWNpJklgc3xmxtEP21wAgTR02t/ZGAJo6cTGAj4eHNhqNZQD4CLrC7BcbFk/4bIVOt9u1VuvaiOUxVP+STlxz/qVOXEwsb/3+10YU1QFgGmyBP5YRYukQyxGx7CwcUKVKlSpVqiwq37opL7UKP+WdAAAAAElFTkSuQmCC);
}

@-webkit-keyframes spin {
  0% {
    transform: translate(-50%, -50%) rotate(360deg);
  }
  100% {
    transform: translate(-50%, -50%) rotate(0deg);
  }
}

@keyframes spin {
  0% {
    transform: translate(-50%, -50%) rotate(360deg);
  }
  100% {
    transform: translate(-50%, -50%) rotate(0deg);
  }
}

@-webkit-keyframes dragMouse {
  0% {
    left: calc(var(--mouseX)*1px);
    top: calc(var(--mouseY)*1px);
  }
  100% {
    left: calc(var(--mouseX)/var(--width)*10px + 12px);
    top: calc(var(--mouseY)/var(--height)*10px + 8px);
  }
}

@keyframes dragMouse {
  0% {
    left: calc(var(--mouseX)*1px);
    top: calc(var(--mouseY)*1px);
  }
  100% {
    left: calc(var(--mouseX)/var(--width)*10px + 12px);
    top: calc(var(--mouseY)/var(--height)*10px + 8px);
  }
}
