/* UMV 全局样式 umv.css（合并版，去 @import 串行阻塞，浏览器一次下载全部CSS首屏快3倍）*/

/* tokens */
/* ═══════════════════════════════════════════════════════════
   UMV · 全局设计令牌 tokens.css
   参考：search.moesr.com（Apple 系统风）
   作用：全站（Likes/SMS/AIHUB/中台）共享的视觉地基。
   规范：所有站禁写裸色值，一律引用本文件的变量。
   默认浅色 + 深色自动适配（prefers-color-scheme）。
   ═══════════════════════════════════════════════════════════ */

:root {
  /* ── 主色系（AIHUB 黑白灰基准）── */
  --primary:         #111827;   /* 主黑：标题、主按钮、激活态 */
  --primary-hover:   #1F2937;   /* 黑2：按钮 hover */
  --primary-dark:    #0d131f;
  --primary-light:   #f5f5f7;
  --accent:          #374151;   /* 强调：聚焦边框/图标（灰6） */
  /* ── 辅助色（全局收敛，仅此 6 色 + 黑白灰）── */
  --purple:          #b27ffe;   /* 紫：待受理 */
  --cyan:            #19C2C9;   /* 青：已收单/处理中 */
  --info:            #0051ff;   /* 蓝：已完成 */
  --success:         #46C95F;   /* 绿：已支付/成功 */
  --danger:          #E84A68;   /* 红：已退款/失败 */
  --warning:         #b27ffe;   /* 紫：等待/提醒（收敛为紫） */

  /* ── 文字三级（黑白灰）── */
  --text-primary:    #111827;
  --text-secondary:  #374151;
  --text-tertiary:   #9CA3AF;
  --text-on-primary: #ffffff;

  /* ── 背景与卡片（黑白灰）── */
  --bg-page:         #F6F7FB;
  --bg-surface:      rgba(255,255,255,.72);
  --bg-surface-solid:#FFFFFF;
  --bg-muted:        #FAFAFB;
  --bg-strong:       #F1F2F6;

  /* ── 边框 / 分割线（黑白灰）── */
  --border:          #E5E7EB;
  --border-hover:    #D1D5DB;
  --border-strong:   #D1D5DB;
  --separator:       #F3F4F6;

  /* ── 阴影（分层）── */
  --shadow-sm: 0 4px 20px rgba(17,24,39,.02), 0 1px 2px rgba(17,24,39,.03);
  --shadow-md: 0 12px 30px rgba(17,24,39,.06), 0 2px 4px rgba(17,24,39,.02);
  --shadow-lg: 0 24px 50px rgba(17,24,39,.1), 0 1px 3px rgba(17,24,39,.02);

  /* ── 圆角（统一 10px）── */
  --radius-sm: 10px;
  --radius-md: 10px;
  --radius-lg: 10px;
  --radius-xl: 10px;

  /* ── 间距（4 基）── */
  --space-1: 4px;  --space-2: 8px;  --space-3: 12px;
  --space-4: 16px; --space-5: 20px; --space-6: 24px;
  --space-8: 32px; --space-10: 40px;

  /* ── 字号阶梯 ── */
  --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro SC", "PingFang SC",
               "Helvetica Neue", "Microsoft YaHei", sans-serif;
  --font-mono: "SF Mono", ui-monospace, "Cascadia Code", Menlo, monospace;
  --text-xs: 12px;  --text-sm: 13px; --text-base: 14px;
  --text-lg: 16px;  --text-xl: 20px; --text-2xl: 24px;

  /* ── 布局（Apple 导航）── */
  --nav-h: 56px;                 /* 顶部悬浮胶囊高 */
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --container: 1200px;           /* 内容最大宽（对齐 AIHUB 1200） */
  --bottom-nav: 68px;            /* 移动底部胶囊高 */

  /* ── 过渡 ── */
  --transition: .2s ease;
}

/* ── 深色：跟随系统（AIHUB 深色基准 #1A1B1E）── */
@media (prefers-color-scheme: dark) {
  :root {
    --bg-page:         #1A1B1E;
    --bg-surface:      rgba(37,38,43,.8);
    --bg-surface-solid:#25262B;
    --bg-muted:        #2C2E33;
    --bg-strong:       #373A40;

    --text-primary:    #C1C2C5;
    --text-secondary:  #B8BFC8;
    --text-tertiary:   #8890A0;

    --border:          #373A40;
    --border-hover:    #555A66;
    --border-strong:   #555A66;
    --separator:       #2C2E33;

    --shadow-sm: 0 4px 20px rgba(0,0,0,.4), 0 1px 2px rgba(0,0,0,.5);
    --shadow-md: 0 12px 30px rgba(0,0,0,.5), 0 2px 4px rgba(0,0,0,.4);
    --shadow-lg: 0 24px 50px rgba(0,0,0,.6), 0 1px 3px rgba(0,0,0,.5);
  }
}


