/* ========== 加载动画核心样式（粉色系 + 淡入淡出） ========== */
/* 加载遮罩层：基础样式 + 淡入淡出过渡（核心修改） */
.loader-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(255, 176, 176, 0.5); /* 修正rgba写法（原写法少括号） */
  backdrop-filter: blur(4px);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999; /* 确保在最顶层 */
  /* 核心：淡入淡出过渡（覆盖opacity + visibility，避免点击穿透） */
  transition: opacity 0.4s ease, visibility 0.4s ease;
  opacity: 0; /* 初始隐藏，透明度0 */
  visibility: hidden; /* 初始不可见，避免点击穿透 */
  pointer-events: none; /* 初始不响应点击 */
}

/* 淡入：添加active类触发（显示加载动画） */
.loader-overlay.active {
  opacity: 1; /* 完全显示 */
  visibility: visible; /* 可见 */
  pointer-events: auto; /* 响应点击（可选，遮罩层一般不需要） */
}

/* 淡出：hidden类（隐藏加载动画） */
.loader-overlay.hidden {
  opacity: 0; /* 透明度0 */
  visibility: hidden; /* 不可见 */
  pointer-events: none; /* 不响应点击 */
}

/* 加载动画容器 */
.loader {
  width: 60px;
  height: 60px;
  position: relative;
  /* 动画容器随遮罩层淡入淡出，无需额外动画 */
}

/* 粉色小圆点动画（简洁不花哨） */
.loader-dot {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  animation: loader-spin 1.5s linear infinite;
}

.loader-dot::before {
  content: '';
  display: block;
  width: 12px;
  height: 12px;
  background-color: #ffd0d0; /* 主粉色（和你网站logo/标题色一致） */
  border-radius: 50%;
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  box-shadow: 0 0 10px rgba(255, 208, 208, 0.6); /* 粉色光晕，增强视觉效果 */
}

/* 加载动画旋转关键帧 */
@keyframes loader-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* 响应式适配：小屏缩小动画尺寸 */
@media (max-width: 576px) {
  .loader {
    width: 40px;
    height: 40px;
  }
  .loader-dot::before {
    width: 10px;
    height: 10px;
  }
}