/* ── Apple风格全局动画系统 ── */

/* ═══════════════════════════════════════════
   CSS变量：统一管理所有动画参数
   ═══════════════════════════════════════════ */
:root {
  --transition-fast: 150ms;
  --transition-normal: 200ms;
  --transition-slow: 300ms;
  --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-smooth: cubic-bezier(0.25, 0.1, 0.25, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
}

/* ═══════════════════════════════════════════
   1. 全局基础过渡 + 硬件加速
   ═══════════════════════════════════════════ */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  transition: all var(--transition-normal) var(--ease-smooth);
}

/* 硬件加速工具类 */
.gpu {
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.no-transition,
.no-transition * {
  transition: none !important;
}

/* 图片淡入加载（显式 opt-in，不自动影响所有图片） */
img:not([src]), img[src=""] {
  opacity: 0;
}

/* 链接颜色过渡（网站全局） */
a {
  transition: color var(--transition-normal) var(--ease-smooth),
              background-color var(--transition-normal) var(--ease-smooth),
              border-color var(--transition-normal) var(--ease-smooth),
              opacity var(--transition-normal) var(--ease-smooth);
}

/* 图片、视频、SVG 等媒体 */
video, canvas, svg {
  transition: opacity var(--transition-normal) var(--ease-smooth),
              transform var(--transition-normal) var(--ease-smooth);
}

/* ═══════════════════════════════════════════
   2. 弹性缩放工具类
   ═══════════════════════════════════════════ */
.scale-bounce {
  transition: transform var(--transition-normal) var(--ease-bounce);
}
.scale-bounce:hover {
  transform: scale(1.05);
}
.scale-bounce:active {
  transform: scale(0.98);
}

/* ═══════════════════════════════════════════
   3. 上浮效果工具类
   ═══════════════════════════════════════════ */
.lift-up {
  transition: transform var(--transition-normal) var(--ease-bounce),
              box-shadow var(--transition-normal) var(--ease-smooth);
}
.lift-up:hover {
  transform: translateY(-6px);
  box-shadow: 0 12px 24px rgba(92, 74, 50, 0.15);
}

/* ═══════════════════════════════════════════
   4. 按钮统一升级
   ═══════════════════════════════════════════ */
/* 所有按钮基础动画 */
.btn-primary, .btn-outline, .btn-preview, .btn-download-lg,
.admin-btn, .admin-btn-primary, .admin-btn-danger, .admin-btn-ghost,
button:not(.carousel-dot):not(.ai-chat-close):not(.comment-like-btn):not(.editor-tool-btn):not(.ai-reasoning-toggle) {
  transition: all var(--transition-normal) var(--ease-bounce);
  border-radius: 8px;
}

/* 悬停圆角扩大 */
.btn-primary:hover, .btn-outline:hover, .btn-preview:hover, .btn-download-lg:hover,
.admin-btn:hover, .admin-btn-primary:hover, .admin-btn-danger:hover, .admin-btn-ghost:hover {
  border-radius: 12px;
}

/* 点击缩小反馈 */
.btn-primary:active, .btn-outline:active, .btn-preview:active, .btn-download-lg:active,
.admin-btn:active, .admin-btn-primary:active {
  transform: scale(0.97);
}

/* 杏黄色按钮：悬停背景加深10% */
.btn-primary:hover, .admin-btn-primary:hover {
  filter: brightness(0.9);
}

/* 边框按钮：悬停变为杏黄背景 */
.btn-outline:hover {
  background: #E6B85C;
  color: #5C4A32;
  border-color: #E6B85C;
}

/* ═══════════════════════════════════════════
   5. 卡片动画
   ═══════════════════════════════════════════ */
.card {
  transition: transform var(--transition-normal) var(--ease-bounce),
              box-shadow var(--transition-normal) var(--ease-smooth);
}
.card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(92, 74, 50, 0.1);
}

/* 卡片内图片缩放 */
.card img:not(.gallery-img) {
  transition: transform 0.4s var(--ease-smooth);
}
.card:hover img:not(.gallery-img):not(.team-avatar-img) {
  transform: scale(1.02);
}

/* 卡片内封面图缩放 */
.resource-card-cover img, .activity-card-cover img, .news-card-cover img {
  transition: transform 0.5s var(--ease-smooth);
}
.resource-card:hover .resource-card-cover img,
.activity-card:hover .activity-card-cover img,
.news-card:hover .news-card-cover img {
  transform: scale(1.06);
}

