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);
    }
  }