/* layout */
/* ═══════════════════════════════════════════════════════════
   UMV · 全局布局框架 layout.css
   复刻 search.moesr.com 的 Apple 单页工具站布局：
   - 顶部悬浮胶囊导航（fixed，距顶14px，磨砂玻璃）
   - 移动端悬浮胶囊底部导航（≤768px）
   - 英雄区（渐变标题）
   - 功能卡片网格（分类平台入口）
   - 响应式断点：769 桌面 / 768 移动 / 560-640 小屏
   ═══════════════════════════════════════════════════════════ */

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

html { -webkit-text-size-adjust: 100%; }

body {
  font-family: var(--font-sans);
  font-size: var(--text-base);
  line-height: 1.6;
  color: var(--text-primary);
  background: var(--bg-page);
  -webkit-font-smoothing: antialiased;
  transition: background var(--transition), color var(--transition);
}

a { color: var(--primary); text-decoration: none; }

/* ── 内容容器 ── */
.container {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.main-content {
  min-height: 100vh;
  padding: 96px 0 48px;
}
/* 首页内容少：sticky footer——内容不足一屏时 footer 贴视口底部，超出时正常滚动 */
body[data-site="platform"] {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
body[data-site="platform"] .main-content {
  flex: 1 0 auto;
  min-height: auto;
  padding-top: 114px;        /* 首页导航底(84px) → 卡片顶 114px，间距 30px */
  padding-bottom: 40px;
}
@media (max-width: 768px) {
  .main-content { padding-top: 86px; padding-bottom: 20px; }
}

/* ═══════════════ 顶部悬浮胶囊导航 ═══════════════ */
.nav-header {
  position: fixed;
  inset: 14px 0 auto 0;
  z-index: 1000;
}
.nav-container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  max-width: calc(var(--container) - 48px);
  width: calc(100% - 48px);
  margin: 0 auto;
  padding: 10px 22px;
  min-height: 70px;          /* 导航栏高度 70px */
  box-sizing: border-box;
  background: var(--bg-surface);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  backdrop-filter: saturate(180%) blur(20px);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
}
.nav-logo a {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--text-primary);
}
/* AIHUB 呼吸感 logo：深黑圆 + 白色呼吸圆环 */
.brand-mark {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  box-shadow: 0 2px 8px rgba(17,24,39,.18);
  overflow: hidden;
}
.brand-mark svg circle {
  animation: brand-breathe 2.8s ease-in-out infinite;
  transform-origin: center;
}
@keyframes brand-breathe {
  0%, 100% { transform: scale(1); opacity: .6; }
  50%      { transform: scale(1.11); opacity: 1; }
}
.brand-copy {
  display: flex;
  flex-direction: column;
  line-height: 1.2;
}
.brand-copy strong { font-size: 22px; font-weight: 600; }
.brand-copy small { font-size: var(--text-xs); color: var(--text-secondary); }

.nav-menu {
  display: flex;
  align-items: center;
  gap: 4px;
  list-style: none;
}
.nav-menu li a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: var(--radius-sm);   /* 矩形圆角，跟随全局（10px） */
  font-size: var(--text-sm);
  font-weight: 600;
  color: var(--text-secondary);
  transition: all var(--transition);
}
.nav-menu li a:hover {
  color: var(--primary);
  background: var(--bg-strong);
}
.nav-menu li a.active {
  color: #fff;
  background: var(--primary);
  font-weight: 600;
}
.nav-menu li a .fa { font-size: 14px; }

