:root {
  --primary:#165DFF; --secondary:#0FC6C2;
  --bg:#0f172a; --card:#1e293b; --border:#334155;
  --text:#f1f5f9; --sub:#94a3b8;
}
body { background:var(--bg); color:var(--text); margin:0; font-family:'Inter',system-ui,sans-serif; }
.card-glow { box-shadow:0 4px 20px rgba(22,93,255,.15); }
.num-gradient { background:linear-gradient(90deg,#165DFF,#0FC6C2);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
.login-gradient { background:radial-gradient(circle at 20% 20%,rgba(22,93,255,.3) 0,transparent 50%),
  radial-gradient(circle at 80% 80%,rgba(15,198,194,.25) 0,transparent 50%),#0f172a; }
.sidebar-item-active { background:linear-gradient(90deg,rgba(22,93,255,.2) 0,transparent 100%);
  border-left:3px solid #165DFF; color:#fff; }
.chg-up { color:#4ade80; } .chg-down { color:#f87171; } .chg-flat { color:#94a3b8; }
.field-label { color:var(--sub); font-size:12px; margin-bottom:4px; }
input, textarea, select { background:#0f172a; border:1px solid var(--border); color:var(--text);
  border-radius:8px; padding:8px 10px; outline:none; width:100%; }
input:focus, textarea:focus, select:focus { border-color:var(--primary); }
.btn { cursor:pointer; border:none; border-radius:8px; padding:9px 16px; font-weight:500; transition:opacity .15s; }
.btn-primary { background:linear-gradient(90deg,#165DFF,#0FC6C2); color:#fff; }
.btn-ghost { background:transparent; color:var(--sub); border:1px solid var(--border); }
.btn-danger { background:transparent; color:#f87171; border:1px solid #7f1d1d; }
.btn:hover { opacity:.88; }
/* 加载骨架旋转图标 */
.dp-loader { width:38px; height:38px; border-radius:50%; border:3px solid #334155;
  border-top-color:#165DFF; animation:dp-spin .8s linear infinite; margin:0 auto; }
@keyframes dp-spin { to { transform:rotate(360deg); } }
/* 租户名高亮：蓝色渐变文字（浅蓝 → 品牌蓝 → 深蓝），暗底上醒目 */
.tenant-name {
  background: linear-gradient(90deg, #60a5fa 0%, #3b82f6 55%, #2563eb 100%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}
