
/* 把仪表盘 --dash-* token 提升到全局（让 .dash-card 在非 dashboard-v2 容器中也有正确变量） */
:root {
  --dash-page-bg: #F5F6F8;
  --dash-surface: #FFFFFF;
  --dash-surface-2: #F8F9FB;
  --dash-text: #1B1D23;
  --dash-text-2: #5F6673;
  --dash-text-3: #8F96A3;
  --dash-border: #E6E9EE;
  --dash-primary: #4C7DE0;
  --dash-primary-strong: #3F6BCB;
  --dash-primary-soft: #EEF3FF;
  --dash-success: #3E9A63;
  --dash-success-soft: #E9F6EE;
  --dash-danger: #D05050;
  --dash-radius-lg: 20px;
  --dash-radius-md: 18px;
  --dash-radius-sm: 12px;
  --dash-radius-pill: 999px;
  --dash-shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 8px 24px rgba(16, 24, 40, 0.06);
  --dash-shadow-sm: 0 1px 3px rgba(16, 24, 40, 0.04), 0 4px 12px rgba(16, 24, 40, 0.05);
}
/* ============================================
   LAA 充值系统 - 全局样式
   设计灵感：LAA 品牌风格（紫色主色）
   ============================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700;800&family=Rajdhani:wght@500;600;700&display=swap');

:root {
  /* 主色调 - Valorant 风格 */
  --bg-darkest:   #0A1118;
  --bg-dark:      #111C26;
  --bg-card:      #16232F;
  --bg-elevated:  #1E2D3D;
  --bg-hover:     #28394B;

  /* 强调色 */
  --teal:         #00E5C5;
  --teal-bright:  #2AFCD9;
  --teal-dim:     #00B89E;
  --teal-glow:    rgba(0, 229, 197, 0.25);
  --red:          #7C3AED;
  --red-bright:   #A78BFA;
  --red-dim:      #5B21B6;
  --red-glow:     rgba(124, 58, 237, 0.25);
  --gold:         #FFCE5B;
  --gold-glow:    rgba(255, 206, 91, 0.25);
  --green:        #5DE37B;
  --green-glow:   rgba(93, 227, 123, 0.25);
  --purple:       #B084F0;
  --error:        #EF4444;

  /* 文字 */
  --text:         #F0EDE5;
  --text-dim:     #A4B0BC;
  --text-muted:   #5C6B7A;

  /* 边框 */
  --border:       #1F3040;
  --border-light: #2D4054;
  --border-bright:#3D5468;

  /* 阴影 */
  --shadow:       0 4px 24px rgba(0,0,0,0.5);
  --shadow-lg:    0 12px 48px rgba(0,0,0,0.6);
  --shadow-teal:  0 4px 24px rgba(0, 229, 197, 0.15);
  --shadow-red:   0 4px 24px rgba(124, 58, 237, 0.15);

  /* 渐变 */
  --grad-tr:      linear-gradient(135deg, var(--teal), var(--red));
  --grad-tr-soft: linear-gradient(135deg, rgba(0,229,197,0.1), rgba(124,58,237,0.1));

  /* 切角尺寸 */
  --clip:         8px;
  --clip-lg:      16px;
  --clip-sm:      4px;

  /* 过渡 */
  --t:            0.2s cubic-bezier(0.4, 0, 0.2, 1);
  --t-slow:       0.4s cubic-bezier(0.4, 0, 0.2, 1);

  /* 字体 */
  --font-display: 'Rajdhani', 'Noto Sans SC', sans-serif;
  --font-body:    'Noto Sans SC', 'Segoe UI', system-ui, sans-serif;
  --font-mono:    'Courier New', 'Consolas', monospace;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 15px; scroll-behavior: smooth; }
body {
  font-family: var(--font-body);
  background: var(--bg-darkest);
  color: var(--text);
  min-height: 100vh;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
a { color: var(--teal); text-decoration: none; transition: color var(--t); }
a:hover { color: var(--teal-bright); }
img { max-width: 100%; }
button { font-family: inherit; cursor: pointer; border: none; background: none; color: inherit; }
input, textarea, select { font-family: inherit; font-size: inherit; }
ul { list-style: none; }

/* ---------- 切角工具类 ---------- */
.clip        { clip-path: polygon(0 0, calc(100% - var(--clip)) 0, 100% var(--clip), 100% 100%, var(--clip) 100%, 0 calc(100% - var(--clip))); }
.clip-lg     { clip-path: polygon(0 0, calc(100% - var(--clip-lg)) 0, 100% var(--clip-lg), 100% 100%, var(--clip-lg) 100%, 0 calc(100% - var(--clip-lg))); }
.clip-tl     { clip-path: polygon(var(--clip) 0, 100% 0, 100% 100%, 0 100%, 0 var(--clip)); }
.clip-br     { clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--clip)), calc(100% - var(--clip)) 100%, 0 100%); }
.clip-both   { clip-path: polygon(var(--clip) 0, calc(100% - var(--clip)) 0, 100% var(--clip), 100% calc(100% - var(--clip)), calc(100% - var(--clip)) 100%, var(--clip) 100%, 0 calc(100% - var(--clip)), 0 var(--clip)); }

/* ---------- 滚动条 ---------- */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--bg-darkest); }
::-webkit-scrollbar-thumb { background: var(--border-light); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--teal-dim); }

/* ---------- 选中文字 ---------- */
::selection { background: var(--teal); color: var(--bg-darkest); }

/* ---------- 背景网格纹理 ---------- */
.bg-grid::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image:
    linear-gradient(rgba(0, 229, 197, 0.015) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 229, 197, 0.015) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
  z-index: 0;
}

/* ============================================
   前台 - 兑换提货页面
   ============================================ */
.redeem-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  position: relative;
  background: var(--bg-darkest);
}
.redeem-page::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 600px 400px at 15% 10%, rgba(0,229,197,0.08), transparent 60%),
    radial-gradient(ellipse 500px 400px at 85% 90%, rgba(124,58,237,0.06), transparent 60%);
  pointer-events: none;
}
.redeem-page::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(0, 229, 197, 0.02) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 229, 197, 0.02) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}

.redeem-header {
  padding: 20px 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--border);
  position: relative;
  z-index: 1;
  backdrop-filter: blur(12px);
  background: rgba(10, 17, 24, 0.6);
}
.redeem-logo {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
}
.redeem-logo .logo-mark {
  width: 40px; height: 40px;
  background: var(--grad-tr);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.3rem;
  font-weight: 800;
  color: var(--bg-darkest);
  clip-path: polygon(0 0, 100% 0, 100% 65%, 65% 100%, 0 100%);
  box-shadow: 0 0 20px var(--teal-glow);
}
.redeem-logo .logo-text span { color: var(--teal); }

.redeem-main {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 20px;
  position: relative;
  z-index: 1;
}

.redeem-card {
  width: 100%;
  max-width: 560px;
  background: rgba(22, 35, 47, 0.85);
  backdrop-filter: blur(20px);
  border: 1px solid var(--border-light);
  padding: 44px;
  position: relative;
  clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 20px 100%, 0 calc(100% - 20px));
}
.redeem-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--grad-tr);
  box-shadow: 0 0 20px var(--teal-glow);
}
.redeem-card::after {
  content: '';
  position: absolute;
  top: 0; right: 0;
  width: 28px; height: 28px;
  background: var(--grad-tr);
  clip-path: polygon(100% 0, 0 0, 100% 100%);
  opacity: 0.6;
}

.redeem-card h1 {
  font-family: var(--font-display);
  font-size: 2rem;
  font-weight: 700;
  margin-bottom: 8px;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.redeem-card .subtitle {
  color: var(--text-dim);
  font-size: 0.9rem;
  margin-bottom: 32px;
}

/* 兑换模式切换 */
.mode-tabs {
  display: flex;
  gap: 0;
  margin-bottom: 28px;
  background: var(--bg-darkest);
  border: 1px solid var(--border);
  position: relative;
}
.mode-tab {
  flex: 1;
  padding: 14px;
  text-align: center;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--text-dim);
  background: transparent;
  transition: background-color var(--t), border-color var(--t), color var(--t), transform var(--t);
  border-right: 1px solid var(--border);
  position: relative;
  z-index: 1;
  letter-spacing: 0.5px;
}
.mode-tab:last-child { border-right: none; }
.mode-tab.active {
  background: var(--teal);
  color: var(--bg-darkest);
  font-weight: 700;
  box-shadow: 0 0 24px var(--teal-glow);
}
.mode-tab:hover:not(.active) {
  background: var(--bg-hover);
  color: var(--text);
}

/* 表单 */
.form-group { margin-bottom: 24px; }
.form-label {
  display: block;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--text-dim);
  margin-bottom: 8px;
  letter-spacing: 1px;
  text-transform: uppercase;
  font-family: var(--font-display);
}
.form-label .required { color: var(--red); }
.form-hint {
  font-size: 0.8rem;
  color: var(--text-muted);
  margin-top: 8px;
  display: flex;
  align-items: flex-start;
  gap: 4px;
}
.form-input, .form-textarea, .form-select {
  width: 100%;
  padding: 13px 18px;
  background: var(--bg-darkest);
  border: 1px solid var(--border);
  color: var(--text);
  font-size: 0.95rem;
  transition: background-color var(--t), border-color var(--t), box-shadow var(--t), color var(--t);
  outline: none;
}
.form-input:focus, .form-textarea:focus, .form-select:focus {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px var(--teal-glow), inset 0 0 20px rgba(0,229,197,0.03);
  background: rgba(0,229,197,0.02);
}
.form-input::placeholder { color: var(--text-muted); }
.form-textarea { resize: vertical; min-height: 80px; }
.form-select { cursor: pointer; }
.form-select option { background: var(--bg-dark); }

/* 产品信息展示 */
.product-info-box {
  background: var(--bg-darkest);
  border: 1px solid var(--border);
  border-left: 3px solid var(--teal);
  padding: 16px 20px;
  margin-bottom: 16px;
  transition: background-color var(--t), border-color var(--t), box-shadow var(--t), transform var(--t);
}
.product-info-box:hover {
  border-left-color: var(--teal-bright);
  box-shadow: -4px 0 20px var(--teal-glow);
}
.product-info-box .pi-label {
  font-size: 0.75rem;
  color: var(--text-muted);
  margin-bottom: 4px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  font-family: var(--font-display);
  font-weight: 600;
}
.product-info-box .pi-value { font-size: 1.15rem; font-weight: 700; color: var(--teal); }

/* 按钮 */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 28px;
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.5px;
  transition: background-color var(--t), border-color var(--t), box-shadow var(--t), color var(--t), transform var(--t);
  white-space: nowrap;
  border: 1px solid transparent;
  position: relative;
  overflow: hidden;
  font-family: var(--font-display);
  text-transform: uppercase;
}
.btn::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, transparent 30%, rgba(255,255,255,0.15) 50%, transparent 70%);
  transform: translateX(-100%);
  transition: transform 0.5s ease;
}
.btn:hover::after { transform: translateX(100%); }

.btn-primary {
  background: var(--teal);
  color: var(--bg-darkest);
}
.btn-primary:hover {
  background: var(--teal-bright);
  box-shadow: 0 0 28px var(--teal-glow), 0 4px 16px rgba(0,229,197,0.3);
  transform: translateY(-2px);
}
.btn-primary:active { transform: translateY(0); }

.btn-danger {
  background: var(--error);
  color: #fff;
}
.btn-danger:hover {
  background: #F87171;
  box-shadow: 0 0 28px rgba(239,68,68,0.25), 0 4px 16px rgba(239,68,68,0.3);
  transform: translateY(-2px);
}

.btn-ghost {
  background: transparent;
  border-color: var(--border-light);
  color: var(--text-dim);
}
.btn-ghost:hover {
  border-color: var(--teal);
  color: var(--teal);
  background: rgba(0,229,197,0.05);
}

.btn-block { width: 100%; }
.btn-sm { padding: 7px 14px; font-size: 0.78rem; }
.btn-lg { padding: 16px 40px; font-size: 1.1rem; }
.btn:disabled { opacity: 0.4; cursor: not-allowed; }
.btn:disabled::after { display: none; }

/* 结果展示 */
.result-box {
  text-align: center;
  padding: 24px 0;
}
.result-icon {
  width: 72px; height: 72px;
  margin: 0 auto 20px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.2rem;
  font-weight: 700;
  animation: popIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes popIn { 0% { transform: scale(0); } 60% { transform: scale(1.15); } 100% { transform: scale(1); } }
.result-icon.success { background: rgba(93,227,123,0.12); color: var(--green); box-shadow: 0 0 32px var(--green-glow); }
.result-icon.error   { background: rgba(239,68,68,0.12); color: var(--error); box-shadow: 0 0 32px rgba(239,68,68,0.25); }
.result-icon.pending { background: rgba(255,206,91,0.12); color: var(--gold); box-shadow: 0 0 32px var(--gold-glow); }
.result-box h2 { font-size: 1.5rem; margin-bottom: 10px; font-family: var(--font-display); }
.result-box p { color: var(--text-dim); font-size: 0.9rem; line-height: 1.8; }

/* 公告 */
.announcement {
  background: linear-gradient(135deg, rgba(255,206,91,0.08), rgba(255,206,91,0.03));
  border: 1px solid rgba(255,206,91,0.2);
  padding: 14px 18px;
  margin-bottom: 24px;
  font-size: 0.85rem;
  color: var(--gold);
  display: flex;
  gap: 10px;
  align-items: flex-start;
  border-left: 3px solid var(--gold);
}
.announcement span:first-child { font-size: 1rem; flex-shrink: 0; }

.redeem-footer {
  padding: 20px 48px;
  text-align: center;
  font-size: 0.8rem;
  color: var(--text-muted);
  border-top: 1px solid var(--border);
  position: relative;
  z-index: 1;
}

/* ============================================
   管理后台
   ============================================ */
.admin-layout {
  display: flex;
  min-height: 100vh;
  background: var(--bg-darkest);
  position: relative;
}
.admin-layout::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image:
    linear-gradient(rgba(0, 229, 197, 0.012) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 229, 197, 0.012) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
  z-index: 0;
}

/* 侧边栏 */
.sidebar {
  width: 250px;
  background: rgba(17, 28, 38, 0.95);
  backdrop-filter: blur(20px);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  position: fixed;
  top: 0; left: 0; bottom: 0;
  z-index: 100;
  transition: transform var(--t);
  min-height: 0;
}
.sidebar-header {
  padding: 14px 24px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 12px;
}
.sidebar-header img {
  height: 36px;
  width: auto;
  display: block;
}
.sidebar-header .sidebar-svg-logo {
  display: block;
  object-position: center;
  transform: translateY(1px);
  filter: brightness(0) invert(1);
}
.sidebar-code-logo {
  display: block;
  width: 78px;
  height: 28px;
  color: #f5f7fa;
  text-shadow: 0 0 14px rgba(0,229,197,.16);
}
.sidebar-code-logo path { fill: currentColor; }
.login-code-logo {
  display: block;
  width: 150px;
  height: 50px;
  margin: 0 auto 12px;
  color: #f5f7fa;
}
.login-code-logo path { fill: currentColor; }
.sidebar-header .logo-text {
  font-family: var(--font-body);
  font-size: .84rem;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
}
.sidebar-header .logo-text span {
  font-family: 'Microsoft YaHei', 'Noto Sans SC', sans-serif;
  color: var(--text-dim);
  font-size: .78rem;
  letter-spacing: 0;
}
.sidebar-header .logo-mark {
  width: 36px; height: 36px;
  background: var(--grad-tr);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--bg-darkest);
  clip-path: polygon(0 0, 100% 0, 100% 65%, 65% 100%, 0 100%);
  box-shadow: 0 0 16px var(--teal-glow);
}
.sidebar-header .logo-text {
  font-family: 'Rajdhani', 'Orbitron', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;
  font-weight: 800;
  font-size: 1.1rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
}
.sidebar-header .logo-text span { color: var(--teal); font-weight: 700; }

/* API 状态指示器 */
.sidebar-api-status {
  margin: 0 20px;
  padding: 6px 12px;
  font-size: 0.75rem;
  border-radius: 6px;
  background: var(--bg-darkest);
  text-align: center;
  color: var(--text-muted);
}

.sidebar-nav {
  flex: 1;
  overflow-y: auto;
  padding: 12px 0;
}
.nav-group-label {
  padding: 18px 24px 8px;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 1.5px;
  font-family: var(--font-display);
}
.nav-group { margin: 0; }
.nav-group-label {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: 0;
  background: transparent;
  color: var(--text-muted);
  text-align: left;
  cursor: pointer;
  font-family: var(--font-display);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  appearance: none;
}
.nav-group-label:hover { color: var(--text); }
.nav-group-chevron {
  display: inline-flex;
  width: 18px;
  height: 18px;
  align-items: center;
  justify-content: center;
  font-family: sans-serif;
  font-size: 0.85rem;
  transition: transform 0.18s ease;
}
.nav-group.is-collapsed .nav-group-chevron { transform: rotate(-90deg); }
.nav-group-items {
  max-height: 600px;
  overflow: hidden;
  opacity: 1;
  transition: max-height 0.18s ease, opacity 0.18s ease;
}
.nav-group.is-collapsed .nav-group-items {
  max-height: 0;
  opacity: 0;
}
.nav-item {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 24px;
  color: var(--text-dim);
  font-size: 0.9rem;
  font-weight: 500;
  cursor: pointer;
  transition: background-color var(--t), border-color var(--t), color var(--t), transform var(--t);
  border-left: 3px solid transparent;
  position: relative;
}
.nav-item:hover {
  background: rgba(0, 229, 197, 0.04);
  color: var(--text);
}
.nav-item.active {
  background: linear-gradient(90deg, rgba(0,229,197,0.08), transparent);
  color: var(--teal);
  border-left-color: var(--teal);
  font-weight: 600;
}
.nav-item.active::after {
  content: '';
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  width: 6px; height: 6px;
  background: var(--teal);
  border-radius: 50%;
  box-shadow: 0 0 8px var(--teal);
}
.nav-item .nav-icon {
  width: 22px;
  text-align: center;
  font-size: 1.05rem;
}
.nav-item .nav-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 22px;
  height: 22px;
}
.nav-svg-icon {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.sidebar-footer {
  padding: 16px 20px;
  border-top: 1px solid var(--border);
}
.sidebar-user {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
  padding: 8px;
  background: var(--bg-darkest);
  border: 1px solid var(--border);
}
.sidebar-user .avatar {
  width: 38px; height: 38px;
  background: var(--grad-tr);
  color: var(--bg-darkest);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800;
  font-size: 0.95rem;
  font-family: var(--font-display);
  flex-shrink: 0;
}
.sidebar-user .user-info { flex: 1; min-width: 0; }
.sidebar-user .user-name { font-size: 0.85rem; font-weight: 600; }
.sidebar-user .user-role { font-size: 0.72rem; color: var(--text-muted); }
.btn-logout {
  width: 100%;
  padding: 9px;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text-dim);
  border: 1px solid var(--border);
  transition: background-color var(--t), border-color var(--t), color var(--t);
  font-family: var(--font-display);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.btn-logout:hover { border-color: var(--error); color: var(--error); background: rgba(239,68,68,0.05); }

/* 主内容区 */
.admin-main {
  flex: 1;
  margin-left: 250px;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-width: 0;
  position: relative;
  z-index: 1;
}
.admin-topbar {
  height: 64px;
  background: rgba(17, 28, 38, 0.85);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 32px;
  position: sticky;
  top: 0;
  z-index: 50;
}
.topbar-title {
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.topbar-actions {
  display: flex;
  gap: 12px;
  align-items: center;
}
.topbar-link {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-dim);
  padding: 7px 16px;
  border: 1px solid var(--border);
  transition: background-color var(--t), border-color var(--t), color var(--t);
  font-family: var(--font-display);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.topbar-link:hover { border-color: var(--teal); color: var(--teal); background: rgba(0,229,197,0.05); }

.topbar-shortcuts {
  position: relative;
}
.topbar-shortcuts-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 34px;
  cursor: pointer;
  appearance: none;
  outline: none;
  letter-spacing: 0;
  text-transform: none;
}
.topbar-shortcuts.is-open .topbar-shortcuts-trigger {
  color: var(--dash-primary, var(--teal));
  border-color: var(--dash-primary, var(--teal));
  background: var(--dash-primary-soft, rgba(0, 229, 197, 0.08));
}
.topbar-shortcuts-trigger:focus-visible {
  box-shadow: 0 0 0 3px rgba(76, 125, 224, 0.2);
}
.topbar-shortcuts-trigger .nav-svg-icon {
  width: 16px;
  height: 16px;
}
.shortcut-chevron {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform var(--t);
}
.topbar-shortcuts.is-open .shortcut-chevron {
  transform: rotate(180deg);
}
.topbar-shortcuts-menu {
  position: absolute;
  top: calc(100% + 9px);
  right: 0;
  z-index: 80;
  width: 264px;
  padding: 6px;
  border: 1px solid var(--dash-border, var(--border));
  border-radius: 8px;
  background: var(--dash-surface, var(--panel));
  box-shadow: 0 16px 36px rgba(15, 23, 42, 0.16);
}
.topbar-shortcuts-menu[hidden] {
  display: none;
}
.topbar-shortcut-item {
  display: flex;
  align-items: center;
  gap: 11px;
  min-height: 58px;
  padding: 9px 10px;
  border-radius: 6px;
  color: var(--dash-text, var(--text));
  text-decoration: none;
  transition: background var(--t), color var(--t);
}
.topbar-shortcut-item:hover,
.topbar-shortcut-item:focus-visible {
  color: var(--dash-primary, var(--teal));
  background: var(--dash-primary-soft, rgba(0, 229, 197, 0.08));
  outline: none;
}
.topbar-shortcut-icon {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 34px;
  border-radius: 7px;
  color: var(--dash-primary, var(--teal));
  background: var(--dash-primary-soft, rgba(0, 229, 197, 0.08));
}
.topbar-shortcut-icon .nav-svg-icon {
  width: 18px;
  height: 18px;
}
.topbar-shortcut-item > span:last-child {
  min-width: 0;
  display: grid;
  gap: 2px;
}
.topbar-shortcut-item strong {
  font-size: 0.86rem;
  font-weight: 650;
  line-height: 1.35;
}
.topbar-shortcut-item small {
  color: var(--dash-text-3, var(--text-muted));
  font-size: 0.75rem;
  line-height: 1.35;
}

@media (max-width: 520px) {
  .topbar-actions { gap: 7px; }
  .topbar-link { padding: 7px 10px; }
  .topbar-shortcuts-menu {
    width: min(264px, calc(100vw - 24px));
  }
}

.admin-content {
  flex: 1;
  padding: 28px 32px;
  min-width: 0;
  overflow-x: hidden;
}

/* 统计卡片 */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 20px;
  margin-bottom: 28px;
}
.stat-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  padding: 24px;
  position: relative;
  overflow: hidden;
  transition: background-color var(--t), border-color var(--t), box-shadow var(--t), transform var(--t);
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 0 100%);
}
.stat-card:hover {
  border-color: var(--border-bright);
  transform: translateY(-3px);
  box-shadow: var(--shadow);
}
.stat-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 4px; height: 100%;
  background: var(--teal);
  box-shadow: 0 0 16px var(--teal);
}
.stat-card::after {
  content: '';
  position: absolute;
  top: -30px; right: -30px;
  width: 120px; height: 120px;
  background: radial-gradient(circle, var(--teal-glow), transparent 70%);
  opacity: 0.15;
}
.stat-card.red::before { background: var(--red); box-shadow: 0 0 16px var(--red); }
.stat-card.red::after { background: radial-gradient(circle, var(--red-glow), transparent 70%); }
.stat-card.gold::before { background: var(--gold); box-shadow: 0 0 16px var(--gold); }
.stat-card.gold::after { background: radial-gradient(circle, var(--gold-glow), transparent 70%); }
.stat-card.green::before { background: var(--green); box-shadow: 0 0 16px var(--green); }
.stat-card.green::after { background: radial-gradient(circle, var(--green-glow), transparent 70%); }

.stat-card .stat-icon {
  position: absolute;
  top: 20px; right: 20px;
  font-size: 2.2rem;
  opacity: 0.12;
  z-index: 1;
}
.stat-card .stat-label {
  font-size: 0.78rem;
  color: var(--text-dim);
  margin-bottom: 10px;
  text-transform: uppercase;
  letter-spacing: 1px;
  font-family: var(--font-display);
  font-weight: 600;
  position: relative;
  z-index: 1;
}
.stat-card .stat-value {
  font-size: 2.2rem;
  font-weight: 800;
  line-height: 1;
  font-family: var(--font-display);
  position: relative;
  z-index: 1;
}
.stat-card .stat-meta {
  font-size: 0.8rem;
  color: var(--text-muted);
  margin-top: 10px;
  position: relative;
  z-index: 1;
}