/* 团队头像悬停放大 */
.team-avatar {
  transition: transform var(--transition-normal) var(--ease-bounce);
  overflow: hidden;
  border-radius: 50%;
}
.team-avatar:hover {
  transform: scale(1.1);
}
.team-avatar img {
  transition: transform 0.4s var(--ease-smooth);
}
.team-avatar:hover img {
  transform: scale(1.15);
}

/* 统计数字卡片 */
.stat-card {
  transition: transform var(--transition-normal) var(--ease-bounce),
              box-shadow var(--transition-normal) var(--ease-smooth);
}
.stat-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 10px 25px rgba(92, 74, 50, 0.12);
  will-change: transform;
}

/* ═══════════════════════════════════════════
   6. 首页轮播图动画
   ═══════════════════════════════════════════ */
.carousel-slide {
  transition: opacity 0.5s var(--ease-smooth);
  will-change: opacity;
}
.carousel-slide[style*="opacity: 1"] {
  will-change: auto;
}

/* 指示器弹性缩放 */
.carousel-dot {
  transition: all var(--transition-normal) var(--ease-bounce);
}
.carousel-dot.active {
  transform: scale(1.3);
  background: #E6B85C;
}

/* 左右箭头悬停 */
.carousel-btn {
  transition: all var(--transition-normal) var(--ease-bounce);
}
.carousel-btn:hover {
  transform: translateY(-50%) scale(1.2);
  background: rgba(230, 184, 92, 0.3);
  color: #5C4A32;
}

/* ═══════════════════════════════════════════
   7. 导航栏动画
   ═══════════════════════════════════════════ */
/* 导航滚动模糊（配合JS添加类名） */
.site-header {
  transition: background 0.3s var(--ease-smooth),
              backdrop-filter 0.3s var(--ease-smooth),
              box-shadow 0.3s var(--ease-smooth);
}
.site-header.scrolled {
  background: rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 1px 8px rgba(92, 74, 50, 0.08);
}

