/* ── 益绘思管理后台 · 雾玻璃浅色设计系统 ── */

:root {
  /* 品牌色 */
  --primary: #4a90e2;
  --primary-deep: #3a7bd5;
  --accent: #8e7cf3;
  --success: #34c77b;
  --warning: #f5a623;
  --danger: #e35d6a;

  /* 文字 */
  --text-1: #1f2d3d;
  --text-2: #5a6a7e;
  --text-3: #9aa7b8;

  /* 雾玻璃材质 */
  --glass-bg: rgba(255, 255, 255, 0.62);
  --glass-bg-strong: rgba(255, 255, 255, 0.78);
  --glass-border: rgba(255, 255, 255, 0.65);
  --glass-shadow: 0 8px 32px rgba(31, 45, 61, 0.08);
  --glass-blur: 20px;

  --radius-lg: 20px;
  --radius-md: 14px;
  --radius-sm: 10px;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html, body, #app {
  height: 100%;
}

body {
  font-family: 'PingFang SC', 'HarmonyOS Sans SC', 'Microsoft YaHei', -apple-system, sans-serif;
  color: var(--text-1);
  -webkit-font-smoothing: antialiased;
  overflow: hidden;
}

/* ── 全局流动渐变背景 ── */
.app-bg {
  position: fixed;
  inset: 0;
  z-index: -2;
  background: linear-gradient(135deg, #eef4fd 0%, #f3effc 45%, #e8f6f1 100%);
}

.app-bg::before,
.app-bg::after {
  content: '';
  position: absolute;
  border-radius: 50%;
  filter: blur(90px);
  opacity: 0.55;
  animation: blob-float 18s ease-in-out infinite alternate;
}

.app-bg::before {
  width: 480px;
  height: 480px;
  left: -120px;
  top: -100px;
  background: radial-gradient(circle, #a8c8f0 0%, transparent 70%);
}

.app-bg::after {
  width: 560px;
  height: 560px;
  right: -160px;
  bottom: -140px;
  background: radial-gradient(circle, #cabcf5 0%, transparent 70%);
  animation-delay: -9s;
}

@keyframes blob-float {
  0%   { transform: translate(0, 0) scale(1); }
  50%  { transform: translate(60px, 40px) scale(1.12); }
  100% { transform: translate(-40px, 70px) scale(0.95); }
}

/* ── 雾玻璃卡片 ── */
.glass {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--glass-shadow);
}

/* ── 通用按钮 ── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: none;
  cursor: pointer;
  font-size: 14px;
  padding: 9px 18px;
  border-radius: var(--radius-sm);
  transition: all 0.22s ease;
  font-family: inherit;
}

.btn-primary {
  background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
  color: #fff;
  box-shadow: 0 4px 14px rgba(74, 144, 226, 0.35);
}

.btn-primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(74, 144, 226, 0.45);
}

.btn-primary:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  transform: none;
}

.btn-ghost {
  background: rgba(255, 255, 255, 0.55);
  color: var(--text-2);
  border: 1px solid rgba(31, 45, 61, 0.1);
}

.btn-ghost:hover {
  background: rgba(255, 255, 255, 0.85);
  color: var(--primary);
}

.btn-danger-ghost {
  background: transparent;
  color: var(--danger);
  border: 1px solid rgba(227, 93, 106, 0.35);
}

.btn-danger-ghost:hover {
  background: rgba(227, 93, 106, 0.08);
}

/* ── 表单 ── */
.input {
  width: 100%;
  padding: 11px 14px;
  border: 1px solid rgba(31, 45, 61, 0.12);
  border-radius: var(--radius-sm);
  background: rgba(255, 255, 255, 0.7);
  font-size: 14px;
  color: var(--text-1);
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
  font-family: inherit;
}

.input:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.15);
}

.select {
  padding: 8px 12px;
  border: 1px solid rgba(31, 45, 61, 0.12);
  border-radius: var(--radius-sm);
  background: rgba(255, 255, 255, 0.7);
  font-size: 13px;
  color: var(--text-2);
  outline: none;
  cursor: pointer;
  font-family: inherit;
}

/* ── 表格 ── */
.table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13.5px;
}

.table th {
  text-align: left;
  padding: 12px 14px;
  color: var(--text-3);
  font-weight: 500;
  font-size: 12.5px;
  border-bottom: 1px solid rgba(31, 45, 61, 0.08);
  white-space: nowrap;
}

.table td {
  padding: 13px 14px;
  border-bottom: 1px solid rgba(31, 45, 61, 0.05);
  color: var(--text-1);
}

.table tbody tr {
  transition: background 0.18s;
}

.table tbody tr:hover {
  background: rgba(74, 144, 226, 0.05);
}

/* ── 标签徽章 ── */
.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
}

.badge-blue   { background: rgba(74, 144, 226, 0.12); color: var(--primary-deep); }
.badge-green  { background: rgba(52, 199, 123, 0.14); color: #1d9d5f; }
.badge-orange { background: rgba(245, 166, 35, 0.15); color: #c77f0a; }
.badge-red    { background: rgba(227, 93, 106, 0.13); color: var(--danger); }
.badge-gray   { background: rgba(154, 167, 184, 0.16); color: var(--text-2); }
.badge-purple { background: rgba(142, 124, 243, 0.14); color: #6a54e8; }

/* ── 页面进场动画 ── */
.page-enter-active {
  transition: opacity 0.32s ease, transform 0.32s ease;
}
.page-leave-active {
  transition: opacity 0.18s ease;
}
.page-enter-from {
  opacity: 0;
  transform: translateY(14px);
}
.page-leave-to {
  opacity: 0;
}

/* ── 列表交错渐入 ── */
@keyframes rise-in {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

.stagger-item {
  opacity: 0;
  animation: rise-in 0.5s cubic-bezier(0.22, 0.72, 0.28, 1) forwards;
}

/* ── 滚动条 ── */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
::-webkit-scrollbar-thumb {
  background: rgba(31, 45, 61, 0.16);
  border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(31, 45, 61, 0.28);
}
::-webkit-scrollbar-track {
  background: transparent;
}

/* ── 空状态 ── */
.empty-tip {
  text-align: center;
  color: var(--text-3);
  font-size: 13.5px;
  padding: 44px 0;
}