/* ═══════════════ 用户下拉菜单 ═══════════════ */
.user-menu { position: relative; }
.user-menu .trigger {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 14px;
  border-radius: var(--radius-sm);
  font-size: var(--text-base);
  font-weight: 600;
  color: var(--info);
  cursor: pointer;
  user-select: none;
  transition: all var(--transition);
  white-space: nowrap;
}
.user-menu .trigger:hover { color: var(--info); background: var(--bg-strong); }
.user-menu .trigger .fa-caret-down { font-size: 10px; color: var(--info); }
.user-menu .dropdown {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  min-width: 190px;
  padding: 6px;
  background: var(--bg-surface-solid);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  display: none;
  z-index: 1200;
}
.user-menu.open .dropdown { display: block; }
.user-menu .dropdown a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: 13px;
  font-weight: 500;
}
.user-menu .dropdown a:hover { background: var(--bg-muted); color: var(--text-primary); }
.user-menu .dropdown a .fa { width: 16px; text-align: center; color: var(--text-tertiary); }
.user-menu .dropdown a:hover .fa { color: var(--primary); }
.user-menu .dropdown .sep { height: 1px; background: var(--separator); margin: 6px 4px; }
.user-menu .wallet-tip { display:flex; align-items:center; gap:10px; padding: 8px 12px 6px; font-size: 12px; color: var(--text-tertiary); }
.user-menu .wallet-tip-ic { width:16px; text-align:center; color: var(--text-tertiary); }
.user-menu .wallet-tip b { color: var(--text-primary); font-size: 14px; font-weight: 800; }

@media (max-width: 768px) {
  .nav-container { border-radius: var(--radius-lg); padding: 8px 14px; width: calc(100% - 32px); max-width: calc(var(--container) - 32px); }
  /* 移动端隐藏顶部子站导航项（子站入口交给底部胶囊导航），保留品牌 logo 与用户区 */
  .nav-menu > li:not([data-umv-user-slot]) { display: none; }
}

/* ═══════════════ 移动端底部胶囊导航 ═══════════════ */
.bottom-nav {
  display: none;
  position: fixed;
  inset: auto var(--space-4) var(--space-4) var(--space-4);
  z-index: 1000;
  padding-bottom: var(--safe-bottom);
}
.bottom-nav-container {
  display: flex;
  gap: 4px;
  padding: 6px;
  background: var(--bg-surface-solid);
  border: 1px solid var(--border);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-md);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  backdrop-filter: saturate(180%) blur(20px);
}
.bottom-nav-item {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 8px 4px;
  border-radius: var(--radius-lg);
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: 700;
  transition: all var(--transition);
}
.bottom-nav-item .fa { font-size: 14px; }
.bottom-nav-item.active {
  color: #fff;
  background: #000;
  font-weight: 700;
}
@media (max-width: 768px) {
  .bottom-nav { display: block; }
  body { padding-bottom: calc(var(--bottom-nav) + var(--safe-bottom)); }
}

/* ═══════════════ 英雄区（全局居中）═══════════════ */
.hero-section {
  position: relative;
  padding: 24px 0 40px;
  text-align: center;
}
.hero-title, .hero-subtitle {
  margin-left: auto;
  margin-right: auto;
}
.hero-title {
  max-width: 920px;
  font-size: 24px;
  line-height: 1.2;
  letter-spacing: -.02em;
  font-weight: 700;
  color: var(--text-primary);
}
.hero-subtitle {
  max-width: 760px;
  margin-top: 10px;
  color: var(--text-secondary);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.8;
  white-space: pre-line;  /* 支持换行（副标题/简介可多行） */
}
/* 移动端：子站标题/副标题左对齐（电脑端保持居中） */
@media (max-width: 768px) {
  .hero-section { text-align: left; }
  .hero-title, .hero-subtitle { margin-left: 0; margin-right: 0; }
}

/* ═══════════════ 功能卡片网格 ═══════════════ */
.feature-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  margin-bottom: 32px;
}
.feature-card {
  position: relative;
  display: block;
  padding: 28px 24px;
  background: var(--bg-surface);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  color: var(--text-primary);
  cursor: pointer;
  transition: transform var(--transition), box-shadow var(--transition),
              border-color var(--transition);
}
/* 渐变描边（参考 moesr 的质感） */
.feature-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius-lg);
  padding: 1px;
  background: linear-gradient(135deg, rgba(255,255,255,.4), rgba(255,255,255,.1));
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
}
.feature-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--primary);   /* 悬停边框变黑 */
}
.feature-title {
  margin-bottom: 8px;
  font-size: 17px;
  font-weight: 650;
  color: var(--text-primary);
  display: flex;
  align-items: center;
  gap: 8px;
}
.feature-title .fa { font-size: 20px; }
.feature-desc { font-size: 13px; font-weight: 600; color: var(--text-secondary); line-height: 1.8; }
@media (max-width: 768px) {
  .feature-grid { grid-template-columns: 1fr; gap: 14px; }
}

