.stage {
  position: fixed; inset: 0;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 12px;
  padding:
    calc(60px + env(safe-area-inset-top))
    20px
    calc(60px + env(safe-area-inset-bottom));
  background: radial-gradient(ellipse at center, #150525 0%, #0a0a1e 70%);
}
.head { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.title { font-size: clamp(22px, 6vw, 38px); letter-spacing: 0.05em; }
.info { font-size: clamp(9px, 1.6vw, 11px); letter-spacing: 0.15em; color: rgba(255,255,255,0.8); }
.info b { color: var(--c-yellow); font-weight: normal; }
.info .sep { margin: 0 8px; color: rgba(255,255,255,0.3); }
#board {
  width: min(86vw, 380px);
  aspect-ratio: 1;
  max-height: 55vh;
  image-rendering: pixelated;
  background: #050510;
  touch-action: none;
}
.hint {
  font-size: 9px;
  letter-spacing: 0.18em;
  color: rgba(255,255,255,0.5);
}
.celebration {
  position: fixed;
  inset: 0;
  display: grid; place-items: center;
  pointer-events: none;
  z-index: 50;
  background: rgba(10,10,30,0.6);
}
.celebration h2 { font-size: clamp(50px, 14vw, 120px); animation: rainbow 1.5s ease-in-out forwards; }
@keyframes rainbow {
  0% { transform: scale(0.5); opacity: 0; filter: hue-rotate(0deg); }
  30% { transform: scale(1.2); opacity: 1; filter: hue-rotate(180deg); }
  70% { transform: scale(1); opacity: 1; filter: hue-rotate(360deg); }
  100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .celebration h2 { animation: none; }
}
