/* ========================================
   动画关键帧 - 精简版
   ======================================== */

/* 便签漂浮 */
@keyframes noteFloat1 {
  0%, 100% { transform: translate(0, 0) rotate(-2deg); }
  25% { transform: translate(15px, -20px) rotate(1deg); }
  50% { transform: translate(-5px, -35px) rotate(-1deg); }
  75% { transform: translate(-15px, -15px) rotate(2deg); }
}

@keyframes noteFloat2 {
  0%, 100% { transform: translate(0, 0) rotate(3deg); }
  33% { transform: translate(-20px, -25px) rotate(-2deg); }
  66% { transform: translate(10px, -15px) rotate(1deg); }
}

@keyframes noteFloat3 {
  0%, 100% { transform: translate(0, 0) rotate(-1deg); }
  25% { transform: translate(-10px, -30px) rotate(2deg); }
  75% { transform: translate(20px, -10px) rotate(-3deg); }
}

/* 标题逐字出现 */
.word-reveal {
  display: inline-block;
  opacity: 0;
  transform: translateY(20px);
  animation: wordReveal 0.5s forwards;
}

@keyframes wordReveal {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 延迟动画 */
.delay-1 { transition-delay: 0.1s; }
.delay-2 { transition-delay: 0.2s; }
.delay-3 { transition-delay: 0.3s; }
.delay-4 { transition-delay: 0.4s; }
.delay-5 { transition-delay: 0.5s; }

/* 打字机光标 */
@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

/* 标题光晕 */
.title-glow {
  text-shadow: 0 0 40px rgba(0, 47, 167, 0.25);
}

/* 新留言卡入场 */
@keyframes msgFadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px) scale(0.9);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.message-note-new {
  animation: msgFadeInUp 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) forwards !important;
}