/* ===== 供应商余额卡（灰黑白 · 克制高级） ===== */
.stat-card.balance-mono {
  --balance-bg-start: #FAFAFA;
  --balance-bg-end: #EDEDED;
  --balance-text: #181818;
  --balance-muted: #727272;
  --balance-border: #BFC1C5;
  --balance-icon-bg: #202020;
  --balance-icon-color: #FFFFFF;
  --balance-line: rgba(30, 30, 30, 0.35);
  background: linear-gradient(150deg, var(--balance-bg-start) 0%, var(--balance-bg-end) 100%);
  border: 1px solid var(--balance-border);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  clip-path: none;
  border-radius: 10px;
}
.stat-card.balance-mono:hover {
  border-color: #9a9da3;
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(24, 24, 24, 0.10);
}
.stat-card.balance-mono::before { display: none; }
.stat-card.balance-mono::after { display: none; }
.stat-card.balance-mono .stat-icon {
  display: grid;
  place-items: center;
  width: 44px; height: 44px;
  font-size: 1.25rem;
  background: var(--balance-icon-bg);
  color: var(--balance-icon-color);
  border-radius: 9px;
  opacity: 1;
  position: static;
  margin-bottom: 16px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
}
.stat-card.balance-mono .stat-label {
  color: var(--balance-muted);
  font-size: 0.72rem;
  letter-spacing: 1.5px;
}
.stat-card.balance-mono .stat-value {
  color: var(--balance-text);
  font-size: 2.4rem;
  letter-spacing: -0.5px;
}
.stat-card.balance-mono .stat-meta {
  color: var(--balance-muted);
}
/* 底部淡灰趋势曲线装饰 */
.stat-card.balance-mono .balance-trend {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 34px;
  opacity: 0.50;
  pointer-events: none;
}
.stat-card.balance-mono .balance-trend svg {
  width: 100%; height: 100%;
  display: block;
}


/* 面板 */
.panel {
  background: var(--bg-card);
  border: 1px solid var(--border);
  margin-bottom: 24px;
  transition: border-color var(--t);
}
.panel:hover { border-color: var(--border-light); }
.panel-header {
  padding: 18px 24px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.panel-title {
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 8px;
  letter-spacing: 0.5px;
  text-transform: uppercase;
}
.panel-body { padding: 24px; }

/* 表格 */
.table-wrap { overflow-x: auto; }
table.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.88rem;
}
.data-table th {
  text-align: left;
  padding: 14px 16px;
  color: var(--text-dim);
  font-weight: 700;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 1px;
  border-bottom: 2px solid var(--border);
  white-space: nowrap;
  font-family: var(--font-display);
  background: var(--bg-darkest);
}
.data-table td {
  padding: 13px 16px;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
  transition: background var(--t);
}
.data-table tbody tr { transition: background-color var(--t), color var(--t); }
.data-table tbody tr:hover td { background: rgba(0, 229, 197, 0.03); }
.data-table tbody tr:last-child td { border-bottom: none; }

/* CDK 码单元格加大左内距（避免贴边） */
.data-table td[data-label="CDK码"] { padding-left: 22px !important; }

/* CDK 管理搜索栏：label 统一宽度避免不齐 + 按钮不贴边 */
.cdk-panel .search-bar .form-label { min-width: 64px; padding-left: 4px; box-sizing: border-box; }
.cdk-panel .search-bar #searchCDKBtn { margin-right: 8px; padding: 8px 18px; }
/* CDK 搜索栏大边框：浅灰圆角块，内部控件内缩不贴边 */
.cdk-panel .search-bar {
  padding: 16px 18px;
  margin-bottom: 24px;
  background: var(--dash-surface-2, #F8F9FB);
  border: 1px solid #E8EAEF;
  border-radius: 12px;
}
.cdk-panel .search-bar .form-input, .cdk-panel .search-bar .form-select { padding: 12px 18px; font-size: 0.9rem; }


/* 状态标签 */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 12px;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.3px;
  font-family: var(--font-display);
  text-transform: uppercase;
  border: 1px solid transparent;
}
.badge::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
.badge-success { background: rgba(93,227,123,0.1); color: var(--green); border-color: rgba(93,227,123,0.2); }
.badge-success::before { background: var(--green); box-shadow: 0 0 6px var(--green); }
.badge-danger  { background: rgba(239,68,68,0.1); color: var(--error); border-color: rgba(239,68,68,0.2); }
.badge-danger::before { background: var(--error); box-shadow: 0 0 6px var(--error); }
.badge-warning { background: rgba(255,206,91,0.1); color: var(--gold); border-color: rgba(255,206,91,0.2); }
.badge-warning::before { background: var(--gold); box-shadow: 0 0 6px var(--gold); }
.badge-info { background: var(--teal-glow); color: var(--teal); border-color: transparent; }
.badge-info::before { background: var(--teal); box-shadow: 0 0 6px var(--teal); }
.badge-muted   { background: var(--bg-elevated); color: var(--text-muted); border-color: var(--border); }
.badge-muted::before { background: var(--text-muted); }

/* 操作按钮组 */
.row-actions { display: flex; gap: 6px; }
.row-actions .btn { padding: 5px 11px; font-size: 0.72rem; }
.panel-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.inline-status {
  display: none;
  padding: 8px 24px;
  font-size: 0.76rem;
  color: var(--text-muted);
  border-bottom: 1px solid var(--border);
  white-space: pre-line;
}

/* 产品管理 */
.product-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.product-metric {
  min-width: 0;
  background: var(--bg-card);
  border: 1px solid var(--border);
  padding: 14px 16px;
}
.product-metric.is-warning { border-color: rgba(255,206,91,0.35); }
.product-metric__label {
  display: block;
  color: var(--text-muted);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: uppercase;
  font-family: var(--font-display);
}
.product-metric strong {
  display: block;
  margin-top: 6px;
  color: var(--text);
  font-size: 1.45rem;
  line-height: 1;
  font-family: var(--font-display);
}
.product-metric span:last-child {
  display: block;
  margin-top: 6px;
  color: var(--text-dim);
  font-size: 0.78rem;
}
.product-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px;
  padding: 16px 20px;
}
.product-toolbar .form-group {
  margin-bottom: 0;
  min-width: 150px;
}
.product-toolbar .product-search {
  flex: 1 1 260px;
}
.product-result-count {
  margin-left: auto;
  color: var(--text-muted);
  font-size: 0.78rem;
  white-space: nowrap;
  align-self: center;
}
.product-cell,
.stacked-cell {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 4px;
}
.product-cell strong {
  white-space: normal;
  line-height: 1.35;
}
.product-cell span,
.stacked-cell small {
  color: var(--text-muted);
  font-size: 0.74rem;
  white-space: normal;
}
.mono-id {
  color: var(--text-muted);
  font-family: var(--font-mono);
  font-size: 0.78rem;
}
.stock-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  max-width: 220px;
}
.product-actions {
  flex-wrap: wrap;
  min-width: 230px;
}
.cdk-actions {
  flex-wrap: wrap;
  min-width: 170px;
}

/* 搜索栏 */
.search-bar {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 20px;
  align-items: flex-end;
}
.search-bar .form-group { margin-bottom: 0; flex: 1; min-width: 150px; }
.search-bar .form-label { margin-bottom: 6px; font-size: 0.7rem; }
.search-bar .form-input, .search-bar .form-select { padding: 10px 14px; font-size: 0.85rem; }

/* 模态框 */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(5, 10, 15, 0.8);
  backdrop-filter: blur(8px);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  padding: 20px;
  overscroll-behavior: contain;
}
.modal-overlay.show { display: flex; animation: overlayIn 0.2s ease; }
@keyframes overlayIn { from { opacity: 0; } to { opacity: 1; } }
.modal {
  background: var(--bg-card);
  border: 1px solid var(--border-light);
  width: 100%;
  max-width: 520px;
  max-height: 90vh;
  overflow-y: auto;
  position: relative;
  clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 20px 100%, 0 calc(100% - 20px));
  animation: modalIn 0.3s cubic-bezier(0.34, 1.36, 0.64, 1);
}
@keyframes modalIn { from { transform: scale(0.9) translateY(20px); opacity: 0; } to { transform: scale(1) translateY(0); opacity: 1; } }
.modal::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--grad-tr);
  box-shadow: 0 0 16px var(--teal-glow);
}
.modal-header {
  padding: 22px 24px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.modal-title {
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 0.5px;
}
.modal-close {
  font-size: 1.4rem;
  color: var(--text-muted);
  line-height: 1;
  padding: 4px 8px;
  transition: background-color var(--t), color var(--t), transform var(--t);
}
.modal-close:hover { color: var(--red); transform: rotate(90deg); }
.modal-close:focus-visible,
.password-toggle:focus-visible,
.login-page a:focus-visible {
  outline: 3px solid rgba(37, 99, 235, 0.28);
  outline-offset: 3px;
}
.modal-body { padding: 24px; }
.modal-footer {
  padding: 16px 24px;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

/* 表单网格 */
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.form-grid .full { grid-column: 1 / -1; }

/* 复选框组 */
.checkbox-group { display: flex; flex-wrap: wrap; gap: 10px; }
.checkbox-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px;
  background: var(--bg-darkest);
  border: 1px solid var(--border);
  font-size: 0.85rem;
  font-weight: 500;
  cursor: pointer;
  transition: background-color var(--t), border-color var(--t), color var(--t);
}
.checkbox-item input { accent-color: var(--teal); width: 16px; height: 16px; cursor: pointer; }
.checkbox-item:has(input:checked) {
  border-color: var(--teal);
  background: rgba(0,229,197,0.06);
  color: var(--teal);
  box-shadow: 0 0 12px var(--teal-glow);
}

/* Toast */
.toast-container {
  position: fixed;
  top: 80px;
  right: 32px;
  z-index: 2000;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.toast {
  padding: 14px 22px;
  background: var(--bg-elevated);
  border: 1px solid var(--border-light);
  border-left: 4px solid var(--teal);
  font-size: 0.88rem;
  min-width: 280px;
  animation: slideIn 0.3s cubic-bezier(0.34, 1.36, 0.64, 1);
  display: flex;
  align-items: center;
  gap: 10px;
  backdrop-filter: blur(12px);
  box-shadow: var(--shadow);
}
.toast.success { border-left-color: var(--green); }
.toast.error { border-left-color: var(--error); }
.toast.warning { border-left-color: var(--gold); }
@keyframes slideIn { from { transform: translateX(120%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }

/* 空状态 */
.empty-state {
  text-align: center;
  padding: 60px 20px;
  color: var(--text-muted);
}
.empty-state .empty-icon { font-size: 3.5rem; margin-bottom: 16px; opacity: 0.2; }

/* CDK卡片展示 */
.cdk-list { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.cdk-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 11px 18px;
  background: var(--bg-darkest);
  border: 1px solid var(--border);
  font-family: var(--font-mono);
  font-size: 0.92rem;
  letter-spacing: 1.5px;
  font-weight: 600;
  transition: background-color var(--t), border-color var(--t), box-shadow var(--t);
}
.cdk-item:hover { border-color: var(--teal); background: rgba(0,229,197,0.03); }
.cdk-item .copy-btn {
  font-size: 0.75rem;
  color: var(--teal);
  font-family: var(--font-body);
  font-weight: 600;
  padding: 4px 10px;
  border: 1px solid var(--border);
  transition: background-color var(--t), border-color var(--t), color var(--t);
}
.cdk-item .copy-btn:hover { border-color: var(--teal); background: rgba(0,229,197,0.08); }

/* 分页 */
.pagination {
  display: flex;
  gap: 4px;
  justify-content: center;
  padding-top: 20px;
}
.pagination .page-btn {
  padding: 7px 13px;
  border: 1px solid var(--border);
  font-size: 0.85rem;
  color: var(--text-dim);
  transition: background-color var(--t), border-color var(--t), color var(--t);
  font-family: var(--font-display);
  font-weight: 600;
}
.pagination .page-btn:hover, .pagination .page-btn.active {
  border-color: var(--teal);
  color: var(--teal);
  background: rgba(0,229,197,0.08);
}

/* ============================================
   登录页 — 高级黑金（Deep Space × Champagne Gold）
   深空黑底层次 + 香槟金点缀，克制不刺眼
   ============================================ */
/* ============ 登录页 — 左冷灰蓝渐变品牌墙 + 右白表单（无缝衔接 + 细分隔线） ============ */
.login-shell {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #eef0f5;
  padding: 20px;
  position: relative;
}
.login-page {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", "Helvetica Neue", Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* 分屏容器 */
.login-split {
  width: 100%;
  max-width: 880px;
  display: flex;
  background: #ffffff;          /* 兜底色 = 左渐变末端白，整页一体 */
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 20px 60px -16px rgba(0,0,0,0.18);
  min-height: 500px;
}
/* 左 — 冷灰蓝渐变品牌墙（末端 #ffffff 与右区同色，无缝衔接） */
.split-brand {
  flex: 1 1 45%;
  background-image: linear-gradient(to right, #b8b8c5 0%, #bfbfcb 25%, #cbcbd7 45%, #d9d9e3 62%, #e6e6f0 78%, #f1f1f8 90%, #ffffff 100%);
  color: #1d1d1f;
  padding: 48px 40px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  position: relative;
}
.split-brand .login-code-logo {
  height: 34px;
  width: auto;
  color: #1d1d1f;
  display: block;
  position: relative;
  z-index: 1;
  filter: none;
}
.brand-bottom h2 {
  font-size: 1.7rem;
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.25;
  margin-bottom: 12px;
  color: #1d1d1f;
  position: relative;
  z-index: 1;
}
.brand-bottom p {
  font-size: 0.92rem;
  color: #54545c;
  line-height: 1.6;
  max-width: 280px;
  position: relative;
  z-index: 1;
}
.brand-tag {
  margin-top: 28px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.78rem;
  letter-spacing: 0.4px;
  color: #1d1d1f;
  background: rgba(255,255,255,0.55);
  border: 1px solid rgba(29,29,31,0.18);
  border-radius: 9999px;
  padding: 7px 14px;
  width: fit-content;
  position: relative;
  z-index: 1;
}
.brand-tag .dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: #1d1d1f;
}
/* 右 — 白表单区 */
.split-form {
  flex: 1 1 55%;
  background: #ffffff;
  position: relative;
  padding: 48px 44px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
/* 分隔线条：中间最实，向上下两端渐细、到边缘恰好消失 */
.split-form::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 1.5px;
  background: linear-gradient(to bottom, transparent 20%, rgba(0,0,0,1) 50%, transparent 80%);
}
.split-form .form-title {
  font-size: 1.4rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: #1d1d1f;
  margin-bottom: 4px;
}
.split-form .form-sub {
  font-size: 0.86rem;
  color: #86868b;
  margin-bottom: 28px;
}
/* 表单 — 浅色输入框，聚焦用深色细边 */
.login-page .form-group { margin-bottom: 18px; }
.login-page .form-label {
  display: block;
  font-size: 0.82rem;
  font-weight: 600;
  color: #1d1d1f;
  margin-bottom: 8px;
  letter-spacing: 0.2px;
  text-transform: none;        /* 覆盖全局 .form-label 的 uppercase */
  font-family: inherit;         /* 覆盖全局 .form-label 的 display 字体 */
}
.login-page .form-input {
  font-size: 15px;
  color: #1d1d1f;
  background: #ffffff;
  border: 1px solid #d2d2d7;
  border-radius: 10px;
  padding: 13px 14px;
  width: 100%;
  transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;
  -webkit-appearance: none;
  font-family: inherit;
}
.login-page .form-input::placeholder { color: #a1a1a6; }
.login-page .form-input:focus {
  outline: none;
  background: #fff;
  border-color: #1d1d1f;
  box-shadow: 0 0 0 3px rgba(0,0,0,0.10);
}
.password-field { position: relative; }
.password-field .form-input { padding-right: 46px; }
.password-toggle {
  position: absolute;
  top: 50%; right: 8px;
  width: 34px; height: 34px;
  padding: 0;
  border: 0; border-radius: 50%;
  background: transparent;
  color: #86868b;
  display: flex; align-items: center; justify-content: center;
  transform: translateY(-50%);
  cursor: pointer;
  transition: color 0.2s;
}
.password-toggle:hover { color: #1d1d1f; }
.password-toggle svg {
  width: 18px; height: 18px;
  fill: none; stroke: currentColor;
  stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round;
}
.eye-icon { display: inline-flex; }
.password-toggle[aria-pressed="true"] .eye-open,
.password-toggle[aria-pressed="false"] .eye-closed { display: none; }

/* 登录按钮 — 镂空 / 描边幽灵按钮 */
.login-page .btn-primary,
.login-page .btn-primary.btn-block,
.login-page .btn-primary.btn-lg {
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.3px;
  color: #1d1d1f;
  background: transparent;
  border: 1.5px solid #1d1d1f;
  border-radius: 9999px;
  padding: 12px 24px;
  width: 100%;
  cursor: pointer;
  margin-top: 10px;
  transition: background 0.22s, color 0.22s, transform 0.1s, box-shadow 0.22s;
  font-family: inherit;
  text-transform: none;        /* 覆盖全局 .btn 的 uppercase */
  overflow: visible;           /* 覆盖全局 .btn 的 overflow:hidden，避免裁剪 */
}
/* 杀掉全局 .btn::after 的 hover 滑光特效 */
.login-page .btn::after { display: none; }
.login-page .btn-primary:hover {
  background: #1d1d1f;
  color: #fff;
  box-shadow: 0 10px 22px -10px rgba(0,0,0,0.45);
}
.login-page .btn-primary:active { transform: scale(0.985); }

/* 返回链接 */
.login-page a {
  color: #0066cc;
  text-decoration: none;
  font-size: 0.85rem;
  transition: color 0.2s;
}
.login-page a:hover { color: #0077ed; text-decoration: underline; }

/* 移动端：堆叠为上下两块（白品牌在上、白表单在下） */
@media (max-width: 720px) {
  .login-split { flex-direction: column; max-width: 420px; }
  .split-brand { padding: 34px 30px; order: 1; min-height: 180px; }
  .brand-bottom { display: none; }
  .split-form { padding: 34px 30px; order: 2; }
}

/* 落地页 */
.landing-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--bg-darkest);
  position: relative;
  overflow: hidden;
}
.landing-page::before {
  content: '';
  position: absolute;
  width: 800px; height: 800px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(0,229,197,0.08), transparent 60%);
  top: -300px; left: -200px;
  animation: floatBlob 12s ease-in-out infinite;
}
.landing-page::after {
  content: '';
  position: absolute;
  width: 700px; height: 700px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(124,58,237,0.06), transparent 60%);
  bottom: -250px; right: -150px;
  animation: floatBlob 14s ease-in-out infinite reverse;
}
.landing-hero {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 40px 20px;
  position: relative;
  z-index: 1;
}
.landing-hero .hero-mark {
  width: 88px; height: 88px;
  margin-bottom: 28px;
  background: var(--grad-tr);
  display: flex; align-items: center; justify-content: center;
  font-size: 2.8rem;
  font-weight: 800;
  color: var(--bg-darkest);
  clip-path: polygon(0 0, 100% 0, 100% 65%, 65% 100%, 0 100%);
  box-shadow: 0 0 40px var(--teal-glow);
  animation: logoPulse 4s ease-in-out infinite;
}
.landing-hero h1 {
  font-family: var(--font-display);
  font-size: 3rem;
  font-weight: 800;
  letter-spacing: 3px;
  margin-bottom: 14px;
  text-transform: uppercase;
  text-shadow: 0 4px 30px rgba(0,0,0,0.5);
}
.landing-hero h1 span {
  color: var(--teal);
  text-shadow: 0 0 30px var(--teal-glow);
}
.landing-hero .tagline {
  font-size: 1.15rem;
  color: var(--text-dim);
  margin-bottom: 44px;
  font-weight: 500;
}
.landing-actions {
  display: flex;
  gap: 20px;
  flex-wrap: wrap;
  justify-content: center;
}
.landing-actions .btn { min-width: 210px; padding: 18px 36px; }

.landing-features {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
  max-width: 960px;
  margin: 0 auto 60px;
  padding: 0 20px;
  position: relative;
  z-index: 1;
}
.feature-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  padding: 30px 24px;
  text-align: center;
  transition: background-color var(--t), border-color var(--t), box-shadow var(--t), transform var(--t);
  clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px));
}
.feature-card:hover {
  border-color: var(--teal);
  transform: translateY(-4px);
  box-shadow: var(--shadow-teal);
}
.feature-card .feat-icon {
  font-size: 2.2rem;
  margin-bottom: 14px;
  display: inline-block;
  transition: transform var(--t);
}
.feature-card:hover .feat-icon { transform: scale(1.15); }
.feature-card h3 {
  font-family: var(--font-display);
  font-size: 1.1rem;
  margin-bottom: 8px;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
}
.feature-card p { font-size: 0.85rem; color: var(--text-dim); line-height: 1.7; }

/* 进度条 */
.progress-bar {
  height: 8px;
  background: var(--bg-darkest);
  border-radius: 4px;
  overflow: hidden;
  border: 1px solid var(--border);
}
.progress-bar .progress-fill {
  height: 100%;
  border-radius: 3px;
  transition: width 0.6s ease;
  position: relative;
}
.progress-bar .progress-fill::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
  animation: shimmer 2s infinite;
}
@keyframes shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }

/* 响应式 */
@media (max-width: 1180px) {
  .admin-content { padding: 22px 20px; }
  .product-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-height: 720px) {
  .redeem-main,
  .landing-hero,
  .login-page {
    align-items: flex-start;
  }
  .redeem-main,
  .landing-hero {
    padding-top: 20px;
    padding-bottom: 20px;
  }
  .redeem-header,
  .redeem-footer {
    padding-top: 12px;
    padding-bottom: 12px;
  }
  .redeem-card {
    padding-top: 28px;
    padding-bottom: 28px;
  }
  .redeem-card .subtitle,
  .landing-hero .tagline {
    margin-bottom: 20px;
  }
  .landing-hero .hero-mark {
    width: 64px;
    height: 64px;
    margin-bottom: 18px;
    font-size: 2rem;
  }
  .form-group { margin-bottom: 16px; }
  .sidebar-header { height: 56px; box-sizing: border-box; padding: 0 18px; }
  .sidebar-api-status { margin: 0 16px; }
  .nav-group-label { padding: 12px 18px 6px; }
  .nav-item { padding: 9px 18px; }
  .sidebar-footer { padding: 12px 16px; }
  .sidebar-user { margin-bottom: 10px; }
  .admin-topbar { height: 56px; }
}

@media (max-width: 768px) {
  .sidebar { transform: translateX(-100%); }
  .sidebar.open { transform: translateX(0); }
  .admin-main { margin-left: 0; }
  .admin-topbar {
    height: auto;
    min-height: 58px;
    padding: 10px 16px;
    gap: 10px;
    flex-wrap: wrap;
  }
  .admin-content { padding: 16px 12px; }
  .panel-header { padding: 14px 16px; align-items: flex-start; }
  .panel-actions { width: 100%; }
  .panel-actions .btn { flex: 1 1 140px; }
  .panel-body { padding: 16px; }
  .redeem-card, .login-split { padding: 32px 24px; }
  .form-grid { grid-template-columns: 1fr; }
  .landing-hero h1 { font-size: 2rem; }
  .mobile-menu-btn { display: block !important; }
  .stats-grid { grid-template-columns: 1fr 1fr; gap: 12px; }
  .stat-card { padding: 16px; }
  .stat-card .stat-value { font-size: 1.6rem; }
  .product-summary-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .product-toolbar { padding: 14px 16px; align-items: stretch; }
  .product-toolbar .form-group,
  .product-toolbar .product-search,
  .product-toolbar .btn {
    flex: 1 1 100%;
    width: 100%;
  }
  .product-result-count { margin-left: 0; }
  .responsive-table { overflow: visible; }
  .responsive-table table,
  .responsive-table thead,
  .responsive-table tbody,
  .responsive-table tr,
  .responsive-table td {
    display: block;
    width: 100%;
  }
  .responsive-table thead { display: none; }
  .responsive-table .data-table tr {
    margin: 12px 0;
    border: 1px solid var(--border);
    background: var(--bg-card);
  }
  .responsive-table .data-table td {
    display: grid;
    grid-template-columns: 86px minmax(0, 1fr);
    gap: 12px;
    align-items: start;
    padding: 11px 14px;
    white-space: normal;
  }
  .responsive-table .data-table td::before {
    content: attr(data-label);
    color: var(--text-muted);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: uppercase;
    font-family: var(--font-display);
  }
  .stock-pills,
  .product-actions {
    max-width: none;
    min-width: 0;
  }
  .search-bar .form-group,
  .search-bar .btn {
    flex: 1 1 100%;
    width: 100%;
  }
  .product-actions .btn { flex: 1 1 96px; }
  .cdk-actions .btn { flex: 1 1 74px; }
  .modal-overlay { padding: 10px; align-items: flex-start; }
  .modal { max-height: calc(100vh - 20px); }
  .modal-header,
  .modal-body,
  .modal-footer { padding-left: 16px; padding-right: 16px; }
  .modal-footer { flex-wrap: wrap; }
  .modal-footer .btn { flex: 1 1 120px; }
}

