/* ============================================================
   base.css · 设计 Token + 重置 + 基础
   熵海内部任务系统 · 企业控制台蓝白系统
   ============================================================ */

:root {
  /* 中性色 */
  --bg-page:        #f5f7fa;
  --bg-card:        #ffffff;
  --bg-hover:       #f2f6fc;
  --bg-soft:        #f8fafc;
  --border:         #e5eaf1;
  --border-strong:  #cbd5e1;
  --text-primary:   #1d2129;
  --text-secondary: #4e5969;
  --text-tertiary:  #86909c;

  /* 品牌色(企业控制台蓝) */
  --brand:          #1677ff;
  --brand-hover:    #0958d9;
  --brand-soft:     #e6f4ff;
  --brand-border:   #91caff;
  --focus-ring:     rgba(22, 119, 255, .18);

  /* 语义色(success/warning/danger 为状态根,原值保留) */
  --success:     #16a34a;  --success-bg: #f0fdf4;  --success-border: #bbf7d0;
  --warning:     #d97706;  --warning-bg: #fffbeb;  --warning-border: #fde68a;
  --danger:      #dc2626;  --danger-bg:  #fef2f2;  --danger-border: #fecaca;
  --info:        #1677ff;  --info-bg:    #e6f4ff;  --info-border:  #91caff;
  --neutral:     #64748b;  --neutral-bg: #f1f5f9;  --neutral-border: #e2e8f0;

  /* 圆角 */
  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 8px;
  --radius-xl: 10px;

  /* 阴影 */
  --shadow-sm:    0 1px 2px rgba(31, 35, 41, .03), 0 3px 10px rgba(31, 35, 41, .04);
  --shadow-hover: 0 8px 20px rgba(31, 35, 41, .08), 0 2px 6px rgba(31, 35, 41, .04);
  --shadow-pop:   0 20px 44px rgba(31, 35, 41, .14), 0 6px 16px rgba(31, 35, 41, .06);

  /* 保留变量兼容现有模块，改用单色企业蓝 */
  --grad-brand:         linear-gradient(135deg, #1677ff 0%, #1677ff 100%);
  --grad-brand-hover:   linear-gradient(135deg, #0958d9 0%, #0958d9 100%);
  --grad-accent:        linear-gradient(135deg, #1677ff 0%, #1677ff 100%);
  --grad-login:         linear-gradient(135deg, #0f1a2a 0%, #0f1a2a 100%);
  --accent-coral:       #f97316;

  /* 动效 */
  --ease-out:   cubic-bezier(.16, 1, .3, 1);
  --dur-fast:   .15s;
  --dur:        .25s;
  --dur-slow:   .45s;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg-page);
  color: var(--text-primary);
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
::selection { background: var(--brand-soft); color: var(--brand); }
a { color: var(--brand); text-decoration: none; transition: color var(--dur-fast) var(--ease-out); }
a:hover { color: var(--brand-hover); }
h1 { margin-bottom: 8px; font-size: 24px; font-weight: 650; line-height: 1.25; text-wrap: balance; }
h2 { margin-bottom: 12px; font-size: 18px; font-weight: 650; line-height: 1.35; text-wrap: balance; }
h3 { margin: 16px 0 8px; font-size: 15px; font-weight: 600; line-height: 1.4; text-wrap: balance; }
img { max-width: 100%; }
input[type="checkbox"], input[type="radio"] { accent-color: var(--brand); }

/* ============ 动效 keyframes ============ */
@keyframes fadeUp   { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes fadeIn   { from { opacity: 0; } to { opacity: 1; } }
@keyframes zoomIn   { from { opacity: 0; transform: scale(.92) translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes bgShift  { from { background-position: 0% 50%; } to { background-position: 100% 50%; } }
@keyframes barStrip { from { background-position: 0 0; } to { background-position: 12px 0; } }
@keyframes pulseDot { 0%, 100% { opacity: 1; } 50% { opacity: .45; } }
@keyframes spin     { to { transform: rotate(360deg); } }

/* 尊重系统减弱动效设置 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
