/* ========== 基础变量 ========== */
:root {
  --primary: #1E88FF;
  --primary-dark: #1565C0;
  --primary-light: #4FACFE;
  --primary-50: #EBF4FF;
  --success: #10B981;
  --warning: #F59E0B;
  --danger: #EF4444;
  --info: #3B82F6;

  --text-1: #1A2233;
  --text-2: #374151;
  --text-3: #6B7280;
  --text-4: #9CA3AF;
  --text-5: #CBD5E0;

  --bg-1: #FFFFFF;
  --bg-2: #F9FAFB;
  --bg-3: #F4F6FA;
  --bg-4: #EDF0F5;

  --border: #E5E7EB;
  --border-light: #F0F2F5;

  --sidebar-bg: #1A2233;
  --sidebar-text: #B8C2D1;
  --sidebar-text-active: #FFFFFF;
  --sidebar-active-bg: #1E88FF;
  --sidebar-width: 232px;
  --topbar-height: 64px;

  --radius-sm: 4px;
  --radius: 8px;
  --radius-lg: 12px;
  --radius-xl: 16px;

  --shadow-sm: 0 1px 2px rgba(15,23,42,0.04);
  --shadow: 0 2px 8px rgba(15,23,42,0.06);
  --shadow-lg: 0 10px 30px rgba(15,23,42,0.08);

  --font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--font);
  font-size: 14px;
  color: var(--text-1);
  background: var(--bg-3);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.5;
}
a { color: var(--primary); text-decoration: none; }
a:hover { color: var(--primary-dark); }
button { font-family: inherit; cursor: pointer; }
input, select, textarea, button { font-family: inherit; }
code { font-family: 'SF Mono', Consolas, Monaco, 'Cascadia Code', 'Courier New', monospace; }

/* ========== 工具类 ========== */
.required { color: var(--danger); }
