* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  -webkit-tap-highlight-color: transparent;
}

body {
  min-height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  background: url('img/background.avif') no-repeat center center;
  background-size: cover;
  font-family: Arial, sans-serif;
  overflow: hidden;
}

.container {
  position: relative;
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

#acorn-container {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 10;
}

.acorn-image {
  width: 200px;
  height: auto;
  cursor: pointer;
  filter: drop-shadow(0 10px 20px rgba(0, 0, 0, 0.3));
  transform-origin: center;

  /* Prevent outline/blue tap highlight/drag-selection on mobile & desktop */
  outline: none;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  -webkit-touch-callout: none;
  user-select: none;
  -webkit-user-select: none;
  -webkit-user-drag: none;
  touch-action: manipulation;
}

.acorn-image:hover {
  filter: drop-shadow(0 10px 25px rgba(0, 0, 0, 0.4));
}

/* extra safety for any focus cases */
.acorn-image:focus,
.acorn-image:focus-visible {
  outline: none;
}

.acorn-clicked {
  animation: quickShake 0.15s ease-in-out;
}

.acorn-shaking {
  animation: progressiveShake var(--shake-duration) ease-in-out infinite;
}

#eruption-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.erupting-face {
  position: absolute;
  width: 120px;
  height: 120px;
  object-fit: contain;
  animation: erupt 2s ease-out forwards;
  will-change: transform, opacity;
  pointer-events: none;
}

@keyframes erupt {
  0% {
      transform: translate(0, 0) scale(0) rotate(0deg);
      opacity: 1;
  }
  50% {
      opacity: 1;
  }
  100% {
      transform: translate(var(--tx), var(--ty)) scale(1) rotate(var(--rotation));
      opacity: 0;
  }
}

@keyframes progressiveShake {
  0% { transform: translate(0, 0) rotate(0deg); }
  10% { transform: translate(calc(var(--shake-intensity) * -2px), calc(var(--shake-intensity) * 1px)) rotate(calc(var(--shake-intensity) * -1deg)); }
  20% { transform: translate(calc(var(--shake-intensity) * 2px), calc(var(--shake-intensity) * -1px)) rotate(calc(var(--shake-intensity) * 1deg)); }
  30% { transform: translate(calc(var(--shake-intensity) * -3px), calc(var(--shake-intensity) * 2px)) rotate(calc(var(--shake-intensity) * -1.5deg)); }
  40% { transform: translate(calc(var(--shake-intensity) * 3px), calc(var(--shake-intensity) * -2px)) rotate(calc(var(--shake-intensity) * 1.5deg)); }
  50% { transform: translate(calc(var(--shake-intensity) * -2px), calc(var(--shake-intensity) * 1px)) rotate(calc(var(--shake-intensity) * -1deg)); }
  60% { transform: translate(calc(var(--shake-intensity) * 2px), calc(var(--shake-intensity) * -1px)) rotate(calc(var(--shake-intensity) * 1deg)); }
  70% { transform: translate(calc(var(--shake-intensity) * -3px), calc(var(--shake-intensity) * 2px)) rotate(calc(var(--shake-intensity) * -1.5deg)); }
  80% { transform: translate(calc(var(--shake-intensity) * 3px), calc(var(--shake-intensity) * -2px)) rotate(calc(var(--shake-intensity) * 1.5deg)); }
  90% { transform: translate(calc(var(--shake-intensity) * -2px), calc(var(--shake-intensity) * 1px)) rotate(calc(var(--shake-intensity) * -1deg)); }
  100% { transform: translate(0, 0) rotate(0deg); }
}

@keyframes quickShake {
  0%, 100% { transform: translate(0, 0) rotate(0deg); }
  25% { transform: translate(-5px, 2px) rotate(-3deg); }
  75% { transform: translate(5px, -2px) rotate(3deg); }
}