/* =============================================
   base.css — 全局重置 & 基础样式
   ============================================= */

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  background: var(--bg-deep);
  color: var(--text-primary);
  font-family: 'Microsoft YaHei', 'PingFang SC', 'Segoe UI', sans-serif;
  min-height: 100vh;
  overflow-x: hidden;
  position: relative;
}

/* 全局网格背景 */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image:
    linear-gradient(rgba(0,120,255,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,120,255,0.04) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
  z-index: 0;
}

/* 扫描线动效 */
.scan-overlay {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent 0%, var(--accent-cyan) 50%, transparent 100%);
  opacity: 0.4;
  animation: scanDown 6s linear infinite;
  z-index: 0;
  pointer-events: none;
}
@keyframes scanDown {
  0%   { top: 0;     opacity: 0.6; }
  100% { top: 100vh; opacity: 0; }
}

/* 粒子容器 */
.particles {
  position: fixed;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}
.particle {
  position: absolute;
  width: 2px; height: 2px;
  background: var(--accent-cyan);
  border-radius: 50%;
  animation: floatUp linear infinite;
  opacity: 0;
}
@keyframes floatUp {
  0%   { opacity: 0;   transform: translateY(100vh); }
  10%  { opacity: 0.6; }
  90%  { opacity: 0.3; }
  100% { opacity: 0;   transform: translateY(-10vh) translateX(50px); }
}

/* 四角装饰 */
.corner-tl, .corner-tr, .corner-bl, .corner-br {
  position: absolute;
  width: 12px; height: 12px;
}
.corner-tl { top:0; left:0;  border-top:2px solid var(--accent-cyan); border-left:2px  solid var(--accent-cyan); }
.corner-tr { top:0; right:0; border-top:2px solid var(--accent-cyan); border-right:2px solid var(--accent-cyan); }
.corner-bl { bottom:0; left:0;  border-bottom:2px solid var(--accent-cyan); border-left:2px  solid var(--accent-cyan); }
.corner-br { bottom:0; right:0; border-bottom:2px solid var(--accent-cyan); border-right:2px solid var(--accent-cyan); }

/* 数字入场动画 */
@keyframes countUp {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
.animated-num { animation: countUp 0.8s ease forwards; }
