/* =========================================================
   哦维智企 · 设计 Token（v3 电光蓝设计系统）
   —— 变量名保持向后兼容，升级配色 / 阴影 / 字体 / 动效
========================================================= */
:root {
  /* 品牌色 —— 主色升级为电光蓝，橙色降为辅助强调色 */
  --brand-blue: #3d5afe;
  --brand-blue-600: #304ffe;
  --brand-blue-700: #2540e0;
  --brand-blue-bg: #eaefff;
  --brand-orange: #ff8a1e;
  --brand-orange-dark: #f2740a;
  --brand-orange-bg: #fff1e0;
  --brand-purple: #8b5cf6;
  --brand-purple-bg: #f1ebff;
  --brand-cyan: #06b6d4;

  /* 语义色 */
  --color-success: #16a34a;
  --color-success-bg: #dcfce7;
  --color-warning: #f59e0b;
  --color-warning-bg: #fff2d6;
  --color-danger: #ef4444;
  --color-danger-bg: #fee2e2;
  --color-info: #3d5afe;
  --color-info-bg: #eaefff;

  /* 中性色 */
  --text-primary: #0b1230;
  --text-secondary: #5b6478;
  --text-tertiary: #8a93a6;
  --border-color: #e6e9f2;
  --border-strong: #d3d9e6;
  --bg-page: #f4f6fc;
  --bg-card: #ffffff;
  --bg-hover: #f2f5fd;
  --bg-sidebar: #ffffff;
  --bg-active: #eaefff;

  /* 渐变 */
  --grad-electric: linear-gradient(135deg, #3d5afe, #06b6d4);
  --grad-brand: linear-gradient(135deg, #4f7cff, #3d5afe);
  --grad-orange: linear-gradient(135deg, #ffa14d, #ff8a1e);
  --grad-sidebar: linear-gradient(180deg, #ffffff, #fbfcff);

  /* 阴影 */
  --shadow-card: 0 1px 2px rgba(11, 18, 48, .04), 0 4px 16px -8px rgba(11, 18, 48, .08);
  --shadow-hover: 0 8px 28px -12px rgba(11, 18, 48, .18), 0 2px 8px -4px rgba(11, 18, 48, .08);
  --shadow-pop: 0 18px 48px -16px rgba(11, 18, 48, .24);
  --shadow-brand: 0 12px 30px -12px rgba(61, 90, 254, .5);

  /* 圆角 */
  --radius-sm: 7px;
  --radius-md: 11px;
  --radius-lg: 16px;
  --radius-pill: 999px;

  /* 尺寸 */
  --sidebar-width: 246px;
  --topbar-height: 62px;

  --font-display: "Sora", "Noto Sans SC", -apple-system, BlinkMacSystemFont, sans-serif;
  --font-sans: "Noto Sans SC", -apple-system, BlinkMacSystemFont, "PingFang SC",
    "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "JetBrains Mono", "SF Mono", Consolas, monospace;
  --ease: cubic-bezier(.22, .61, .36, 1);
}

* { box-sizing: border-box; }
html, body {
  margin: 0; padding: 0; font-family: var(--font-sans);
  background: var(--bg-page); color: var(--text-primary);
  -webkit-font-smoothing: antialiased;
  font-size: 14px;
}
/* 科技网格背景（固定，柔和遮罩，不干扰阅读） */
body::before {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background:
    linear-gradient(rgba(61, 90, 254, .04) 1px, transparent 1px) 0 0 / 60px 60px,
    linear-gradient(90deg, rgba(61, 90, 254, .04) 1px, transparent 1px) 0 0 / 60px 60px,
    radial-gradient(900px 460px at 100% 0%, rgba(6, 182, 212, .05), transparent 60%),
    radial-gradient(800px 420px at 0% 100%, rgba(61, 90, 254, .05), transparent 60%);
  -webkit-mask-image: radial-gradient(1200px 760px at 70% 10%, #000 42%, transparent 82%);
  mask-image: radial-gradient(1200px 760px at 70% 10%, #000 42%, transparent 82%);
}
.app-shell, .login-page { position: relative; z-index: 1; }

a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
ul { list-style: none; margin: 0; padding: 0; }
h1, h2, h3, h4 { font-family: var(--font-display); letter-spacing: -.01em; }
.num, .mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
::selection { background: rgba(61, 90, 254, .16); color: var(--text-primary); }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #d7dce8; border-radius: 999px; border: 3px solid transparent; background-clip: content-box; }
::-webkit-scrollbar-thumb:hover { background: #c0c7d8; background-clip: content-box; }

@keyframes fadeInUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes popIn { from { opacity: 0; transform: scale(.94); } to { opacity: 1; transform: scale(1); } }