/* ═══════════════ 页脚 ═══════════════ */
.page-footer {
  text-align: center;
  padding: var(--space-8) var(--space-5);
  color: var(--text-tertiary);
  font-size: 10px;          /* 页脚字号 */
  font-weight: 500;
  line-height: 15px;        /* 行距 */
  white-space: pre-wrap;    /* 保留多个连续空格（后台输入几个空格就显示几个） */
  border-top: 1px solid var(--separator);
}
.page-footer p + p { margin-top: 4px; }
.page-footer a { color: var(--text-secondary); }

/* ═══════════════ 通用区块标题 ═══════════════ */
.section-title {
  font-size: var(--text-xl);
  font-weight: 600;
  margin: var(--space-6) 0 var(--space-4);
  color: var(--text-primary);
}


/* components */
/* ═══════════════════════════════════════════════════════════
   UMV · 全局组件库 components.css
   通用组件：按钮 / 卡片 / 表单 / 表格 / 标签 / 弹窗 / Toast / 空态
   前后台通用，引用 tokens.css 变量。
   ═══════════════════════════════════════════════════════════ */

/* ── 按钮 ── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 18px;
  border: none;
  border-radius: 999px;
  font-size: var(--text-sm);
  font-weight: 500;
  font-family: var(--font-sans);
  cursor: pointer;
  background: var(--bg-strong);
  color: var(--text-primary);
  transition: all var(--transition);
  text-decoration: none;
  white-space: nowrap;
}
.btn:hover { filter: brightness(.96); }
.btn:active { transform: scale(.98); }
.btn:disabled { opacity: .5; cursor: not-allowed; }

.btn-primary { background: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-hover); }

.btn-ghost {
  background: var(--bg-surface-solid);
  color: var(--primary);
  border: 1px solid var(--border);
}
.btn-ghost:hover { border-color: var(--primary); filter: none; }

.btn-danger { background: var(--danger); color: #fff; }
.btn-success { background: var(--success); color: #fff; }

.btn-sm { padding: 6px 12px; font-size: var(--text-xs); }
.btn-lg { padding: 12px 24px; font-size: var(--text-base); }
.btn-block { width: 100%; }

/* ── 卡片 ── */
.card {
  background: var(--bg-surface);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  padding: var(--space-5);
}
.card-hover { transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition); }
.card-hover:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); border-color: var(--border-hover); }

/* ── 表单 ── */
.form-group { margin-bottom: var(--space-4); }
.form-label {
  display: block;
  font-size: var(--text-xs);
  font-weight: 500;
  color: var(--text-secondary);
  margin-bottom: 6px;
}
.form-input, .form-select, .form-textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  font-size: var(--text-base);
  font-family: var(--font-sans);
  color: var(--text-primary);
  background: var(--bg-surface-solid);
  transition: all var(--transition);
  outline: none;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  border-color: var(--primary);
}
.form-input::placeholder { color: var(--text-tertiary); }
.form-hint { font-size: var(--text-xs); color: var(--text-tertiary); margin-top: 4px; }
.form-error { font-size: var(--text-xs); color: var(--danger); margin-top: 4px; }

/* ── 表格 ── */
.table-wrap { overflow-x: auto; }
.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--text-sm);
}
.data-table th, .data-table td {
  padding: 12px 14px;
  text-align: left;
  border-bottom: 1px solid var(--separator);
  white-space: nowrap;
}
.data-table th {
  font-weight: 500;
  color: var(--text-secondary);
  background: var(--bg-muted);
}
.data-table tr:hover td { background: var(--bg-muted); }
.data-table .empty-cell { text-align: center; color: var(--text-tertiary); padding: 40px; }

/* ── 标签 / 状态 ── */
.badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  border-radius: var(--radius-md);
  font-size: var(--text-xs);
  font-weight: 500;
}
.badge-primary { background: var(--accent); color: var(--primary); }
.badge-success { background: rgba(52,199,89,.15); color: var(--success); }
.badge-danger  { background: rgba(255,59,48,.12); color: var(--danger); }
.badge-warning { background: rgba(255,149,0,.15); color: var(--warning); }
.badge-muted   { background: var(--bg-strong); color: var(--text-secondary); }

