/* 果冻反馈动效 */

/* 消息滑入动画 */
@keyframes messageSlideIn {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 加载点跳动动画 */
@keyframes loadingBounce {
  0%, 80%, 100% {
    transform: scale(0);
    opacity: 0.3;
  }
  40% {
    transform: scale(1);
    opacity: 1;
  }
}

/* 按钮果冻按压效果 */
.icon-btn,
.send-btn,
.save-btn,
.add-btn {
  transition: transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.icon-btn:active,
.send-btn:active,
.save-btn:active,
.add-btn:active {
  transform: scale(0.92);
}

/* 消息气泡弹出效果 */
.message-bubble {
  animation: bubblePop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

@keyframes bubblePop {
  0% {
    transform: scale(0.8);
    opacity: 0;
  }
  50% {
    transform: scale(1.05);
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

/* 抽屉滑入弹性动画 */
.drawer-panel {
  transition: transform 0.38s cubic-bezier(0.34, 1.2, 0.64, 1);
}

/* 表情选择器弹出 */
.emoji-picker {
  transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* 输入框聚焦动画 */
#messageInput {
  transition: all 0.2s ease;
}

#messageInput:focus {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(201, 162, 160, 0.2);
}

/* hover 悬停效果 */
.icon-btn:hover {
  background: var(--line);
}

.send-btn:hover,
.save-btn:hover {
  box-shadow: 0 6px 16px rgba(178, 134, 132, 0.4);
  transform: translateY(-2px);
}

.add-btn:hover {
  box-shadow: 0 6px 16px rgba(138, 154, 124, 0.4);
  transform: translateY(-2px);
}

/* 世界书条目展开动画 */
.worldbook-entry {
  animation: entryFadeIn 0.3s ease;
}

@keyframes entryFadeIn {
  from {
    opacity: 0;
    transform: translateX(-12px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

/* 删除按钮摇晃提示 */
@keyframes shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  75% { transform: translateX(4px); }
}

.danger-btn:hover {
  animation: shake 0.3s ease;
}
