@keyframes shake {
  0%, 100% { transform: translateX(0) rotate(0); }
  25% { transform: translateX(-6px) rotate(-6deg); }
  50% { transform: translateX(6px) rotate(6deg); }
  75% { transform: translateX(-6px) rotate(-6deg); }
}
.animate-shake {
  animation: shake 0.4s ease-in-out infinite;
}
@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50% { transform: translateY(-12px); }
}
.animate-float {
  animation: float 3s ease-in-out infinite;
}
@keyframes pulse-glow {
  0%, 100% { opacity: 0.6; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.05); }
}
.animate-pulse-glow {
  animation: pulse-glow 3s ease-in-out infinite;
}
.writing-vertical {
  writing-mode: vertical-rl;
  text-orientation: upright;
}
/* 隱藏未啟用的畫面 */
.hidden-screen {
  display: none !important;
}
/* 防止手機瀏覽器下拉更新或橡皮筋效果影響體驗 */
body {
  overscroll-behavior-y: none;
}