/* ── 弹窗 ── */
.modal-mask {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.4);
  z-index: 1300;
  display: none;
  align-items: center;
  justify-content: center;
  padding: var(--space-5);
}
.modal-mask.show { display: flex; }
.modal-box {
  background: var(--bg-surface-solid);
  border-radius: var(--radius-lg);
  width: 100%;
  max-width: 420px;
  padding: var(--space-6);
  box-shadow: var(--shadow-lg);
  position: relative;
}
.modal-box h3 { font-size: var(--text-xl); font-weight: 600; margin-bottom: 4px; }
.modal-box .sub { font-size: var(--text-sm); color: var(--text-secondary); margin-bottom: var(--space-5); }
.modal-close {
  position: absolute; top: 14px; right: 16px;
  background: none; border: none;
  font-size: 24px; line-height: 1;
  color: var(--text-tertiary);
  cursor: pointer;
}
.modal-close:hover { color: var(--text-primary); }

/* ── 登录弹窗底部「注册 / 忘记密码」入口（两个操作明确区分，防止误点）── */
.umv-auth-links {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--separator);
}
.umv-auth-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 12px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
  transition: background .15s, color .15s;
}
.umv-auth-link i { font-size: 12px; }
/* 注册：实心强调色 → 主行动入口 */
.umv-link-reg { color: #fff; background: var(--primary); }
.umv-link-reg:hover { filter: brightness(1.15); color: #fff; }
/* 忘记密码：浅底描边 → 次要辅助入口 */
.umv-link-forgot { color: var(--text-secondary); background: var(--bg-muted); border: 1px solid var(--border); }
.umv-link-forgot:hover { color: var(--text-primary); background: var(--bg-input-hover, var(--bg-muted)); }
.umv-auth-sep { width: 1px; height: 14px; background: var(--separator); }
/* 找回密码态只剩「返回登录」单入口，隐藏分隔线 */
.umv-auth-links .umv-auth-sep.is-hidden { display: none; }

/* ── Toast ── */
.toast {
  position: fixed;
  bottom: 90px;
  left: 50%;
  transform: translateX(-50%) translateY(20px);
  background: var(--text-primary);
  color: var(--bg-surface-solid);
  padding: 12px 22px;
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  font-weight: 500;
  opacity: 0;
  pointer-events: none;
  transition: all var(--transition);
  z-index: 1100;
}
.toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ── 空态 ── */
.empty-state {
  text-align: center;
  padding: 60px var(--space-5);
  color: var(--text-tertiary);
}
.empty-state .icon { font-size: 44px; margin-bottom: var(--space-3); opacity: .6; }
.empty-state p + p { margin-top: var(--space-2); }
.empty-state a { color: var(--primary); }

/* ── 商品图图标：全站统一透明度 0.85（参考 SMS 标准；仅商品图 .sms-icon-img，不动 logo 占位 .sms-icon）── */
.sms-icon-img, .sms-icon-img.loaded { opacity: 0.85; }


/* ═══════════════════════════════════════════════════════════
   UMV · 全局样式入口 umv.css
   统一引入：tokens（令牌/配色/深色）→ layout（布局框架）→ components（组件）
   任何站只需一行：<link rel="stylesheet" href="/umv/umv.css">
   ═══════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════
   UMV 全局 · 搜索筛选栏（umv-search-*）
   各子站（SMS/AIHUB/likes…）搜索导航栏通用样式。
   结构：
     <form class="umv-search-bar">
       <div class="umv-search-grid">
         <div class="umv-search-field"><label>…</label> <input …></div>
         <div class="umv-search-field"><label>…</label> <select …></div>
         <div class="umv-search-field"><label>…</label> <div class="umv-dropdown">…</div></div>
         <div class="umv-search-field"><label>&nbsp;</label> <button class="umv-search-btn">…</button></div>
       </div>
     </form>
   ═══════════════════════════════════════════════════════════ */

/* 外层容器 */
.umv-search-bar{
  width:100%; max-width:var(--container); margin:0 auto 24px;
  padding:20px 24px; background:var(--bg-surface);
  border:1px solid var(--border); border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm); box-sizing:border-box;
}

/* 内部网格：默认列宽 1fr 200px 150px auto（服务项目 弹性 / 国家地区 加宽 / 卡类型 收窄） */
.umv-search-grid{
  display:grid; grid-template-columns:1fr 200px 150px auto;
  gap:12px; align-items:end;
}

/* 字段单元 */
.umv-search-field label{
  display:block; font-size:12px; font-weight:600; color:var(--text-tertiary);
  margin-bottom:6px;
}

/* 原生输入框 / 下拉框：统一高度 42px */
.umv-search-field input,
.umv-search-field select{
  width:100%; height:42px; padding:10px 14px;
  border:1px solid var(--border); border-radius:var(--radius-md);
  background:var(--bg-surface-solid); color:var(--text-primary);
  font-size:13px; box-sizing:border-box;
}
.umv-search-field input:focus,
.umv-search-field select:focus{ outline:none; border-color:var(--primary); }

/* 搜索按钮：与控件同高，flex 居中 */
.umv-search-btn{
  height:42px; padding:10px 28px; border-radius:999px;
  background:var(--primary); color:#fff; font-size:14px; font-weight:600;
  border:none; cursor:pointer; white-space:nowrap;
  display:flex; align-items:center; justify-content:center; gap:6px; box-sizing:border-box;
}
.umv-search-btn:hover{ background:var(--primary-hover); }

/* ── 卡片式下拉选择器（umv-dropdown-*）── */
.umv-dropdown{ position:relative; width:100%; }
.umv-dropdown-trigger{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  width:100%; height:42px; padding:10px 14px;
  border:1px solid var(--border); border-radius:var(--radius-md);
  background:var(--bg-surface-solid); color:var(--text-primary);
  font-size:13px; font-weight:600; cursor:pointer; box-sizing:border-box;
  transition:border-color var(--transition);
}
.umv-dropdown-trigger:hover{ border-color:var(--primary); }
.umv-dropdown-label{
  display:inline-flex; align-items:center; gap:6px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.umv-dropdown-label-code{ font-size:11px; color:var(--text-tertiary); }
.umv-dropdown-arrow{ font-size:12px; color:var(--text-tertiary); transition:transform var(--transition); flex-shrink:0; }
.umv-dropdown.open .umv-dropdown-arrow{ transform:rotate(180deg); }

/* ── 通用搜索框清除按钮（全站规范）：输入框包在 .umv-kw 容器内，umv-site.js 自动注入 X ── */
.umv-kw{ position:relative; }
.umv-kw > input{ padding-right:32px; }
.umv-kw-clear{ position:absolute; right:6px; top:50%; transform:translateY(-50%); background:transparent; border:none; color:var(--text-tertiary); cursor:pointer; font-size:13px; padding:4px; line-height:1; transition:color .2s; z-index:2; }
.umv-kw-clear:hover{ color:var(--primary); }

/* 下拉面板：宽度严格与触发框（母框）一致 */
.umv-dropdown-panel{
  position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:50;
  width:auto; padding:8px;
  background:var(--bg-surface-solid); border:1px solid var(--border);
  border-radius:var(--radius-lg); box-shadow:var(--shadow-lg);
  display:none; box-sizing:border-box;
}
.umv-dropdown.open .umv-dropdown-panel{ display:block; }
.umv-dropdown-panel-grid{ display:grid; grid-template-columns:1fr; gap:6px; width:100%; }

/* 下拉项：一行横排，宽度填满面板，高度统一 42px（与搜索栏控件一致） */
.umv-dropdown-item{
  display:flex; align-items:center; gap:10px; width:100%; min-width:0; height:42px; padding:9px 12px;
  background:var(--bg-surface); border:1px solid var(--border);
  border-radius:var(--radius-md); cursor:pointer; text-align:left;
  box-sizing:border-box;
  transition:all var(--transition);
}
.umv-dropdown-item:hover{ box-shadow:var(--shadow-md); border-color:var(--primary); transform:none; }
.umv-dropdown-item.active{ border-color:var(--primary); background:var(--bg-strong); }
.umv-dropdown-flag{ font-size:22px; width:28px; text-align:center; flex-shrink:0; }
.umv-dropdown-name{ flex:1; font-size:13px; font-weight:600; color:var(--text-primary); text-align:left; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.umv-dropdown-code{ font-size:11px; color:var(--text-tertiary); flex-shrink:0; text-align:right; }

/* 响应式：移动端(≤768px) 两列 + 按钮区占整行 */
@media (max-width: 768px){
  .umv-search-grid{ grid-template-columns:1fr 1fr; }
  .umv-search-field{ min-width:0; }
  .umv-search-grid .umv-search-field:last-child{ grid-column:1/-1; }
  .umv-dropdown-panel{ left:0; right:0; width:auto; }
}

/* ═══ 钱包余额 · 小数小字号（整数正常 / .小数缩小弱化）═══ */
.user-menu .wallet-tip b .bal-d{ font-size:.6em; font-weight:600; color:var(--text-tertiary); letter-spacing:.02em; }
.balance-box .num .bal-d{ font-size:.6em; font-weight:700; color:var(--text-tertiary); letter-spacing:.02em; }