/* 导航链接：下划线居中展开，宽度匹配文字区域 */
.nav-link {
  position: relative;
  transition: color var(--transition-normal) var(--ease-smooth);
}
.nav-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0.75rem;
  right: 0.75rem;
  height: 2px;
  background: #E6B85C;
  border-radius: 2px;
  transform: scaleX(0);
  transition: transform var(--transition-normal) var(--ease-smooth);
}
.nav-link:hover { color: #E6B85C; }
.nav-link:hover::after,
.nav-link.active::after {
  transform: scaleX(1);
}

/* ═══════════════════════════════════════════
   8. 资源详情页动画
   ═══════════════════════════════════════════ */
/* 预览/下载大按钮强化弹性 */
.btn-preview, .btn-download-lg {
  transition: all 0.35s var(--ease-bounce);
}
.btn-preview:hover, .btn-download-lg:hover {
  transform: scale(1.04);
}
.btn-preview:active, .btn-download-lg:active {
  transform: scale(0.96);
}

/* 预览窗口弹出动画 */
@-webkit-keyframes previewPopIn {
  from { opacity: 0; -webkit-transform: scale(0.85) translate(20px, 20px); transform: scale(0.85) translate(20px, 20px); }
  to   { opacity: 1; -webkit-transform: scale(1) translate(0, 0); transform: scale(1) translate(0, 0); }
}
@keyframes previewPopIn {
  from { opacity: 0; -webkit-transform: scale(0.85) translate(20px, 20px); transform: scale(0.85) translate(20px, 20px); }
  to   { opacity: 1; -webkit-transform: scale(1) translate(0, 0); transform: scale(1) translate(0, 0); }
}
@-webkit-keyframes previewPopOut {
  from { opacity: 1; -webkit-transform: scale(1) translate(0, 0); transform: scale(1) translate(0, 0); }
  to   { opacity: 0; -webkit-transform: scale(0.9) translate(10px, 10px); transform: scale(0.9) translate(10px, 10px); }
}
@keyframes previewPopOut {
  from { opacity: 1; -webkit-transform: scale(1) translate(0, 0); transform: scale(1) translate(0, 0); }
  to   { opacity: 0; -webkit-transform: scale(0.9) translate(10px, 10px); transform: scale(0.9) translate(10px, 10px); }
}
.ppt-preview-overlay.show {
  -webkit-animation: previewPopIn 0.4s var(--ease-bounce);
  animation: previewPopIn 0.4s var(--ease-bounce);
}
.ppt-preview-overlay.hide {
  -webkit-animation: previewPopOut 0.25s var(--ease-smooth) forwards;
  animation: previewPopOut 0.25s var(--ease-smooth) forwards;
}

/* 星星跳动动画 */
@-webkit-keyframes starBounce {
  0%   { -webkit-transform: scale(1); transform: scale(1); }
  30%  { -webkit-transform: scale(1.35); transform: scale(1.35); }
  50%  { -webkit-transform: scale(0.9); transform: scale(0.9); }
  70%  { -webkit-transform: scale(1.15); transform: scale(1.15); }
  100% { -webkit-transform: scale(1); transform: scale(1); }
}
@keyframes starBounce {
  0%   { -webkit-transform: scale(1); transform: scale(1); }
  30%  { -webkit-transform: scale(1.35); transform: scale(1.35); }
  50%  { -webkit-transform: scale(0.9); transform: scale(0.9); }
  70%  { -webkit-transform: scale(1.15); transform: scale(1.15); }
  100% { -webkit-transform: scale(1); transform: scale(1); }
}
.star-bounce {
  -webkit-animation: starBounce 0.4s var(--ease-bounce);
  animation: starBounce 0.4s var(--ease-bounce);
}

/* 评论淡入 */
@-webkit-keyframes commentSlideIn {
  from { opacity: 0; -webkit-transform: translateY(16px); transform: translateY(16px); }
  to   { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes commentSlideIn {
  from { opacity: 0; -webkit-transform: translateY(16px); transform: translateY(16px); }
  to   { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}
.comment-new {
  -webkit-animation: commentSlideIn 0.35s var(--ease-smooth);
  animation: commentSlideIn 0.35s var(--ease-smooth);
}

/* ═══════════════════════════════════════════
   9. AI聊天窗口动画
   ═══════════════════════════════════════════ */
/* 聊天按钮：悬停放大+旋转 */
#ai-chat-button {
  transition: all var(--transition-normal) var(--ease-bounce) !important;
}
#ai-chat-button:hover {
  transform: scale(1.1) rotate(5deg);
  box-shadow: 0 6px 20px rgba(230, 184, 92, 0.4);
  will-change: transform;
}
#ai-chat-button:active {
  transform: scale(0.9);
}

/* 聊天窗口弹出 */
@-webkit-keyframes chatPopIn {
  from { opacity: 0; -webkit-transform: scale(0.7) translate(30px, 30px); transform: scale(0.7) translate(30px, 30px); }
  to   { opacity: 1; -webkit-transform: scale(1) translate(0, 0); transform: scale(1) translate(0, 0); }
}
@keyframes chatPopIn {
  from { opacity: 0; -webkit-transform: scale(0.7) translate(30px, 30px); transform: scale(0.7) translate(30px, 30px); }
  to   { opacity: 1; -webkit-transform: scale(1) translate(0, 0); transform: scale(1) translate(0, 0); }
}
@-webkit-keyframes chatPopOut {
  from { opacity: 1; -webkit-transform: scale(1) translate(0, 0); transform: scale(1) translate(0, 0); }
  to   { opacity: 0; -webkit-transform: scale(0.7) translate(30px, 30px); transform: scale(0.7) translate(30px, 30px); }
}
@keyframes chatPopOut {
  from { opacity: 1; -webkit-transform: scale(1) translate(0, 0); transform: scale(1) translate(0, 0); }
  to   { opacity: 0; -webkit-transform: scale(0.7) translate(30px, 30px); transform: scale(0.7) translate(30px, 30px); }
}
#ai-chat-window.open {
  -webkit-animation: chatPopIn 0.35s var(--ease-bounce) forwards;
  animation: chatPopIn 0.35s var(--ease-bounce) forwards;
}
#ai-chat-window.closing {
  -webkit-animation: chatPopOut 0.25s var(--ease-smooth) forwards;
  animation: chatPopOut 0.25s var(--ease-smooth) forwards;
}

