* { 
  margin: 0; 
  padding: 0; 
  box-sizing: border-box; 
}

body {
  color: var(--text-main);
  min-height: 100vh;
  position: relative;
  background: #f3f8f7;
  overflow-x: hidden;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;
  background:
    /* linear-gradient(145deg, rgba(10, 78, 95, 0.56) 0%, rgba(8, 118, 110, 0.45) 55%, rgba(34, 197, 94, 0.38) 100%), */
    url('../assets/home1.png') center/cover no-repeat;
  opacity: 0;
  transform: scale(1.04);
  animation: bgReveal 1.4s ease-out forwards;
}

body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.02));
  opacity: 0;
  animation: overlayReveal 1.6s ease-out .15s forwards;
}

@keyframes bgReveal {
  from { opacity: 0; transform: scale(1.04); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes overlayReveal {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes pageContentIn {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes iconReveal {
  from { opacity: 0; transform: translateY(10px) scale(.95); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes pulse { 
  0%, 100% { opacity: 1; } 
  50% { opacity: .45; } 
}

@keyframes authFieldIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

body {
  background: var(--gradient-bg);
  background-attachment: fixed;
  color: var(--text-dark);
  font-family: "Georgia", "Noto Serif SC", serif; /* 使用衬线体增加优雅感 */
}

/* 呼吸光晕动画 (针对圆圈检测区) */
@keyframes breatheCircle {
  0%, 100% { transform: scale(1); box-shadow: 0 0 30px rgba(114,140,105,0.2); }
  50% { transform: scale(1.04); box-shadow: 0 0 60px rgba(114,140,105,0.5); }
}

/* 渐显渐隐平滑过渡 */
@keyframes smoothFadeIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}