/* ========== CharmERP 全局样式 ========== */
:root {
  --primary: #3b5bdb;
  --primary-light: #5c7cfa;
  --primary-dark: #2f4ac0;
  --success: #2f9e44;
  --danger: #e03131;
  --warning: #f08c00;
  --text: #1f2937;
  --text-secondary: #6b7280;
  --text-placeholder: #9ca3af;
  --border: #dfe3ea;
  --bg: #f5f7fb;
  --white: #fff;
  --radius: 10px;
  --shadow: 0 10px 40px rgba(31, 41, 55, .08);
  --transition: .2s ease;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html, body { height: 100%; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB",
    "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  font-size: 14px;
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}

a { color: var(--primary); text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
input { font-family: inherit; }

/* Vue 挂载前隐藏未编译模板 */
[v-cloak] { display: none !important; }

/* 通用过渡 */
.fade-enter-active, .fade-leave-active { transition: opacity .25s, transform .25s; }
.fade-enter-from, .fade-leave-to { opacity: 0; transform: translateY(-4px); }