/* 消息气泡滑入 */
@-webkit-keyframes bubbleSlideUp {
  from { opacity: 0; -webkit-transform: translateY(12px); transform: translateY(12px); }
  to   { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes bubbleSlideUp {
  from { opacity: 0; -webkit-transform: translateY(12px); transform: translateY(12px); }
  to   { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}
.ai-chat-bubble {
  -webkit-animation: bubbleSlideUp 0.3s var(--ease-smooth);
  animation: bubbleSlideUp 0.3s var(--ease-smooth);
}

/* 打字指示器弹跳（保留原有动画） */
@-webkit-keyframes typingBounce {
  0%, 60%, 100% { -webkit-transform: translateY(0); transform: translateY(0); opacity: 0.4; }
  30%           { -webkit-transform: translateY(-6px); transform: translateY(-6px); opacity: 1; }
}
@keyframes typingBounce {
  0%, 60%, 100% { -webkit-transform: translateY(0); transform: translateY(0); opacity: 0.4; }
  30%           { -webkit-transform: translateY(-6px); transform: translateY(-6px); opacity: 1; }
}

/* ═══════════════════════════════════════════
   10. 后台管理系统动画
   ═══════════════════════════════════════════ */
/* 侧边栏导航项：左侧指示条 + 背景变色 */
.admin-nav-item {
  position: relative;
  transition: background var(--transition-fast) var(--ease-smooth),
              padding-left var(--transition-fast) var(--ease-smooth);
}
.admin-nav-item::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 0;
  height: 60%;
  background: #E6B85C;
  border-radius: 0 2px 2px 0;
  transition: width var(--transition-normal) var(--ease-smooth);
}
.admin-nav-item:hover {
  background: #FFF3CD;
  padding-left: 16px;
}
.admin-nav-item:hover::before {
  width: 4px;
}
.admin-nav-item.active::before {
  width: 4px;
}

/* 表格行悬停 */
.admin-table tr {
  transition: background var(--transition-fast) var(--ease-smooth);
}
.admin-table tbody tr:hover {
  background: rgba(255, 243, 205, 0.6);
}

/* 模态框缩放弹出 */
@-webkit-keyframes modalPopIn {
  from { opacity: 0; -webkit-transform: scale(0.9); transform: scale(0.9); }
  to   { opacity: 1; -webkit-transform: scale(1); transform: scale(1); }
}
@keyframes modalPopIn {
  from { opacity: 0; -webkit-transform: scale(0.9); transform: scale(0.9); }
  to   { opacity: 1; -webkit-transform: scale(1); transform: scale(1); }
}
.modal-enter {
  -webkit-animation: modalPopIn 0.3s var(--ease-bounce);
  animation: modalPopIn 0.3s var(--ease-bounce);
}

/* Toast 滑入 */
@-webkit-keyframes toastSlideIn {
  from { opacity: 0; -webkit-transform: translateX(100%); transform: translateX(100%); }
  to   { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); }
}
@keyframes toastSlideIn {
  from { opacity: 0; -webkit-transform: translateX(100%); transform: translateX(100%); }
  to   { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); }
}
.admin-toast {
  -webkit-animation: toastSlideIn 0.35s var(--ease-bounce);
  animation: toastSlideIn 0.35s var(--ease-bounce);
}

/* 后台输入框与前台统一 */
.admin-input:focus,
.admin-textarea:focus,
.admin-select:focus {
  border-color: #E6B85C;
  box-shadow: 0 0 0 3px rgba(230, 184, 92, 0.15);
  transition: border-color var(--transition-fast) var(--ease-smooth),
              box-shadow var(--transition-fast) var(--ease-smooth);
}

/* ═══════════════════════════════════════════
   11. 淡入动画工具类
   ═══════════════════════════════════════════ */