@media (max-width: 430px) {
  .topbar-title { font-size: 1rem; }
  .stats-grid,
  .product-summary-grid { grid-template-columns: 1fr; }
  .responsive-table .data-table td { grid-template-columns: 1fr; gap: 5px; }
  .product-actions .btn { flex-basis: 100%; }
}

.mobile-menu-btn { display: none; font-size: 1.5rem; color: var(--text); }

/* Final sidebar wordmark tuning */
.sidebar-code-logo { width:88px; height:29px; flex:0 0 88px; color:#f4f7fa; }
.sidebar-header .logo-text { margin-left:2px; padding-left:14px; border-left:1px solid #304353; font-family:"Microsoft YaHei", "Noto Sans SC", sans-serif; font-size:.82rem; font-weight:600; line-height:1.2; letter-spacing:0; text-transform:none; white-space:nowrap; }
.sidebar-header .logo-text span { color:#a8b5c0 !important; font-family:"Microsoft YaHei", "Noto Sans SC", sans-serif; font-size:.82rem; font-weight:600; letter-spacing:0; }
.sidebar-header .sidebar-code-logo { width:88px; height:29px; flex:0 0 88px; object-fit:contain; }
.split-brand .login-code-logo { display:block; width:auto; height:34px; object-fit:contain; filter:none; }

/* Keep the wordmark proportional and give the system name enough visual weight. */
.sidebar-header {
  height: 64px;
  box-sizing: border-box;
  gap: 12px;
  padding: 0 24px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
}
.sidebar-header .logo-text {
  margin-left: 0;
  height: 32px;
  padding-left: 10px;
  border-left: 1px solid #304353;
  display: inline-flex;
  align-items: center;
  font-family: Rajdhani, Orbitron, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  font-size: 1.1rem;
  font-weight: 800;
  line-height: 1.6;
  letter-spacing: .08em;
  text-transform: uppercase;
  white-space: nowrap;
}
.sidebar-header .logo-text span {
  color: var(--teal) !important;
  margin-left: 0;
  font-family: inherit;
  font-size: inherit;
  font-weight: 700;
  line-height: inherit;
  letter-spacing: inherit;
}
.sidebar-header img {
  height: 36px;
  width: auto;
  display: block;
}
.split-brand .login-code-logo {
  width: auto;
  height: 34px;
  aspect-ratio: 290 / 93;
  object-fit: contain;
  /* 浅底品牌墙：logo 保持原始深色，不做反白处理 */
  filter: none;
}

/* 加载动画 */
.spinner {
  width: 44px; height: 44px;
  border: 3px solid var(--border);
  border-top-color: var(--teal);
  border-right-color: var(--teal-dim);
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
  margin: 0 auto;
  box-shadow: 0 0 20px var(--teal-glow);
}
@keyframes spin { to { transform: rotate(360deg); } }

/* 渐入动画 */
.fade-in { animation: fadeIn 0.3s ease; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

/* 渐入序列动画 */
.stagger-in > * { animation: fadeInUp 0.4s ease backwards; }
.stagger-in > *:nth-child(1) { animation-delay: 0.05s; }
.stagger-in > *:nth-child(2) { animation-delay: 0.1s; }
.stagger-in > *:nth-child(3) { animation-delay: 0.15s; }
.stagger-in > *:nth-child(4) { animation-delay: 0.2s; }
.stagger-in > *:nth-child(5) { animation-delay: 0.25s; }
.stagger-in > *:nth-child(6) { animation-delay: 0.3s; }
@keyframes fadeInUp { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } }
/* Local preview: game-first product management */
.game-picker { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:12px; }
.game-picker-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
.game-collapsed-hint { padding:22px 8px 8px; color:var(--text-muted, #64748b); text-align:center; }
.game-picker-card { display:flex; align-items:center; gap:12px; width:100%; padding:16px; text-align:left; color:var(--text); background:var(--surface-2, #f8fafc); border:1px solid var(--border, #e5e7eb); border-radius:8px; cursor:pointer; transition:border-color .18s, box-shadow .18s, transform .18s; }
.game-picker-card:hover, .game-picker-card.is-active { border-color:var(--primary, #2563eb); box-shadow:0 4px 14px rgba(37,99,235,.12); transform:translateY(-1px); }
.game-picker-card__icon { display:grid; place-items:center; width:44px; height:44px; border-radius:10px; background:rgba(0,229,197,.08); border:1px solid rgba(0,229,197,.16); font-size:1.35rem; flex:0 0 auto; }
.game-picker-card__icon:empty { display:none; }
.game-picker-card__icon img { width:28px; height:28px; object-fit:contain; }
.game-picker-card__body { display:flex; min-width:0; flex:1; flex-direction:column; gap:5px; }
.game-picker-card__body strong { color:var(--text); font-size:.95rem; font-weight:600; letter-spacing:0; }
.game-picker-card__body small { color:var(--text-muted, #64748b); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.game-picker-card__arrow { color:var(--text-muted, #64748b); font-size:1.35rem; }
.selected-game-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:16px; }
.selected-game-heading h3 { margin:4px 0 0; color:var(--text); font-family:var(--font-body); font-size:1.08rem; font-weight:700; letter-spacing:0; }
.eyebrow { color:var(--text-muted, #64748b); font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; }
.product-panel { border-color:var(--border-light); box-shadow:0 8px 28px rgba(0,0,0,.18); }
.product-panel .panel-header { padding:16px 20px; }
.product-panel .panel-title { font-family:var(--font-body); font-size:.96rem; letter-spacing:0; text-transform:none; }
.product-panel .panel-body { padding:20px; }
.product-panel .product-toolbar { margin:0 -20px; padding:16px 20px; border-top:1px solid var(--border); border-bottom:1px solid var(--border); background:rgba(10,17,24,.28); }
.product-panel .data-table { font-size:.84rem; }
.product-panel .data-table th { padding:12px 14px; font-family:var(--font-body); font-size:.72rem; letter-spacing:0; text-transform:none; }
.product-panel .data-table td { padding:12px 14px; }
.product-panel .product-cell strong { font-size:.86rem; font-weight:600; }
.product-panel .row-actions .btn { padding:5px 9px; font-size:.7rem; }
.product-panel .form-label { color:var(--text-dim); font-size:.74rem !important; font-weight:600; }
.product-panel .form-input, .product-panel .form-select { min-height:36px; font-size:.82rem; }
.product-metric__label { font-family:var(--font-body); letter-spacing:0; text-transform:none; }
.product-metric strong { font-family:var(--font-body); font-size:1.35rem; font-weight:700; }
.product-panel,
.product-panel button,
.product-panel input,
.product-panel select { font-family:"Microsoft YaHei", "Noto Sans SC", "PingFang SC", system-ui, sans-serif; }
.product-panel .panel-title,
.product-panel .selected-game-heading h3,
.product-panel .game-picker-toolbar strong { color:#f5f7fa; }
.product-panel .game-picker-toolbar strong { font-size:.88rem; font-weight:600; }
.product-panel .game-picker-card { color:#e9eef3; background:rgba(30,45,61,.72); border-color:#2b3c4d; }
.product-panel .game-picker-card:hover { background:#243747; border-color:rgba(0,229,197,.45); }
.product-panel .game-picker-card.is-active { background:rgba(0,229,197,.08); border-color:var(--teal); box-shadow:0 0 0 1px rgba(0,229,197,.12), 0 8px 22px rgba(0,0,0,.18); }
.product-panel .game-picker-card__body strong { color:#f0f4f7; }
.product-panel .game-picker-card__body small,
.product-panel .game-picker-card__arrow,
.product-panel .game-collapsed-hint { color:#91a0af; }
.product-panel .eyebrow { color:#7f909f; font-family:"Microsoft YaHei", "Noto Sans SC", sans-serif; letter-spacing:.02em; }
.product-panel .product-metric { background:rgba(22,35,47,.82); border-color:#293b4b; }
.product-panel .product-metric__label { color:#8fa0af; }
.product-panel .product-metric strong { color:#f2f5f7; }
.product-panel .product-metric span:last-child { color:#82919f; }
.product-panel .product-toolbar { color:#b9c4ce; }
.product-panel .product-toolbar .form-label { color:#93a2b0 !important; }
.product-panel .product-result-count { color:#81909e; }
.product-panel .data-table th { color:#9eacb8; background:#101b25; border-bottom-color:#304353; }
.product-panel .data-table td { color:#c8d1d9; border-bottom-color:#263846; }
.product-panel .data-table tbody tr:hover td { background:rgba(0,229,197,.045); }
.product-panel .product-cell strong { color:#edf2f5; }
.product-panel .mono-id { color:#8ba0ae; }
.product-panel .form-input,
.product-panel .form-select { color:#e5ebef; background:#111e29; border-color:#304353; }
.product-panel .form-input::placeholder { color:#687987; }
.product-panel .form-input:focus,
.product-panel .form-select:focus { border-color:var(--teal); box-shadow:0 0 0 2px rgba(0,229,197,.12); }
.product-panel .btn-ghost { color:#b7c4ce; }
.product-panel .btn-ghost:hover { color:#f1f5f7; background:rgba(255,255,255,.06); }
.product-panel .badge { font-family:"Microsoft YaHei", "Noto Sans SC", sans-serif; font-weight:600; letter-spacing:0; text-transform:none; }
@media (max-width: 640px) { .game-picker { grid-template-columns:1fr; } .selected-game-heading { align-items:flex-start; } }

/* 管理后台主题切换 */
.theme-toggle {
  width: 100%;
  min-height: 38px;
  margin-bottom: 12px;
  padding: 8px 10px;
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg-elevated);
  color: var(--text-dim);
  font: 600 0.8rem var(--font-body);
  cursor: pointer;
  transition: background var(--t), border-color var(--t), color var(--t);
}
.theme-toggle:hover {
  color: var(--teal);
  border-color: var(--teal);
  background: var(--bg-hover);
}
.theme-toggle:focus-visible {
  outline: 2px solid var(--teal);
  outline-offset: 2px;
}
.theme-toggle-icon {
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.theme-toggle svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.theme-icon-moon { display: none; }

:root[data-theme="light"] {
  --bg-darkest: #f3f6f8;
  --bg-dark: #f8fafb;
  --bg-card: #ffffff;
  --bg-elevated: #e8eef2;
  --bg-hover: #dce7ec;
  --teal: #008f7d;
  --teal-bright: #00a993;
  --teal-dim: #007a6b;
  --teal-glow: rgba(0, 143, 125, 0.16);
  --red: #6d28d9;
  --red-bright: #7c3aed;
  --red-dim: #5b21b6;
  --red-glow: rgba(109, 40, 217, 0.14);
  --text: #172633;
  --text-dim: #516476;
  --text-muted: #758597;
  --border: #d3dee5;
  --border-light: #bfced8;
  --border-bright: #9cafba;
  --shadow: 0 4px 20px rgba(32, 55, 72, 0.12);
  --shadow-lg: 0 12px 40px rgba(32, 55, 72, 0.16);
  --shadow-teal: 0 4px 20px rgba(0, 143, 125, 0.12);
  --shadow-red: 0 4px 20px rgba(109, 40, 217, 0.1);
}
:root[data-theme="light"] .admin-layout::before {
  background-image:
    linear-gradient(rgba(0, 143, 125, 0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 143, 125, 0.035) 1px, transparent 1px);
}
:root[data-theme="light"] .sidebar {
  background: rgba(250, 252, 253, 0.95);
}
:root[data-theme="light"] .admin-topbar {
  background: rgba(250, 252, 253, 0.9);
}
:root[data-theme="light"] .sidebar-api-status {
  background: #eef3f5;
}
:root[data-theme="light"] .sidebar-svg-logo {
  filter: none;
}
:root[data-theme="light"] .nav-item:hover {
  background: rgba(0, 143, 125, 0.07);
}
:root[data-theme="light"] .nav-item.active {
  background: linear-gradient(90deg, rgba(0, 143, 125, 0.12), transparent);
}
:root[data-theme="light"] .theme-icon-sun { display: none; }
:root[data-theme="light"] .theme-icon-moon { display: block; }
:root[data-theme="light"] .product-panel .product-toolbar {
  background: rgba(232, 238, 242, 0.72);
}
:root[data-theme="light"] .product-panel .game-picker-card {
  color: var(--text);
  background: #f8fafb;
  border-color: var(--border);
}
:root[data-theme="light"] .product-panel .game-picker-card:hover {
  background: #eff6f7;
  border-color: rgba(0, 143, 125, 0.48);
}
:root[data-theme="light"] .product-panel .game-picker-card__body strong,
:root[data-theme="light"] .product-panel .panel-title,
:root[data-theme="light"] .product-panel .selected-game-heading h3,
:root[data-theme="light"] .product-panel .game-picker-toolbar strong,
:root[data-theme="light"] .product-panel .product-metric strong,
:root[data-theme="light"] .product-panel .product-cell strong {
  color: var(--text);
}
:root[data-theme="light"] .product-panel .game-picker-card__body small,
:root[data-theme="light"] .product-panel .game-picker-card__arrow,
:root[data-theme="light"] .product-panel .game-collapsed-hint,
:root[data-theme="light"] .product-panel .product-metric__label,
:root[data-theme="light"] .product-panel .product-metric span:last-child,
:root[data-theme="light"] .product-panel .product-result-count,
:root[data-theme="light"] .product-panel .mono-id {
  color: var(--text-muted);
}
:root[data-theme="light"] .product-panel .product-metric,
:root[data-theme="light"] .product-panel .form-input,
:root[data-theme="light"] .product-panel .form-select {
  color: var(--text);
  background: #ffffff;
  border-color: var(--border);
}
:root[data-theme="light"] .product-panel .data-table th {
  color: var(--text-dim);
  background: #eef3f5;
  border-bottom-color: var(--border);
}
:root[data-theme="light"] .product-panel .data-table td {
  color: var(--text);
  border-bottom-color: var(--border);
}

.catalog-workbench .partner-tabs {
  padding: 0 18px;
  border-bottom: 1px solid var(--border);
}
.catalog-workbench .partner-tab {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 48px;
}
.catalog-workbench .partner-tab small {
  color: var(--text-muted);
  font-size: .68rem;
  font-weight: 500;
}
.catalog-workbench .partner-tab.is-active small { color: var(--teal); }
.catalog-channel-toolbar {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  border-bottom: 1px solid var(--border);
}
.catalog-channel-toolbar > div {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.catalog-channel-toolbar .form-select { width: min(220px, 100%); }
.catalog-channel-checks {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.catalog-workbench .dealer-price-input { min-width: 110px; max-width: 150px; }

@media (max-width: 760px) {
  .catalog-channel-toolbar { align-items: stretch; flex-direction: column; }
  .catalog-channel-toolbar .form-select { width: 100%; }
  .catalog-channel-checks { grid-template-columns: 1fr; }
}
/* 订单工作台详情 */
.order-detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 16px; }
.order-detail-row { display:flex; flex-direction:column; gap:4px; padding:9px 10px; background:var(--bg-muted); border:1px solid var(--border); min-width:0; }

/* ============================================
   Apple 风格融合润色（后台专属 · 增量覆盖）
   保留 Valorant 深色基调 + teal 强调色
   叠加 Apple 的克制美学：圆角、按压微交互、
   聚焦环细腻化、去过度装饰、间距呼吸感
   作用域：.admin-layout，不影响提货页/落地页
   可回退：删除本区块即恢复原样
   ============================================ */

/* —– 字体：正文引入 Inter（最接近 SF Pro）—– */
.admin-layout {
  font-family: 'Inter', 'Noto Sans SC', system-ui, -apple-system, 'Segoe UI', sans-serif;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.admin-layout .panel-title,
.admin-layout .topbar-title,
.admin-layout .modal-title,
.admin-layout .stat-card .stat-label,
.admin-layout .nav-group-label,
.admin-layout .form-label,
.admin-layout .data-table th,
.admin-layout .badge,
.admin-layout .btn,
.admin-layout .btn-logout,
.admin-layout .topbar-link {
  font-family: 'Inter', 'Noto Sans SC', system-ui, sans-serif;
}
.admin-layout .stat-card .stat-value,
.admin-layout .product-metric strong {
  font-family: 'Inter', 'Rajdhani', 'Noto Sans SC', sans-serif;
  font-weight: 700;
  letter-spacing: -0.02em;
  font-feature-settings: 'tnum' 1;
}

/* —– 按钮按压微交互（Apple 招牌 scale）—– */
.admin-layout .btn { transition: transform 0.12s ease, background var(--t), box-shadow var(--t), color var(--t), border-color var(--t); }
.admin-layout .btn:active { transform: scale(0.97); }
.admin-layout .btn-primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(0,229,197,0.22), 0 1px 3px rgba(0,0,0,0.3);
}
.admin-layout .btn-primary:active { transform: scale(0.97); }
.admin-layout .btn-danger:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(239,68,68,0.22), 0 1px 3px rgba(0,0,0,0.3);
}
.admin-layout .btn-danger:active { transform: scale(0.97); }
/* 去掉按钮光泽扫过（Apple 不用这个）*/
.admin-layout .btn::after { display: none; }

/* —– 输入框聚焦环：从粗发光改为细腻薄环 —– */
.admin-layout .form-input,
.admin-layout .form-textarea,
.admin-layout .form-select {
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}
.admin-layout .form-input:focus,
.admin-layout .form-textarea:focus,
.admin-layout .form-select:focus {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px rgba(0,229,197,0.12);
  background: rgba(0,229,197,0.015);
}

/* —– 统计卡片：去过度装饰，圆角 + 干净阴影 —– */
.admin-layout .stat-card {
  clip-path: none;
  border-radius: 12px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.2), 0 1px 2px rgba(0,0,0,0.12);
  border: 1px solid var(--border);
}
.admin-layout .stat-card::after { display: none; } /* 去掉右上角径向光晕 */
.admin-layout .stat-card::before {
  width: 3px;          /* 色条更细更克制 */
  box-shadow: none;    /* 去掉色条发光 */
  border-radius: 0 2px 2px 0;
}
.admin-layout .stat-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0,0,0,0.28), 0 2px 8px rgba(0,0,0,0.18);
  border-color: var(--border-bright);
}

/* —– 面板：切角改圆角 —– */
.admin-layout .panel {
  border-radius: 12px;
  overflow: hidden;
}
.admin-layout .panel-header { border-bottom: 1px solid var(--border); }

/* —– 表格表头：自然化（去大写、去字距、Inter 字体）—– */
.admin-layout .data-table th {
  text-transform: none;
  letter-spacing: 0;
  font-weight: 600;
  font-size: 0.82rem;
  padding: 12px 16px;
}
.admin-layout .data-table tbody tr:hover td {
  background: rgba(0,229,197,0.025);
}

/* —– 弹窗：切角改圆角，动画更柔和 —– */
.admin-layout .modal {
  clip-path: none;
  border-radius: 14px;
  box-shadow: 0 24px 80px rgba(0,0,0,0.5), 0 8px 24px rgba(0,0,0,0.3);
}
.admin-layout .modal::before {
  border-radius: 14px 14px 0 0;
  height: 2px;
}
@keyframes appleModalIn {
  from { transform: scale(0.96) translateY(8px); opacity: 0; }
  to   { transform: scale(1) translateY(0); opacity: 1; }
}
.admin-layout .modal { animation: appleModalIn 0.28s cubic-bezier(0.22, 0.61, 0.36, 1); }

/* —– 侧边栏导航：去发光圆点，更克制 —– */
.admin-layout .nav-item.active::after { display: none; }
.admin-layout .nav-item {
  border-radius: 0;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.admin-layout .nav-item.active {
  background: rgba(0,229,197,0.06);
}

/* —– Badge：自然化（去大写、去字距、圆角）—– */
.admin-layout .badge {
  text-transform: none;
  letter-spacing: 0;
  border-radius: 6px;
  font-weight: 600;
  padding: 3px 10px;
}

/* —– 内容区间距：Apple 的呼吸感 —– */
.admin-layout .admin-content { padding: 32px 36px; }
.admin-layout .stats-grid { gap: 16px; }
.admin-layout .panel { margin-bottom: 20px; }

/* —– 顶栏：去掉大写字距，更自然 —– */
.admin-layout .topbar-title {
  text-transform: none;
  letter-spacing: 0;
  font-weight: 600;
  font-size: 1.1rem;
}
.admin-layout .topbar-link {
  text-transform: none;
  letter-spacing: 0;
  border-radius: 8px;
  font-weight: 500;
}

/* —– Toast：圆角化 —– */
.admin-layout .toast {
  border-radius: 10px;
  border-left-width: 3px;
}

/* —– 复选框项：圆角 —– */
.admin-layout .checkbox-item { border-radius: 8px; }

/* —– CDK 卡片：圆角 —– */
.admin-layout .cdk-item { border-radius: 8px; }
.admin-layout .cdk-item .copy-btn { border-radius: 6px; }

/* —– 分页按钮：圆角 —– */
.admin-layout .pagination .page-btn { border-radius: 6px; }

/* —– 亮色主题下的 Apple 融合同步 —– */
:root[data-theme="light"] .admin-layout .stat-card {
  box-shadow: 0 1px 3px rgba(32,55,72,0.08), 0 1px 2px rgba(32,55,72,0.05);
}
:root[data-theme="light"] .admin-layout .stat-card:hover {
  box-shadow: 0 8px 24px rgba(32,55,72,0.12), 0 2px 8px rgba(32,55,72,0.08);
}
:root[data-theme="light"] .admin-layout .modal {
  box-shadow: 0 24px 80px rgba(32,55,72,0.18), 0 8px 24px rgba(32,55,72,0.1);
}
:root[data-theme="light"] .admin-layout .form-input:focus,
:root[data-theme="light"] .admin-layout .form-textarea:focus,
:root[data-theme="light"] .admin-layout .form-select:focus {
  box-shadow: 0 0 0 3px rgba(0,143,125,0.12);
}
.order-detail-row > span, .order-detail-note > span { color:var(--text-muted); font-size:.72rem; }
.order-detail-row > strong { color:var(--text); font-size:.84rem; font-weight:600; overflow-wrap:anywhere; }
.order-detail-row > strong.mono { font-family:ui-monospace,SFMono-Regular,Consolas,monospace; }
.order-detail-note { margin-top:12px; padding:10px; background:var(--bg-muted); border:1px solid var(--border); }
.order-detail-note p { margin:6px 0 0; color:var(--text); font-size:.82rem; line-height:1.6; white-space:pre-wrap; overflow-wrap:anywhere; }
@media (max-width:640px) { .order-detail-grid { grid-template-columns:1fr; } }

/* Partner management views */
.partner-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-bottom: 20px;
}
.partner-card {
  position: relative;
  min-height: 220px;
  padding: 22px;
}
.partner-card-icon {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--teal);
  background: rgba(0, 229, 197, 0.1);
  border: 1px solid rgba(0, 229, 197, 0.22);
  margin-bottom: 18px;
}
.partner-card-icon .nav-svg-icon { width: 20px; height: 20px; }
.partner-card-icon--manual { color: var(--gold); background: rgba(247, 201, 72, 0.1); border-color: rgba(247, 201, 72, 0.22); }
.partner-card h3 { margin: 4px 0 0; color: var(--text); font-size: 1.05rem; }
.partner-card > .badge { position: absolute; top: 22px; right: 22px; }
.partner-card p { margin: 16px 0; color: var(--text-dim); font-size: .84rem; line-height: 1.7; }
.partner-card-meta { display: flex; justify-content: space-between; gap: 12px; padding-top: 10px; margin-top: 10px; border-top: 1px solid var(--border); color: var(--text-muted); font-size: .78rem; }
.partner-card-meta strong { color: var(--text); font-family: var(--font-display); }
.partner-card-actions { margin-top: 18px; }
.partner-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 20px; }
.partner-stats .stat-icon { display: inline-flex; color: currentColor; }
.partner-stats .nav-svg-icon { width: 22px; height: 22px; }
.partner-stats .stat-card.green .stat-icon { color: var(--green); }
.partner-subtitle, .panel-subtitle { color: var(--text-muted); font-size: .78rem; }
.dealer-price-input { width: 120px; min-width: 100px; padding: 7px 9px; }
.money-cell { color: var(--text, #1B1D23); font-family: var(--font-body); font-weight: 700; }
.loading-state { padding: 42px; text-align: center; color: var(--text-muted); }
.error-text { color: var(--red); }
@media (max-width: 768px) {
  .partner-grid, .partner-stats { grid-template-columns: 1fr; }
  .partner-card { min-height: 0; }
}

.partner-module-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 20px;
}
.partner-module-head h2 { margin: 4px 0 6px; color: var(--text); font-size: 1.35rem; }
.partner-module-head p { margin: 0; color: var(--text-muted); font-size: .82rem; }
.partner-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 18px;
  border-bottom: 1px solid var(--border);
}
.partner-tab {
  padding: 10px 14px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: .82rem;
  cursor: pointer;
}
.partner-tab:hover { color: var(--text); }
.partner-tab.is-active { color: var(--teal); border-bottom-color: var(--teal); }
.dealer-summary-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.dealer-filter-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border);
  background: var(--bg-muted);
}
.dealer-filter-bar .form-select { width: 180px; }
.dealer-filter-bar .form-input { flex: 1; min-width: 180px; }
.switch-control { display: inline-flex; align-items: center; gap: 8px; color: var(--text-dim); font-size: .8rem; cursor: pointer; }
.switch-control input { width: 16px; height: 16px; accent-color: var(--teal); }
.table-subline { display: block; margin-top: 4px; color: var(--text-muted); font-size: .72rem; }
.ledger-in { color: var(--green); font-weight: 700; }
.ledger-out { color: var(--red); font-weight: 700; }
@media (max-width: 768px) {
  .partner-module-head { flex-direction: column; }
  .partner-tabs { overflow-x: auto; }
  .partner-tab { white-space: nowrap; }
  .dealer-summary-stats { grid-template-columns: 1fr; }
  .dealer-filter-bar { align-items: stretch; flex-direction: column; }
  .dealer-filter-bar .form-select, .dealer-filter-bar .form-input { width: 100%; min-width: 0; }
}
.money-warning { color: var(--red); }
.warning-text { color: var(--red); }

/* ==========================================================
   LAA 提货仪表盘 v2 —— 现代 SaaS 浅色风格
   作用域：.dashboard-v2 内，不影响其他后台页面
   深色侧边栏 + 浅灰白主内容 + 大圆角卡片 + 灰黑白+低饱和蓝
   ========================================================== */

/* ---------- 设计 Token（浅色仪表盘专属） ---------- */
.dashboard-v2 {
  --dash-page-bg: #F5F6F8;
  --dash-surface: #FFFFFF;
  --dash-surface-2: #F8F9FB;
  --dash-sidebar-bg: #1C1F24;
  --dash-sidebar-hover: #292D33;
  --dash-sidebar-active: #3B465B;
  --dash-text: #1D1D1F;
  --dash-text-2: #6E7380;
  --dash-text-3: #9A9FA9;
  --dash-border: #E7E9EE;
  --dash-primary: #5B82E8;
  --dash-primary-soft: #EEF3FF;
  --dash-primary-strong: #4A6FD6;
  --dash-success: #45A867;
  --dash-success-soft: #EAF7EE;
  --dash-danger: #E05D5D;
  --dash-danger-soft: #FBEFEF;
  --dash-radius-lg: 24px;
  --dash-radius-md: 18px;
  --dash-radius-sm: 12px;
  --dash-radius-pill: 999px;
  --dash-shadow: 0 8px 30px rgba(28, 39, 55, 0.06);
  --dash-shadow-sm: 0 2px 10px rgba(28, 39, 55, 0.05);
  --dash-ease: 0.18s ease-out;

  /* 供应商余额卡（灰黑白高级方案） */
  --balance-bg-start: #FAFAFA;
  --balance-bg-end: #EDEDED;
  --balance-text: #181818;
  --balance-muted: #727272;
  --balance-border: #BFC1C5;
  --balance-icon-bg: #202020;
  --balance-icon-color: #FFFFFF;
  --balance-line: rgba(30, 30, 30, 0.35);
}

/* ---------- 仪表盘布局 ---------- */
.dashboard-v2 {
  display: flex;
  flex-direction: column;
  gap: 22px;
  padding: 28px;
  background: var(--dash-page-bg);
  border-radius: var(--dash-radius-lg);
  min-height: 100%;
}
.dashboard-v2 .dash-head-title { color: var(--dash-text); }
.dash-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.dash-head-title { font-size: 1.35rem; font-weight: 700; color: var(--dash-text); letter-spacing: -0.01em; }
.dash-head-sub { font-size: 0.85rem; color: var(--dash-text-2); margin-top: 4px; }
.dash-head-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

.dash-btn {
  display: inline-flex; align-items: center; gap: 7px;
  height: 38px; padding: 0 16px;
  border-radius: var(--dash-radius-sm);
  border: 1px solid var(--dash-border);
  background: var(--dash-surface);
  color: var(--dash-text);
  font-size: 0.82rem; font-weight: 600;
  transition: background-color var(--dash-ease), border-color var(--dash-ease), box-shadow var(--dash-ease), color var(--dash-ease), transform var(--dash-ease);
  text-decoration: none; cursor: pointer;
}
.dash-btn:hover { border-color: #D4D9E2; background: var(--dash-surface-2); transform: translateY(-1px); box-shadow: var(--dash-shadow-sm); }
.dash-btn svg,
.dash-btn-icon svg { width: 15px !important; height: 15px !important; flex-shrink: 0; }
.dash-btn-primary { background: var(--dash-primary); border-color: var(--dash-primary); color: #fff; }
.dash-btn-primary:hover { background: var(--dash-primary-strong); border-color: var(--dash-primary-strong); }
.dash-btn-icon { width: 38px; padding: 0; justify-content: center; }

.dash-search {
  display: flex; align-items: center; gap: 8px;
  height: 38px; padding: 0 14px;
  border: 1px solid var(--dash-border);
  border-radius: var(--dash-radius-sm);
  background: var(--dash-surface);
  transition: border-color var(--dash-ease), box-shadow var(--dash-ease);
}
.dash-search:focus-within { border-color: var(--dash-primary); box-shadow: 0 0 0 3px rgba(91, 130, 232, 0.12); }
.dash-search svg { width: 15px; height: 15px; color: var(--dash-text-3); flex-shrink: 0; }
.dash-search input { border: none; outline: none; background: transparent; color: var(--dash-text); font-size: 0.82rem; width: 190px; }
.dash-search input::placeholder { color: var(--dash-text-3); }

/* ---------- 第一排：核心指标卡 ---------- */
.dash-row-top { display: grid; grid-template-columns: 1fr 1fr 1.2fr 1.2fr; gap: 20px; }
.dash-card {
  background: var(--dash-surface);
  border: 1px solid var(--dash-border);
  border-radius: var(--dash-radius-md);
  padding: 22px 24px;
  box-shadow: var(--dash-shadow-sm);
  position: relative; overflow: hidden;
  transition: transform var(--dash-ease), box-shadow var(--dash-ease), border-color var(--dash-ease);
}
.dash-card:hover { transform: translateY(-2px); box-shadow: var(--dash-shadow); border-color: #DCE1EA; }
.dash-card-label {
  display: flex; align-items: center; gap: 8px;
  font-size: 0.76rem; font-weight: 600; color: var(--dash-text-2);
  text-transform: uppercase; letter-spacing: 0.04em;
  margin-bottom: 12px;
}
.dash-card-label .dash-ico { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; color: var(--dash-primary); }
.dash-card-label .dash-ico svg { width: 16px; height: 16px; }
.dash-ico-soft { background: var(--dash-primary-soft); }
.dash-ico-mono { background: #EDEDEE; color: #3A3D42 !important; }
.dash-ico-green { background: var(--dash-success-soft); color: var(--dash-success) !important; }
.dash-card-value {
  font-size: 2rem; font-weight: 800; color: var(--dash-text);
  line-height: 1.1; letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.dash-card-meta { font-size: 0.78rem; color: var(--dash-text-3); margin-top: 6px; }
.dash-card .mini-chart { margin-top: 16px; }

/* 供应商余额重点卡（灰黑白） */
.dash-card.balance-card {
  background: linear-gradient(150deg, var(--balance-bg-start) 0%, var(--balance-bg-end) 100%);
  border: 1px solid var(--balance-border);
  box-shadow: none;
}
.dash-card.balance-card:hover { border-color: #9A9DA3; box-shadow: 0 10px 30px rgba(24, 24, 24, 0.08); }
.dash-card.balance-card .dash-ico { background: var(--balance-icon-bg); color: var(--balance-icon-color) !important; }
.dash-card.balance-card .dash-card-label { color: var(--balance-muted); }
.dash-card.balance-card .dash-card-value { color: var(--balance-text); font-size: 2.1rem; }
.dash-card.balance-card .dash-card-meta { color: var(--balance-muted); }
.balance-card-actions { display: flex; gap: 8px; margin-top: 14px; }
.balance-card-actions .dash-btn { height: 32px; padding: 0 12px; font-size: 0.75rem; }
.balance-trend-svg { position: absolute; left: 0; right: 0; bottom: 0; height: 40px; opacity: 0.5; pointer-events: none; }
.balance-trend-svg svg { width: 100%; height: 100%; display: block; }

/* 运营概览卡（环图） */
.dash-card.overview-card { display: flex; align-items: center; gap: 20px; }
.overview-donut { position: relative; width: 108px; height: 108px; flex-shrink: 0; }
.overview-donut svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.overview-donut .donut-center { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; }
.overview-donut .donut-center strong { font-size: 1.3rem; font-weight: 800; color: var(--dash-text); line-height: 1.1; }
.overview-donut .donut-center span { font-size: 0.62rem; color: var(--dash-text-3); }
.overview-list { flex: 1; min-width: 0; display: grid; gap: 10px; }
.overview-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 0.8rem; }
.overview-item .ov-name { color: var(--dash-text-2); display: flex; align-items: center; gap: 7px; }
.overview-item .ov-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.overview-item strong { color: var(--dash-text); font-variant-numeric: tabular-nums; }

/* ---------- 第二排：双栏 ---------- */
.dash-row-bottom { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.dash-card-xl { background: var(--dash-surface); border: 1px solid var(--dash-border); border-radius: var(--dash-radius-md); padding: 24px; box-shadow: var(--dash-shadow-sm); }
.dash-card-xl-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 20px; }
.dash-card-xl-title { font-size: 0.95rem; font-weight: 700; color: var(--dash-text); }
.dash-card-xl-sub { font-size: 0.75rem; color: var(--dash-text-3); margin-top: 2px; }
.dash-seg { display: inline-flex; border: 1px solid var(--dash-border); border-radius: var(--dash-radius-pill); padding: 3px; background: var(--dash-surface-2); }
.dash-seg button {
  border: none; background: transparent;
  padding: 5px 14px; border-radius: var(--dash-radius-pill);
  font-size: 0.75rem; font-weight: 600; color: var(--dash-text-2);
  cursor: pointer; transition: background-color var(--dash-ease), box-shadow var(--dash-ease), color var(--dash-ease);
}
.dash-seg button.is-active { background: var(--dash-surface); color: var(--dash-text); box-shadow: 0 1px 4px rgba(28,39,55,0.08); }

/* CDK 状态区 */
.cdk-status-row { display: flex; gap: 28px; align-items: center; }
.cdk-status-list { flex: 1; min-width: 0; display: grid; gap: 18px; }
.cdk-status-item .cs-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; font-size: 0.8rem; }
.cdk-status-item .cs-top .cs-name { color: var(--dash-text-2); display: flex; align-items: center; gap: 8px; }
.cdk-status-item .cs-top .cs-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.cdk-status-item .cs-top .cs-count { font-weight: 700; color: var(--dash-text); font-variant-numeric: tabular-nums; }
.cdk-status-item .cs-top .cs-count small { font-weight: 600; color: var(--dash-text-3); margin-left: 4px; }
.cdk-bar { height: 8px; border-radius: var(--dash-radius-pill); background: var(--dash-surface-2); overflow: hidden; }
.cdk-bar-fill { height: 100%; border-radius: var(--dash-radius-pill); transition: width 0.4s ease-out; }
.cdk-donut { position: relative; width: 120px; height: 120px; flex-shrink: 0; }
.cdk-donut svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.cdk-donut .donut-center { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; }
.cdk-donut .donut-center strong { font-size: 1.4rem; font-weight: 800; color: var(--dash-text); line-height: 1.1; }
.cdk-donut .donut-center span { font-size: 0.62rem; color: var(--dash-text-3); }

/* 提货趋势图 */
.trend-chart { position: relative; height: 220px; margin-top: 6px; }
.trend-bars { display: flex; align-items: flex-end; gap: 12px; height: 100%; padding: 0 4px; }
.trend-col { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 8px; height: 100%; justify-content: flex-end; position: relative; }
.trend-col .tc-val { font-size: 0.68rem; font-weight: 700; color: var(--dash-text-2); opacity: 0; transition: opacity var(--dash-ease); font-variant-numeric: tabular-nums; }
.trend-col:hover .tc-val { opacity: 1; }
.trend-col .tc-bar-wrap { width: 100%; max-width: 34px; height: 100%; display: flex; align-items: flex-end; justify-content: center; }
.trend-col .tc-bar { width: 100%; min-height: 4px; border-radius: 8px 8px 4px 4px; background: var(--dash-primary); opacity: 0.88; transition: opacity var(--dash-ease); cursor: default; }
.trend-col:hover .tc-bar { opacity: 1; }
.trend-col .tc-date { font-size: 0.68rem; color: var(--dash-text-3); }
.trend-col.tc-empty .tc-bar { background: #E4E7EC; }
.trend-empty { position: absolute; inset: 0; display: grid; place-items: center; color: var(--dash-text-3); font-size: 0.82rem; }

/* ---------- 最近提货记录 ---------- */
.dash-table-card { background: var(--dash-surface); border: 1px solid var(--dash-border); border-radius: var(--dash-radius-lg); box-shadow: var(--dash-shadow-sm); overflow: hidden; }
.dash-table-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 22px 26px; border-bottom: 1px solid var(--dash-border); }
.dash-table-title { font-size: 1rem; font-weight: 700; color: var(--dash-text); }
.dash-table-link { font-size: 0.78rem; font-weight: 600; color: var(--dash-primary); text-decoration: none; }
.dash-table-link:hover { color: var(--dash-primary-strong); }
.dash-table-wrap { overflow-x: auto; }
.dash-table { width: 100%; border-collapse: collapse; min-width: 720px; }
.dash-table thead th {
  background: var(--dash-surface-2);
  color: var(--dash-text-2);
  font-size: 0.72rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.04em;
  text-align: left; padding: 12px 26px;
  border-bottom: 1px solid var(--dash-border);
  white-space: nowrap;
}
.dash-table tbody td { padding: 15px 26px; border-bottom: 1px solid #F1F3F6; font-size: 0.82rem; color: var(--dash-text); vertical-align: middle; }
.dash-table tbody tr { transition: background var(--dash-ease); }
.dash-table tbody tr:hover { background: #F6F9FF; }
.dash-table tbody tr:last-child td { border-bottom: none; }
.dash-table .mono { font-family: var(--font-mono); font-size: 0.76rem; color: var(--dash-text-2); }
.dash-table .cell-cdk { max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-pill { display: inline-flex; align-items: center; gap: 5px; padding: 4px 12px; border-radius: var(--dash-radius-pill); font-size: 0.72rem; font-weight: 600; }
.dash-pill-success { background: var(--dash-success-soft); color: var(--dash-success); }
.dash-pill-muted { background: #F0F1F3; color: var(--dash-text-2); }
.dash-table-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 26px; border-top: 1px solid var(--dash-border); }
.dash-table-count { font-size: 0.76rem; color: var(--dash-text-3); }
.dash-pager { display: flex; gap: 6px; align-items: center; }
.dash-pager button {
  min-width: 30px; height: 30px; padding: 0 8px;
  border: 1px solid var(--dash-border); border-radius: 8px;
  background: var(--dash-surface); color: var(--dash-text-2);
  font-size: 0.75rem; font-weight: 600; cursor: pointer;
  transition: background-color var(--dash-ease), border-color var(--dash-ease), color var(--dash-ease);
}
.dash-pager button:hover:not(:disabled) { border-color: var(--dash-primary); color: var(--dash-primary); }
.dash-pager button.is-active { background: var(--dash-primary); border-color: var(--dash-primary); color: #fff; }
.dash-pager button:disabled { opacity: 0.4; cursor: not-allowed; }
.admin-list-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 20px;
  border-top: 1px solid var(--dash-border, var(--border));
  background: var(--dash-surface, var(--surface));
}
.admin-list-summary { display: flex; align-items: center; gap: 14px; color: var(--text-muted); font-size: 0.78rem; }
.admin-list-summary label { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.admin-page-size { width: 72px; min-height: 30px; padding: 3px 24px 3px 8px; font-size: 0.76rem; }
.admin-page-numbers { display: flex; align-items: center; gap: 6px; }
@media (max-width: 640px) {
  .admin-list-footer { align-items: stretch; flex-direction: column; padding: 12px 14px; }
  .admin-list-summary, .admin-list-footer .dash-pager { justify-content: space-between; }
  .admin-page-numbers button:nth-child(n+4) { display: none; }
}

/* Real system settings */
.system-ops-shell { display: grid; gap: 18px; }
.system-ops-overview { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.system-ops-stat { min-width: 0; padding: 17px 18px; border: 1px solid var(--dash-border, #E6E9EF); border-radius: 14px; background: var(--dash-surface, #FFF); box-shadow: var(--dash-shadow-sm); }
.system-ops-stat span,.system-ops-stat small { display: block; color: var(--dash-text-3, #8F96A3); font-size: .71rem; }
.system-ops-stat strong { display: block; margin: 7px 0 4px; color: var(--dash-text, #1B1D23); font-size: 1.08rem; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.system-ops-stat.is-healthy { border-color: rgba(34,168,117,.26); }
.system-ops-stat.is-warning { border-color: rgba(217,92,92,.28); }
.system-ops-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; align-items: start; }
.system-ops-card { margin: 0; overflow: hidden; }
.system-maintenance-card { grid-column: 1 / -1; }
.system-detail-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0 22px; }
.system-detail-list > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; border-bottom: 1px solid var(--dash-border, #E6E9EF); font-size: .8rem; }
.system-detail-list span { color: var(--dash-text-2, #5F6673); }
.system-detail-list strong { color: var(--dash-text, #1B1D23); text-align: right; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.system-toggle-row { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 18px; padding: 14px; border-radius: 12px; background: var(--dash-surface-2,#F8F9FB); cursor: pointer; }
.system-toggle-row input { margin-top: 3px; }
.system-toggle-row strong,.system-toggle-row small { display: block; }
.system-toggle-row strong { color: var(--dash-text,#1B1D23); font-size: .85rem; }
.system-toggle-row small { margin-top: 4px; color: var(--dash-text-3,#8F96A3); font-size: .73rem; line-height: 1.5; }
@media (max-width: 1000px) { .system-ops-overview { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 760px) { .system-ops-grid,.system-detail-list { grid-template-columns: 1fr; } .system-maintenance-card { grid-column: auto; } }
@media (max-width: 520px) { .system-ops-overview { grid-template-columns: 1fr; } }
.dash-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60px 20px; color: var(--dash-text-3); gap: 10px; text-align: center; }
.dash-empty svg { width: 42px; height: 42px; opacity: 0.35; }
.dash-empty strong { font-size: 0.9rem; color: var(--dash-text-2); font-weight: 600; }

/* 加载态 */
.dash-loading { display: grid; place-items: center; padding: 80px 0; color: var(--dash-text-3); font-size: 0.85rem; }
.dash-spinner { width: 26px; height: 26px; border: 3px solid var(--dash-border); border-top-color: var(--dash-primary); border-radius: 50%; animation: dashspin 0.7s linear infinite; margin-bottom: 12px; }
@keyframes dashspin { to { transform: rotate(360deg); } }

/* ---------- 响应式 ---------- */
@media (max-width: 1280px) {
  .dash-row-top { grid-template-columns: 1fr 1fr; }
  .dash-row-bottom { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .dash-head { flex-direction: column; }
  .dash-search { width: 100%; }
  .dash-search input { flex: 1; width: auto; }
  .dash-row-top { grid-template-columns: 1fr; }
  .dash-card.overview-card { flex-direction: column; align-items: flex-start; }
  .cdk-status-row { flex-direction: column; align-items: flex-start; }
  .dash-table-head { flex-direction: column; align-items: flex-start; }
  .dash-table-foot { flex-direction: column; align-items: flex-start; }
}


/* 仪表盘 v2：覆盖外层深色主题影响，内部统一浅色 SaaS 配色 */
.dashboard-v2, .dashboard-v2 * { box-sizing: border-box; }
.dashboard-v2 .dash-btn,
.dashboard-v2 .dash-search,
.dashboard-v2 .dash-card,
.dashboard-v2 .dash-card-xl,
.dashboard-v2 .dash-table-card,
.dashboard-v2 .dash-seg,
.dashboard-v2 .dash-pager button {
  color: var(--dash-text);
}
.dashboard-v2 .dash-table .mono { color: var(--dash-text-2); }
.dashboard-v2 .dash-table tbody td strong { color: var(--dash-text); }
.dashboard-v2 .dash-table tbody td { color: var(--dash-text); }


/* ==========================================================
   Dashboard 浅色壳（dash-shell）：仅仪表盘路由生效
   深色圆角侧边栏保留，右侧主区域切浅灰白
   ========================================================== */
.admin-layout.dash-shell .admin-main {
  background: var(--dash-page-bg, #F5F6F8);
}
.admin-layout.dash-shell .admin-topbar {
  background: rgba(245, 246, 248, 0.92);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--dash-border, #E7E9EE);
}
.admin-layout.dash-shell .admin-topbar .topbar-title {
  color: var(--dash-text, #1D1D1F);
  letter-spacing: 0.02em;
  text-transform: none;
  font-family: var(--font-body);
  font-size: 0.95rem;
}
.admin-layout.dash-shell .admin-content {
  padding: 28px 32px;
  max-width: 1440px;
  width: 100%;
  margin: 0 auto;
}
.admin-layout.dash-shell .topbar-link {
  color: var(--dash-text-2, #6E7380);
  border: 1px solid var(--dash-border, #E7E9EE);
  background: var(--dash-surface, #FFFFFF);
  border-radius: var(--dash-radius-sm, 12px);
  padding: 7px 16px;
}
.admin-layout.dash-shell .topbar-link:hover {
  border-color: var(--dash-primary, #5B82E8);
  color: var(--dash-primary, #5B82E8);
  background: var(--dash-primary-soft, #EEF3FF);
}

/* 用户信息块 */
.dash-user { display: flex; align-items: center; gap: 10px; padding-right: 4px; }
.dash-avatar {
  width: 34px; height: 34px;
  display: grid; place-items: center;
  border-radius: 10px;
  background: var(--dash-primary-soft, #EEF3FF);
  color: var(--dash-primary, #5B82E8);
  font-weight: 700; font-size: 0.9rem;
}
.dash-user-meta { display: grid; line-height: 1.25; }
.dash-user-meta strong { font-size: 0.8rem; color: var(--dash-text, #1D1D1F); font-weight: 600; }
.dash-user-meta span { font-size: 0.68rem; color: var(--dash-text-3, #9A9FA9); }

/* 仪表盘内容在浅色壳下的间距 */
.admin-layout.dash-shell .dashboard-v2 {
  padding: 0;
  min-height: calc(100vh - 64px);
}


/* dash-shell：侧边栏改为深色圆角独立面板 */
.admin-layout.dash-shell .sidebar {
  position: fixed;
  top: 16px; left: 16px; bottom: 16px;
  width: 232px;
  background: var(--dash-sidebar-bg, #1C1F24);
  border: 1px solid rgba(255, 255, 255, 0.04);
  border-right: none;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 16px 40px rgba(10, 14, 20, 0.28);
}
.admin-layout.dash-shell .admin-main {
  margin-left: 264px;
}
.admin-layout.dash-shell .sidebar .sidebar-header {
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.admin-layout.dash-shell .nav-group-label {
  color: rgba(255, 255, 255, 0.38);
}
.admin-layout.dash-shell .nav-item {
  color: rgba(255, 255, 255, 0.62);
  border-radius: 10px;
  margin: 1px 10px;
  transition: background var(--dash-ease), color var(--dash-ease);
}
.admin-layout.dash-shell .nav-item:hover {
  background: var(--dash-sidebar-hover, #292D33);
  color: rgba(255, 255, 255, 0.9);
}
.admin-layout.dash-shell .nav-item.active {
  background: var(--dash-sidebar-active, #3B465B);
  color: #FFFFFF;
}
.admin-layout.dash-shell .nav-group[data-nav-group="LAA充值站"] .nav-group-label {
  margin-top: 8px;
  padding-bottom: 11px;
}
.admin-layout.dash-shell .nav-group[data-nav-group="LAA充值站"] .nav-group-items {
  padding-bottom: 8px;
}
.admin-layout.dash-shell .nav-group[data-nav-group="LAA充值站"] .nav-item {
  margin-top: 3px;
  margin-bottom: 3px;
  padding-top: 13px;
  padding-bottom: 13px;
  gap: 16px;
}
.admin-layout.dash-shell .nav-item.active::before { display: none; }
.admin-layout.dash-shell .sidebar-api-status {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.06);
  color: rgba(255, 255, 255, 0.8);
  border-radius: 10px;
  margin: 12px 12px 4px;
}
.admin-layout.dash-shell .sidebar-api-status .api-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #45A867;
  display: inline-block;
  margin-right: 7px;
  box-shadow: none;
}
.admin-layout.dash-shell .sidebar-footer {
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}
.admin-layout.dash-shell .sidebar-user {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
}
.admin-layout.dash-shell .sidebar-user .avatar {
  background: rgba(255, 255, 255, 0.1);
  color: #FFFFFF;
}
.admin-layout.dash-shell .sidebar-user .user-name { color: rgba(255, 255, 255, 0.92); }
.admin-layout.dash-shell .sidebar-user .user-role { color: rgba(255, 255, 255, 0.4); }
.admin-layout.dash-shell .btn-logout {
  color: rgba(255, 255, 255, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 10px;
}
.admin-layout.dash-shell .btn-logout:hover {
  background: rgba(255, 255, 255, 0.08);
  color: #FFFFFF;
}
.admin-layout.dash-shell .mobile-menu-btn { color: var(--dash-text, #1D1D1F); }

.admin-layout.dash-shell .sidebar-api-status .api-dot.is-offline { background: #D95C5C; }
.admin-layout.dash-shell .sidebar-api-status.is-offline { color: rgba(255,255,255,0.7); }

/* dash-shell 移动端适配 */
@media (max-width: 900px) {
  .admin-layout.dash-shell .sidebar {
    top: 0; left: 0; bottom: 0;
    width: 250px;
    border-radius: 0 16px 16px 0;
    transform: translateX(-100%);
  }
  .admin-layout.dash-shell .sidebar.open { transform: translateX(0); }
  .admin-layout.dash-shell .admin-main { margin-left: 0; }
  .admin-layout.dash-shell .dashboard-v2 { padding: 0; }
  .admin-layout.dash-shell .mobile-menu-btn { display: block !important; }
}

/* ==========================================================
   LAA Design System v1 —— 统一 SaaS 后台
   载体：data-theme="light"（后台默认浅色）
   覆盖全部共享组件：卡片/表格/表单/按钮/弹窗/标签/进度
   主色：低饱和蓝 #5B82E8 · 成功：#45A867 · 灰黑白基础
   ========================================================== */
:root[data-theme="light"] {
  /* 品牌色：低饱和蓝替换 teal */
  --teal: #5B82E8;
  --teal-bright: #4A6FD6;
  --teal-dim: #6E90EB;
  --teal-glow: rgba(91, 130, 232, 0.12);
  --green: #45A867;
  --green-glow: rgba(69, 168, 103, 0.12);
  --red: #D95C5C;
  --red-bright: #C94F4F;
  --red-glow: rgba(217, 92, 92, 0.1);
  --gold: #C58A34;
  --gold-glow: rgba(197, 138, 52, 0.12);
  --purple: #7C8FD9;
  --error: #D95C5C;

  /* 背景体系 */
  --bg-darkest: #F5F6F8;
  --bg-dark: #FAFBFC;
  --bg-card: #FFFFFF;
  --bg-elevated: #F8F9FB;
  --bg-hover: #F0F2F5;

  /* 文字 */
  --text: #1D1D1F;
  --text-dim: #6E7380;
  --text-muted: #9A9FA9;

  /* 边框 */
  --border: #E7E9EE;
  --border-light: #DCE1EA;
  --border-bright: #C9CFD9;

  /* 阴影（轻柔） */
  --shadow: 0 8px 30px rgba(28, 39, 55, 0.06);
  --shadow-lg: 0 16px 48px rgba(28, 39, 55, 0.10);
  --shadow-teal: 0 8px 30px rgba(91, 130, 232, 0.08);
  --shadow-red: 0 8px 30px rgba(217, 92, 92, 0.08);

  /* 圆角 */
  --clip: 12px;
  --clip-lg: 20px;
  --clip-sm: 8px;

  /* 字体：正文优先，去掉霓虹 display 字体 */
  --font-display: 'Inter', 'Noto Sans SC', system-ui, sans-serif;
}

/* ---------- 背景纹理：极淡（去霓虹网格） ---------- */
:root[data-theme="light"] .admin-layout::before {
  background-image:
    linear-gradient(rgba(91, 130, 232, 0.02) 1px, transparent 1px),
    linear-gradient(90deg, rgba(91, 130, 232, 0.02) 1px, transparent 1px);
}

/* ---------- 侧边栏：深色圆角面板 ---------- */
:root[data-theme="light"] .sidebar {
  background: #1C1F24;
  border-right: 1px solid rgba(255, 255, 255, 0.05);
}
:root[data-theme="light"] .sidebar-header {
  border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}
:root[data-theme="light"] .sidebar-header .logo-text,
:root[data-theme="light"] .sidebar-header .logo-text span {
  color: #F0F2F5 !important;
}
:root[data-theme="light"] .sidebar-header .logo-text {
  border-left-color: rgba(255, 255, 255, 0.12);
}
:root[data-theme="light"] .sidebar-svg-logo { filter: brightness(0) invert(1); }

/* API 状态：深色圆角框 + 绿色圆点 */
:root[data-theme="light"] .sidebar-api-status {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.8);
  border-radius: 10px;
  font-weight: 500;
}

/* 导航：克制、低饱和蓝灰高亮 */
:root[data-theme="light"] .nav-group-label {
  color: rgba(255, 255, 255, 0.38);
}
:root[data-theme="light"] .nav-item {
  color: rgba(255, 255, 255, 0.6);
  border-radius: 10px;
  margin: 1px 12px;
}
:root[data-theme="light"] .nav-item:hover {
  background: #292D33;
  color: rgba(255, 255, 255, 0.92);
}
:root[data-theme="light"] .nav-item.active {
  background: #3B465B;
  color: #FFFFFF;
}
:root[data-theme="light"] .nav-item.active::before,
:root[data-theme="light"] .nav-item.active::after { display: none; }
:root[data-theme="light"] .nav-svg-icon { stroke: currentColor; }

/* 侧边栏底部 */
:root[data-theme="light"] .sidebar-footer {
  border-top: 1px solid rgba(255, 255, 255, 0.07);
}
:root[data-theme="light"] .sidebar-user .avatar {
  background: rgba(255, 255, 255, 0.1);
  color: #FFFFFF;
}
:root[data-theme="light"] .sidebar-user .user-name { color: rgba(255, 255, 255, 0.92); }
:root[data-theme="light"] .sidebar-user .user-role { color: rgba(255, 255, 255, 0.4); }
:root[data-theme="light"] .btn-logout {
  color: rgba(255, 255, 255, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 10px;
  background: transparent;
}
:root[data-theme="light"] .btn-logout:hover {
  background: rgba(255, 255, 255, 0.08);
  color: #FFFFFF;
}
:root[data-theme="light"] .theme-toggle { color: rgba(255, 255, 255, 0.6); }

/* ---------- 顶栏：浅色 ---------- */
:root[data-theme="light"] .admin-topbar {
  background: rgba(245, 246, 248, 0.9);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--border);
}
:root[data-theme="light"] .topbar-title {
  color: var(--text);
  text-transform: none;
  letter-spacing: 0.01em;
  font-family: var(--font-body);
  font-size: 1.05rem;
  font-weight: 700;
}
:root[data-theme="light"] .topbar-link {
  color: var(--text-dim);
  border: 1px solid var(--border);
  background: #fff;
  border-radius: 12px;
}
:root[data-theme="light"] .topbar-link:hover {
  border-color: var(--teal);
  color: var(--teal);
  background: var(--teal-glow);
}

/* ---------- 主内容区：浅灰 ---------- */
:root[data-theme="light"] .admin-content { background: transparent; }

/* ---------- 卡片 Panel：白色大圆角 ---------- */
:root[data-theme="light"] .panel {
  background: #FFFFFF;
  border: 1px solid var(--border);
  border-radius: 18px;
  box-shadow: var(--shadow);
  overflow: hidden;
}
:root[data-theme="light"] .panel:hover { border-color: var(--border-light); }
:root[data-theme="light"] .panel-header {
  border-bottom: 1px solid var(--border);
  padding: 18px 24px;
}
:root[data-theme="light"] .panel-title {
  color: var(--text);
  font-family: var(--font-body);
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}
:root[data-theme="light"] .panel-body { padding: 22px 24px; }

/* ---------- 表格 ---------- */
:root[data-theme="light"] .data-table { width: 100%; border-collapse: collapse; }
:root[data-theme="light"] .data-table th {
  background: var(--bg-elevated);
  color: var(--text-dim);
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
}
:root[data-theme="light"] .data-table td {
  color: var(--text);
  border-bottom: 1px solid #F1F3F6;
  padding: 14px 16px;
  font-size: 0.84rem;
}
:root[data-theme="light"] .data-table tbody tr { transition: background 0.15s ease; }
:root[data-theme="light"] .data-table tbody tr:hover { background: #F6F9FF; }
:root[data-theme="light"] .data-table tbody tr:last-child td { border-bottom: none; }


/* ---------- 表单 ---------- */
:root[data-theme="light"] .form-input,
:root[data-theme="light"] .form-textarea,
:root[data-theme="light"] .form-select {
  background: #FFFFFF;
  border: 1px solid var(--border);
  border-radius: 12px;
  color: var(--text);
  padding: 11px 16px;
  font-size: 0.9rem;
}
:root[data-theme="light"] .form-input:focus,
:root[data-theme="light"] .form-textarea:focus,
:root[data-theme="light"] .form-select:focus {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px var(--teal-glow);
  background: #FFFFFF;
}
:root[data-theme="light"] .form-input::placeholder { color: var(--text-muted); }
:root[data-theme="light"] .form-select option { background: #FFFFFF; color: var(--text); }
:root[data-theme="light"] .form-label { color: var(--text-dim); font-weight: 600; }

/* ---------- 按钮 ---------- */
:root[data-theme="light"] .btn {
  font-family: var(--font-body);
  text-transform: none;
  letter-spacing: 0.02em;
  font-size: 0.85rem;
  font-weight: 600;
  border-radius: 12px;
  padding: 10px 20px;
}
:root[data-theme="light"] .btn::after { display: none; }
:root[data-theme="light"] .btn-primary {
  background: var(--teal);
  color: #FFFFFF;
}
:root[data-theme="light"] .btn-primary:hover {
  background: var(--teal-bright);
  box-shadow: 0 4px 14px rgba(91, 130, 232, 0.25);
  transform: translateY(-1px);
}
:root[data-theme="light"] .btn-ghost {
  background: #FFFFFF;
  border: 1px solid var(--border);
  color: var(--text);
}
:root[data-theme="light"] .btn-ghost:hover {
  border-color: var(--border-bright);
  background: var(--bg-elevated);
  color: var(--text);
}
:root[data-theme="light"] .btn-danger {
  background: var(--error);
  color: #fff;
}
:root[data-theme="light"] .btn-sm { padding: 6px 12px; font-size: 0.78rem; border-radius: 10px; }

/* ---------- Badge / 状态标签 ---------- */
:root[data-theme="light"] .badge {
  border-radius: 999px;
  font-weight: 600;
  padding: 3px 12px;
  font-size: 0.72rem;
  text-transform: none;
  letter-spacing: 0;
}
:root[data-theme="light"] .badge::before { display: none; }
:root[data-theme="light"] .badge-success { background: var(--green-glow); color: var(--green); border-color: transparent; }
:root[data-theme="light"] .badge-danger { background: var(--red-glow); color: var(--red); border-color: transparent; }
:root[data-theme="light"] .badge-warning { background: var(--gold-glow); color: var(--gold); border-color: transparent; }
:root[data-theme="light"] .badge-muted { background: #F0F1F3; color: var(--text-dim); border-color: transparent; }

/* ---------- 弹窗 ---------- */
:root[data-theme="light"] .modal-overlay {
  background: rgba(16, 20, 26, 0.4);
  backdrop-filter: blur(4px);
}
:root[data-theme="light"] .modal {
  background: #FFFFFF;
  border: 1px solid var(--border);
  border-radius: 20px;
  box-shadow: var(--shadow-lg);
}
:root[data-theme="light"] .modal-title { color: var(--text); font-family: var(--font-body); }

/* ---------- 进度条 ---------- */
:root[data-theme="light"] .progress-bar {
  background: var(--bg-elevated);
  border-radius: 999px;
  height: 8px;
  overflow: hidden;
}
:root[data-theme="light"] .progress-fill {
  background: var(--teal);
  border-radius: 999px;
  height: 100%;
  transition: width 0.4s ease-out;
}

/* ---------- Toast ---------- */
:root[data-theme="light"] .toast {
  background: #FFFFFF;
  border: 1px solid var(--border);
  color: var(--text);
  border-radius: 12px;
  box-shadow: var(--shadow);
}

/* ---------- 其他工具 ---------- */
:root[data-theme="light"] .table-wrap { overflow-x: auto; }
:root[data-theme="light"] .text-button { color: var(--teal); }
:root[data-theme="light"] .empty-state p { color: var(--text-muted); }
:root[data-theme="light"] .announcement {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 12px;
}
:root[data-theme="light"] .form-hint { color: var(--text-muted); }
:root[data-theme="light"] .section-heading h2 { color: var(--text); }
:root[data-theme="light"] .eyebrow { color: var(--text-muted); }

/* ==========================================================
   Design System v1 —— 业务页面专属组件 light 补全
   覆盖：产品管理 / CDK管理 / 订单 / LAA / 合作伙伴 / 系统
   目标：全后台统一浅色 SaaS，消除深色/霓虹残留
   ========================================================== */

/* ---------- 产品管理（product-panel / game-picker） ---------- */
:root[data-theme="light"] .product-panel {
  box-shadow: var(--shadow);
}
:root[data-theme="light"] .product-panel .product-toolbar {
  background: var(--bg-elevated);
}
:root[data-theme="light"] .game-picker-card {
  background: #FFFFFF;
  border-color: var(--border);
  border-radius: 14px;
}
:root[data-theme="light"] .game-picker-card:hover {
  border-color: var(--teal);
  background: var(--teal-glow);
}
:root[data-theme="light"] .game-picker-card__body strong,
:root[data-theme="light"] .selected-game-heading h3,
:root[data-theme="light"] .product-cell strong,
:root[data-theme="light"] .product-metric strong {
  color: var(--text);
}
:root[data-theme="light"] .product-metric {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 12px;
}
:root[data-theme="light"] .product-search,
:root[data-theme="light"] .stock-pills {
  background: #FFFFFF;
  border-color: var(--border);
  border-radius: 12px;
}
:root[data-theme="light"] .mono-id {
  color: var(--text-dim);
  background: var(--bg-elevated);
  border-radius: 8px;
  padding: 2px 8px;
}
:root[data-theme="light"] .product-summary-grid {
  gap: 14px;
}
:root[data-theme="light"] .product-summary-grid > div {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 14px 18px;
}

/* ---------- CDK 管理（cdk-list / cdk-item） ---------- */
:root[data-theme="light"] .cdk-item {
  background: #FFFFFF;
  border-color: var(--border);
  border-radius: 10px;
  color: var(--text);
}
:root[data-theme="light"] .cdk-item:hover {
  border-color: var(--teal);
  background: var(--teal-glow);
}
:root[data-theme="light"] .cdk-actions .btn { border-radius: 10px; }

/* ---------- 订单（order-detail / table-subline） ---------- */
:root[data-theme="light"] .order-detail-grid {
  gap: 14px;
}
:root[data-theme="light"] .order-detail-row {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 16px;
}
:root[data-theme="light"] .order-detail-row strong { color: var(--text); }
:root[data-theme="light"] .order-detail-note {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text-dim);
}
:root[data-theme="light"] .table-subline { color: var(--text-muted); }

/* ---------- 合作伙伴（partner-card / partner-tab） ---------- */
:root[data-theme="light"] .partner-grid {
  gap: 20px;
}
:root[data-theme="light"] .partner-card {
  background: #FFFFFF;
  border: 1px solid var(--border);
  border-radius: 18px;
  box-shadow: var(--shadow);
}
:root[data-theme="light"] .partner-card-icon {
  background: var(--teal-glow);
  border-color: rgba(91, 130, 232, 0.2);
  border-radius: 12px;
  color: var(--teal);
}
:root[data-theme="light"] .partner-card-icon--manual {
  background: var(--gold-glow);
  border-color: rgba(197, 138, 52, 0.2);
  color: var(--gold);
}
:root[data-theme="light"] .partner-tabs {
  border-bottom: 1px solid var(--border);
}
:root[data-theme="light"] .partner-tab {
  color: var(--text-dim);
  border-radius: 10px 10px 0 0;
}
:root[data-theme="light"] .partner-tab.is-active {
  color: var(--teal);
  background: var(--teal-glow);
}
:root[data-theme="light"] .dealer-summary-stats { gap: 14px; }
:root[data-theme="light"] .money-cell { color: var(--gold); font-family: var(--font-body); }

/* ---------- 旧统计卡（stats-grid / stat-card，部分视图仍用） ---------- */
:root[data-theme="light"] .stats-grid { gap: 18px; }
:root[data-theme="light"] .stat-card {
  background: #FFFFFF;
  border: 1px solid var(--border);
  border-radius: 18px;
  clip-path: none;
  box-shadow: var(--shadow);
  padding: 22px 24px;
}
:root[data-theme="light"] .stat-card::before,
:root[data-theme="light"] .stat-card::after { display: none; }
:root[data-theme="light"] .stat-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}
:root[data-theme="light"] .stat-label {
  color: var(--text-dim);
  text-transform: none;
  letter-spacing: 0.03em;
}
:root[data-theme="light"] .stat-value {
  color: var(--text);
  font-family: var(--font-body);
  font-size: 1.9rem;
}
:root[data-theme="light"] .stat-meta { color: var(--text-muted); }

/* ---------- 通用工具补全 ---------- */
:root[data-theme="light"] .switch-control { color: var(--text-dim); }
:root[data-theme="light"] .switch-control input[type="checkbox"] { accent-color: var(--teal); }
:root[data-theme="light"] .checkbox-item {
  background: #FFFFFF;
  border: 1px solid var(--border);
  border-radius: 12px;
}
:root[data-theme="light"] .checkbox-item:hover { border-color: var(--border-bright); }
:root[data-theme="light"] .checkbox-group { gap: 10px; }
:root[data-theme="light"] .search-bar {
  background: #FFFFFF;
  border: 1px solid var(--border);
  border-radius: 12px;
}
:root[data-theme="light"] .search-bar:focus-within {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px var(--teal-glow);
}
:root[data-theme="light"] .search-bar input { color: var(--text); }
:root[data-theme="light"] .search-bar input::placeholder { color: var(--text-muted); }
:root[data-theme="light"] .inline-status { color: var(--text-dim); }
:root[data-theme="light"] .inline-status.is-warning { color: var(--gold); }
:root[data-theme="light"] .row-actions { gap: 8px; }
:root[data-theme="light"] .product-actions .btn,
:root[data-theme="light"] .row-actions .btn { border-radius: 10px; }

/* 表格容器卡片化：业务表格外层的 table-wrap */
:root[data-theme="light"] .table-wrap {
  background: #FFFFFF;
  border: 1px solid var(--border);
  border-radius: 18px;
  box-shadow: var(--shadow);
  overflow: hidden;
}
:root[data-theme="light"] .responsive-table .data-table { min-width: 0; }

/* 弹窗表单细节 */
:root[data-theme="light"] .modal-body { padding: 24px; }
:root[data-theme="light"] .modal-footer { padding: 16px 24px; border-top: 1px solid var(--border); }
:root[data-theme="light"] .modal-close { color: var(--text-muted); }

/* 大圆角统一：主内容面板 */
:root[data-theme="light"] .admin-content .panel:first-child { border-radius: 20px; }

/* 覆盖任何内联深色渐变残留的文本可读性 */
:root[data-theme="light"] .grad { background: none; }

/* ==========================================================
   Design System v1.2 —— 视觉精修层
   只打磨质感，不改变任何结构 / 字段 / 功能 / 交互
   ① 颜色体系 ② 卡片质感 ③ 表格体验 ④ 按钮 ⑤ 标签 ⑥ 深浅一致
   ========================================================== */

/* ---------- ① 颜色体系：完整色阶 ---------- */
:root[data-theme="light"] {
  /* 主蓝：更沉稳的 SaaS 蓝 + 完整状态色阶 */
  --teal: #4C7DE0;
  --teal-bright: #3F6BCB;
  --teal-dim: #6E90EB;
  --teal-soft: #EEF3FF;
  --teal-glow: rgba(76, 125, 224, 0.10);
  --teal-pressed: #3559AE;

  /* 成功 / 警告 / 危险：柔和的材料色 */
  --green: #3E9A63;
  --green-glow: rgba(62, 154, 99, 0.10);
  --green-soft: #E9F6EE;
  --gold: #B67E2E;
  --gold-glow: rgba(182, 126, 46, 0.10);
  --gold-soft: #FAF2E4;
  --red: #D05050;
  --red-glow: rgba(208, 80, 80, 0.10);
  --red-soft: #FCEEEE;

  /* 灰阶：更细腻的文字分层 */
  --text: #1B1D23;
  --text-dim: #5F6673;
  --text-muted: #8F96A3;

  /* 边框 / 表面 */
  --border: #E6E9EF;
  --border-light: #DDE1E8;
  --border-bright: #C7CDD8;
  --bg-card: #FFFFFF;
  --bg-elevated: #F7F8FA;
  --bg-hover: #F1F3F7;

  /* 阴影：双层，更柔和自然 */
  --shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 8px 24px rgba(16, 24, 40, 0.06);
  --shadow-lg: 0 2px 4px rgba(16, 24, 40, 0.05), 0 16px 48px rgba(16, 24, 40, 0.10);
  --shadow-sm: 0 1px 3px rgba(16, 24, 40, 0.04), 0 4px 12px rgba(16, 24, 40, 0.05);
}

/* ---------- ② 卡片质感：精致层次 ---------- */
:root[data-theme="light"] .panel,
:root[data-theme="light"] .dash-card-xl,
:root[data-theme="light"] .dash-card {
  background: #FFFFFF;
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
}
:root[data-theme="light"] .panel { border-radius: 16px; }
:root[data-theme="light"] .panel:hover,
:root[data-theme="light"] .dash-card-xl:hover {
  border-color: var(--border-bright);
  box-shadow: var(--shadow-lg);
}
:root[data-theme="light"] .panel-header {
  padding: 16px 20px;
  background: linear-gradient(180deg, #FFFFFF 0%, #FCFCFE 100%);
}
:root[data-theme="light"] .panel-title {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--text);
}
:root[data-theme="light"] .panel-body { padding: 20px; }

/* dash 卡片 hover 微抬升 */
:root[data-theme="light"] .dash-card:hover { transform: translateY(-2px); }

/* ---------- ③ 表格体验 ---------- */
:root[data-theme="light"] .data-table th {
  background: #F7F8FA;
  color: var(--text-dim);
  font-size: 0.70rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  padding: 11px 16px;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
:root[data-theme="light"] .data-table td {
  padding: 13px 16px;
  font-size: 0.83rem;
  color: #2A2E37;
  border-bottom: 1px solid #EEF0F4;
  vertical-align: middle;
}
:root[data-theme="light"] .data-table tbody tr {
  transition: background 0.14s ease-out;
}
:root[data-theme="light"] .data-table tbody tr:hover { background: #F5F8FF; }
:root[data-theme="light"] .data-table tbody tr:last-child td { border-bottom: none; }

:root[data-theme="light"] .data-table td strong { color: var(--text); font-weight: 600; }

/* 表格容器圆角统一 */
:root[data-theme="light"] .table-wrap {
  border-radius: 14px;
  overflow: hidden;
}

/* ---------- ④ 按钮：层次 + pressed ---------- */
:root[data-theme="light"] .btn {
  font-size: 0.84rem;
  font-weight: 600;
  border-radius: 10px;
  padding: 9px 18px;
  box-shadow: var(--shadow-sm);
  transition: background 0.15s ease-out, border-color 0.15s ease-out, box-shadow 0.15s ease-out, transform 0.12s ease-out;
}
:root[data-theme="light"] .btn:active { transform: translateY(0) scale(0.98); }

:root[data-theme="light"] .btn-primary {
  background: linear-gradient(180deg, var(--teal) 0%, var(--teal-bright) 100%);
  border: 1px solid rgba(63, 107, 203, 0.5);
  color: #FFFFFF;
  box-shadow: 0 1px 2px rgba(76, 125, 224, 0.2), 0 4px 12px rgba(76, 125, 224, 0.18);
}
:root[data-theme="light"] .btn-primary:hover {
  background: linear-gradient(180deg, var(--teal-bright) 0%, var(--teal-pressed) 100%);
  box-shadow: 0 2px 4px rgba(76, 125, 224, 0.22), 0 8px 20px rgba(76, 125, 224, 0.22);
}
:root[data-theme="light"] .btn-primary:active {
  background: var(--teal-pressed);
  box-shadow: none;
}

:root[data-theme="light"] .btn-ghost {
  background: #FFFFFF;
  border: 1px solid var(--border);
  color: var(--text-dim);
  box-shadow: none;
}
:root[data-theme="light"] .btn-ghost:hover {
  background: var(--bg-elevated);
  border-color: var(--border-bright);
  color: var(--text);
  box-shadow: var(--shadow-sm);
}
:root[data-theme="light"] .btn-ghost:active { background: #EDEFF3; box-shadow: none; }

:root[data-theme="light"] .btn-danger {
  background: linear-gradient(180deg, var(--red) 0%, #C24545 100%);
  border: 1px solid rgba(194, 69, 69, 0.4);
  color: #fff;
}
:root[data-theme="light"] .btn-danger:hover { background: linear-gradient(180deg, #C24545 0%, #B03E3E 100%); }

:root[data-theme="light"] .btn-sm {
  padding: 5px 11px;
  font-size: 0.75rem;
  border-radius: 8px;
}
:root[data-theme="light"] .btn-block { width: 100%; }
:root[data-theme="light"] .btn-lg { padding: 11px 24px; font-size: 0.9rem; border-radius: 12px; }

/* ---------- ⑤ 状态标签：精致胶囊 ---------- */
:root[data-theme="light"] .badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  font-size: 0.70rem;
  font-weight: 600;
  line-height: 1.5;
  border-radius: 999px;
  border: 1px solid transparent;
  letter-spacing: 0;
  text-transform: none;
}
:root[data-theme="light"] .badge-success {
  background: var(--green-soft);
  color: var(--green);
  border-color: rgba(62, 154, 99, 0.14);
}
:root[data-theme="light"] .badge-danger {
  background: var(--red-soft);
  color: var(--red);
  border-color: rgba(208, 80, 80, 0.14);
}
:root[data-theme="light"] .badge-warning {
  background: var(--gold-soft);
  color: var(--gold);
  border-color: rgba(182, 126, 46, 0.14);
}
:root[data-theme="light"] .badge-info {
  background: var(--teal-soft);
  color: var(--teal);
  border-color: rgba(76, 125, 224, 0.14);
}
:root[data-theme="light"] .badge-muted {
  background: #F0F1F4;
  color: var(--text-dim);
  border-color: transparent;
}

/* ---------- 表单：焦点更精致 ---------- */
:root[data-theme="light"] .form-input,
:root[data-theme="light"] .form-textarea,
:root[data-theme="light"] .form-select {
  border-radius: 10px;
  border: 1px solid var(--border);
  background: #FFFFFF;
  font-size: 0.88rem;
  transition: border-color 0.15s ease-out, box-shadow 0.15s ease-out;
}
:root[data-theme="light"] .form-input:hover,
:root[data-theme="light"] .form-textarea:hover,
:root[data-theme="light"] .form-select:hover { border-color: var(--border-bright); }
:root[data-theme="light"] .form-input:focus,
:root[data-theme="light"] .form-textarea:focus,
:root[data-theme="light"] .form-select:focus {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px var(--teal-glow);
}

/* ---------- 弹窗 ---------- */
:root[data-theme="light"] .modal {
  border-radius: 18px;
  box-shadow: var(--shadow-lg);
}
:root[data-theme="light"] .modal-header { padding: 18px 24px; }
:root[data-theme="light"] .modal-body { padding: 20px 24px; }
:root[data-theme="light"] .modal-footer {
  padding: 14px 24px;
  border-top: 1px solid var(--border);
  background: #FAFBFC;
  border-radius: 0 0 18px 18px;
}

/* ---------- ⑥ 深浅主题一致性：暗色主题同步精修 ---------- */
:root[data-theme="dark"] {
  --teal: #5B82E8;
  --teal-bright: #6E90EB;
  --teal-dim: #4C7DE0;
  --teal-glow: rgba(91, 130, 232, 0.16);
  --teal-pressed: #3559AE;
  --teal-soft: rgba(91, 130, 232, 0.14);
  --green: #4CC07C;
  --green-glow: rgba(76, 192, 124, 0.16);
  --green-soft: rgba(76, 192, 124, 0.12);
  --gold: #D8A34B;
  --gold-glow: rgba(216, 163, 75, 0.16);
  --gold-soft: rgba(216, 163, 75, 0.12);
  --red: #E56B6B;
  --red-glow: rgba(229, 107, 107, 0.16);
  --red-soft: rgba(229, 107, 107, 0.12);
}
:root[data-theme="dark"] .badge {
  border-radius: 999px;
  border: 1px solid transparent;
}
:root[data-theme="dark"] .badge-success {
  background: var(--green-soft);
  color: var(--green);
  border-color: rgba(76, 192, 124, 0.18);
}
:root[data-theme="dark"] .badge-danger {
  background: var(--red-soft);
  color: var(--red);
  border-color: rgba(229, 107, 107, 0.18);
}
:root[data-theme="dark"] .badge-warning {
  background: var(--gold-soft);
  color: var(--gold);
  border-color: rgba(216, 163, 75, 0.18);
}
:root[data-theme="dark"] .badge-info {
  background: var(--teal-soft);
  color: var(--teal);
  border-color: rgba(91, 130, 232, 0.2);
}
:root[data-theme="dark"] .btn { border-radius: 10px; }
:root[data-theme="dark"] .form-input,
:root[data-theme="dark"] .form-textarea,
:root[data-theme="dark"] .form-select { border-radius: 10px; }

/* 滚动条更精致（两种主题） */
:root[data-theme="light"] ::-webkit-scrollbar-track { background: transparent; }
:root[data-theme="light"] ::-webkit-scrollbar-thumb { background: #D8DCE3; border-radius: 4px; }
:root[data-theme="light"] ::-webkit-scrollbar-thumb:hover { background: #C2C8D2; }

/* 仪表盘 v2 主色同步 Design System v1.2 */
.dashboard-v2 {
  --dash-primary: #4C7DE0;
  --dash-primary-strong: #3F6BCB;
  --dash-primary-soft: #EEF3FF;
  --dash-success: #3E9A63;
  --dash-success-soft: #E9F6EE;
  --dash-border: #E6E9EF;
  --dash-text: #1B1D23;
  --dash-text-2: #5F6673;
  --dash-text-3: #8F96A3;
  --dash-shadow: 0 1px 2px rgba(16,24,40,0.04), 0 8px 24px rgba(16,24,40,0.06);
  --dash-shadow-sm: 0 1px 3px rgba(16,24,40,0.04), 0 4px 12px rgba(16,24,40,0.05);
}



/* ==========================================================
   商品中心（catalog-workbench）—— 仪表盘设计语言适配
   ========================================================== */
.catalog-workbench,
.product-workbench { padding: 24px; }
.catalog-workbench .game-picker-toolbar,
.product-workbench .game-picker-toolbar {
  margin-bottom: 14px;
  color: var(--dash-text-2, #6E7380);
  font-size: 0.85rem;
  font-weight: 600;
}
.catalog-workbench .game-picker,
.product-workbench .game-picker {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 12px;
  margin-bottom: 24px;
}
.catalog-workbench .game-picker-card,
.product-workbench .game-picker-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 14px;
  background: #FFFFFF;
  color: var(--dash-text, #1B1D23);
  text-align: left;
  cursor: pointer;
  transition: background-color 0.15s ease-out, border-color 0.15s ease-out, box-shadow 0.15s ease-out, color 0.15s ease-out, transform 0.15s ease-out;
}
.catalog-workbench .game-picker-card:hover,
.product-workbench .game-picker-card:hover {
  border-color: var(--dash-primary, #4C7DE0);
  background: var(--dash-primary-soft, #EEF3FF);
}
.catalog-workbench .game-picker-card.is-active,
.product-workbench .game-picker-card.is-active {
  border-color: var(--dash-primary, #4C7DE0);
  background: var(--dash-primary-soft, #EEF3FF);
  box-shadow: 0 0 0 1px var(--dash-primary, #4C7DE0);
}
.catalog-workbench .game-picker-card__icon,
.product-workbench .game-picker-card__icon {
  display: grid;
  place-items: center;
  width: 40px; height: 40px;
  border-radius: 10px;
  background: var(--dash-primary-soft, #EEF3FF);
  flex-shrink: 0;
  overflow: hidden;
}
.catalog-workbench .game-picker-card__icon img,
.product-workbench .game-picker-card__icon img { width: 22px; height: 22px; object-fit: contain; }
.catalog-workbench .game-picker-card__body,
.product-workbench .game-picker-card__body { min-width: 0; flex: 1; display: grid; gap: 3px; }
.catalog-workbench .game-picker-card__body strong,
.product-workbench .game-picker-card__body strong { font-size: 0.9rem; font-weight: 600; color: var(--dash-text, #1B1D23); }
.catalog-workbench .game-picker-card__body small,
.product-workbench .game-picker-card__body small { font-size: 0.74rem; color: var(--dash-text-3, #8F96A3); }
.catalog-workbench .game-picker-card__arrow,
.product-workbench .game-picker-card__arrow { color: var(--dash-text-3, #8F96A3); font-size: 1.2rem; }

.catalog-workbench .partner-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--dash-border, #E6E9EF);
}
.catalog-workbench .partner-tab {
  padding: 10px 18px;
  border: none;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--dash-text-2, #6E7380);
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  transition: background-color 0.15s ease-out, border-color 0.15s ease-out, box-shadow 0.15s ease-out, color 0.15s ease-out, transform 0.15s ease-out;
}
.catalog-workbench .partner-tab small {
  color: var(--dash-text-3, #8F96A3);
  font-size: 0.68rem;
  font-weight: 500;
  margin-left: 4px;
}
.catalog-workbench .partner-tab:hover { color: var(--dash-text, #1B1D23); }
.catalog-workbench .partner-tab.is-active {
  color: var(--dash-primary, #4C7DE0);
  border-bottom-color: var(--dash-primary, #4C7DE0);
}
.catalog-workbench .partner-tab.is-active small { color: var(--dash-primary, #4C7DE0); }

.catalog-workbench .catalog-channel-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 2px;
}
.catalog-workbench .catalog-channel-toolbar strong { color: var(--dash-text, #1B1D23); font-size: 0.92rem; }
.catalog-workbench .catalog-channel-toolbar .form-hint { color: var(--dash-text-3, #8F96A3); font-size: 0.76rem; }

.catalog-workbench .table-wrap,
.product-workbench .table-wrap {
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 14px;
  overflow: hidden;
}
.catalog-workbench .data-table th,
.product-workbench .data-table th {
  background: #F7F8FA;
  color: var(--dash-text-2, #5F6673);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 12px 16px;
  border-bottom: 1px solid var(--dash-border, #E6E9EF);
}
.catalog-workbench .data-table td,
.product-workbench .data-table td {
  padding: 14px 16px;
  color: var(--dash-text, #1B1D23);
  border-bottom: 1px solid #EEF0F4;
  font-size: 0.84rem;
  vertical-align: middle;
}
.catalog-workbench .data-table tbody tr:hover,
.product-workbench .data-table tbody tr:hover { background: #F5F8FF; }
.catalog-workbench .data-table tbody tr:last-child td,
.product-workbench .data-table tbody tr:last-child td { border-bottom: none; }

.catalog-workbench .table-subline,
.product-workbench .table-subline { color: var(--dash-text-3, #8F96A3); }
.catalog-workbench .dealer-price-input {
  width: 110px;
  padding: 7px 10px;
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 10px;
  font-size: 0.82rem;
  background: #FFFFFF;
  color: var(--dash-text, #1B1D23);
}
.catalog-workbench .dealer-price-input:focus {
  outline: none;
  border-color: var(--dash-primary, #4C7DE0);
  box-shadow: 0 0 0 3px var(--dash-primary-soft, #EEF3FF);
}
.catalog-workbench .dealer-filter-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 14px 0;
}
.catalog-workbench .dealer-filter-bar .form-select {
  width: 200px;
  border-radius: 10px;
  border: 1px solid var(--dash-border, #E6E9EF);
}
.catalog-workbench .badge,
.product-workbench .badge { border-radius: 999px; }

/* ==========================================================
   .dash-card 全局强化：保证在非 .dashboard-v2 容器中也有完整视觉效果
   ========================================================== */
.dash-row-top { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.dash-row-bottom { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }

.dash-card,
.catalog-workbench .dash-card,
[data-admin] .dash-card {
  display: block;
  background: var(--dash-surface, #FFFFFF);
  border: 1px solid var(--dash-border, #E6E9EE);
  border-radius: 18px !important;
  padding: 22px 24px;
  box-shadow: 0 1px 3px rgba(16, 24, 40, 0.06), 0 8px 24px rgba(16, 24, 40, 0.10);
  position: relative;
  overflow: hidden;
  transition: transform 0.18s ease-out, box-shadow 0.18s ease-out, border-color 0.18s ease-out;
}
.dash-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(16, 24, 40, 0.06), 0 16px 36px rgba(16, 24, 40, 0.08);
  border-color: #DCE1EA;
}

.dash-card-label,
.catalog-workbench .dash-card-label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--dash-text-2, #5F6673) !important;
  text-transform: none;
  letter-spacing: 0;
  margin-bottom: 14px;
  line-height: 1.4;
}
.dash-card-label .dash-ico,
.catalog-workbench .dash-card-label .dash-ico {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  color: var(--dash-primary, #4C7DE0);
  flex-shrink: 0;
}
.dash-card-label .dash-ico svg,
.catalog-workbench .dash-card-label .dash-ico svg { width: 18px; height: 18px; }
.dash-ico-soft { background: var(--dash-primary-soft, #EEF3FF); }
.dash-ico-mono { background: #EDEDEE; color: #3A3D42 !important; }
.dash-ico-green { background: var(--dash-success-soft, #E9F6EE); color: var(--dash-success, #3E9A63) !important; }

.dash-card-value,
.catalog-workbench .dash-card-value {
  display: block;
  font-size: 2rem;
  font-weight: 800;
  color: var(--dash-text, #1B1D23) !important;
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.dash-card-meta,
.catalog-workbench .dash-card-meta {
  display: block;
  font-size: 0.78rem;
  color: var(--dash-text-3, #8F96A3) !important;
  margin-top: 8px;
}

/* .dash-card-xl 主面板卡片 */
.dash-card-xl,
.catalog-workbench.dash-card-xl,
[data-admin] .dash-card-xl {
  display: block;
  background: var(--dash-surface, #FFFFFF);
  border: 1px solid var(--dash-border, #E6E9EE);
  border-radius: 18px !important;
  box-shadow: 0 1px 3px rgba(16, 24, 40, 0.06), 0 10px 28px rgba(16, 24, 40, 0.10);
  padding: 24px 28px;
  overflow: hidden;
}
.dash-card-xl-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 22px; flex-wrap: wrap; }
.dash-card-xl-title { font-size: 1.05rem; font-weight: 700; color: var(--dash-text, #1B1D23) !important; line-height: 1.3; }
.dash-card-xl-sub { font-size: 0.78rem; color: var(--dash-text-3, #8F96A3); margin-top: 4px; }

/* dash-btn 通用按钮 */
.dash-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 38px;
  padding: 0 18px;
  border-radius: 10px;
  border: 1px solid var(--dash-border, #E6E9EE);
  background: var(--dash-surface, #FFFFFF);
  color: var(--dash-text, #1B1D23);
  font-size: 0.84rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  transition: background-color 0.15s ease-out, border-color 0.15s ease-out, box-shadow 0.15s ease-out, color 0.15s ease-out, transform 0.15s ease-out;
}
.dash-btn:hover {
  border-color: #C7CDD8;
  background: var(--dash-surface-2, #F8F9FB);
}
.dash-btn svg,
.dash-btn-icon svg { width: 15px !important; height: 15px !important; flex-shrink: 0; }
.dash-btn-primary {
  background: linear-gradient(180deg, var(--dash-primary, #4C7DE0) 0%, var(--dash-primary-strong, #3F6BCB) 100%);
  border-color: var(--dash-primary-strong, #3F6BCB);
  color: #FFFFFF;
  box-shadow: 0 1px 2px rgba(76, 125, 224, 0.2), 0 4px 12px rgba(76, 125, 224, 0.18);
}
.dash-btn-primary:hover {
  background: linear-gradient(180deg, var(--dash-primary-strong, #3F6BCB) 0%, #3559AE 100%);
  border-color: #3559AE;
}

/* 响应式 */
@media (max-width: 1280px) {
  .dash-row-top { grid-template-columns: 1fr 1fr; }
  .dash-row-bottom { grid-template-columns: 1fr; }
}

/* 产品管理：选择游戏后的内容区 */
.product-workbench #selectedGameProducts {
  margin-top: 8px;
}
.product-workbench .selected-game-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 20px 0 16px;
  padding: 14px 18px;
  background: var(--dash-surface-2, #F8F9FB);
  border: 1px solid var(--dash-border, #E6E9EE);
  border-radius: 12px;
}
.product-workbench .selected-game-heading h3 {
  margin: 4px 0 0;
  color: var(--dash-text, #1B1D23);
  font-size: 1.02rem;
  font-weight: 700;
}
.product-workbench .eyebrow {
  color: var(--dash-text-3, #8F96A3);
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.product-workbench .product-toolbar {
  display: flex;
  align-items: flex-end;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.product-workbench .product-toolbar .form-group { min-width: 130px; }
.product-workbench .product-toolbar .form-input,
.product-workbench .product-toolbar .form-select {
  border-radius: 10px;
  border: 1px solid var(--dash-border, #E6E9EE);
}
.product-workbench .product-result-count {
  align-self: center;
  color: var(--dash-text-3, #8F96A3);
  font-size: 0.78rem;
}
.product-workbench .stock-pills { display: flex; gap: 6px; flex-wrap: wrap; }
.product-workbench .mono-id {
  color: var(--dash-text-2, #5F6673);
  background: var(--dash-surface-2, #F8F9FB);
  border-radius: 8px;
  padding: 2px 8px;
  font-size: 0.78rem;
}
.product-workbench .game-collapsed-hint {
  padding: 40px 20px;
  text-align: center;
  color: var(--dash-text-3, #8F96A3);
  font-size: 0.85rem;
}

/* ==========================================================
   Topbar 顶部栏：模块标签适配浅色 SaaS 风格
   ========================================================== */
.topbar-left {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}
.topbar-module {
  display: inline-flex;
  align-items: center;
  height: 32px;
  padding: 0 14px;
  border-radius: 999px;
  background: var(--dash-primary-soft, #EEF3FF);
  border: 1px solid rgba(76, 125, 224, 0.18);
  color: var(--dash-primary, #4C7DE0);
  font-size: 0.8rem;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 220px;
}
.admin-layout.dash-shell .admin-topbar .topbar-module {
  color: var(--dash-primary, #4C7DE0);
}

/* ==========================================================
   供应商管理（supplier manage）—— 仪表盘设计语言
   ========================================================== */
.supplier-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 28px;
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 14px;
  overflow: hidden;
  margin-bottom: 18px;
}
.supplier-info-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid #EEF0F4;
  font-size: 0.84rem;
}
.supplier-info-row:nth-child(odd) { background: var(--dash-surface-2, #F8F9FB); }
.supplier-info-row span { color: var(--dash-text-2, #5F6673); white-space: nowrap; }
.supplier-info-row strong { color: var(--dash-text, #1B1D23); text-align: right; font-weight: 600; word-break: break-all; }
.supplier-cur { color: var(--dash-text-3, #8F96A3); font-weight: 400; font-size: 0.72rem; }

.supplier-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.automatic-provider-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: 14px;
}
.automatic-provider-card {
  min-width: 0;
  padding: 18px;
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 16px;
  background: linear-gradient(145deg, var(--dash-surface, #FFFFFF), var(--dash-surface-2, #F8F9FB));
  box-shadow: 0 8px 24px rgba(20, 28, 45, .045);
}
.automatic-provider-card.is-online { border-color: rgba(31, 160, 111, .28); }
.automatic-provider-card.is-offline { background: var(--dash-surface-2, #F8F9FB); }
.automatic-provider-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 18px;
}
.automatic-provider-head > div { min-width: 0; }
.automatic-provider-head strong {
  display: block;
  color: var(--dash-text, #1B1D23);
  font-size: .95rem;
  line-height: 1.35;
}
.automatic-provider-head small {
  display: block;
  margin-top: 3px;
  color: var(--dash-text-3, #8F96A3);
  font-size: .72rem;
  overflow-wrap: anywhere;
}
.provider-status-dot {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--dash-text-2, #5F6673);
  font-size: .72rem;
  font-weight: 700;
}
.provider-status-dot::before {
  content: '';
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #A8AFBC;
  box-shadow: 0 0 0 4px rgba(168, 175, 188, .14);
}
.automatic-provider-card.is-online .provider-status-dot { color: #18865E; }
.automatic-provider-card.is-online .provider-status-dot::before {
  background: #22A875;
  box-shadow: 0 0 0 4px rgba(34, 168, 117, .14);
}
.automatic-provider-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}
.automatic-provider-metrics > div {
  min-width: 0;
  padding: 11px 12px;
  border-radius: 12px;
  background: rgba(255, 255, 255, .72);
  border: 1px solid rgba(225, 229, 237, .8);
}
.automatic-provider-metrics span,
.automatic-provider-metrics strong { display: block; }
.automatic-provider-metrics span { color: var(--dash-text-3, #8F96A3); font-size: .68rem; }
.automatic-provider-metrics strong {
  margin-top: 4px;
  color: var(--dash-text, #1B1D23);
  font-size: 1rem;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.automatic-provider-sync {
  margin-bottom: 14px;
  color: var(--dash-text-3, #8F96A3);
  font-size: .7rem;
  overflow-wrap: anywhere;
}
.automatic-provider-card .supplier-actions { gap: 7px; }
.automatic-provider-card .dash-btn { min-height: 36px; }

/* 高级设置与连接说明（默认收起） */
.supplier-advanced {
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 14px;
  background: var(--dash-surface, #FFFFFF);
  overflow: hidden;
}
.supplier-advanced summary {
  cursor: pointer;
  padding: 16px 22px;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--dash-text-2, #5F6673);
  list-style: none;
  user-select: none;
  transition: color var(--dash-ease);
}
.supplier-advanced summary::-webkit-details-marker { display: none; }
.supplier-advanced summary::before {
  content: '▸';
  display: inline-block;
  margin-right: 10px;
  transition: transform .18s ease-out;
  color: var(--dash-primary, #4C7DE0);
}
.supplier-advanced[open] summary::before { transform: rotate(90deg); }
.supplier-advanced summary:hover { color: var(--dash-text, #1B1D23); }
.supplier-advanced-body {
  padding: 4px 22px 20px;
  display: grid;
  gap: 14px;
  border-top: 1px solid var(--dash-border, #E6E9EF);
}
.supplier-advanced-row { display: grid; gap: 4px; }
.supplier-advanced-row .form-label { font-size: 0.78rem; color: var(--dash-text-2, #5F6673); }
.supplier-advanced-row .form-hint { font-size: 0.78rem; color: var(--dash-text-3, #8F96A3); margin: 0; }

/* 配置抽屉 */
.supplier-drawer-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(15, 20, 28, 0.4);
  backdrop-filter: blur(2px);
  z-index: 1000;
  opacity: 0;
  transition: opacity .2s ease-out;
}
.supplier-drawer-backdrop.is-open { opacity: 1; }
.supplier-drawer {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: 460px;
  max-width: 92vw;
  background: var(--dash-surface, #FFFFFF);
  box-shadow: -16px 0 48px rgba(16, 24, 40, 0.16);
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform .22s ease-out;
  border-radius: 20px 0 0 20px;
}
.supplier-drawer-backdrop.is-open .supplier-drawer { transform: translateX(0); }
.supplier-drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid var(--dash-border, #E6E9EF);
}
.supplier-drawer-title { font-size: 1.02rem; font-weight: 700; color: var(--dash-text, #1B1D23); }
.supplier-drawer-close {
  width: 32px; height: 32px;
  border: none; border-radius: 10px;
  background: var(--dash-surface-2, #F8F9FB);
  color: var(--dash-text-2, #5F6673);
  font-size: 1.1rem;
  cursor: pointer;
  transition: background-color var(--dash-ease), color var(--dash-ease), box-shadow var(--dash-ease);
}
.supplier-drawer-close:focus-visible,
.automatic-provider-card .dash-btn:focus-visible {
  outline: 3px solid rgba(76, 125, 224, .28);
  outline-offset: 2px;
}
.supplier-drawer-close:hover { background: var(--dash-primary-soft, #EEF3FF); color: var(--dash-primary, #4C7DE0); }
.supplier-drawer-body {
  flex: 1;
  overflow-y: auto;
  padding: 20px 24px;
  display: grid;
  gap: 18px;
  align-content: start;
}
.supplier-drawer-foot {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 16px 24px;
  border-top: 1px solid var(--dash-border, #E6E9EF);
}

/* 货币单选 / 面额多选 / 日期多选 */
.supplier-radio-row { display: flex; gap: 10px; flex-wrap: wrap; }
.supplier-radio {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 9px 14px;
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 10px;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--dash-text-2, #5F6673);
  cursor: pointer;
  transition: background-color var(--dash-ease), border-color var(--dash-ease), box-shadow var(--dash-ease), color var(--dash-ease);
  background: var(--dash-surface, #FFFFFF);
}
.supplier-radio input { display: none; }
.supplier-radio.is-active { border-color: var(--dash-primary, #4C7DE0); background: var(--dash-primary-soft, #EEF3FF); color: var(--dash-primary, #4C7DE0); }
.supplier-denom-grid, .supplier-day-grid { display: flex; gap: 8px; flex-wrap: wrap; }
.supplier-denom, .supplier-day {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 10px;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--dash-text-2, #5F6673);
  cursor: pointer;
  transition: background-color var(--dash-ease), border-color var(--dash-ease), box-shadow var(--dash-ease), color var(--dash-ease);
  background: var(--dash-surface, #FFFFFF);
}
.supplier-denom input, .supplier-day input { display: none; }
.supplier-denom.is-active, .supplier-day.is-active { border-color: var(--dash-primary, #4C7DE0); background: var(--dash-primary-soft, #EEF3FF); color: var(--dash-primary, #4C7DE0); }
.supplier-time-row { display: flex; gap: 14px; }
.supplier-time-row label { display: grid; gap: 6px; font-size: 0.78rem; color: var(--dash-text-2, #5F6673); }
.supplier-time-row .form-input { width: 150px; border-radius: 10px; border: 1px solid var(--dash-border, #E6E9EF); }

/* 同步日志 */
.supplier-log-list { display: grid; gap: 10px; }
.supplier-log-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 12px;
  background: var(--dash-surface, #FFFFFF);
}
.supplier-log-item > div { display: grid; gap: 3px; min-width: 0; }
.supplier-log-item strong { font-size: 0.84rem; color: var(--dash-text, #1B1D23); }
.supplier-log-item small { font-size: 0.74rem; color: var(--dash-text-3, #8F96A3); }

.form-control-static {
  padding: 10px 14px;
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 10px;
  background: var(--dash-surface-2, #F8F9FB);
  color: var(--dash-text, #1B1D23);
  font-weight: 700;
  font-size: 0.92rem;
}

@media (max-width: 900px) {
  .supplier-info-grid { grid-template-columns: 1fr; }
  .supplier-drawer { width: 100%; border-radius: 16px 0 0 16px; }
}

/* ===== LAA 活动管理 ===== */
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form-checkbox { display: flex; align-items: center; gap: 8px; font-size: 0.86rem; color: var(--dash-text, #1B1D23); cursor: pointer; }
.form-checkbox input { width: 16px; height: 16px; accent-color: var(--brand, #0B63E5); }
.form-actions { display: flex; align-items: center; gap: 10px; margin-top: 6px; }

.laa-act-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 4px;
  border-bottom: 1px solid var(--dash-border, #E6E9EF);
}
.laa-act-row:last-child { border-bottom: 0; }
.laa-act-row__main { display: flex; align-items: center; gap: 12px; min-width: 0; }
.laa-act-row__badge {
  flex-shrink: 0;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--brand, #0B63E5);
  background: var(--dash-brand-soft, #EAF1FE);
  padding: 3px 10px;
  border-radius: 999px;
}
.laa-act-row__info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.laa-act-row__info strong { font-size: 0.88rem; color: var(--dash-text, #1B1D23); }
.laa-act-row__meta { font-size: 0.74rem; color: var(--dash-text-3, #8F96A3); }
.laa-act-row__actions { display: flex; gap: 6px; flex-shrink: 0; }

/* Order list: keep every field readable when the admin window is narrowed. */
@media (min-width: 769px) and (max-width: 1120px) {
  .responsive-table:not(.order-list-table),
  :root[data-theme="light"] .responsive-table:not(.order-list-table) {
    overflow: visible;
    background: transparent;
    border: 0;
    box-shadow: none;
  }
  .responsive-table:not(.order-list-table) table,
  .responsive-table:not(.order-list-table) thead,
  .responsive-table:not(.order-list-table) tbody,
  .responsive-table:not(.order-list-table) tr,
  .responsive-table:not(.order-list-table) td { display: block; width: 100%; }
  .responsive-table:not(.order-list-table) thead { display: none; }
  .responsive-table:not(.order-list-table) .data-table { min-width: 0; }
  .responsive-table:not(.order-list-table) .data-table tr {
    margin: 10px 0;
    border: 1px solid var(--border);
    border-radius: 8px;
    overflow: hidden;
    background: var(--bg-card);
  }
  .responsive-table:not(.order-list-table) .data-table td {
    display: grid;
    grid-template-columns: 104px minmax(0, 1fr);
    gap: 12px;
    align-items: start;
    padding: 10px 14px;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  .responsive-table:not(.order-list-table) .data-table td::before {
    content: attr(data-label);
    color: var(--text-muted);
    font-family: var(--font-display);
    font-size: 0.72rem;
    font-weight: 700;
  }
  .responsive-table:not(.order-list-table) .row-actions { flex-wrap: wrap; justify-content: flex-start; }
}
@media (max-width: 1120px) {
  .order-list-table,
  :root[data-theme="light"] .order-list-table {
    overflow: visible;
    background: transparent;
    border: 0;
    box-shadow: none;
  }
  .order-list-table table,
  .order-list-table thead,
  .order-list-table tbody,
  .order-list-table tr,
  .order-list-table td {
    display: block;
    width: 100%;
  }
  .order-list-table thead { display: none; }
  .order-list-table .data-table tr {
    margin: 10px 0;
    border: 1px solid var(--border);
    border-radius: 8px;
    overflow: hidden;
    background: var(--bg-card);
  }
  .order-list-table .data-table td {
    display: grid;
    grid-template-columns: 88px minmax(0, 1fr);
    gap: 12px;
    align-items: start;
    padding: 10px 14px;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  .order-list-table .data-table td::before {
    color: var(--text-muted);
    font-family: var(--font-display);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0;
  }
  .order-list-table .data-table td:nth-child(1)::before { content: '订单号'; }
  .order-list-table .data-table td:nth-child(2)::before { content: '类型'; }
  .order-list-table .data-table td:nth-child(3)::before { content: '产品'; }
  .order-list-table .data-table td:nth-child(4)::before { content: '充值信息'; }
  .order-list-table .data-table td:nth-child(5)::before { content: '状态'; }
  .order-list-table .data-table td:nth-child(6)::before { content: '时间'; }
  .order-list-table .data-table td:nth-child(7)::before { content: '操作'; }
  .order-list-table .row-actions { flex-wrap: wrap; justify-content: flex-start; }
}
@media (max-width: 480px) {
  .order-list-table .data-table td { grid-template-columns: 1fr; gap: 4px; }
}

@media (max-width: 900px) {
  .dash-table-wrap { overflow: visible; }
  .dash-table, .dash-table thead, .dash-table tbody, .dash-table tr, .dash-table td { display: block; width: 100%; }
  .dash-table { min-width: 0; }
  .dash-table thead { display: none; }
  .dash-table tbody { display: grid; gap: 10px; }
  .dash-table tr { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; background: var(--bg-card); }
  .dash-table td { display: grid; grid-template-columns: 86px minmax(0, 1fr); gap: 10px; padding: 9px 12px; white-space: normal; overflow-wrap: anywhere; }
  .dash-table td::before { color: var(--text-muted); font-size: 0.72rem; font-weight: 700; }
  .dash-table td:nth-child(1)::before { content: 'CDK 码'; }
  .dash-table td:nth-child(2)::before { content: '产品'; }
  .dash-table td:nth-child(3)::before { content: '状态'; }
  .dash-table td:nth-child(4)::before { content: '提货时间'; }
  .dash-table-foot { flex-wrap: wrap; gap: 6px 12px; }
}

/* Supplier order modal is deliberately compact, so it always uses readable field rows. */
.supplier-summary-cards .dash-card {
  min-height: 88px;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 12px;
  padding: 16px 18px;
}
.supplier-summary-cards .dash-card-label { margin: 0; white-space: nowrap; }
.supplier-summary-cards .dash-card-value { margin: 0; font-size: 1.15rem; white-space: nowrap; }
.supplier-summary-cards .dash-card-meta { margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.supplier-summary-panels {
  grid-template-columns: minmax(0, 1fr) !important;
  align-items: start;
  gap: 18px;
}
.supplier-summary-panels > .dash-card-xl {
  min-height: 0;
  height: auto;
  padding: 20px 22px;
  align-self: start;
}
/* The automatic supplier is a compact horizontal panel, without an empty lower half. */
.supplier-summary-panels > .dash-card-xl:first-child { min-height: 252px; }
.supplier-summary-panels > .dash-card-xl:first-child .dash-card-xl-head { margin-bottom: 14px; }
.supplier-summary-panels > .dash-card-xl:first-child .supplier-info-grid {
  grid-template-columns: 1fr 1fr;
  margin-bottom: 12px;
}
.supplier-summary-panels > .dash-card-xl:first-child .supplier-info-row {
  min-height: 46px;
  padding: 10px 12px;
}
.supplier-summary-panels > .dash-card-xl:first-child .supplier-actions {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 7px;
}
.supplier-summary-panels > .dash-card-xl:first-child .dash-btn {
  justify-content: center;
  white-space: nowrap;
}
/* Keep the manual supplier readable but dense enough to remain a horizontal card. */
.supplier-summary-panels > .dash-card-xl:last-child .supplier-info-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  margin-bottom: 12px;
}
.supplier-summary-panels > .dash-card-xl:last-child .supplier-info-row {
  min-height: 48px;
  padding: 10px 12px;
}
.supplier-summary-panels > .dash-card-xl:last-child .supplier-actions {
  gap: 7px;
}
.supplier-summary-panels > .dash-card-xl:last-child .dash-btn {
  height: 34px;
  padding: 0 12px;
  font-size: .75rem;
}
@media (max-width: 900px) and (min-width: 641px) {
  .automatic-provider-grid { grid-template-columns: 1fr; }
  .supplier-summary-panels { grid-template-columns: minmax(0, 1fr) !important; }
  .supplier-summary-panels > .dash-card-xl { padding: 16px; }
  .supplier-summary-panels > .dash-card-xl:last-child .supplier-info-grid { grid-template-columns: 1fr 1fr; }
  .supplier-summary-panels .dash-card-xl-head { margin-bottom: 14px; }
  .supplier-summary-panels .dash-card-xl-title { font-size: .92rem; }
  .supplier-summary-panels .dash-card-xl-sub { font-size: .7rem; }
  .supplier-summary-panels .supplier-info-grid { font-size: .78rem; }
  .supplier-summary-panels .supplier-actions { gap: 6px; }
  .supplier-summary-panels .dash-btn { padding: 8px 10px; font-size: .72rem; }
}
@media (max-width: 640px) {
  .automatic-provider-grid { grid-template-columns: 1fr; }
  .automatic-provider-card { padding: 15px; }
  .automatic-provider-metrics { grid-template-columns: 1fr 1fr; }
  .supplier-summary-cards .dash-card { align-items: flex-start; flex-direction: column; gap: 6px; }
  .supplier-summary-panels { grid-template-columns: 1fr !important; }
  .supplier-summary-panels > .dash-card-xl:first-child .dash-card-xl-head,
  .supplier-summary-panels > .dash-card-xl:first-child .supplier-info-grid { margin-bottom: 14px; }
  .supplier-summary-panels > .dash-card-xl:first-child .supplier-actions { flex-direction: row; flex-wrap: wrap; }
  .supplier-summary-panels > .dash-card-xl:last-child .supplier-info-grid { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .supplier-drawer-backdrop,
  .supplier-drawer,
  .supplier-advanced summary::before { transition-duration: .01ms; }
}

/* System configuration */
.system-config-shell { display: grid; gap: 18px; }
.system-config-head { margin-bottom: 0; }
.system-status-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.system-status-card {
  min-width: 0;
  padding: 17px 18px;
  border: 1px solid var(--dash-border, #E6E9EF);
  border-radius: 14px;
  background: var(--dash-surface, #FFF);
  box-shadow: var(--dash-shadow-sm);
}
.system-status-card span,
.system-status-card small { display: block; color: var(--dash-text-3, #8F96A3); }
.system-status-card span { font-size: .72rem; font-weight: 700; }
.system-status-card strong {
  display: block;
  margin: 7px 0 4px;
  color: var(--dash-text, #1B1D23);
  font-size: 1.05rem;
  overflow-wrap: anywhere;
}
.system-status-card small { font-size: .7rem; }
.system-status-card.is-ready { border-color: rgba(34, 168, 117, .24); }
.system-status-card.is-warning { border-color: rgba(217, 92, 92, .25); }
.system-config-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(300px, .85fr);
  gap: 18px;
  align-items: start;
}
.system-settings-card { margin: 0; overflow: hidden; }
.system-settings-card .panel-header { min-height: 70px; }
.system-settings-card .panel-body { padding: 22px; }
.system-field-meta {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-top: 7px;
  color: var(--dash-text-3, #8F96A3);
  font-size: .72rem;
  font-variant-numeric: tabular-nums;
}
.system-field-meta .form-hint { margin: 0; }
.custom-recharge-builder { margin-top: 14px; padding: 14px; border: 1px solid var(--border-color, #e2e8f0); border-radius: 12px; background: #f8fafc; }
.custom-recharge-builder__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.custom-recharge-row { display: grid; grid-template-columns: minmax(150px, .9fr) minmax(140px, .9fr) minmax(180px, 1.2fr) auto auto; gap: 8px; align-items: center; padding: 10px 0; border-top: 1px solid #e8edf3; }
.custom-recharge-row:first-child { border-top: 0; }
.custom-recharge-required { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; color: var(--text-secondary, #64748b); font-size: .78rem; }
.custom-recharge-required input { width: 16px; height: 16px; }
@media (max-width: 900px) { .custom-recharge-row { grid-template-columns: 1fr 1fr; } .custom-recharge-row .row-actions { grid-column: 1 / -1; } }
.system-integration-card .panel-body { display: grid; gap: 16px; }
.system-integration-icon {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  color: var(--dash-primary, #4C7DE0);
  background: var(--dash-primary-soft, #EEF3FF);
}
.system-integration-icon svg { width: 25px; height: 25px; }
.system-integration-copy strong { color: var(--dash-text, #1B1D23); font-size: .92rem; }
.system-integration-copy p {
  margin: 6px 0 0;
  color: var(--dash-text-2, #5F6673);
  font-size: .78rem;
  line-height: 1.65;
}
.system-integration-list {
  display: grid;
  gap: 9px;
  margin: 0;
  padding: 14px 16px 14px 34px;
  border-radius: 12px;
  background: var(--dash-surface-2, #F8F9FB);
  color: var(--dash-text-2, #5F6673);
  font-size: .76rem;
  line-height: 1.5;
}
.system-auth-modal-icon {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  margin: 0 auto 16px;
  border-radius: 16px;
  background: var(--dash-primary-soft, #EEF3FF);
  color: var(--dash-primary, #4C7DE0);
  font-size: 1.5rem;
}
.system-config-shell .form-input:focus-visible,
.system-config-shell .form-textarea:focus-visible,
.system-config-shell .btn:focus-visible {
  outline: 3px solid rgba(76, 125, 224, .28);
  outline-offset: 2px;
}
@media (max-width: 900px) {
  .system-config-layout { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .system-config-head { align-items: stretch; }
  .system-config-head .btn { width: 100%; }
  .system-status-grid { grid-template-columns: 1fr; }
  .system-settings-card .panel-body { padding: 17px; }
}

.supplier-orders-table,
:root[data-theme="light"] .supplier-orders-table { overflow: visible; background: transparent; border: 0; box-shadow: none; }
.supplier-orders-table table,
.supplier-orders-table thead,
.supplier-orders-table tbody,
.supplier-orders-table tr,
.supplier-orders-table td { display: block; width: 100%; }
.supplier-orders-table .data-table { min-width: 0; }
.supplier-orders-table thead { display: none; }
.supplier-orders-table .data-table tbody { display: grid; gap: 10px; }
.supplier-orders-table .data-table tr { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; background: var(--bg-card); }
.supplier-orders-tools { margin-bottom: 12px; }
.supplier-orders-tools .form-input { width: 100%; }
.supplier-orders-table .data-table td { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 8px; padding: 7px 10px; white-space: normal; overflow-wrap: anywhere; }
.supplier-orders-table .data-table td::before { color: var(--text-muted); font-size: 0.72rem; font-weight: 700; }
.supplier-orders-table .data-table td:nth-child(1)::before { content: '时间'; }
.supplier-orders-table .data-table td:nth-child(2)::before { content: '商品'; }
.supplier-orders-table .data-table td:nth-child(3)::before { content: '充值 ID'; }
.supplier-orders-table .data-table td:nth-child(4)::before { content: '供应商金额'; }
.supplier-orders-table .data-table td:nth-child(5)::before { content: '状态'; }
.supplier-orders-table .data-table td:nth-child(6)::before { content: '备注'; }

.modal.supplier-orders-modal {
  width: min(960px, calc(100vw - 56px));
  max-width: 960px;
  max-height: min(820px, calc(100vh - 48px));
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.modal.supplier-orders-modal .modal-header,
.modal.supplier-orders-modal .modal-footer { flex: 0 0 auto; }
.modal.supplier-orders-modal .modal-body { min-height: 0; overflow-y: auto; }

/* User management */
.user-manage-shell { width: 100%; }
.user-manage-head { margin-bottom: 6px; }

.admin-account-layout { display: grid; gap: 18px; }
.admin-account-hero { min-height: 164px; padding: 28px 30px; border: 1px solid #e3e7ed; border-radius: 20px; background: linear-gradient(118deg, #171d28 0%, #222b39 72%, #2b3545 100%); color: #fff; display: flex; align-items: center; gap: 20px; box-shadow: 0 16px 34px rgba(15, 23, 42, .12); overflow: hidden; position: relative; }
.admin-account-hero::after { content: ''; position: absolute; width: 220px; height: 220px; right: -54px; top: -88px; border: 38px solid rgba(255,255,255,.035); border-radius: 50%; pointer-events: none; }
.admin-account-avatar { width: 76px; height: 76px; flex: 0 0 76px; border-radius: 22px; display: grid; place-items: center; background: #fff; color: #171d28; font-size: 30px; font-weight: 800; box-shadow: 0 10px 26px rgba(0,0,0,.18); }
.admin-account-identity { min-width: 0; }
.admin-account-kicker { color: #aeb8c7; font-size: 11px; font-weight: 700; letter-spacing: .16em; }
.admin-account-identity h3 { margin: 7px 0 13px; color: #fff; font-size: 27px; line-height: 1.1; }
.admin-account-identity > div { display: flex; align-items: center; gap: 10px; }
.admin-account-role { color: #d8dee8; font-size: 13px; }
.admin-account-hero-meta { margin-left: auto; padding: 13px 18px; border: 1px solid rgba(255,255,255,.12); border-radius: 14px; background: rgba(255,255,255,.06); display: grid; gap: 4px; position: relative; z-index: 1; }
.admin-account-hero-meta span { color: #aeb8c7; font-size: 11px; }
.admin-account-hero-meta strong { color: #fff; font-size: 13px; }
.admin-account-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.admin-account-summary article { min-height: 86px; padding: 18px; border: 1px solid #e3e7ed; border-radius: 16px; background: #fff; display: flex; align-items: center; gap: 13px; }
.admin-account-summary-icon { width: 42px; height: 42px; border-radius: 12px; background: #f2f4f7; color: #333d4d; display: grid; place-items: center; }
.admin-account-summary-icon .nav-svg-icon { width: 19px; height: 19px; }
.admin-account-summary article div { display: grid; gap: 4px; }
.admin-account-summary small { color: var(--text-muted); }
.admin-account-summary strong { color: var(--text); font-size: 15px; }
.admin-account-grid { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); gap: 18px; }
.admin-account-card { margin: 0; overflow: hidden; }
.admin-account-card .panel-body { padding: 22px; }
.admin-permission-cloud { display: flex; flex-wrap: wrap; gap: 9px; }
.admin-permission-cloud > span { min-height: 34px; padding: 7px 11px; border: 1px solid #e2e6ec; border-radius: 10px; background: #f8f9fb; color: #3d4755; display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 600; }
.admin-permission-cloud .nav-svg-icon { width: 14px; height: 14px; color: #758094; }
.admin-permission-cloud > .is-more { color: var(--primary); border-color: rgba(239, 68, 68, .18); background: rgba(239, 68, 68, .05); }
.admin-account-note { margin: 18px 0 0; color: var(--text-muted); font-size: 12px; line-height: 1.7; }
.admin-security-list { display: grid; gap: 0; }
.admin-security-list > div { padding: 15px 0; border-bottom: 1px solid #edf0f3; display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: center; gap: 11px; }
.admin-security-list > div:first-child { padding-top: 0; }
.admin-security-list > div:last-child { padding-bottom: 0; border-bottom: 0; }
.admin-security-list > div > span:nth-child(2) { display: grid; gap: 4px; }
.admin-security-list strong { color: var(--text); font-size: 13px; }
.admin-security-list small { color: var(--text-muted); line-height: 1.5; }
.admin-security-mark { width: 36px; height: 36px; border-radius: 11px; background: #f1f3f6; color: #7b8492; display: grid; place-items: center; }
.admin-security-mark.is-ok { background: #edf8f3; color: #16845b; }
.admin-security-mark .nav-svg-icon { width: 17px; height: 17px; }
.admin-account-advice { padding: 17px 19px; border: 1px solid #e3e7ed; border-radius: 15px; background: #f7f8fa; display: flex; align-items: flex-start; gap: 12px; color: #5f6978; }
.admin-account-advice > .nav-svg-icon { width: 19px; height: 19px; flex: 0 0 auto; margin-top: 2px; }
.admin-account-advice strong { color: #293241; font-size: 13px; }
.admin-account-advice p { margin: 4px 0 0; font-size: 12px; line-height: 1.6; }
.admin-staff-panel { margin: 0; overflow: hidden; }
.admin-staff-panel .dealer-filter-bar { border-top: 1px solid #edf0f3; }
.staff-template-row { margin: 4px 0 18px; display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.staff-template-row > span { color: var(--text-muted); font-size: 12px; margin-right: 2px; }
.staff-permission-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; max-height: 270px; overflow: auto; padding: 3px; }
.staff-permission-grid .checkbox-item { min-height: 42px; margin: 0; border: 1px solid #e1e5eb; border-radius: 10px; background: #fafbfc; }
.staff-permission-grid .checkbox-item:has(input:checked) { border-color: rgba(239, 68, 68, .35); background: rgba(239, 68, 68, .045); color: #b4232f; }
.operations-shell { display: grid; gap: 18px; }
.operations-head { align-items: flex-end; }
.operations-head-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; justify-content: flex-end; }
.operations-range, .operations-toolbar label { display: grid; gap: 6px; color: var(--text-muted); font-size: 12px; font-weight: 650; }
.operations-range .form-select { min-width: 118px; }
.operations-updated { margin-top: -10px; color: var(--text-muted); font-size: 12px; }
.operations-summary { margin: 0; }
.operations-cost-warning { display: flex; align-items: center; gap: 10px; padding: 12px 15px; border: 1px solid #f2d59b; border-radius: 12px; color: #7c4a03; background: #fffaf0; font-size: 12px; }
.operations-cost-warning strong { flex: 0 0 auto; }
.product-cost-input { width: 118px; min-width: 100px; font-variant-numeric: tabular-nums; }
.cost-import-bar { justify-content: space-between; }
.cost-paste-guide { display: grid; gap: 5px; margin-bottom: 14px; padding: 12px 14px; border: 1px solid #cbdaf0; border-radius: 11px; color: #21456f; background: #f4f8fd; }
.cost-paste-guide span { color: #5c6f86; font-size: 12px; }
.cost-paste-input { min-height: 150px; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; white-space: pre; }
.cost-paste-preview { max-height: 310px; overflow: auto; border: 1px solid var(--border); border-radius: 11px; }
.cost-paste-summary { display: flex; gap: 8px; padding: 10px 12px; border-bottom: 1px solid var(--border); background: #fafbfc; }
.cost-paste-list { display: grid; }
.cost-paste-list > div { display: grid; grid-template-columns: 72px minmax(0, 1fr) 100px 90px; gap: 10px; align-items: center; padding: 9px 12px; border-bottom: 1px solid #edf0f3; font-size: 12px; }
.cost-paste-list > div:last-child { border-bottom: 0; }
.cost-paste-list > div.is-error { color: #a61b2b; background: #fff5f6; }
.cost-paste-list b { text-align: right; font-variant-numeric: tabular-nums; }
.cost-paste-list small { color: var(--text-muted); }
@media (max-width: 640px) { .cost-paste-list > div { grid-template-columns: 60px minmax(0, 1fr) 85px; } .cost-paste-list small { grid-column: 2 / -1; } }
.operations-insights { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(280px, .85fr); gap: 18px; }
.operations-insights > .panel { margin: 0; overflow: hidden; }
.operations-segment { display: inline-flex; padding: 3px; border: 1px solid var(--border); border-radius: 10px; background: #f4f6f8; }
.operations-segment button { min-height: 32px; padding: 0 11px; border: 0; border-radius: 7px; color: var(--text-muted); background: transparent; font-size: 12px; font-weight: 700; cursor: pointer; touch-action: manipulation; }
.operations-segment button.is-active { color: #fff; background: #1f2937; box-shadow: 0 2px 6px rgba(15, 23, 42, .15); }
.operations-segment button:focus-visible { outline: 3px solid rgba(37, 99, 235, .22); outline-offset: 2px; }
.operations-trend-bars { height: 225px; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(42px, 1fr); gap: 8px; overflow-x: auto; padding: 8px 2px 0; }
.operations-trend-col { min-width: 0; display: grid; grid-template-rows: 20px minmax(0, 1fr) 20px; gap: 5px; text-align: center; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.operations-trend-col > span { overflow: hidden; color: var(--text); font-size: 10px; white-space: nowrap; text-overflow: ellipsis; }
.operations-trend-col > div { min-height: 0; display: flex; align-items: flex-end; justify-content: center; border-bottom: 1px solid #e5e7eb; }
.operations-trend-col i { display: block; width: min(28px, 70%); min-height: 4px; border-radius: 6px 6px 2px 2px; background: linear-gradient(180deg, #ef5965, #d92d3a); }
.operations-trend-col small { font-size: 10px; white-space: nowrap; }
.operations-ratios { display: grid; gap: 14px; }
.operations-ratio-row { display: grid; gap: 7px; }
.operations-ratio-row > div:first-child { display: flex; justify-content: space-between; gap: 12px; font-size: 12px; }
.operations-ratio-row strong { font-variant-numeric: tabular-nums; }
.operations-ratio-track { height: 7px; overflow: hidden; border-radius: 99px; background: #edf0f3; }
.operations-ratio-track i { display: block; height: 100%; border-radius: inherit; background: #ef5965; }
.operations-owner-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 15px 18px 0; border-top: 1px solid var(--border); }
.operations-owner-head span { color: var(--text); font-size: 12px; font-weight: 750; }
.operations-owner-head small { color: var(--text-muted); font-size: 10px; }
.operations-owner-ratios .operations-ratio-track i { background: #64748b; }
.operations-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.operations-grid > .panel, .operations-section { margin: 0; overflow: hidden; }
.operations-alerts { display: grid; gap: 10px; }
.operations-alerts > div { padding: 13px 14px; border: 1px solid #e5e9ef; border-radius: 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #fafbfc; }
.operations-alerts > div > span { min-width: 0; display: grid; gap: 4px; }
.operations-alerts .btn { flex: 0 0 auto; }
.operations-alerts > div.is-warning { border-color: #f2d59b; background: #fffaf0; }
.operations-alerts > div.is-danger { border-color: #f2b8bf; background: #fff5f6; }
.operations-alerts > div.is-success { border-color: #b9e3d0; background: #f2fbf7; }
.operations-alerts strong { font-size: 13px; color: var(--text); }
.operations-alerts small { color: var(--text-muted); }
.operations-exception-head { gap: 12px; }
.operations-toolbar { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; padding: 14px 18px; border-bottom: 1px solid var(--border); background: #fafbfc; }
.operations-toolbar .operations-search { flex: 1; min-width: 230px; }
.operations-toolbar .form-select { min-width: 150px; }
.operations-toolbar :is(.form-input, .form-select):focus-visible,
.operations-head-actions :is(.btn, .form-select):focus-visible { outline: 3px solid rgba(37, 99, 235, .22); outline-offset: 2px; }
.operations-audit { max-height: 430px; overflow: auto; display: grid; gap: 0; }
.operations-audit-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) 150px; gap: 10px; padding: 12px 18px; border-bottom: 1px solid var(--border); background: #fafbfc; }
.operations-audit-toolbar label { display: grid; gap: 5px; color: var(--text-muted); font-size: 11px; font-weight: 650; }
.operations-audit-toolbar :is(.form-input, .form-select):focus-visible { outline: 3px solid rgba(37, 99, 235, .22); outline-offset: 2px; }
.operations-audit > div { padding: 12px 0; border-bottom: 1px solid #edf0f3; display: flex; justify-content: space-between; gap: 14px; }
.operations-audit > div:last-child { border-bottom: 0; }
.operations-audit span { display: grid; gap: 3px; min-width: 0; }
.operations-audit strong { font-size: 12px; color: var(--text); overflow-wrap: anywhere; }
.operations-audit small, .operations-audit time { color: var(--text-muted); font-size: 11px; }
.operations-audit time { white-space: nowrap; }
.operations-summary .stat-value, .operations-section .money-cell { font-variant-numeric: tabular-nums; }
@media (max-width: 900px) {
  .operations-grid { grid-template-columns: 1fr; }
  .operations-insights { grid-template-columns: 1fr; }
  .operations-head { align-items: stretch; }
  .operations-head-actions { justify-content: stretch; }
  .operations-range { flex: 1 1 100%; }
  .operations-range .form-select, .operations-head-actions .btn { width: 100%; }
  .operations-audit-toolbar { grid-template-columns: 1fr; }
  .operations-alerts > div { align-items: flex-start; }
}

@media (max-width: 900px) {
  .admin-account-grid { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .admin-account-hero { padding: 22px; align-items: flex-start; flex-wrap: wrap; }
  .admin-account-avatar { width: 60px; height: 60px; flex-basis: 60px; border-radius: 18px; font-size: 24px; }
  .admin-account-hero-meta { width: 100%; margin-left: 0; }
  .admin-account-summary { grid-template-columns: 1fr; }
  .admin-security-list > div { grid-template-columns: 38px minmax(0, 1fr); }
  .admin-security-list > div > .badge { grid-column: 2; justify-self: start; }
  .staff-permission-grid { grid-template-columns: 1fr; }
}
.user-manage-tabs { margin-bottom: 20px; }
.user-summary-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.user-summary-grid .stat-card { min-width: 0; }
.user-summary-grid .stat-icon svg { width: 22px; height: 22px; }
.user-list-panel .panel-header > div { display: grid; gap: 4px; }
.user-filter-bar .product-result-count { margin-left: auto; white-space: nowrap; }
.customer-cell { display: flex; align-items: center; gap: 10px; min-width: 170px; }
.customer-cell > span:last-child { min-width: 0; }
.customer-cell strong,
.customer-cell small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.customer-cell small { margin-top: 3px; color: var(--text-muted); font-size: .72rem; }
.customer-avatar {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  border-radius: 8px;
  background: var(--teal-glow);
  border: 1px solid rgba(43, 108, 176, .18);
  color: var(--teal);
  font-weight: 800;
}
.user-table .row-actions { min-width: 285px; }
.modal.modal-wide { max-width: min(920px, calc(100vw - 40px)); }
.user-detail-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; overflow: hidden; border: 1px solid var(--border); border-radius: 10px; background: var(--border); }
.user-detail-grid > div { min-width: 0; padding: 14px 16px; background: var(--bg-card); }
.user-detail-grid span,
.user-detail-grid strong { display: block; }
.user-detail-grid span { margin-bottom: 5px; color: var(--text-muted); font-size: .72rem; }
.user-detail-grid strong { overflow-wrap: anywhere; font-size: .86rem; }
.user-detail-title { margin: 22px 0 10px; font-size: .88rem; }
.user-audit-list { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.user-audit-list > div { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 11px 14px; border-bottom: 1px solid var(--border); }
.user-audit-list > div:last-child { border-bottom: 0; }
.user-audit-list span { font-weight: 650; font-size: .8rem; }
.user-audit-list small { color: var(--text-muted); text-align: right; }
.user-modal-note { margin: 0 0 18px; }

/* Store carousel management */
.carousel-admin-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 18px;
}
.carousel-admin-head h2 { margin: 5px 0 4px; font-size: 1.45rem; }
.carousel-admin-head p { margin: 0; color: var(--text-muted); font-size: .82rem; }
.carousel-admin-head__actions { display: flex; gap: 10px; flex-wrap: wrap; }
.carousel-admin-summary {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-bottom: 14px;
  padding: 12px 16px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg-card);
  color: var(--text-muted);
  font-size: .78rem;
}
.carousel-admin-summary strong { color: var(--text); font-size: .92rem; }
.carousel-admin-tabs {
  display: inline-flex;
  gap: 4px;
  margin-bottom: 14px;
  padding: 4px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg-card);
}
.carousel-admin-tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 0 14px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: .78rem;
  font-weight: 650;
  cursor: pointer;
}
.carousel-admin-tab span { color: var(--text-dim); font-size: .7rem; }
.carousel-admin-tab.is-active { background: var(--bg-muted); color: var(--text); }
.carousel-admin-list { display: grid; gap: 12px; }
.carousel-admin-item {
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr) auto;
  align-items: center;
  gap: 18px;
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg-card);
  box-shadow: 0 8px 24px rgba(15, 23, 42, .04);
}
.carousel-admin-item.is-disabled { opacity: .68; }
.carousel-admin-preview {
  position: relative;
  width: 100%;
  aspect-ratio: 20 / 9;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: 10px;
  background: #18202b;
  color: #fff;
}
.carousel-admin-preview.is-compact { width: 210px; }
.carousel-admin-preview.is-promo { aspect-ratio: 12 / 4.8; }
.carousel-admin-preview img { width: 100%; height: 100%; object-fit: cover; display: block; }
.carousel-admin-preview--system { align-content: center; gap: 7px; }
.carousel-admin-preview--system img { width: 58px; height: 34px; object-fit: contain; filter: brightness(0) invert(1); }
.carousel-admin-preview--system strong { font-size: .62rem; letter-spacing: .12em; }
.carousel-admin-preview__empty { color: rgba(255,255,255,.7); font-size: .76rem; }
.carousel-admin-item__content { min-width: 0; }
.carousel-admin-item__title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.carousel-admin-item__title > strong { font-size: .92rem; }
.carousel-admin-item__content > p { margin: 5px 0 9px; color: var(--text-muted); font-size: .75rem; }
.carousel-admin-item__meta { display: flex; gap: 12px 18px; flex-wrap: wrap; color: var(--text-dim); font-size: .72rem; }
.carousel-admin-item__meta .mono { max-width: 280px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.carousel-admin-item__actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.modal.carousel-editor-modal { width: min(820px, calc(100vw - 40px)); max-width: 820px; }
.carousel-editor-modal .carousel-admin-preview { max-width: 620px; margin: 0 auto 22px; }
.carousel-editor-grid { gap: 16px 18px; }
.carousel-upload-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.carousel-upload-control {
  display: grid;
  gap: 6px;
  padding: 14px;
  border: 1px dashed var(--border-bright);
  border-radius: 10px;
  background: var(--bg-elevated);
  cursor: pointer;
}
.carousel-upload-control:hover { border-color: var(--teal); background: var(--teal-glow); }
.carousel-upload-control span { color: var(--text); font-size: .82rem; font-weight: 700; }
.carousel-upload-control span strong { color: var(--error); }
.carousel-upload-control small { color: var(--text-muted); font-size: .7rem; line-height: 1.5; }
.carousel-upload-control input { width: 100%; color: var(--text-dim); font-size: .72rem; }
.carousel-enabled-row { display: flex; align-items: center; gap: 9px; color: var(--text-dim); font-size: .82rem; cursor: pointer; }
.carousel-enabled-row input { width: 17px; height: 17px; accent-color: var(--teal); }

@media (max-width: 900px) {
  .carousel-admin-item { grid-template-columns: 160px minmax(0, 1fr); }
  .carousel-admin-preview.is-compact { width: 160px; }
  .carousel-admin-item__actions { grid-column: 1 / -1; justify-content: flex-start; }
}
@media (max-width: 640px) {
  .carousel-admin-head { align-items: flex-start; flex-direction: column; }
  .carousel-admin-summary { align-items: flex-start; flex-direction: column; gap: 6px; }
  .carousel-admin-item { grid-template-columns: 1fr; }
  .carousel-admin-preview.is-compact { width: 100%; }
  .carousel-upload-grid, .carousel-editor-grid { grid-template-columns: 1fr; }
  .carousel-editor-grid .full { grid-column: auto; }
}

@media (max-width: 1100px) {
  .user-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .user-table .row-actions { min-width: 0; }
}

@media (max-width: 680px) {
  .user-summary-grid { grid-template-columns: 1fr; }
  .user-detail-grid { grid-template-columns: 1fr; }
  .user-audit-list > div { align-items: flex-start; flex-direction: column; gap: 4px; }
  .user-audit-list small { text-align: left; }
  .modal.modal-wide { max-width: calc(100vw - 20px); }
}
@media (min-width: 720px) {
  .supplier-orders-table { overflow-x: auto; }
  .responsive-table.supplier-orders-table .data-table { display: table !important; width: 100%; min-width: 0; table-layout: fixed; border-collapse: collapse; }
  .responsive-table.supplier-orders-table .data-table thead { display: table-header-group !important; }
  .responsive-table.supplier-orders-table .data-table tbody { display: table-row-group !important; }
  .responsive-table.supplier-orders-table .data-table tr { display: table-row !important; width: auto; border: 0; border-radius: 0; background: transparent; }
  .supplier-orders-table th,
  .responsive-table.supplier-orders-table .data-table td { display: table-cell !important; width: auto !important; padding: 9px 10px; border-bottom: 1px solid var(--border); vertical-align: middle; }
  .supplier-orders-table th { color: var(--text-muted); font-size: 0.72rem; font-weight: 700; text-align: left; white-space: nowrap; }
  .supplier-orders-table td { font-size: 0.8rem; white-space: nowrap; }
  .supplier-orders-table td:last-child { max-width: 250px; overflow: hidden; text-overflow: ellipsis; }
  .responsive-table.supplier-orders-table .data-table td::before { display: none !important; }
  .supplier-orders-table th:nth-child(1), .supplier-orders-table td:nth-child(1) { width: 19%; }
  .supplier-orders-table th:nth-child(2), .supplier-orders-table td:nth-child(2) { width: 22%; }
  .supplier-orders-table th:nth-child(3), .supplier-orders-table td:nth-child(3) { width: 19%; }
  .supplier-orders-table th:nth-child(4), .supplier-orders-table td:nth-child(4) { width: 15%; }
  .supplier-orders-table th:nth-child(5), .supplier-orders-table td:nth-child(5) { width: 12%; }
  .supplier-orders-table th:nth-child(6), .supplier-orders-table td:nth-child(6) { width: 13%; }
}
@media (max-width: 640px) {
  .modal.supplier-orders-modal { width: calc(100vw - 20px); max-height: calc(100vh - 20px); }
}

@media (max-width: 640px) {
  .form-row { grid-template-columns: 1fr; }
  .laa-act-row { flex-direction: column; align-items: flex-start; }
}

/* Game management */
.game-manage-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 16px;
}
.game-manage-head h2 { margin: 5px 0 4px; font-size: 1.45rem; }
.game-manage-head p { margin: 0; color: var(--text-muted); font-size: .82rem; }
.game-manage-stats {
  display: flex;
  align-items: center;
  gap: 24px;
  margin-bottom: 14px;
  padding: 11px 16px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--bg-card);
  color: var(--text-muted);
  font-size: .78rem;
}
.game-manage-stats strong { color: var(--text); font-size: .94rem; }
.game-manage-panel { overflow: hidden; }
.game-manage-toolbar { gap: 16px; }
.game-manage-search { width: min(360px, 50vw); margin-left: auto; }
.game-manage-table { min-width: 980px; }
.game-manage-table th,
.game-manage-table td { vertical-align: middle; }
.game-identity { display: flex; align-items: center; gap: 11px; min-width: 190px; }
.game-identity > div { min-width: 0; }
.game-identity strong,
.game-identity small { display: block; }
.game-identity strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.game-identity small,
.table-subline { margin-top: 3px; color: var(--text-muted); font-size: .69rem; }
.game-logo {
  display: block;
  flex: 0 0 auto;
  object-fit: contain;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
}
.game-logo--md { width: 42px; height: 42px; }
.game-logo--sm { width: 30px; height: 30px; }
.game-logo--lg { width: 52px; height: 52px; }
.game-category-card__logo { height: 60px; display: flex; align-items: center; margin-bottom: 8px; }
.game-logo--fallback {
  display: grid;
  place-items: center;
  background: var(--game-color, #111827);
  color: #fff;
  font-size: .72rem;
  font-weight: 800;
}
.empty-cell { padding: 38px 20px !important; color: var(--text-muted); text-align: center; }
.modal.game-editor-modal { width: min(900px, calc(100vw - 40px)); max-width: 900px; }
.game-editor-tabs {
  display: flex;
  gap: 4px;
  margin: -4px 0 22px;
  padding-bottom: 1px;
  border-bottom: 1px solid var(--border);
}
.game-editor-tab {
  position: relative;
  padding: 10px 16px;
  border: 0;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: .8rem;
  font-weight: 700;
  cursor: pointer;
}
.game-editor-tab::after {
  content: '';
  position: absolute;
  right: 14px;
  bottom: -2px;
  left: 14px;
  height: 2px;
  background: transparent;
}
.game-editor-tab:hover,
.game-editor-tab.active { color: var(--text); }
.game-editor-tab.active::after { background: var(--teal); }
.game-editor-section { display: none; }
.game-editor-section.active { display: block; }
.game-editor .form-grid.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 18px; }
.game-editor .form-group.full { grid-column: 1 / -1; }
.game-switch-row {
  display: flex;
  gap: 26px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}
.game-switch-row label { display: flex; align-items: center; gap: 8px; color: var(--text-dim); font-size: .8rem; cursor: pointer; }
.game-switch-row input { width: 17px; height: 17px; accent-color: var(--teal); }
.game-assets-grid { display: grid; grid-template-columns: 1fr 1.35fr; gap: 18px; margin-bottom: 20px; }
.game-asset-field { min-width: 0; }
.game-asset-preview {
  display: grid;
  place-items: center;
  width: 100%;
  margin: 7px 0 10px;
  overflow: hidden;
  border: 1px dashed var(--border-bright);
  border-radius: 8px;
  background: var(--bg-elevated);
  color: var(--text-muted);
  font-size: .78rem;
}
.game-asset-preview--logo { aspect-ratio: 1; max-width: 210px; }
.game-asset-preview--cover { aspect-ratio: 16 / 9; }
.game-asset-preview img { width: 100%; height: 100%; display: block; object-fit: contain; background: #fff; }
.game-asset-preview--cover img { object-fit: cover; }
.game-file-button { position: relative; overflow: hidden; }
.game-file-button input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.game-file-button.is-loading { opacity: .6; pointer-events: none; }
.game-asset-field > small { display: block; margin-top: 7px; color: var(--text-muted); font-size: .68rem; line-height: 1.5; }
.game-color-input { min-height: 46px; padding: 5px; cursor: pointer; }

@media (max-width: 760px) {
  .game-manage-head { align-items: flex-start; flex-direction: column; }
  .game-manage-head .btn { width: 100%; }
  .game-manage-stats { align-items: flex-start; flex-direction: column; gap: 6px; }
  .game-manage-toolbar { align-items: stretch; flex-direction: column; }
  .game-manage-search { width: 100%; margin-left: 0; }
  .modal.game-editor-modal { width: calc(100vw - 20px); }
  .game-editor-tabs { overflow-x: auto; }
  .game-editor-tab { flex: 0 0 auto; }
  .game-editor .form-grid.two-col,
  .game-assets-grid { grid-template-columns: 1fr; }
  .game-editor .form-group.full { grid-column: auto; }
  .game-asset-preview--logo { max-width: 180px; }
  .game-switch-row { align-items: flex-start; flex-direction: column; gap: 10px; }
}

/* ===== 淘宝式 SKU 批量弹窗 ===== */
.modal.sku-editor-modal { width: min(920px, calc(100vw - 40px)); max-width: 920px; }
.sku-editor-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 14px;
  margin-bottom: 16px;
}
.sku-editor-title { font-weight: 700; font-size: 0.98rem; }
.sku-editor-sub { margin-top: 4px; font-size: 0.76rem; color: var(--text-muted); line-height: 1.5; }
.sku-editor-game {
  flex: 0 0 auto;
  padding: 6px 12px;
  border-radius: 999px;
  background: var(--bg-muted);
  color: var(--text);
  font-size: 0.78rem;
  font-weight: 700;
}
.sku-table-wrap { overflow-x: auto; margin-bottom: 12px; }
.sku-editor-table th { white-space: nowrap; }
.sku-editor-table td { vertical-align: middle; }
.sku-editor-table .form-input { width: 100%; min-width: 76px; }
.sku-editor-table select.form-input { padding-top: 7px; padding-bottom: 7px; }
.sku-icon-control { display: flex; align-items: center; gap: 6px; min-width: 150px; }
.sku-icon-preview { display: grid; place-items: center; width: 42px; height: 42px; flex: 0 0 42px; overflow: hidden; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-muted); color: var(--text); font-size: 0.72rem; font-weight: 700; }
.sku-icon-preview img { display: block; width: 100%; height: 100%; object-fit: contain; }
.sku-icon-upload { white-space: nowrap; }
/* 淘宝式：价格/数量输入框 + 固定后缀（元/件） */
.sku-money { display: flex; align-items: center; gap: 6px; }
.sku-money .form-input { flex: 1; min-width: 64px; }
.sku-suffix { flex: 0 0 auto; color: var(--text-muted); font-size: 0.8rem; font-weight: 600; }
.sku-editor-actions {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding-top: 6px;
}
@media (max-width: 640px) {
  .modal.sku-editor-modal { width: calc(100vw - 16px); }
  .sku-editor-head { flex-direction: column; }
}

@media (max-width: 760px) {
  .password-toggle {
    width: 40px;
    height: 40px;
  }

  .login-card a,
  .redeem-logo {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
  }
}