.fade-in {
  opacity: 0;
  -webkit-transform: translateY(20px);
  transform: translateY(20px);
  -webkit-animation: fadeIn var(--transition-slow) var(--ease-smooth) forwards;
  animation: fadeIn var(--transition-slow) var(--ease-smooth) forwards;
}
@-webkit-keyframes fadeIn {
  to { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes fadeIn {
  to { opacity: 1; -webkit-transform: translateY(0); transform: translateY(0); }
}

/* 滚动淡入（配合 IntersectionObserver） */
.scroll-animate,
.fade-in-item {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s var(--ease-smooth),
              transform 0.6s var(--ease-smooth);
  will-change: transform, opacity;
}
.scroll-animate.visible,
.fade-in-item.visible {
  opacity: 1;
  transform: translateY(0);
}

/* 确保可见状态下的 will-change 清理 */
.scroll-animate.visible {
  will-change: auto;
}

/* ═══════════════════════════════════════════
   12. 其他工具类
   ═══════════════════════════════════════════ */
/* 图片缩放容器 */
.img-zoom {
  overflow: hidden;
}
.img-zoom img {
  transition: transform 0.4s var(--ease-smooth);
}
.img-zoom:hover img {
  transform: scale(1.08);
}

/* SVG图标旋转 */
.icon-spin {
  transition: transform var(--transition-normal) var(--ease-bounce);
}
.icon-spin:hover {
  transform: rotate(15deg);
}

/* 交错淡入延迟 */
.stagger-1  { animation-delay: 0.05s; }
.stagger-2  { animation-delay: 0.1s; }
.stagger-3  { animation-delay: 0.15s; }
.stagger-4  { animation-delay: 0.2s; }
.stagger-5  { animation-delay: 0.25s; }
.stagger-6  { animation-delay: 0.3s; }
.stagger-7  { animation-delay: 0.35s; }
.stagger-8  { animation-delay: 0.4s; }
.stagger-9  { animation-delay: 0.45s; }
.stagger-10 { animation-delay: 0.5s; }

/* 画廊图片悬停 */
.gallery-img {
  transition: transform 0.3s var(--ease-smooth);
}
.gallery-img:hover {
  transform: scale(1.03);
}

/* 分享按钮 */
.share-btn {
  transition: all var(--transition-fast) var(--ease-bounce);
}
.share-btn:hover {
  transform: scale(1.15);
}

/* ═══════════════════════════════════════════
   13. 输入框聚焦效果
   ═══════════════════════════════════════════ */
/* 前台输入框聚焦 */
input[type="text"]:focus,
input[type="email"]:focus,
input[type="search"]:focus,
input[type="password"]:focus,
textarea:focus {
  border-color: #E6B85C;
  box-shadow: 0 0 0 3px rgba(230, 184, 92, 0.2);
  transition: border-color var(--transition-fast) var(--ease-smooth),
              box-shadow var(--transition-fast) var(--ease-smooth);
  outline: none;
}

/* ═══════════════════════════════════════════
   14. 下拉菜单弹性展开
   ═══════════════════════════════════════════ */
@-webkit-keyframes dropdownSlideIn {
  from {
    opacity: 0;
    -webkit-transform: translateY(-8px) scaleY(0.95);
    transform: translateY(-8px) scaleY(0.95);
  }
  to {
    opacity: 1;
    -webkit-transform: translateY(0) scaleY(1);
    transform: translateY(0) scaleY(1);
  }
}
@keyframes dropdownSlideIn {
  from {
    opacity: 0;
    -webkit-transform: translateY(-8px) scaleY(0.95);
    transform: translateY(-8px) scaleY(0.95);
  }
  to {
    opacity: 1;
    -webkit-transform: translateY(0) scaleY(1);
    transform: translateY(0) scaleY(1);
  }
}
.dropdown-open {
  -webkit-animation: dropdownSlideIn 0.25s var(--ease-bounce);
  animation: dropdownSlideIn 0.25s var(--ease-bounce);
  -webkit-transform-origin: top center;
  transform-origin: top center;
}

/* 移动端菜单 */
#mobile-menu:not(.hidden) {
  -webkit-animation: dropdownSlideIn 0.25s var(--ease-bounce);
  animation: dropdownSlideIn 0.25s var(--ease-bounce);
  -webkit-transform-origin: top center;
  transform-origin: top center;
}

/* ═══════════════════════════════════════════
   15. 分页 / 筛选按钮弹性反馈
   ═══════════════════════════════════════════ */
.filter-chip {
  transition: all var(--transition-fast) var(--ease-bounce);
}
.filter-chip:active {
  -webkit-transform: scale(0.93);
  transform: scale(0.93);
}

/* 分页按钮 */
#pagination button:active {
  -webkit-transform: scale(0.93);
  transform: scale(0.93);
}

/* ═══════════════════════════════════════════
   16. 图片淡入加载（显式 opt-in，由 JS 辅助）
   ═══════════════════════════════════════════ */
.img-fade-in {
  opacity: 0;
  -webkit-transition: opacity 0.5s var(--ease-smooth);
  transition: opacity 0.5s var(--ease-smooth);
}
.img-fade-in.loaded {
  opacity: 1;
}

/* ═══════════════════════════════════════════
   17. 移动端动画降强度
   ═══════════════════════════════════════════ */
@media (max-width: 768px) {
  :root {
    --transition-normal: 150ms;
  }

  /* 减小滚动渐入位移 */
  .scroll-animate,
  .fade-in-item {
    -webkit-transform: translateY(16px);
    transform: translateY(16px);
    transition: opacity 0.4s var(--ease-smooth),
                -webkit-transform 0.4s var(--ease-smooth),
                transform 0.4s var(--ease-smooth);
  }

  /* 减小卡片上浮距离 */
  .card:hover {
    -webkit-transform: translateY(-1px);
    transform: translateY(-1px);
  }
  .stat-card:hover {
    -webkit-transform: translateY(-2px);
    transform: translateY(-2px);
  }
  .lift-up:hover {
    -webkit-transform: translateY(-3px);
    transform: translateY(-3px);
  }

  /* 聊天按钮减旋转 */
  #ai-chat-button:hover {
    -webkit-transform: scale(1.05) rotate(2deg);
    transform: scale(1.05) rotate(2deg);
  }

  /* 减少按钮弹跳幅度 */
  .btn-primary:active, .btn-outline:active, .btn-preview:active, .btn-download-lg:active,
  .admin-btn:active, .admin-btn-primary:active {
    -webkit-transform: scale(0.98);
    transform: scale(0.98);
  }

  /* 减小预览和聊天弹窗缩放起点 */
  @-webkit-keyframes previewPopIn-mobile {
    from { opacity: 0; -webkit-transform: scale(0.92); transform: scale(0.92); }
    to   { opacity: 1; -webkit-transform: scale(1); transform: scale(1); }
  }
  @keyframes previewPopIn-mobile {
    from { opacity: 0; -webkit-transform: scale(0.92); transform: scale(0.92); }
    to   { opacity: 1; -webkit-transform: scale(1); transform: scale(1); }
  }
  @-webkit-keyframes chatPopIn-mobile {
    from { opacity: 0; -webkit-transform: scale(0.85) translateY(20px); transform: scale(0.85) translateY(20px); }
    to   { opacity: 1; -webkit-transform: scale(1) translateY(0); transform: scale(1) translateY(0); }
  }
  @keyframes chatPopIn-mobile {
    from { opacity: 0; -webkit-transform: scale(0.85) translateY(20px); transform: scale(0.85) translateY(20px); }
    to   { opacity: 1; -webkit-transform: scale(1) translateY(0); transform: scale(1) translateY(0); }
  }

  .ppt-preview-overlay.show {
    -webkit-animation-name: previewPopIn-mobile;
    animation-name: previewPopIn-mobile;
    -webkit-animation-duration: 0.3s;
    animation-duration: 0.3s;
  }
  #ai-chat-window.open {
    -webkit-animation-name: chatPopIn-mobile;
    animation-name: chatPopIn-mobile;
    -webkit-animation-duration: 0.3s;
    animation-duration: 0.3s;
  }
}

/* 手机端进一步减弱 */
@media (max-width: 480px) {
  :root {
    --transition-slow: 200ms;
  }

  .card:hover,
  .stat-card:hover {
    -webkit-transform: none;
    transform: none;
  }

  .scroll-animate,
  .fade-in-item {
    -webkit-transform: translateY(12px);
    transform: translateY(12px);
  }

  /* 禁用纯装饰性弹跳 */
  .scale-bounce:hover {
    -webkit-transform: scale(1.02);
    transform: scale(1.02);
  }
}

/* ═══════════════════════════════════════════
   18. 无障碍与降级
   ═══════════════════════════════════════════ */
/* 用户偏好减少动画 */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    -webkit-animation-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    -webkit-animation-iteration-count: 1 !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

  .scroll-animate,
  .fade-in-item,
  .fade-in {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

/* 手动关闭动画（JS 可控） */
.no-animations,
.no-animations *,
.no-animations *::before,
.no-animations *::after {
  -webkit-animation-duration: 0s !important;
  animation-duration: 0s !important;
  -webkit-animation-delay: 0s !important;
  animation-delay: 0s !important;
  transition-duration: 0s !important;
  -webkit-transition-duration: 0s !important;
}

.no-animations .scroll-animate,
.no-animations .fade-in-item,
.no-animations .fade-in {
  opacity: 1;
  -webkit-transform: none;
  transform: none;
}
