/* ========================================
   黔企保 APP - 全局样式
   ======================================== */

/* CSS 变量定义 */
:root {
  --primary: #1a5fb4;
  --primary-dark: #134d8f;
  --primary-light: #e8f1fb;
  --accent: #d4a017;
  --accent-light: #fdf6e3;
  --success: #e63946;
  --success-bg: #fef0f0;
  --danger: #e63946;
  --warning: #f97316;
  --green: #2d9d5f;
  --green-bg: #e8f7ef;
  --orange: #f97316;
  --orange-bg: #fff7ed;
  --bg: #f4f5f9;
  --bg-2: #eef0f4;
  --card: #ffffff;
  --text: #1a1a2e;
  --text-1: #1a1a2e;
  --text-2: #6b7280;
  --text-3: #9ca3af;
  --border: #eceef2;
  --shadow: 0 2px 12px rgba(0,0,0,0.06);
  --shadow-lg: 0 8px 30px rgba(0,0,0,0.12);
  --radius: 12px;
  --radius-sm: 8px;
  --radius-lg: 16px;
  --tab-h: 56px;
  --header-h: 48px;
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

/* 重置样式 */
* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

html, body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;
  font-size: 14px;
  color: var(--text);
  background: #e4e6eb;
  -webkit-font-smoothing: antialiased;
}

a { text-decoration: none; color: inherit; }
ul, ol { list-style: none; }
img { display: block; max-width: 100%; }
button { border: none; outline: none; cursor: pointer; font-family: inherit; background: none; }
input { border: none; outline: none; font-family: inherit; }

/* APP 容器 */
#app {
  max-width: 430px;
  margin: 0 auto;
  min-height: 100vh;
  background: var(--bg);
  position: relative;
  box-shadow: 0 0 40px rgba(0,0,0,0.1);
  overflow: hidden;
}

/* 页面容器 */
.page {
  display: none;
  min-height: calc(100vh - var(--tab-h));
  padding-bottom: calc(var(--tab-h) + 10px);
  animation: fadeIn 0.25s ease;
}
.page.active { display: block; }

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* 滚动容器 */
.scroll-content {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

/* ============ 通用组件 ============ */

/* 卡片 */
.card {
  background: var(--card);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}

/* 区块标题 */
.section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 16px 10px;
}
.section-title h3 {
  font-size: 16px;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 6px;
}
.section-title h3::before {
  content: '';
  width: 4px;
  height: 16px;
  background: var(--primary);
  border-radius: 2px;
}
.section-title .more {
  font-size: 12px;
  color: var(--text-3);
  display: flex;
  align-items: center;
  gap: 2px;
}

/* 按钮 */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 10px 20px;
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-weight: 600;
  transition: opacity 0.2s, transform 0.1s;
}
.btn:active { transform: scale(0.96); }
.btn-primary { background: var(--primary); color: #fff; }
.btn-accent { background: var(--accent); color: #fff; }
.btn-outline { border: 1.5px solid var(--primary); color: var(--primary); background: transparent; }
.btn-secondary { background: var(--bg); color: var(--text-2); border: 1.5px solid var(--border); }
.btn-danger { background: #ef4444; color: #fff; }
.btn-sm { padding: 6px 14px; font-size: 12px; }
.btn-lg { padding: 14px 28px; font-size: 16px; width: 100%; }
.btn-block { width: 100%; }

/* 标签 */
.tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 600;
}
.tag-primary { background: var(--primary-light); color: var(--primary); }
.tag-accent { background: var(--accent-light); color: var(--accent); }
.tag-red { background: var(--success-bg); color: var(--success); }
.tag-green { background: var(--green-bg); color: var(--green); }
.tag-orange { background: var(--orange-bg); color: var(--orange); }

/* ============ 底部导航 ============ */
.tab-bar {
  position: fixed;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 430px;
  height: calc(var(--tab-h) + var(--safe-bottom));
  background: rgba(255,255,255,0.97);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-top: 1px solid var(--border);
  display: flex;
  z-index: 200;
  padding-bottom: var(--safe-bottom);
}
.tab-item {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  color: var(--text-3);
  font-size: 10px;
  transition: color 0.2s;
  position: relative;
  cursor: pointer;
  pointer-events: auto;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}
.tab-item.active { color: var(--primary); }
.tab-item svg { width: 24px; height: 24px; }
.tab-item .tab-badge {
  position: absolute;
  top: 4px;
  right: 50%;
  margin-right: -22px;
  background: var(--success);
  color: #fff;
  font-size: 9px;
  min-width: 16px;
  height: 16px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
}

/* ============ 首页 ============ */

/* 顶部 logo 区（v=20260815-r11：去外框，LOGO 紧贴顶部直接放图）
   [r26] 底部内边距 14px → 2px：原来 logo 与轮播图之间叠出 50px 纯空白，视觉断层 */
.home-header {
  background: transparent;
  padding: 10px 0 2px;
  border-bottom: none;
  position: relative;
}
.home-header-top {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
/* 首页 LOGO 容器：宽度 100%、高度自适应，让 logo 原比例缩放（r12 贴边放大） */
.home-header .home-header-top {
  height: auto;
  max-height: 160px;
}
.home-header .home-logo {
  width: 100%;
  height: auto;
}
.home-logo-full {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}
.home-logo-full .logo-img-full {
  width: 100%;
  max-width: 280px;
  height: auto;
  object-fit: contain;
  display: block;
}

.search-bar {
  /* [r26] 修复：这个搜索栏是 .home-header 的兄弟节点，却用了 position:absolute + bottom:-24px，
     定位基准落到视口上，实际一直被推到屏幕下方（用户从未见过它），却让 .banner-wrap 白让了 36px 空间。
     现按「logo 与轮播图紧挨」的版式先隐藏；若要恢复搜索入口，需改为文档流内的一行。 */
  position: absolute;
  bottom: -24px;
  left: 16px;
  right: 16px;
  height: 48px;
  background: #fff;
  border-radius: 24px;
  box-shadow: var(--shadow-lg);
  align-items: center;
  padding: 0 16px;
  gap: 8px;
  z-index: 10;
  display: none;
}
.search-bar svg { width: 20px; height: 20px; color: var(--text-3); flex-shrink: 0; }
.search-bar input {
  flex: 1;
  font-size: 14px;
  color: var(--text);
}
.search-bar input::placeholder { color: var(--text-3); }
.search-bar .search-btn {
  background: var(--primary);
  color: #fff;
  padding: 6px 14px;
  border-radius: 16px;
  font-size: 12px;
  font-weight: 600;
}

/* 轮播图 */
.banner-wrap {
  margin: 8px 16px 0;
  border-radius: var(--radius);
  overflow: hidden;
  position: relative;
  height: 140px;
}
.banner-slide {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  padding: 0 24px;
  color: #fff;
  position: relative;
  overflow: hidden;
}
.banner-slide .banner-content { position: relative; z-index: 2; }
.banner-slide .banner-title { font-size: 18px; font-weight: 700; margin-bottom: 6px; }
.banner-slide .banner-desc { font-size: 12px; opacity: 0.9; }
.banner-slide .banner-icon {
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 56px;
  opacity: 0.3;
}
.banner-dots {
  position: absolute;
  bottom: 8px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 4px;
  z-index: 5;
}
.banner-dots .dot {
  width: 6px;
  height: 6px;
  border-radius: 3px;
  background: rgba(255,255,255,0.4);
  transition: all 0.3s;
}
.banner-dots .dot.active { width: 18px; background: #fff; }

/* 滚动宣传条 */
.promo-marquee {
  margin: 12px 16px 0;
  height: 44px;
  background: linear-gradient(90deg, #fff7ed, #fef0f0);
  border-radius: var(--radius);
  border: 1px solid rgba(230, 57, 70, 0.1);
  overflow: hidden;
  display: flex;
  align-items: center;
  cursor: pointer;
  position: relative;
}
.promo-marquee::before {
  content: '📢';
  position: absolute;
  left: 12px;
  font-size: 16px;
  z-index: 2;
}
.promo-marquee::after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 42px;
  background: linear-gradient(90deg, #fff7ed, transparent);
  z-index: 1;
}
.pm-track {
  display: flex;
  align-items: center;
  gap: 24px;
  padding-left: 42px;
  animation: promoScroll 20s linear infinite;
  white-space: nowrap;
}
@keyframes promoScroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.pm-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--text);
  flex-shrink: 0;
}
.pm-icon { font-size: 15px; }
.pm-title { font-weight: 700; color: var(--success); }
.pm-desc { color: var(--text-2); font-size: 12px; }

/* 快捷服务网格 */
.quick-services {
  margin: 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 16px 8px;
  box-shadow: var(--shadow);
}
.quick-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px 4px;
}
.quick-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  transition: transform 0.15s;
}
.quick-item:active { transform: scale(0.92); }
.quick-icon {
  width: 46px;
  height: 46px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
}
.quick-item .quick-label {
  font-size: 11px;
  color: var(--text);
  text-align: center;
  line-height: 1.3;
}

/* 个体工商户自主申报大入口 */
.featured-entry {
  margin: 0 16px 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  box-shadow: var(--shadow);
  transition: transform 0.15s;
}
.featured-entry:active { transform: scale(0.98); }
.featured-entry .fe-left { display: flex; align-items: center; gap: 12px; }
.featured-entry .fe-icon {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  flex-shrink: 0;
}
.featured-entry .fe-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 3px; }
.featured-entry .fe-desc { font-size: 12px; color: var(--text-2); }
.featured-entry .fe-arrow { display: flex; align-items: center; gap: 2px; font-size: 12px; color: var(--text-3); white-space: nowrap; flex-shrink: 0; }
.featured-entry .fe-arrow svg { width: 16px; height: 16px; }

/* 服务进度卡片 */
.progress-card {
  margin: 0 16px 16px;
  background: linear-gradient(135deg, #1a5fb4 0%, #2d7dd2 100%);
  border-radius: var(--radius);
  padding: 16px;
  color: #fff;
  box-shadow: 0 4px 16px rgba(26,95,180,0.3);
}
.progress-card .pc-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
}
.progress-card .pc-title { font-size: 15px; font-weight: 700; }
.progress-card .pc-more { font-size: 12px; opacity: 0.8; }
.progress-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 0;
  border-top: 1px solid rgba(255,255,255,0.15);
}
.progress-item:first-of-type { border-top: none; }
.progress-item .pi-icon {
  width: 36px;
  height: 36px;
  background: rgba(255,255,255,0.15);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.progress-item .pi-info { flex: 1; }
.progress-item .pi-name { font-size: 13px; font-weight: 600; }
.progress-item .pi-status { font-size: 11px; opacity: 0.8; margin-top: 2px; }
.progress-item .pi-bar {
  width: 60px;
  height: 4px;
  background: rgba(255,255,255,0.2);
  border-radius: 2px;
  overflow: hidden;
  flex-shrink: 0;
}
.progress-item .pi-bar-fill {
  height: 100%;
  background: #fff;
  border-radius: 2px;
}

/* 新闻公告 */
.news-list {
  margin: 0 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 4px 16px;
  box-shadow: var(--shadow);
}
.news-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
}
.news-item:last-child { border-bottom: none; }
.news-item .news-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--success);
  flex-shrink: 0;
}
.news-item .news-text {
  flex: 1;
  font-size: 13px;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.news-item .news-date { font-size: 11px; color: var(--text-3); flex-shrink: 0; }

/* 公司相册展览（r11：替换原"合作伙伴"模块） */
/* 公司相册 r15：左右滑动轮播（横向滚动 + 露出下一张的边 + 分页圆点） */
.gallery-stack {
  display: flex;
  flex-direction: row;
  gap: 10px;
  padding: 0 16px 4px;
  box-sizing: border-box;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.gallery-stack::-webkit-scrollbar { display: none; width: 0; height: 0; }
.gallery-stack-item {
  position: relative;
  flex: 0 0 calc(100% - 56px);
  min-width: calc(100% - 56px);
  height: 220px;
  border-radius: 16px;
  overflow: hidden;
  background: #f3f4f6;
  cursor: pointer;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  box-shadow: 0 4px 12px rgba(0,0,0,.08);
  transition: transform .18s ease, box-shadow .18s ease;
}
.gallery-stack-item:active { transform: scale(.99); box-shadow: 0 2px 6px rgba(0,0,0,.12); }
.gallery-stack-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  background: #f3f4f6;
}
.gallery-stack-meta {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 16px 20px 18px;
  color: #fff;
  background: linear-gradient(to top, rgba(0,0,0,.72) 0%, rgba(0,0,0,.35) 55%, rgba(0,0,0,0) 100%);
  pointer-events: none;
}
.gallery-stack-title {
  font-size: 16px;
  font-weight: 700;
  margin-bottom: 6px;
  text-shadow: 0 1px 3px rgba(0,0,0,.4);
}
.gallery-stack-sub {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  font-size: 13px;
  text-shadow: 0 1px 2px rgba(0,0,0,.4);
}
.gallery-stack-date {
  white-space: nowrap;
  opacity: .85;
  font-size: 12px;
}
.gallery-stack-index {
  position: absolute;
  top: 12px; right: 12px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,.55);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.gallery-stack-dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 6px;
  padding: 12px 16px 10px;
}
.gallery-stack-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #d1d5db;
  transition: width .25s ease, background-color .25s ease;
  cursor: pointer;
}
.gallery-stack-dot.is-active {
  width: 18px;
  background: var(--primary, #1a5fb4);
  border-radius: 3px;
}
.gallery-stack-tip {
  text-align: center;
  padding: 0 0 14px;
  color: var(--text-3, #9ca3af);
  font-size: 12px;
}
.st-meta {
  margin-left: auto;
  font-size: 12px;
  color: var(--text-3, #9ca3af);
  font-weight: 400;
}

/* 公司相册大图灯箱（r11） */
.gv-mask {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.85);
  z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
  animation: gvFadeIn .2s ease;
}
@keyframes gvFadeIn { from { opacity: 0; } to { opacity: 1; } }
.gv-card {
  position: relative;
  width: 100%;
  max-width: 540px;
  max-height: 92vh;
  background: #0f172a;
  border-radius: 12px;
  overflow: hidden;
  display: flex; flex-direction: column;
  box-shadow: 0 20px 60px rgba(0,0,0,.4);
}
.gv-close {
  position: absolute; top: 8px; right: 8px;
  z-index: 2;
  background: rgba(0,0,0,.5);
  color: #fff;
  border: none;
  width: 32px; height: 32px;
  border-radius: 50%;
  font-size: 22px;
  line-height: 28px;
  cursor: pointer;
  padding: 0;
}
.gv-img {
  width: 100%;
  max-height: 70vh;
  object-fit: contain;
  background: #000;
  display: block;
}
.gv-info {
  padding: 12px 16px 0;
  color: #f1f5f9;
}
.gv-title { font-size: 16px; font-weight: 600; }
.gv-desc  { font-size: 13px; color: rgba(241,245,249,.85); margin-top: 4px; }
.gv-meta  { font-size: 11px; color: rgba(241,245,249,.6); margin-top: 4px; }
.gv-actions {
  display: flex; gap: 8px; padding: 12px 16px 16px;
}
.gv-btn {
  flex: 1;
  padding: 10px 12px;
  background: rgba(255,255,255,.1);
  color: #fff;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 8px;
  font-size: 14px;
  cursor: pointer;
}
.gv-btn:hover { background: rgba(255,255,255,.2); }

/* 特色产品推荐 */
.feature-products {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding: 0 16px 16px;
  -webkit-overflow-scrolling: touch;
}
.feature-product-card {
  flex-shrink: 0;
  width: 130px;
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.feature-product-card .fp-img {
  width: 130px;
  height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.feature-product-card .fp-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.feature-product-card .fp-info { padding: 8px 10px; }
.feature-product-card .fp-name { font-size: 12px; font-weight: 600; margin-bottom: 4px; }
.feature-product-card .fp-producer { font-size: 12px; color: var(--text-3); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ============ 服务页 ============ */
.services-header {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  padding: 0 16px 16px;
  color: #fff;
}
.services-header h2 { font-size: 20px; font-weight: 700; padding: 12px 0; }
.services-header p { font-size: 13px; opacity: 0.85; }

.service-tabs {
  display: flex;
  background: #fff;
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  z-index: 50;
  overflow-x: auto;
}
.service-tab {
  flex-shrink: 0;
  padding: 12px 16px;
  font-size: 13px;
  color: var(--text-2);
  white-space: nowrap;
  position: relative;
  transition: color 0.2s;
}
.service-tab.active { color: var(--primary); font-weight: 700; }
/* [r112] 软件开发分类的 NEW 标记 —— 首页重复入口移除后，服务页要保住曝光 */
.service-tab .st-new {
  display: inline-block;
  font-style: normal; font-size: 9px; font-weight: 700;
  color: #fff; background: #e63946;
  border-radius: 4px; padding: 1px 4px;
  margin-left: 4px; vertical-align: 2px;
  letter-spacing: 0.3px;
}
.service-tab.active::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 24px;
  height: 3px;
  background: var(--primary);
  border-radius: 2px;
}

.service-list { padding: 12px 16px; }
.service-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
  box-shadow: var(--shadow);
  display: flex;
  gap: 12px;
}
.service-card .sc-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  flex-shrink: 0;
}
.service-card .sc-body { flex: 1; }
.service-card .sc-title {
  font-size: 15px;
  font-weight: 700;
  margin-bottom: 4px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.service-card .sc-desc { font-size: 12px; color: var(--text-2); line-height: 1.5; margin-bottom: 8px; }
.service-card .sc-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.service-card .sc-price { color: var(--success); font-weight: 700; }
.service-card .sc-price .unit { font-size: 11px; color: var(--text-3); font-weight: 400; }

/* ============ 黔货商城 ============ */
.mall-header {
  background: linear-gradient(135deg, #d4a017 0%, #b8860b 100%);
  padding: 0 16px 16px;
  color: #fff;
}
.mall-header h2 { font-size: 20px; font-weight: 700; padding: 12px 0; }
.mall-header p { font-size: 13px; opacity: 0.85; }

.mall-search {
  margin: 0 16px;
  background: #fff;
  border-radius: 24px;
  height: 40px;
  display: flex;
  align-items: center;
  padding: 0 16px;
  gap: 8px;
  box-shadow: var(--shadow);
  margin-top: -8px;
  position: relative;
  z-index: 10;
}

.category-bar {
  display: flex;
  gap: 8px;
  padding: 16px 16px 8px;
  overflow-x: auto;
}
.category-chip {
  flex-shrink: 0;
  padding: 6px 14px;
  border-radius: 16px;
  font-size: 12px;
  background: #fff;
  color: var(--text-2);
  box-shadow: var(--shadow);
  transition: all 0.2s;
}
.category-chip.active { background: var(--accent); color: #fff; }

.product-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  padding: 8px 16px 16px;
}
.product-card {
  background: #fff;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow);
  transition: transform 0.15s;
}
.product-card:active { transform: scale(0.97); }
/* [20261103] 产品配图容器：高度放宽 + contain 完整显示
   原来 height:130px + object-fit:cover，而配图是 1:1 白底方图
   → cover 会把上下裁掉（蜂糖李的盘子底部不见了），
   改成 contain 让产品完整呈现，背景沿用产品自己的底色填补留白。 */
.product-card .pc-img {
  width: 100%;
  height: 152px;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  border-radius: 10px 10px 0 0;
}
.product-card .pc-img img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 5px;
  display: block;
}
.product-card .pc-icon {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 48px;
}
.product-card .pc-tag {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 2;
}
.product-card .pc-info { padding: 8px 10px 12px; }

/* 产品详情图 */
.pd-img {
  width: 100%;
  max-width: 220px;
  aspect-ratio: 1;
  border-radius: var(--radius);
  margin: 0 auto 16px;
  overflow: hidden;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}
.pd-img img {
  width: 100%;
  height: 100%;
  /* [20261103] contain：产品图完整显示不被裁（商家上传的图比例不一定一致） */
  object-fit: contain;
  padding: 6px;
  display: block;
}
.pd-icon {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 80px;
}
.product-card .pc-name { font-size: 13px; font-weight: 600; margin-bottom: 4px; line-height: 1.4; }
.product-card .pc-desc { font-size: 11px; color: var(--text-3); margin-bottom: 6px; }
.product-card .pc-producer { font-size: 12px; color: var(--text-3); margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.product-card .pc-origin { font-size: 10px; color: var(--text-3); text-decoration: line-through; margin-left: 4px; }

/* ============ 消息页 ============ */
.msg-tabs {
  display: flex;
  background: #fff;
  border-bottom: 1px solid var(--border);
}
.msg-tab {
  flex: 1;
  padding: 14px 0;
  text-align: center;
  font-size: 14px;
  color: var(--text-2);
  position: relative;
}
.msg-tab.active { color: var(--primary); font-weight: 700; }
.msg-tab.active::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 24px;
  height: 3px;
  background: var(--primary);
  border-radius: 2px;
}

.msg-list { padding: 8px 0; }
.msg-item {
  display: flex;
  gap: 12px;
  padding: 14px 16px;
  background: #fff;
  border-bottom: 1px solid var(--border);
  align-items: center;
}
.msg-item .mi-avatar {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
  position: relative;
}
.msg-item .mi-avatar .mi-badge {
  position: absolute;
  top: -4px;
  right: -4px;
  background: var(--success);
  color: #fff;
  font-size: 10px;
  min-width: 18px;
  height: 18px;
  border-radius: 9px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 5px;
  border: 2px solid #fff;
}
.msg-item .mi-body { flex: 1; min-width: 0; }
.msg-item .mi-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.msg-item .mi-name { font-size: 14px; font-weight: 600; }
.msg-item .mi-time { font-size: 11px; color: var(--text-3); }
.msg-item .mi-text { font-size: 12px; color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ============ 我的页 ============ */
.profile-header {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  /* [r113] 底部留白重算：
     .profile-stats 是绝对定位 bottom:44px（高约 55px），
     .profile-section 用 margin-top:-40px 压住头图底部。
     三个数字的标签行曾被白色菜单卡盖住（用户截图里只露出「239 239 0」数字），
     原因是 stats 贴 bottom:12px，section 上提 40px 正好压住 stats 下部 28px。
     现在 stats 上移到 bottom:44px → 标签露出，且 section 顶(高-40) > stats 底(高-44) ✓
     底部留白 = 120 - 44 - 55 = 21px（原来 60-12-55 会挤成负值/被盖） */
  padding: 20px 16px 120px;
  color: #fff;
  position: relative;
}
.profile-top {
  display: flex;
  align-items: center;
  gap: 14px;
}
.profile-avatar {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: rgba(255,255,255,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  border: 2px solid rgba(255,255,255,0.3);
}
.profile-info .pi-name { font-size: 18px; font-weight: 700; margin-bottom: 4px; }
.profile-info .pi-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: rgba(255,255,255,0.2);
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 11px;
}

/* [r112] 当前企业切换条：多执照/多企业绑定的入口提到顶部第一屏 */
.pf-comp-switch {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 14px;
  padding: 10px 12px;
  background: rgba(255,255,255,0.16);
  border: 1px solid rgba(255,255,255,0.22);
  border-radius: 12px;
  cursor: pointer;
  position: relative;
  z-index: 6;
}
.pf-comp-switch:active { background: rgba(255,255,255,0.24); }
.pfcs-icon {
  width: 30px; height: 30px; flex-shrink: 0;
  border-radius: 8px; background: rgba(255,255,255,0.22);
  display: flex; align-items: center; justify-content: center; font-size: 16px;
}
.pfcs-body { flex: 1; min-width: 0; }
.pfcs-label { font-size: 10px; opacity: 0.8; margin-bottom: 1px; }
.pfcs-name {
  font-size: 13.5px; font-weight: 600; line-height: 1.35;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.pfcs-right { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.pfcs-badge {
  font-size: 10px; font-weight: 600;
  background: #fff; color: var(--primary);
  padding: 2px 7px; border-radius: 9px;
}
/* [r113] 去重后这里成了唯一的企业管理入口 → 明确写出能干什么 */
.pfcs-hint {
  font-size: 10.5px; color: rgba(255,255,255,0.82);
  background: rgba(255,255,255,0.16);
  padding: 3px 8px; border-radius: 9px; white-space: nowrap;
}
.pfcs-arrow { font-size: 18px; opacity: 0.85; }

.profile-stats {
  position: absolute;
  /* [r113] 从 12px 上移到 44px —— 原来贴底，标签行被下方白色菜单卡盖住 */
  bottom: 44px;
  left: 16px;
  right: 16px;
  display: flex;
  background: rgba(255,255,255,0.15);
  border-radius: var(--radius);
  overflow: hidden;
}
.profile-stat {
  flex: 1;
  text-align: center;
  padding: 10px 0;
  cursor: pointer;
}
.profile-stat:active { background: rgba(255,255,255,0.12); }
.profile-stat .ps-num { font-size: 18px; font-weight: 700; }
.profile-stat .ps-label { font-size: 11px; opacity: 0.85; }
.profile-stat + .profile-stat { border-left: 1px solid rgba(255,255,255,0.15); }
/* [r112] 有待办时数字高亮，客户一眼看到有事要处理 */
.profile-stat.ps-alert .ps-num { color: #FFD666; }

.profile-section {
  margin: -40px 16px 16px;
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
  position: relative;
  z-index: 5;
}
.profile-menu-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: background 0.15s;
}
.profile-menu-item:active { background: var(--bg); }
.profile-menu-item:last-child { border-bottom: none; }
.profile-menu-item .pmi-icon {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.profile-menu-item .pmi-text { flex: 1; font-size: 14px; font-weight: 600; }
.profile-menu-item .pmi-value { font-size: 12px; color: var(--text-3); }
.profile-menu-item .pmi-arrow { color: var(--text-3); font-size: 18px; }

/* ============ 用户协议与隐私政策（合规） ============ */
/* [r40] 协议同意弹窗改为标准居中卡片（半透明遮罩 + 白色圆角卡），
   替代早期「全屏白页」样式，审核观感更规范 */
.agreement-modal {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(15, 23, 42, 0.55);
  -webkit-backdrop-filter: blur(2px);
  backdrop-filter: blur(2px);
  z-index: 2000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  box-sizing: border-box;
}
.agreement-sheet {
  width: 100%;
  max-width: 380px;
  max-height: 86vh;
  overflow-y: auto;
  background: #fff;
  border-radius: 20px;
  padding: 26px 20px 22px;
  text-align: center;
  box-shadow: 0 20px 50px rgba(15, 23, 42, 0.28);
  box-sizing: border-box;
}
.agreement-logo {
  display: flex;
  justify-content: center;
  align-items: center;
}
.agreement-logo img {
  width: 72px;
  height: 72px;
  border-radius: 18px;
  object-fit: cover;
  box-shadow: none;
}
.agreement-title {
  font-size: 22px;
  font-weight: 700;
  color: var(--text);
  margin-top: 20px;
}
.agreement-subtitle {
  font-size: 13px;
  color: var(--text-2);
  margin-top: 8px;
  line-height: 1.5;
}
.agreement-links {
  margin-top: 28px;
  text-align: left;
}
.agreement-link-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px;
  background: var(--bg);
  border-radius: var(--radius);
  margin-bottom: 12px;
  cursor: pointer;
}
.agreement-link-item .ali-name {
  font-size: 15px;
  font-weight: 600;
  color: var(--primary);
}
.agreement-link-item .ali-arrow {
  font-size: 20px;
  color: var(--text-3);
}
.agreement-check {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  margin-top: 20px;
  padding: 12px;
  border-radius: var(--radius);
  background: #f9fafb;
  cursor: pointer;
  text-align: left;
}
.agreement-check input[type="checkbox"] {
  width: 20px;
  height: 20px;
  accent-color: var(--primary);
  flex-shrink: 0;
  /* [r43] 修复「勾选框点不动」：input 在带 onclick 的行内，
     原生勾选后事件冒泡到行又会翻回去，净效果等于没点。
     让 input 不接收指针事件，整行统一由 App.toggleAgreementCheck 控制。 */
  pointer-events: none;
  cursor: pointer;
}
.agreement-check span {
  pointer-events: none;
}
.agreement-check span {
  font-size: 13px;
  color: var(--text-2);
  line-height: 1.4;
}
.agreement-actions {
  margin-top: 24px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.agreement-btn {
  width: 100%;
  padding: 14px;
  border: none;
  border-radius: var(--radius-lg);
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
}
.agreement-btn-primary {
  background: var(--primary);
  color: #fff;
}
.agreement-btn-default {
  background: var(--bg);
  color: var(--text-2);
}

/* 协议详情页 */
.agreement-page {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: #fff;
  z-index: 2100;
  display: none;
  overflow: hidden;
}
.agreement-detail {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.ad-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  background: #fff;
  flex-shrink: 0;
}
.ad-back {
  font-size: 15px;
  color: var(--primary);
  cursor: pointer;
  min-width: 60px;
}
.ad-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--text);
  text-align: center;
  flex: 1;
}
.ad-placeholder { min-width: 60px; }
.ad-body {
  flex: 1;
  overflow-y: auto;
  padding: 20px;
  line-height: 1.8;
  color: var(--text);
  -webkit-overflow-scrolling: touch;
}
.ad-body h2 {
  font-size: 20px;
  font-weight: 700;
  text-align: center;
  margin-bottom: 4px;
}
.ad-body .effective {
  text-align: center;
  color: var(--text-3);
  font-size: 12px;
  margin-bottom: 20px;
}
.ad-body h3 {
  font-size: 15px;
  font-weight: 700;
  margin-top: 18px;
  margin-bottom: 8px;
  color: var(--text);
}
.ad-body p {
  font-size: 14px;
  margin-bottom: 10px;
  text-align: justify;
}
.ad-footer {
  padding: 12px 16px calc(16px + var(--safe-bottom));
  border-top: 1px solid var(--border);
  background: #fff;
  flex-shrink: 0;
}
.ad-read-tip {
  text-align: center;
  font-size: 12px;
  color: var(--text-2);
  margin-bottom: 10px;
}
.ad-agree-btn {
  width: 100%;
  padding: 14px;
  border: none;
  border-radius: var(--radius-lg);
  background: var(--primary);
  color: #fff;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
}
.ad-agree-btn.disabled {
  background: #cbd5e1;
  cursor: not-allowed;
}

/* ============ 服务详情弹窗 ============ */
.modal-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.5);
  z-index: 500;
  display: none;
  align-items: flex-end;
  justify-content: center;
}
.modal-overlay.active { display: flex; animation: fadeIn 0.2s; }
/* [r27] 居中卡片式弹窗基础样式（登录提示 / 确认 / 提示共用）
   之前只有 .need-login-card/.confirm-card/.alert-card 的内部排版，
   缺少 .modal-card 本体 → 卡片无背景色，文字直接压在页面内容上，完全看不清 */
.modal-card {
  width: calc(100% - 44px);
  max-width: 400px;
  max-height: 82vh;
  overflow-y: auto;
  align-self: center;
  background: #fff;
  border-radius: 16px;
  padding: 24px 22px;
  box-shadow: 0 10px 40px rgba(0,0,0,.22);
  animation: cardIn .22s ease;
}
@keyframes cardIn {
  from { opacity: 0; transform: translateY(12px) scale(.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.modal-sheet {
  width: 100%;
  max-width: 430px;
  background: #fff;
  border-radius: 20px 20px 0 0;
  max-height: 85vh;
  overflow-y: auto;
  animation: slideUp 0.3s ease;
}
@keyframes slideUp {
  from { transform: translateY(100%); }
  to { transform: translateY(0); }
}
.modal-handle {
  width: 36px;
  height: 4px;
  background: #ddd;
  border-radius: 2px;
  margin: 10px auto;
}
.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 20px 14px;
  border-bottom: 1px solid var(--border);
}
.modal-header h3 { font-size: 17px; font-weight: 700; }
.modal-close { font-size: 22px; color: var(--text-3); padding: 0 4px; }
.modal-body { padding: 20px; }

/* 全屏页面弹窗（如服务记录与财务报表） */
.modal-page {
  width: 100%;
  max-width: 430px;
  background: #f5f7fa;
  min-height: 100vh;
  max-height: 100vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  animation: slideUp 0.3s ease;
  display: flex;
  flex-direction: column;
}
/* [r32] .modal-page 是 flex 纵向容器，子元素默认可收缩（flex-shrink:1）。
   内容超过一屏时浏览器会把子项压扁，带 overflow:hidden 的横幅会把文字直接裁掉，
   表现为「只剩一个小标签、文字消失、位置偏移」。这里禁止收缩。 */
.modal-page > * { flex-shrink: 0; }

.modal-page-header {
  position: sticky;
  top: 0;
  background: #fff;
  display: flex;
  align-items: center;
  padding: 12px 16px;
  min-height: 58px;
  border-bottom: 1px solid var(--border);
  z-index: 10;
}
/* [r32] 标题绝对居中：原先靠 flex:1 + padding-right:36px 居中，
   左侧无返回键或右侧有「添加」等动作按钮时标题会整体偏移。
   [20261104-r97] 右侧动作按钮数量不定（员工管理页有 合伙人/分管/+添加 三个），
   标题被按钮压住 → 改用 JS 实测左右占位（_fitModalHeaders），
   用 --mph-shift 把标题夹在空白区里居中；这里预留一个变量供 JS 写入。 */
.modal-page-header h2 {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(calc(-50% + var(--mph-shift, 0px)), -50%);
  max-width: calc(100% - 132px);
  font-size: 17px;
  font-weight: 700;
  line-height: 1.25;
  margin: 0;
  padding: 0;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  pointer-events: none;
}
.mph-back {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  margin-right: 0;
}

/* 全屏滚动弹窗通用容器（个体工商户自主申报等） */
.modal-scroll {
  width: 100%;
  max-width: 430px;
  background: #f5f7fa;
  min-height: 100vh;
  max-height: 100vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  display: flex;
  flex-direction: column;
  animation: slideUp 0.3s ease;
}
.modal-title-bar {
  position: sticky;
  top: 0;
  z-index: 10;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
}
.modal-back {
  position: absolute;
  left: 12px;
  background: transparent;
  border: none;
  color: var(--primary);
  font-size: 14px;
  cursor: pointer;
  padding: 6px 8px;
}
.modal-page-title {
  font-size: 17px;
  font-weight: 700;
  color: var(--text);
  text-align: center;
  margin: 0;
  padding: 0 60px;
}

.service-detail-hero {
  text-align: center;
  margin-bottom: 20px;
}
.service-detail-hero .sdh-icon {
  width: 64px;
  height: 64px;
  border-radius: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 32px;
  margin: 0 auto 12px;
}
.service-detail-hero h3 { font-size: 18px; font-weight: 700; margin-bottom: 6px; }
.service-detail-hero .sdh-price { font-size: 24px; color: var(--success); font-weight: 700; }

.detail-row {
  display: flex;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
}
.detail-row .dr-label { width: 80px; font-size: 13px; color: var(--text-2); flex-shrink: 0; }
.detail-row .dr-value { flex: 1; font-size: 13px; color: var(--text); }

.form-group { margin-bottom: 16px; }
.form-group label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 6px; color: var(--text); }
.form-group input, .form-group textarea, .form-group select {
  width: 100%;
  padding: 12px 14px;
  border: 1.5px solid var(--border);
  border-radius: var(--radius-sm);
  font-size: 14px;
  color: var(--text);
  background: var(--bg);
  transition: border-color 0.2s;
}
.form-group input:focus, .form-group textarea:focus, .form-group select:focus {
  border-color: var(--primary);
  background: #fff;
}
.form-group textarea { resize: none; min-height: 80px; }

/* ============ Toast 提示 ============ */
.toast {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: rgba(0,0,0,0.8);
  color: #fff;
  padding: 12px 24px;
  border-radius: var(--radius);
  font-size: 14px;
  z-index: 9999;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.25s;
  white-space: nowrap;
}
.toast.show { opacity: 1; }
.toast .toast-icon { font-size: 28px; display: block; text-align: center; margin-bottom: 4px; }

/* ============ 浮动客服按钮 ============ */
.float-service {
  position: fixed;
  /* [r65] AI 悬浮球已下线（原 r42 让客服按钮上移避让），客服按钮回到右下主位 */
  bottom: calc(var(--tab-h) + 20px + var(--safe-bottom));
  right: 18px;
  width: 48px;
  height: 48px;
  background: var(--primary);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 16px rgba(26,95,180,0.4);
  z-index: 150;
  cursor: pointer;
  transition: transform 0.15s;
  max-width: calc(50% - 16px);
}
.float-service:active { transform: scale(0.9); }
.float-service svg { width: 22px; height: 22px; color: #fff; }

/* ============ 空状态 ============ */
/* [20261106-r126] 海报生成器 */
.pg-copy {
  background: #f8fafc; border: 1px solid var(--border, #eef1f5); border-radius: 8px;
  padding: 11px 13px; font-size: 13px; line-height: 1.85; color: var(--text-1, #1f2937);
  white-space: pre-wrap; word-break: break-word;
}

/* [20261106-r126] 客户开发看板 / 线索分配 */
.sd-kpi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 4px; }
.sd-kpi {
  background: #fff; border: 1px solid var(--border, #eef1f5); border-radius: 10px; padding: 11px 12px;
}
.sd-kpi-label { font-size: 12px; color: var(--text-3, #94a3b8); }
.sd-kpi-val { font-size: 19px; font-weight: 800; color: var(--text-1, #1f2937); margin-top: 3px; }
.sd-kpi-sub { font-size: 11px; color: var(--text-3, #94a3b8); margin-top: 2px; }
.sd-chip {
  display: inline-block; padding: 3px 9px; border-radius: 999px; font-size: 12px;
  background: #f1f5f9; color: #475569; white-space: nowrap;
}
.sd-chip.hot { background: #fef2f2; color: #dc2626; }
.sd-chip.warm { background: #fff7ed; color: #ea580c; }
.sd-chip.ok { background: #ecfdf5; color: #059669; }
.sd-chip.warn { background: #fffbeb; color: #d97706; }
.lp-card {
  background: #fff; border: 1px solid var(--border, #eef1f5); border-radius: 10px;
  padding: 11px 12px; margin-bottom: 9px;
}
.lp-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lp-name { font-size: 15px; font-weight: 700; color: var(--text-1, #1f2937); }
.lp-sub { font-size: 13px; color: var(--text-2, #4b5563); margin-top: 4px; }
.lp-meta { font-size: 12px; color: var(--text-3, #94a3b8); margin-top: 4px; }
.lp-need {
  font-size: 12px; color: var(--text-2, #4b5563); margin-top: 6px; line-height: 1.6;
  background: #f8fafc; border-radius: 6px; padding: 7px 9px;
}
.lp-act { display: flex; gap: 6px; align-items: center; margin-top: 9px; flex-wrap: wrap; }
.lp-select {
  flex: 1; min-width: 110px; height: 34px; padding: 0 8px; font-size: 13px;
  border: 1px solid var(--border, #e2e8f0); border-radius: 7px; background: #fff; color: var(--text-1, #1f2937);
}
.lp-intent { flex: 0 0 108px; min-width: 108px; }

/* [20261106-r125] 客户端待办事项卡片
   ⚠️ 类名用 mt- 前缀 —— 管理端已有一套 .todo-card/.todo-item（见下方），
      同名会互相覆盖 margin/background。 */
.mt-sec-title { font-size: 13px; font-weight: 700; color: var(--text-2); margin: 4px 0 8px; }
.mt-card {
  display: flex; align-items: center; gap: 12px;
  padding: 12px; margin-bottom: 10px;
  background: #fff; border: 1px solid var(--border, #eef1f5); border-radius: 10px;
}
.mt-card:active { background: #f7f9fc; }
.mt-icon {
  width: 40px; height: 40px; border-radius: 10px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; font-size: 20px;
}
.mt-body { flex: 1; min-width: 0; }
.mt-title {
  font-size: 15px; font-weight: 700; color: var(--text-1, #1f2937);
  display: flex; align-items: center; gap: 8px;
}
.mt-amt { color: #dc2626; font-size: 14px; font-weight: 700; }
.mt-desc {
  font-size: 13px; color: var(--text-2, #4b5563); margin-top: 3px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.mt-meta { font-size: 11px; color: var(--text-3, #94a3b8); margin-top: 3px; }
.mt-arrow { color: var(--text-3, #94a3b8); font-size: 20px; flex-shrink: 0; }

.empty-state {
  text-align: center;
  padding: 60px 20px;
  color: var(--text-3);
}
.empty-state .es-icon { font-size: 48px; margin-bottom: 12px; }
.empty-state .es-text { font-size: 14px; }

/* ============ 滚动条隐藏 ============ */
::-webkit-scrollbar { width: 0; height: 0; }

/* ============ 会计薪酬体系入口卡片（首页） ============ */
.salary-entry {
  margin: 0 16px 16px;
  background: linear-gradient(135deg, #9333ea 0%, #b56cf0 100%);
  border-radius: var(--radius);
  padding: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: #fff;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(147,51,234,0.25);
  transition: transform 0.15s;
}
.salary-entry:active { transform: scale(0.98); }
.salary-entry .se-left { display: flex; align-items: center; gap: 12px; }
.salary-entry .se-icon {
  width: 44px; height: 44px;
  background: rgba(255,255,255,0.2);
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 22px;
}
.salary-entry .se-title { font-size: 15px; font-weight: 700; margin-bottom: 3px; }
.salary-entry .se-desc { font-size: 11px; opacity: 0.85; }
.salary-entry .se-arrow { display: flex; align-items: center; gap: 2px; font-size: 12px; opacity: 0.9; }
.salary-entry .se-arrow svg { width: 16px; height: 16px; }

/* ============ 薪酬体系页 ============ */
.salary-header {
  background: linear-gradient(135deg, #9333ea 0%, #7c2dd6 100%);
  padding: 0 16px 14px;
  color: #fff;
  display: flex;
  align-items: center;
  gap: 12px;
}
.salary-back {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  cursor: pointer;
  flex-shrink: 0;
}
.salary-back:active { background: rgba(255,255,255,0.3); }
.salary-back svg { color: #fff; }
.salary-title h2 { font-size: 18px; font-weight: 700; margin-bottom: 2px; }
.salary-title p { font-size: 11px; opacity: 0.85; }

.salary-tabs {
  display: flex;
  background: #fff;
  border-bottom: 1px solid var(--border);
  overflow-x: auto;
  position: sticky;
  top: 0;
  z-index: 50;
}
.salary-tab {
  flex-shrink: 0;
  padding: 12px 14px;
  font-size: 13px;
  color: var(--text-2);
  white-space: nowrap;
  position: relative;
  transition: color 0.2s;
}
.salary-tab.active { color: #9333ea; font-weight: 700; }
.salary-tab.active::after {
  content: '';
  position: absolute;
  bottom: 0; left: 50%;
  transform: translateX(-50%);
  width: 24px; height: 3px;
  background: #9333ea;
  border-radius: 2px;
}

.salary-content { min-height: 400px; }

/* 标题权重标签 */
.title-weight {
  font-size: 11px;
  font-weight: 600;
  background: #9333ea1a;
  color: #9333ea;
  padding: 1px 8px;
  border-radius: 8px;
  margin-left: 4px;
}

/* ====== 薪酬体系通用组件 ====== */
.salary-intro, .cases-intro, .career-intro {
  margin: 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 16px;
  display: flex;
  align-items: center;
  gap: 14px;
  box-shadow: var(--shadow);
}
.salary-intro .si-icon, .cases-intro .ci-icon, .career-intro .ci-icon { font-size: 32px; flex-shrink: 0; }
.salary-intro .si-title, .cases-intro .ci-title, .career-intro .ci-title { font-size: 14px; font-weight: 700; margin-bottom: 4px; }
.salary-intro .si-desc, .cases-intro .ci-desc, .career-intro .ci-desc { font-size: 12px; color: var(--text-2); line-height: 1.5; }

/* 薪酬总构成 */
.salary-comp-list { padding: 0 16px; }
.salary-comp-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 12px;
}
.salary-comp-card .sc-icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.salary-comp-card .sc-body { flex: 1; min-width: 0; }
.salary-comp-card .sc-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.salary-comp-card .sc-name { font-size: 14px; font-weight: 600; }
.salary-comp-card .sc-ratio { font-size: 12px; font-weight: 700; color: #9333ea; }
.salary-comp-card .sc-desc { font-size: 11px; color: var(--text-2); line-height: 1.4; }

/* 职级卡片 */
.level-list { padding: 0 16px; }
.level-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
  box-shadow: var(--shadow);
}
.lc-top { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.lc-badge {
  width: 56px; height: 56px;
  border-radius: 14px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  flex-shrink: 0;
  gap: 2px;
}
.lc-badge .lc-icon { font-size: 20px; }
.lc-badge .lc-level { font-size: 14px; font-weight: 700; }
.lc-name { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.lc-condition { font-size: 11px; color: var(--text-2); line-height: 1.4; }
.lc-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-bottom: 12px;
}
.lc-stat {
  background: var(--bg);
  border-radius: var(--radius-sm);
  padding: 10px 12px;
}
.lcs-label { font-size: 10px; color: var(--text-3); margin-bottom: 4px; }
.lcs-value { font-size: 14px; font-weight: 700; color: var(--text); }
.lcs-highlight { color: #9333ea; }
.lc-footer {
  display: flex;
  justify-content: space-between;
  padding-top: 10px;
  border-top: 1px solid var(--border);
  font-size: 11px;
  color: var(--text-2);
}
.lc-commission { font-weight: 600; color: var(--success); }

/* 说明卡片 */
.salary-note-card {
  margin: 8px 16px 20px;
  background: var(--accent-light);
  border-radius: var(--radius);
  padding: 14px 16px;
}
.snc-title { font-size: 14px; font-weight: 700; color: var(--accent); margin-bottom: 10px; }
.snc-list { display: flex; flex-direction: column; gap: 6px; }
.snc-item { font-size: 12px; color: var(--text-2); line-height: 1.5; }

/* ====== 薪酬计算器 ====== */
.salary-slider {
  width: 100%;
  height: 6px;
  border-radius: 3px;
  background: var(--border);
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}
.salary-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: #9333ea;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(147,51,234,0.3);
}
.salary-slider::-moz-range-thumb {
  width: 22px; height: 22px;
  border-radius: 50%;
  background: #9333ea;
  cursor: pointer;
  border: none;
}
.slider-display {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
}
.slider-label { color: var(--text-2); }
.slider-value { font-size: 20px; font-weight: 700; color: #9333ea; }

/* 薪酬计算结果 */
.scr-card {
  background: linear-gradient(135deg, #9333ea 0%, #7c2dd6 100%);
  border-radius: var(--radius);
  padding: 20px;
  color: #fff;
  box-shadow: 0 4px 20px rgba(147,51,234,0.3);
}
.scr-header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.scr-badge {
  width: 48px; height: 48px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; font-weight: 700;
  flex-shrink: 0;
}
.scr-level { font-size: 15px; font-weight: 700; }
.scr-clients { font-size: 12px; opacity: 0.85; margin-top: 2px; }
.scr-coeff-section {
  background: rgba(255,255,255,0.1);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  margin-bottom: 12px;
}
.scr-coeff-row {
  display: flex;
  justify-content: space-between;
  padding: 4px 0;
  font-size: 12px;
}
.scr-coeff-row span:first-child { opacity: 0.85; }
.scr-coeff-row span:last-child { font-weight: 600; }
.scr-coeff-total {
  display: flex;
  justify-content: space-between;
  padding: 8px 0 0;
  margin-top: 4px;
  border-top: 1px solid rgba(255,255,255,0.2);
  font-size: 13px;
  font-weight: 700;
}
.scr-total-val { font-size: 18px; }
.scr-salary-section {
  background: rgba(255,255,255,0.1);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
}
.scr-salary-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 5px 0;
  font-size: 12px;
}
.scr-salary-row span:first-child { opacity: 0.85; }
.scr-salary-row small { opacity: 0.7; font-size: 10px; }
.scr-salary-val { font-weight: 600; }
.scr-salary-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0 0;
  margin-top: 4px;
  border-top: 1px solid rgba(255,255,255,0.2);
  font-size: 14px;
  font-weight: 700;
}
.scr-total-salary { font-size: 22px; }
.scr-note {
  margin-top: 12px;
  font-size: 11px;
  opacity: 0.8;
  line-height: 1.5;
}

/* ====== 能力系数 ====== */
.coeff-formula-card {
  margin: 16px;
  background: linear-gradient(135deg, #9333ea 0%, #7c2dd6 100%);
  border-radius: var(--radius);
  padding: 20px 16px;
  color: #fff;
  box-shadow: 0 4px 16px rgba(147,51,234,0.25);
}
.cfc-title { font-size: 15px; font-weight: 700; margin-bottom: 12px; }
.cfc-formula { font-size: 14px; font-weight: 600; margin-bottom: 6px; text-align: center; }
.cfc-range { font-size: 12px; opacity: 0.85; text-align: center; margin-bottom: 14px; }
.cfc-detail { background: rgba(255,255,255,0.1); border-radius: var(--radius-sm); padding: 10px 14px; }
.cfc-row { display: flex; justify-content: space-between; padding: 4px 0; font-size: 12px; }
.cfc-row span:first-child { opacity: 0.85; }

.coeff-list { padding: 0 16px; }
.coeff-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 14px;
}
.cc-left { display: flex; flex-direction: column; align-items: center; gap: 6px; flex-shrink: 0; width: 60px; }
.cc-coeff { font-size: 22px; font-weight: 700; }
.cc-level-tag { padding: 2px 8px; border-radius: 8px; font-size: 10px; font-weight: 600; }
.cc-standard { font-size: 12px; color: var(--text-2); line-height: 1.5; flex: 1; }

/* 数量系数 */
.quantity-info { margin: 0 16px; }
.qi-row {
  background: #fff;
  border-radius: var(--radius-sm);
  padding: 10px 14px;
  margin-bottom: 6px;
  box-shadow: var(--shadow);
}
.qi-formula { font-size: 13px; font-weight: 600; display: block; margin-bottom: 2px; }
.qi-desc { font-size: 11px; color: var(--text-3); }

.quantity-table {
  width: 100%;
  min-width: 420px;
  border-collapse: collapse;
  font-size: 11px;
}
.quantity-table th {
  background: #9333ea;
  color: #fff;
  padding: 8px 4px;
  text-align: center;
  font-weight: 600;
  font-size: 10px;
  white-space: nowrap;
}
.quantity-table td {
  padding: 8px 4px;
  text-align: center;
  border-bottom: 1px solid var(--border);
}
.quantity-table tr.qt-alt td { background: #fafbfc; }
.qt-level { font-weight: 700; }
.qt-low { color: var(--text-3); }
.qt-mid { color: var(--primary); font-weight: 600; }
.qt-high { color: var(--success); font-weight: 700; }

/* 证书能力系数 */
.cert-list { padding: 0 16px; }
.cert-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 12px 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 12px;
}
.cert-card.cert-highlight { border: 1.5px solid var(--success); }
.cert-rank {
  width: 24px; height: 24px;
  border-radius: 50%;
  background: var(--bg);
  color: var(--text-3);
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700;
  flex-shrink: 0;
}
.cert-card.cert-highlight .cert-rank { background: var(--success); color: #fff; }
.cert-body { flex: 1; min-width: 0; }
.cert-name { font-size: 13px; font-weight: 600; margin-bottom: 2px; }
.cert-desc { font-size: 11px; color: var(--text-3); }
.cert-coeff { font-size: 20px; font-weight: 700; flex-shrink: 0; }

/* 混日子vs优秀对比表 */
.compare-table-card {
  margin: 0 16px;
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.ctc-header {
  display: flex;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
}
.cth-item {
  flex: 1;
  text-align: center;
  padding: 10px 4px;
  font-size: 11px;
  font-weight: 700;
}
.cth-item small { font-size: 9px; font-weight: 400; opacity: 0.7; }
.cth-dim { flex: 1.2; text-align: left; padding-left: 14px; }
.cth-slacker { color: var(--text-3); }
.cth-standard { color: var(--primary); }
.cth-excellent { color: var(--success); }
.ctc-row {
  display: flex;
  border-bottom: 1px solid var(--border);
}
.ctc-row:last-child { border-bottom: none; }
.ctr-dim {
  flex: 1.2;
  padding: 10px 14px;
  font-size: 11px;
  font-weight: 600;
  color: var(--text);
}
.ctr-val {
  flex: 1;
  padding: 10px 4px;
  text-align: center;
  font-size: 11px;
}
.ctr-slacker { color: var(--text-3); }
.ctr-standard { color: var(--primary); }
.ctr-excellent { color: var(--success); font-weight: 600; }

.compare-conclusion {
  margin: 12px 16px 20px;
  background: var(--accent-light);
  border-radius: var(--radius);
  padding: 14px 16px;
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.compare-conclusion .cc-icon { font-size: 24px; flex-shrink: 0; }
.compare-conclusion .cc-text { font-size: 12px; color: var(--text); line-height: 1.6; }

/* ====== 提成与奖金 ====== */
.commission-intro, .bonus-intro, .ye-intro, .profit-intro {
  margin: 0 16px 12px;
  padding: 10px 14px;
  background: var(--bg);
  border-radius: var(--radius-sm);
  font-size: 12px;
  color: var(--text-2);
  line-height: 1.5;
}
.commission-list { padding: 0 16px; }
.commission-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.cm-left { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; }
.cm-level-badge {
  width: 40px; height: 40px;
  border-radius: 10px;
  background: #9333ea1a;
  color: #9333ea;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700;
  flex-shrink: 0;
}
.cm-info { flex: 1; min-width: 0; }
.cm-name { font-size: 14px; font-weight: 600; margin-bottom: 2px; }
.cm-desc { font-size: 11px; color: var(--text-3); }
.cm-right { text-align: right; flex-shrink: 0; }
.cm-rate { font-size: 20px; font-weight: 700; color: var(--success); }
.cm-clients { font-size: 10px; color: var(--text-3); }

.bonus-list { padding: 0 16px; }
.bonus-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 12px;
}
.bn-icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.bn-body { flex: 1; min-width: 0; }
.bn-name { font-size: 14px; font-weight: 600; margin-bottom: 2px; }
.bn-desc { font-size: 11px; color: var(--text-2); line-height: 1.4; }
.bn-standard {
  font-size: 13px;
  font-weight: 700;
  color: var(--success);
  white-space: nowrap;
  flex-shrink: 0;
}

/* ====== 年终分红 ====== */
.ye-list { padding: 0 16px; }
.ye-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 14px;
}
.ye-left { display: flex; align-items: center; gap: 8px; width: 100px; flex-shrink: 0; }
.ye-icon { font-size: 24px; }
.ye-grade { font-size: 14px; font-weight: 700; }
.ye-body { flex: 1; min-width: 0; }
.ye-base { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.ye-score { font-size: 11px; color: var(--text-3); margin-bottom: 2px; }
.ye-condition { font-size: 11px; color: var(--text-2); line-height: 1.4; }
.ye-notes {
  margin: 8px 16px 16px;
  padding: 10px 14px;
  background: var(--bg);
  border-radius: var(--radius-sm);
}
.yen-item { font-size: 11px; color: var(--text-3); line-height: 1.6; }

.profit-list { padding: 0 16px; }
.profit-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 12px;
}
.pf-icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.pf-body { flex: 1; min-width: 0; }
.pf-name { font-size: 14px; font-weight: 600; margin-bottom: 2px; }
.pf-level { font-size: 11px; color: var(--primary); margin-bottom: 2px; }
.pf-desc { font-size: 11px; color: var(--text-2); line-height: 1.4; }
.pf-standard { font-size: 13px; font-weight: 700; color: var(--success); white-space: nowrap; flex-shrink: 0; }

/* ====== 薪酬案例 ====== */
.case-card {
  margin: 0 16px 16px;
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.case-header {
  padding: 14px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.ch-left { display: flex; align-items: center; gap: 10px; }
.ch-icon { font-size: 28px; }
.ch-level { font-size: 16px; font-weight: 700; }
.ch-detail { font-size: 11px; color: var(--text-2); margin-top: 2px; }
.ch-annual { text-align: right; }
.cha-label { font-size: 10px; color: var(--text-3); }
.cha-value { font-size: 16px; font-weight: 700; }
.case-body { padding: 14px 16px; }
.cb-coeff {
  background: var(--bg);
  border-radius: var(--radius-sm);
  padding: 10px 14px;
  margin-bottom: 12px;
}
.cb-coeff-row {
  display: flex;
  justify-content: space-between;
  padding: 3px 0;
  font-size: 11px;
  color: var(--text-2);
}
.cb-coeff-row span:last-child { font-weight: 600; color: var(--text); }
.cb-coeff-total {
  display: flex;
  justify-content: space-between;
  padding: 6px 0 0;
  margin-top: 4px;
  border-top: 1px solid var(--border);
  font-size: 13px;
  font-weight: 700;
  color: #9333ea;
}
.cb-salary { margin-bottom: 12px; }
.cb-salary-row {
  display: flex;
  justify-content: space-between;
  padding: 5px 0;
  font-size: 12px;
  border-bottom: 1px solid var(--border);
}
.cb-salary-row span:first-child { color: var(--text-2); }
.cb-salary-row span:last-child { font-weight: 600; }
.cb-salary-total {
  display: flex;
  justify-content: space-between;
  padding: 8px 0 0;
  font-size: 14px;
  font-weight: 700;
  color: var(--success);
}
.cb-footer {
  display: flex;
  gap: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}
.cbf-item { flex: 1; }
.cbf-label { font-size: 10px; color: var(--text-3); display: block; margin-bottom: 2px; }
.cbf-value { font-size: 12px; font-weight: 600; color: var(--text); }

.cases-ceiling {
  margin: 8px 16px 20px;
  background: linear-gradient(135deg, #9333ea 0%, #7c2dd6 100%);
  border-radius: var(--radius);
  padding: 16px;
  color: #fff;
}
.ccs-title { font-size: 15px; font-weight: 700; margin-bottom: 8px; }
.ccs-text { font-size: 12px; line-height: 1.6; opacity: 0.95; }

/* ====== 职业通道 ====== */
.career-tracks { padding: 0 16px; }
.career-track-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: flex-start;
  gap: 14px;
}
.ct-icon {
  width: 48px; height: 48px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 24px;
  flex-shrink: 0;
}
.ct-body { flex: 1; }
.ct-name { font-size: 15px; font-weight: 700; margin-bottom: 6px; }
.ct-path { font-size: 12px; color: var(--text); margin-bottom: 4px; }
.ct-levels { font-size: 11px; color: var(--text-2); margin-bottom: 2px; }
.ct-salary { font-size: 13px; font-weight: 700; color: var(--success); }
.career-note {
  margin: 0 16px 16px;
  padding: 10px 14px;
  background: var(--accent-light);
  border-radius: var(--radius-sm);
  font-size: 12px;
  color: var(--accent);
  line-height: 1.5;
}

/* 招聘信息 */
.recruit-card {
  margin: 0 16px 16px;
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.rc-header {
  background: linear-gradient(135deg, #9333ea 0%, #7c2dd6 100%);
  padding: 16px;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.rch-position { font-size: 16px; font-weight: 700; }
.rch-salary { font-size: 14px; font-weight: 600; }
.rc-info { padding: 12px 16px; }
.rci-row {
  display: flex;
  padding: 6px 0;
  font-size: 12px;
  border-bottom: 1px solid var(--border);
}
.rci-row:last-child { border-bottom: none; }
.rci-label { width: 70px; color: var(--text-3); flex-shrink: 0; }
.rci-value { flex: 1; color: var(--text); }

/* 招聘流程 */
.process-list { padding: 0 16px; }
.process-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 12px 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 12px;
}
.ps-step {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: #9333ea;
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700;
  flex-shrink: 0;
}
.ps-body { flex: 1; }
.ps-name { font-size: 13px; font-weight: 600; }
.ps-duration { font-size: 10px; color: var(--text-3); margin-left: 6px; }
.ps-desc { font-size: 11px; color: var(--text-2); margin-top: 2px; }

.recruit-contact {
  margin: 0 16px 20px;
  background: linear-gradient(135deg, #1a5fb4 0%, #2d7dd2 100%);
  border-radius: var(--radius);
  padding: 16px;
  color: #fff;
  box-shadow: 0 4px 16px rgba(26,95,180,0.25);
}
.recruit-contact .rctc-title { font-size: 15px; font-weight: 700; margin-bottom: 12px; }
.rctc-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid rgba(255,255,255,0.15);
  font-size: 13px;
  cursor: pointer;
}
.rctc-row:last-child { border-bottom: none; }
.rctc-row:active { opacity: 0.8; }
.rctc-label { opacity: 0.85; font-size: 12px; }
.rctc-value { font-weight: 600; }

/* ====== 福利考核 ====== */
.benefits-intro {
  margin: 0 16px 12px;
  padding: 10px 14px;
  background: var(--bg);
  border-radius: var(--radius-sm);
  font-size: 12px;
  color: var(--text-2);
  line-height: 1.5;
}
.benefits-list { padding: 0 16px; }
.benefit-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 12px;
}
.bf-icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.bf-body { flex: 1; min-width: 0; }
.bf-name { font-size: 14px; font-weight: 600; margin-bottom: 2px; }
.bf-content { font-size: 11px; color: var(--text-2); line-height: 1.4; }
.bf-value { font-size: 13px; font-weight: 700; color: var(--success); flex-shrink: 0; }
.bf-value small { font-size: 10px; font-weight: 400; color: var(--text-3); }

.assessment-list { padding: 0 16px; }
.assessment-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 12px 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 10px;
}
.as-dim { font-size: 14px; font-weight: 700; width: 80px; flex-shrink: 0; }
.as-weight { padding: 2px 10px; border-radius: 10px; font-size: 12px; font-weight: 700; flex-shrink: 0; }
.as-content { font-size: 11px; color: var(--text-2); line-height: 1.4; flex: 1; }

.promotion-list { padding: 0 16px; }
.promotion-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.pr-icon { font-size: 22px; flex-shrink: 0; }
.pr-body { flex: 1; }
.pr-rule { font-size: 13px; font-weight: 600; margin-bottom: 4px; }
.pr-desc { font-size: 11px; color: var(--text-2); line-height: 1.5; }

/* 薪酬承诺 */
.salary-promise {
  margin: 16px;
  background: linear-gradient(135deg, #9333ea 0%, #7c2dd6 100%);
  border-radius: var(--radius);
  padding: 20px 16px;
  color: #fff;
}
.sp-title { font-size: 15px; font-weight: 700; margin-bottom: 14px; }
.sp-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.sp-item { font-size: 12px; line-height: 1.6; opacity: 0.95; }
.sp-footer {
  text-align: center;
  font-size: 14px;
  font-weight: 700;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,0.2);
}

/* ============ 收费标准入口卡片（首页） ============ */
.pricing-entry {
  margin: 0 16px 16px;
  background: linear-gradient(135deg, #1a5fb4 0%, #2d7dd2 100%);
  border-radius: var(--radius);
  padding: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: #fff;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(26,95,180,0.25);
  transition: transform 0.15s;
}
.pricing-entry:active { transform: scale(0.98); }
.pricing-entry .pe-left { display: flex; align-items: center; gap: 12px; }
.pricing-entry .pe-icon {
  width: 44px; height: 44px;
  background: rgba(255,255,255,0.2);
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 22px;
}
.pricing-entry .pe-title { font-size: 15px; font-weight: 700; margin-bottom: 3px; }
.pricing-entry .pe-desc { font-size: 11px; opacity: 0.85; }
.pricing-entry .pe-arrow { display: flex; align-items: center; gap: 2px; font-size: 12px; opacity: 0.9; }
.pricing-entry .pe-arrow svg { width: 16px; height: 16px; }

/* ============ 收费标准页 ============ */
.pricing-header {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  padding: 0 16px 14px;
  color: #fff;
  display: flex;
  align-items: center;
  gap: 12px;
}
.pricing-back {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  cursor: pointer;
  flex-shrink: 0;
}
.pricing-back:active { background: rgba(255,255,255,0.3); }
.pricing-back svg { color: #fff; }
.pricing-title h2 { font-size: 18px; font-weight: 700; margin-bottom: 2px; }
.pricing-title p { font-size: 11px; opacity: 0.85; }

.pricing-tabs {
  display: flex;
  background: #fff;
  border-bottom: 1px solid var(--border);
  overflow-x: auto;
  position: sticky;
  top: 0;
  z-index: 50;
}
.pricing-tab {
  flex-shrink: 0;
  padding: 12px 14px;
  font-size: 13px;
  color: var(--text-2);
  white-space: nowrap;
  position: relative;
  transition: color 0.2s;
}
.pricing-tab.active { color: var(--primary); font-weight: 700; }
.pricing-tab.active::after {
  content: '';
  position: absolute;
  bottom: 0; left: 50%;
  transform: translateX(-50%);
  width: 24px; height: 3px;
  background: var(--primary);
  border-radius: 2px;
}

.pricing-content { min-height: 400px; }

/* ====== 智能估价器 ====== */
.calc-card {
  margin: 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 20px 16px;
  box-shadow: var(--shadow);
}
.calc-title { font-size: 17px; font-weight: 700; margin-bottom: 6px; }
.calc-desc { font-size: 12px; color: var(--text-2); margin-bottom: 20px; }
.calc-form { }
.calc-field { margin-bottom: 18px; }
.calc-field label {
  display: block;
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 10px;
  color: var(--text);
}
.calc-options {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.calc-option {
  padding: 8px 14px;
  border: 1.5px solid var(--border);
  border-radius: 20px;
  font-size: 12px;
  color: var(--text-2);
  background: var(--bg);
  cursor: pointer;
  transition: all 0.2s;
  display: flex;
  align-items: center;
  gap: 4px;
}
.calc-option.selected {
  border-color: var(--primary);
  background: var(--primary-light);
  color: var(--primary);
  font-weight: 600;
}
.calc-option .co-code {
  font-size: 10px;
  font-weight: 700;
  background: var(--text-3);
  color: #fff;
  padding: 1px 5px;
  border-radius: 4px;
}
.calc-option.selected .co-code { background: var(--primary); }
.calc-option .co-icon { font-size: 14px; }
.calc-option .co-industry-name { font-size: 13px; font-weight: 600; }
.calc-option .co-pains { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.calc-option .co-pain { font-size: 10px; color: var(--text-3); background: rgba(255,255,255,0.6); padding: 2px 6px; border-radius: 4px; font-weight: 400; }
.calc-option.selected .co-pain { color: var(--primary); background: rgba(255,255,255,0.9); }
.calc-hint {
  margin-top: 8px;
  font-size: 11px;
  line-height: 1.5;
}
.calc-btn { margin-top: 8px; }

/* 估价结果 */
.calc-result { margin: 0 16px 16px; }
.cr-card {
  background: linear-gradient(135deg, #1a5fb4 0%, #2d7dd2 100%);
  border-radius: var(--radius);
  padding: 20px;
  color: #fff;
  box-shadow: 0 4px 20px rgba(26,95,180,0.3);
}
.cr-header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.cr-badge {
  width: 48px; height: 48px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; font-weight: 700;
  flex-shrink: 0;
}
.cr-grade { font-size: 15px; font-weight: 700; }
.cr-industry { font-size: 12px; opacity: 0.85; margin-top: 2px; }
.cr-price-label { font-size: 12px; opacity: 0.85; margin-bottom: 4px; }
.cr-price { font-size: 32px; font-weight: 700; }
.cr-price .cr-unit { font-size: 14px; font-weight: 400; opacity: 0.85; }
.cr-detail {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid rgba(255,255,255,0.15);
}
.crd-row {
  display: flex;
  justify-content: space-between;
  padding: 6px 0;
  font-size: 12px;
}
.crd-row span:first-child { opacity: 0.8; }
.crd-row span:last-child { font-weight: 600; }
.cr-actions { margin-top: 16px; }
.cr-note { text-align: center; font-size: 11px; opacity: 0.7; margin-top: 8px; }

/* 小规模 vs 一般纳税人对比 */
.calc-info { margin: 0 16px 20px; }
.compare-card {
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.compare-row {
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
}
.compare-row:last-child { border-bottom: none; }
.cmp-dim {
  font-size: 12px;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 8px;
}
.cmp-val {
  font-size: 11px;
  color: var(--text-2);
  margin-bottom: 4px;
  line-height: 1.5;
}
.cmp-val:last-child { margin-bottom: 0; }
.cmp-tag {
  display: inline-block;
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 9px;
  font-weight: 700;
  margin-right: 6px;
}
.cmp-small .cmp-tag { background: var(--green-bg); color: var(--green); }
.cmp-general .cmp-tag { background: var(--success-bg); color: var(--success); }

/* ====== 客户分级卡片 ====== */
.grade-intro {
  margin: 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 16px;
  display: flex;
  align-items: center;
  gap: 14px;
  box-shadow: var(--shadow);
}
.grade-intro-icon { font-size: 32px; }
.grade-intro-title { font-size: 14px; font-weight: 700; margin-bottom: 4px; }
.grade-intro-desc { font-size: 12px; color: var(--text-2); }

.grade-card {
  margin: 0 16px 12px;
  background: #fff;
  border-radius: var(--radius);
  padding: 16px;
  box-shadow: var(--shadow);
}
.gc-top { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.gc-badge {
  width: 48px; height: 48px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; font-weight: 700;
  flex-shrink: 0;
}
.gc-name { font-size: 15px; font-weight: 700; }
.gc-revenue { font-size: 12px; color: var(--text-2); font-weight: 400; margin-left: 6px; }
.gc-desc { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.gc-prices { display: flex; gap: 10px; margin-bottom: 12px; }
.gc-price-item {
  flex: 1;
  border-radius: var(--radius-sm);
  padding: 12px;
  text-align: center;
}
.gc-price-small { background: var(--green-bg); }
.gc-price-general { background: var(--success-bg); }
.gc-price-na { background: var(--bg); }
.gcp-label { font-size: 11px; color: var(--text-2); margin-bottom: 4px; }
.gcp-value { font-size: 16px; font-weight: 700; }
.gc-price-small .gcp-value { color: var(--green); }
.gc-price-general .gcp-value { color: var(--success); }
.gc-price-na .gcp-value { color: var(--text-3); font-size: 18px; }
.gcp-unit { font-size: 10px; color: var(--text-3); margin-top: 2px; }
.gc-footer {
  display: flex;
  justify-content: space-between;
  padding-top: 10px;
  border-top: 1px solid var(--border);
  font-size: 11px;
  color: var(--text-2);
}

/* ====== 定价矩阵表格 ====== */
.matrix-legend {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px 8px;
  font-size: 11px;
  color: var(--text-2);
  flex-wrap: wrap;
}
.ml-item { display: flex; align-items: center; gap: 4px; }
.ml-dot { width: 10px; height: 10px; border-radius: 3px; }
.ml-small { background: var(--green); }
.ml-general { background: var(--success); }
.ml-note { color: var(--text-3); font-size: 10px; }

.matrix-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  padding: 0 16px;
}
.pricing-table {
  width: 100%;
  min-width: 800px;
  border-collapse: collapse;
  font-size: 11px;
}
.pricing-table th {
  background: var(--primary);
  color: #fff;
  padding: 10px 6px;
  text-align: center;
  font-weight: 600;
  font-size: 10px;
  line-height: 1.3;
  position: sticky;
  top: 0;
  white-space: nowrap;
}
.pricing-table th.pt-industry { text-align: left; padding-left: 12px; min-width: 100px; }
.pricing-table td {
  padding: 10px 6px;
  text-align: center;
  border-bottom: 1px solid var(--border);
}
.pricing-table tr.pt-alt td { background: #fafbfc; }
.pt-industry-cell {
  text-align: left;
  padding-left: 12px;
  font-weight: 600;
  font-size: 12px;
  white-space: nowrap;
}
.pt-cell { font-size: 11px; white-space: nowrap; word-break: keep-all; }
.pt-small { color: var(--green); background: rgba(45,157,95,0.04); }
.pt-general { color: var(--success); background: rgba(230,57,70,0.04); }
.pt-na { color: var(--text-3); }

/* ====== 复杂度评级 ====== */
.complexity-list { padding: 0 16px; }
.complexity-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 10px;
  box-shadow: var(--shadow);
}
.cx-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.cx-name { font-size: 14px; font-weight: 700; }
.cx-level {
  padding: 2px 10px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
}
.cx-reps { font-size: 11px; color: var(--text-3); margin-bottom: 6px; }
.cx-stars { font-size: 14px; color: var(--accent); margin-bottom: 4px; letter-spacing: 2px; }
.cx-desc { font-size: 11px; color: var(--text-2); line-height: 1.5; }

/* 调整系数 */
.factor-list { padding: 0 16px; }
.factor-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 12px;
}
.fc-left { flex: 1; }
.fc-name { font-size: 13px; font-weight: 600; margin-bottom: 2px; }
.fc-desc { font-size: 11px; color: var(--text-2); line-height: 1.4; }
.fc-coeff {
  font-size: 15px;
  font-weight: 700;
  color: var(--success);
  white-space: nowrap;
  flex-shrink: 0;
}
.factor-note {
  margin: 8px 16px 20px;
  padding: 10px 14px;
  background: var(--accent-light);
  border-radius: var(--radius-sm);
  font-size: 11px;
  color: var(--accent);
  line-height: 1.5;
}

/* ====== 服务范围对照表 ====== */
.scope-intro { padding: 14px 16px 8px; }
.si-text { font-size: 12px; color: var(--text-2); }
.scope-table {
  width: 100%;
  min-width: 480px;
  border-collapse: collapse;
  font-size: 11px;
}
.scope-table th {
  background: var(--primary);
  color: #fff;
  padding: 8px 4px;
  text-align: center;
  font-weight: 600;
  position: sticky;
  top: 0;
}
.scope-table th.st-name { text-align: left; padding-left: 12px; min-width: 140px; }
.st-grade { min-width: 42px; }
.stg-code { font-size: 13px; font-weight: 700; }
.stg-name { font-size: 9px; opacity: 0.85; }
.scope-table td {
  padding: 8px 4px;
  text-align: center;
  border-bottom: 1px solid var(--border);
}
.scope-table tr.st-alt td { background: #fafbfc; }
.st-name-cell {
  text-align: left;
  padding-left: 12px;
  font-size: 12px;
  white-space: nowrap;
}
.st-yes { color: var(--green); font-size: 14px; font-weight: 700; }
.st-no { color: var(--text-3); font-size: 14px; }
.st-part { color: var(--accent); font-size: 14px; font-weight: 700; }
.scope-note {
  padding: 10px 16px 20px;
  font-size: 11px;
  color: var(--text-3);
  line-height: 1.5;
}

/* ====== 附加服务 ====== */
.additional-list { padding: 16px; }
.additional-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 10px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.as-icon {
  width: 44px; height: 44px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px;
  flex-shrink: 0;
}
.as-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.as-name { font-size: 15px; font-weight: 600; line-height: 1.4; word-break: break-word; }
.as-price { font-size: 14px; font-weight: 700; color: var(--success); line-height: 1.4; word-break: break-word; }
.as-price .asp-unit { font-size: 11px; font-weight: normal; color: var(--text-3); margin-left: 4px; }
.as-meta { display: flex; gap: 12px; font-size: 11px; color: var(--text-3); flex-wrap: wrap; }

/* ====== 收费说明 ====== */
.notes-card {
  margin: 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 16px;
  box-shadow: var(--shadow);
}
.notes-title { font-size: 16px; font-weight: 700; margin-bottom: 14px; }
.notes-list { }
.note-item {
  display: flex;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}
.note-item:last-child { border-bottom: none; }
.note-num {
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--primary-light);
  color: var(--primary);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700;
  flex-shrink: 0;
}
.note-text { font-size: 12px; color: var(--text-2); line-height: 1.6; }

/* 联系卡片 */
.contact-card {
  margin: 0 16px 20px;
  background: linear-gradient(135deg, #1a5fb4 0%, #2d7dd2 100%);
  border-radius: var(--radius);
  padding: 16px;
  color: #fff;
  box-shadow: 0 4px 16px rgba(26,95,180,0.25);
}
.cc-title { font-size: 15px; font-weight: 700; margin-bottom: 12px; }
.cc-rows { }
.cc-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid rgba(255,255,255,0.15);
  font-size: 13px;
}
.cc-row:last-child { border-bottom: none; }
.cc-label { opacity: 0.85; font-size: 12px; }
.cc-value { font-weight: 600; }

/* ========================================
   双角色身份系统 - 新增样式
   ======================================== */

/* ====== 启动页 ====== */
.splash-page {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: stretch;
  justify-content: center;
}
.splash-container {
  position: relative;
  width: 100%;
  max-width: 480px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: linear-gradient(160deg, #0d3b7a 0%, #1a5fb4 35%, #2d7dd2 65%, #4a9fe8 100%);
  overflow: hidden;
  text-align: center;
  color: #fff;
  padding: 40px 24px;
}
/* 背景装饰圆圈 */
.splash-bg-circles { position: absolute; inset: 0; pointer-events: none; }
.sbc {
  position: absolute;
  border-radius: 50%;
  background: rgba(255,255,255,0.08);
}
.sbc-1 { width: 300px; height: 300px; top: -80px; right: -100px; }
.sbc-2 { width: 200px; height: 200px; bottom: 120px; left: -60px; background: rgba(255,255,255,0.06); }
.sbc-3 { width: 120px; height: 120px; top: 40%; right: -40px; background: rgba(255,255,255,0.05); }

.splash-content {
  position: relative;
  z-index: 2;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  animation: splashFadeIn 0.8s ease;
}
@keyframes splashFadeIn {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}
.splash-logo {
  width: 160px;
  height: auto;
  max-height: 120px;
  margin-bottom: 28px;
  overflow: hidden;
  animation: splashLogoPulse 2.5s ease-in-out infinite;
}
@keyframes splashLogoPulse {
  0%, 100% { transform: scale(1); filter: drop-shadow(0 8px 16px rgba(0,0,0,0.25)); }
  50% { transform: scale(1.03); filter: drop-shadow(0 12px 24px rgba(0,0,0,0.35)); }
}
.splash-logo img { width: 100%; height: auto; object-fit: contain; display: block; }

.splash-welcome {
  font-size: 28px;
  font-weight: 800;
  letter-spacing: 2px;
  margin-bottom: 12px;
  text-shadow: 0 2px 12px rgba(0,0,0,0.2);
}
.splash-subtitle {
  font-size: 15px;
  opacity: 0.92;
  line-height: 1.6;
  margin-bottom: 24px;
  max-width: 260px;
}
.splash-question {
  font-size: 16px;
  font-weight: 600;
  color: #ffe9a8;
  padding: 8px 20px;
  background: rgba(255,255,255,0.12);
  border-radius: 20px;
  border: 1px solid rgba(255,255,255,0.2);
}

.splash-bottom {
  position: relative;
  z-index: 2;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  margin-bottom: 20px;
}
.splash-enter-btn {
  width: 80%;
  max-width: 280px;
  height: 50px;
  border: none;
  border-radius: 25px;
  background: linear-gradient(135deg, #fff, #f0f6ff);
  color: #1a5fb4;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 1px;
  cursor: pointer;
  box-shadow: 0 6px 20px rgba(0,0,0,0.2);
  transition: transform 0.15s, box-shadow 0.15s;
}
.splash-enter-btn:active {
  transform: scale(0.96);
  box-shadow: 0 3px 12px rgba(0,0,0,0.2);
}
.splash-countdown {
  font-size: 13px;
  opacity: 0.8;
}
.splash-countdown span { font-weight: 700; font-size: 15px; }

.splash-copyright {
  position: relative;
  z-index: 2;
  font-size: 11px;
  opacity: 0.6;
  line-height: 1.5;
}

/* ====== 登录页 ====== */
.login-page {
  min-height: 100vh;
  background: var(--bg);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  display: flex;
  flex-direction: column;
}
.login-container {
  max-width: 480px;
  width: 100%;
  margin: 0 auto;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  position: relative;
}
.login-bg {
  background: linear-gradient(135deg, #1a5fb4 0%, #2d7dd2 100%);
  padding: 48px 24px 36px;
  text-align: center;
  color: #fff;
  border-radius: 0 0 24px 24px;
}
.login-logo {
  width: 130px;
  height: auto;
  max-height: 90px;
  margin: 0 auto 14px;
  overflow: hidden;
}
.login-logo img { width: 100%; height: auto; object-fit: contain; display: block; }
.login-title { font-size: 26px; font-weight: 700; margin-bottom: 4px; }
.login-subtitle { font-size: 13px; opacity: 0.85; }

.login-card {
  margin: -16px 16px 0;
  background: #fff;
  border-radius: var(--radius-lg);
  padding: 24px 20px;
  box-shadow: var(--shadow-lg);
  flex: 1;
}
.login-card-title { font-size: 18px; font-weight: 700; text-align: center; margin-bottom: 4px; }
.login-card-desc { font-size: 12px; color: var(--text-2); text-align: center; margin-bottom: 20px; }

/* 角色选择 */
.role-select { display: flex; flex-direction: column; gap: 12px; margin-bottom: 20px; }
.role-card {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 16px;
  border-radius: var(--radius);
  border: 2px solid var(--border);
  background: #fff;
  transition: all 0.2s;
  cursor: pointer;
}
.role-card.selected {
  border-color: var(--primary);
  background: var(--primary-light);
}
.rc-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  flex-shrink: 0;
}
.rc-body { flex: 1; min-width: 0; }
.rc-name { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.rc-desc { font-size: 12px; color: var(--text-2); margin-bottom: 8px; line-height: 1.4; }
.rc-features { display: flex; flex-wrap: wrap; gap: 6px; }
.rc-feature {
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 10px;
  background: var(--bg);
  color: var(--text-2);
}
.rc-check {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 2px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  color: #fff;
  flex-shrink: 0;
  transition: all 0.2s;
}
.rc-check.checked {
  background: var(--primary);
  border-color: var(--primary);
}

/* 登录表单 */
.login-form { padding-top: 4px; }
.form-group { margin-bottom: 14px; }
.form-group label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 6px;
}
.form-group input,
.form-group select,
.form-group textarea {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  font-size: 14px;
  color: var(--text);
  background: #fff;
  transition: border-color 0.2s;
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  border-color: var(--primary);
}
.form-group textarea { resize: none; min-height: 80px; line-height: 1.5; }
.form-group select { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%236b7280' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; background-size: 20px; padding-right: 36px; }

/* 短信验证码登录：验证码输入框 + 获取按钮 */
.form-group.sms-code-group { position: relative; }
.form-group.sms-code-group input { padding-right: 118px; }
.sms-code-btn {
  position: absolute;
  right: 8px;
  top: 33px;
  height: 32px;
  padding: 0 12px;
  border: none;
  border-radius: 6px;
  background: var(--primary);
  color: #fff;
  font-size: 12px;
  white-space: nowrap;
  cursor: pointer;
}
.sms-code-btn:active { opacity: 0.85; }

.login-btn { width: 100%; margin-top: 4px; }
.login-actions {
  display: flex;
  justify-content: space-between;
  margin-top: 14px;
  font-size: 12px;
}
.login-actions span { color: var(--primary); cursor: pointer; }

/* 演示账号提示 */
.login-demo-hint { margin-top: 16px; padding: 12px; background: rgba(45,157,95,0.06); border-radius: 10px; }
.ldh-title { font-size: 12px; font-weight: 700; color: #2d9d5f; margin-bottom: 8px; }
.ldh-item { font-size: 12px; color: var(--text-2); padding: 4px 0; cursor: pointer; }
.ldh-item:active { color: var(--primary); }

.login-notice {
  text-align: center;
  padding: 20px;
  font-size: 13px;
  color: var(--text-3);
}
.login-agreement {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
  text-align: center;
  font-size: 12px;
  color: var(--text-2);
}
.login-agreement-check {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
  cursor: pointer;
}
.login-agreement-check input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: var(--primary);
  cursor: pointer;
}
.login-agreement-links span {
  color: var(--primary);
  cursor: pointer;
}
.login-admin-entry {
  position: absolute;
  right: 16px;
  bottom: 72px;
  padding: 10px 16px;
  background: rgba(26, 95, 180, 0.92);
  color: #fff;
  border-radius: 20px;
  font-size: 13px;
  font-weight: 600;
  box-shadow: 0 4px 12px rgba(26, 95, 180, 0.3);
  cursor: pointer;
  z-index: 10;
}

/* ====== [v=20260814-r8 移动端登录修复] 协议复选框移到登录按钮上方 ====== */
.login-agree-inline {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  flex-wrap: wrap;
  margin: 14px 0 16px;
  padding: 10px 12px;
  font-size: 13px;
  color: var(--text-2);
  background: #f7f9fc;
  border-radius: 10px;
  border: 1px dashed transparent;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  transition: border-color 0.2s, background 0.2s;
}
.login-agree-inline.shake {
  animation: agreeShake 0.45s ease 0s 3;
  border-color: #e74c3c;
  background: #fff3f3;
}
.login-agree-inline input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin-right: 4px;
  accent-color: var(--primary);
  cursor: pointer;
  flex-shrink: 0;
}
.login-agree-inline-link {
  color: var(--primary);
  cursor: pointer;
  padding: 2px 0;
}
.login-agree-inline-link:active {
  opacity: 0.6;
}
@keyframes agreeShake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-6px); }
  40% { transform: translateX(6px); }
  60% { transform: translateX(-4px); }
  80% { transform: translateX(4px); }
}

/* 大号居中提示弹窗（移动端点登录未勾协议时使用） */
.agreement-alert-mask {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.45);
  animation: fadeIn 0.18s ease;
}
.agreement-alert-card {
  background: #fff;
  border-radius: 16px;
  padding: 24px 22px 18px;
  width: 84%;
  max-width: 340px;
  text-align: center;
  box-shadow: 0 12px 40px rgba(0,0,0,0.25);
  animation: alertPop 0.25s ease;
}
.agreement-alert-card .icon {
  font-size: 40px;
  line-height: 1;
  margin-bottom: 10px;
}
.agreement-alert-card .title {
  font-size: 17px;
  font-weight: 700;
  color: #1a1a1a;
  margin-bottom: 8px;
}
.agreement-alert-card .desc {
  font-size: 14px;
  color: #555;
  line-height: 1.55;
  margin-bottom: 18px;
}
.agreement-alert-card .actions {
  display: flex;
  gap: 10px;
}
.agreement-alert-card .actions button {
  flex: 1;
  padding: 11px 0;
  border-radius: 22px;
  font-size: 15px;
  font-weight: 600;
  border: none;
  cursor: pointer;
}
.agreement-alert-card .btn-primary-mini {
  background: var(--primary);
  color: #fff;
}
.agreement-alert-card .btn-primary-mini:active {
  background: #175a9c;
}
.agreement-alert-card .btn-ghost-mini {
  background: #f1f3f5;
  color: #555;
}
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes alertPop {
  from { transform: scale(0.85); opacity: 0; }
  to   { transform: scale(1);    opacity: 1; }
}
.login-admin-entry:active {
  background: rgba(26, 95, 180, 1);
}
.login-footer {
  text-align: center;
  padding: 20px 16px 24px;
  font-size: 11px;
  color: var(--text-3);
  line-height: 1.6;
}

/* ====== 网站备案页脚（v=20260817-r16 合规展示） ====== */
.site-footer {
  margin-top: 18px;
  padding: 16px 16px calc(16px + var(--safe-bottom));
  border-top: 1px solid var(--border);
  text-align: center;
  background: var(--bg);
}
.site-footer .sf-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  color: var(--text-2);
  text-decoration: none;
}
.site-footer .sf-badge { color: var(--primary); flex-shrink: 0; }
.site-footer .sf-org {
  margin-top: 6px;
  font-size: 11px;
  color: var(--text-3);
  line-height: 1.5;
}

/* ====== 身份徽章 ====== */
.role-badge {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 700;
  white-space: nowrap;
  vertical-align: middle;
}
.role-badge-enterprise {
  background: #e8f1fb;
  color: #1a5fb4;
}
.role-badge-admin {
  background: #f3e8ff;
  color: #9333ea;
}

/* ====== 管理员首页 ====== */
.admin-header {
  background: #fff;
  padding: 8px 16px;
  border-bottom: 1px solid var(--border);
}
.admin-header .home-header-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.home-logo { display: flex; align-items: center; gap: 8px; }
.logo-img { height: 32px; width: auto; }
/* 首页 LOGO 图片紧贴顶部：宽度 100%、高度自适应（r12 贴边放大） */
.home-header .logo-img {
  width: 100%;
  height: auto;
  max-height: 160px;
  object-fit: contain;
  display: block;
}
.admin-badge-mini {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 20px;
  background: #f3e8ff;
  color: #9333ea;
  font-size: 12px;
  font-weight: 600;
}
.abm-icon { font-size: 14px; }

.admin-welcome {
  margin: 12px 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-shadow: var(--shadow);
}
.aw-left { display: flex; align-items: center; gap: 12px; }
.aw-avatar {
  width: 44px; height: 44px;
  border-radius: 50%;
  background: #f3e8ff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
}
.aw-name { font-size: 15px; font-weight: 700; }
.aw-title { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.aw-date { font-size: 13px; color: var(--text-2); }

/* 数据看板 */
.stats-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  padding: 0 16px;
  margin-bottom: 4px;
}
.stat-card {
  border-radius: var(--radius);
  padding: 14px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  box-shadow: var(--shadow);
}
.stat-blue { background: linear-gradient(135deg, #e8f1fb 0%, #d1e4f9 100%); }
.stat-green { background: linear-gradient(135deg, #e8f7ef 0%, #d1efe0 100%); }
.stat-orange { background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%); }
.stat-purple { background: linear-gradient(135deg, #f3e8ff 0%, #e9d5ff 100%); }
.sc-icon { font-size: 24px; margin-bottom: 6px; }
.sc-num { font-size: 22px; font-weight: 700; color: var(--text); }
.stat-blue .sc-num { color: #1a5fb4; }
.stat-green .sc-num { color: #2d9d5f; }
.stat-orange .sc-num { color: #f97316; }
.stat-purple .sc-num { color: #9333ea; }
.sc-label { font-size: 11px; color: var(--text-2); margin-top: 2px; }

/* 服务分布 */
.dist-card {
  margin: 0 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  box-shadow: var(--shadow);
}
.dist-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
}
.dr-name { font-size: 12px; color: var(--text); width: 80px; flex-shrink: 0; }
.dr-bar-wrap {
  flex: 1;
  height: 8px;
  background: var(--bg);
  border-radius: 4px;
  overflow: hidden;
}
.dr-bar {
  height: 100%;
  border-radius: 4px;
  transition: width 0.5s ease;
}
.dr-count { font-size: 12px; font-weight: 600; color: var(--text-2); width: 36px; text-align: right; flex-shrink: 0; }

/* 快捷操作 */
.admin-actions {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  padding: 0 16px;
}
.admin-action {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 12px 4px;
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  cursor: pointer;
  position: relative;
}
.aa-icon {
  width: 40px; height: 40px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
}
.aa-badge {
  position: absolute;
  top: 6px;
  right: 14px;
  min-width: 16px;
  height: 16px;
  border-radius: 8px;
  background: #e63946;
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
}
.admin-action span { font-size: 11px; color: var(--text); }

/* 待办事项 */
.todo-card {
  margin: 0 16px;
  background: #fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.todo-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px;
  cursor: pointer;
}
.ti-icon {
  width: 36px; height: 36px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.ti-urgent { background: #fef0f0; }
.ti-body { flex: 1; min-width: 0; }
.ti-title { font-size: 14px; font-weight: 600; }
.ti-desc { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.ti-arrow { font-size: 20px; color: var(--text-3); }

/* 最近动态 */
.activity-list {
  margin: 0 16px;
  background: #fff;
  border-radius: var(--radius);
  padding: 4px 14px;
  box-shadow: var(--shadow);
}
.activity-item {
  display: flex;
  gap: 10px;
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
}
.activity-item:last-child { border-bottom: none; }
.ai-icon {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--primary-light);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  flex-shrink: 0;
}
.ai-body { flex: 1; min-width: 0; }
.ai-text { font-size: 13px; color: var(--text); line-height: 1.4; }
.ai-time { font-size: 11px; color: var(--text-3); margin-top: 2px; }

/* ====== 首页产品上架入口 ====== */
.apply-entry {
  margin: 0 16px 12px;
  background: linear-gradient(135deg, #1a5fb4 0%, #2d7dd2 100%);
  border-radius: var(--radius);
  padding: 14px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: #fff;
  box-shadow: 0 4px 16px rgba(26,95,180,0.25);
  cursor: pointer;
}
.ae-left { display: flex; align-items: center; gap: 12px; }
.ae-icon {
  width: 44px; height: 44px;
  border-radius: 12px;
  background: rgba(255,255,255,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
}
.ae-title { font-size: 15px; font-weight: 700; }
.ae-desc { font-size: 11px; opacity: 0.85; margin-top: 2px; }
.ae-arrow {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
  flex-shrink: 0;
}

/* ====== 聊天弹窗 ====== */
.chat-overlay {
  position: fixed;
  top: 0; left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.4);
  z-index: 10000;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.chat-panel {
  max-width: 480px;
  width: 100%;
  margin: 0 auto;
  height: 100%;
  background: #f4f5f9;
  display: flex;
  flex-direction: column;
  animation: chatSlideUp 0.25s ease;
}
@keyframes chatSlideUp {
  from { transform: translateY(100%); }
  to { transform: translateY(0); }
}
.chat-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  padding-top: calc(10px + var(--safe-top));
  color: #fff;
  flex-shrink: 0;
}
.ch-back {
  width: 32px; height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
}
.ch-avatar {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: rgba(255,255,255,0.25);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.ch-info { flex: 1; min-width: 0; }
.ch-name { font-size: 15px; font-weight: 700; display: flex; align-items: center; gap: 6px; }
.ch-status { font-size: 11px; opacity: 0.85; margin-top: 1px; }

.chat-body {
  flex: 1;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 12px 14px;
}
.chat-date {
  text-align: center;
  font-size: 11px;
  color: var(--text-3);
  margin-bottom: 12px;
}
.chat-msg {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
  align-items: flex-start;
}
.chat-msg-me {
  flex-direction: row-reverse;
}
.cm-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: #e8f1fb;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
}
.cm-avatar-me { background: #f3e8ff; }
.cm-content { max-width: 72%; }
.chat-msg-me .cm-content { text-align: right; }
.cm-sender {
  font-size: 11px;
  color: var(--text-2);
  margin-bottom: 3px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.chat-msg-me .cm-sender { justify-content: flex-end; }
.cm-bubble {
  display: inline-block;
  padding: 10px 14px;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
  text-align: left;
  word-break: break-word;
}
.chat-msg-other .cm-bubble {
  background: #fff;
  color: var(--text);
  border-top-left-radius: 4px;
}
.chat-msg-me .cm-bubble {
  background: var(--primary);
  color: #fff;
  border-top-right-radius: 4px;
}
.cm-time { font-size: 10px; color: var(--text-3); margin-top: 3px; }
.chat-tip {
  margin-top: 8px;
  padding: 8px 12px;
  background: #fff8e1;
  border-radius: 8px;
  font-size: 11px;
  color: var(--accent);
  text-align: center;
  line-height: 1.5;
}

.chat-input-area {
  display: flex;
  gap: 8px;
  padding: 10px 12px;
  padding-bottom: calc(10px + var(--safe-bottom));
  background: #fff;
  border-top: 1px solid var(--border);
  flex-shrink: 0;
}
.chat-input-area input {
  flex: 1;
  padding: 10px 14px;
  border: 1px solid var(--border);
  border-radius: 22px;
  font-size: 14px;
  background: var(--bg);
}
.chat-send {
  padding: 0 18px;
  border-radius: 22px;
  background: var(--primary);
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  white-space: nowrap;
  flex-shrink: 0;
}

/* ====== 企业消息页 - 顾问对话入口 ====== */
.chat-entry {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: #fff;
  border-bottom: 6px solid var(--bg);
  cursor: pointer;
}
.ce-avatar {
  position: relative;
  width: 48px; height: 48px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  flex-shrink: 0;
}
.ce-online {
  position: absolute;
  bottom: 2px;
  right: 2px;
  width: 10px; height: 10px;
  border-radius: 50%;
  background: #22c55e;
  border: 2px solid #fff;
}
.ce-body { flex: 1; min-width: 0; }
.ce-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; }
.ce-name { font-size: 14px; font-weight: 700; display: flex; align-items: center; gap: 6px; }
.ce-time { font-size: 11px; color: var(--text-3); flex-shrink: 0; }
.ce-text {
  font-size: 13px;
  color: var(--text-2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ====== 产品上架申请弹窗 ====== */
.apply-intro {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px;
  background: linear-gradient(135deg, #e8f1fb 0%, #f0f7ff 100%);
  border-radius: var(--radius);
  margin-bottom: 16px;
}
.ai-icon-large {
  width: 44px; height: 44px;
  border-radius: 12px;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
}
.ai-title-large { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.ai-desc-large { font-size: 12px; color: var(--text-2); line-height: 1.5; }

/* 上传区域 */
.upload-area {
  border: 2px dashed var(--border);
  border-radius: var(--radius);
  padding: 28px 16px;
  text-align: center;
  cursor: pointer;
  transition: border-color 0.2s;
}
.upload-area:active { border-color: var(--primary); }
.ua-icon { font-size: 32px; margin-bottom: 8px; }
.ua-text { font-size: 14px; font-weight: 600; color: var(--text); }
.ua-hint { font-size: 11px; color: var(--text-3); margin-top: 4px; }

/* 上架须知 */
.apply-notice {
  margin-top: 16px;
  padding: 14px;
  background: #fff8e1;
  border-radius: var(--radius);
}
.an-title { font-size: 13px; font-weight: 700; color: var(--accent); margin-bottom: 8px; }
.an-item {
  font-size: 12px;
  color: var(--text-2);
  line-height: 1.8;
}

/* ====== 产品审核弹窗 ====== */
.review-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 12px;
  box-shadow: var(--shadow);
  border-left: 3px solid transparent;
}
.review-pending { border-left-color: #f97316; }
.review-approved { border-left-color: #2d9d5f; }
.rv-top { display: flex; gap: 10px; align-items: flex-start; }
.rv-icon {
  width: 44px; height: 44px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
}
.rv-body { flex: 1; min-width: 0; }
.rv-name { font-size: 14px; font-weight: 700; }
.rv-company { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.rv-meta { display: flex; gap: 12px; font-size: 11px; color: var(--text-3); margin-top: 4px; }
.rv-status {
  font-size: 11px;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 4px;
  white-space: nowrap;
  flex-shrink: 0;
}
.rv-status-pending { background: #fff7ed; color: #f97316; }
.rv-status-approved { background: #e8f7ef; color: #2d9d5f; }
.rv-desc {
  font-size: 12px;
  color: var(--text-2);
  line-height: 1.5;
  margin-top: 10px;
  padding: 8px 10px;
  background: var(--bg);
  border-radius: var(--radius-sm);
}
.rv-actions {
  display: flex;
  gap: 10px;
  margin-top: 12px;
}
.rv-actions .btn { flex: 1; }

/* ====== 客户列表弹窗 ====== */
.client-card {
  background: #fff;
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 12px;
  box-shadow: var(--shadow);
}
.cl-top { display: flex; gap: 12px; align-items: flex-start; }
.cl-avatar {
  width: 44px; height: 44px;
  border-radius: 50%;
  background: #e8f1fb;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
}
.cl-body { flex: 1; min-width: 0; }
.cl-name { font-size: 14px; font-weight: 700; display: flex; align-items: center; gap: 6px; }
.cl-company { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.cl-meta { display: flex; gap: 12px; font-size: 11px; color: var(--text-3); margin-top: 4px; }
.cl-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 4px;
  margin-top: 12px;
  padding: 10px;
  background: var(--bg);
  border-radius: var(--radius-sm);
}
.cls-item { text-align: center; }
.cls-num { font-size: 14px; font-weight: 700; color: var(--text); }
.cls-label { font-size: 10px; color: var(--text-3); margin-top: 2px; }
.cl-actions {
  display: flex;
  gap: 10px;
  margin-top: 12px;
}
.cl-actions .btn { flex: 1; }

/* ====== 管理员个人中心紫色头部 ====== */
.profile-header[style*="9333ea"] .profile-avatar {
  background: rgba(255,255,255,0.25) !important;
}

/* ====== 服务管理 - 管理模式提示条 ====== */
.admin-service-tip {
  display: flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, #f3e8ff 0%, #ede0fe 100%);
  border: 1px solid #d8b4fe;
  border-radius: 10px;
  padding: 10px 14px;
  margin-bottom: 12px;
}
.admin-service-tip .ast-icon { font-size: 16px; }
.admin-service-tip .ast-text { font-size: 12px; color: #7c2dd6; font-weight: 500; line-height: 1.5; }

/* 服务卡片编辑按钮 */
.svc-edit-btn {
  border-color: #9333ea !important;
  color: #9333ea !important;
  background: #faf5ff !important;
}
.svc-edit-btn:active { background: #f3e8ff !important; }

/* ====== 服务编辑弹窗 ====== */
.svc-edit-banner {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--bg);
  border-radius: 12px;
  padding: 14px;
  margin-bottom: 16px;
}
.svc-edit-banner .seb-icon {
  width: 48px; height: 48px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 24px;
  background: #fff;
}
.svc-edit-banner .seb-name { font-size: 16px; font-weight: 700; color: var(--text); }
.svc-edit-banner .seb-cat { font-size: 12px; color: var(--text-3); margin-top: 2px; }

.edit-compare-label {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-2);
  margin: 14px 0 8px;
  padding-left: 2px;
}
.edit-original-box {
  background: #f8f9fb;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 16px;
}
.eob-row {
  display: flex;
  gap: 8px;
  padding: 4px 0;
  font-size: 13px;
}
.eob-row .eob-key {
  flex-shrink: 0;
  width: 64px;
  color: var(--text-3);
  font-size: 12px;
}
.eob-row .eob-val { color: var(--text-2); flex: 1; word-break: break-all; }

.edit-notice {
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 10px;
  padding: 12px 14px;
  margin-top: 12px;
}
.edit-notice .an-title { font-size: 13px; font-weight: 600; color: #92400e; margin-bottom: 6px; }
.edit-notice .an-item { font-size: 12px; color: #78350f; line-height: 1.8; }

/* ====== 服务修改审核弹窗 ====== */
.review-section-label {
  font-size: 14px;
  font-weight: 700;
  color: var(--text);
  padding: 8px 0;
}

/* 审核卡片 */
.ser-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px;
  margin-bottom: 12px;
}
.ser-card.ser-pending { border-color: #fde68a; background: #fffdf7; }
.ser-card.ser-approved { border-color: #bbf7d0; background: #f0fdf4; }
.ser-card.ser-rejected { border-color: #fecaca; background: #fef2f2; }

.ser-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}
.ser-cat-badge {
  display: inline-block;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 2px 10px;
  font-size: 11px;
  color: var(--text-2);
  font-weight: 500;
}
.ser-status { font-size: 12px; font-weight: 600; }
.ser-status-pending { color: #d97706; }
.ser-status-approved { color: #16a34a; }
.ser-status-rejected { color: #dc2626; }

/* 差异对比列表 */
.ser-diff-list { margin-bottom: 10px; }
.ser-diff-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  background: rgba(0,0,0,0.02);
  border-radius: 8px;
  margin-bottom: 6px;
}
.ser-diff-item .sd-label {
  flex-shrink: 0;
  width: 70px;
  font-size: 12px;
  color: var(--text-3);
  font-weight: 500;
}
.ser-diff-item .sd-old {
  font-size: 13px;
  color: var(--text-3);
  text-decoration: line-through;
  text-decoration-color: #dc2626;
  flex: 1;
  word-break: break-all;
}
.ser-diff-item .sd-arrow { font-size: 14px; color: var(--text-3); flex-shrink: 0; }
.ser-diff-item .sd-new {
  font-size: 13px;
  color: #16a34a;
  font-weight: 600;
  flex: 1;
  word-break: break-all;
}

/* 描述类差异（纵向排列） */
.ser-diff-desc { flex-direction: column; align-items: flex-start; }
.ser-diff-desc .sd-desc-pair { flex: 1; width: 100%; }
.ser-diff-desc .sd-old {
  text-decoration: line-through;
  text-decoration-color: #dc2626;
  font-size: 12px;
  line-height: 1.5;
  margin-bottom: 4px;
}
.ser-diff-desc .sd-arrow-down { text-align: center; font-size: 14px; color: var(--text-3); margin: 2px 0; }
.ser-diff-desc .sd-new { font-size: 12px; line-height: 1.5; }

/* 修改原因 */
.ser-reason-box {
  background: var(--bg);
  border-radius: 8px;
  padding: 8px 12px;
  margin-bottom: 8px;
  font-size: 12px;
  line-height: 1.5;
}
.ser-reason-box .sr-label { color: var(--text-3); font-weight: 500; }
.ser-reason-box .sr-text { color: var(--text-2); }

/* 元信息 */
.ser-meta {
  display: flex;
  gap: 16px;
  font-size: 11px;
  color: var(--text-3);
  padding: 4px 0;
}

/* 审核操作按钮 */
.ser-actions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}
.ser-actions .btn { flex: 1; }

/* 已审核的元信息 */
.ser-reviewed-meta {
  font-size: 11px;
  color: var(--text-3);
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
}

/* ======== 企业信息 - 工商搜索 ======== */
.ei-bound-section { margin-bottom: 20px; }
.ei-section-title {
  display: flex; align-items: center; gap: 8px;
  font-size: 14px; font-weight: 700; color: var(--text);
  margin-bottom: 12px;
}
.ei-count-badge {
  background: var(--primary-light); color: var(--primary);
  font-size: 11px; padding: 2px 8px; border-radius: 10px;
  font-weight: 600;
}

/* [r112] 执照与企业的概念说明：客户经常分不清「绑执照」和「绑企业档案」 */
.ei-concept-tip {
  background: #f0f7ff; border: 1px solid #cfe3fb;
  border-radius: var(--radius); padding: 12px 13px; margin-bottom: 18px;
}
.ei-concept-tip .eict-title {
  font-size: 13px; font-weight: 700; color: var(--primary); margin-bottom: 6px;
}
.ei-concept-tip .eict-body {
  font-size: 12px; color: var(--text-2); line-height: 1.85;
}
.ei-concept-tip .eict-body b { color: var(--text); }

/* [r112] 「再绑一张执照」按钮：放在执照列表标题旁，别让客户以为只能绑一张 */
.ei-add-lic-btn {
  margin-left: auto;
  background: var(--primary-light); color: var(--primary);
  border: 1px solid var(--primary); border-radius: 8px;
  font-size: 11.5px; font-weight: 600; padding: 4px 10px;
  cursor: pointer; white-space: nowrap;
}
.ei-add-lic-btn:active { background: var(--primary); color: #fff; }
.ei-bound-card {
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius); padding: 14px;
  margin-bottom: 10px; position: relative;
}
.ei-bound-top {
  display: flex; align-items: center; gap: 10px; margin-bottom: 12px;
  padding-bottom: 12px; border-bottom: 1px solid var(--border);
}
.ei-bound-icon { font-size: 28px; }
.ei-bound-body { flex: 1; }
.ei-bound-name { font-size: 14px; font-weight: 700; color: var(--text); }
.ei-bound-credit { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.ei-bound-status {
  font-size: 11px; color: #2d9d5f; font-weight: 600;
  background: #e8f7ef; padding: 4px 10px; border-radius: 10px;
}
.ei-bound-info { display: grid; gap: 6px; }
.ei-info-row {
  display: flex; justify-content: space-between;
  font-size: 12px; color: var(--text-2);
}
.ei-info-row span:first-child { color: var(--text-3); min-width: 80px; }
.ei-info-row span:last-child { text-align: right; flex: 1; }
.ei-info-scope { color: var(--text-2) !important; }
.ei-info-status { color: #2d9d5f !important; font-weight: 600; }
.ei-unbind-btn { margin-top: 10px; width: 100%; }
.ei-lic-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); }
.ei-lic-actions .btn-sm { padding: 6px 12px; font-size: 12px; border-radius: 6px; }

.ei-empty-bound {
  text-align: center; padding: 30px 16px;
  background: var(--bg); border-radius: var(--radius);
}
.ei-empty-icon { font-size: 40px; margin-bottom: 8px; }
.ei-empty-text { font-size: 14px; color: var(--text-2); font-weight: 600; }
.ei-empty-hint { font-size: 12px; color: var(--text-3); margin-top: 4px; }

.ei-search-section { margin-top: 4px; }
.ei-search-desc {
  font-size: 12px; color: var(--text-3);
  margin-bottom: 10px; line-height: 1.5;
}

/* 手动录入绑定表单 */
.ta-form-body { padding: 20px; max-height: 70vh; overflow-y: auto; }
.ta-form-desc {
  display: flex; flex-direction: column; gap: 4px;
  padding: 12px 14px; margin-bottom: 20px;
  background: #f0f7ff; border-radius: 10px;
  border-left: 3px solid var(--primary);
}
.ta-form-desc strong { font-size: 14px; color: var(--text-1); font-weight: 600; }
.ta-form-desc span { font-size: 12px; color: var(--text-3); line-height: 1.5; }
.ta-form { display: flex; flex-direction: column; gap: 16px; }
.ta-form-group { display: flex; flex-direction: column; gap: 6px; }
.ta-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.ta-form-label { font-size: 14px; font-weight: 600; color: var(--text-1); }
.ta-form-label span { color: #ef4444; margin-left: 2px; }
.ta-form-input {
  width: 100%; padding: 12px 14px; box-sizing: border-box;
  border: 1.5px solid #e5e7eb; border-radius: 10px;
  background: #fff; color: var(--text-1); font-size: 14px;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.ta-form-input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.08); }
.ta-form-input::placeholder { color: #bbb; }
select.ta-form-input { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; padding-right: 32px; }
textarea.ta-form-input { min-height: 80px; resize: vertical; font-family: inherit; line-height: 1.5; }
.ta-form-actions { display: flex; gap: 12px; margin-top: 24px; }
.ta-form-actions .btn { flex: 1; justify-content: center; }

.ei-search-bar {
  display: flex; align-items: center; gap: 8px;
  background: var(--bg); border-radius: var(--radius);
  padding: 8px 12px; margin-bottom: 12px;
}
.ei-search-bar input {
  flex: 1; border: none; background: transparent;
  font-size: 13px; outline: none;
}

.ei-result-card {
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius); padding: 14px;
  margin-bottom: 10px;
}
.ei-result-bound { border-color: #2d9d5f; background: #f6fff9; }
.ei-result-top {
  display: flex; align-items: center; gap: 10px; margin-bottom: 10px;
}
.ei-result-icon { font-size: 24px; }
.ei-result-body { flex: 1; }
.ei-result-name { font-size: 14px; font-weight: 700; color: var(--text); }
.ei-result-credit { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.ei-bound-tag {
  font-size: 11px; color: #2d9d5f; font-weight: 600;
  background: #e8f7ef; padding: 4px 10px; border-radius: 10px;
}
.ei-qcc-tag {
  font-size: 11px; color: #2563eb; font-weight: 600;
  background: #e0edff; padding: 4px 10px; border-radius: 10px; white-space: nowrap;
}
.ei-result-info { display: grid; gap: 6px; margin-bottom: 10px; }
.ei-bind-btn { width: 100%; }

.ei-search-empty {
  text-align: center; padding: 30px 16px;
  background: var(--bg); border-radius: var(--radius);
}

/* ======== 财税评估 ======== */
.tax-auth-hero { text-align: center; padding: 20px 0; }
.tax-auth-icon { font-size: 56px; margin-bottom: 12px; }
.tax-auth-title { font-size: 18px; font-weight: 700; color: var(--text); }
.tax-auth-desc { font-size: 13px; color: var(--text-3); margin-top: 6px; line-height: 1.5; }

.tax-auth-features { margin-bottom: 20px; }
.tax-feature-item {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 12px; background: var(--bg); border-radius: var(--radius);
  margin-bottom: 8px;
}
.tf-icon { font-size: 24px; flex-shrink: 0; }
.tf-body { flex: 1; }
.tf-title { font-size: 13px; font-weight: 600; color: var(--text); }
.tf-desc { font-size: 12px; color: var(--text-3); margin-top: 2px; line-height: 1.5; }

.tax-auth-notice {
  background: #fff7ed; border-radius: var(--radius);
  padding: 12px 14px; margin-bottom: 16px;
}
.tax-auth-notice .an-title { color: #f97316; }
.tax-auth-warn {
  background: #fef0f0; color: #e63946;
  border-radius: var(--radius); padding: 12px 14px;
  font-size: 13px; font-weight: 600; margin-bottom: 12px;
  text-align: center;
}
.tax-auth-select { margin-bottom: 12px; }
.tax-auth-select label {
  display: block; font-size: 13px; color: var(--text-2);
  margin-bottom: 6px; font-weight: 600;
}
.tax-auth-select select {
  width: 100%; padding: 10px 12px; border: 1px solid var(--border);
  border-radius: var(--radius); font-size: 14px; background: #fff;
}
.tax-auth-loading {
  width: 32px; height: 32px; border: 3px solid var(--border);
  border-top-color: var(--primary); border-radius: 50%;
  margin: 20px auto 0; animation: tax-spin 0.8s linear infinite;
}
@keyframes tax-spin { to { transform: rotate(360deg); } }

/* 报告页 */
.tax-report-hero {
  display: flex; align-items: center; gap: 20px;
  background: linear-gradient(135deg, #1a5fb4 0%, #2d9d5f 100%);
  border-radius: var(--radius); padding: 20px;
  margin-bottom: 20px; color: #fff;
}
.tax-score-ring {
  width: 80px; height: 80px; border-radius: 50%;
  border: 4px solid rgba(255,255,255,0.3);
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  flex-shrink: 0;
}
.tax-score-num { font-size: 28px; font-weight: 800; line-height: 1; }
.tax-score-label { font-size: 10px; opacity: 0.8; margin-top: 2px; }
.tax-score-info { flex: 1; }
.tax-score-level { font-size: 20px; font-weight: 700; }
.tax-score-time { font-size: 11px; opacity: 0.7; margin: 4px 0 8px; }
.tax-score-info .btn {
  background: rgba(255,255,255,0.2); color: #fff;
  border-color: rgba(255,255,255,0.3);
}

.tax-section-title {
  font-size: 15px; font-weight: 700; color: var(--text);
  margin: 20px 0 12px;
}

.tax-overview-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
  margin-bottom: 12px;
}
.tax-overview-card {
  background: var(--bg); border-radius: var(--radius);
  padding: 14px; text-align: center;
}
.to-label { font-size: 11px; color: var(--text-3); }
.to-value { font-size: 20px; font-weight: 700; color: var(--text); margin-top: 4px; }
.to-up { color: #e63946; }

.tax-credit-bar {
  display: flex; justify-content: space-between; align-items: center;
  background: linear-gradient(135deg, #e8f7ef, #f0fdf4);
  border-radius: var(--radius); padding: 14px 16px;
  margin-bottom: 16px;
}
.tc-left { display: flex; align-items: center; gap: 10px; }
.tc-rating {
  font-size: 24px; font-weight: 800; color: #2d9d5f;
  background: #fff; width: 40px; height: 40px;
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
}
.tc-label { font-size: 13px; color: var(--text-2); font-weight: 600; }
.tc-right { display: flex; align-items: baseline; gap: 2px; }
.tc-score { font-size: 28px; font-weight: 800; color: #2d9d5f; }
.tc-unit { font-size: 12px; color: var(--text-3); }

.tax-chart-card {
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius); padding: 14px; margin-bottom: 16px;
}
.tax-chart-card .tc-title,
.tax-invoice-structure .tc-title {
  font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 12px;
}
.tax-bar-chart {
  display: flex; justify-content: space-between; align-items: flex-end;
  height: 120px; gap: 4px; margin-bottom: 8px;
}
.tax-bar-group {
  flex: 1; display: flex; flex-direction: column; align-items: center;
}
.tax-bar-col {
  width: 100%; height: 90px; display: flex; align-items: flex-end;
  justify-content: center; gap: 2px;
}
.tax-bar {
  width: 10px; border-radius: 3px 3px 0 0;
  transition: height 0.3s;
}
.tax-bar-invoice { background: #1a5fb4; }
.tax-bar-tax { background: #2d9d5f; }
.tax-bar-label { font-size: 10px; color: var(--text-3); margin-top: 4px; }
.tax-bar-amount { font-size: 9px; color: var(--text-2); }
.tax-chart-legend {
  display: flex; justify-content: center; gap: 16px;
  padding-top: 8px; border-top: 1px solid var(--border);
}
.tax-legend-item { display: flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-3); }
.tax-legend-color { width: 10px; height: 10px; border-radius: 2px; }

.tax-invoice-structure {
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius); padding: 14px; margin-bottom: 16px;
}
.tax-invoice-types { display: grid; gap: 8px; }
.tax-inv-type {
  display: flex; justify-content: space-between;
  padding: 8px 12px; background: var(--bg); border-radius: 8px;
}
.ti-label { font-size: 12px; color: var(--text-2); }
.ti-value { font-size: 13px; font-weight: 700; color: var(--text); }

.tax-chain-summary {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
  margin-bottom: 16px;
}
.tcs-card {
  background: var(--bg); border-radius: var(--radius);
  padding: 14px; text-align: center;
}
.tcs-label { font-size: 11px; color: var(--text-3); }
.tcs-value { font-size: 18px; font-weight: 700; color: var(--text); margin: 4px 0; }
.tcs-count { font-size: 11px; color: var(--text-2); }

.tax-chain-section { margin-bottom: 16px; }
.tcs-title { font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 8px; }
.tax-chain-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 10px 12px; background: #fff;
  border: 1px solid var(--border); border-radius: var(--radius);
  margin-bottom: 6px;
}
.tci-body { flex: 1; }
.tci-name { font-size: 13px; font-weight: 600; color: var(--text); }
.tci-relation { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.tci-right { display: flex; align-items: center; gap: 8px; }
.tci-amount { font-size: 14px; font-weight: 700; color: var(--text); }
.tci-trend { font-size: 16px; font-weight: 700; }
.tci-trend-up { color: #e63946; }
.tci-trend-down { color: #2d9d5f; }
.tci-trend-stable { color: var(--text-3); }

.tax-health-dims { margin-bottom: 16px; }
.tax-health-dim {
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius); padding: 12px; margin-bottom: 8px;
}
.thd-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.thd-name { font-size: 13px; font-weight: 600; color: var(--text); }
.thd-level { font-size: 11px; padding: 2px 8px; border-radius: 10px; font-weight: 600; }
.thd-level-excellent { background: #e8f7ef; color: #2d9d5f; }
.thd-level-good { background: #e8f1fb; color: #1a5fb4; }
.thd-bar { height: 6px; background: var(--bg); border-radius: 3px; margin-bottom: 4px; }
.thd-bar-fill { height: 100%; border-radius: 3px; transition: width 0.3s; }
.thd-score { font-size: 12px; color: var(--text-2); font-weight: 600; }
.thd-desc { font-size: 11px; color: var(--text-3); margin-top: 4px; line-height: 1.4; }

.tax-risk-section { margin-bottom: 16px; }
.tax-risk-item {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 12px; border-radius: var(--radius);
  margin-bottom: 6px; font-size: 12px;
}
.tax-risk-high { background: #fef0f0; color: #e63946; }
.tax-risk-medium { background: #fff7ed; color: #f97316; }
.tax-risk-low { background: #fffbeb; color: #d4a017; }

.tax-suggestion-section { margin-bottom: 16px; }
.tax-suggestion-item {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 10px 12px; background: #f0fdf4;
  border-radius: var(--radius); margin-bottom: 6px;
}
.tsi-num {
  width: 22px; height: 22px; border-radius: 50%;
  background: #2d9d5f; color: #fff; font-size: 11px;
  font-weight: 700; display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.tsi-text { font-size: 12px; color: var(--text); line-height: 1.5; }

/* ====== 注册页 ====== */
.role-card-sm { padding: 10px 12px !important; }
.role-card-sm .rc-body { min-height: auto; }
.role-card-sm .rc-features { display: none; }
.role-card-sm .rc-desc { display: none; }

/* ====== 多步骤注册 ====== */
.reg-steps { display: flex; align-items: center; justify-content: center; margin-bottom: 24px; padding: 0 8px; }
.reg-step { display: flex; align-items: center; flex-shrink: 0; }
.reg-step-num { width: 28px; height: 28px; border-radius: 50%; background: #f0f0f0; color: var(--text-3); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; flex-shrink: 0; }
.reg-step.done .reg-step-num { background: #2d9d5f; color: #fff; }
.reg-step.current .reg-step-num { background: var(--primary); color: #fff; box-shadow: 0 0 0 4px rgba(26,95,180,0.15); }
.reg-step-name { font-size: 11px; color: var(--text-3); margin-left: 6px; white-space: nowrap; }
.reg-step.current .reg-step-name { color: var(--primary); font-weight: 700; }
.reg-step.done .reg-step-name { color: #2d9d5f; }
.reg-step-line { width: 16px; height: 2px; background: #f0f0f0; margin: 0 6px; }
.reg-step.done + .reg-step .reg-step-line { background: #2d9d5f; }

.reg-form-content { min-height: 200px; }

/* 短信验证码行 */
.reg-sms-row { display: flex; gap: 8px; }
.reg-sms-row input { flex: 1; }
.reg-sms-btn { flex-shrink: 0; padding: 0 16px; background: var(--primary); color: #fff; border: none; border-radius: 8px; font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.reg-sms-btn:active { opacity: 0.8; }
.reg-sms-btn:disabled { background: #ccc; }
/* [20261104-r99] 短信服务不可用时的提示（注册页） */
.reg-sms-tip {
  margin-top: 7px; padding: 8px 10px; border-radius: 8px;
  background: #fff7ed; border: 1px solid #fed7aa;
  color: #9a3412; font-size: 11.5px; line-height: 1.5;
}

/* 实名认证提示 */
.reg-verify-notice { display: flex; gap: 12px; padding: 14px; background: rgba(26,95,180,0.06); border-radius: 10px; margin-bottom: 16px; }
.rvn-icon { font-size: 28px; flex-shrink: 0; }
.rvn-title { font-size: 14px; font-weight: 700; }
.rvn-desc { font-size: 12px; color: var(--text-3); margin-top: 4px; line-height: 1.5; }

/* 上传区域 */
.reg-upload-area { border: 2px dashed var(--border); border-radius: 12px; padding: 24px; text-align: center; cursor: pointer; transition: all 0.2s; background: #fafbfc; }
.reg-upload-area:active { border-color: var(--primary); background: rgba(26,95,180,0.04); }
.reg-upload-area.uploaded { border-color: #2d9d5f; border-style: solid; background: rgba(45,157,95,0.04); }
.rua-icon { font-size: 36px; }
.rua-text { font-size: 14px; font-weight: 600; margin-top: 8px; }
.rua-hint { font-size: 12px; color: var(--text-3); margin-top: 4px; }
.rua-uploaded { display: flex; flex-direction: column; align-items: center; gap: 6px; color: #2d9d5f; font-size: 14px; font-weight: 600; }
.rua-uploaded span:first-child { font-size: 32px; }
/* [20261104-r104] 真实文件上传：file input 藏在卡片下，点击卡片即触发选文件 */
.rua-file { display: none; }
.reg-upload-area { position: relative; }
/* 已上传时显示预览图（证明确实有文件，而不是打个勾） */
.rua-preview {
  width: 100%; max-width: 220px; max-height: 150px;
  border-radius: 8px; object-fit: contain;
  background: #fff; border: 1px solid #e2e8f0;
  display: block; margin-bottom: 2px;
}
.rua-reupload {
  font-size: 11.5px; color: var(--primary); font-weight: 600;
  text-decoration: underline; cursor: pointer; margin-top: 2px;
}

/* ============ [r104] 实名认证审核（管理端） ============ */
.ver-card {
  background: #fff; border-radius: 12px; box-shadow: var(--shadow);
  padding: 13px 14px; margin-bottom: 10px;
}
.ver-head { display: flex; align-items: center; justify-content: space-between; }
.ver-name { font-size: 14.5px; font-weight: 800; color: var(--text-1); }
.ver-status { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 9px; }
.ver-pending { background: #fef3c7; color: #b45309; }
.ver-verified { background: #dcfce7; color: #15803d; }
.ver-rejected { background: #fee2e2; color: #b91c1c; }
.ver-meta {
  display: flex; flex-wrap: wrap; gap: 10px; margin-top: 6px;
  font-size: 11.5px; color: var(--text-3);
}
.ver-photos { display: flex; gap: 8px; margin-top: 10px; }
.ver-photo { flex: 1; text-align: center; }
.ver-photo img {
  width: 100%; height: 96px; object-fit: contain; display: block;
  background: #f8fafc; border: 1px solid #e6ebf3; border-radius: 8px;
}
.ver-photo span { display: block; font-size: 10.5px; color: var(--text-3); margin-top: 4px; }
.ver-photo.empty {
  height: 96px; display: flex; align-items: center; justify-content: center;
  flex-direction: column; gap: 4px;
  background: #f8fafc; border: 1px dashed #dbe2ec; border-radius: 8px;
}
.ver-photo-id { font-size: 9.5px; color: #a8b3c2; font-family: monospace; }
.ver-photo.empty.clickable { cursor: pointer; color: var(--primary); font-weight: 600; }
.ver-photo.empty.clickable:active { background: #eef4ff; }
.ver-reason {
  margin-top: 9px; padding: 7px 10px; border-radius: 8px;
  background: #fef2f2; color: #b91c1c; font-size: 11.5px; line-height: 1.5;
}
.ver-acts { display: flex; gap: 10px; margin-top: 12px; }
.ver-acts .btn { flex: 1; }

/* 按钮行 */
.reg-btn-row { display: flex; gap: 12px; margin-top: 8px; }
.reg-btn-back { flex: 1; background: #f0f0f0; color: var(--text-2); }
.reg-btn-next { flex: 2; }

/* 注册成功页 */
.reg-success { text-align: center; padding: 20px 0; }
.reg-success-icon { font-size: 64px; }
.reg-success-title { font-size: 22px; font-weight: 800; color: var(--text-1); margin-top: 12px; }
.reg-success-desc { font-size: 14px; color: var(--text-2); margin-top: 8px; }
.reg-success-info { background: #f9fafb; border-radius: 12px; padding: 16px; margin: 20px 0; text-align: left; }
.rsi-row { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #f0f0f0; font-size: 13px; }
.rsi-row:last-child { border-bottom: none; }
.rsi-row span:first-child { color: var(--text-3); }
.rsi-row span:last-child { font-weight: 600; }
.rsi-verified { color: #2d9d5f; }
.rsi-verified span:last-child { color: #2d9d5f; }

/* ====== 结算页 ====== */
.checkout-section {
  background: #fff; border-radius: var(--radius); padding: 14px 16px;
  margin-bottom: 10px;
}
.co-addr { display: flex; align-items: center; gap: 12px; cursor: pointer; }
.co-addr-empty .coa-name { color: var(--text-3); }
.coa-icon { font-size: 24px; flex-shrink: 0; }
.coa-body { flex: 1; min-width: 0; }
.coa-name { font-size: 14px; font-weight: 600; margin-bottom: 4px; }
.coa-detail { font-size: 12px; color: var(--text-2); line-height: 1.5; }
.coa-arrow { font-size: 18px; color: var(--text-3); }
.co-section-title { font-size: 13px; font-weight: 600; color: var(--text-2); margin-bottom: 10px; }
.co-item { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border); }
.co-item:last-child { border-bottom: none; }
.coi-icon { width: 44px; height: 44px; border-radius: var(--radius); display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; }
.coi-body { flex: 1; }
.coi-name { font-size: 13px; font-weight: 600; }
.coi-price { font-size: 12px; color: var(--accent); }
.coi-qty { font-size: 13px; color: var(--text-2); }
.coi-subtotal { font-size: 14px; font-weight: 600; }
.co-remark { display: flex; align-items: center; gap: 12px; }
.cor-label { font-size: 13px; color: var(--text-2); flex-shrink: 0; }
.co-fee-row { display: flex; justify-content: space-between; font-size: 13px; padding: 4px 0; color: var(--text-2); }
.co-fee-total { border-top: 1px solid var(--border); margin-top: 8px; padding-top: 8px; }

/* ====== 地址选择 ====== */
.addr-select-item {
  padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius);
  margin-bottom: 10px; cursor: pointer; transition: all 0.2s;
}
.addr-select-item.selected { border-color: var(--accent); background: rgba(230,57,70,0.03); }
.addr-select-item:active { background: var(--bg); }
.asi-top { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.asi-name { font-size: 14px; font-weight: 600; }
.asi-phone { font-size: 13px; color: var(--text-2); }
.asi-default { font-size: 10px; background: var(--accent); color: #fff; padding: 1px 6px; border-radius: 4px; }
.asi-detail { font-size: 12px; color: var(--text-2); line-height: 1.5; }

/* ====== 支付方式 ====== */
.pay-method-item {
  display: flex; align-items: center; gap: 12px; padding: 14px 16px;
  border: 2px solid var(--border); border-radius: var(--radius); margin-bottom: 10px;
  cursor: pointer; transition: all 0.2s;
}
.pay-method-item.selected { border-color: var(--accent); background: rgba(230,57,70,0.03); }
.pmi-icon-lg { font-size: 28px; }
.pmi-body { flex: 1; }
.pmi-name { font-size: 14px; font-weight: 600; }
.pmi-desc { font-size: 12px; color: var(--text-3); }
.pmi-radio {
  width: 20px; height: 20px; border-radius: 50%; border: 2px solid var(--border);
  transition: all 0.2s;
}
.pmi-radio.checked { border-color: var(--accent); background: var(--accent); box-shadow: inset 0 0 0 3px #fff; }

/* ====== 订单列表 ====== */
.order-tabs {
  display: flex; gap: 0; padding: 0 12px; border-bottom: 1px solid var(--border);
  flex-shrink: 0; overflow-x: auto;
}
.order-tab {
  padding: 12px 14px; font-size: 13px; color: var(--text-2); white-space: nowrap;
  cursor: pointer; position: relative; border-bottom: 2px solid transparent; transition: all 0.2s;
}
.order-tab.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
.ot-badge {
  display: inline-flex; min-width: 16px; height: 16px; border-radius: 8px;
  background: var(--accent); color: #fff; font-size: 10px; align-items: center;
  justify-content: center; padding: 0 4px; margin-left: 4px; vertical-align: top;
}
.order-card {
  background: #fff; border-radius: var(--radius); padding: 14px 16px;
  margin-bottom: 10px; cursor: pointer; transition: box-shadow 0.2s;
}
.order-card:active { box-shadow: 0 2px 12px rgba(0,0,0,0.08); }
.oc-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.oc-no { font-size: 12px; color: var(--text-3); }
.oc-status { font-size: 13px; font-weight: 600; }
.oc-items { }
.oci-row { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
.oci-icon { width: 40px; height: 40px; border-radius: var(--radius); display: flex; align-items: center; justify-content: center; font-size: 20px; flex-shrink: 0; }
.oci-body { flex: 1; }
.oci-name { font-size: 13px; font-weight: 600; }
.oci-price { font-size: 12px; color: var(--text-3); }
.oci-qty { font-size: 13px; color: var(--text-2); }
.oc-footer { display: flex; justify-content: space-between; align-items: center; padding-top: 10px; border-top: 1px solid var(--border); margin-top: 8px; }
.oc-time { font-size: 12px; color: var(--text-3); }
.oc-total { font-size: 13px; color: var(--text-2); }
.oc-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 10px; }

/* ====== 订单详情 ====== */
.od-status-banner {
  border-radius: var(--radius); padding: 20px 16px; margin-bottom: 16px;
  color: #fff; display: flex; align-items: center; gap: 16px;
}
.od-status-icon { font-size: 36px; }
.od-status-name { font-size: 18px; font-weight: 700; }
.od-status-desc { font-size: 12px; opacity: 0.9; margin-top: 2px; }

.od-logistics {
  background: #fff; border-radius: var(--radius); padding: 16px; margin-bottom: 16px;
}
.odl-header { display: flex; justify-content: space-between; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.odl-company { font-size: 14px; font-weight: 600; }
.odl-tracking { font-size: 12px; color: var(--text-3); }
.odl-timeline { position: relative; padding-left: 24px; }
.odl-tl-item { position: relative; padding-bottom: 20px; }
.odl-tl-item:last-child { padding-bottom: 0; }
.odl-tl-item::before {
  content: ''; position: absolute; left: 7px; top: 20px; bottom: 0;
  width: 2px; background: var(--border);
}
.odl-tl-item:last-child::before { display: none; }
.odl-tl-item.done::before { background: var(--success); }
.odl-tl-dot {
  position: absolute; left: -24px; top: 0; width: 16px; height: 16px;
  border-radius: 50%; background: var(--border); display: flex; align-items: center;
  justify-content: center; font-size: 10px; z-index: 1;
}
.odl-tl-dot.done { background: var(--success); }
.odl-tl-item.current .odl-tl-dot { box-shadow: 0 0 0 4px rgba(45,157,95,0.2); }
.odl-tl-status { font-size: 14px; font-weight: 600; }
.odl-tl-item:not(.done) .odl-tl-status { color: var(--text-3); }
.odl-tl-desc { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.odl-tl-time { font-size: 11px; color: var(--text-3); margin-top: 4px; }

.od-addr {
  display: flex; gap: 12px; background: #fff; border-radius: var(--radius);
  padding: 14px 16px; margin-bottom: 16px;
}
.oda-icon { font-size: 22px; flex-shrink: 0; }
.oda-body { flex: 1; }
.oda-name { font-size: 14px; font-weight: 600; margin-bottom: 4px; }
.oda-detail { font-size: 12px; color: var(--text-2); line-height: 1.5; }
.od-section-title { font-size: 13px; font-weight: 600; color: var(--text-2); margin-bottom: 10px; }
.od-item { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border); }
.odi-icon { width: 44px; height: 44px; border-radius: var(--radius); display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; }
.odi-body { flex: 1; }
.odi-name { font-size: 13px; font-weight: 600; }
.odi-price { font-size: 12px; color: var(--text-3); }
.odi-qty { font-size: 13px; color: var(--text-2); }
.odi-subtotal { font-size: 14px; font-weight: 600; }
.od-fee-box { background: #fff; border-radius: var(--radius); padding: 14px 16px; margin: 16px 0; }
.od-fee-row { display: flex; justify-content: space-between; font-size: 13px; padding: 4px 0; color: var(--text-2); }
.od-fee-total { border-top: 1px solid var(--border); margin-top: 8px; padding-top: 8px; }
.od-info-box { background: var(--bg); border-radius: var(--radius); padding: 14px 16px; margin-bottom: 16px; }
.odi-row { display: flex; justify-content: space-between; font-size: 12px; padding: 3px 0; color: var(--text-2); }
.od-actions { display: flex; gap: 10px; padding-top: 8px; }
.od-actions .btn { flex: 1; }

/* ====== 我的产品 ====== */
.my-product-card {
  background: #fff; border-radius: var(--radius); padding: 14px 16px;
  margin-bottom: 10px; border-left: 4px solid var(--border);
}
.my-product-pending { border-left-color: var(--warning); }
.my-product-approved { border-left-color: var(--success); }
.my-product-rejected { border-left-color: var(--danger); }
.mpc-top { display: flex; gap: 12px; align-items: flex-start; }
.mpc-icon { width: 48px; height: 48px; border-radius: var(--radius); display: flex; align-items: center; justify-content: center; font-size: 24px; flex-shrink: 0; }
.mpc-body { flex: 1; }
.mpc-name { font-size: 14px; font-weight: 600; }
.mpc-cat { font-size: 12px; color: var(--text-3); }
.mpc-meta { display: flex; gap: 12px; font-size: 11px; color: var(--text-3); margin-top: 4px; }
.mpc-status { font-size: 12px; font-weight: 600; flex-shrink: 0; }
.mpc-status-pending { color: var(--warning); }
.mpc-status-approved { color: var(--success); }
.mpc-status-rejected { color: var(--danger); }
.mpc-desc { font-size: 12px; color: var(--text-2); margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
.mpc-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 10px; }

/* ====== 地址管理 ====== */
.addr-card {
  background: #fff; border-radius: var(--radius); padding: 14px 16px;
  margin-bottom: 10px;
}
.ac-top { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.ac-name { font-size: 14px; font-weight: 600; }
.ac-phone { font-size: 13px; color: var(--text-2); }
.ac-default { font-size: 10px; background: var(--accent); color: #fff; padding: 1px 6px; border-radius: 4px; }
.ac-detail { font-size: 12px; color: var(--text-2); line-height: 1.5; }
.ac-actions { display: flex; gap: 16px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
.ac-actions span { font-size: 12px; color: var(--primary); cursor: pointer; }
.ac-actions span:active { opacity: 0.6; }

/* ====== 产品上架 ====== */
.upload-tip {
  background: rgba(26,95,180,0.06); border-radius: var(--radius);
  padding: 12px 16px; margin-bottom: 16px;
}
.upload-tip span { font-size: 12px; color: var(--primary); line-height: 1.6; }
.upload-img-area {
  border: 2px dashed var(--border); border-radius: var(--radius);
  padding: 32px 16px; text-align: center; display: flex; flex-direction: column;
  align-items: center; cursor: pointer; transition: all 0.2s;
}
.upload-img-area:active { border-color: var(--primary); background: var(--bg); }
.upload-notice {
  background: var(--bg); border-radius: var(--radius); padding: 14px 16px; margin-top: 16px;
}
.un-title { font-size: 13px; font-weight: 600; margin-bottom: 8px; }
.un-item { font-size: 12px; color: var(--text-2); line-height: 1.8; }

/* ====== 动画 ====== */
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

/* ====== 审核卡片 rejected 状态 ====== */
.review-rejected { opacity: 0.7; }
.rv-status-rejected { color: var(--danger) !important; background: rgba(230,57,70,0.08); }

/* ====== 代理记账卡片 ====== */
.bookkeeping-card { background: #fff; border-radius: 12px; padding: 16px; box-shadow: 0 2px 12px rgba(0,0,0,0.06); margin-bottom: 12px; }
.bk-empty { display: flex; align-items: center; cursor: pointer; }
.bk-icon-wrap { width: 44px; height: 44px; border-radius: 12px; background: linear-gradient(135deg, #e8f1fb, #f0e8ff); display: flex; align-items: center; justify-content: center; margin-right: 12px; flex-shrink: 0; }
.bk-icon { font-size: 22px; }
.bk-info { flex: 1; }
.bk-title { font-size: 15px; font-weight: 700; color: var(--text-1); }
.bk-desc { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.bk-action { font-size: 13px; color: var(--primary); font-weight: 600; flex-shrink: 0; }
.bk-active { }
.bk-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.bk-badge { font-size: 11px; font-weight: 700; padding: 2px 10px; border-radius: 20px; }
.bk-badge.active { color: #2d9d5f; background: rgba(45,157,95,0.1); }
.bk-badge.expiring { color: #e67e22; background: rgba(230,126,34,0.1); }
.bk-badge.expired { color: #e63946; background: rgba(230,57,70,0.1); }
.bk-badge.pending { color: #7c2dd6; background: rgba(124,45,214,0.1); }
.bk-badge.pending-confirm { color: #1a5fb4; background: rgba(26,95,180,0.1); }
.bk-body { background: #f8f9fc; border-radius: 10px; padding: 12px; }
.bk-row { display: flex; justify-content: space-between; padding: 4px 0; }
.bk-label { font-size: 13px; color: var(--text-3); }
.bk-value { font-size: 13px; font-weight: 600; color: var(--text-1); }
.bk-renew-notice { margin-top: 10px; padding: 10px 12px; background: rgba(230,126,34,0.08); border-radius: 8px; font-size: 12px; color: #e67e22; line-height: 1.5; }
.bk-renew-btn { display: block; text-align: center; margin-top: 10px; padding: 10px; background: var(--primary); color: #fff; border-radius: 10px; font-size: 14px; font-weight: 600; border: none; cursor: pointer; }

/* 代理记账服务方案确认页（企业端） */
.bk-plan-card { margin: 0 16px 16px; background: #fff; border-radius: var(--radius); padding: 16px; box-shadow: var(--shadow); }
.bk-plan-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.bk-plan-tag { font-size: 11px; font-weight: 700; color: #1a5fb4; background: rgba(26,95,180,0.1); padding: 2px 10px; border-radius: 20px; }
.bk-plan-no { font-size: 11px; color: var(--text-3); }
.bk-plan-title { font-size: 16px; font-weight: 700; color: var(--text); margin-bottom: 16px; }
.bk-plan-section { margin-bottom: 16px; }
.bk-plan-section:last-child { margin-bottom: 0; }
.bk-plan-label { font-size: 12px; color: var(--text-3); margin-bottom: 8px; }
.bk-plan-items { display: flex; flex-wrap: wrap; gap: 8px; }
.bk-plan-items li { list-style: none; font-size: 12px; color: var(--text); background: var(--bg); padding: 6px 10px; border-radius: 6px; }
.bk-plan-detail, .bk-plan-text, .bk-plan-note { font-size: 13px; color: var(--text); line-height: 1.6; background: var(--bg); padding: 10px 12px; border-radius: 8px; }
.bk-plan-price { background: #f8f9fc; border-radius: 10px; padding: 12px; }
.bk-plan-row { display: flex; justify-content: space-between; font-size: 13px; padding: 5px 0; color: var(--text-2); }
.bk-plan-row.bk-plan-total { margin-top: 8px; padding-top: 10px; border-top: 1px solid var(--border); font-size: 15px; font-weight: 700; color: var(--text); }
.bk-plan-total span:last-child { color: var(--primary); }

/* 代理记账方案审核页（平台管理端） */
.bk-review-card { margin: 16px; background: #fff; border-radius: var(--radius); padding: 16px; box-shadow: var(--shadow); }
.bk-review-head { margin-bottom: 16px; padding-bottom: 14px; border-bottom: 1px solid var(--border); }
.bk-review-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 6px; }
.bk-review-sub { font-size: 11px; color: var(--text-3); }
.bk-review-section { margin-bottom: 16px; }
.bk-review-label { font-size: 12px; color: var(--text-3); margin-bottom: 8px; }
.bk-review-value { font-size: 16px; font-weight: 700; color: var(--text); }
.bk-review-discounts { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.bk-discount-btn { border: 1px solid var(--border); background: #fff; border-radius: 6px; padding: 6px 10px; font-size: 12px; color: var(--text); cursor: pointer; }
.bk-discount-btn:active { background: var(--primary); color: #fff; border-color: var(--primary); }
.bk-review-input { width: 100%; border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; font-size: 14px; color: var(--text); background: #fff; box-sizing: border-box; }
.bk-review-dates { display: flex; align-items: center; gap: 8px; }
.bk-review-dates span { font-size: 12px; color: var(--text-3); }
.bk-review-textarea { width: 100%; border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; font-size: 13px; color: var(--text); background: #fff; box-sizing: border-box; resize: vertical; line-height: 1.5; }
.bk-review-checks { display: flex; flex-wrap: wrap; gap: 10px; }
.bk-review-check { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text); cursor: pointer; }
.bk-review-check input { width: 16px; height: 16px; accent-color: var(--primary); }
.bk-review-total { display: flex; justify-content: space-between; align-items: center; background: #f8f9fc; border-radius: 10px; padding: 14px 12px; }
.bk-review-amount { font-size: 18px; font-weight: 700; color: var(--primary); }

/* 客户分级仅一般纳税人时占满整行 */
.gc-prices-single .gc-price-general { flex: 1; }

/* ====== 代理记账弹窗 ====== */
.bk-modal { max-height: 85vh; }
.bk-modal-body { padding: 0 20px 20px; }
.bk-section-title { font-size: 14px; font-weight: 700; color: var(--text-1); margin: 16px 0 10px; }
.bk-pkg-list { }
.bk-pkg-card { display: flex; align-items: center; padding: 14px; border: 2px solid #eee; border-radius: 12px; margin-bottom: 8px; cursor: pointer; transition: all .2s; }
.bk-pkg-card.selected { border-color: var(--primary); background: rgba(26,95,180,0.04); }
.bk-pkg-icon { font-size: 28px; margin-right: 12px; }
.bk-pkg-info { flex: 1; }
.bk-pkg-name { font-size: 14px; font-weight: 600; color: var(--text-1); }
.bk-pkg-desc { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.bk-pkg-fee { font-size: 18px; font-weight: 700; color: var(--primary); }
.bk-pkg-unit { font-size: 12px; color: var(--text-3); font-weight: 400; }
.bk-dur-list { display: flex; gap: 8px; }
.bk-dur-item { flex: 1; text-align: center; padding: 12px 8px; border: 2px solid #eee; border-radius: 12px; cursor: pointer; transition: all .2s; }
.bk-dur-item.selected { border-color: var(--primary); background: rgba(26,95,180,0.04); }
.bk-dur-label { font-size: 14px; font-weight: 600; color: var(--text-1); }
.bk-price-summary { margin-top: 16px; padding: 14px; background: #f8f9fc; border-radius: 10px; }
.bk-price-row { display: flex; justify-content: space-between; padding: 3px 0; font-size: 13px; color: var(--text-3); }
.bk-price-total { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; padding-top: 8px; border-top: 1px solid #e5e5e5; }
.bk-total-amount { font-size: 22px; font-weight: 700; color: var(--danger); }
.bk-confirm-btn { display: block; width: 100%; text-align: center; margin-top: 16px; padding: 14px; background: var(--primary); color: #fff; border-radius: 12px; font-size: 16px; font-weight: 600; border: none; cursor: pointer; }
.bk-confirm-btn:disabled { background: #cbd5e1; cursor: not-allowed; }
.bk-tip { text-align: center; font-size: 12px; color: var(--text-3); margin-top: 10px; }

/* 估价引导与结果 */
.bk-estimate-empty { text-align: center; padding: 24px 16px; background: #f8f9fc; border-radius: 12px; border: 2px dashed #e5e7eb; }
.bk-estimate-icon { font-size: 40px; margin-bottom: 8px; }
.bk-estimate-title { font-size: 16px; font-weight: 700; color: var(--text-1); margin-bottom: 4px; }
.bk-estimate-desc { font-size: 12px; color: var(--text-3); margin-bottom: 16px; line-height: 1.5; }
.bk-estimate-btn { width: 100%; }

.bk-estimate-result { background: #f8f9fc; border-radius: 12px; padding: 16px; border: 2px solid var(--primary); }
.bk-er-header { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.bk-er-badge { padding: 6px 12px; border-radius: 8px; background: var(--primary); color: #fff; font-size: 16px; font-weight: 700; }
.bk-er-grade { font-size: 14px; font-weight: 700; color: var(--text-1); }
.bk-er-industry { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.bk-er-price-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.bk-er-price { font-size: 26px; font-weight: 700; color: var(--danger); }
.bk-er-unit { font-size: 14px; color: var(--text-3); font-weight: 400; }
.bk-er-taxpayer { font-size: 13px; color: var(--text-2); background: #fff; padding: 4px 10px; border-radius: 20px; }
.bk-reestimate-btn { width: 100%; }
.bk-er-note { font-size: 11px; color: var(--text-3); line-height: 1.5; margin-bottom: 12px; padding: 8px 10px; background: #fff; border-radius: 8px; }
.bk-er-actions { display: flex; flex-direction: column; gap: 8px; }
.bk-er-actions .btn { width: 100%; }
.btn-text { background: transparent; color: var(--primary); border: none; padding: 8px; font-size: 13px; text-decoration: underline; }

.bk-dur-item.disabled { opacity: 0.5; cursor: not-allowed; background: #f3f4f6; }
.bk-price-summary.disabled { opacity: 0.7; background: #f3f4f6; }

/* ====== 本月财税申报卡片 ====== */
.tax-filing-card { background: #fff; border-radius: 12px; padding: 16px; box-shadow: 0 2px 12px rgba(0,0,0,0.06); margin-bottom: 12px; }
.tfc-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.tfc-title { font-size: 16px; font-weight: 700; }
.tfc-progress { font-size: 13px; color: var(--primary); font-weight: 600; background: rgba(26,95,180,0.08); padding: 4px 12px; border-radius: 20px; }
.tfc-progress-bar { height: 6px; background: #f0f0f0; border-radius: 3px; overflow: hidden; margin-bottom: 16px; }
.tfc-pb-fill { height: 100%; background: linear-gradient(90deg, #2d9d5f, #34d399); border-radius: 3px; transition: width 0.5s; }
.tfc-list { display: flex; flex-direction: column; gap: 8px; }
.tfc-item { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 8px; }
.tfc-item.filed { background: rgba(45,157,95,0.05); }
.tfc-item.pending { background: rgba(249,115,22,0.05); }
.tfc-item-icon { font-size: 20px; flex-shrink: 0; }
.tfc-item-body { flex: 1; }
.tfc-item-name { font-size: 14px; font-weight: 600; }
.tfc-item-desc { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.tfc-item-right { text-align: right; flex-shrink: 0; }
.tfc-amount { font-size: 14px; font-weight: 700; color: var(--danger); }
.tfc-date { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.tfc-deadline { font-size: 12px; color: var(--text-3); }
.tfc-status-pending { font-size: 11px; color: var(--orange); font-weight: 600; margin-top: 2px; }

/* ====== 财务报表入口 ====== */
.finance-entry { display: flex; align-items: center; justify-content: space-between; background: linear-gradient(135deg, #1a5fb4, #2d7dd2); border-radius: 12px; padding: 16px; margin-bottom: 12px; cursor: pointer; }
.fe-left { display: flex; align-items: center; gap: 12px; }
.fe-icon { font-size: 32px; }
.fe-title { font-size: 15px; font-weight: 700; color: #fff; }
.fe-desc { font-size: 12px; color: rgba(255,255,255,0.8); margin-top: 2px; }
.fe-arrow { display: flex; align-items: center; gap: 4px; color: rgba(255,255,255,0.9); font-size: 13px; }

/* ====== 财务报表页 ====== */
.finance-content { padding: 16px; }
.finance-section { background: #fff; border-radius: 12px; padding: 16px; margin-bottom: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.04); }
.fs-title { font-size: 15px; font-weight: 700; margin-bottom: 12px; }

/* 月度汇总卡片列表 */
.fm-month-list { display: flex; flex-direction: column; gap: 10px; }
.fm-month-card { display: flex; align-items: center; gap: 12px; padding: 14px; border-radius: 10px; background: #f9fafb; cursor: pointer; transition: all 0.2s; border: 2px solid transparent; }
.fm-month-card:active { background: #f0f1f5; }
.fm-month-card.active { background: rgba(26,95,180,0.05); border-color: rgba(26,95,180,0.15); }
.fm-card-left { flex-shrink: 0; width: 60px; }
.fm-month-name { font-size: 16px; font-weight: 800; color: var(--text-1); }
.fm-month-status { font-size: 10px; padding: 2px 8px; border-radius: 4px; margin-top: 4px; display: inline-block; }
.fm-month-status.status-active { background: rgba(26,95,180,0.1); color: var(--primary); }
.fm-month-status.status-done { background: rgba(45,157,95,0.1); color: #2d9d5f; }
.fm-card-data { flex: 1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; }
.fm-data-item { text-align: center; }
.fm-data-label { font-size: 11px; color: var(--text-3); }
.fm-data-val { font-size: 13px; font-weight: 700; margin-top: 2px; }
.fm-val-income { color: var(--primary); }
.fm-val-expense { color: var(--danger); }
.fm-val-profit { color: #2d9d5f; }
.fm-val-tax { color: var(--orange); }
.fm-card-arrow { flex-shrink: 0; color: var(--text-3); }

/* 年度总览入口 */
.finance-annual-entry { display: flex; align-items: center; justify-content: space-between; cursor: pointer; background: linear-gradient(135deg, rgba(26,95,180,0.06), rgba(45,125,210,0.06)); }
.fae-left { display: flex; align-items: center; gap: 12px; }
.fae-icon { font-size: 28px; }
.fae-title { font-size: 15px; font-weight: 700; }
.fae-desc { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.fae-arrow { color: var(--primary); }

/* 月度明细 */
.fm-detail-header { display: flex; align-items: center; justify-content: space-between; }
.fmd-month-badge { font-size: 18px; font-weight: 800; color: var(--primary); }
.fmd-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.fmd-stat-card { padding: 14px; border-radius: 10px; text-align: center; }
.fmd-income { background: rgba(26,95,180,0.06); }
.fmd-expense { background: rgba(230,57,70,0.06); }
.fmd-profit { background: rgba(45,157,95,0.06); }
.fmd-tax { background: rgba(249,115,22,0.06); }
.fmd-stat-icon { font-size: 20px; }
.fmd-stat-val { font-size: 16px; font-weight: 800; margin-top: 4px; }
.fmd-stat-label { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.fmd-profit-rate { display: flex; align-items: center; gap: 8px; margin-top: 12px; padding: 10px; background: #f9fafb; border-radius: 8px; }
.fmd-pr-label { font-size: 13px; color: var(--text-3); }
.fmd-pr-val { font-size: 14px; font-weight: 700; color: #2d9d5f; }
.fmd-pr-bar { flex: 1; height: 6px; background: #f0f0f0; border-radius: 3px; overflow: hidden; }
.fmd-pr-fill { height: 100%; background: linear-gradient(90deg, #2d9d5f, #34d399); border-radius: 3px; }

/* 高亮柱状图 */
.pc-bar-wrap.pc-highlight .pc-bar { background: linear-gradient(180deg, #1a5fb4, #2d7dd2); }
.pc-bar-wrap.pc-highlight .pc-bar-month { color: var(--primary); font-weight: 700; }

/* 申报进度 */
.filing-summary { display: flex; align-items: center; gap: 20px; }
.fs-circle { width: 80px; height: 80px; border-radius: 50%; background: conic-gradient(#2d9d5f 0% 62%, #f0f0f0 62% 100%); display: flex; flex-direction: column; align-items: center; justify-content: center; flex-shrink: 0; }
.fs-percent { font-size: 20px; font-weight: 800; color: #2d9d5f; }
.fs-label { font-size: 10px; color: var(--text-3); }
.fs-info { flex: 1; }
.fs-count { font-size: 16px; font-weight: 700; }
.fs-desc { font-size: 12px; color: var(--text-3); margin-top: 4px; }

.filing-item { display: flex; align-items: flex-start; gap: 12px; padding: 12px; border-radius: 8px; margin-top: 8px; }
.filing-item.filed { background: rgba(45,157,95,0.05); }
.filing-item.pending { background: rgba(249,115,22,0.05); }
.fi-icon-wrap { position: relative; flex-shrink: 0; }
.fi-icon { width: 40px; height: 40px; border-radius: 10px; background: #f4f5f9; display: flex; align-items: center; justify-content: center; font-size: 20px; }
.fi-status-dot { position: absolute; bottom: -4px; right: -4px; font-size: 14px; }
.fi-body { flex: 1; }
.fi-name { font-size: 14px; font-weight: 600; }
.fi-desc { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.fi-meta { display: flex; gap: 12px; margin-top: 6px; font-size: 12px; }
.fi-deadline { color: var(--text-3); }
.fi-filed { color: #2d9d5f; font-weight: 600; }
.fi-pending { color: var(--orange); font-weight: 600; }
.fi-right { text-align: right; flex-shrink: 0; }
.fi-amount { font-size: 14px; font-weight: 700; color: var(--danger); }
.fi-status-text { font-size: 11px; color: var(--text-3); margin-top: 4px; }

/* 月度数据表 */
.monthly-table { overflow: hidden; }
.mt-header { display: flex; padding: 10px 8px; background: #f4f5f9; border-radius: 8px; font-size: 12px; font-weight: 600; color: var(--text-3); }
.mt-row { display: flex; padding: 12px 8px; border-bottom: 1px solid #f4f5f9; font-size: 13px; }
.mt-row-active { background: rgba(26,95,180,0.04); border-radius: 8px; }
.mt-col { flex: 1; text-align: center; }
.mt-col-month { text-align: left; font-weight: 600; }
.mt-status { font-size: 10px; padding: 1px 6px; border-radius: 4px; margin-left: 4px; background: rgba(26,95,180,0.1); color: var(--primary); }
.mt-col-profit { color: #2d9d5f; font-weight: 600; }
.mt-col-tax { color: var(--danger); }

/* 利润柱状图 */
.profit-chart { display: flex; align-items: flex-end; gap: 8px; height: 160px; padding: 12px 0; }
.pc-bar-wrap { flex: 1; display: flex; flex-direction: column; align-items: center; height: 100%; justify-content: flex-end; }
.pc-bar-label { font-size: 10px; color: var(--text-3); margin-bottom: 4px; }
.pc-bar { width: 60%; max-width: 40px; background: linear-gradient(180deg, #2d9d5f, #34d399); border-radius: 6px 6px 0 0; min-height: 4px; }
.pc-bar-month { font-size: 12px; color: var(--text-2); margin-top: 4px; }

/* 年度汇总 */
.annual-year-badge { display: inline-block; padding: 4px 16px; background: var(--primary); color: #fff; border-radius: 20px; font-size: 14px; font-weight: 700; margin-bottom: 12px; }
.annual-cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.annual-card { padding: 16px; border-radius: 10px; text-align: center; }
.annual-income { background: rgba(26,95,180,0.06); }
.annual-expense { background: rgba(230,57,70,0.06); }
.annual-profit { background: rgba(45,157,95,0.06); }
.annual-tax { background: rgba(249,115,22,0.06); }
.annual-net { background: rgba(147,51,234,0.06); grid-column: span 2; }
.ac-icon { font-size: 24px; }
.ac-value { font-size: 18px; font-weight: 800; margin-top: 4px; }
.ac-label { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.ac-growth { font-size: 11px; color: #2d9d5f; margin-top: 4px; font-weight: 600; }

/* 季度对比 */
.quarterly-table { display: flex; flex-direction: column; gap: 8px; }
.qt-row { display: flex; gap: 12px; padding: 12px; background: #f9fafb; border-radius: 8px; }
.qt-quarter { width: 36px; height: 36px; border-radius: 8px; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; flex-shrink: 0; }
.qt-data { flex: 1; display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px 12px; }
.qt-item { display: flex; justify-content: space-between; font-size: 13px; }
.qt-label { color: var(--text-3); }
.qt-val { font-weight: 600; }
.qt-val-profit { color: #2d9d5f; }

/* 资产负债表 */
.bs-summary { display: flex; gap: 8px; }
.bs-sum-item { flex: 1; padding: 16px 8px; border-radius: 10px; text-align: center; }
.bs-sum-assets { background: rgba(26,95,180,0.06); }
.bs-sum-liab { background: rgba(230,57,70,0.06); }
.bs-sum-equity { background: rgba(45,157,95,0.06); }
.bs-sum-label { font-size: 12px; color: var(--text-3); }
.bs-sum-val { font-size: 16px; font-weight: 800; margin-top: 4px; }
.bs-group-title { font-size: 14px; font-weight: 700; margin-bottom: 8px; padding-left: 8px; border-left: 3px solid var(--primary); }
.bs-item { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid #f4f5f9; }
.bsi-icon { width: 32px; height: 32px; border-radius: 8px; background: #f4f5f9; display: flex; align-items: center; justify-content: center; font-size: 16px; flex-shrink: 0; }
.bsi-name { flex: 1; font-size: 14px; }
.bsi-amount { font-size: 14px; font-weight: 700; }
.bs-subtotal { text-align: right; font-size: 13px; font-weight: 700; color: var(--primary); padding-top: 8px; border-top: 2px solid var(--border); margin-top: 4px; }

/* 利润表 */
.income-table { }
.it-row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid #f4f5f9; }
.it-name { font-size: 14px; }
.it-amount { font-size: 14px; font-weight: 600; }
.it-expense { color: var(--danger); }
.it-subtotal { font-weight: 800; border-top: 2px solid var(--border); padding-top: 10px; margin-top: 4px; }
.it-net { font-weight: 800; color: var(--primary); border-top: 2px solid var(--border); padding-top: 10px; margin-top: 4px; font-size: 16px; }

/* 报表说明 */
.fs-note { background: #f9fafb; border-radius: 8px; padding: 12px; }
.fs-note-title { font-size: 13px; font-weight: 700; margin-bottom: 8px; }
.fs-note-item { font-size: 12px; color: var(--text-3); line-height: 1.8; }

/* ============ 组织架构管理页 ============ */
.organization-page { background: #f4f5f9; min-height: calc(100vh - var(--tab-h)); padding-bottom: 20px; }
.org-header {
  background: linear-gradient(135deg, #1a5fb4 0%, #134d8f 100%);
  padding: 48px 16px 36px;
  color: #fff;
  position: relative;
}
.org-back {
  position: absolute;
  left: 16px;
  top: 50%;
  transform: translateY(-50%);
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.15);
  border-radius: 50%;
}
.org-title { text-align: center; font-size: 18px; font-weight: 700; }
.org-subtitle { text-align: center; font-size: 13px; opacity: 0.85; margin-top: 4px; }
.organization-page .card {
  background: #fff;
  border-radius: var(--radius);
  margin: 12px 16px;
  padding: 16px;
  box-shadow: var(--shadow);
}
.org-intro { display: flex; align-items: center; gap: 12px; }
.org-intro-icon { width: 48px; height: 48px; border-radius: 12px; background: #e8f1fb; display: flex; align-items: center; justify-content: center; font-size: 24px; flex-shrink: 0; }
.org-intro-text { flex: 1; min-width: 0; }
.org-intro-title { font-size: 15px; font-weight: 700; }
.org-intro-desc { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.org-intro-tip { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.org-section-title { font-size: 14px; font-weight: 700; margin-bottom: 12px; }
.org-form-row { margin-bottom: 12px; }
.org-form-row label { display: block; font-size: 12px; color: var(--text-3); margin-bottom: 4px; }
.org-form-row select {
  width: 100%;
  height: 40px;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 0 10px;
  font-size: 14px;
  background: #fff;
  color: var(--text);
}
.org-list .org-position-item { border-bottom: 1px solid #f4f5f9; padding: 14px 0; }
.org-list .org-position-item:last-child { border-bottom: none; padding-bottom: 0; }
.org-position-header { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.org-position-icon { width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }
.org-position-info { flex: 1; min-width: 0; }
.org-position-name { font-size: 14px; font-weight: 700; }
.org-position-desc { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.org-position-count {
  font-size: 12px;
  font-weight: 700;
  color: var(--primary);
  background: #e8f1fb;
  padding: 4px 8px;
  border-radius: 10px;
}
.org-position-count.full { color: var(--success); background: #e8f7ef; }
.org-members { padding-left: 48px; }
.org-member { display: flex; align-items: center; gap: 8px; padding: 6px 0; }
.org-member-avatar { width: 28px; height: 28px; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; flex-shrink: 0; }
.org-member-info { flex: 1; min-width: 0; }
.org-member-name { font-size: 13px; font-weight: 600; }
.org-member-phone { font-size: 11px; color: var(--text-3); }
.org-member-remove { font-size: 12px; color: var(--danger); padding: 2px 6px; }
.org-member-empty { font-size: 12px; color: var(--text-3); padding: 4px 0; }
.org-permission-grid { display: flex; flex-direction: column; gap: 8px; }
.org-permission-item { display: flex; justify-content: space-between; font-size: 12px; padding: 8px; background: #f9fafb; border-radius: 6px; }
.org-permission-name { font-weight: 600; color: var(--text); }
.org-permission-text { color: var(--text-2); text-align: right; max-width: 60%; }

/* 岗位权限管理（GM专属） */
.org-perm-manage { margin-top: 12px; }
.org-perm-tip { font-size: 12px; color: var(--text-3); padding: 4px 0 12px; line-height: 1.5; }
.org-perm-edit-item { margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--border); }
.org-perm-edit-item:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.org-perm-edit-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.org-perm-edit-name { font-size: 14px; font-weight: 600; color: var(--text); }
.org-perm-edit-count { font-size: 12px; color: var(--text-3); background: var(--bg-2); padding: 2px 8px; border-radius: 10px; }
.org-perm-edit-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.org-perm-tag {
  font-size: 12px;
  padding: 5px 12px;
  border-radius: 16px;
  background: var(--bg-2);
  color: var(--text-3);
  cursor: pointer;
  transition: all 0.2s;
  user-select: none;
  border: 1px solid transparent;
}
.org-perm-tag:hover { border-color: var(--primary); }
.org-perm-tag.active {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}

/* ====== 盈亏数据测算 ====== */
.profit-loss-card {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 12px 16px 0;
  padding: 16px;
  background: linear-gradient(135deg, #1a5fb4 0%, #2d7dd2 100%);
  border-radius: 16px;
  color: #fff;
  box-shadow: 0 8px 24px rgba(26, 95, 180, 0.25);
}
.profit-loss-card .pl-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: rgba(255,255,255,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  flex-shrink: 0;
}
.profit-loss-card .pl-body { flex: 1; min-width: 0; }
.profit-loss-card .pl-title { font-size: 16px; font-weight: 700; margin-bottom: 4px; }
.profit-loss-card .pl-desc { font-size: 12px; opacity: 0.9; }
.profit-loss-card .pl-arrow { font-size: 22px; opacity: 0.8; }

.profit-loss-page {
  min-height: 100vh;
  background: #f4f5f9;
  padding-bottom: 24px;
}
.pl-page-header {
  background: linear-gradient(135deg, #1a5fb4 0%, #134d8f 100%);
  padding: 16px;
  padding-top: calc(16px + env(safe-area-inset-top));
  color: #fff;
}
.pl-page-back {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 12px;
}
.pl-page-title { font-size: 22px; font-weight: 700; margin-bottom: 6px; }
.pl-page-subtitle { font-size: 13px; opacity: 0.85; }

.pl-section {
  margin: 16px;
  background: #fff;
  border-radius: 16px;
  padding: 16px;
  box-shadow: 0 2px 12px rgba(0,0,0,0.04);
}
.pl-section-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 14px;
}
.pl-cost-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}
.pl-cost-row input {
  height: 42px;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 0 12px;
  font-size: 14px;
  background: #f9fafb;
}
.pl-cost-name { flex: 1; }
.pl-cost-amount { flex: 1.2; }
.pl-cost-del {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #fee2e2;
  color: #dc2626;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.pl-add-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 10px 16px;
  border: 1px dashed var(--primary);
  color: var(--primary);
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  margin-top: 4px;
}

.pl-scenario {
  margin-bottom: 20px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--border);
}
.pl-scenario:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: none; }
.pl-scenario-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 12px;
}
.pl-form-row { margin-bottom: 12px; }
.pl-form-row label {
  display: block;
  font-size: 13px;
  color: var(--text-2);
  margin-bottom: 6px;
}
.pl-form-row input {
  width: 100%;
  height: 46px;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 0 14px;
  font-size: 15px;
  background: #f9fafb;
  box-sizing: border-box;
}
.pl-calc-btn {
  width: 100%;
  height: 46px;
  border-radius: 23px;
  background: var(--primary);
  color: #fff;
  font-size: 15px;
  font-weight: 600;
  border: none;
  margin-top: 8px;
}
.pl-result {
  background: #f0f9ff;
  border-radius: 12px;
  padding: 14px;
  margin-bottom: 12px;
}
.pl-result-placeholder {
  font-size: 13px;
  color: var(--text-3);
  text-align: center;
}
.pl-result-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 0;
  font-size: 14px;
}
.pl-result-row span { color: var(--text-2); }
.pl-result-row strong { color: var(--text); font-size: 15px; }
.pl-result-row strong.pl-highlight { color: var(--primary); font-size: 18px; }
.pl-tip {
  margin: 0 16px 24px;
  padding: 12px 14px;
  background: #f0fdf4;
  border-radius: 10px;
  font-size: 12px;
  color: #166534;
  line-height: 1.6;
}

/* 十怕十诺弹窗 */
.promises-body { padding: 16px; }
.promises-subtitle { text-align: center; font-size: 13px; color: var(--text-2); margin-bottom: 16px; }
.promises-list { display: flex; flex-direction: column; gap: 12px; }
.promise-item { display: flex; gap: 12px; background: #fff; border-radius: var(--radius); padding: 14px 12px; box-shadow: var(--shadow); }
.promise-no { width: 28px; height: 28px; border-radius: 50%; background: var(--primary-light); color: var(--primary); font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.promise-content { flex: 1; }
.promise-title { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 700; margin-bottom: 6px; }
.promise-fear { color: var(--text); }
.promise-arrow { color: var(--text-3); font-size: 12px; }
.promise-promise { color: var(--success); }
.promise-desc { font-size: 12px; color: var(--text-2); line-height: 1.6; }

/* ====== 发票管理弹窗 ====== */
.invoice-modal .modal-body { max-height: 70vh; overflow-y: auto; }
.invoice-list { display: flex; flex-direction: column; gap: 12px; }
.invoice-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  position: relative;
}
.invoice-card.invoice-default { border-color: var(--primary); background: var(--primary-light); }
.invoice-card-top { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.invoice-type {
  font-size: 11px;
  font-weight: 700;
  color: #fff;
  background: var(--primary);
  padding: 2px 8px;
  border-radius: 10px;
}
.invoice-default-tag {
  font-size: 11px;
  color: var(--primary);
  background: #fff;
  border: 1px solid var(--primary);
  padding: 1px 6px;
  border-radius: 8px;
}
.invoice-actions { margin-left: auto; display: flex; gap: 10px; }
.invoice-action { font-size: 12px; color: var(--primary); cursor: pointer; }
.invoice-action-delete { color: var(--danger); }
.invoice-title-name { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.invoice-title-row { display: flex; font-size: 12px; color: var(--text-2); line-height: 1.6; }
.invoice-title-row span:first-child { width: 56px; flex-shrink: 0; color: var(--text-3); }
.invoice-type-select { display: flex; gap: 16px; }
.invoice-type-option { display: flex; align-items: center; gap: 6px; font-size: 14px; cursor: pointer; }
.invoice-type-option input { width: 16px; height: 16px; accent-color: var(--primary); }

/* ====== 设置弹窗 ====== */
.settings-modal .modal-body { padding: 8px 0 16px; }
.settings-list { display: flex; flex-direction: column; }
.settings-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
}
.settings-item:last-child { border-bottom: none; }
.settings-item-btn { cursor: pointer; }
.settings-item-left { display: flex; align-items: center; gap: 12px; }
.settings-icon { font-size: 18px; }
.settings-label { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 2px; }
.settings-desc { font-size: 12px; color: var(--text-3); }
.settings-arrow { font-size: 18px; color: var(--text-3); }
.settings-version { font-size: 12px; color: var(--success); font-weight: 600; }
.settings-switch { position: relative; display: inline-block; width: 44px; height: 24px; }
.settings-switch input { opacity: 0; width: 0; height: 0; }
.settings-switch-track {
  position: absolute;
  cursor: pointer;
  inset: 0;
  background: #d1d5db;
  border-radius: 24px;
  transition: 0.2s;
}
.settings-switch-track::before {
  content: '';
  position: absolute;
  height: 20px;
  width: 20px;
  left: 2px;
  bottom: 2px;
  background: #fff;
  border-radius: 50%;
  transition: 0.2s;
}
.settings-switch input:checked + .settings-switch-track { background: var(--primary); }
.settings-switch input:checked + .settings-switch-track::before { transform: translateX(20px); }

/* ========== 个体工商户自主申报 (Self Declaration) ========== */
.sd-hero { text-align: center; padding: 30px 20px 20px; background: linear-gradient(135deg, #fff3e0, #fff8e1); }
.sd-hero-icon { font-size: 48px; margin-bottom: 12px; }
.sd-hero h3 { font-size: 18px; color: var(--text); margin-bottom: 6px; }
.sd-hero p { font-size: 13px; color: var(--text-3); }
.sd-cards { padding: 16px; display: flex; flex-direction: column; gap: 14px; }
.sd-card { border-radius: 14px; padding: 20px; background: #fff; box-shadow: 0 2px 12px rgba(0,0,0,0.06); border: 2px solid var(--border); cursor: pointer; transition: all 0.2s; }
.sd-card:hover { border-color: var(--primary); transform: translateY(-2px); box-shadow: 0 4px 20px rgba(0,0,0,0.1); }
.sd-card-hd { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.sd-card-badge { font-size: 12px; padding: 3px 10px; border-radius: 20px; background: #e8f5e9; color: #2e7d32; font-weight: 600; }
.sd-card-badge.badge-warn { background: #fff3e0; color: #e65100; }
.sd-card-price { font-size: 18px; font-weight: 700; color: var(--danger); }
.sd-card h4 { font-size: 16px; margin-bottom: 6px; color: var(--text); }
.sd-card p { font-size: 13px; color: var(--text-3); margin-bottom: 12px; line-height: 1.5; }
.sd-card-features { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.sd-card-features span { font-size: 12px; padding: 4px 10px; border-radius: 6px; background: #f0f4ff; color: var(--primary); }
.sd-card-btn { width: 100%; padding: 12px; border: none; border-radius: 10px; background: var(--primary); color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; }
.sd-card-btn-outline { background: transparent; color: var(--primary); border: 2px solid var(--primary); }
.sd-card-pro { border-color: #ffcc80; background: #fffdf7; }
.sd-notice { margin: 0 16px 20px; padding: 16px; border-radius: 10px; background: #fff3e0; border: 1px solid #ffcc80; font-size: 13px; line-height: 1.7; color: #5d4037; }
.sd-notice h5 { font-size: 14px; margin-bottom: 8px; color: #e65100; }
.sd-notice ul { margin: 0; padding-left: 18px; }
.sd-notice li { margin-bottom: 4px; }

/* 零申报流程 */
.zd-steps { display: flex; align-items: flex-start; padding: 20px; gap: 0; }
.zd-step-item { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; min-width: 64px; }
.zd-step-num { width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 700; background: #f0f0f0; color: #999; box-shadow: inset 0 0 0 1px rgba(0,0,0,0.04); }
.zd-step-num span { font-size: 14px; font-weight: 700; }
.zd-step-item.active .zd-step-num { background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25); }
.zd-step-item.done .zd-step-num { background: #e8f5e9; color: #2e7d32; }
.zd-step-label { font-size: 12px; color: #999; font-weight: 500; line-height: 1.3; }
.zd-step-item.active .zd-step-label { color: var(--primary); font-weight: 600; }
.zd-step-item.done .zd-step-label { color: #2e7d32; }
.zd-line { flex: 1; height: 2px; background: #f0f0f0; margin: 16px 6px 0; min-width: 16px; border-radius: 1px; }
.zd-line.active { background: var(--primary); }
.zd-no-license { text-align: center; padding: 40px 20px; }
.zd-warn-icon { font-size: 48px; margin-bottom: 12px; }
.zd-no-license p { font-size: 14px; color: var(--text-3); margin-bottom: 16px; }
.zd-license-info { padding: 16px; }

/* 零申报空状态（未绑定执照） */
.zd-empty-state { padding: 28px 20px 40px; text-align: center; }
.zd-empty-illustration { position: relative; width: 160px; height: 160px; margin: 0 auto 28px; }
.zd-empty-circle { width: 124px; height: 124px; border-radius: 50%; background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%); display: flex; align-items: center; justify-content: center; margin: 24px auto 0; box-shadow: 0 10px 28px rgba(37, 99, 235, 0.14); }
.zd-empty-lock { font-size: 58px; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.1)); }
.zd-empty-badges { position: absolute; top: 0; right: 4px; display: flex; flex-direction: column; gap: 10px; }
.zd-empty-badge { width: 46px; height: 46px; border-radius: 50%; background: #fff; box-shadow: 0 4px 14px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: center; font-size: 22px; animation: zd-float 3s ease-in-out infinite; }
.zd-empty-badge:nth-child(2) { animation-delay: 0.6s; }
@keyframes zd-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}
.zd-empty-title { font-size: 20px; font-weight: 700; color: var(--text-1); margin-bottom: 8px; }
.zd-empty-subtitle { font-size: 14px; color: var(--text-3); line-height: 1.6; margin-bottom: 24px; padding: 0 8px; }
.zd-empty-benefits { text-align: left; background: #fff; border-radius: 14px; padding: 18px; margin-bottom: 28px; box-shadow: 0 2px 10px rgba(0,0,0,0.04); border: 1px solid #f0f0f0; }
.zd-benefit-item { display: flex; align-items: flex-start; gap: 12px; padding: 13px 0; border-bottom: 1px solid #f5f5f5; }
.zd-benefit-item:last-child { border-bottom: none; }
.zd-benefit-icon { width: 38px; height: 38px; border-radius: 50%; background: #f0f7ff; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }
.zd-benefit-item div { display: flex; flex-direction: column; gap: 3px; }
.zd-benefit-item strong { font-size: 15px; color: var(--text-1); font-weight: 600; }
.zd-benefit-item span { font-size: 13px; color: var(--text-3); line-height: 1.4; }
.zd-bind-btn { width: 100%; padding: 14px 24px; border: none; border-radius: 12px; background: linear-gradient(135deg, var(--primary) 0%, #1d4ed8 100%); color: #fff; font-size: 16px; font-weight: 600; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 2px; box-shadow: 0 4px 16px rgba(37,99,235,0.25); transition: transform 0.15s, box-shadow 0.15s; }
.zd-bind-btn span { display: block; }
.zd-bind-btn small { font-size: 12px; opacity: 0.85; font-weight: 400; }
.zd-bind-btn:active { transform: translateY(1px); box-shadow: 0 2px 10px rgba(37,99,235,0.2); }
.zd-empty-help { margin-top: 18px; font-size: 13px; color: var(--text-3); }
.zd-empty-help a { color: var(--primary); text-decoration: none; font-weight: 500; }
.zd-license-card { display: flex; align-items: center; gap: 12px; padding: 14px; border-radius: 10px; background: #f0f7ff; border: 1px solid #bfdbfe; }
.zd-lic-icon { font-size: 28px; }
.zd-license-card strong { display: block; font-size: 14px; color: var(--text); }
.zd-lic-no { font-size: 11px; color: var(--text-3); display: block; }
.zd-lic-status { font-size: 11px; color: #2e7d32; font-weight: 600; }
.zd-section { padding: 16px 20px; }
.zd-section h4 { font-size: 15px; color: var(--text); margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
.zd-form { display: flex; flex-direction: column; gap: 12px; }
.zd-form-field { display: flex; flex-direction: column; gap: 4px; }
.zd-form-field label { font-size: 13px; font-weight: 600; color: var(--text-2); display: flex; align-items: center; gap: 6px; }
.zd-hint { font-size: 11px; color: var(--text-3); font-weight: 400; }
.zd-input { padding: 10px 12px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; color: var(--text); background: #fff; }
.zd-input:read-only { background: #f9fafb; color: var(--text-2); }
.zd-input:focus { border-color: var(--primary); outline: none; }
.zd-form-note { font-size: 12px; color: var(--danger); background: #fff5f5; padding: 8px 12px; border-radius: 6px; line-height: 1.6; margin-top: 4px; }
.zd-submit-btn { width: calc(100% - 40px); margin: 16px 20px; padding: 14px; border: none; border-radius: 10px; background: linear-gradient(135deg, var(--primary), #3b82f6); color: #fff; font-size: 16px; font-weight: 600; cursor: pointer; }

/* 支付卡片 */
.pay-card { margin: 0 16px 20px; border-radius: 14px; overflow: hidden; box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
.pay-header { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; background: linear-gradient(135deg, #1a5fb4, #2563eb); color: #fff; }
.pay-title { font-size: 15px; font-weight: 600; }
.pay-price { font-size: 28px; font-weight: 800; }
.pay-detail { padding: 16px 20px; background: #fff; }
.pay-row { display: flex; justify-content: space-between; padding: 10px 0; font-size: 14px; color: var(--text-2); }
.pay-divider { border-top: 1px dashed var(--border); margin: 8px 0; }
.pay-total { color: var(--danger); font-size: 18px; }
.pay-methods { padding: 16px 20px; background: #fff; border-top: 1px solid var(--border); }
.pay-methods h5 { font-size: 14px; margin-bottom: 10px; color: var(--text); }
.pay-method-list { display: flex; flex-direction: column; gap: 8px; }
/* [20261103] 支付方式选项：原类名 .pm-item 与首页滚动宣传条的 .pm-item 撞名，
   后者被覆盖成 display:flex + padding + border → 宣传条里图标和文字挤成一团（用户截图3）。
   加 pay- 前缀彻底隔离。 */
.pay-m-item { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-radius: 10px; border: 2px solid var(--border); cursor: pointer; font-size: 14px; }
.pay-m-item.active { border-color: var(--primary); background: #f0f7ff; }
.pay-m-item input[type="radio"] { accent-color: var(--primary); }
.pay-confirm-btn { width: calc(100% - 40px); margin: 0 20px 8px; padding: 14px; border: none; border-radius: 10px; background: var(--danger); color: #fff; font-size: 16px; font-weight: 700; cursor: pointer; }
.pay-agreement { font-size: 12px; color: var(--text-3); text-align: center; padding-bottom: 16px; }
.pay-agreement a { color: var(--primary); }

/* 申报成功 */
.sd-success { text-align: center; padding: 30px 20px; }
.sd-success-icon { font-size: 56px; margin-bottom: 16px; }
.sd-success h3 { font-size: 20px; color: #2e7d32; margin-bottom: 8px; }
.sd-success p { font-size: 14px; color: var(--text-2); margin-bottom: 20px; }
.sd-success-card { background: #f8fafc; border-radius: 12px; padding: 16px; text-align: left; margin-bottom: 16px; }
.sd-s-row { display: flex; justify-content: space-between; padding: 8px 0; font-size: 13px; border-bottom: 1px solid #f0f0f0; }
.sd-s-row:last-child { border-bottom: none; }
.sd-success-note { font-size: 12px; color: var(--text-3); background: #f0f7ff; padding: 10px; border-radius: 8px; margin-bottom: 20px; }
.sd-done-btn { padding: 12px 40px; border: none; border-radius: 10px; background: var(--primary); color: #fff; font-size: 16px; font-weight: 600; cursor: pointer; }

/* ========== 企业搜索 ========== */
.ls-search-bar { padding: 16px; }
.ls-search-box { display: flex; gap: 8px; }
.ls-search-input { flex: 1; padding: 12px 16px; border: 2px solid var(--border); border-radius: 10px; font-size: 15px; }
.ls-search-input:focus { border-color: var(--primary); outline: none; }
.ls-search-btn { padding: 12px 20px; border: none; border-radius: 10px; background: var(--primary); color: #fff; font-size: 14px; cursor: pointer; white-space: nowrap; }
.ls-search-hint { font-size: 12px; color: var(--text-3); margin-top: 8px; }
.ls-results { padding: 0 16px 20px; }
.ls-placeholder { text-align: center; padding: 40px 20px; }
.ls-placeholder-icon { font-size: 48px; margin-bottom: 12px; opacity: 0.5; }
.ls-placeholder p { font-size: 15px; color: var(--text-2); }
.ls-sub { font-size: 12px; color: var(--text-3); margin-top: 6px; }
.ls-results-header { padding: 10px 0; font-size: 13px; color: var(--text-2); border-bottom: 1px solid var(--border); margin-bottom: 12px; }
.ls-results-header strong { color: var(--text); }
.ls-results-header em { color: var(--primary); font-style: normal; }
.ls-tip { font-size: 11px; color: var(--text-3); float: right; }
.ls-ent-card { background: #fff; border-radius: 12px; padding: 16px; margin-bottom: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.04); cursor: pointer; border: 2px solid transparent; transition: all 0.2s; }
.ls-ent-card:hover { border-color: var(--primary); }
.ls-ent-card.ls-bound { opacity: 0.7; cursor: default; border-color: #e0e0e0; }
.ls-ent-top { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.ls-ent-icon { font-size: 24px; }
.ls-ent-main { flex: 1; }
.ls-ent-main h5 { font-size: 15px; color: var(--text); margin-bottom: 2px; }
.ls-ent-no { font-size: 11px; color: var(--text-3); }
.ls-badge-bound { font-size: 11px; padding: 3px 10px; background: #e8f5e9; color: #2e7d32; border-radius: 20px; font-weight: 600; }
.ls-badge-bind { font-size: 11px; padding: 3px 10px; background: var(--primary); color: #fff; border-radius: 20px; font-weight: 600; }
.ls-ent-info { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 0; }
.ls-ent-info span { font-size: 12px; color: var(--text-2); background: #f8fafc; padding: 3px 8px; border-radius: 4px; }
.ls-ent-tags { display: flex; gap: 6px; flex-wrap: wrap; }
.ls-ent-tag { font-size: 11px; padding: 2px 8px; border-radius: 4px; background: #f0f4ff; color: var(--primary); }
.ls-ent-tag.tag-green { background: #e8f5e9; color: #2e7d32; }
.ls-ent-tag.tag-gray { background: #f5f5f5; color: #999; }
.ls-ent-reports { font-size: 12px; color: var(--text-3); margin-top: 8px; display: flex; gap: 6px; flex-wrap: wrap; }
.ls-report-tag { font-size: 11px; padding: 2px 6px; border-radius: 3px; }
.ls-report-done { background: #e8f5e9; color: #2e7d32; }
.ls-report-todo { background: #fff3e0; color: #e65100; }
.ls-no-result { text-align: center; padding: 30px; color: var(--text-3); font-size: 14px; }

/* ========== 增强版企业信息（多执照） ========== */
.ei-license-section { padding: 16px; }
.ei-section-hd { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.ei-section-hd h4 { font-size: 15px; color: var(--text); }
.ei-add-lic { font-size: 13px; padding: 6px 14px; border: 1px solid var(--primary); border-radius: 20px; background: #fff; color: var(--primary); cursor: pointer; font-weight: 600; }
.ei-empty-license { text-align: center; padding: 40px 20px; }
.ei-empty-icon { font-size: 48px; margin-bottom: 10px; opacity: 0.4; }
.ei-empty-license p { font-size: 14px; color: var(--text-2); }
.ei-empty-sub { font-size: 12px; color: var(--text-3); margin-top: 4px; margin-bottom: 16px; }
.ei-search-btn { padding: 10px 24px; border: none; border-radius: 8px; background: var(--primary); color: #fff; font-size: 14px; cursor: pointer; }
.ei-license-card { background: #fff; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.04); margin-bottom: 16px; overflow: hidden; border: 1px solid var(--border); }
.ei-lic-hd { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: #f8fafc; border-bottom: 1px solid var(--border); }
.ei-lic-no { font-size: 13px; font-weight: 600; color: var(--text); }
.ei-lic-action { font-size: 11px; padding: 4px 10px; border: 1px solid var(--border); border-radius: 14px; background: #fff; color: var(--text-2); cursor: pointer; margin-left: 6px; }
.ei-unbind { color: var(--danger); border-color: #fecaca; }
.ei-lic-body { padding: 16px; }
.ei-lic-item { display: flex; justify-content: space-between; padding: 6px 0; font-size: 13px; }
.ei-lic-item span:first-child { color: var(--text-3); min-width: 90px; }
.ei-lic-item strong { color: var(--text); font-size: 14px; }
.ei-status-active { color: #2e7d32; font-weight: 600; }
.ei-status-warn { color: #e65100; font-weight: 600; }
.ei-report-tag { font-size: 11px; padding: 2px 6px; border-radius: 3px; margin-right: 4px; }
.ei-report-ok { background: #e8f5e9; color: #2e7d32; }
.ei-report-pend { background: #fff3e0; color: #e65100; }
.ei-lic-footer { display: flex; gap: 10px; padding: 12px 16px; border-top: 1px solid var(--border); }
.ei-lic-sign { flex: 1; padding: 10px; border: none; border-radius: 8px; background: var(--primary); color: #fff; font-size: 13px; font-weight: 600; cursor: pointer; }
.ei-lic-declare { flex: 1; padding: 10px; border: 2px solid var(--primary); border-radius: 8px; background: #fff; color: var(--primary); font-size: 13px; font-weight: 600; cursor: pointer; }
.ei-multi-notice { display: flex; align-items: flex-start; gap: 8px; padding: 12px 16px; background: #f0f7ff; border-radius: 10px; font-size: 13px; color: var(--text-2); line-height: 1.6; }

/* ========== 代理记账签约 ========== */
.bk-sign-lic { padding: 16px; }
.bk-lic-tag { font-size: 11px; padding: 2px 8px; background: var(--primary); color: #fff; border-radius: 4px; display: inline-block; margin-bottom: 8px; }
.bk-lic-info { padding: 14px; background: #f8fafc; border-radius: 10px; border: 1px solid var(--border); }
.bk-lic-info strong { display: block; font-size: 15px; color: var(--text); margin-bottom: 4px; }
.bk-lic-info span { font-size: 12px; color: var(--text-3); display: block; }
.bk-lic-status { color: #2e7d32 !important; font-weight: 600; }
.bk-sign-detail { padding: 16px; }
.bk-sign-row { display: flex; justify-content: space-between; padding: 10px 0; font-size: 14px; color: var(--text-2); border-bottom: 1px solid #f0f0f0; }
.bk-sign-row:last-child { border-bottom: none; }
.bk-sign-notice { margin: 0 16px; padding: 12px; background: #fff3e0; border-radius: 8px; font-size: 13px; color: #5d4037; line-height: 1.6; }
.bk-sign-btn { width: calc(100% - 32px); margin: 0 16px 20px !important; padding: 14px; border: none; border-radius: 10px; background: var(--primary); color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; }

/* ========== 财税评估增强 ========== */
.ta-auth-bar { padding: 10px 16px; background: #e8f5e9; font-size: 12px; color: #2e7d32; display: flex; align-items: center; gap: 8px; }
.ta-auth-dot { width: 8px; height: 8px; border-radius: 50%; background: #2e7d32; display: inline-block; animation: pulse 2s infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.4} }
.ta-score-section { display: flex; align-items: center; gap: 20px; padding: 20px; background: linear-gradient(135deg, #f0f7ff, #e8f5e9); }
.ta-score-circle { width: 80px; height: 80px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), #3b82f6); display: flex; flex-direction: column; align-items: center; justify-content: center; color: #fff; }
.ta-score-num { font-size: 28px; font-weight: 800; line-height: 1; }
.ta-score-label { font-size: 12px; }
.ta-text-warn { color: #e65100; }
.ta-score-sub { font-size: 12px; color: var(--text-3); margin-top: 4px; }
.ta-section { padding: 0 16px 20px; }
.ta-section h4 { font-size: 15px; color: var(--text); margin-bottom: 12px; padding-top: 16px; }
.ta-indicators { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.ta-ind-card { padding: 12px; border-radius: 10px; background: #f8fafc; text-align: center; border: 1px solid transparent; }
.ta-ind-card.good { background: #e8f5e9; border-color: #a5d6a7; }
.ta-ind-card.normal { background: #f8fafc; border-color: var(--border); }
.ta-ind-card.warn { background: #fff8e1; border-color: #ffcc80; }
.ta-ind-card.risk { background: #ffebee; border-color: #ef9a9a; }
.ta-ind-val { font-size: 20px; font-weight: 800; color: var(--text); margin-bottom: 4px; }
.ta-ind-label { font-size: 12px; color: var(--text-3); margin-bottom: 4px; }
.ta-ind-normal { font-size: 10px; color: var(--text-3); margin-bottom: 4px; }
.ta-ind-advice { font-size: 11px; color: var(--text-2); }
.ta-compare { display: flex; flex-direction: column; gap: 8px; }
.ta-comp-item { display: flex; align-items: center; gap: 8px; padding: 12px; background: #f8fafc; border-radius: 10px; font-size: 13px; }
.ta-comp-label { min-width: 70px; color: var(--text-2); }
.ta-comp-yours { font-weight: 700; color: var(--primary); }
.ta-comp-vs { font-size: 11px; color: var(--text-3); }
.ta-comp-avg { color: var(--text-2); }
.ta-comp-badge { font-size: 11px; padding: 2px 8px; border-radius: 4px; margin-left: auto; }
.ta-comp-badge.good { background: #e8f5e9; color: #2e7d32; }
.ta-trend-data { margin-bottom: 4px; }
.ta-trend-label { font-size: 13px; font-weight: 600; color: var(--text); display: block; margin-bottom: 10px; }
.ta-trend-bars { display: flex; gap: 4px; align-items: flex-end; height: 80px; }
.ta-bar-item { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.ta-bar { width: 100%; max-width: 24px; background: linear-gradient(to top, var(--primary), #93c5fd); border-radius: 3px 3px 0 0; transition: height 0.5s; }
.ta-bar.tax-bar { background: linear-gradient(to top, #e65100, #ff9800); }
.ta-bar-item span { font-size: 9px; color: var(--text-3); text-align: center; line-height: 1.4; }
.ta-bar-item small { font-size: 8px; }
.ta-risk-item { padding: 14px; border-radius: 10px; margin-bottom: 10px; }
.ta-risk-item.risk-red { background: #ffebee; }
.ta-risk-item.risk-yellow { background: #fff8e1; }
.ta-risk-item.risk-green { background: #e8f5e9; }
.ta-risk-hd { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; font-size: 14px; }
.ta-risk-dot { width: 8px; height: 8px; border-radius: 50%; }
.dot-red { background: #e53935; }
.dot-yellow { background: #ff9800; }
.dot-green { background: #4caf50; }
.ta-risk-detail { font-size: 13px; color: var(--text-2); margin-bottom: 6px; line-height: 1.5; }
.ta-risk-suggest { font-size: 12px; color: var(--primary); font-weight: 500; }
.ta-ext-services { display: flex; flex-direction: column; gap: 8px; }
.ta-ext-item { display: flex; align-items: center; gap: 12px; padding: 14px; background: #f8fafc; border-radius: 10px; cursor: pointer; transition: all 0.2s; border: 1px solid var(--border); }
.ta-ext-item:hover { background: #f0f7ff; border-color: var(--primary); }
.ta-ext-icon { font-size: 24px; }
.ta-ext-item strong { display: block; font-size: 14px; color: var(--text); }
.ta-ext-item p { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.ta-ext-arrow { margin-left: auto; font-size: 18px; color: var(--text-3); }
.ta-ext-page { padding: 16px; }
.ta-ext-hero { text-align: center; padding: 30px 0; }
.ta-ext-hero-icon { font-size: 56px; margin-bottom: 12px; }
.ta-ext-hero h3 { font-size: 18px; color: var(--text); margin-bottom: 6px; }
.ta-ext-hero p { font-size: 14px; color: var(--text-3); }
.ta-ext-desc { background: #fff3e0; border-radius: 10px; padding: 14px; font-size: 13px; color: #5d4037; line-height: 1.7; margin-bottom: 16px; }
.ta-ext-actions { display: flex; flex-direction: column; gap: 10px; }
.ta-ext-action-card { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 20px; border-radius: 12px; background: #f8fafc; border: 2px solid var(--border); cursor: pointer; text-align: center; }
.ta-ext-action-card:hover { border-color: var(--primary); background: #f0f7ff; }
.ta-ext-big-icon { font-size: 32px; }

/* 税负优化 */
.tp-score { text-align: center; padding: 20px; }
.tp-score-circle { font-size: 42px; font-weight: 800; color: var(--primary); }
.tp-score-text { font-size: 13px; color: var(--text-3); }
.tp-suggestions { display: flex; flex-direction: column; gap: 12px; }
.tp-sug-item { display: flex; gap: 12px; padding: 14px; background: #f8fafc; border-radius: 10px; border: 1px solid var(--border); }
.tp-sug-num { font-size: 24px; font-weight: 800; color: var(--primary); opacity: 0.4; min-width: 36px; line-height: 1; }
.tp-sug-item h5 { font-size: 14px; color: var(--text); margin-bottom: 4px; }
.tp-sug-item p { font-size: 13px; color: var(--text-2); line-height: 1.5; }

/* 税务自查 */
.tc-checks { display: flex; flex-direction: column; gap: 10px; }
.tc-check-item { padding: 14px; border-radius: 10px; border-left: 4px solid transparent; }
.tc-check-item.risk-red { border-left-color: #e53935; background: #fff5f5; }
.tc-check-item.risk-yellow { border-left-color: #ff9800; background: #fffdf7; }
.tc-check-item.risk-green { border-left-color: #4caf50; background: #f5fdf5; }
.tc-check-hd { font-size: 12px; font-weight: 700; margin-bottom: 4px; }
.tc-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; margin-right: 6px; }
.tc-dot.red { background: #e53935; }
.tc-dot.yellow { background: #ff9800; }
.tc-dot.green { background: #4caf50; }
.tc-check-item.risk-red .tc-check-hd { color: #e53935; }
.tc-check-item.risk-yellow .tc-check-hd { color: #ff9800; }
.tc-check-item.risk-green .tc-check-hd { color: #4caf50; }
.tc-check-item h5 { font-size: 14px; color: var(--text); margin-bottom: 4px; }
.tc-check-item p { font-size: 13px; color: var(--text-2); line-height: 1.5; }
.tc-score-result { text-align: center; padding: 20px; margin-top: 16px; }
.tc-score-big { font-size: 48px; font-weight: 800; color: var(--primary); }
.tc-score-big span { font-size: 20px; }
.tc-score-tip { font-size: 12px; color: var(--text-3); }

/* 发票检测 */
.inv-status { display: flex; gap: 10px; margin-bottom: 16px; }
.inv-stat-card { flex: 1; text-align: center; padding: 16px 8px; background: #f8fafc; border-radius: 10px; }
.inv-stat-num { display: block; font-size: 24px; font-weight: 800; color: var(--text); }
.inv-stat-num.green { color: #2e7d32; }
.inv-stat-num.yellow { color: #e65100; }
.inv-stat-label { font-size: 12px; color: var(--text-3); display: block; margin-top: 4px; }
.inv-list { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }
.inv-item { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; background: #fff; border-radius: 8px; border: 1px solid var(--border); font-size: 13px; }
.inv-normal { font-size: 11px; padding: 2px 8px; background: #e8f5e9; color: #2e7d32; border-radius: 4px; }
.inv-warn { font-size: 11px; padding: 2px 8px; background: #fff3e0; color: #e65100; border-radius: 4px; }
.inv-note { font-size: 12px; padding: 10px; background: #fff3e0; border-radius: 8px; color: #5d4037; }
.inv-note p { line-height: 1.6; }

/* 优惠政策 */
.tp-subtitle { font-size: 14px; color: var(--text-2); margin-bottom: 16px; text-align: center; }
.tp-policy-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.tp-policy-item { display: flex; gap: 10px; padding: 14px; background: #f8fafc; border-radius: 10px; border: 1px solid var(--border); }
.tp-p-check { font-size: 18px; flex-shrink: 0; }
.tp-policy-item h5 { font-size: 14px; color: var(--text); margin-bottom: 4px; }
.tp-policy-item p { font-size: 13px; color: var(--text-2); line-height: 1.5; }
.tp-p-match { font-size: 12px; margin-top: 4px; }
.green { color: #2e7d32; }
.yellow { color: #e65100; }
.red { color: #e53935; }
.tp-estimated { background: #f0f7ff; border-radius: 12px; padding: 16px; }
.tp-estimated h4 { font-size: 15px; color: var(--text); margin-bottom: 8px; padding-top: 0; }
.tp-estimated p { font-size: 14px; line-height: 1.6; color: var(--text-2); }


/* 免登录提示弹窗 */
.need-login-card { max-width: 320px; text-align: center; padding: 28px 24px; }
.need-login-card .nl-icon { font-size: 44px; margin-bottom: 8px; }
.need-login-card .nl-title { font-size: 18px; font-weight: 700; color: #1f2d3d; margin-bottom: 8px; }
.need-login-card .nl-desc { font-size: 14px; color: #5b6b7b; line-height: 1.6; margin-bottom: 18px; }
.need-login-card .nl-actions { display: flex; flex-direction: column; gap: 10px; }

/* 样式化确认/提示弹窗（替代原生 confirm/alert） */
.confirm-card, .alert-card { max-width: 340px; text-align: center; padding: 26px 24px; }
.confirm-card .cf-title, .alert-card .cf-title { font-size: 18px; font-weight: 700; color: #1f2d3d; margin-bottom: 12px; }
.confirm-card .cf-text, .alert-card .cf-text { font-size: 14px; color: #5b6b7b; line-height: 1.7; white-space: pre-line; margin-bottom: 20px; text-align: left; }
.confirm-card .cf-actions, .alert-card .cf-actions { display: flex; gap: 12px; }
.confirm-card .cf-actions .btn, .alert-card .cf-actions .btn { flex: 1; }

/* ==========================================================
   资讯中心（新闻公告）
   ========================================================== */

/* ---- 首页新闻条目（分类标签 + 未读态） ---- */
.news-item { cursor: pointer; gap: 8px; transition: background .18s; }
.news-item:active { background: #f7f9fc; }
.news-cat {
  flex: 0 0 auto; font-size: 10px; line-height: 1.6; padding: 1px 6px;
  border-radius: 4px; font-weight: 600; letter-spacing: .2px; white-space: nowrap;
}
.news-cat-policy   { color: #1a5fb4; background: #e8f1fb; }
.news-cat-notice   { color: #0f766e; background: #e6f6f4; }
.news-cat-industry { color: #b45309; background: #fdf3e3; }
.news-cat-activity { color: #be123c; background: #fdeaef; }
.news-cat-case   { color: #be123c; background: #fdeaef; }
.news-item .news-text {
  flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; color: var(--text-2); font-size: 13px;
}
.news-item .news-text.is-unread { color: var(--text); font-weight: 600; }
.news-flag {
  flex: 0 0 auto; font-size: 9px; font-weight: 700; padding: 1px 5px;
  border-radius: 3px; letter-spacing: .3px;
}
.news-flag-top { color: #fff; background: var(--accent); }
.news-flag-new { color: #fff; background: var(--success); }
.news-item .news-date { flex: 0 0 auto; color: var(--text-3); font-size: 11px; }
.news-more-row {
  text-align: center; padding: 11px 0 4px; font-size: 12px; color: var(--primary);
  font-weight: 600; cursor: pointer; border-top: 1px solid var(--border); margin-top: 4px;
}
.news-more-row:active { opacity: .6; }

/* ---- 资讯中心 ---- */
.nc-page { padding: 12px 14px 32px; background: var(--bg); min-height: 100%; }

.nc-hero {
  background: linear-gradient(135deg, #123f7d 0%, #1a5fb4 55%, #2b7fd4 100%);
  border-radius: var(--radius-lg); padding: 18px 16px; color: #fff; margin-bottom: 14px;
  box-shadow: 0 6px 18px rgba(26, 95, 180, .22);
}
.nc-hero-title { font-size: 17px; font-weight: 700; letter-spacing: .3px; }
.nc-hero-sub { font-size: 11.5px; opacity: .82; margin-top: 6px; line-height: 1.5; }

.nc-search {
  display: flex; align-items: center; gap: 6px; background: var(--card);
  border-radius: var(--radius); padding: 8px 10px; margin-bottom: 12px;
  box-shadow: var(--shadow); border: 1px solid var(--border);
}
.nc-search-icon { font-size: 13px; flex: 0 0 auto; opacity: .6; }
.nc-search-input {
  flex: 1 1 auto; min-width: 0; border: none; outline: none; font-size: 13px;
  color: var(--text); background: transparent; -webkit-appearance: none;
}
.nc-search-input::placeholder { color: var(--text-3); }
.nc-search-clear {
  flex: 0 0 auto; width: 18px; height: 18px; border-radius: 50%; background: #e5e7eb;
  color: #6b7280; font-size: 10px; display: flex; align-items: center;
  justify-content: center; cursor: pointer;
}
.nc-search-btn {
  flex: 0 0 auto; border: none; background: var(--primary); color: #fff;
  font-size: 12px; font-weight: 600; padding: 6px 14px; border-radius: var(--radius-sm);
  cursor: pointer;
}
.nc-search-btn:active { background: var(--primary-dark); }

.nc-cats {
  display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; margin-bottom: 12px;
  -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.nc-cats::-webkit-scrollbar { display: none; }
.nc-cat {
  flex: 0 0 auto; font-size: 12px; padding: 7px 13px; border-radius: 20px;
  background: var(--card); color: var(--text-2); border: 1px solid var(--border);
  cursor: pointer; white-space: nowrap; transition: all .18s; font-weight: 500;
}
.nc-cat b { font-weight: 700; opacity: .55; font-size: 10.5px; margin-left: 1px; }
.nc-cat.active {
  background: var(--primary); color: #fff; border-color: var(--primary);
  box-shadow: 0 3px 10px rgba(26, 95, 180, .28);
}
.nc-cat.active b { opacity: .8; }

.nc-list { display: flex; flex-direction: column; gap: 10px; }
.nc-card {
  display: flex; gap: 11px; background: var(--card); border-radius: var(--radius);
  padding: 12px; box-shadow: var(--shadow); cursor: pointer;
  border-left: 3px solid transparent; transition: transform .16s, box-shadow .16s;
}
.nc-card:active { transform: scale(.988); box-shadow: 0 1px 6px rgba(0,0,0,.05); }
.nc-card.unread { border-left-color: var(--primary); }
.nc-card-cover {
  flex: 0 0 auto; width: 54px; height: 54px; border-radius: var(--radius-sm);
  display: flex; align-items: center; justify-content: center; font-size: 26px;
  box-shadow: 0 2px 8px rgba(0,0,0,.12);
}
.nc-card-main { flex: 1 1 auto; min-width: 0; }
.nc-card-top { display: flex; align-items: center; gap: 5px; margin-bottom: 5px; }
.nc-card-title {
  font-size: 14px; font-weight: 600; color: var(--text); line-height: 1.42;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.nc-card.unread .nc-card-title { font-weight: 700; }
.nc-card-sum {
  font-size: 11.5px; color: var(--text-2); line-height: 1.55; margin-top: 5px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.nc-card-meta { margin-top: 7px; display: flex; flex-direction: column; gap: 2px; }
.nc-card-src {
  font-size: 10.5px; color: var(--primary); font-weight: 500;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.nc-card-sub { font-size: 10.5px; color: var(--text-3); }

.nc-empty { text-align: center; padding: 56px 24px; }
.nc-empty-icon { font-size: 46px; opacity: .38; }
.nc-empty-title { font-size: 15px; font-weight: 600; color: var(--text); margin-top: 12px; }
.nc-empty-sub { font-size: 12px; color: var(--text-3); margin-top: 6px; line-height: 1.6; }
.nc-footer {
  text-align: center; font-size: 11px; color: var(--text-3);
  padding: 20px 16px 4px; line-height: 1.6;
}

/* ---- 资讯详情 ---- */
.modal-title-bar { position: relative; }
.nd-topbar-share {
  position: absolute; right: 14px; top: 50%; transform: translateY(-50%);
  font-size: 13px; color: var(--primary); font-weight: 600; cursor: pointer;
}
.nd-topbar-share:active { opacity: .6; }
.nd-page { padding: 0 0 36px; background: var(--card); min-height: 100%; }
.nd-cover {
  height: 132px; display: flex; align-items: center; justify-content: center;
  position: relative;
}
.nd-cover-icon { font-size: 58px; filter: drop-shadow(0 4px 10px rgba(0,0,0,.22)); }
.nd-title {
  font-size: 21px; font-weight: 700; line-height: 1.42; color: var(--text);
  padding: 20px 18px 0; letter-spacing: .2px;
}
.nd-meta { padding: 12px 18px 0; }
.nd-meta-source { font-size: 12.5px; color: var(--primary); font-weight: 600; }
.nd-meta-line { font-size: 11.5px; color: var(--text-3); margin-top: 4px; }
.nd-summary {
  margin: 16px 18px 0; padding: 12px 14px; background: var(--primary-light);
  border-radius: var(--radius-sm); font-size: 13px; line-height: 1.72;
  color: #1e4b82; border-left: 3px solid var(--primary);
}
.nd-body { padding: 4px 18px 0; }
.nd-h {
  font-size: 15.5px; font-weight: 700; color: var(--text); margin: 24px 0 10px;
  padding-left: 10px; border-left: 3px solid var(--primary); line-height: 1.5;
}
.nd-p { font-size: 14px; line-height: 1.85; color: #37404f; margin: 12px 0; text-align: justify; }
.nd-ul, .nd-ol { margin: 12px 0 12px 4px; padding-left: 18px; }
.nd-ul li, .nd-ol li {
  font-size: 13.5px; line-height: 1.78; color: #37404f; margin-bottom: 9px; padding-left: 2px;
}
.nd-ul li::marker { color: var(--primary); }
.nd-ol li::marker { color: var(--primary); font-weight: 700; }
.nd-quote {
  margin: 16px 0; padding: 12px 14px; background: #f7f8fb; border-radius: var(--radius-sm);
  border-left: 3px solid var(--text-3); font-size: 13px; line-height: 1.72;
  color: var(--text-2); font-style: normal;
}
.nd-tip {
  display: flex; gap: 9px; margin: 20px 0 8px; padding: 13px 14px;
  background: var(--accent-light); border-radius: var(--radius-sm);
  border: 1px solid rgba(212, 160, 23, .28);
}
.nd-tip-icon { flex: 0 0 auto; font-size: 15px; line-height: 1.5; }
.nd-tip-text { font-size: 13px; line-height: 1.72; color: #7a5a08; }
.nd-kv {
  margin: 14px 0; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden;
}
.nd-kv-row { display: flex; border-bottom: 1px solid var(--border); }
.nd-kv-row:last-child { border-bottom: none; }
.nd-kv-row:nth-child(odd) { background: #fafbfd; }
.nd-kv-k {
  flex: 0 0 96px; padding: 10px 11px; font-size: 12px; font-weight: 600;
  color: var(--text); background: rgba(26,95,180,.045); line-height: 1.55;
}
.nd-kv-d { flex: 1 1 auto; padding: 10px 11px; font-size: 12.5px; color: var(--text-2); line-height: 1.65; }

.nd-tags { display: flex; flex-wrap: wrap; gap: 7px; padding: 22px 18px 0; }
.nd-tag {
  font-size: 11.5px; color: var(--primary); background: var(--primary-light);
  padding: 4px 10px; border-radius: 12px; font-weight: 500;
}

.nd-cta {
  margin: 22px 18px 0; padding: 15px 16px; border-radius: var(--radius);
  background: linear-gradient(135deg, #123f7d, #1a5fb4); color: #fff;
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  cursor: pointer; box-shadow: 0 5px 16px rgba(26,95,180,.28);
}
.nd-cta:active { opacity: .88; }
.nd-cta-text { min-width: 0; }
.nd-cta-text strong { display: block; font-size: 14.5px; font-weight: 700; line-height: 1.45; }
.nd-cta-text span { display: block; font-size: 11px; opacity: .78; margin-top: 3px; }
.nd-cta-arrow { flex: 0 0 auto; font-size: 12px; font-weight: 600; opacity: .95; }

.nd-actions { display: flex; gap: 8px; padding: 18px 18px 0; }
.nd-act {
  flex: 1 1 0; padding: 11px 6px; border-radius: var(--radius-sm); font-size: 12.5px;
  font-weight: 600; cursor: pointer; background: var(--card); color: var(--text-2);
  border: 1px solid var(--border); transition: all .18s;
}
.nd-act:active { transform: scale(.97); }
.nd-act.active { color: var(--accent); border-color: rgba(212,160,23,.5); background: var(--accent-light); }
.nd-act-primary { background: var(--primary); color: #fff; border-color: var(--primary); }

.nd-related { margin: 26px 18px 0; padding-top: 18px; border-top: 1px solid var(--border); }
.nd-related-title { font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 10px; }
.nd-related-item {
  display: flex; align-items: center; gap: 9px; padding: 9px 0; cursor: pointer;
  border-bottom: 1px dashed var(--border);
}
.nd-related-item:last-child { border-bottom: none; }
.nd-related-item:active { opacity: .6; }
.nd-related-cover {
  flex: 0 0 auto; width: 34px; height: 34px; border-radius: 7px; font-size: 17px;
  display: flex; align-items: center; justify-content: center;
}
.nd-related-text {
  flex: 1 1 auto; min-width: 0; font-size: 12.5px; color: var(--text); line-height: 1.45;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.nd-related-date { flex: 0 0 auto; font-size: 10.5px; color: var(--text-3); }

.nd-disclaimer {
  margin: 24px 18px 0; padding: 11px 12px; background: #f7f8fb; border-radius: var(--radius-sm);
  font-size: 10.5px; color: var(--text-3); line-height: 1.68;
}


/* ====== 公安备案号（v=20260817-r18） ====== */
.site-footer .sf-gongan { color: #1a5fb4; flex-shrink: 0; margin-top: 4px; }

/* ====== 财税体检报告（P1 · 0 元获客钩子） ====== */

/* 首页入口卡片 */
.health-entry {
  margin: 16px;
  background: linear-gradient(135deg, #1a5fb4, #2d7dd2);
  border-radius: var(--radius);
  padding: 14px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-shadow: var(--shadow);
  cursor: pointer;
}
.health-entry:active { opacity: 0.9; }

/* ============ [r108] 多企业：企业切换条 / 切换面板 / 添加企业 ============ */
.company-bar {
  margin: 0 16px 12px;
  background: linear-gradient(135deg, #0A2350, #2d5aa8);
  border-radius: var(--radius);
  padding: 10px 14px;
  box-shadow: 0 2px 8px rgba(10, 35, 80, .14);
  cursor: pointer;
}
.company-bar:active { opacity: 0.9; }
.cb-inner { display: flex; align-items: center; gap: 8px; }
.cb-label {
  font-size: 11px; color: rgba(255,255,255,.7);
  background: rgba(255,255,255,.14); padding: 2px 8px; border-radius: 20px; flex-shrink: 0;
}
.cb-name {
  flex: 1; min-width: 0; font-size: 14px; font-weight: 700; color: #fff;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cb-switch {
  display: flex; align-items: center; gap: 1px;
  font-size: 12px; color: rgba(255,255,255,.9); font-weight: 600; flex-shrink: 0;
}

/* 切换面板 */
.cmp-page { background: var(--bg); }
.cmp-tip {
  display: flex; gap: 8px; align-items: flex-start;
  margin: 12px 16px; padding: 10px 12px;
  background: #eef4ff; border: 1px solid #d9e5ff; border-radius: 10px;
  font-size: 12px; color: #3a5a8c; line-height: 1.65;
}
.cmp-tip-ic { flex-shrink: 0; }
.cmp-list { padding: 0 16px; }
.cmp-item {
  display: flex; align-items: flex-start; gap: 10px;
  background: #fff; border: 1px solid var(--border); border-radius: var(--radius);
  padding: 12px 14px; margin-bottom: 10px; cursor: pointer;
}
.cmp-item.on { border-color: var(--primary); background: #f7faff; }
.cmp-item:active { opacity: 0.9; }
.cmp-main { flex: 1; min-width: 0; }
.cmp-name { font-size: 14.5px; font-weight: 700; color: var(--text); }
.cmp-meta { font-size: 11.5px; color: var(--text-3); margin-top: 4px; }
.cmp-meta2 { font-size: 11.5px; color: var(--text-2); margin-top: 3px; }
.cmp-warn { color: #e9730c; }
.cmp-right { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; flex-shrink: 0; }
.cmp-cur {
  font-size: 11px; font-weight: 700; color: var(--primary);
  background: var(--primary-light); padding: 2px 9px; border-radius: 20px;
}
.cmp-rm { font-size: 11.5px; color: #94a3b8; text-decoration: underline; }
.cmp-add {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin: 6px 16px 24px; padding: 13px;
  border: 1px dashed #c7d3e2; border-radius: var(--radius);
  color: var(--primary); font-size: 13.5px; font-weight: 600; cursor: pointer;
  background: #fff;
}
.cmp-add:active { opacity: 0.85; }
.cmp-add-ic { font-size: 16px; }
.cmp-form { padding: 4px 16px 28px; }
.cmp-note {
  font-size: 11.5px; color: var(--text-3); line-height: 1.7;
  background: var(--bg); border-radius: 8px; padding: 10px 12px; margin: 4px 0 14px;
}

/* ============ [r108] 签约页：企业选择 / 服务归属 / 合同清单 ============ */
.cs-comp-picker { display: flex; flex-direction: column; gap: 8px; }
.cs-comp {
  border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px;
  background: #fff; cursor: pointer;
}
.cs-comp.on { border-color: var(--primary); background: #f7faff; }
.cs-comp:active { opacity: 0.9; }
.cs-comp-name { font-size: 14px; font-weight: 700; color: var(--text); }
.cs-comp-meta { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }

.cs-item-owner {
  display: flex; align-items: center; gap: 6px; margin-top: 7px;
  padding-top: 7px; border-top: 1px dashed var(--border);
}
.cs-owner-lb { font-size: 11.5px; color: var(--text-3); flex-shrink: 0; }
.cs-owner-sel {
  flex: 1; min-width: 0; font-size: 12px; color: var(--primary);
  border: 1px solid #c9dcf5; border-radius: 6px; padding: 3px 6px;
  background: #f7faff; font-weight: 600;
}

.cs-grp-list { display: flex; flex-direction: column; gap: 10px; }
.cs-grp {
  border: 1px solid var(--border); border-radius: 10px; padding: 11px 12px;
  background: #fff; cursor: pointer;
}
.cs-grp:active { opacity: 0.9; background: #fafcff; }
.cs-grp-head { display: flex; align-items: flex-start; gap: 9px; }
.cs-grp-ic { font-size: 19px; flex-shrink: 0; line-height: 1.3; }
.cs-grp-info { flex: 1; min-width: 0; }
.cs-grp-title { font-size: 14px; font-weight: 700; color: var(--text); }
.cs-grp-sub { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.cs-grp-right { text-align: right; flex-shrink: 0; }
.cs-grp-right b { font-size: 14px; color: var(--primary); }
.cs-grp-go { display: block; font-size: 11.5px; color: var(--text-3); margin-top: 2px; }
.cs-grp-items { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 5px; }
.cs-grp-items em {
  font-style: normal; font-size: 11px; color: var(--text-2);
  background: var(--bg); border-radius: 5px; padding: 2px 7px;
}

/* 我的合同：按企业分组 */
.ct-sum-bar {
  display: flex; align-items: center; justify-content: space-between;
  margin: 12px 16px 6px; padding: 10px 14px;
  background: #eef4ff; border-radius: 10px; font-size: 12.5px; color: #3a5a8c;
}
.ct-sum-bar b { font-size: 16px; color: var(--primary); }
.ct-company-group { margin: 12px 0 4px; }
.ctcg-head {
  display: flex; align-items: center; gap: 8px;
  padding: 0 16px 8px;
}
.ctcg-name {
  font-size: 13.5px; font-weight: 700; color: var(--text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ctcg-count {
  font-size: 11px; color: var(--text-3);
  background: var(--bg); padding: 1px 8px; border-radius: 20px; flex-shrink: 0;
}

/* [r108] 管理端客户卡片：同一联系人名下有多家企业时的标识 */
.acc-c-sib {
  display: inline-block; margin-left: 6px;
  font-size: 10.5px; font-weight: 600; color: #7a4ecb;
  background: #f3ecff; border-radius: 20px; padding: 1px 7px;
  vertical-align: middle;
}
/* [r107] 软件开发入口：藏青→蓝紫渐变，与财税体检的蓝渐变区分开 */
.sw-entry {
  background: linear-gradient(135deg, #0A2350, #3B4FA8);
}
.sw-entry .he-icon { font-size: 24px; }
.sw-entry .he-title { font-size: 13.5px; line-height: 1.4; }
.sw-entry .he-desc { font-size: 11px; line-height: 1.5; }
.sw-entry .he-desc { color: rgba(255,255,255,0.78); }
/* [r107] 入口卡文案较长，右侧按钮不要被挤到换行 */
.sw-entry .he-left { flex: 1; min-width: 0; }
.sw-entry .he-text { min-width: 0; }
.sw-entry .he-arrow { flex-shrink: 0; white-space: nowrap; }
.sw-entry .he-title, .sw-entry .he-desc { word-break: break-word; }

/* [r107] 服务详情里的软件开发项目制说明块 */
.sd-software-tip {
  background: #eef2ff;
  border: 1px solid #dbe3f7;
  border-radius: var(--radius);
  padding: 12px 14px;
  margin-bottom: 20px;
}
.sdt-title {
  font-size: 13px; font-weight: 700; color: #3B4FA8; margin-bottom: 6px;
}
.sdt-text {
  font-size: 12px; color: var(--text-2); line-height: 1.7;
}
.he-left { display: flex; align-items: center; gap: 12px; }
.he-icon {
  width: 42px; height: 42px; border-radius: 10px;
  background: rgba(255,255,255,0.18);
  display: flex; align-items: center; justify-content: center;
  font-size: 22px; flex-shrink: 0;
}
.he-title { font-size: 15px; font-weight: 700; color: #fff; }
.he-desc { font-size: 11px; color: rgba(255,255,255,0.82); margin-top: 3px; }
.he-arrow { display: flex; align-items: center; gap: 2px; color: #fff; font-size: 12px; font-weight: 600; }

/* 引导页 */
.hc-hero { text-align: center; padding: 8px 0 18px; }
.hc-hero-badge {
  display: inline-block; background: var(--success-bg); color: #e63946;
  font-size: 11px; font-weight: 700; padding: 4px 12px; border-radius: 20px; margin-bottom: 10px;
}
.hc-hero-title { font-size: 18px; font-weight: 700; color: var(--text); }
.hc-hero-desc { font-size: 12px; color: var(--text-3); margin-top: 8px; line-height: 1.6; padding: 0 12px; }

.hc-last-card {
  display: flex; align-items: center; gap: 16px;
  background: #fafbfd; border: 1px solid var(--border);
  border-radius: var(--radius); padding: 14px 16px; margin-bottom: 16px;
}
.hc-last-left { text-align: center; min-width: 64px; }
.hc-last-score { font-size: 30px; font-weight: 800; line-height: 1; }
.hc-last-label { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.hc-last-right { flex: 1; }
.hc-last-level { font-size: 15px; font-weight: 700; }
.hc-last-time { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.hc-last-risk { font-size: 12px; color: var(--orange); margin-top: 6px; font-weight: 600; }
.hc-delta-up { font-size: 11px; color: #2d9d5f; margin-left: 6px; font-weight: 600; }
.hc-delta-down { font-size: 11px; color: #e63946; margin-left: 6px; font-weight: 600; }
.hc-delta-flat { font-size: 11px; color: var(--text-3); margin-left: 6px; font-weight: 600; }

.hc-empty-tip {
  text-align: center; font-size: 12px; color: var(--text-3);
  background: #fafbfd; border-radius: var(--radius); padding: 14px; margin-bottom: 16px;
}

.hc-feature-list { margin: 18px 0 4px; display: grid; gap: 10px; }
.hc-feature { display: flex; align-items: flex-start; gap: 10px; font-size: 12px; color: var(--text-2); line-height: 1.5; }
.hc-feature b { color: var(--text); font-weight: 700; }
.hcf-icon { font-size: 16px; flex-shrink: 0; }

.hc-history-title { font-size: 13px; font-weight: 700; color: var(--text); margin: 18px 0 8px; }
.hc-history-item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px; border: 1px solid var(--border); border-radius: 10px; margin-bottom: 8px;
  cursor: pointer;
}
.hc-history-item:active { background: #fafbfd; }
.hch-score { font-size: 22px; font-weight: 800; min-width: 42px; text-align: center; }
.hch-body { flex: 1; }
.hch-title { font-size: 13px; font-weight: 600; color: var(--text); }
.hch-sub { font-size: 11px; color: var(--text-3); margin-top: 3px; }
.hch-arrow { font-size: 18px; color: var(--text-3); }

/* 进度条 */
.hc-progress { margin-bottom: 14px; }
.hc-progress-bar { height: 6px; background: var(--border); border-radius: 6px; overflow: hidden; }
.hc-progress-fill { height: 100%; background: var(--primary); border-radius: 6px; transition: width 0.25s; }
.hc-progress-text { font-size: 11px; color: var(--text-3); margin-top: 6px; }

/* 画像表单 */
.hc-field { margin-bottom: 14px; }
.hc-field label { display: block; font-size: 12px; font-weight: 600; color: var(--text-2); margin-bottom: 6px; }
.hc-field select {
  width: 100%; height: 42px; padding: 0 12px; font-size: 14px;
  border: 1px solid var(--border); border-radius: 8px; background: #fff; color: var(--text);
  appearance: none;
}

/* 答题 */
.hc-dim-desc { font-size: 12px; color: var(--text-3); margin-bottom: 16px; line-height: 1.5; }
.hc-question { margin-bottom: 18px; }
.hcq-title { font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 10px; line-height: 1.5; }
.hcq-options { display: grid; gap: 8px; }
.hcq-option {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px; border: 1px solid var(--border); border-radius: 10px;
  font-size: 13px; color: var(--text-2); cursor: pointer; transition: 0.15s;
}
.hcq-option:active { transform: scale(0.99); }
.hcq-option.selected { border-color: var(--primary); background: var(--primary-light); color: var(--text); font-weight: 600; }
.hcq-radio {
  width: 16px; height: 16px; border-radius: 50%; border: 1.5px solid #cbd5e1; flex-shrink: 0; position: relative;
}
.hcq-option.selected .hcq-radio { border-color: var(--primary); background: var(--primary); }
.hcq-option.selected .hcq-radio::after {
  content: ''; position: absolute; width: 6px; height: 6px; border-radius: 50%;
  background: #fff; top: 4px; left: 4px;
}
.hcq-label { flex: 1; line-height: 1.45; }

.hc-nav { display: flex; gap: 10px; margin-top: 6px; }

/* 报告 */
.hc-report-hero {
  display: flex; align-items: center; gap: 18px;
  border-radius: var(--radius); padding: 18px 16px; margin-bottom: 6px;
}
.hcrh-ring {
  width: 84px; height: 84px; border-radius: 50%; border: 5px solid;
  display: flex; flex-direction: column; align-items: center; justify-content: center; flex-shrink: 0;
}
.hcrh-num { font-size: 30px; font-weight: 800; line-height: 1; }
.hcrh-unit { font-size: 10px; color: var(--text-3); margin-top: 2px; }
.hcrh-info { flex: 1; }
.hcrh-level { font-size: 20px; font-weight: 800; }
.hcrh-desc { font-size: 12px; color: var(--text-2); margin-top: 5px; line-height: 1.5; }
.hcrh-time { font-size: 11px; color: var(--text-3); margin-top: 6px; }

.hc-profile-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.hc-profile-item {
  display: flex; justify-content: space-between; align-items: center;
  background: #fafbfd; border-radius: 8px; padding: 10px 12px; font-size: 12px;
}
.hc-profile-item span { color: var(--text-3); }
.hc-profile-item b { color: var(--text); font-weight: 600; }

.hc-dim-list { display: grid; gap: 12px; }
.hc-dim-row { }
.hcdr-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; }
.hcdr-name { font-size: 13px; font-weight: 600; color: var(--text); }
.hcdr-score { font-size: 12px; color: var(--text-3); font-weight: 600; }
.hcdr-bar { height: 8px; background: var(--border); border-radius: 8px; overflow: hidden; }
.hcdr-fill { height: 100%; border-radius: 8px; transition: width 0.3s; }

.hc-safe-tip {
  background: var(--green-bg); color: #2d9d5f; font-size: 12px; font-weight: 600;
  padding: 12px; border-radius: 10px; text-align: center;
}

.hc-risk-item {
  background: #fff; border: 1px solid var(--border); border-left: 4px solid;
  border-radius: 10px; padding: 12px 14px; margin-bottom: 10px;
}
.hcri-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.hcri-level { font-size: 11px; font-weight: 700; }
.hcri-title { font-size: 13px; font-weight: 700; color: var(--text); }
.hcri-desc { font-size: 12px; color: var(--text-2); margin-top: 6px; line-height: 1.55; }
.hcri-fix { font-size: 12px; color: var(--primary); margin-top: 8px; line-height: 1.55; font-weight: 600; }

.hc-sug-item {
  background: #fafbfd; border: 1px solid var(--border); border-radius: 10px;
  padding: 12px 14px; margin-bottom: 10px;
}
.hcsi-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.hcsi-pri { font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 20px; }
.pri-high { background: var(--success-bg); color: #e63946; }
.pri-mid { background: var(--accent-light); color: #b8860b; }
.pri-low { background: var(--green-bg); color: #2d9d5f; }
.hcsi-title { font-size: 13px; font-weight: 700; color: var(--text); }
.hcsi-desc { font-size: 12px; color: var(--text-2); margin-top: 6px; line-height: 1.55; }
.hcsi-product { font-size: 12px; color: var(--accent); margin-top: 8px; font-weight: 600; }

.hc-policy-card {
  background: linear-gradient(135deg, #fdf6e3, #fffdf5);
  border: 1px solid #f5e6c8; border-radius: var(--radius); padding: 14px;
}
.hcp-total { font-size: 13px; color: var(--text); margin-bottom: 12px; }
.hcp-total b { color: #d4a017; font-size: 18px; }
.hcp-item { padding: 10px 0; border-top: 1px dashed #f0e0bd; }
.hcpi-name { font-size: 13px; font-weight: 700; color: var(--text); }
.hcpi-desc { font-size: 11px; color: var(--text-2); margin-top: 4px; line-height: 1.5; }
.hcpi-save { font-size: 12px; color: #d4a017; font-weight: 700; margin-top: 5px; }
.hcp-note { font-size: 10px; color: var(--text-3); margin-top: 10px; }

.hc-cta { margin-top: 18px; }
.hc-cta-row { display: flex; gap: 10px; margin-top: 10px; }

/* ====== 黔货出山 · 纯展示提示（r21 去交易化） ====== */
.mall-showcase-tip {
  margin-top: 16px; padding: 12px 14px; border-radius: var(--radius);
  background: var(--bg); border: 1px dashed var(--border);
  font-size: 12px; line-height: 1.6; color: var(--text-2); text-align: center;
}

/* ==========================================================
   公众号动态（r22）—— 首页同步条 / 关注卡片 / 推文详情 / 二维码
   ========================================================== */

/* 首页新闻公告：公众号同步条 */
.news-mp-bar {
  display: flex; align-items: center; gap: 8px;
  margin: 0 16px 8px; padding: 10px 12px;
  background: linear-gradient(135deg, #eefaf2 0%, #f2f8ff 100%);
  border: 1px solid #d9f0e4;
  border-radius: var(--radius);
  cursor: pointer;
}
.news-mp-bar:active { opacity: .78; }
.news-mp-bar .mp-bar-logo { font-size: 18px; line-height: 1; flex: 0 0 auto; }
.news-mp-bar .mp-bar-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.news-mp-bar .mp-bar-main b {
  font-size: 12.5px; color: #0f766e; font-weight: 700;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.news-mp-bar .mp-bar-main i {
  font-style: normal; font-size: 11px; color: var(--text-3);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.news-mp-bar .mp-bar-btn {
  flex: 0 0 auto; font-size: 11px; font-weight: 600; color: #fff;
  background: #07c160; padding: 4px 12px; border-radius: 999px;
}

/* 公众号分类角标 */
.news-cat-mp { color: #0f766e; background: #e6f6f4; }
.news-flag-mp { color: #fff; background: #07c160; }

/* 资讯卡片：公众号真实封面图 */
.nc-card-cover-img { padding: 0; overflow: hidden; background: #e6f6f4; }
.nc-card-cover-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nc-card.is-mp .nc-card-title { color: #0f766e; }

/* 公司相册：分组标题 */
.gallery-group { margin-bottom: 6px; }
.gallery-group-head {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 16px 6px;
}
.gallery-group-head .gg-icon { font-size: 15px; flex: 0 0 auto; }
.gallery-group-head .gg-name { font-size: 13px; font-weight: 700; color: var(--text); flex: 0 0 auto; }
.gallery-group-head .gg-desc {
  flex: 1 1 auto; min-width: 0; font-size: 11px; color: var(--text-3);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.gallery-group-head .gg-count {
  flex: 0 0 auto; font-size: 10px; font-weight: 700; color: var(--primary);
  background: var(--primary-light); border-radius: 999px; padding: 1px 8px;
}

/* 资讯中心：公众号关注卡片 */
.mp-follow-card {
  display: flex; gap: 12px; align-items: center;
  margin: 12px 0 4px; padding: 12px;
  background: linear-gradient(135deg, #eefaf2, #f2f8ff);
  border: 1px solid #d9f0e4; border-radius: var(--radius);
}
.mp-follow-qr {
  width: 76px; height: 76px; flex: 0 0 auto; border-radius: 8px;
  background: #fff; object-fit: contain; padding: 3px; box-sizing: border-box;
  border: 1px solid var(--border); cursor: pointer;
}
.mp-follow-main { flex: 1 1 auto; min-width: 0; }
.mp-follow-name { font-size: 13px; font-weight: 700; color: #0f766e; }
.mp-follow-desc { font-size: 11px; color: var(--text-3); margin-top: 3px; line-height: 1.5; }
.mp-follow-status { font-size: 11px; color: var(--text-2); margin-top: 5px; line-height: 1.5; }
.mp-follow-status.is-ok { color: #07c160; font-weight: 600; }
.mp-follow-actions { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.mp-btn {
  font-size: 12px; padding: 6px 12px; border-radius: 999px;
  border: 1px solid var(--primary); color: var(--primary); background: #fff;
  cursor: pointer; white-space: nowrap;
}
.mp-btn-primary { background: #07c160; border-color: #07c160; color: #fff; }
.mp-btn:active { opacity: .75; }

/* 公众号推文详情 */
.mp-detail-badge {
  display: inline-block; margin: 14px 16px 0;
  font-size: 11px; font-weight: 700; color: #0f766e;
  background: #e6f6f4; padding: 3px 10px; border-radius: 999px;
}
.mp-detail-cover { margin: 12px 16px 0; border-radius: var(--radius); overflow: hidden; background: #eef0f4; }
.mp-detail-cover img { width: 100%; display: block; }
.mp-tip-box {
  margin: 14px 16px 0; padding: 12px;
  background: var(--accent-light); border: 1px solid #f0e2bf; border-radius: var(--radius);
}
.mp-tip-title { font-size: 12.5px; font-weight: 700; color: #92620a; }
.mp-tip-text { font-size: 11.5px; color: #8a6d3b; line-height: 1.6; margin-top: 5px; }
.mp-detail-actions { display: flex; gap: 10px; margin: 12px 16px 0; flex-wrap: wrap; }
.mp-no-url { font-size: 12px; color: var(--text-3); }

/* 公众号二维码弹窗 */
.mp-qr-card {
  position: relative;
  width: 100%; max-width: 320px;
  background: #fff; border-radius: 16px; padding: 22px 20px 20px;
  text-align: center; box-shadow: 0 20px 60px rgba(0,0,0,.4);
}
.mp-qr-title { font-size: 15px; font-weight: 700; color: var(--text); }
.mp-qr-img {
  width: 200px; height: 200px; object-fit: contain;
  margin: 14px auto 8px; display: block; border-radius: 10px;
  border: 1px solid var(--border); background: #fff;
}
.mp-qr-tip { font-size: 12px; color: var(--text-2); }
.mp-qr-desc { font-size: 11px; color: var(--text-3); margin-top: 8px; line-height: 1.6; }
.mp-qr-status { font-size: 11.5px; color: #07c160; margin-top: 10px; font-weight: 600; line-height: 1.5; }
.mp-qr-warn { font-size: 11px; color: var(--warning); margin-top: 6px; line-height: 1.5; }

/* ============ r23 · 服务二级细分（财税 / 工商）============ */

/* 一级标签 + 二级分组导航 一起吸顶 */
.service-sticky {
  position: sticky;
  top: 0;
  z-index: 50;
  background: #fff;
  box-shadow: 0 1px 0 var(--border);
}
.service-sticky .service-tabs {
  position: static;
  z-index: auto;
  border-bottom: none;
  box-shadow: none;
}

/* 二级分组锚点条 */
.service-group-nav {
  display: flex;
  gap: 8px;
  padding: 8px 16px 10px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  border-top: 1px solid var(--border);
}
.service-group-nav::-webkit-scrollbar { display: none; }
.sg-chip {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 12px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--text-2);
  background: var(--bg);
  border: 1px solid transparent;
  border-radius: 999px;
  white-space: nowrap;
  transition: background .18s ease, color .18s ease, box-shadow .18s ease;
}
.sg-chip.active {
  color: #fff;
  background: var(--primary);
  font-weight: 600;
  box-shadow: 0 2px 8px rgba(26, 95, 180, .26);
}
.sgc-icon { font-size: 12px; }

/* 分组块 */
.service-group { margin-bottom: 4px; }
.service-group-head {
  position: relative;
  padding: 14px 2px 8px 10px;
}
.service-group-head::before {
  content: '';
  position: absolute;
  left: 0;
  top: 16px;
  width: 3px;
  height: 14px;
  border-radius: 2px;
  background: var(--primary);
}
.sgh-main { display: flex; align-items: center; gap: 6px; }
.sgh-icon { font-size: 15px; }
.sgh-name { font-size: 14px; font-weight: 700; color: var(--text); }
.sgh-count {
  font-size: 10px;
  font-weight: 600;
  color: var(--primary);
  background: var(--primary-light);
  border-radius: 999px;
  padding: 1px 7px;
}
.sgh-desc {
  font-size: 11px;
  color: var(--text-3);
  margin-top: 3px;
  padding-left: 21px;
}

/* 参考价标记 */
.service-card .sc-price .sc-refprice {
  display: inline-block;
  margin-left: 6px;
  font-size: 10px;
  font-weight: 500;
  color: var(--orange);
  background: var(--orange-bg);
  border-radius: 4px;
  padding: 1px 5px;
  vertical-align: middle;
}

/* 价格说明 */
.service-price-note {
  margin: 14px 0 6px;
  padding: 10px 12px;
  font-size: 11px;
  line-height: 1.6;
  color: var(--text-3);
  background: var(--bg-2);
  border-radius: var(--radius-sm);
  text-align: center;
}
.service-price-note b { color: var(--text-2); }

/* ====== [v=20261016-r24] 黔货出山 · 产品图片选择器 ====== */
.imgpick-wrap { width: 100%; }
.imgpick-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.imgpick-thumb { position: relative; width: 100%; padding-top: 100%; border-radius: var(--radius); overflow: hidden; background: var(--bg); border: 1px solid var(--border); }
.imgpick-thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.imgpick-del { position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 50%; background: rgba(0,0,0,.55); color: #fff; font-size: 15px; line-height: 20px; text-align: center; z-index: 2; }
.imgpick-add { display: flex; flex-direction: column; align-items: center; justify-content: center; padding-top: 100%; position: relative; border: 1px dashed var(--border); border-radius: var(--radius); background: var(--bg); }
.imgpick-add .ipa-icon { position: absolute; top: 34%; font-size: 24px; }
.imgpick-add .ipa-text { position: absolute; top: 56%; font-size: 12px; color: var(--text-3); }
.imgpick-add:active { border-color: var(--primary); background: #fff; }
.imgpick-hint { font-size: 12px; color: var(--text-2); margin-top: 8px; }
.imgpick-hint-sub { font-size: 11px; color: var(--text-3); margin-top: 2px; }

/* ====== [v=20261016-r24] 首页申报进度空态 ====== */
.tfc-empty { padding: 18px 12px; text-align: center; font-size: 12px; color: var(--text-3); line-height: 1.6; }

/* ====== [v=20261016-r24] 组织架构 · 职级与职称 ====== */
.org-optional { font-size: 11px; color: var(--text-3); font-weight: 400; }
.org-field-note { font-size: 11px; color: var(--text-3); line-height: 1.6; margin-top: 6px; }
.org-grade-badge { display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 8px; background: #e8f1fb; color: var(--primary); font-size: 10px; font-weight: 600; vertical-align: middle; }
.org-position-grades { display: flex; gap: 4px; margin-top: 4px; flex-wrap: wrap; }
.org-grade-chip { padding: 1px 8px; border-radius: 10px; background: var(--bg); border: 1px solid var(--border); font-size: 11px; color: var(--text-2); }
.org-member-grade { display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 8px; background: #fff4e0; color: #b26a00; font-size: 10px; font-weight: 600; }
.org-member-owner { display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 8px; background: #e8f1fb; color: var(--primary); font-size: 10px; font-weight: 600; }
.org-member-cert { margin-top: 3px; display: flex; gap: 4px; flex-wrap: wrap; }
.org-cert-chip { padding: 1px 6px; border-radius: 8px; background: #f3e8ff; color: #7c3aed; font-size: 10px; }
.org-grade-info { margin-top: 12px; }
.org-grade-note-text { font-size: 12px; color: var(--text-2); line-height: 1.7; }
.org-grade-table { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.org-grade-row { padding: 8px 12px; background: var(--bg); border-radius: var(--radius); font-size: 13px; }
.org-grade-row .ogr-level { font-weight: 600; color: var(--text); }
/* ============================================================
   r30 会计工作台（管理端）—— 客户列表 / 逐户维护 / 客户消息
   ============================================================ */
.acc-wrap { padding: 12px 14px 28px; }
.acc-summary { display: flex; background: #fff; border-radius: 14px; padding: 14px 6px; box-shadow: var(--shadow); margin-bottom: 12px; }
.acc-sum-item { flex: 1; text-align: center; border-right: 1px solid var(--border); }
.acc-sum-item:last-child { border-right: none; }
.acc-sum-item b { display: block; font-size: 21px; font-weight: 800; color: var(--primary); line-height: 1.25; }
.acc-sum-item span { font-size: 11px; color: var(--text-3); }
.acc-add-btn { display: block; width: 100%; padding: 12px; border: none; border-radius: 12px; background: var(--primary); color: #fff; font-size: 14px; font-weight: 600; margin-bottom: 12px; cursor: pointer; }
.acc-add-btn:active { background: var(--primary-dark); }
.acc-client { background: #fff; border-radius: 14px; padding: 14px; margin-bottom: 10px; box-shadow: var(--shadow); cursor: pointer; }
.acc-client:active { transform: scale(.995); }
.acc-c-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.acc-c-name { font-size: 15px; font-weight: 700; color: var(--text-1); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.acc-c-status { font-size: 11px; padding: 2px 8px; border-radius: 20px; white-space: nowrap; font-weight: 600; }
.acc-c-ok { background: var(--green-bg); color: var(--green); }
.acc-c-half { background: var(--orange-bg); color: var(--orange); }
.acc-c-wait { background: #f4f5f9; color: var(--text-3); }
.acc-c-meta { display: flex; flex-wrap: wrap; gap: 6px 10px; margin-top: 8px; font-size: 12px; color: var(--text-2); }
.acc-c-foot { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--border); font-size: 12px; color: var(--text-3); }
.acc-c-unread { color: var(--danger); font-weight: 600; }

/* 工作台头部 */
.wb-client-head { background: #fff; margin: 12px 14px 0; border-radius: 14px; padding: 14px; box-shadow: var(--shadow); }
.wb-ch-name { font-size: 16px; font-weight: 700; color: var(--text-1); }
.wb-ch-meta { display: flex; flex-wrap: wrap; gap: 6px 10px; margin-top: 6px; font-size: 12px; color: var(--text-2); }
.wb-ch-actions { display: flex; gap: 8px; margin-top: 12px; }
.wb-mini-btn { padding: 7px 14px; border-radius: 20px; border: 1px solid var(--border); background: #fff; color: var(--text-2); font-size: 12px; cursor: pointer; }
.wb-mini-btn.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.wb-mini-btn:active { opacity: .8; }
.wb-danger-btn { display: block; width: 100%; margin-top: 10px; padding: 12px; border-radius: 12px; border: 1px solid #f7c9c9; background: var(--success-bg); color: var(--danger); font-size: 14px; font-weight: 600; cursor: pointer; }

/* 标签页 */
.wb-tabs { display: flex; gap: 6px; padding: 12px 14px 0; overflow-x: auto; }
.wb-tab { flex: none; padding: 8px 14px; border-radius: 20px; background: #fff; border: 1px solid var(--border); font-size: 13px; color: var(--text-2); white-space: nowrap; cursor: pointer; }
.wb-tab.active { background: var(--primary); border-color: var(--primary); color: #fff; font-weight: 600; }
.wb-content { padding: 12px 14px 28px; }

/* 区块 */
.wb-block { background: #fff; border-radius: 14px; padding: 14px; box-shadow: var(--shadow); }
.wb-block-head { display: flex; align-items: center; justify-content: space-between; font-size: 14px; font-weight: 700; color: var(--text-1); margin-bottom: 10px; }
.wb-pct { font-size: 12px; font-weight: 500; color: var(--text-3); }
.wb-progress { height: 6px; background: var(--bg-2); border-radius: 6px; overflow: hidden; margin-bottom: 12px; }
.wb-progress-fill { height: 100%; background: linear-gradient(90deg, #2d9d5f, #37b978); border-radius: 6px; transition: width .3s; }

/* 申报项 */
.wb-tax-item { display: flex; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.wb-tax-item:last-of-type { border-bottom: none; }
.wb-tax-main { flex: 1; min-width: 0; }
.wb-tax-name { font-size: 14px; font-weight: 600; color: var(--text-1); }
.wb-tax-desc { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.wb-tax-meta { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.wb-tax-item.is-filed .wb-tax-name { color: var(--green); }
.wb-tax-act { flex: none; }

/* 财务项 */
.wb-fin-item { display: flex; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--border); cursor: pointer; }
.wb-fin-item:last-of-type { border-bottom: none; }
.wb-fin-month { font-size: 13px; font-weight: 700; color: var(--primary); width: 58px; flex: none; }
.wb-fin-data { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 2px 10px; font-size: 11px; color: var(--text-3); }
.wb-fin-data b { color: var(--text-1); font-weight: 600; }
.wb-fin-edit { font-size: 12px; color: var(--primary); flex: none; }

/* 服务记录 */
.wb-rec-item { display: flex; gap: 10px; padding: 10px 0; border-bottom: 1px dashed var(--border); }
.wb-rec-item:last-of-type { border-bottom: none; }
.wb-rec-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--primary); margin-top: 6px; flex: none; }
.wb-rec-body { flex: 1; }
.wb-rec-title { font-size: 14px; font-weight: 600; color: var(--text-1); }
.wb-rec-desc { font-size: 12px; color: var(--text-2); margin-top: 3px; line-height: 1.5; }
.wb-rec-meta { font-size: 11px; color: var(--text-3); margin-top: 4px; }

/* 工作台消息 */
.wb-chat { max-height: 46vh; overflow-y: auto; padding: 4px 0 8px; }
.wb-chat-row { margin-bottom: 12px; }
.wb-chat-row.is-me { text-align: right; }
.wb-chat-name { font-size: 11px; color: var(--text-3); margin-bottom: 4px; }
.wb-chat-bubble { display: inline-block; max-width: 82%; padding: 10px 14px; border-radius: 14px; font-size: 14px; line-height: 1.5; background: var(--bg-2); color: var(--text-1); text-align: left; word-break: break-word; }
.wb-chat-row.is-me .wb-chat-bubble { background: var(--primary); color: #fff; }
.wb-chat-input { display: flex; gap: 8px; margin-top: 8px; padding-top: 10px; border-top: 1px solid var(--border); }
.wb-chat-input input { flex: 1; padding: 10px 14px; border: 1px solid var(--border); border-radius: 20px; font-size: 14px; background: var(--bg); outline: none; }
.wb-chat-input button { padding: 0 18px; border: none; border-radius: 20px; background: var(--primary); color: #fff; font-size: 14px; font-weight: 600; cursor: pointer; }

/* 表单 */
.wb-form { padding: 14px 16px 32px; }
.wb-form .form-group { margin-bottom: 14px; }
.wb-form label { display: block; font-size: 13px; color: var(--text-2); margin-bottom: 6px; }
.wb-form input, .wb-form select { width: 100%; padding: 11px 14px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 14px; background: #fff; outline: none; }
.wb-form input:focus, .wb-form select:focus { border-color: var(--primary); }
.wb-form .req { color: var(--danger); }
.wb-tip { background: var(--primary-light); color: var(--primary); font-size: 12px; line-height: 1.6; padding: 10px 12px; border-radius: 10px; margin-bottom: 14px; }

/* 客户端：未绑定企业提示 */
.dash-empty-tip { margin: 10px 16px 0; padding: 12px 14px; border-radius: 12px; background: var(--accent-light); color: #8a6d1f; font-size: 12px; line-height: 1.6; }
.dash-empty-tip b { color: #7a5f14; }

/* ====== r30 客户端：财务报表空态 / 服务记录 / 咨询会计 ====== */
.fin-empty-box { background: #fff; border-radius: 14px; padding: 26px 18px; text-align: center; box-shadow: var(--shadow); }
.fin-empty-box.small { padding: 16px; box-shadow: none; background: transparent; }
.feb-icon { font-size: 34px; margin-bottom: 8px; }
.feb-title { font-size: 15px; font-weight: 700; color: var(--text-1); margin-bottom: 6px; }
.feb-desc { font-size: 12px; color: var(--text-3); line-height: 1.7; }
.feb-btn { margin-top: 14px; padding: 10px 22px; border: none; border-radius: 22px; background: var(--primary); color: #fff; font-size: 13px; font-weight: 600; cursor: pointer; }
.svc-rec-list { background: #fff; border-radius: 14px; padding: 6px 14px; box-shadow: var(--shadow); }
.svc-rec-item { display: flex; gap: 10px; padding: 12px 0; border-bottom: 1px dashed var(--border); }
.svc-rec-item:last-child { border-bottom: none; }
.svc-rec-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--green); margin-top: 6px; flex: none; }
.svc-rec-body { flex: 1; min-width: 0; }
.svc-rec-title { font-size: 14px; font-weight: 600; color: var(--text-1); }
.svc-rec-desc { font-size: 12px; color: var(--text-2); margin-top: 3px; line-height: 1.5; }
.svc-rec-meta { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.consult-acc-btn { display: flex; align-items: center; gap: 12px; width: 100%; padding: 14px 16px; border: none; border-radius: 14px; background: linear-gradient(135deg, #1a5fb4, #2b7cd3); color: #fff; text-align: left; cursor: pointer; box-shadow: 0 6px 18px rgba(26,95,180,.25); }
.cab-icon { font-size: 22px; flex: none; }
.cab-text { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.cab-text b { font-size: 14px; font-weight: 700; }
.cab-text i { font-size: 11px; font-style: normal; opacity: .85; }
.cab-arrow { font-size: 20px; opacity: .8; flex: none; }

/* 管理端消息页：客户留言入口 */
.adm-msg-entry { display: flex; align-items: center; gap: 12px; margin: 12px 16px; padding: 14px; background: #fff; border-radius: 14px; box-shadow: var(--shadow); cursor: pointer; }
.ame-icon { width: 40px; height: 40px; border-radius: 12px; background: var(--primary-light); display: flex; align-items: center; justify-content: center; font-size: 20px; flex: none; }
.ame-body { flex: 1; min-width: 0; }
.ame-title { font-size: 14px; font-weight: 700; color: var(--text-1); display: flex; align-items: center; gap: 6px; }
.ame-badge { background: var(--danger); color: #fff; font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 10px; }
.ame-desc { font-size: 12px; color: var(--text-3); margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ame-arrow { font-size: 20px; color: var(--text-3); flex: none; }

/* ================================================================
   r31 · 免费零申报 / 地址挂靠 / 代理记账闭环 / 看板 / 内部沟通
   ================================================================ */

/* ---------- 首页：0 元标签 & 我的服务卡片 ---------- */
.fe-free-tag {
  display: inline-block; margin-left: 6px; padding: 1px 7px;
  background: linear-gradient(135deg, #2d9d5f, #34b376); color: #fff;
  font-size: 11px; font-weight: 700; border-radius: 8px; vertical-align: middle;
}
.fe-free-zero .fe-icon { box-shadow: 0 4px 14px rgba(45,157,95,.18); }

.mysvc-card {
  margin: 12px 16px; background: var(--card); border-radius: var(--radius-lg);
  box-shadow: var(--shadow); overflow: hidden; cursor: pointer;
}
.mysvc-top { display: flex; align-items: center; gap: 12px; padding: 14px 16px; }
.mysvc-icon {
  width: 44px; height: 44px; flex: none; border-radius: 13px;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px; background: var(--primary-light);
}
.mysvc-icon.ok { background: var(--green-bg); }
.mysvc-icon.pending { background: var(--orange-bg); }
.mysvc-icon.conf { background: #eef2ff; }
.mysvc-body { flex: 1; min-width: 0; }
.mysvc-title { font-size: 15px; font-weight: 700; color: var(--text-1); display: flex; align-items: center; gap: 6px; }
.mysvc-desc { font-size: 12px; color: var(--text-3); margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mysvc-tag { font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 8px; }
.mysvc-tag.ok { background: var(--green-bg); color: var(--green); }
.mysvc-tag.warn { background: var(--orange-bg); color: var(--orange); }
.mysvc-go { flex: none; font-size: 12px; color: var(--primary); font-weight: 600; }
.mysvc-bar { height: 3px; background: var(--border); overflow: hidden; }
.mysvc-bar-fill { height: 100%; background: linear-gradient(90deg, var(--green), #4bc98a); transition: width .4s; }

/* ---------- 管理端：管理工作台九宫格 ---------- */
.adm-tools {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
  margin: 0 16px 16px; background: var(--card); border-radius: var(--radius-lg);
  padding: 14px 8px; box-shadow: var(--shadow);
}
.adm-tool { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 6px 0; cursor: pointer; }
.adm-tool:active { opacity: .7; }
.at-icon {
  width: 42px; height: 42px; border-radius: 13px;
  display: flex; align-items: center; justify-content: center; font-size: 19px;
}
.at-label { font-size: 11.5px; color: var(--text-2); text-align: center; line-height: 1.2; }
.at-badge {
  position: absolute; top: 2px; right: 50%; margin-right: -26px;
  min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px;
  background: var(--danger); color: #fff; font-size: 10px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}

/* ---------- 免费零申报：入口 ---------- */
.fz-page { padding-bottom: 24px; }
.fz-hero {
  margin: 12px 16px 0; padding: 18px 18px 16px; border-radius: 18px;
  background: linear-gradient(135deg, #0f7a45 0%, #2d9d5f 55%, #45b877 100%);
  color: #fff; position: relative; overflow: hidden;
  flex-shrink: 0;
}
/* 装饰圆放到内容下层，避免压住文字 */
.fz-hero::after {
  content: ''; position: absolute; right: -40px; top: -40px; z-index: 0;
  width: 140px; height: 140px; border-radius: 50%; background: rgba(255,255,255,.10);
}
.fz-hero > * { position: relative; z-index: 1; }
/* [r32] 药丸内文字精确垂直居中：改用 inline-flex + 固定行高 1，
   原先按 padding 撑高，中文字形重心偏下，视觉上「字贴底 / 不居中」 */
.fz-hero-tag {
  display: inline-flex; align-items: center; justify-content: center;
  height: 22px; padding: 0 11px; border-radius: 11px;
  background: rgba(255,255,255,.22); border: 1px solid rgba(255,255,255,.22);
  font-size: 11px; font-weight: 700; line-height: 1; letter-spacing: .4px;
  vertical-align: top; white-space: nowrap;
}
.fz-hero h3 { font-size: 18px; line-height: 1.45; margin: 10px 0 7px; font-weight: 800; }
.fz-hero p { font-size: 12.5px; line-height: 1.62; opacity: .92; }
.fz-hero-points { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 12px; }
.fz-hero-points span {
  display: inline-flex; align-items: center; height: 24px; padding: 0 9px;
  line-height: 1; border-radius: 8px;
  background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.18);
}

.fz-mine {
  margin: 12px 16px 0; padding: 12px 14px; background: var(--card);
  border-radius: var(--radius); box-shadow: var(--shadow);
  display: flex; align-items: center; justify-content: space-between; gap: 10px; cursor: pointer;
  border-left: 3px solid var(--green);
}
.fz-mine-title { font-size: 14px; font-weight: 700; color: var(--text-1); }
.fz-mine-sub { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.fz-mine-right { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.fz-mini-status { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 8px; }
.fz-mine-arrow { font-size: 11px; color: var(--primary); }

.fz-sec-title {
  display: flex; align-items: center; justify-content: space-between;
  margin: 20px 16px 10px; font-size: 14px; font-weight: 700; color: var(--text-1);
}
.fz-sec-hint { font-size: 11.5px; color: var(--text-3); font-weight: 400; }

.fz-cards { margin: 0 16px; display: flex; flex-direction: column; gap: 12px; }
.fz-card {
  background: var(--card); border-radius: var(--radius-lg); padding: 16px;
  box-shadow: var(--shadow); border: 1px solid var(--border); cursor: pointer;
  transition: transform .15s, box-shadow .15s;
}
.fz-card:active { transform: scale(.985); }
.fz-card-gehu { border-color: #d9f0e2; }
.fz-card-xgm { border-color: #dbe7fb; }
.fz-card-top { display: flex; align-items: flex-start; gap: 12px; }
.fz-card-icon {
  width: 46px; height: 46px; flex: none; border-radius: 14px;
  display: flex; align-items: center; justify-content: center; font-size: 22px;
  background: var(--green-bg);
}
.fz-card-xgm .fz-card-icon { background: var(--primary-light); }
.fz-card-title-wrap { flex: 1; min-width: 0; }
.fz-card-title { font-size: 15.5px; font-weight: 800; color: var(--text-1); }
.fz-card-sub { font-size: 11.5px; color: var(--text-3); margin-top: 3px; line-height: 1.45; }
.fz-card-price { flex: none; text-align: right; color: var(--green); }
.fz-card-price b { font-size: 26px; font-weight: 800; line-height: 1; }
.fz-card-price span { font-size: 11px; margin-left: 2px; }
.fz-card-feats { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 14px; }
.fz-feat {
  font-size: 11px; color: var(--text-2); background: var(--bg);
  padding: 4px 9px; border-radius: 7px;
}
.fz-card-btn {
  width: 100%; padding: 11px 0; border: none; border-radius: 10px;
  background: linear-gradient(135deg, #2d9d5f, #38ad6d); color: #fff;
  font-size: 14px; font-weight: 700; cursor: pointer;
}
.fz-card-xgm .fz-card-btn { background: linear-gradient(135deg, var(--primary), #2d7dd2); }

.fz-divider {
  display: flex; align-items: center; gap: 10px;
  margin: 22px 16px 12px; color: var(--text-3); font-size: 11.5px;
}
.fz-divider::before, .fz-divider::after {
  content: ''; flex: 1; height: 1px; background: var(--border);
}

.fz-consult {
  margin: 0 16px; padding: 15px; border-radius: var(--radius-lg);
  background: linear-gradient(135deg, #fff8ed, #fff1e0);
  border: 1px solid #ffe0b8; display: flex; gap: 12px; align-items: flex-start; cursor: pointer;
}
.fz-consult-icon {
  width: 42px; height: 42px; flex: none; border-radius: 13px; background: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 20px;
  box-shadow: 0 2px 8px rgba(249,115,22,.14);
}
.fz-consult-body { flex: 1; min-width: 0; }
.fz-consult-title { font-size: 14px; font-weight: 800; color: #8a4b00; }
.fz-consult-desc { font-size: 12px; color: #9a6633; line-height: 1.6; margin-top: 4px; }
.fz-consult-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.fz-consult-tags span {
  font-size: 10.5px; color: #b4590a; background: rgba(255,255,255,.75);
  padding: 3px 8px; border-radius: 7px;
}
.fz-consult-arrow { flex: none; font-size: 12px; font-weight: 700; color: #c25c00; align-self: center; }

.fz-note {
  margin: 16px 16px 0; padding: 14px 16px; border-radius: var(--radius);
  background: #fffdf6; border: 1px solid #f6e6c0;
}
.fz-note-title { font-size: 13px; font-weight: 700; color: #8a6a12; }
.fz-note ul { margin: 8px 0 0 16px; }
.fz-note li { font-size: 12px; color: #7a6220; line-height: 1.75; }
.fz-note p { font-size: 11.5px; color: #94803f; margin-top: 8px; line-height: 1.6; }

.fz-upgrade {
  margin: 14px 16px 0; padding: 16px; border-radius: var(--radius-lg);
  background: var(--card); box-shadow: var(--shadow);
}
.fz-upgrade-title { font-size: 13.5px; font-weight: 800; color: var(--text-1); }
.fz-upgrade p { font-size: 12px; color: var(--text-2); line-height: 1.7; margin: 7px 0 12px; }
.fz-upgrade-btn {
  width: 100%; padding: 10px; border-radius: 10px;
  border: 1px solid var(--primary); background: #fff; color: var(--primary);
  font-size: 13px; font-weight: 700; cursor: pointer;
}

/* 状态色 */
.fz-st-pending, .zm-st-pending, .za-st-pending { background: var(--orange-bg); color: var(--orange); }
.fz-st-accepted, .zm-st-accepted, .za-st-accepted { background: var(--primary-light); color: var(--primary); }
.fz-st-filing, .zm-st-filing, .za-st-filing { background: #eef2ff; color: #4f46e5; }
.fz-st-done, .zm-st-done, .za-st-done { background: var(--green-bg); color: var(--green); }
.fz-st-rejected, .zm-st-rejected, .za-st-rejected { background: var(--success-bg); color: var(--danger); }

/* ---------- 免费零申报：填报表单 ---------- */
.zk-banner {
  margin: 12px 16px 0; padding: 14px; border-radius: var(--radius);
  background: linear-gradient(135deg, #f0fbf5, #eaf7f0);
  border: 1px solid #d6efe2; display: flex; gap: 12px; align-items: center;
}
.zk-banner-icon {
  width: 42px; height: 42px; flex: none; border-radius: 12px; background: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 20px;
}
.zk-banner-title { font-size: 14px; font-weight: 800; color: #1c6b45; }
.zk-banner-sub { font-size: 11.5px; color: #4c8266; margin-top: 3px; line-height: 1.5; }

.zk-form { padding: 4px 16px 24px; }
.zk-group { margin-top: 16px; background: var(--card); border-radius: var(--radius-lg); box-shadow: var(--shadow); overflow: hidden; }
.zk-group-title {
  padding: 12px 16px; font-size: 13.5px; font-weight: 800; color: var(--text-1);
  background: linear-gradient(180deg, #fbfcfe, #f7f9fc); border-bottom: 1px solid var(--border);
}
.zk-group-body { padding: 4px 16px 14px; }
.zk-field { padding: 10px 0; border-bottom: 1px solid #f6f7fa; }
.zk-field:last-child { border-bottom: none; }
/* [r124] 表单字段下的说明文字（如统一初始密码提示） */
.zk-tip { font-size: 12px; color: var(--text-3, #94a3b8); line-height: 1.6; margin-top: 6px; }
.zk-tip b { color: var(--primary, #0A2350); font-weight: 700; }
.zk-label { display: block; font-size: 12.5px; color: var(--text-2); font-weight: 600; margin-bottom: 7px; }
.zk-req { color: var(--danger); margin-left: 3px; }
.zk-input {
  width: 100%; padding: 10px 12px; border: 1px solid var(--border); border-radius: 9px;
  font-size: 13.5px; color: var(--text-1); background: #fbfcfe; outline: none;
  font-family: inherit; transition: border-color .15s, background .15s;
}
.zk-input:focus { border-color: var(--primary); background: #fff; }
textarea.zk-input { resize: vertical; line-height: 1.6; }
.zk-hint { font-size: 11px; color: var(--text-3); margin-top: 5px; line-height: 1.5; }

.zk-promise {
  margin-top: 16px; padding: 14px; border-radius: var(--radius);
  background: #fffdf6; border: 1px solid #f6e6c0;
}
.zk-promise-row { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; }
.zk-promise-row input { margin-top: 2px; width: 16px; height: 16px; flex: none; accent-color: var(--green); }
.zk-promise-row span { font-size: 11.5px; color: #7a6220; line-height: 1.7; }

.zk-submit-tip {
  display: flex; gap: 8px; align-items: flex-start;
  margin-top: 12px; padding: 10px 12px; border-radius: 9px; background: var(--bg);
  font-size: 11px; color: var(--text-3); line-height: 1.6;
}
.zk-submit {
  width: 100%; margin-top: 16px; padding: 13px 0; border: none; border-radius: 11px;
  background: linear-gradient(135deg, #2d9d5f, #38ad6d); color: #fff;
  font-size: 15px; font-weight: 800; cursor: pointer;
  box-shadow: 0 4px 14px rgba(45,157,95,.22);
}
.zk-submit:active { transform: scale(.99); }
.zk-submit-note { text-align: center; font-size: 11px; color: var(--text-3); margin-top: 9px; }

/* ---------- 我的零申报 ---------- */
.zm-card {
  margin: 12px 16px; padding: 15px; background: var(--card);
  border-radius: var(--radius-lg); box-shadow: var(--shadow);
}
.zm-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.zm-company { font-size: 14.5px; font-weight: 800; color: var(--text-1); }
.zm-meta { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.zm-status { font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 8px; flex: none; }

.zm-steps { display: flex; align-items: center; margin: 16px 0 12px; }
.zm-step { display: flex; flex-direction: column; align-items: center; gap: 5px; flex: none; width: 56px; }
.zm-dot {
  width: 24px; height: 24px; border-radius: 50%; background: var(--bg-2); color: var(--text-3);
  display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700;
}
.zm-step.done .zm-dot { background: var(--green); color: #fff; }
.zm-step.active .zm-dot { box-shadow: 0 0 0 4px rgba(45,157,95,.15); }
.zm-label { font-size: 10.5px; color: var(--text-3); }
.zm-step.done .zm-label { color: var(--green); font-weight: 600; }
.zm-line { flex: 1; height: 2px; background: var(--border); margin: 0 -4px; margin-bottom: 16px; }
.zm-line.done { background: var(--green); }

.zm-foot {
  display: flex; flex-wrap: wrap; gap: 10px; padding-top: 10px;
  border-top: 1px dashed var(--border); font-size: 11px; color: var(--text-3);
}
.zm-receipt { color: var(--green); font-weight: 600; }
.zm-logs { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--border); }
.zm-log { display: flex; gap: 7px; align-items: baseline; font-size: 11.5px; color: var(--text-2); padding: 4px 0; }
.zm-log-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--green); flex: none; }
.zm-log-t { color: var(--text-3); font-size: 10.5px; flex: none; }
.zm-actions { display: flex; gap: 8px; margin-top: 12px; }
.zm-act {
  flex: 1; padding: 8px; border-radius: 9px; border: 1px solid var(--green);
  background: #fff; color: var(--green); font-size: 12.5px; font-weight: 700; cursor: pointer;
}
.zm-act.ghost { border-color: var(--border); color: var(--text-3); }
.zm-rejected {
  margin: 12px 0; padding: 10px 12px; border-radius: 9px;
  background: var(--success-bg); color: var(--danger); font-size: 11.5px;
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.zm-fix-btn {
  border: none; background: var(--danger); color: #fff; font-size: 11px;
  padding: 5px 10px; border-radius: 7px; cursor: pointer; flex: none;
}

/* ---------- 会计端：零申报工单 ---------- */
.za-tabs { display: flex; gap: 6px; padding: 10px 16px; overflow-x: auto; }
.za-tabs::-webkit-scrollbar { display: none; }
.za-tab {
  flex: none; padding: 7px 12px; border-radius: 9px; background: var(--card);
  font-size: 12.5px; color: var(--text-2); cursor: pointer; border: 1px solid var(--border);
  display: flex; align-items: center; gap: 5px;
}
.za-tab.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.za-tab span { font-size: 10.5px; opacity: .8; }
.za-list { padding: 0 16px 24px; }
.za-card {
  background: var(--card); border-radius: var(--radius); padding: 14px;
  box-shadow: var(--shadow); margin-bottom: 10px; cursor: pointer;
}
.za-card-hd { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.za-company { font-size: 14px; font-weight: 800; color: var(--text-1); }
.za-status { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 7px; flex: none; }
.za-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; font-size: 11.5px; color: var(--text-2); }
.za-type { background: var(--green-bg); color: var(--green); padding: 1px 7px; border-radius: 6px; font-size: 11px; }
.za-foot {
  display: flex; justify-content: space-between; margin-top: 10px; padding-top: 9px;
  border-top: 1px dashed var(--border); font-size: 11px; color: var(--text-3);
}
.za-unclaimed { color: var(--orange); font-weight: 600; }

/* ---------- 会计端：零申报处理 ---------- */
.zh-head { margin: 12px 16px 0; padding: 16px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.zh-company { font-size: 16px; font-weight: 800; color: var(--text-1); }
.zh-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.zh-tag { font-size: 11px; padding: 3px 9px; border-radius: 7px; background: var(--bg); color: var(--text-2); }
.zh-tag-accepted { background: var(--primary-light); color: var(--primary); }
.zh-tag-filing { background: #eef2ff; color: #4f46e5; }
.zh-tag-done { background: var(--green-bg); color: var(--green); }
.zh-tag-pending { background: var(--orange-bg); color: var(--orange); }
.zh-acc { font-size: 11.5px; color: var(--text-3); margin-top: 9px; }
.zh-acc.warn { color: var(--orange); font-weight: 600; }

.zh-block { margin: 12px 16px 0; padding: 15px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.zh-block-title { font-size: 13.5px; font-weight: 800; color: var(--text-1); margin-bottom: 10px; }
.zh-rows { border-top: 1px solid var(--border); }
.zh-row { display: flex; gap: 10px; padding: 9px 0; border-bottom: 1px solid #f6f7fa; font-size: 12.5px; }
.zh-k { flex: none; width: 132px; color: var(--text-3); }
.zh-v { flex: 1; color: var(--text-1); word-break: break-all; }
.zh-copy-tip {
  margin-top: 10px; padding: 9px 11px; border-radius: 8px; background: #fffdf6;
  font-size: 11px; color: #8a6a12; line-height: 1.6;
}
.zh-actions { display: flex; flex-direction: column; gap: 8px; margin-top: 6px; }
.zh-btn-ghost {
  width: 100%; padding: 11px; border-radius: 10px; border: 1px solid var(--border);
  background: #fff; color: var(--text-2); font-size: 13px; font-weight: 600; cursor: pointer;
}
.zh-contact { display: flex; align-items: center; justify-content: space-between; font-size: 12.5px; color: var(--text-2); }

/* ---------- 地址挂靠 ---------- */
.ah-page { padding-bottom: 24px; }
.ah-hero {
  margin: 12px 16px 0; padding: 20px 18px; border-radius: 18px;
  background: linear-gradient(135deg, #1e3a8a, #2563eb 60%, #3b82f6);
  color: #fff;
}
.ah-hero-icon { font-size: 26px; }
.ah-hero h3 { font-size: 18px; font-weight: 800; margin: 10px 0 8px; }
.ah-hero p { font-size: 12.5px; line-height: 1.7; opacity: .93; }
.ah-why { margin: 12px 16px 0; padding: 13px 15px; border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.ah-why-item b { display: block; font-size: 12.5px; color: var(--text-1); margin-bottom: 5px; }
.ah-why-item span { font-size: 11.5px; color: var(--text-2); line-height: 1.7; }

.ah-plans { margin: 14px 16px 0; display: flex; flex-direction: column; gap: 12px; }
.ah-plan { padding: 16px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); border: 1px solid var(--border); }
.ah-plan-head { display: flex; gap: 12px; }
.ah-plan-icon {
  width: 44px; height: 44px; flex: none; border-radius: 13px; background: var(--primary-light);
  display: flex; align-items: center; justify-content: center; font-size: 21px;
}
.ah-plan-title { font-size: 15px; font-weight: 800; color: var(--text-1); display: flex; align-items: center; gap: 7px; }
.ah-plan-tag { font-size: 10px; font-weight: 700; color: var(--primary); background: var(--primary-light); padding: 1px 7px; border-radius: 7px; }
.ah-plan-desc { font-size: 11.5px; color: var(--text-3); line-height: 1.6; margin-top: 4px; }
.ah-plan-price { display: flex; align-items: baseline; gap: 5px; margin: 12px 0 10px; }
.ah-plan-price b { font-size: 21px; font-weight: 800; color: var(--primary); }
.ah-plan-price span { font-size: 11.5px; color: var(--text-3); }
.ah-plan-price em { font-size: 10.5px; color: var(--orange); font-style: normal; margin-left: auto; }
.ah-plan-items { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.ah-plan-items span { font-size: 11px; color: var(--text-2); background: var(--bg); padding: 4px 9px; border-radius: 7px; }
.ah-plan-btn {
  width: 100%; padding: 10px; border-radius: 10px; border: 1px solid var(--primary);
  background: #fff; color: var(--primary); font-size: 13px; font-weight: 700; cursor: pointer;
}

.ah-factors { margin: 14px 16px 0; padding: 15px; border-radius: var(--radius); background: #f8fbff; border: 1px solid #dce9fb; }
.ah-factors-title { font-size: 13px; font-weight: 800; color: #1e40af; margin-bottom: 9px; }
.ah-factors ol { margin-left: 18px; }
.ah-factors li { font-size: 12px; color: #33507f; line-height: 1.8; }
.ah-factors b { color: #1e3a8a; }

.ah-form { margin: 14px 16px 0; padding: 15px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.ah-form-title { font-size: 14px; font-weight: 800; color: var(--text-1); margin-bottom: 6px; }

.ah-success { padding: 34px 20px; text-align: center; }
.ah-success-icon { font-size: 46px; }
.ah-success h3 { font-size: 18px; font-weight: 800; margin: 12px 0 8px; color: var(--text-1); }
.ah-success p { font-size: 12.5px; color: var(--text-2); line-height: 1.7; }
.ah-success-card {
  margin: 18px 0; padding: 14px; border-radius: var(--radius); background: var(--card);
  box-shadow: var(--shadow); text-align: left;
}
.ah-s-row { display: flex; justify-content: space-between; padding: 8px 0; font-size: 12.5px; border-bottom: 1px solid #f6f7fa; }
.ah-s-row:last-child { border-bottom: none; }
.ah-s-row span:first-child { color: var(--text-3); }
.ah-s-row span:last-child { color: var(--text-1); font-weight: 600; }

.ld-card { margin: 12px 16px; padding: 14px; border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.ld-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ld-name { font-size: 14px; font-weight: 800; color: var(--text-1); }
.ld-phone { font-size: 12px; color: var(--primary); font-weight: 600; margin-left: 8px; }
.ld-status { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 7px; flex: none; }
.ld-st-new { background: var(--orange-bg); color: var(--orange); }
.ld-st-contacted { background: var(--primary-light); color: var(--primary); }
.ld-st-done { background: var(--green-bg); color: var(--green); }
.ld-row { font-size: 11.5px; color: var(--text-2); margin-top: 6px; }
.ld-need { margin-top: 8px; padding: 9px 11px; border-radius: 8px; background: var(--bg); font-size: 11.5px; color: var(--text-2); line-height: 1.6; }
.ld-foot { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; padding-top: 9px; border-top: 1px dashed var(--border); }
.ld-foot > span { font-size: 11px; color: var(--text-3); }
.ld-actions { display: flex; gap: 6px; }

/* ---------- 我的服务（闭环） ---------- */
.ms-page { padding-bottom: 24px; }
.ms-steps { display: flex; align-items: center; padding: 14px 16px 4px; }
.ms-step { display: flex; flex-direction: column; align-items: center; gap: 5px; flex: none; width: 50px; }
.ms-step-dot {
  width: 24px; height: 24px; border-radius: 50%; background: var(--bg-2); color: var(--text-3);
  display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700;
}
.ms-step.done .ms-step-dot { background: var(--green); color: #fff; }
.ms-step.cur .ms-step-dot { box-shadow: 0 0 0 4px rgba(45,157,95,.16); }
.ms-step-label { font-size: 10.5px; color: var(--text-3); }
.ms-step.done .ms-step-label { color: var(--green); font-weight: 600; }
.ms-step-line { flex: 1; height: 2px; background: var(--border); margin-bottom: 16px; }

.ms-company {
  margin: 8px 16px 0; padding: 11px 14px; border-radius: var(--radius);
  background: var(--card); box-shadow: var(--shadow); font-size: 13px; font-weight: 700;
  color: var(--text-1); display: flex; align-items: center; gap: 8px;
}
.ms-company em { font-style: normal; font-size: 11px; color: var(--text-3); font-weight: 400; margin-left: auto; }

.ms-empty { padding: 40px 24px; text-align: center; }
.ms-empty-icon { font-size: 46px; }
.ms-empty h3 { font-size: 17px; font-weight: 800; margin: 12px 0 8px; color: var(--text-1); }
.ms-empty p { font-size: 12.5px; color: var(--text-2); line-height: 1.7; }
.ms-empty .zk-submit { max-width: 260px; margin: 18px auto 0; }
.ms-empty-note { font-size: 11px; color: var(--text-3); margin-top: 10px; }

.ms-stage-card { margin: 14px 16px 0; padding: 18px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.ms-stage-title { font-size: 15px; font-weight: 800; color: var(--text-1); margin-bottom: 12px; }
.ms-kv { display: flex; justify-content: space-between; padding: 9px 0; font-size: 12.5px; border-bottom: 1px solid #f6f7fa; }
.ms-kv span { color: var(--text-3); }
.ms-kv b { color: var(--text-1); font-weight: 600; }
.ms-amount { color: var(--danger) !important; font-size: 16px; font-weight: 800 !important; }
.ms-note { text-align: center; font-size: 11px; color: var(--text-3); margin-top: 9px; }

.ms-wait { padding: 40px 24px; text-align: center; }
.ms-wait-icon { font-size: 44px; }
.ms-wait h3 { font-size: 17px; font-weight: 800; margin: 12px 0 8px; color: var(--text-1); }
.ms-wait p { font-size: 12.5px; color: var(--text-2); line-height: 1.7; }
.ms-flow-mini { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 6px; margin-top: 20px; }
.ms-flow-mini span { font-size: 11px; color: var(--text-3); padding: 4px 9px; border-radius: 7px; background: var(--bg); }
.ms-flow-mini span.done { background: var(--green-bg); color: var(--green); font-weight: 600; }
.ms-flow-mini span.cur { background: var(--orange-bg); color: var(--orange); font-weight: 700; }
.ms-flow-mini i { width: 12px; height: 1px; background: var(--border); }

.ms-assign { padding: 18px 16px; }
.ms-assign-title { font-size: 15px; font-weight: 800; color: var(--text-1); text-align: center; margin-bottom: 14px; }
.ms-acc-card { display: flex; gap: 14px; align-items: center; padding: 16px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.ms-acc-avatar {
  width: 54px; height: 54px; flex: none; border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), #3b82f6); color: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 21px; font-weight: 700;
}
.ms-acc-avatar.sm { width: 40px; height: 40px; font-size: 16px; }
.ms-acc-name { font-size: 15px; font-weight: 800; color: var(--text-1); }
.ms-acc-phone { font-size: 12px; color: var(--primary); margin-top: 3px; }
.ms-acc-tip { font-size: 11px; color: var(--text-3); margin-top: 4px; line-height: 1.5; }
.ms-assign-desc { font-size: 12px; color: var(--text-2); line-height: 1.7; margin: 14px 0 4px; }
.ms-ghost-btn {
  width: 100%; margin-top: 9px; padding: 11px; border-radius: 10px;
  border: 1px solid var(--border); background: #fff; color: var(--text-2);
  font-size: 13px; font-weight: 600; cursor: pointer;
}

.ms-serving { padding: 12px 16px 0; }
.ms-acc-strip { display: flex; gap: 11px; align-items: center; padding: 12px 14px; border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.ms-acc-strip-info { flex: 1; min-width: 0; }
.ms-block { margin-top: 12px; padding: 15px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.ms-block-head { display: flex; justify-content: space-between; align-items: center; font-size: 13.5px; font-weight: 800; color: var(--text-1); }
.ms-pct { font-size: 11.5px; color: var(--green); font-weight: 700; }
.ms-progress { height: 6px; border-radius: 4px; background: var(--bg-2); overflow: hidden; margin: 10px 0 12px; }
.ms-progress-fill { height: 100%; background: linear-gradient(90deg, var(--green), #4bc98a); transition: width .4s; }
.ms-task-list { margin-top: 2px; }
.ms-task { display: flex; align-items: center; gap: 9px; padding: 8px 0; border-bottom: 1px solid #f6f7fa; font-size: 12.5px; }
.ms-task:last-child { border-bottom: none; }
.ms-task-dot {
  width: 18px; height: 18px; flex: none; border-radius: 50%; border: 1.5px solid var(--border);
  display: flex; align-items: center; justify-content: center; font-size: 10px; color: #fff;
}
.ms-task.done .ms-task-dot { background: var(--green); border-color: var(--green); }
.ms-task-title { flex: 1; color: var(--text-1); }
.ms-task.done .ms-task-title { color: var(--text-3); text-decoration: line-through; }
.ms-task-time { font-size: 10.5px; color: var(--text-3); flex: none; }
.ms-task-more { text-align: center; font-size: 11.5px; color: var(--primary); padding: 9px 0 0; cursor: pointer; }
.ms-hint { font-size: 11.5px; color: var(--text-3); line-height: 1.65; padding: 6px 0; }

.ms-report { display: flex; gap: 11px; align-items: center; padding: 10px 0; border-bottom: 1px solid #f6f7fa; cursor: pointer; }
.ms-report:last-child { border-bottom: none; }
.ms-report-icon { font-size: 20px; flex: none; }
.ms-report-body { flex: 1; min-width: 0; }
.ms-report-title { font-size: 13px; font-weight: 600; color: var(--text-1); }
.ms-report-meta { font-size: 10.5px; color: var(--text-3); margin-top: 2px; }
.ms-report-dl { font-size: 11.5px; color: var(--primary); flex: none; }

.ms-quick { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 12px; padding: 14px 8px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.ms-quick-item { display: flex; flex-direction: column; align-items: center; gap: 5px; font-size: 11px; color: var(--text-2); cursor: pointer; }
.ms-quick-item span { font-size: 20px; }

/* ---------- 在线签约 ---------- */
.cs-page { padding-bottom: 24px; }
.cs-doc-tip {
  margin: 12px 16px 0; padding: 11px 14px; border-radius: var(--radius);
  background: var(--primary-light); color: var(--primary); font-size: 11.5px;
  display: flex; gap: 8px; align-items: center; line-height: 1.5;
}
.cs-sec { margin: 14px 16px 0; padding: 15px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.cs-sec-title { font-size: 13.5px; font-weight: 800; color: var(--text-1); margin-bottom: 11px; }
.cs-pkg {
  display: flex; align-items: center; gap: 10px; padding: 12px;
  border-radius: 11px; border: 1.5px solid var(--border); margin-bottom: 9px; cursor: pointer;
}
.cs-pkg.active { border-color: var(--primary); background: #f7fbff; }
.cs-pkg-main { flex: 1; min-width: 0; }
.cs-pkg-name { font-size: 13.5px; font-weight: 700; color: var(--text-1); display: flex; align-items: center; gap: 6px; }
.cs-hot { font-size: 10px; font-weight: 700; color: var(--danger); background: var(--success-bg); padding: 1px 6px; border-radius: 6px; }
.cs-pkg-desc { font-size: 11px; color: var(--text-3); margin-top: 3px; line-height: 1.5; }
.cs-pkg-price { flex: none; font-size: 16px; font-weight: 800; color: var(--primary); }
.cs-pkg-price span { font-size: 10.5px; font-weight: 400; color: var(--text-3); }
.cs-months { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.cs-month {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 10px 4px; text-align: center; border-radius: 10px; border: 1.5px solid var(--border);
  font-size: 12.5px; color: var(--text-2); cursor: pointer; position: relative; line-height: 1.35;
}
.cs-month.active { border-color: var(--primary); background: #f7fbff; color: var(--primary); font-weight: 700; }
.cs-month em { display: block; font-style: normal; font-size: 9.5px; color: var(--danger); margin-top: 2px; }
.cs-party { border-top: 1px solid var(--border); }
.cs-kv { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; font-size: 12.5px; border-bottom: 1px solid #f6f7fa; }
.cs-kv span { color: var(--text-3); flex: none; }
.cs-kv b { color: var(--text-1); font-weight: 600; text-align: right; word-break: break-all; }
.cs-kv.total b { color: var(--danger); font-size: 16px; font-weight: 800; }
.cs-fee { border-top: 1px solid var(--border); }
.cs-divider { height: 1px; background: var(--border); margin: 4px 0; }
.cs-terms { max-height: 190px; overflow-y: auto; padding-right: 4px; }
.cs-terms p { font-size: 11.5px; color: var(--text-2); line-height: 1.85; margin-bottom: 8px; }
.cs-terms b { color: var(--text-1); }
.cs-warn { margin-top: 10px; padding: 9px 11px; border-radius: 8px; background: var(--success-bg); color: var(--danger); font-size: 11.5px; line-height: 1.6; }
.cs-agree { margin: 14px 16px 0; padding: 13px; border-radius: var(--radius); background: #fffdf6; border: 1px solid #f6e6c0; }
.cs-agree label { display: flex; gap: 9px; align-items: flex-start; cursor: pointer; }
.cs-agree input { margin-top: 2px; width: 16px; height: 16px; flex: none; accent-color: var(--primary); }
.cs-agree span { font-size: 11.5px; color: #7a6220; line-height: 1.7; }
.cs-agree a { color: var(--primary); text-decoration: none; }
.cs-submit-wrap { padding: 14px 16px 0; }

/* ---------- 会计分配中心 ---------- */
.ac-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; margin: 12px 16px 0; }
.ac-stat { padding: 13px 8px; border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); text-align: center; }
.ac-stat b { display: block; font-size: 20px; font-weight: 800; color: var(--primary); }
.ac-stat span { font-size: 11px; color: var(--text-3); }
.ac-sec-title { margin: 18px 16px 10px; font-size: 13.5px; font-weight: 800; color: var(--text-1); }
.ac-card { margin: 0 16px 10px; padding: 14px; border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.ac-card-hd { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ac-company { font-size: 14px; font-weight: 800; color: var(--text-1); }
.ac-meta { font-size: 11.5px; color: var(--text-3); margin-top: 4px; }
.ac-badge { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 7px; background: var(--green-bg); color: var(--green); flex: none; }
.ac-badge.warn { background: var(--orange-bg); color: var(--orange); }
.ac-assign-btn {
  width: 100%; margin-top: 11px; padding: 10px; border-radius: 9px;
  border: 1px solid var(--primary); background: #fff; color: var(--primary);
  font-size: 13px; font-weight: 700; cursor: pointer;
}
.ac-picker { margin-top: 11px; padding-top: 11px; border-top: 1px dashed var(--border); }
.ac-picker-title { font-size: 12px; color: var(--text-3); margin-bottom: 8px; }
.ac-staff { display: flex; gap: 10px; align-items: center; padding: 9px 0; cursor: pointer; border-bottom: 1px solid #f6f7fa; }
.ac-staff:last-child { border-bottom: none; }
.ac-staff-avatar {
  width: 34px; height: 34px; flex: none; border-radius: 50%; background: var(--primary-light);
  color: var(--primary); display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 700;
}
.ac-staff-info { flex: 1; min-width: 0; }
.ac-staff-name { font-size: 13px; font-weight: 600; color: var(--text-1); }
.ac-staff-pos { font-size: 10.5px; color: var(--text-3); margin-top: 2px; }
.ac-staff-go { font-size: 11.5px; color: var(--primary); flex: none; }
.ac-wait-tip { margin-top: 9px; font-size: 11px; color: var(--text-3); }

/* ---------- 工作台：任务 / 报表 ---------- */
.wb-task-item { display: flex; gap: 10px; align-items: flex-start; padding: 11px 0; border-bottom: 1px solid #f6f7fa; }
.wb-task-item:last-of-type { border-bottom: none; }
.wb-task-check {
  width: 21px; height: 21px; flex: none; border-radius: 50%; border: 1.5px solid var(--border);
  display: flex; align-items: center; justify-content: center; font-size: 11px; color: #fff;
  cursor: pointer; margin-top: 1px;
}
.wb-task-item.is-done .wb-task-check { background: var(--green); border-color: var(--green); }
.wb-task-main { flex: 1; min-width: 0; }
.wb-task-title { font-size: 13px; color: var(--text-1); font-weight: 600; }
.wb-task-item.is-done .wb-task-title { color: var(--text-3); text-decoration: line-through; }
.wb-task-meta { font-size: 10.5px; color: var(--text-3); margin-top: 3px; }
.wb-task-note { font-size: 11px; color: var(--text-2); margin-top: 4px; padding: 6px 9px; background: var(--bg); border-radius: 7px; line-height: 1.5; }
.wb-btn-row { display: flex; gap: 8px; margin-top: 11px; }
.wb-btn-row .acc-add-btn { flex: 1; margin-top: 0; }
.wb-report-item { display: flex; gap: 10px; align-items: center; padding: 11px 0; border-bottom: 1px solid #f6f7fa; }
.wb-report-item:last-of-type { border-bottom: none; }
.wb-report-icon { font-size: 20px; flex: none; }
.wb-report-main { flex: 1; min-width: 0; }
.wb-report-title { font-size: 13px; font-weight: 600; color: var(--text-1); }
.wb-report-meta { font-size: 10.5px; color: var(--text-3); margin-top: 3px; }
.wb-mini-btn.danger { color: var(--danger); border-color: #f8d7d9; }

/* 客户端：报表下载 */
.rep-list { margin-top: 4px; }
.rep-item { display: flex; gap: 11px; align-items: center; padding: 11px 0; border-bottom: 1px solid #f6f7fa; cursor: pointer; }
.rep-item:last-child { border-bottom: none; }
.rep-icon { font-size: 21px; flex: none; }
.rep-body { flex: 1; min-width: 0; }
.rep-title { font-size: 13px; font-weight: 600; color: var(--text-1); }
.rep-meta { font-size: 10.5px; color: var(--text-3); margin-top: 3px; }
.rep-dl { font-size: 11.5px; color: var(--primary); flex: none; }

/* ---------- 员工看板 ---------- */
.db-page { padding-bottom: 24px; }
.db-hero { display: flex; gap: 13px; align-items: center; padding: 16px; margin: 12px 16px 0; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.db-hero-avatar {
  width: 48px; height: 48px; border-radius: 50%; flex: none;
  background: linear-gradient(135deg, var(--primary), #3b82f6); color: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 19px; font-weight: 700;
}
.db-hero-name { font-size: 16px; font-weight: 800; color: var(--text-1); }
.db-hero-pos { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.db-rings { display: flex; justify-content: space-around; padding: 18px 16px; margin: 12px 16px 0; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.db-ring-wrap { position: relative; width: 96px; height: 96px; display: flex; align-items: center; justify-content: center; }
.db-ring { width: 96px; height: 96px; }
.db-ring-text { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.db-ring-text b { font-size: 19px; font-weight: 800; color: var(--text-1); }
.db-ring-text span { font-size: 10.5px; color: var(--text-3); margin-top: 2px; }
.db-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; margin: 12px 16px 0; }
.db-cell { padding: 13px 6px; border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); text-align: center; }
.db-cell b { display: block; font-size: 17px; font-weight: 800; color: var(--primary); }
.db-cell span { font-size: 10.5px; color: var(--text-3); }
.db-block { margin: 12px 16px 0; padding: 15px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.db-block-title { font-size: 13.5px; font-weight: 800; color: var(--text-1); margin-bottom: 9px; }
.db-cli { display: flex; align-items: center; gap: 10px; padding: 11px 0; border-bottom: 1px solid #f6f7fa; cursor: pointer; }
.db-cli:last-child { border-bottom: none; }
.db-cli-main { flex: 1; min-width: 0; }
.db-cli-name { font-size: 13px; font-weight: 600; color: var(--text-1); }
.db-cli-meta { font-size: 10.5px; color: var(--text-3); margin-top: 3px; }
.db-cli-go { color: var(--text-3); font-size: 17px; }

/* ---------- 公司看板 ---------- */
.cd-page { padding-bottom: 24px; }
.cd-hero {
  margin: 12px 16px 0; padding: 20px 18px; border-radius: 18px;
  background: linear-gradient(135deg, #0f3170, #1a5fb4 60%, #2d7dd2); color: #fff;
}
.cd-hero-label { font-size: 11.5px; opacity: .8; }
.cd-hero-main { display: flex; align-items: baseline; gap: 8px; margin: 8px 0 10px; }
.cd-hero-main b { font-size: 30px; font-weight: 800; letter-spacing: -.5px; }
.cd-hero-main span { font-size: 12px; opacity: .85; }
.cd-hero-sub { display: flex; flex-direction: column; gap: 3px; font-size: 11.5px; opacity: .85; }
.cd-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; margin: 12px 16px 0; }
.cd-cell { padding: 13px 6px; border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); text-align: center; }
.cd-cell b { display: block; font-size: 17px; font-weight: 800; color: var(--text-1); }
.cd-cell span { font-size: 10.5px; color: var(--text-3); }
.cd-block { margin: 12px 16px 0; padding: 15px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.cd-block-title { font-size: 13.5px; font-weight: 800; color: var(--text-1); margin-bottom: 11px; display: flex; align-items: center; justify-content: space-between; }
.cd-block-title em { font-style: normal; font-size: 10.5px; color: var(--text-3); font-weight: 400; }
.cd-metric { margin-bottom: 13px; }
.cd-metric-hd { display: flex; justify-content: space-between; font-size: 12px; color: var(--text-2); margin-bottom: 6px; }
.cd-metric-hd b { color: var(--text-1); font-weight: 700; }
.cd-bar { height: 7px; border-radius: 4px; background: var(--bg-2); overflow: hidden; }
.cd-bar-fill { height: 100%; border-radius: 4px; transition: width .5s; }
.cd-alert {
  margin-top: 4px; padding: 11px 12px; border-radius: 9px; background: var(--orange-bg);
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  font-size: 11.5px; color: #9a4a00;
}
.cd-row { display: flex; align-items: center; gap: 12px; padding: 11px 0; border-bottom: 1px solid #f6f7fa; cursor: pointer; }
.cd-row:last-child { border-bottom: none; }
.cd-row-main { flex: 1; min-width: 0; }
.cd-row-name { font-size: 13px; font-weight: 700; color: var(--text-1); }
.cd-row-members { font-size: 10px; font-weight: 400; color: var(--text-3); margin-left: 5px; }
.cd-row-meta { font-size: 10.5px; color: var(--text-3); margin-top: 3px; }
.cd-row-right { flex: none; width: 84px; text-align: right; }
.cd-row-right .cd-bar { height: 5px; margin-bottom: 3px; }
.cd-row-right span { font-size: 10px; color: var(--text-3); }
.cd-detail { border: 1.5px solid var(--primary-light); }
.cd-close {
  font-size: 11px; color: var(--text-3); background: var(--bg); border: none;
  padding: 4px 10px; border-radius: 7px; cursor: pointer; font-weight: 400;
}
.cd-cli-list { margin-top: 11px; border-top: 1px dashed var(--border); padding-top: 8px; }
.cd-cli { display: flex; justify-content: space-between; padding: 8px 0; font-size: 12px; color: var(--text-2); cursor: pointer; }
.cd-cli em { font-style: normal; font-size: 10.5px; color: var(--green); }

/* ---------- 内部沟通 ---------- */
.im-page { padding-bottom: 0; }
.im-me { display: flex; gap: 12px; align-items: center; padding: 15px 16px; margin: 12px 16px 0; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.im-me-avatar {
  width: 44px; height: 44px; border-radius: 50%; flex: none;
  background: linear-gradient(135deg, var(--primary), #3b82f6); color: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 700;
}
.im-me-name { font-size: 15px; font-weight: 800; color: var(--text-1); }
.im-me-pos { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.im-sec-title { margin: 18px 16px 9px; font-size: 13px; font-weight: 800; color: var(--text-1); }
.im-threads { margin: 0 16px; padding: 4px 14px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.im-thread { display: flex; gap: 11px; align-items: center; padding: 12px 0; border-bottom: 1px solid #f6f7fa; cursor: pointer; }
.im-thread:last-child { border-bottom: none; }
.im-avatar {
  width: 40px; height: 40px; flex: none; border-radius: 50%; background: var(--primary-light);
  color: var(--primary); display: flex; align-items: center; justify-content: center;
  font-size: 16px; font-weight: 700;
}
.im-avatar.sm { width: 34px; height: 34px; font-size: 14px; }
.im-thread-body { flex: 1; min-width: 0; }
.im-thread-top { display: flex; justify-content: space-between; align-items: baseline; }
.im-thread-name { font-size: 13.5px; font-weight: 700; color: var(--text-1); }
.im-thread-time { font-size: 10px; color: var(--text-3); }
.im-thread-last { font-size: 11.5px; color: var(--text-3); margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.im-unread {
  flex: none; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px;
  background: var(--danger); color: #fff; font-size: 10px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}
.im-staff-list { margin: 0 16px; padding: 4px 14px; border-radius: var(--radius-lg); background: var(--card); box-shadow: var(--shadow); }
.im-staff { display: flex; gap: 11px; align-items: center; padding: 11px 0; border-bottom: 1px solid #f6f7fa; cursor: pointer; }
.im-staff:last-child { border-bottom: none; }
.im-staff-body { flex: 1; min-width: 0; }
.im-staff-name { font-size: 13px; font-weight: 600; color: var(--text-1); }
.im-staff-pos { font-size: 10.5px; color: var(--text-3); margin-top: 2px; }
.im-staff-go { font-size: 11px; color: var(--primary); flex: none; }

.im-chat { padding: 14px 16px 84px; }
.im-msg { margin-bottom: 14px; max-width: 82%; }
.im-msg.me { margin-left: auto; text-align: right; }
.im-msg-name { font-size: 10px; color: var(--text-3); margin-bottom: 4px; }
.im-msg-bubble {
  display: inline-block; padding: 10px 13px; border-radius: 12px;
  background: var(--card); box-shadow: var(--shadow); font-size: 13px; line-height: 1.6;
  color: var(--text-1); text-align: left; word-break: break-word;
}
.im-msg.me .im-msg-bubble { background: var(--primary); color: #fff; }
.im-input-bar {
  position: fixed; left: 0; right: 0; bottom: 0; display: flex; gap: 8px;
  padding: 10px 14px calc(10px + var(--safe-bottom)); background: var(--card);
  border-top: 1px solid var(--border); z-index: 60;
}
.im-input-bar input {
  flex: 1; padding: 10px 13px; border: 1px solid var(--border); border-radius: 20px;
  font-size: 13px; outline: none; background: var(--bg); font-family: inherit;
}
.im-input-bar button {
  flex: none; padding: 0 18px; border: none; border-radius: 20px;
  background: var(--primary); color: #fff; font-size: 13px; font-weight: 700; cursor: pointer;
}

/* ================================================================
   r31 · 后台员工管理（创建员工账号 / 调整岗位）
   ================================================================ */
.mph-act {
  margin-left: auto; padding: 5px 12px; border-radius: 14px;
  background: var(--primary-lighter, #eef4ff); color: var(--primary);
  font-size: 12px; font-weight: 700; cursor: pointer; white-space: nowrap;
  flex-shrink: 0;
}
/* [20261104-r93] 多个动作按钮时的修复：
   原来每个 .mph-act 都带 margin-left:auto，flex 会把剩余空间全给第一个，
   第二个按钮被推出容器 → 页头「批量导入」和「刷新」叠在同一位置，
   同时右侧占位变宽，把绝对居中的标题压住（老谭反馈标题重叠看不清）。
   修法：只有第一个撑开空间，其余按固定间距排在后面。 */
.mph-act + .mph-act { margin-left: 8px; }
.mph-act:active { opacity: .7; }

/* [r93] 标题里的 emoji 单独包一层：
   部分安卓机 emoji 字体的 ascent 很大，会顶到文字上造成视觉重叠。 */
.mph-ico {
  display: inline-block;
  vertical-align: -1px;
  line-height: 1;
  margin-right: 2px;
  font-size: 15px;
}

.stf-page { background: var(--bg, #f6f7fb); min-height: 100%; padding-bottom: 30px; }
.stf-tip {
  margin: 10px 12px 0; padding: 10px 12px; border-radius: 10px;
  background: #f2f6ff; color: var(--text-2, #64748b); font-size: 12px; line-height: 1.6;
}
.stf-list { padding: 10px 12px; }
.stf-card {
  display: flex; align-items: center; gap: 10px; padding: 12px;
  background: #fff; border-radius: 12px; margin-bottom: 9px;
  box-shadow: 0 1px 6px rgba(15, 23, 42, .05);
}
.stf-avatar {
  width: 40px; height: 40px; border-radius: 50%; flex: none;
  background: linear-gradient(135deg, var(--primary, #2563eb), #60a5fa);
  color: #fff; font-size: 16px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}
.stf-body { flex: 1; min-width: 0; }
.stf-name { font-size: 14px; font-weight: 700; color: var(--text-1, #1e293b); }
.stf-name em {
  font-style: normal; margin-left: 6px; font-size: 10px; padding: 1px 6px;
  border-radius: 8px; background: #e8f1ff; color: var(--primary);
}
.stf-meta {
  font-size: 11.5px; color: var(--text-3, #94a3b8); margin-top: 3px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.stf-acts { flex: none; display: flex; gap: 6px; }
.stf-btn {
  padding: 5px 10px; border: 1px solid var(--border, #e5e9f2); border-radius: 14px;
  background: #fff; color: var(--text-2, #64748b); font-size: 11.5px; cursor: pointer;
}
.stf-btn.pri { background: var(--primary); border-color: var(--primary); color: #fff; font-weight: 700; }
.stf-btn.dg { color: #dc2626; border-color: #fecaca; background: #fff7f7; }
/* [r123] 重置密码按钮 */
.stf-btn.warn { color: #c2410c; border-color: #fed7aa; background: #fff7ed; font-weight: 600; }
.stf-btn:active { opacity: .75; }
/* [r123] 「初始密码」待改标记 */
.stf-name em.pwd-warn { background: #fff7ed; color: #c2410c; border: 1px solid #fed7aa; }

/* r34：员工卡片三按钮时，信息区改为可换行，避免手机号被省略号截断 */
.stf-card { align-items: flex-start; }
.stf-acts { display: flex; gap: 6px; flex-shrink: 0; flex-wrap: wrap; justify-content: flex-end; max-width: 168px; }
.stf-card .stf-meta { white-space: normal; word-break: break-word; line-height: 1.45; text-overflow: clip; }

.stf-form { margin: 10px 12px; padding: 4px 14px 18px; background: #fff; border-radius: 14px; }
.stf-pos-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding-top: 8px; }
.stf-pos {
  padding: 9px 4px; border: 1.5px solid var(--border, #e5e9f2); border-radius: 10px;
  text-align: center; cursor: pointer; background: #fff;
}
.stf-pos.on { border-color: var(--primary); background: #f2f6ff; }
.stf-pos .sp-icon { display: block; font-size: 17px; }
.stf-pos .sp-name { display: block; font-size: 11.5px; margin-top: 3px; color: var(--text-2, #475569); }
.stf-pos.on .sp-name { color: var(--primary); font-weight: 700; }
.stf-note {
  margin: 12px 0 14px; padding: 9px 11px; border-radius: 9px;
  background: #fff8ec; color: #92620a; font-size: 11.5px; line-height: 1.6;
}

.stf-pos-list { padding: 10px 12px; }
.stf-pos-row {
  display: flex; align-items: center; gap: 10px; padding: 12px;
  background: #fff; border-radius: 12px; margin-bottom: 9px;
  box-shadow: 0 1px 6px rgba(15, 23, 42, .05); cursor: pointer;
}
.stf-pos-row .sp-icon { font-size: 18px; flex: none; }
.stf-pos-row .sp-info { flex: 1; min-width: 0; }
.stf-pos-row .sp-name { font-size: 13.5px; font-weight: 700; color: var(--text-1, #1e293b); }
.stf-pos-row .sp-desc { font-size: 11px; color: var(--text-3, #94a3b8); margin-top: 2px; }
.stf-pos-row .sp-go { flex: none; font-size: 11.5px; color: var(--primary); }
.stf-pos-row:active { background: #f7f9fc; }

/* ================================================================
   r33 · 网络兜底条（请求失败时的可重试提示）
   ================================================================ */
.offline-bar {
  display: flex; align-items: center; gap: 8px;
  margin: 10px 14px 0; padding: 10px 12px; border-radius: 10px;
  background: #fff7ed; border: 1px solid #fed7aa; color: #92400e;
  font-size: 12px; line-height: 1.5;
}
.offline-bar .ob-icon { flex: none; font-size: 14px; }
.offline-bar .ob-text { flex: 1; min-width: 0; }
.offline-bar .ob-btn {
  flex: none; padding: 5px 12px; border: none; border-radius: 14px;
  background: #f97316; color: #fff; font-size: 12px; font-weight: 700; cursor: pointer;
}
.offline-bar .ob-btn:active { opacity: .75; }

/* ================================================================
   r33 · 黔货出山：产品审核 / 咨询 / 我的产品 / 审批中心
   ================================================================ */

/* 黔货页快捷入口 */
.mall-quick { display: flex; gap: 10px; margin: 10px 14px 2px; }
.mall-quick .mq-item {
  flex: 1; display: flex; align-items: center; justify-content: center; gap: 6px;
  padding: 10px 8px; background: #fff; border-radius: 12px; font-size: 12.5px;
  color: var(--text-2); box-shadow: 0 1px 6px rgba(15,23,42,.05); cursor: pointer; position: relative;
}
.mall-quick .mq-item:active { background: #f7f9fc; }
.mall-quick .mq-icon { font-size: 15px; }
.mall-quick .mq-badge {
  position: absolute; top: -6px; right: 14px; font-style: normal; font-size: 10px;
  background: #e63946; color: #fff; border-radius: 9px; padding: 1px 6px; font-weight: 700;
}

/* 产品卡底部咨询按钮 */
.pc-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.pc-inq { font-size: 10.5px; color: var(--text-3); }
.pc-consult {
  border: 1px solid var(--primary); background: #fff; color: var(--primary);
  font-size: 11px; font-weight: 700; padding: 4px 9px; border-radius: 12px; cursor: pointer;
}
.pc-consult:active { background: var(--primary-lighter, #eef4ff); }

/* 产品详情页操作区 */
.pd-actions { display: flex; gap: 10px; margin: 4px 0 12px; }
.pd-btn-consult {
  flex: 2; padding: 13px; border: none; border-radius: 12px; cursor: pointer;
  background: linear-gradient(135deg, #0f7a45, #2d9d5f); color: #fff;
  font-size: 13.5px; font-weight: 700;
}
.pd-btn-call {
  flex: 1; padding: 13px; border: 1.5px solid var(--border); border-radius: 12px;
  background: #fff; color: var(--text-2); font-size: 13px; cursor: pointer;
}
.pd-btn-consult:active, .pd-btn-call:active { opacity: .8; }

/* 咨询表单 */
.pq-page { background: var(--bg, #f6f7fb); }
.pq-prod { display: flex; align-items: center; gap: 12px; margin: 12px 14px 0; padding: 12px; background: #fff; border-radius: 14px; }
/* [20261103] 产品咨询页头部：容器放大到 56px 并支持真实产品图（contain 完整显示） */
.pq-prod-icon {
  width: 56px; height: 56px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 26px; flex: none; overflow: hidden;
}
.pq-prod-icon img {
  width: 100%; height: 100%;
  object-fit: contain;
  padding: 3px;
  display: block;
}
.pq-prod-icon .pq-emoji { line-height: 1; }

/* [20261103] 我的产品 / 产品审核列表的产品图（原来只有 emoji） */
.mpc-icon, .pra-icon { position: relative; overflow: hidden; }
.mpc-icon img, .pra-icon img {
  width: 100%; height: 100%;
  object-fit: contain;
  padding: 2px;
  display: block;
}
.mpc-icon .pq-emoji, .pra-icon .pq-emoji { line-height: 1; }
.pq-prod-name { font-size: 14.5px; font-weight: 700; color: var(--text-1); }
.pq-prod-producer { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.pq-tip { margin: 10px 14px 0; padding: 9px 12px; border-radius: 10px; background: #f2f6ff; color: #475569; font-size: 11.5px; line-height: 1.65; }
.pq-form { margin: 10px 14px 0; padding: 14px; background: #fff; border-radius: 14px; }
.pq-form label { display: block; font-size: 12px; font-weight: 700; color: var(--text-2); margin: 12px 0 6px; }
.pq-form label:first-child { margin-top: 0; }
.pq-form input, .pq-form textarea {
  width: 100%; box-sizing: border-box; border: 1px solid var(--border); border-radius: 10px;
  padding: 11px 12px; font-size: 13px; background: #fbfcfe; outline: none; font-family: inherit;
}
.pq-form input:focus, .pq-form textarea:focus { border-color: var(--primary); background: #fff; }
.pq-form textarea { resize: none; }
.pq-req { color: #e63946; }
.pq-quick { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.pq-quick span {
  font-size: 11px; padding: 5px 10px; border-radius: 12px;
  background: #f2f5fa; color: var(--text-2); cursor: pointer;
}
.pq-quick span:active { background: #e6edf9; }
.pq-submit {
  width: calc(100% - 28px); margin: 14px; padding: 14px; border: none; border-radius: 12px;
  background: var(--primary); color: #fff; font-size: 14.5px; font-weight: 700; cursor: pointer;
}
.pq-submit:active { opacity: .82; }

/* 我的咨询 */
.pq-list { padding: 10px 14px 24px; }
.pq-item { background: #fff; border-radius: 14px; padding: 13px; margin-bottom: 10px; box-shadow: 0 1px 6px rgba(15,23,42,.05); }
.pq-item-head { display: flex; align-items: center; gap: 8px; }
.pq-item-icon { font-size: 15px; }
.pq-item-name { flex: 1; font-size: 13px; font-weight: 700; color: var(--text-1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pq-item-status { flex: none; font-size: 10.5px; padding: 2px 8px; border-radius: 9px; }
.pq-st-pending { background: #fff7ed; color: #c2410c; }
.pq-st-replied { background: #e8f7ef; color: #0f7a45; }
.pq-st-closed { background: #f1f5f9; color: #64748b; }
.pq-item-text { font-size: 12.5px; color: var(--text-2); line-height: 1.7; margin-top: 8px; }
.pq-item-reply { margin-top: 10px; padding: 10px 11px; border-radius: 10px; background: #f0f9f4; }
.pq-reply-by { font-size: 10.5px; color: #0f7a45; font-weight: 700; margin-bottom: 3px; }
.pq-reply-text { font-size: 12.5px; color: #14532d; line-height: 1.7; }
.pq-item-wait { margin-top: 10px; font-size: 11.5px; color: var(--text-3); }
.pq-item-time { font-size: 10.5px; color: var(--text-3); margin-top: 9px; text-align: right; }

/* 产品审核台 */
.pra-page { background: var(--bg, #f6f7fb); }
.pra-tabs { display: flex; gap: 6px; padding: 10px 14px 0; }
.pra-tab {
  flex: 1; text-align: center; padding: 8px 4px; border-radius: 10px; background: #fff;
  font-size: 12px; color: var(--text-2); cursor: pointer; position: relative;
}
.pra-tab.on { background: var(--primary); color: #fff; font-weight: 700; }
.pra-tab i { font-style: normal; font-size: 10px; margin-left: 3px; opacity: .9; }
.pra-tip { margin: 10px 14px 0; padding: 10px 12px; border-radius: 10px; background: #fffbeb; color: #92400e; font-size: 11.5px; line-height: 1.65; }
.pra-list { padding: 10px 14px 24px; }
.pra-card { background: #fff; border-radius: 14px; padding: 13px; margin-bottom: 10px; box-shadow: 0 1px 6px rgba(15,23,42,.05); }
.pra-head { display: flex; align-items: center; gap: 10px; }
.pra-icon { width: 42px; height: 42px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 20px; flex: none; }
.pra-body { flex: 1; min-width: 0; }
.pra-name { font-size: 13.5px; font-weight: 700; color: var(--text-1); }
.pra-meta { display: flex; gap: 8px; font-size: 10.5px; color: var(--text-3); margin-top: 4px; overflow: hidden; }
.pra-tag { background: #eef2ff; color: #4338ca; padding: 1px 7px; border-radius: 8px; flex: none; }
.pra-st { flex: none; font-size: 10.5px; padding: 3px 9px; border-radius: 10px; font-weight: 700; }
.pra-st-pending { background: #fff7ed; color: #c2410c; }
.pra-st-approved { background: #e8f7ef; color: #0f7a45; }
.pra-st-rejected { background: #fef2f2; color: #b91c1c; }
.pra-st-offline { background: #f1f5f9; color: #64748b; }
.pra-desc { font-size: 12px; color: var(--text-2); line-height: 1.7; margin-top: 9px; }
.pra-foot { display: flex; justify-content: space-between; font-size: 10.5px; color: var(--text-3); margin-top: 8px; }
.pra-note { margin-top: 9px; padding: 8px 10px; border-radius: 9px; background: #fef2f2; color: #991b1b; font-size: 11.5px; line-height: 1.6; }
.pra-actions { display: flex; gap: 8px; margin-top: 11px; }
.pra-btn {
  flex: 1; padding: 10px; border: 1px solid var(--border); border-radius: 10px;
  background: #fff; color: var(--text-2); font-size: 12.5px; font-weight: 700; cursor: pointer;
}
.pra-btn.ok { background: var(--primary); border-color: var(--primary); color: #fff; }
.pra-btn.rej { background: #fff; border-color: #fecaca; color: #b91c1c; }
.pra-btn:active { opacity: .78; }

/* 咨询处理台 */
.prb-page { background: var(--bg, #f6f7fb); }
.prb-tab {
  flex: 1; text-align: center; padding: 8px 4px; border-radius: 10px; background: #fff;
  font-size: 12px; color: var(--text-2); cursor: pointer;
}
.prb-tab.on { background: #0f7a45; color: #fff; font-weight: 700; }
.prb-tab i { font-style: normal; font-size: 10px; margin-left: 3px; }
.prb-list { padding: 10px 14px 24px; }
.prb-card { background: #fff; border-radius: 14px; padding: 13px; margin-bottom: 10px; box-shadow: 0 1px 6px rgba(15,23,42,.05); }
.prb-head { display: flex; align-items: center; gap: 9px; }
.prb-icon { width: 38px; height: 38px; border-radius: 9px; background: #f5f7fa; display: flex; align-items: center; justify-content: center; font-size: 18px; flex: none; }
.prb-body { flex: 1; min-width: 0; }
.prb-name { font-size: 13px; font-weight: 700; color: var(--text-1); }
.prb-meta { font-size: 10.5px; color: var(--text-3); margin-top: 3px; }
.prb-text { font-size: 12.5px; color: var(--text-2); line-height: 1.7; margin-top: 9px; padding: 9px 11px; background: #f8fafc; border-radius: 9px; }
.prb-reply { font-size: 12.5px; color: #14532d; line-height: 1.7; margin-top: 8px; padding: 9px 11px; background: #f0f9f4; border-radius: 9px; }
.prb-form { margin-top: 10px; }
.prb-form textarea {
  width: 100%; box-sizing: border-box; border: 1px solid var(--border); border-radius: 10px;
  padding: 10px; font-size: 12.5px; background: #fbfcfe; outline: none; resize: none; font-family: inherit;
}
.prb-acts { display: flex; gap: 7px; margin-top: 8px; }
.prb-btn {
  flex: 1; padding: 9px; border: 1px solid var(--border); border-radius: 10px;
  background: #fff; color: var(--text-2); font-size: 12px; cursor: pointer;
}
.prb-btn.ok { background: #0f7a45; border-color: #0f7a45; color: #fff; font-weight: 700; }
.prb-btn:active { opacity: .78; }

/* 我的产品 */
.mpc-page { background: var(--bg, #f6f7fb); }
.mpc-sum { display: flex; margin: 12px 14px 0; background: #fff; border-radius: 14px; padding: 14px 0; }
.mpc-sum-item { flex: 1; text-align: center; }
.mpc-sum-item b { display: block; font-size: 19px; color: var(--primary); }
.mpc-sum-item span { font-size: 11px; color: var(--text-3); }
.mpc-list { padding: 10px 14px 0; }
.mpc-card { display: flex; gap: 11px; background: #fff; border-radius: 14px; padding: 12px; margin-bottom: 10px; }
.mpc-icon { width: 44px; height: 44px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 21px; flex: none; }
.mpc-body { flex: 1; min-width: 0; }
.mpc-name { display: flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 700; color: var(--text-1); }
.mpc-desc { font-size: 12px; color: var(--text-2); margin-top: 4px; line-height: 1.6; }
.mpc-meta { font-size: 10.5px; color: var(--text-3); margin-top: 5px; }
.mpc-rej { margin-top: 7px; font-size: 11.5px; color: #b91c1c; background: #fef2f2; padding: 7px 9px; border-radius: 8px; line-height: 1.6; }
.mpc-tip { margin: 4px 14px 24px; font-size: 11.5px; color: var(--text-3); line-height: 1.7; }

/* 审批中心 */
.apc-page { background: var(--bg, #f6f7fb); }
.apc-hero {
  margin: 12px 14px 0; padding: 20px; border-radius: 18px; color: #fff;
  background: linear-gradient(135deg, #1e3a8a 0%, #2563eb 60%, #3b82f6 100%);
  text-align: center;
}
.apc-hero-num { font-size: 34px; font-weight: 800; line-height: 1; }
.apc-hero-label { font-size: 12px; opacity: .9; margin-top: 6px; }
.apc-hero-me { font-size: 11px; opacity: .78; margin-top: 10px; }
.apc-card {
  display: flex; align-items: center; gap: 11px; margin: 10px 14px 0; padding: 14px;
  background: #fff; border-radius: 14px; box-shadow: 0 1px 6px rgba(15,23,42,.05); cursor: pointer;
}
.apc-card:active { background: #f7f9fc; }
.apc-icon { width: 42px; height: 42px; border-radius: 12px; background: #f2f6ff; display: flex; align-items: center; justify-content: center; font-size: 20px; flex: none; }
.apc-body { flex: 1; min-width: 0; }
.apc-name { font-size: 13.5px; font-weight: 700; color: var(--text-1); display: flex; align-items: center; gap: 7px; }
.apc-badge { font-size: 10.5px; background: #e63946; color: #fff; border-radius: 9px; padding: 1px 7px; font-weight: 700; }
.apc-desc { font-size: 11.5px; color: var(--text-3); margin-top: 4px; }
.apc-inh { font-size: 11px; color: #b45309; margin-top: 5px; line-height: 1.5; }
.apc-arrow { flex: none; color: var(--text-3); font-size: 18px; }
.apc-sec-title { margin: 18px 14px 8px; font-size: 12.5px; font-weight: 700; color: var(--text-2); }
.apc-owners { margin: 0 14px; background: #fff; border-radius: 14px; overflow: hidden; }
.apc-owner-row { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-bottom: 1px solid #f1f5f9; font-size: 12px; }
.apc-owner-row:last-child { border-bottom: none; }
.apc-owner-name { width: 64px; flex: none; color: var(--text-2); }
.apc-owner-pos { width: 72px; flex: none; font-weight: 700; color: var(--primary); }
.apc-owner-mem { flex: 1; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.apc-note { margin: 12px 14px 26px; padding: 11px 13px; border-radius: 10px; background: #f2f6ff; color: #475569; font-size: 11.5px; line-height: 1.8; }

/* ================================================================
   r36：登录入口隔离 / 我的薪酬 / 客户评价 / 内部财务 / 一键导出 / 合伙人
   ================================================================ */

/* 登录串号提示条 */
.login-portal-tip {
  display: flex; align-items: flex-start; gap: 6px;
  margin: 0 0 12px; padding: 9px 11px; border-radius: 10px;
  background: #fff7ed; border: 1px solid #fed7aa;
  color: #9a3412; font-size: 11.5px; line-height: 1.6;
}

/* ---------- 我的薪酬 ---------- */
.sal-loading {
  margin: 16px; padding: 44px 20px; border-radius: 16px; background: #fff;
  text-align: center; box-shadow: 0 1px 8px rgba(15,23,42,.05);
}
.sal-loading .sl-ico { font-size: 32px; margin-bottom: 10px; }
.sal-loading .sl-txt { font-size: 13px; color: var(--text-2, #475569); line-height: 1.7; }

.sm-hero {
  margin: 12px; padding: 16px; border-radius: 16px;
  background: linear-gradient(135deg, #1a5fb4, #3b82f6);
  color: #fff; box-shadow: 0 6px 18px rgba(26,95,180,.24);
}
.sm-hero-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.sm-name { font-size: 15px; font-weight: 800; line-height: 1.4; }
.sm-level {
  display: inline-block; margin-left: 4px; padding: 1px 7px; border-radius: 8px;
  background: rgba(255,255,255,.22); font-size: 10.5px; font-weight: 700; vertical-align: 1px;
}
.sm-sub { margin-top: 4px; font-size: 11px; opacity: .86; line-height: 1.5; }
.sm-total { text-align: right; flex: none; }
.sm-total b { display: block; font-size: 21px; font-weight: 800; letter-spacing: -.3px; }
.sm-total span { font-size: 10.5px; opacity: .82; }
.sm-hero-foot {
  display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px;
  padding-top: 10px; border-top: 1px solid rgba(255,255,255,.2);
  font-size: 10.5px; opacity: .92;
}

.sm-card { margin: 10px 12px; padding: 4px 14px 10px; background: #fff; border-radius: 14px; box-shadow: 0 1px 8px rgba(15,23,42,.05); }
.sm-card-title { padding: 11px 0 8px; font-size: 13px; font-weight: 800; color: var(--text-1, #1e293b); }
.sm-card-title i { font-style: normal; font-weight: 400; font-size: 10.5px; color: var(--text-3, #94a3b8); margin-left: 4px; }
/* [20261103] 岗位族成本结构条（管理族 / 会计族 / 职能族 占比） */
.sm-group-bar { display: flex; gap: 3px; height: 8px; margin-top: 4px; border-radius: 5px; overflow: hidden; background: #f1f5f9; }
.sgb-item { flex: 1; display: flex; min-width: 8px; }
.sgb-fill { width: 100%; height: 100%; border-radius: 5px; opacity: .88; }
.sm-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 9px 0; border-top: 1px solid #f1f5f9; }
.sm-row-l { flex: 1; min-width: 0; }
.sm-row-name { font-size: 13px; font-weight: 600; color: var(--text-1, #1e293b); }
.sm-row-note { margin-top: 2px; font-size: 10.5px; color: var(--text-3, #94a3b8); line-height: 1.5; word-break: break-word; }
.sm-row-amt { flex: none; font-size: 14px; font-weight: 800; color: var(--primary, #1a5fb4); }
.sm-row-amt.zero { color: #cbd5e1; }
.sm-row.total { border-top: 1.5px solid #e2e8f0; padding-top: 11px; }
.sm-row.total .sm-row-name { font-weight: 800; }
.sm-row.total .sm-row-amt { font-size: 18px; }

.sm-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; margin: 10px 12px; }
.sm-kpi { padding: 12px; border-radius: 13px; background: #fff; box-shadow: 0 1px 8px rgba(15,23,42,.05); }
.sk-num { font-size: 19px; font-weight: 800; color: var(--text-1, #1e293b); line-height: 1.2; }
.sk-label { margin-top: 2px; font-size: 11.5px; color: var(--text-2, #475569); }
.sk-note { margin-top: 3px; font-size: 10px; color: var(--text-3, #94a3b8); line-height: 1.45; }

.sm-tags { display: flex; flex-wrap: wrap; gap: 6px; padding-bottom: 8px; }
.sm-tags span { padding: 4px 10px; border-radius: 999px; background: #f1f5f9; color: #475569; font-size: 11px; }

.sm-next-row { padding: 5px 0; font-size: 11.5px; color: var(--text-2, #475569); line-height: 1.6; }
.sm-next-row b { color: var(--primary, #1a5fb4); }

.sm-cli { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-top: 1px solid #f1f5f9; font-size: 12px; }
.sm-cli-name { flex: 1; min-width: 0; color: var(--text-1, #1e293b); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sm-cli-fee { flex: none; font-weight: 700; color: var(--primary, #1a5fb4); }

.sm-tip { margin: 12px 16px 28px; padding: 11px 13px; border-radius: 10px; background: #f2f6ff; color: #475569; font-size: 11.5px; line-height: 1.8; }

.sm-staff { padding: 12px 14px; }
.sm-staff-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.sm-staff-break { margin-top: 8px; padding-top: 8px; border-top: 1px dashed #e2e8f0; font-size: 10.5px; color: var(--text-3, #94a3b8); }

/* ---------- 客户评价 ---------- */
.rvw-hero { margin: 12px; padding: 18px 16px; border-radius: 16px; background: linear-gradient(135deg, #fff7ed, #ffedd5); text-align: center; }
.rvw-title { font-size: 14px; font-weight: 800; color: #9a3412; }
.rvw-sub { margin-top: 4px; font-size: 11px; color: #c2410c; line-height: 1.6; }
.rvw-stars { margin: 12px 0 4px; font-size: 30px; letter-spacing: 6px; color: #e2e8f0; }
.rvw-star { cursor: pointer; transition: color .15s, transform .15s; display: inline-block; }
.rvw-star.on { color: #f59e0b; }
.rvw-star:active { transform: scale(1.15); }
.rvw-score { font-size: 11.5px; color: #9a3412; font-weight: 600; }

.rvw-tags { display: flex; flex-wrap: wrap; gap: 7px; padding: 0 14px; }
.rvw-tags span {
  padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border, #e5e9f2);
  background: #fff; color: var(--text-2, #475569); font-size: 11.5px; cursor: pointer;
}
.rvw-tags span.on { background: #fff7ed; border-color: #fdba74; color: #c2410c; font-weight: 600; }

.rvw-form { margin: 14px; }
.rvw-form label { display: block; margin-bottom: 6px; font-size: 12px; color: var(--text-2, #475569); }
.rvw-form textarea {
  width: 100%; padding: 10px 12px; border: 1px solid var(--border, #e5e9f2);
  border-radius: 10px; font-size: 13px; line-height: 1.6; resize: none; box-sizing: border-box;
}

.rvw-entry {
  display: flex; align-items: center; gap: 10px; margin: 12px; padding: 13px 14px;
  border-radius: 14px; background: #fff; box-shadow: 0 1px 8px rgba(15,23,42,.05);
}
.rvw-entry-l { flex: 1; min-width: 0; }
.rvw-entry-title { font-size: 13px; font-weight: 700; color: var(--text-1, #1e293b); }
.rvw-entry-desc { margin-top: 3px; font-size: 10.5px; color: var(--text-3, #94a3b8); line-height: 1.5; }
.rvw-entry-btn {
  flex: none; padding: 7px 14px; border: none; border-radius: 999px;
  background: var(--primary, #1a5fb4); color: #fff; font-size: 12px; font-weight: 700; cursor: pointer;
}

/* ---------- 内部财务 ---------- */
.fin-scope { margin: 8px 12px 0; font-size: 10.5px; color: #92400e; background: #fffbeb; border: 1px solid #fde68a; border-radius: 8px; padding: 6px 10px; }
.fin-tabs { display: flex; gap: 6px; padding: 10px 12px 2px; overflow-x: auto; scrollbar-width: none; }
.fin-tabs::-webkit-scrollbar { display: none; }
.fin-tab { flex: 0 0 auto; padding: 6px 13px; border-radius: 999px; background: #f1f5f9; color: var(--text-2, #475569); font-size: 12px; cursor: pointer; }
.fin-tab.on { background: var(--primary, #1a5fb4); color: #fff; font-weight: 700; }

.fin-4q { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; margin: 10px 12px; }
.fq-card { padding: 12px; border-radius: 13px; background: #fff; box-shadow: 0 1px 8px rgba(15,23,42,.05); border-left: 3px solid #cbd5e1; }
.fq-card.fq-in { border-left-color: #2563eb; }
.fq-card.fq-out { border-left-color: #dc2626; }
.fq-card.fq-in2 { border-left-color: #0891b2; }
.fq-card.fq-out2 { border-left-color: #ea580c; }
.fq-label { font-size: 11px; color: var(--text-2, #475569); }
.fq-num { margin-top: 5px; font-size: 17px; font-weight: 800; color: var(--text-1, #1e293b); letter-spacing: -.3px; }
.fq-note { margin-top: 4px; font-size: 10px; color: var(--text-3, #94a3b8); line-height: 1.45; }

.fin-kpi-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 10px 12px; }
.fin-kpi { padding: 10px 8px; border-radius: 11px; background: #f8fafc; text-align: center; }
.fin-kpi span { display: block; font-size: 10px; color: var(--text-3, #94a3b8); }
.fin-kpi b { display: block; margin-top: 4px; font-size: 13.5px; color: var(--text-1, #1e293b); }
.fin-kpi b.pos { color: #16a34a; }
.fin-kpi b.neg { color: #dc2626; }

.fin-card { margin: 10px 12px; padding: 4px 14px 8px; background: #fff; border-radius: 14px; box-shadow: 0 1px 8px rgba(15,23,42,.05); }
.fin-card-title { padding: 11px 0 6px; font-size: 13px; font-weight: 800; color: var(--text-1, #1e293b); }
.fin-card-title i { font-style: normal; font-weight: 400; font-size: 10.5px; color: var(--text-3, #94a3b8); margin-left: 4px; }
.fin-line { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-top: 1px solid #f1f5f9; font-size: 12px; color: var(--text-2, #475569); }
.fin-line span { flex: 1; min-width: 0; word-break: break-word; }
.fin-line b { flex: none; color: var(--text-1, #1e293b); }
.fin-per { font-style: normal; font-size: 10px; color: var(--text-3, #94a3b8); }
.fin-empty { padding: 16px 0; font-size: 11.5px; color: var(--text-3, #94a3b8); text-align: center; line-height: 1.6; }
.fin-split { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 0 4px; border-top: 1px dashed #e2e8f0; }
.fin-split span { padding: 3px 9px; border-radius: 999px; background: #f1f5f9; font-size: 10.5px; color: #475569; }

.fin-exp { display: flex; justify-content: space-between; gap: 10px; padding: 10px 0; border-top: 1px solid #f1f5f9; }
.fin-exp-name { font-size: 12.5px; font-weight: 600; color: var(--text-1, #1e293b); }
.fin-exp-meta { margin-top: 2px; font-size: 10.5px; color: var(--text-3, #94a3b8); }
.fin-exp-right { flex: none; text-align: right; }
.fin-exp-right b { display: block; font-size: 11.5px; color: #16a34a; }
.fin-exp-right.soon b { color: #ea580c; }
.fin-exp-right.over b { color: #dc2626; }
.fin-exp-right span { font-size: 10px; color: var(--text-3, #94a3b8); }

.fin-list-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 12px 12px 4px; font-size: 11.5px; color: var(--text-2, #475569); }
.fin-add { padding: 6px 12px; border: none; border-radius: 999px; background: var(--primary, #1a5fb4); color: #fff; font-size: 11.5px; font-weight: 700; cursor: pointer; }
.fin-item { display: flex; justify-content: space-between; gap: 10px; margin: 0 12px 8px; padding: 11px 13px; background: #fff; border-radius: 12px; box-shadow: 0 1px 6px rgba(15,23,42,.05); }
.fin-item-l { flex: 1; min-width: 0; }
.fin-item-name { font-size: 12.5px; font-weight: 600; color: var(--text-1, #1e293b); }
.fin-item-meta { margin-top: 3px; font-size: 10.5px; color: var(--text-3, #94a3b8); line-height: 1.5; word-break: break-word; }
.fin-item-r { flex: none; text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.fin-item-r b { font-size: 13px; color: var(--text-1, #1e293b); }
.fin-del { font-size: 10.5px; color: #dc2626; cursor: pointer; }

.fin-form { margin: 12px; padding: 4px 14px 20px; background: #fff; border-radius: 14px; }
.fin-form label { display: block; margin: 14px 0 6px; font-size: 12px; color: var(--text-2, #475569); }
.fin-form input {
  width: 100%; padding: 10px 12px; border: 1px solid var(--border, #e5e9f2);
  border-radius: 10px; font-size: 13.5px; box-sizing: border-box;
}
.fin-chips { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 8px; }
.fin-chips span { padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border, #e5e9f2); background: #fff; font-size: 11.5px; color: var(--text-2, #475569); cursor: pointer; }
.fin-chips span.on { background: #f2f6ff; border-color: var(--primary, #1a5fb4); color: var(--primary, #1a5fb4); font-weight: 700; }

.fin-denied { padding: 60px 28px; text-align: center; }
.fd-ico { font-size: 40px; }
.fd-title { margin-top: 12px; font-size: 15px; font-weight: 800; color: var(--text-1, #1e293b); }
.fd-desc { margin-top: 8px; font-size: 12px; color: var(--text-3, #94a3b8); line-height: 1.8; }

.pl-badge {
  display: inline-block; margin-left: 5px; padding: 1px 6px; border-radius: 7px;
  background: #fef3c7; color: #a16207; font-size: 9.5px; font-weight: 700; vertical-align: 1px;
}

/* ---------- 一键导出 ---------- */
.exp-tip { margin: 10px 12px; padding: 10px 12px; border-radius: 10px; background: #fffbeb; border: 1px solid #fde68a; color: #92400e; font-size: 11px; line-height: 1.7; }
.exp-card { display: flex; align-items: center; gap: 11px; margin: 0 12px 9px; padding: 13px; background: #fff; border-radius: 13px; box-shadow: 0 1px 6px rgba(15,23,42,.05); }
.exp-icon { flex: none; width: 38px; height: 38px; border-radius: 11px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; font-size: 18px; }
.exp-body { flex: 1; min-width: 0; }
.exp-title { font-size: 13px; font-weight: 700; color: var(--text-1, #1e293b); }
.exp-desc { margin-top: 3px; font-size: 10.5px; color: var(--text-3, #94a3b8); line-height: 1.5; }
.exp-btn { flex: none; padding: 7px 14px; border: 1px solid var(--primary, #1a5fb4); border-radius: 999px; background: #fff; color: var(--primary, #1a5fb4); font-size: 12px; font-weight: 700; cursor: pointer; }
.exp-btn:active { background: #f2f6ff; }
.exp-go { flex: none; font-size: 18px; color: #cbd5e1; }
.exp-foot { margin: 14px 16px 26px; font-size: 10.5px; color: var(--text-3, #94a3b8); line-height: 1.6; }
.exp-picked { margin: 8px 12px; padding: 8px 12px; background: #f2f6ff; border-radius: 9px; font-size: 11.5px; color: var(--primary, #1a5fb4); font-weight: 600; }
.exp-pick-row { display: flex; align-items: center; gap: 10px; margin: 0 12px 8px; padding: 11px 13px; background: #fff; border-radius: 12px; cursor: pointer; }
.exp-check { flex: none; width: 20px; height: 20px; border-radius: 6px; border: 1.5px solid #cbd5e1; display: flex; align-items: center; justify-content: center; font-size: 12px; color: #fff; }
.exp-check.on { background: var(--primary, #1a5fb4); border-color: var(--primary, #1a5fb4); }
.exp-pick-body { flex: 1; min-width: 0; }
.exp-pick-name { font-size: 12.5px; font-weight: 600; color: var(--text-1, #1e293b); }
.exp-pick-meta { margin-top: 2px; font-size: 10.5px; color: var(--text-3, #94a3b8); }

/* ---------- 合伙人 ---------- */
.ptn-hero { margin: 12px; padding: 16px; border-radius: 14px; background: linear-gradient(135deg, #fef3c7, #fde68a); }
.ptn-title { font-size: 15px; font-weight: 800; color: #92400e; }
.ptn-desc { margin-top: 6px; font-size: 11.5px; color: #a16207; line-height: 1.75; }
.ptn-form { margin: 12px; padding: 4px 14px 18px; background: #fff; border-radius: 14px; }
.ptn-form label { display: block; margin: 14px 0 6px; font-size: 12px; color: var(--text-2, #475569); }
.ptn-form input { width: 100%; padding: 10px 12px; border: 1px solid var(--border, #e5e9f2); border-radius: 10px; font-size: 13.5px; box-sizing: border-box; }
.ptn-list { margin: 12px; padding: 4px 14px 10px; background: #fff; border-radius: 14px; }
.ptn-list-title { padding: 11px 0 6px; font-size: 12.5px; font-weight: 800; color: var(--text-1, #1e293b); }
.ptn-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 0; border-top: 1px solid #f1f5f9; }
.ptn-name { font-size: 12.5px; font-weight: 600; color: var(--text-1, #1e293b); }
.ptn-name i { font-style: normal; margin-left: 5px; padding: 1px 6px; border-radius: 7px; background: #e0f2fe; color: #0369a1; font-size: 9.5px; }
.ptn-meta { margin-top: 2px; font-size: 10.5px; color: var(--text-3, #94a3b8); }
.ptn-del { flex: none; font-size: 11px; color: #dc2626; cursor: pointer; }

.stf-btn.ptn { color: #a16207; border-color: #fde68a; background: #fffbeb; }
.ptn-badge { font-style: normal; margin-left: 6px; padding: 1px 6px; border-radius: 8px; background: #fef3c7; color: #a16207; font-size: 9.5px; font-weight: 700; }

/* ===== r40：协议同意合规（微信审核整改）======
   1) 协议勾选默认不勾选，必须用户主动点选
   2) 协议弹窗内补一行说明，明确「自主选择」
   3) 勾选行未勾选时的抖动提示
   4) 注册页协议勾选块（沿用 .login-agree-inline） */
.agreement-hint {
  margin-top: 8px;
  font-size: 11.5px;
  line-height: 1.5;
  color: #94a3b8;
  text-align: left;
}
.agreement-check.shake {
  animation: agreeShake 0.45s ease 0s 3;
  box-shadow: inset 0 0 0 1.5px #e74c3c;
  background: #fff5f5;
}
@keyframes agreeShake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-6px); }
  40% { transform: translateX(6px); }
  60% { transform: translateX(-4px); }
  80% { transform: translateX(4px); }
}
/* 注册页协议块：与登录页一致的外观 */
.reg-form-content .login-agree-inline {
  justify-content: flex-start;
  text-align: left;
  font-size: 12px;
  padding: 10px;
  margin: 4px 0 14px;
}
.reg-form-content .login-agree-inline-link { font-size: 12px; }

/* ================================================================
   r41 · 电子签约 / 电子合同 / 收款信息
   ================================================================ */

/* 合同全文入口 */
.cs-full-link {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 10px; padding: 11px 13px;
  background: #f2f7ff; border: 1px solid #d9e6fb; border-radius: 10px;
  cursor: pointer;
}
.cs-full-link span { font-size: 12.5px; color: var(--primary); font-weight: 600; }
.cs-full-link i { font-style: normal; color: var(--primary); font-size: 16px; }
.cs-full-link:active { background: #e6efff; }

/* 签名区 */
.cs-sign-hint { font-size: 11.5px; color: var(--text-2); line-height: 1.75; margin-bottom: 10px; }
.cs-req { font-style: normal; color: #e5484d; font-size: 10px; margin-left: 6px; font-weight: 400; }

.ct-pad-wrap {
  position: relative; width: 100%; height: 120px;
  background: #fff; border: 1.5px dashed var(--line, #d8dee9); border-radius: 12px;
  overflow: hidden; touch-action: none;
  /* [r115] 画布之上任何浮层都不能吃掉触摸事件，否则写不出字 */
  z-index: 1;
}
.ct-pad-wrap canvas {
  /* [r115] 明确关闭浏览器在 canvas 上的默认手势（滚动/长按放大） */
  touch-action: none;
  -webkit-user-select: none; user-select: none;
  -webkit-tap-highlight-color: transparent;
}
.ct-pad-wrap.signed { border-color: var(--primary); border-style: solid; background: #fbfdff; }
.ct-pad-wrap canvas { display: block; width: 100%; cursor: crosshair; }
.ct-pad-ph {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: 12.5px; color: var(--text-3); pointer-events: none;
}
.ct-pad-line {
  position: absolute; left: 8%; right: 8%; bottom: 22px; height: 1px;
  background: var(--line, #e3e8ef); pointer-events: none;
}
.ct-pad-ops { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.ct-pad-tip { font-size: 11px; color: var(--text-3); }
.ct-pad-clear {
  border: 1px solid var(--line, #d8dee9); background: #fff; color: var(--text-2);
  font-size: 11.5px; padding: 5px 11px; border-radius: 14px; cursor: pointer;
}

/* 抖动提示（未勾选 / 未签名） */
@keyframes ctShake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-6px); }
  40% { transform: translateX(6px); }
  60% { transform: translateX(-4px); }
  80% { transform: translateX(4px); }
}
.ct-pad-wrap.shake, .cs-agree.shake { animation: ctShake .45s ease; border-color: #e5484d; }

/* 合同页面容器 */
.ct-page { display: flex; flex-direction: column; min-height: 100%; }
.ct-scroll { flex: 1; overflow-y: auto; padding: 12px 14px 18px; -webkit-overflow-scrolling: touch; }
.ct-hint {
  display: flex; gap: 8px; align-items: flex-start;
  margin: 10px 14px 0; padding: 10px 12px;
  background: #fff8e8; border: 1px solid #f5e2b8; border-radius: 10px;
  font-size: 11.5px; color: #7a6220; line-height: 1.7;
}
.ct-hint-icon { flex: none; font-size: 14px; }

/* 合同正文（纸张） */
.ct-paper {
  background: #fff; border-radius: 12px; padding: 18px 16px 16px;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .08);
  font-size: 12px; color: #1f2937; line-height: 1.9;
}
.ctp-title { text-align: center; font-size: 18px; font-weight: 700; letter-spacing: 2px; color: #0f172a; }
.ctp-sub { text-align: center; font-size: 10px; color: #9aa4b2; margin-top: 3px; letter-spacing: .5px; }
.ctp-meta {
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 4px;
  margin: 12px 0 12px; padding-bottom: 10px; border-bottom: 1px solid #eceff3;
  font-size: 10.5px; color: #6b7280;
}
.ctp-party { width: 100%; border-collapse: collapse; margin-bottom: 12px; font-size: 11.5px; }
.ctp-party td { border: 1px solid #e5e9ef; padding: 9px 10px; vertical-align: top; }
.ctp-party-tag {
  width: 74px; background: #f7f9fc; font-weight: 700; text-align: center; color: #374151; font-size: 12px;
}
.ctp-party-tag span { font-size: 10px; font-weight: 400; color: #8b95a5; }
.ctp-party-body div { margin-bottom: 3px; }
.ctp-party-body b { color: #111827; font-weight: 600; }
.ctp-p { margin: 0 0 9px; text-align: justify; }
.ctp-small { font-size: 10.5px; color: #6b7280; }
.ctp-h {
  font-size: 12.5px; font-weight: 700; color: #0f172a;
  margin: 14px 0 7px; padding-left: 8px; border-left: 3px solid var(--primary, #1a73e8);
}
.ctp-items, .ctp-fee { width: 100%; border-collapse: collapse; margin: 8px 0 10px; font-size: 11px; }
.ctp-items th, .ctp-items td { border: 1px solid #e5e9ef; padding: 6px 8px; text-align: left; }
.ctp-items th { background: #f7f9fc; font-weight: 600; color: #374151; text-align: center; }
.ctp-items td:first-child { text-align: center; color: #6b7280; }
.ctp-fee td { border: 1px solid #e5e9ef; padding: 7px 9px; }
.ctp-fee td:last-child { text-align: right; }
.ctp-fee-total td { background: #f7f9fc; font-weight: 600; }
.ctp-sign { display: flex; gap: 10px; margin-top: 18px; padding-top: 14px; border-top: 1px solid #eceff3; }
.ctp-sign-col { flex: 1; min-width: 0; }
.ctp-sign-title { font-size: 11.5px; font-weight: 700; color: #0f172a; margin-bottom: 6px; }
.ctp-sign-img { height: 62px; display: flex; align-items: center; justify-content: center; }
.ctp-sign-img img { max-height: 62px; max-width: 100%; }
.ctp-sign-blank { border-bottom: 1px solid #cbd5e1; color: #9aa4b2; font-size: 10.5px; }
.ctp-sign-line { font-size: 10.5px; color: #6b7280; margin-top: 5px; }
.ctp-sign-line b { color: #111827; }
.ctp-seal {
  height: 62px; display: flex; flex-direction: column; align-items: center; justify-content: center;
  border: 2px solid rgba(220, 38, 38, .55); border-radius: 50%;
  color: #dc2626; font-size: 9px; text-align: center; line-height: 1.25; padding: 4px;
}
.ctp-seal i { font-style: normal; font-size: 8px; }
.ctp-foot {
  margin-top: 14px; padding-top: 10px; border-top: 1px dashed #e5e9ef;
  font-size: 9.5px; color: #9aa4b2; text-align: center; line-height: 1.7;
}

/* 签署页底部操作条 */
.ct-bar {
  flex: none; padding: 12px 14px calc(12px + env(safe-area-inset-bottom));
  background: #fff; border-top: 1px solid var(--line, #eceff3);
}
.ct-bar-lite { padding-top: 10px; }
.ct-agree { display: flex; gap: 9px; align-items: flex-start; margin-bottom: 10px; cursor: pointer; }
.ct-agree input { margin-top: 2px; width: 16px; height: 16px; flex: none; accent-color: var(--primary); }
.ct-agree span { font-size: 11.5px; color: var(--text-2); line-height: 1.7; }
.ct-submit { width: 100%; }
.ct-bar-note { margin-top: 8px; font-size: 10.5px; color: var(--text-3); text-align: center; }

.ct-field { margin-top: 12px; }
.ct-field label { display: block; font-size: 11.5px; color: var(--text-2); margin-bottom: 5px; }
.ct-field input {
  width: 100%; padding: 10px 12px; border: 1px solid var(--line, #d8dee9);
  border-radius: 10px; font-size: 13px; background: #fff;
}
.ct-field-row { display: flex; justify-content: space-between; margin-top: 10px; font-size: 11.5px; color: var(--text-2); }
.ct-field-row b { color: var(--text-1); }

/* 签署成功 */
.ct-done-hero { padding: 22px 20px 16px; text-align: center; }
.ct-done-icon { font-size: 44px; line-height: 1; }
.ct-done-title { margin-top: 10px; font-size: 17px; font-weight: 700; color: var(--text-1); }
.ct-done-desc { margin-top: 5px; font-size: 12px; color: var(--text-3); }
.ct-done-no {
  display: inline-block; margin-top: 10px; padding: 5px 12px;
  background: #f4f7fb; border-radius: 14px; font-size: 11px; color: var(--text-2);
}
.ct-done-no b { color: var(--primary); letter-spacing: .5px; }
.ct-done-ops { padding: 4px 14px 20px; }
.ct-done-ops .btn { margin-bottom: 9px; }

/* 收款信息卡 */
.ct-pay-card {
  margin: 4px 14px 12px; padding: 14px;
  background: linear-gradient(160deg, #f4f8ff, #eef4ff);
  border: 1px solid #d9e6fb; border-radius: 14px;
}
.ct-pay-head { display: flex; align-items: center; gap: 10px; }
.ct-pay-icon { font-size: 24px; flex: none; }
.ct-pay-head > div { flex: 1; min-width: 0; }
.ct-pay-title { font-size: 13.5px; font-weight: 700; color: #0f172a; }
.ct-pay-sub { font-size: 10.5px; color: #6b7280; margin-top: 2px; }
.ct-pay-amount { flex: none; font-size: 17px; font-weight: 700; color: #d93025; }
.ct-pay-rows { margin-top: 12px; }
.ct-pay-row {
  display: flex; justify-content: space-between; gap: 12px;
  padding: 7px 0; border-top: 1px dashed #dbe5f5; font-size: 12px;
}
.ct-pay-row span { color: #6b7280; flex: none; }
.ct-pay-row b { color: #111827; text-align: right; word-break: break-all; font-weight: 600; }
.ct-pay-missing { color: #b45309 !important; font-weight: 400 !important; }
.ct-pay-note {
  margin-top: 10px; padding: 9px 11px; background: #fffdf5; border: 1px solid #f5e2b8;
  border-radius: 9px; font-size: 11px; color: #7a6220; line-height: 1.7;
}
.ct-pay-ops { margin-top: 11px; }
.ct-pay-ops .btn { margin-bottom: 8px; }

/* 我的合同列表 */
.ct-list { padding: 10px 14px 18px; }
.ct-list-card {
  background: #fff; border: 1px solid var(--line, #eceff3); border-radius: 12px;
  padding: 13px 14px; margin-bottom: 10px; cursor: pointer;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .05);
}
.ct-list-card:active { background: #fafbfd; }
.ct-list-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ct-list-name { font-size: 13.5px; font-weight: 600; color: var(--text-1); }
.ct-list-status {
  flex: none; font-size: 10.5px; padding: 2px 8px; border-radius: 10px;
  background: #f1f5f9; color: #64748b;
}
.ct-list-status.ok { background: #e8f7ef; color: #137a41; }
.ct-list-pkg { margin-top: 5px; font-size: 11.5px; color: var(--text-2); }
.ct-list-meta { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 8px; font-size: 10.5px; color: var(--text-3); }
.ct-list-foot { display: flex; align-items: center; gap: 10px; margin-top: 10px; padding-top: 9px; border-top: 1px dashed var(--line, #eceff3); }
.ct-list-amount { font-size: 15px; font-weight: 700; color: #d93025; flex: 1; }
.ct-list-sign { font-size: 10.5px; color: #137a41; }
.ct-list-arrow { font-size: 16px; color: var(--text-3); }

/* 已签署徽标 */
.ct-signed-badge {
  display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center;
  padding: 9px 12px; margin-bottom: 11px;
  background: #e8f7ef; border: 1px solid #b7e3c8; border-radius: 10px;
  font-size: 11px; color: #137a41;
}

/* ====== r41 修复：全局加载遮罩（showLoading / hideLoading） ====== */
.qb-loading {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15, 23, 42, .38);
  opacity: 0; visibility: hidden; transition: opacity .18s ease;
}
.qb-loading.show { opacity: 1; visibility: visible; }
.qb-loading-box {
  min-width: 128px; padding: 20px 22px; border-radius: 14px;
  background: rgba(28, 34, 46, .92); text-align: center;
}
.qb-loading-spin {
  width: 30px; height: 30px; margin: 0 auto 12px;
  border: 3px solid rgba(255, 255, 255, .22);
  border-top-color: #fff; border-radius: 50%;
  animation: qbSpin .8s linear infinite;
}
@keyframes qbSpin { to { transform: rotate(360deg); } }
.qb-loading-text { font-size: 12.5px; color: #fff; line-height: 1.6; }

/* ====== r42 对公收款：二维码 + 账号展示 ====== */
.ct-pay-qrbox {
  display: flex; gap: 12px; align-items: center;
  margin-top: 12px; padding: 12px;
  background: #fff; border: 1px solid #e2ebf8; border-radius: 12px;
}
.ct-pay-qrwrap { position: relative; flex: none; width: 96px; height: 96px; cursor: zoom-in; }
.ct-pay-qr { width: 96px; height: 96px; object-fit: contain; border-radius: 8px; background: #fff; }
.ct-pay-qrzoom {
  position: absolute; left: 0; right: 0; bottom: 0; text-align: center;
  font-size: 9.5px; color: #fff; background: rgba(15, 23, 42, .55);
  border-radius: 0 0 8px 8px; padding: 2px 0;
}
.ct-pay-qrside { flex: 1; min-width: 0; }
.ct-pay-qrtitle { font-size: 12.5px; font-weight: 700; color: #0f172a; }
.ct-pay-qrdesc { margin-top: 3px; font-size: 10.5px; color: #6b7280; line-height: 1.65; }
.ct-pay-qrhint { margin-top: 5px; font-size: 10px; color: #9aa4b2; line-height: 1.6; }
.ct-pay-sub2 {
  margin: 14px 0 2px; font-size: 10.5px; color: #8b95a5; text-align: center;
  position: relative;
}
.ct-pay-sub2::before, .ct-pay-sub2::after {
  content: ''; position: absolute; top: 50%; width: 32%; height: 1px; background: #e5eaf2;
}
.ct-pay-sub2::before { left: 0; }
.ct-pay-sub2::after { right: 0; }
.ct-pay-acct { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .4px; }

/* 收款码大图 */
.pq-sheet {
  position: fixed; inset: 0; z-index: 9998;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15, 23, 42, .72); padding: 20px;
}
.pq-card {
  width: 100%; max-width: 340px; padding: 20px 18px 16px;
  background: #fff; border-radius: 18px; text-align: center;
}
.pq-title { font-size: 15px; font-weight: 700; color: #0f172a; }
.pq-sub { margin-top: 3px; font-size: 11px; color: #8b95a5; }
.pq-img { width: 100%; max-width: 280px; margin: 14px auto 0; display: block; border-radius: 10px; }
.pq-tip { margin-top: 10px; font-size: 11px; color: #6b7280; }
.pq-acct {
  margin: 10px 0 14px; padding: 9px 10px; background: #f6f8fb; border-radius: 9px;
  font-size: 10.5px; color: #475569; line-height: 1.8;
}

/* ================================================================
   r42 · AI 财税助手
   ================================================================ */

/* 悬浮球 */
.ai-fab {
  position: fixed;
  right: 14px;
  bottom: calc(var(--tab-h) + 20px + var(--safe-bottom));
  width: 56px; height: 56px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0;
  background: linear-gradient(145deg, #2b7de9, #1a5fb4 60%, #123f78);
  border-radius: 50%;
  box-shadow: 0 6px 20px rgba(26, 95, 180, .45), 0 0 0 4px rgba(43, 125, 233, .12);
  z-index: 151;
  cursor: pointer;
  transition: transform .16s ease, opacity .2s ease;
  animation: aiFabIn .45s cubic-bezier(.2, .9, .3, 1.4);
}
@keyframes aiFabIn { from { transform: scale(.4); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.ai-fab:active { transform: scale(.9); }
.ai-fab.hide { opacity: 0; pointer-events: none; transform: scale(.6); }
.ai-fab-ic { font-size: 21px; line-height: 1; }
.ai-fab-txt { font-size: 8px; color: #fff; letter-spacing: 1px; font-weight: 700; margin-top: 1px; }

/* 面板 */
.ai-panel {
  position: fixed; inset: 0; z-index: 600;
  display: none;
}
.ai-panel.open { display: block; }
.ai-panel .ai-mask {
  position: absolute; inset: 0;
  background: rgba(15, 23, 42, .42);
  animation: aiMaskIn .2s ease;
}
@keyframes aiMaskIn { from { opacity: 0; } to { opacity: 1; } }

.ai-sheet {
  position: absolute; left: 0; right: 0; bottom: 0;
  margin: 0 auto;
  width: 100%; max-width: 520px;
  height: 88vh; height: 88dvh;
  display: flex; flex-direction: column;
  background: #f6f8fc;
  border-radius: 20px 20px 0 0;
  box-shadow: 0 -8px 40px rgba(15, 23, 42, .22);
  overflow: hidden;
  animation: aiSheetIn .28s cubic-bezier(.2, .8, .2, 1);
}
@keyframes aiSheetIn { from { transform: translateY(100%); } to { transform: translateY(0); } }

/* 头部 */
.ai-head {
  flex: none;
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px 12px;
  background: linear-gradient(135deg, #1a5fb4, #2b7de9);
  color: #fff;
}
.ai-head-l { display: flex; align-items: center; gap: 10px; min-width: 0; }
.ai-head-ava {
  flex: none; width: 36px; height: 36px; border-radius: 12px;
  background: rgba(255, 255, 255, .18);
  display: flex; align-items: center; justify-content: center; font-size: 19px;
}
.ai-head-txt { min-width: 0; }
.ai-head-title { font-size: 14.5px; font-weight: 700; letter-spacing: .3px; }
.ai-head-sub {
  display: flex; align-items: center; gap: 5px;
  font-size: 10.5px; color: rgba(255, 255, 255, .82); margin-top: 2px;
}
.ai-dot {
  width: 5px; height: 5px; border-radius: 50%; background: #7ef2a8;
  box-shadow: 0 0 6px #7ef2a8; display: inline-block;
}
.ai-head-ops { display: flex; align-items: center; gap: 8px; flex: none; }
.ai-hbtn {
  border: 1px solid rgba(255, 255, 255, .35);
  background: rgba(255, 255, 255, .12);
  color: #fff; font-size: 11.5px; padding: 5px 11px; border-radius: 14px;
  cursor: pointer;
}
.ai-hbtn:active { background: rgba(255, 255, 255, .25); }
.ai-hclose { padding: 5px 9px; font-size: 13px; }

/* 场景切换 */
.ai-scenes {
  flex: none;
  display: flex; gap: 8px; overflow-x: auto;
  padding: 9px 14px; background: #fff;
  border-bottom: 1px solid #eef1f6;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.ai-scenes::-webkit-scrollbar { display: none; }
.ai-scene {
  flex: none;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 6px 12px; border-radius: 16px;
  border: 1px solid #e3e9f2; background: #f7f9fc;
  font-size: 11.5px; color: #5b6472; cursor: pointer;
  white-space: nowrap; transition: all .15s ease;
}
.ai-scene span { font-size: 12px; }
.ai-scene.on {
  background: var(--primary-light, #e8f1fb);
  border-color: #bcd6f5; color: var(--primary, #1a5fb4); font-weight: 600;
}

/* 消息区 */
.ai-body {
  flex: 1; min-height: 0; overflow-y: auto;
  padding: 14px 14px 6px;
  -webkit-overflow-scrolling: touch;
}

.ai-welcome { text-align: center; padding: 10px 6px 18px; }
.ai-welcome-ava {
  width: 54px; height: 54px; margin: 0 auto 10px;
  border-radius: 18px; background: linear-gradient(145deg, #e8f1fb, #d5e6fb);
  display: flex; align-items: center; justify-content: center; font-size: 27px;
}
.ai-welcome-hi { font-size: 15px; font-weight: 700; color: var(--text-1, #1a1a2e); }
.ai-welcome-sub {
  margin-top: 6px; font-size: 12.5px; color: var(--text-2, #6b7280);
  line-height: 1.75; padding: 0 4px;
}
.ai-facts {
  margin: 14px 0 0; padding: 11px 12px; text-align: left;
  background: #fff; border: 1px solid #e8eef8; border-radius: 12px;
}
.ai-facts-title { font-size: 11px; font-weight: 700; color: var(--primary, #1a5fb4); margin-bottom: 6px; }
.ai-fact { font-size: 11px; color: #4b5563; line-height: 1.9; }
.ai-welcome-tip {
  margin-top: 14px; font-size: 10px; color: #9aa4b2; line-height: 1.7;
}

.ai-msg { display: flex; gap: 7px; margin-bottom: 14px; align-items: flex-start; }
.ai-msg-user { justify-content: flex-end; }
.ai-ava-s {
  flex: none; width: 26px; height: 26px; border-radius: 9px;
  background: linear-gradient(145deg, #e8f1fb, #d5e6fb);
  display: flex; align-items: center; justify-content: center; font-size: 15px;
}
.ai-bub {
  max-width: 90%;
  padding: 10px 13px;
  border-radius: 4px 14px 14px 14px;
  background: #fff;
  border: 1px solid #eaeef5;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
  font-size: 13px; color: #1f2937; line-height: 1.82;
  word-break: break-word;
}
.ai-msg-user .ai-bub {
  max-width: 80%;
  border-radius: 14px 4px 14px 14px;
  background: linear-gradient(135deg, #2b7de9, #1a5fb4);
  border-color: transparent; color: #fff;
  box-shadow: 0 2px 8px rgba(26, 95, 180, .28);
}

.ai-p { margin: 0; }
.ai-gap { height: 7px; }
.ai-li { padding-left: 2px; }
.ai-li-num { font-weight: 500; }
.ai-bub code {
  background: #f1f5f9; padding: 1px 5px; border-radius: 4px;
  font-family: ui-monospace, Menlo, monospace; font-size: 11.5px;
}
.ai-bub a { color: #1a5fb4; word-break: break-all; }
.ai-msg-user .ai-bub a { color: #fff; text-decoration: underline; }

/* 官方来源卡 */
.ai-refs {
  margin-top: 11px; padding-top: 10px;
  border-top: 1px dashed #e5eaf2;
}
.ai-refs-title {
  font-size: 10.5px; color: #8b6b1f; font-weight: 700;
  margin-bottom: 7px;
}
.ai-ref {
  display: block; padding: 8px 10px; margin-bottom: 6px;
  background: #fffbef; border: 1px solid #f3e2b8; border-radius: 9px;
  text-decoration: none;
}
.ai-ref:active { background: #fff6de; }
.ai-ref-t { font-size: 11.5px; font-weight: 600; color: #3f3208; line-height: 1.55; }
.ai-ref-d { margin-top: 3px; font-size: 10px; color: #8b6b1f; line-height: 1.6; }
.ai-ref-go { margin-top: 4px; font-size: 10px; color: #b45309; }

.ai-deg {
  margin-top: 9px; padding-top: 8px; border-top: 1px dashed #e5eaf2;
  font-size: 9.5px; color: #9aa4b2;
}

/* 输入中 */
.ai-typing { display: flex; align-items: center; gap: 4px; padding: 13px 14px; }
.ai-typing i, .ai-loading i {
  width: 6px; height: 6px; border-radius: 50%; background: #b6c2d2;
  display: inline-block; animation: aiBlink 1.2s infinite ease-in-out;
}
.ai-typing i:nth-child(2), .ai-loading i:nth-child(2) { animation-delay: .18s; }
.ai-typing i:nth-child(3), .ai-loading i:nth-child(3) { animation-delay: .36s; }
@keyframes aiBlink {
  0%, 80%, 100% { opacity: .3; transform: translateY(0); }
  40% { opacity: 1; transform: translateY(-3px); }
}
.ai-loading { display: flex; justify-content: center; gap: 5px; padding: 26px 0; }

/* 快捷问题 */
.ai-chips {
  flex: none;
  display: flex; gap: 7px; overflow-x: auto;
  padding: 8px 14px 4px;
  scrollbar-width: none;
}
.ai-chips::-webkit-scrollbar { display: none; }
.ai-chip {
  flex: none; white-space: nowrap;
  padding: 7px 12px; border-radius: 15px;
  background: #fff; border: 1px solid #dfe7f2;
  font-size: 11.5px; color: #38506e; cursor: pointer;
}
.ai-chip:active { background: #eef4fd; border-color: #bbd4f2; }

/* 输入区 */
.ai-inputbar {
  flex: none;
  display: flex; gap: 8px; align-items: flex-end;
  padding: 8px 14px 6px;
  background: #f6f8fc;
}
.ai-input {
  flex: 1; min-height: 40px; max-height: 96px;
  padding: 10px 13px; border-radius: 20px;
  border: 1px solid #dfe7f2; background: #fff;
  font-size: 13px; line-height: 1.5; color: #1f2937;
  resize: none; outline: none;
  font-family: inherit;
}
.ai-input:focus { border-color: #9dc2ee; box-shadow: 0 0 0 3px rgba(43, 125, 233, .1); }
.ai-send {
  flex: none; height: 40px; padding: 0 16px;
  border: none; border-radius: 20px;
  background: linear-gradient(135deg, #2b7de9, #1a5fb4);
  color: #fff; font-size: 13px; font-weight: 600;
  cursor: pointer;
  box-shadow: 0 3px 10px rgba(26, 95, 180, .28);
}
.ai-send:disabled { opacity: .55; box-shadow: none; }
.ai-send:active:not(:disabled) { transform: scale(.96); }

.ai-foot {
  flex: none; text-align: center;
  font-size: 9.5px; color: #a6afbd;
  padding: 2px 14px calc(8px + env(safe-area-inset-bottom, 0px));
  background: #f6f8fc;
}

/* 移动端全屏 */
@media (max-width: 480px) {
  .ai-sheet { height: 92vh; height: 92dvh; border-radius: 18px 18px 0 0; }
  .ai-bub { max-width: 86%; font-size: 13.5px; }
}

/* 零申报页内的 AI 辅导入口 */
.fz-ai-tip {
  display: flex; align-items: center; gap: 10px;
  margin: 12px 14px 0; padding: 12px 13px;
  background: linear-gradient(135deg, #eef5ff, #e3eefd);
  border: 1px solid #cfe0f7; border-radius: 13px;
  cursor: pointer;
}
.fz-ai-tip:active { background: #e2ecfb; }
.fz-ai-tip-ic {
  flex: none; width: 34px; height: 34px; border-radius: 11px;
  background: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px;
  box-shadow: 0 1px 4px rgba(26, 95, 180, .12);
}
.fz-ai-tip-body { flex: 1; min-width: 0; }
.fz-ai-tip-t { font-size: 12.5px; font-weight: 700; color: #123f78; }
.fz-ai-tip-d { font-size: 10.5px; color: #4b6382; margin-top: 2px; line-height: 1.55; }
.fz-ai-tip-go { flex: none; font-size: 11px; color: var(--primary, #1a5fb4); font-weight: 600; }

/* 表单页 AI 帮助按钮 */
.zk-ai-help {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin: 4px 0 0; padding: 9px;
  border: 1px dashed #bcd6f5; border-radius: 10px;
  background: #f5f9ff; color: #1a5fb4;
  font-size: 11.5px; font-weight: 600; cursor: pointer;
}
.zk-ai-help:active { background: #eaf2fe; }

/* AI 建议操作 */
.ai-acts { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.ai-act {
  padding: 7px 13px; border-radius: 16px;
  border: 1px solid #bcd6f5;
  background: linear-gradient(135deg, #f4f9ff, #e8f1fd);
  color: #1a5fb4; font-size: 11.5px; font-weight: 600;
  cursor: pointer;
}
.ai-act:active { background: #dcebfd; transform: scale(.97); }

/* 管理端 AI 入口 */
.adm-tool-ai .at-icon-ai {
  background: linear-gradient(145deg, #2b7de9, #1a5fb4);
  color: #fff;
  box-shadow: 0 3px 10px rgba(26, 95, 180, .35);
}
.adm-tool-ai .at-label { color: #1a5fb4; font-weight: 700; }


/* AI 能力卡（欢迎页填充） */
.ai-caps {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
  margin-top: 14px;
}
.ai-cap {
  text-align: left; padding: 10px 11px;
  background: #fff; border: 1px solid #e8eef8; border-radius: 11px;
}
.ai-cap-ic { font-size: 15px; line-height: 1; }
.ai-cap-t { margin-top: 5px; font-size: 11.5px; font-weight: 600; color: #1f2937; }
.ai-cap-d { margin-top: 2px; font-size: 9.5px; color: #8b95a5; line-height: 1.55; }

/* [r43] 协议勾选：整行可点，命中区域加大；键盘可达 */
.agreement-check { -webkit-tap-highlight-color: transparent; user-select: none; }
.agreement-check:active { background: #f1f5f9; }
.agreement-check.shake { animation: agShake .45s ease; }
@keyframes agShake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-6px); }
  40% { transform: translateX(6px); }
  60% { transform: translateX(-4px); }
  80% { transform: translateX(4px); }
}

/* ============================================================
   r43 · 客户列表搜索筛选 / 企业认领 / 认领审核
   背景：本次导入 240+ 家真实客户，列表必须可搜可筛可分页
   ============================================================ */
.acc-tools { background: #fff; border-radius: 14px; padding: 12px; box-shadow: var(--shadow); margin-bottom: 12px; }
.acc-search-box { display: flex; align-items: center; gap: 8px; background: #f4f6fa; border-radius: 11px; padding: 0 10px; height: 40px; }
.acc-search-ic { font-size: 13px; opacity: .6; }
.acc-search { flex: 1; border: none; background: transparent; font-size: 13px; color: var(--text); outline: none; min-width: 0; }
.acc-search::placeholder { color: #9aa4b2; font-size: 12px; }
.acc-search-clear { font-size: 18px; color: #9aa4b2; padding: 0 2px; cursor: pointer; line-height: 1; }
.acc-chips { display: flex; gap: 6px; overflow-x: auto; margin-top: 10px; padding-bottom: 2px; -webkit-overflow-scrolling: touch; }
.acc-chips::-webkit-scrollbar { display: none; }
.acc-chip { flex: 0 0 auto; border: 1px solid #e6ebf3; background: #fff; color: #5b667a; border-radius: 999px; padding: 6px 11px; font-size: 12px; line-height: 1; cursor: pointer; white-space: nowrap; }
.acc-chip i { font-style: normal; color: #94a3b8; font-size: 11px; margin-left: 2px; }
.acc-chip.on { background: var(--primary); border-color: var(--primary); color: #fff; font-weight: 600; }
.acc-chip.on i { color: rgba(255, 255, 255, .82); }
.acc-chips-acc { border-top: 1px dashed #eef2f7; padding-top: 9px; }
.acc-hit { font-size: 12px; color: var(--text-3); margin: 2px 0 10px; }
.acc-hit b { color: var(--primary); }
.acc-c-name { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.acc-c-tax { font-size: 10px; font-weight: 500; color: #0369a1; background: #e0f2fe; border-radius: 5px; padding: 1px 5px; }
.acc-c-claim { font-size: 10.5px; color: #b45309; background: #fef3c7; border-radius: 5px; padding: 1px 6px; }
.acc-more { display: block; width: 100%; padding: 12px; margin: 4px 0 8px; border: 1px dashed #cbd5e1; background: #fff; border-radius: 12px; color: var(--text-2); font-size: 13px; cursor: pointer; }
.acc-more:active { background: #f8fafc; }

/* 客户端：未绑定企业 → 认领入口 */
.dash-claim-tip { border-left: 3px solid #f0b429; }
.dash-claim-acts { display: flex; align-items: center; gap: 12px; margin-top: 10px; }
.dash-claim-btn { border: none; background: var(--primary); color: #fff; font-size: 12.5px; font-weight: 600; border-radius: 9px; padding: 8px 14px; cursor: pointer; }
.dash-claim-btn:active { background: var(--primary-dark); }
.dash-claim-link { font-size: 12px; color: var(--primary); font-weight: 600; cursor: pointer; }

/* 认领页 / 认领审核 */
.clm-wrap { padding: 12px 14px 30px; }
.clm-intro { background: #fff; border-radius: 14px; padding: 14px; box-shadow: var(--shadow); margin-bottom: 12px; }
.clm-intro-t { font-size: 14px; font-weight: 700; color: var(--text); }
.clm-intro-d { margin-top: 6px; font-size: 12px; line-height: 1.65; color: var(--text-3); }
.clm-search { background: #fff; box-shadow: var(--shadow); padding: 0 6px 0 12px; height: 46px; margin-bottom: 12px; }
.clm-search-btn { flex: 0 0 auto; border: none; background: var(--primary); color: #fff; font-size: 13px; font-weight: 600; border-radius: 9px; padding: 8px 14px; cursor: pointer; }
.clm-item { display: flex; align-items: center; gap: 10px; background: #fff; border-radius: 14px; padding: 13px 14px; margin-bottom: 10px; box-shadow: var(--shadow); }
.clm-item-main { flex: 1; min-width: 0; }
.clm-item-name { font-size: 14px; font-weight: 600; color: var(--text); line-height: 1.45; }
.clm-item-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 5px; font-size: 11.5px; color: var(--text-3); }
.clm-badge { flex: 0 0 auto; font-size: 11.5px; color: #b45309; background: #fef3c7; border-radius: 7px; padding: 5px 9px; }
.clm-btn { flex: 0 0 auto; border: none; background: var(--primary); color: #fff; font-size: 12.5px; font-weight: 600; border-radius: 9px; padding: 8px 14px; cursor: pointer; }
.clm-btn:active { background: var(--primary-dark); }
.clm-btn-ghost { background: #f1f5f9; color: #64748b; }
.clm-actions { display: flex; gap: 8px; flex: 0 0 auto; }
.clm-foot { margin-top: 14px; text-align: center; font-size: 11.5px; color: #94a3b8; line-height: 1.7; }

/* ====== 20261102 新增：关于平台页 / 管理端平台设置页 ====== */
.au-brand { display: flex; align-items: center; gap: 14px; padding: 20px 18px; background: linear-gradient(135deg, var(--primary) 0%, #123a6d 100%); border-radius: 14px; margin-bottom: 14px; }
.au-logo { width: 54px; height: 54px; border-radius: 12px; background: #fff; object-fit: contain; padding: 5px; flex-shrink: 0; }
.au-brand-text { min-width: 0; }
.au-name { font-size: 17px; font-weight: 800; color: #fff; letter-spacing: .5px; }
.au-slogan { font-size: 12.5px; color: rgba(255,255,255,.8); margin-top: 3px; letter-spacing: 2px; }
.au-section { background: #fff; border-radius: 13px; border: 1px solid #e8edf4; margin-bottom: 12px; overflow: hidden; }
.au-sec-title { font-size: 13px; font-weight: 700; color: #64748b; padding: 12px 16px 9px; letter-spacing: .4px; }
.au-rows { padding: 0 16px 12px; }
.au-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 8px 0; border-top: 1px solid #f1f5f9; font-size: 13.5px; line-height: 1.65; }
.au-row:first-child { border-top: none; }
.au-k { color: #94a3b8; flex-shrink: 0; }
.au-v { color: #1e293b; font-weight: 600; text-align: right; word-break: break-all; }
.au-qual { display: flex; align-items: center; gap: 12px; padding: 10px 16px; border-top: 1px solid #f1f5f9; }
.au-qual:first-of-type { border-top: none; }
.au-qual-img { width: 52px; height: 52px; border-radius: 8px; object-fit: cover; flex-shrink: 0; border: 1px solid #e8edf4; }
.au-qual-info { min-width: 0; }
.au-qual-t { font-size: 13.5px; font-weight: 700; color: #1e293b; }
.au-qual-d { font-size: 11.5px; color: #94a3b8; margin-top: 3px; line-height: 1.55; word-break: break-all; }
.au-empty { padding: 6px 16px 16px; font-size: 13px; color: #94a3b8; }
.au-foot { padding: 4px 0 10px; }
.about-us-page .modal-page-header h2 { font-size: 17px; }
.admin-settings-page .au-section .settings-list { padding: 0 16px 12px; }
.admin-settings-page .au-section .settings-item { border-top: 1px solid #f1f5f9; }
.admin-settings-page .au-section .settings-item:first-child { border-top: none; }

/* ================================================================
   [20261103] 员工薪酬职级设置
   ================================================================ */
.stf-lv-opts { display: flex; flex-direction: column; gap: 8px; margin: 6px 0 14px; }
.stf-lv {
  display: flex; align-items: center; gap: 9px;
  width: 100%; text-align: left; padding: 10px 12px;
  border: 1.5px solid #e2e8f0; border-radius: 10px; background: #fff;
  cursor: pointer; transition: border-color .15s, background .15s;
  font-family: inherit;
}
.stf-lv:active { transform: scale(.99); }
.stf-lv.on { border-color: var(--primary, #1a5fb4); background: #f5f9ff; }
.slv-badge {
  flex: none; min-width: 34px; text-align: center;
  padding: 3px 7px; border-radius: 6px; font-size: 11px; font-weight: 800;
}
.slv-name { flex: none; font-size: 13px; font-weight: 700; color: var(--text-1, #1e293b); min-width: 66px; }
.slv-cond { flex: 1; font-size: 10.5px; color: var(--text-3, #94a3b8); line-height: 1.45; }
.stf-sel {
  width: 100%; padding: 10px 12px; margin: 4px 0 14px;
  border: 1.5px solid #e2e8f0; border-radius: 9px; background: #fff;
  font-size: 13px; color: var(--text-1, #1e293b); font-family: inherit;
}
.stf-actions { display: flex; gap: 10px; padding: 4px 16px 24px; }
.stf-actions .btn { flex: 1; }

/* [20261103] 表单字段说明（分管领导等） */
.form-hint { margin-top: 5px; font-size: 10.5px; color: var(--text-3, #94a3b8); line-height: 1.5; }

/* [20261103] 营业执照数据来源标注 */
.ei-bound-source {
  margin-top: 4px; font-size: 10.5px; color: var(--text-3, #94a3b8); line-height: 1.5;
}

/* [20261103] 执照号补录提示条（客户管理页） */
.acc-lic-tip {
  display: flex; align-items: center; gap: 10px;
  margin: 10px 16px 0; padding: 11px 13px;
  background: #fff8ec; border: 1px solid #ffd9a0; border-radius: 12px;
}
.acc-lic-tip .alt-text { flex: 1; min-width: 0; }
.acc-lic-tip .alt-text b {
  display: block; font-size: 12.5px; font-weight: 700; color: #92400e;
}
.acc-lic-tip .alt-text span {
  display: block; font-size: 11px; color: #b45309; margin-top: 2px; line-height: 1.5;
}
.acc-lic-tip .alt-btn {
  flex: none; padding: 7px 13px; border: none; border-radius: 9px;
  background: #d97706; color: #fff; font-size: 12px; font-weight: 700;
  cursor: pointer; font-family: inherit;
}
.acc-lic-tip .alt-btn:active { transform: scale(.97); }

/* ============ [r88] 同层重绘不重播上滑动画（修「弹窗两次」）============
   问题：很多入口是「openModalPush(内容) → 异步取数 → 再写一次内容」，
   两次 innerHTML 替换会两次触发 animation: slideUp
   → 弹窗肉眼可见地「滑上来两次」，用户感知就是「弹窗两次」。
   方案：由 JS 在写 innerHTML **之前** 给遮罩层加 .qb-suppress-anim，
        关掉内部所有弹层的上滑动画；真正「打开下一层」时由 openModalPush 移除该类。
   注意：必须作用在遮罩层（父元素）上，因为动画是在子元素插入、
        浏览器计算样式的那一刻启动的，事后给子元素加类来不及。 */
.modal-overlay.qb-suppress-anim .modal-sheet,
.modal-overlay.qb-suppress-anim .modal-page,
.modal-overlay.qb-suppress-anim .modal-scroll,
.modal-overlay.qb-suppress-anim .modal-card {
  animation: none !important;
}

/* ============ [r89] 续费与欠费中心 / 经营结构 / 员工实名 ============ */

/* --- 续费与欠费 --- */
.rn-page { background: var(--bg-1, #f5f7fa); }
.rn-summary {
  display: flex; gap: 8px; padding: 12px 14px 6px;
}
.rn-sum-item {
  flex: 1; background: #fff; border-radius: 10px; padding: 10px 6px;
  text-align: center; box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.rn-sum-item b { display: block; font-size: 17px; font-weight: 700; color: var(--text-1, #1e293b); }
.rn-sum-item span { display: block; font-size: 11px; color: var(--text-3, #94a3b8); margin-top: 2px; }
.rn-sum-item.warn b { color: #d97706; }
.rn-sum-item.danger b { color: #dc2626; }
.rn-alert {
  margin: 8px 14px 0; padding: 10px 12px; background: #fef2f2;
  border-left: 3px solid #dc2626; border-radius: 6px;
  font-size: 12px; color: #991b1b; line-height: 1.6;
}
.rn-tabs {
  display: flex; gap: 6px; padding: 12px 14px 8px; overflow-x: auto;
}
.rn-tabs::-webkit-scrollbar { display: none; }
.rn-tab {
  flex: none; padding: 6px 12px; border-radius: 16px; font-size: 12px;
  background: #fff; color: var(--text-2, #64748b); border: 1px solid #e2e8f0;
  white-space: nowrap; cursor: pointer;
}
.rn-tab.active { background: #1a5fb4; color: #fff; border-color: #1a5fb4; }
.rn-tab i { font-style: normal; opacity: .75; margin-left: 2px; }
.rn-list { padding: 0 14px 24px; }
.rn-card {
  background: #fff; border-radius: 12px; padding: 12px 14px; margin-bottom: 10px;
  box-shadow: 0 1px 3px rgba(15,23,42,.06); border-left: 3px solid transparent;
}
.rn-card.expired { border-left-color: #dc2626; }
.rn-card.overdue { border-left-color: #f97316; }
.rn-card-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.rn-name { font-size: 14px; font-weight: 600; color: var(--text-1, #1e293b); line-height: 1.4; }
.rn-badge {
  flex: none; font-size: 11px; padding: 2px 8px; border-radius: 10px;
  background: #f1f5f9; color: #475569; white-space: nowrap;
}
.rn-badge.warn { background: #fef3c7; color: #92400e; }
.rn-badge.danger { background: #fee2e2; color: #991b1b; }
.rn-meta { font-size: 12px; color: var(--text-2, #64748b); margin-top: 5px; line-height: 1.6; }
.rn-dim { color: #cbd5e1; }
.rn-arrears {
  margin-top: 9px; padding: 9px 11px; background: #fff7ed;
  border-radius: 8px; border: 1px solid #fed7aa;
}
.ra-row { display: flex; justify-content: space-between; font-size: 12px; padding: 3px 0; color: #7c2d12; }
.ra-row span:first-child { color: #9a3412; opacity: .8; }
.ra-row b { color: #c2410c; }
.ra-row .danger { color: #dc2626; font-weight: 600; }
.rn-acts { display: flex; gap: 8px; margin-top: 10px; }
.rn-btn {
  flex: 1; padding: 7px 0; border-radius: 8px; font-size: 12px;
  background: #fff; border: 1px solid #cbd5e1; color: #475569; cursor: pointer;
}
.rn-btn.pri { background: #1a5fb4; border-color: #1a5fb4; color: #fff; }

/* --- 经营结构 --- */
.bs-page { background: var(--bg-1, #f5f7fa); }
.bs-hero {
  margin: 12px 14px 0; padding: 16px; border-radius: 14px;
  background: linear-gradient(135deg, #0f766e, #0d9488); color: #fff;
}
.bs-hero-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.bs-hero-right { text-align: right; }
.bs-hero-label { font-size: 12px; opacity: .85; }
.bs-hero-value { font-size: 26px; font-weight: 700; margin-top: 2px; letter-spacing: -.5px; }
.bs-hero-value.pos { color: #bbf7d0; }
.bs-hero-value.neg { color: #fecaca; }
.bs-hero-sub { font-size: 11px; opacity: .8; margin-top: 3px; }
.bs-warn {
  margin-top: 12px; padding: 8px 10px; background: rgba(255,255,255,.18);
  border-radius: 8px; font-size: 11px; line-height: 1.6;
}
.bs-block {
  margin: 12px 14px 0; background: #fff; border-radius: 12px; padding: 14px;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.bs-block-title { font-size: 13px; font-weight: 600; color: var(--text-1, #1e293b); margin-bottom: 10px; }
.bs-ratio { display: flex; align-items: baseline; gap: 8px; }
.bs-ratio b { font-size: 30px; font-weight: 700; }
.bs-ratio.ok b { color: #16a34a; }
.bs-ratio.over b { color: #dc2626; }
.bs-ratio span { font-size: 12px; color: var(--text-3, #94a3b8); }
.bs-hint { margin-top: 8px; font-size: 12px; line-height: 1.7; padding: 8px 10px; border-radius: 8px; }
.bs-hint.ok { background: #f0fdf4; color: #166534; }
.bs-hint.over { background: #fef2f2; color: #991b1b; }
.bs-group-label { font-size: 12px; color: var(--text-3, #94a3b8); margin-bottom: 6px; }
.bs-cost-row {
  display: flex; justify-content: space-between; align-items: flex-start;
  padding: 7px 0; border-bottom: 1px dashed #f1f5f9; font-size: 13px;
}
.bs-cost-row span { color: var(--text-1, #1e293b); }
.bs-cost-row em { display: block; font-style: normal; font-size: 11px; color: var(--text-3, #94a3b8); margin-top: 2px; }
.bs-cost-row b { color: var(--text-1, #1e293b); white-space: nowrap; margin-left: 10px; }
.bs-cost-row.total { border-bottom: none; font-weight: 600; background: #f8fafc; padding: 8px 10px; border-radius: 6px; margin-top: 4px; }
.bs-cost-row.grand { border: none; margin-top: 10px; padding: 10px; background: #1a5fb4; color: #fff; border-radius: 8px; font-weight: 600; }
.bs-cost-row.grand b { color: #fff; }
.bs-kpi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.bs-kpi { background: #f8fafc; border-radius: 8px; padding: 10px; }
.bs-kpi span { display: block; font-size: 11px; color: var(--text-3, #94a3b8); }
.bs-kpi b { display: block; font-size: 15px; margin-top: 3px; color: var(--text-1, #1e293b); }
.bs-cfg-row { display: flex; align-items: center; gap: 8px; padding: 7px 0; border-bottom: 1px solid #f8fafc; }
.bs-cfg-name { flex: 1; font-size: 13px; }
.bs-cfg-name em { display: block; font-style: normal; font-size: 11px; color: var(--text-3, #94a3b8); margin-top: 2px; }
.bs-cfg-input { width: 88px; padding: 6px 8px; border: 1px solid #cbd5e1; border-radius: 6px; font-size: 13px; text-align: right; }
.bs-cfg-unit { font-size: 11px; color: var(--text-3, #94a3b8); width: 38px; }
.bs-staff-row { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid #f8fafc; font-size: 13px; }
.bs-staff-row span { color: var(--text-1, #1e293b); }
.bs-staff-row em { display: block; font-style: normal; font-size: 11px; color: var(--text-3, #94a3b8); }

/* --- 合同数据导入 --- */
.ci-page { background: var(--bg-1, #f5f7fa); }
.ci-page .stf-tip code {
  display: block; margin-top: 8px; padding: 8px 10px; background: #f8fafc;
  border-radius: 6px; font-size: 11px; color: #475569; word-break: break-all;
}
.ci-result {
  margin: 14px; padding: 14px; background: #fff; border-radius: 12px;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.ci-res-title { font-size: 13px; font-weight: 600; margin-bottom: 8px; }
.ci-res-row { display: flex; justify-content: space-between; padding: 6px 0; font-size: 13px; border-bottom: 1px solid #f8fafc; }
.ci-res-row b { font-weight: 700; }
.ci-res-row.ok b { color: #16a34a; }
.ci-res-row.warn b { color: #dc2626; }
.ci-unmatched { margin-top: 10px; font-size: 12px; color: #991b1b; font-weight: 600; }
.ci-un-item {
  font-size: 11px; color: #7c2d12; padding: 4px 8px; background: #fff7ed;
  border-radius: 5px; margin-top: 4px;
}

/* --- 客户端「我的服务合同」区块（r89）--- */
.ei-contract-section { margin-bottom: 16px; }
.ei-contract-card {
  background: #f8fafc; border-radius: 10px; padding: 12px;
  border: 1px solid #e2e8f0;
}
.ei-count-badge.warn { background: #fef3c7; color: #92400e; }
.ei-count-badge.danger { background: #fee2e2; color: #991b1b; }
.ei-contract-tip {
  margin-top: 9px; padding: 8px 10px; border-radius: 7px;
  font-size: 12px; line-height: 1.6;
}
.ei-contract-tip.warn { background: #fffbeb; color: #92400e; }
.ei-contract-tip.danger { background: #fef2f2; color: #991b1b; }

/* ============ [r90] 签约服务组合版 ============ */

/* --- 服务多选器 --- */
.cs-sec-count { float: right; font-size: 12px; color: var(--text-3, #94a3b8); font-weight: 400; }
.cs-pick-tip {
  font-size: 12px; color: var(--text-2, #64748b); line-height: 1.7;
  background: #eff6ff; border-left: 3px solid #1a5fb4;
  padding: 9px 11px; border-radius: 6px; margin-bottom: 12px;
}
.cs-cat { margin-bottom: 16px; }
.cs-cat-head { display: flex; align-items: flex-start; gap: 8px; margin-bottom: 8px; }
.cs-cat-icon { font-size: 17px; line-height: 1.4; }
.cs-cat-name { font-size: 13px; font-weight: 600; color: var(--text-1, #1e293b); }
.cs-cat-name em {
  font-style: normal; font-size: 11px; color: #1a5fb4;
  background: #e8f1fb; padding: 1px 6px; border-radius: 8px; margin-left: 6px;
}
.cs-cat-desc { font-size: 11px; color: var(--text-3, #94a3b8); margin-top: 2px; line-height: 1.5; }
.cs-cat-list { display: flex; flex-direction: column; gap: 8px; }
.cs-item {
  display: flex; align-items: flex-start; gap: 9px;
  background: #fff; border: 1.5px solid #e2e8f0; border-radius: 10px;
  padding: 11px 12px; cursor: pointer; transition: all .15s;
}
.cs-item.on { border-color: #1a5fb4; background: #f5f9ff; }
.cs-item.already { opacity: .72; }
.cs-item-check {
  flex: none; width: 19px; height: 19px; border-radius: 5px;
  border: 1.5px solid #cbd5e1; color: #fff; font-size: 12px;
  display: flex; align-items: center; justify-content: center; margin-top: 1px;
}
.cs-item.on .cs-item-check { background: #1a5fb4; border-color: #1a5fb4; }
.cs-item-main { flex: 1; min-width: 0; }
.cs-item-name {
  font-size: 13px; font-weight: 600; color: var(--text-1, #1e293b);
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.cs-cycle {
  font-size: 10px; font-weight: 400; color: #64748b;
  background: #f1f5f9; padding: 1px 6px; border-radius: 8px;
}
.cs-item.on .cs-cycle { background: #dbeafe; color: #1a5fb4; }
.cs-item-desc { font-size: 11.5px; color: var(--text-3, #94a3b8); margin-top: 3px; line-height: 1.55; }
.cs-item-price {
  flex: none; font-size: 14px; font-weight: 700; color: var(--text-1, #1e293b);
  white-space: nowrap; margin-left: 6px;
}
.cs-item-price span { font-size: 10px; font-weight: 400; color: var(--text-3, #94a3b8); margin-left: 2px; }
.cs-field-note { font-size: 11px; color: var(--text-3, #94a3b8); margin-top: 8px; line-height: 1.6; }
.cs-field-note.discount-note { color: #16a34a; font-size: 12px; margin-top: 10px; }

/* 费用明细行 */
.cs-fee-row {
  display: flex; justify-content: space-between; align-items: flex-start;
  padding: 8px 0; border-bottom: 1px dashed #f1f5f9; font-size: 13px; gap: 10px;
}
.cs-fee-name { flex: 1; color: var(--text-1, #1e293b); line-height: 1.45; }
.cs-fee-name em {
  display: block; font-style: normal; font-size: 11px;
  color: var(--text-3, #94a3b8); margin-top: 2px;
}
.cs-fee-row b { white-space: nowrap; }
.cs-kv.discount { color: #16a34a; }
.cs-kv.discount b { color: #16a34a; }

/* --- 签约前确认弹窗 --- */
.cs-confirm-hero {
  margin: 12px 14px 0; padding: 16px; border-radius: 14px;
  background: linear-gradient(135deg, #1a5fb4, #2b7fd4); color: #fff; text-align: center;
}
.cs-confirm-label { font-size: 12px; opacity: .85; }
.cs-confirm-count { font-size: 13px; margin-top: 2px; }
.cs-confirm-total { font-size: 30px; font-weight: 700; margin-top: 6px; letter-spacing: -.5px; }
.cs-confirm-save { font-size: 12px; color: #bbf7d0; margin-top: 4px; }
.cs-confirm-items { display: flex; flex-direction: column; gap: 10px; }
.cs-ci-item { display: flex; gap: 9px; }
.cs-ci-num {
  flex: none; width: 20px; height: 20px; border-radius: 50%;
  background: #e8f1fb; color: #1a5fb4; font-size: 11px; font-weight: 700;
  display: flex; align-items: center; justify-content: center; margin-top: 1px;
}
.cs-ci-body { flex: 1; min-width: 0; }
.cs-ci-name {
  font-size: 13px; font-weight: 600; color: var(--text-1, #1e293b);
  display: flex; justify-content: space-between; gap: 8px;
}
.cs-ci-name span { font-weight: 400; color: var(--text-3, #94a3b8); font-size: 11px; white-space: nowrap; }
.cs-ci-desc { font-size: 11.5px; color: var(--text-3, #94a3b8); margin-top: 2px; line-height: 1.5; }
.cs-ci-list { margin-top: 5px; display: flex; flex-wrap: wrap; gap: 4px; }
.cs-ci-list em {
  font-style: normal; font-size: 10.5px; color: #475569;
  background: #f1f5f9; padding: 2px 6px; border-radius: 5px;
}
.cs-confirm-tip {
  margin: 12px 14px 0; padding: 10px 12px; background: #fffbeb;
  border-left: 3px solid #d97706; border-radius: 6px;
  font-size: 12px; color: #92400e; line-height: 1.7;
}

/* --- 估价后推荐弹窗 --- */
.cs-rec-intro {
  display: flex; gap: 10px; margin: 12px 14px 0; padding: 13px;
  background: linear-gradient(135deg, #fef3c7, #fde68a); border-radius: 12px;
}
.cs-rec-ico { font-size: 22px; line-height: 1.2; }
.cs-rec-title { font-size: 13px; font-weight: 700; color: #78350f; }
.cs-rec-desc { font-size: 11.5px; color: #92400e; margin-top: 4px; line-height: 1.65; }
.cs-rec-list { display: flex; flex-direction: column; gap: 8px; }
.cs-rec-quote {
  margin: 12px 14px 0; padding: 12px; background: #fff;
  border-radius: 10px; box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.cs-rec-qrow {
  display: flex; justify-content: space-between;
  font-size: 13px; padding: 4px 0; color: var(--text-2, #64748b);
}
.cs-rec-qrow.add { color: #16a34a; font-weight: 600; }
.cs-rec-save {
  margin-top: 6px; font-size: 12px; color: #16a34a;
  background: #f0fdf4; padding: 6px 9px; border-radius: 6px;
}

/* --- 合同服务明细表 --- */
.ctp-items-detail .ctp-item-name { font-weight: 600; color: var(--text-1, #1e293b); font-size: 13px; }
.ctp-items-detail .ctp-item-desc { font-size: 11px; color: var(--text-3, #94a3b8); margin-top: 3px; line-height: 1.5; }
.ctp-items-detail .ctp-item-list { margin-top: 5px; display: flex; flex-wrap: wrap; gap: 3px; }
.ctp-items-detail .ctp-item-list em {
  font-style: normal; font-size: 10px; color: #475569;
  background: #f1f5f9; padding: 1.5px 5px; border-radius: 4px;
}

/* --- [r90] 已选服务浮动汇总条 --- */
.cs-float-bar {
  position: sticky; bottom: 0; z-index: 20;
  margin: 0; padding: 10px 16px;
  background: rgba(15,23,42,.96); color: #fff;
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  border-radius: 12px 12px 0 0;
  box-shadow: 0 -2px 10px rgba(15,23,42,.18);
  transition: transform .22s ease, opacity .22s ease;
}
/* [r115] 签名区进入视口时收起浮条 ——
   原来这条 sticky 浮条会盖住手写画布，手指点到的是浮条不是 canvas，
   表现为「选完服务后怎么都写不出字」。 */
.cs-float-bar.qb-float-hidden {
  transform: translateY(120%);
  opacity: 0;
  pointer-events: none;
}
.cs-float-count { font-size: 12px; opacity: .85; }
.cs-float-names {
  font-size: 11px; opacity: .65; margin-top: 2px;
  max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cs-float-total { font-size: 18px; font-weight: 700; white-space: nowrap; }

/* --- [r91] 服务搜索 + 面议服务引导 --- */
.cs-search { margin-bottom: 12px; }
.cs-search input {
  width: 100%; padding: 10px 12px; font-size: 13px;
  border: 1.5px solid #e2e8f0; border-radius: 10px; background: #fff;
}
.cs-search input:focus { outline: none; border-color: #1a5fb4; }
.cs-cat-name { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.cs-cat-name i {
  font-style: normal; font-size: 11px; color: #94a3b8; font-weight: 400;
}
.cs-neg {
  margin-top: 16px; padding: 12px; background: #f8fafc;
  border: 1px dashed #cbd5e1; border-radius: 10px;
}
.cs-neg-title { font-size: 12px; font-weight: 600; color: #475569; }
.cs-neg-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.cs-neg-item {
  font-size: 11.5px; color: #475569; background: #fff;
  border: 1px solid #e2e8f0; padding: 3px 9px; border-radius: 12px;
}
.cs-neg-tip { font-size: 11.5px; color: #64748b; margin-top: 8px; line-height: 1.7; }

/* ============ [r92] 续费排序提示 / 跟进状态 / 多状态操作 ============ */

/* 排序说明条 */
.rn-sort-tip {
  margin: 0 14px 8px; padding: 7px 11px;
  background: #eff6ff; border-left: 3px solid #1a5fb4; border-radius: 6px;
  font-size: 11.5px; color: #1e3a8a; line-height: 1.6;
}

/* 状态标签 */
.rn-tag {
  display: inline-block; font-size: 11px; padding: 2px 8px;
  border-radius: 10px; white-space: nowrap; font-weight: 600;
}
.rn-tag.tag-open,     .rn-tag.tag-danger { background: #fee2e2; color: #991b1b; }
.rn-tag.tag-chasing,  .rn-tag.tag-warn   { background: #fef3c7; color: #92400e; }
.rn-tag.tag-paid,     .rn-tag.tag-renewed,
.rn-tag.tag-signed,   .rn-tag.tag-ok     { background: #dcfce7; color: #166534; }
.rn-tag.tag-waived,   .rn-tag.tag-lost,
.rn-tag.tag-muted,    .rn-tag.tag-none   { background: #f1f5f9; color: #475569; }
.rn-tag.tag-quoted                        { background: #fef3c7; color: #92400e; }
.rn-tag.tag-contacted                     { background: #e0e7ff; color: #3730a3; }

/* 跟进状态行 */
.rn-follow {
  display: flex; align-items: center; gap: 7px; flex-wrap: wrap;
  margin-top: 8px; padding: 7px 10px;
  background: #f8fafc; border-radius: 7px; border: 1px solid #eef2f7;
}
.rn-follow-label { font-size: 11px; color: #94a3b8; }
.rn-follow-time  { font-size: 11px; color: #94a3b8; }
.rn-follow-note {
  font-size: 11.5px; color: #475569; width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* 快捷状态按钮 */
.rn-quick {
  display: flex; gap: 6px; margin-top: 7px; flex-wrap: wrap;
}
.rn-q {
  flex: 1; min-width: 62px; padding: 6px 4px; border-radius: 7px;
  font-size: 11.5px; background: #fff; border: 1px solid #cbd5e1;
  color: #475569; cursor: pointer; transition: all .15s;
}
.rn-q:hover { border-color: #1a5fb4; color: #1a5fb4; background: #f5f9ff; }
.rn-q:active { transform: scale(.97); }

/* 卡片按紧急度左侧描边 */
.rn-card.expired { border-left-color: #dc2626; }
.rn-card.expired .rn-badge { font-weight: 700; }

/* ============ [r93] 续费汇总金额 / 汇总区 2×2 ============ */

/* 2×2 汇总格 */
.rn-summary-2x2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  padding: 12px 14px 6px;
}
.rn-summary-2x2 .rn-sum-item {
  flex: none;
  padding: 10px 8px;
  text-align: left;
}
.rn-summary-2x2 .rn-sum-item b {
  font-size: 19px;
  line-height: 1.2;
  display: block;
}
.rn-summary-2x2 .rn-sum-item span {
  display: block;
  font-size: 11px;
  margin-top: 1px;
}
.rn-summary-2x2 .rn-sum-item em {
  display: block;
  font-style: normal;
  font-size: 11px;
  color: #475569;
  margin-top: 4px;
  font-weight: 600;
}
.rn-summary-2x2 .rn-sum-item i {
  display: block;
  font-style: normal;
  font-size: 10.5px;
  color: var(--text-3, #94a3b8);
  margin-top: 1px;
}
.rn-summary-2x2 .rn-sum-item i.danger { color: #dc2626; font-weight: 600; }
.rn-sum-item.ok { background: #f0fdf4; }
.rn-sum-item.ok b { color: #16a34a; }

/* 金额口径明细 */
.rn-amount-note {
  margin: 8px 14px 0;
  padding: 11px 12px;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.rn-an-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 11.5px;
  color: var(--text-2, #64748b);
  line-height: 1.7;
  padding: 3px 0;
}
.rn-an-row + .rn-an-row { border-top: 1px dashed #f1f5f9; }
.rn-an-row b { color: var(--text-1, #1e293b); font-weight: 700; }
.rn-an-tag {
  flex: none;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 9px;
  white-space: nowrap;
}
.rn-an-tag.warn { background: #fef3c7; color: #92400e; }
.rn-an-tag.danger { background: #fee2e2; color: #991b1b; }
.rn-an-foot {
  margin-top: 7px;
  padding-top: 7px;
  border-top: 1px solid #f1f5f9;
  font-size: 10.5px;
  color: var(--text-3, #94a3b8);
  line-height: 1.6;
}

/* ============ [r95] 内部沟通群 ============ */

/* 群聊 / 私聊 切换 */
.im-tabs {
  display: flex; gap: 6px; padding: 10px 14px 4px;
}
.im-tab {
  flex: 1; text-align: center; padding: 8px 0; border-radius: 9px;
  font-size: 13px; color: var(--text-2, #64748b);
  background: #f1f5f9; cursor: pointer; transition: all .15s;
}
.im-tab.active { background: #1a5fb4; color: #fff; font-weight: 600; }
.im-tab i { font-style: normal; opacity: .75; margin-left: 2px; font-size: 11px; }

/* 群头像 */
.im-avatar.grp {
  background: linear-gradient(135deg, #7c3aed, #a855f7);
  color: #fff; font-size: 16px;
}

/* 群成员条 */
.im-group-bar {
  margin: 8px 14px 0; padding: 10px 12px;
  background: #f8fafc; border-radius: 10px; border: 1px solid #eef2f7;
}
.im-group-avatars { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }
.im-ga {
  width: 26px; height: 26px; border-radius: 50%;
  background: #e8f1fb; color: #1a5fb4;
  font-size: 12px; font-weight: 600;
  display: flex; align-items: center; justify-content: center;
}
.im-ga.more { background: #f1f5f9; color: #64748b; }
.im-group-names { font-size: 11px; color: #64748b; line-height: 1.6; }

/* 建群成员选择 */
.gc-actions { display: flex; gap: 8px; margin-bottom: 8px; }
.gc-list {
  max-height: 320px; overflow-y: auto;
  border: 1px solid #e2e8f0; border-radius: 10px; background: #fff;
}
.gc-item {
  display: flex; align-items: center; gap: 9px;
  padding: 9px 11px; cursor: pointer;
  border-bottom: 1px solid #f8fafc;
}
.gc-item:last-child { border-bottom: none; }
.gc-item.on { background: #f5f9ff; }
.gc-item .im-staff-body { flex: 1; min-width: 0; }
.gc-check {
  flex: none; width: 20px; height: 20px; border-radius: 5px;
  border: 1.5px solid #cbd5e1; color: #fff; font-size: 12px;
  display: flex; align-items: center; justify-content: center;
}
.gc-item.on .gc-check { background: #1a5fb4; border-color: #1a5fb4; }

/* ============ [r97] 消息页 · 内部沟通收件箱 ============ */
/* 老谭反馈群功能藏得太深 → 把群聊/私聊会话提到「消息」页第一屏，
   和客户消息、系统通知并排，构成统一收件箱。 */
.msg-sec-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px 8px;
}
.msh-title {
  font-size: 13px; font-weight: 800; color: var(--text-1);
  display: flex; align-items: center; gap: 6px;
}
.msh-title em {
  font-style: normal; background: var(--danger); color: #fff;
  font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 9px;
}
.msh-more { font-size: 12px; color: var(--primary); cursor: pointer; }
.msg-im-threads { margin: 0 16px; }
.msg-im-threads .im-thread:last-child { border-bottom: none; }

/* [r114] 消息页布局优化（用户反馈：内部沟通占满上半屏，客户消息被挤到下面）
   → 客户消息区块排前面并加醒目底色，内部沟通压缩到 3 条 + 可展开 */
.msg-sec-priority { padding-top: 12px; }
.msg-box-pri {
  border-radius: var(--radius);
  background: linear-gradient(180deg, #f3f8ff 0%, #ffffff 100%);
  border: 1px solid #dbe8fb;
  overflow: hidden;
  margin-bottom: 4px;
}
.msg-box-pri .im-thread { border-bottom-color: #e8f0fb; }
.msh-em-pri { background: var(--danger); }
.msg-sec-internal { padding-top: 10px; }
.msg-expand {
  margin: 2px 16px 10px; padding: 8px 0; text-align: center;
  font-size: 12px; color: var(--primary); cursor: pointer;
  background: #f8fafc; border-radius: 8px;
}
.msg-expand:active { background: #eef2f7; }

/* ============ [r98] 客户会话（管理端聊天列表 / 聊天窗口） ============ */
/* 客户头像：与内部群紫色区分，用蓝色企业感 */
.im-avatar.cli {
  background: linear-gradient(135deg, #1a5fb4, #3b82f6);
  color: #fff; font-size: 15px;
}
/* 会话列表页顶部搜索框 */
.im-search-bar {
  display: flex; align-items: center; gap: 8px; margin: 0 16px 10px;
  background: #f4f6fa; border-radius: 11px; padding: 0 10px; height: 40px;
}
.im-search-ic { font-size: 13px; opacity: .6; }
.im-search { flex: 1; border: none; background: transparent; font-size: 13px; color: var(--text); outline: none; min-width: 0; }
.im-search::placeholder { color: #9aa4b2; font-size: 12px; }
.im-search-clear { font-size: 18px; color: #9aa4b2; padding: 0 2px; cursor: pointer; line-height: 1; }

/* 聊天窗口顶部客户信息条 */
.cli-thread-head {
  margin: 8px 14px 0; padding: 10px 12px;
  background: #f8fafc; border-radius: 10px; border: 1px solid #eef2f7;
}
.cth-name { font-size: 14px; font-weight: 800; color: var(--text-1); }
.cth-meta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 5px; font-size: 11.5px; color: var(--text-3); }

/* ============ [r96] 管理台首页 · 群聊快捷条 ============ */
.grp-bar {
  margin: 10px 14px 0;
  padding: 11px 13px;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  cursor: pointer;
  border: 1px solid #eef2f7;
}
.grp-bar:active { transform: scale(.99); }
.grp-bar.has-new {
  background: linear-gradient(135deg, #f5f3ff, #ede9fe);
  border-color: #ddd6fe;
}
.gb-left { display: flex; align-items: center; gap: 10px; min-width: 0; }
.gb-icon {
  flex: none;
  width: 36px; height: 36px; border-radius: 10px;
  background: linear-gradient(135deg, #7c3aed, #a855f7);
  font-size: 18px;
  display: flex; align-items: center; justify-content: center;
}
.gb-txt { min-width: 0; }
.gb-title {
  font-size: 14px; font-weight: 700; color: var(--text-1, #1e293b);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.gb-sub {
  font-size: 11.5px; color: var(--text-3, #94a3b8); margin-top: 1px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.grp-bar.has-new .gb-sub { color: #6d28d9; font-weight: 600; }
.gb-dot {
  flex: none;
  min-width: 20px; height: 20px; padding: 0 6px;
  border-radius: 10px;
  background: #dc2626; color: #fff;
  font-size: 11px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}
.gb-go { flex: none; color: #94a3b8; font-size: 20px; }

/* ========================================
   [20261104-r109] 软件开发项目 · 里程碑跟踪
   ======================================== */

/* 首页「我的项目」入口卡 */
.pj-entry {
  display: flex; align-items: center; gap: 10px;
  background: linear-gradient(135deg, #0A2350 0%, #1a4b8f 100%);
  border-radius: var(--radius); padding: 14px 16px; margin: 12px 14px;
  box-shadow: 0 4px 16px rgba(10,35,80,.18); color: #fff;
}
.pj-entry-left { display: flex; align-items: center; gap: 11px; flex: 1; min-width: 0; }
.pj-entry-icon { font-size: 24px; }
.pj-entry-txt { min-width: 0; }
.pj-entry-title { font-size: 14px; font-weight: 700; color: #fff; }
.pj-entry-desc {
  font-size: 11.5px; color: rgba(255,255,255,.78); margin-top: 3px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.pj-entry-arrow { font-size: 20px; color: rgba(255,255,255,.6); flex-shrink: 0; }

/* 项目页容器 */
.pj-page { background: var(--bg); }
.pj-tip {
  margin: 12px 14px 0; padding: 11px 13px; border-radius: 10px;
  background: #eef4ff; border: 1px solid #d6e4ff; color: #2b4a7d;
  font-size: 12px; line-height: 1.7;
}
.pj-sec-title {
  padding: 18px 16px 8px; font-size: 13px; font-weight: 700; color: var(--text-1);
}
.pj-block { margin: 12px 14px 0; }
.pj-block-head {
  font-size: 12.5px; font-weight: 700; color: var(--text-1); margin-bottom: 8px;
}
.pj-hint { font-size: 11.5px; color: var(--text-3); line-height: 1.7; }

/* 统计卡（管理端） */
.pj-stats { display: flex; gap: 8px; padding: 14px 14px 0; }
.pj-stat {
  flex: 1; background: var(--card); border-radius: 10px; padding: 12px 8px;
  text-align: center; box-shadow: var(--shadow);
}
.pj-stat-num { font-size: 19px; font-weight: 800; color: var(--primary); }
.pj-stat-lb { font-size: 11px; color: var(--text-3); margin-top: 3px; }
.pj-stage-sum { display: flex; flex-wrap: wrap; gap: 6px; padding: 12px 14px 0; }
.pj-stage-chip {
  font-size: 11px; color: var(--text-2); background: var(--card);
  border: 1px solid var(--border); border-radius: 20px; padding: 4px 10px;
}

/* 项目卡 */
.pj-card {
  background: var(--card); border-radius: var(--radius); padding: 14px;
  margin: 12px 14px 0; box-shadow: var(--shadow);
}
.pj-head { display: flex; align-items: flex-start; gap: 10px; }
.pj-cat {
  width: 34px; height: 34px; border-radius: 9px; background: #0A2350;
  display: flex; align-items: center; justify-content: center; font-size: 17px; flex-shrink: 0;
}
.pj-head-info { flex: 1; min-width: 0; }
.pj-title { font-size: 14px; font-weight: 700; color: var(--text-1); }
.pj-meta { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.pj-status {
  flex-shrink: 0; font-size: 11px; font-weight: 600; color: var(--primary);
  background: var(--primary-light); border-radius: 20px; padding: 3px 9px;
}
.pj-status.done { color: var(--green); background: var(--green-bg); }
.pj-services { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 5px; }
.pj-services em {
  font-style: normal; font-size: 11px; color: var(--text-2);
  background: var(--bg); border-radius: 5px; padding: 3px 7px;
}

/* 里程碑进度条（5 点连线） */
.pj-steps { display: flex; align-items: center; margin-top: 13px; }
.pj-step { display: flex; flex-direction: column; align-items: center; gap: 4px; flex: none; width: 46px; }
.pj-step-dot {
  width: 21px; height: 21px; border-radius: 50%; background: var(--bg-2);
  color: var(--text-3); display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700;
}
.pj-step.done .pj-step-dot { background: var(--green); color: #fff; }
.pj-step.cur .pj-step-dot {
  background: var(--primary); color: #fff; box-shadow: 0 0 0 4px rgba(26,95,180,.16);
}
.pj-step.blocked .pj-step-dot { background: var(--warning); color: #fff; }
.pj-step-label { font-size: 9.5px; color: var(--text-3); white-space: nowrap; }
.pj-step.done .pj-step-label { color: var(--green); font-weight: 600; }
.pj-step.cur .pj-step-label { color: var(--primary); font-weight: 700; }
.pj-step-line { flex: 1; height: 2px; background: var(--border); margin-bottom: 15px; }

.pj-foot {
  display: flex; align-items: center; gap: 10px; margin-top: 12px;
  padding-top: 11px; border-top: 1px solid var(--border);
}
.pj-progress { font-size: 12px; font-weight: 700; color: var(--primary); }
.pj-current { font-size: 11.5px; color: var(--text-3); flex: 1; }
.pj-arrow { font-size: 18px; color: var(--text-3); }

/* 项目详情头部 */
.pj-hero {
  margin: 12px 14px 0; padding: 15px; border-radius: var(--radius);
  background: linear-gradient(135deg, #0A2350 0%, #1a4b8f 100%); color: #fff;
}
.pj-hero-title { font-size: 15px; font-weight: 700; }
.pj-hero-meta { font-size: 11.5px; color: rgba(255,255,255,.8); margin-top: 5px; }
.pj-hero-bar {
  height: 6px; border-radius: 3px; background: rgba(255,255,255,.2); margin-top: 12px; overflow: hidden;
}
.pj-hero-fill { height: 100%; background: #D8A94B; border-radius: 3px; transition: width .3s; }
.pj-hero-pct { font-size: 11.5px; color: rgba(255,255,255,.85); margin-top: 7px; }

/* 里程碑时间线 */
.pj-timeline { padding: 0 14px; }
.pj-tl { display: flex; gap: 11px; position: relative; padding-bottom: 16px; }
.pj-tl::before {
  content: ''; position: absolute; left: 11px; top: 24px; bottom: 0;
  width: 2px; background: var(--border);
}
.pj-tl:last-child::before { display: none; }
.pj-tl-dot {
  width: 24px; height: 24px; border-radius: 50%; background: var(--bg-2);
  color: var(--text-3); display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; flex-shrink: 0; z-index: 1;
}
.pj-tl.done .pj-tl-dot { background: var(--green); color: #fff; }
.pj-tl.cur .pj-tl-dot { background: var(--primary); color: #fff; box-shadow: 0 0 0 4px rgba(26,95,180,.14); }
.pj-tl.blocked .pj-tl-dot { background: var(--warning); color: #fff; }
.pj-tl-body {
  flex: 1; min-width: 0; background: var(--card); border-radius: 10px;
  padding: 12px 13px; box-shadow: var(--shadow); margin-top: -2px;
}
.pj-tl-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pj-tl-name { font-size: 13.5px; font-weight: 700; color: var(--text-1); }
.pj-tl-st { font-size: 11px; font-weight: 600; color: var(--text-3); flex-shrink: 0; }
.pj-tl.done .pj-tl-st { color: var(--green); }
.pj-tl.cur .pj-tl-st { color: var(--primary); }
.pj-tl-blocked .pj-tl-st { color: var(--warning); }
.pj-tl-desc { font-size: 11.5px; color: var(--text-2); line-height: 1.7; margin-top: 5px; }
.pj-tl-line { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.pj-tl-note {
  font-size: 12px; color: var(--text-1); line-height: 1.7; margin-top: 7px;
  background: var(--bg); border-radius: 7px; padding: 8px 10px; white-space: pre-wrap;
}
.pj-tl-files { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 7px; }
.pj-tl-files em {
  font-style: normal; font-size: 11px; color: var(--primary);
  background: var(--primary-light); border-radius: 5px; padding: 3px 7px;
}
.pj-tl-acts { display: flex; gap: 6px; margin-top: 10px; flex-wrap: wrap; }

/* 验收区 */
.pj-accept-box {
  margin: 6px 14px 24px; padding: 14px; border-radius: var(--radius);
  background: #fffaf0; border: 1px solid #ffe0b2;
}
.pj-accept-tip { font-size: 12px; color: #8a5a12; line-height: 1.75; margin-bottom: 12px; }
.pj-accept-note { font-size: 11px; color: var(--text-3); line-height: 1.7; margin-top: 9px; }

/* ========================================
   [20261104-r110] 验收异议流程
   ======================================== */

/* 客户端「提出异议」次级按钮 */
.pj-accept-reject {
  display: block; width: 100%; margin-top: 9px; padding: 10px;
  border: 1px solid #e0a800; background: #fff; color: #a06a00;
  border-radius: 8px; font-size: 13px; font-weight: 600; cursor: pointer;
}
.pj-accept-reject:active { background: #fffaf0; }

/* 异议卡片 */
.pj-disputes { padding: 0 14px; }
.pj-dp {
  background: var(--card); border-radius: 10px; padding: 12px 13px;
  margin-bottom: 10px; box-shadow: var(--shadow);
  border-left: 3px solid var(--warning);
}
.pj-dp.open { border-left-color: var(--warning); }
.pj-dp.replied { border-left-color: var(--primary); }
.pj-dp.fixed { border-left-color: var(--green); }
.pj-dp-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pj-dp-status {
  font-size: 11px; font-weight: 700; color: #a06a00;
  background: var(--orange-bg); border-radius: 20px; padding: 3px 9px;
}
.pj-dp.replied .pj-dp-status { color: var(--primary); background: var(--primary-light); }
.pj-dp.fixed .pj-dp-status { color: var(--green); background: var(--green-bg); }
.pj-dp-time { font-size: 11px; color: var(--text-3); }
.pj-dp-items { margin-top: 9px; }
.pj-dp-item {
  background: var(--bg); border-radius: 7px; padding: 8px 10px; margin-bottom: 6px;
}
.pj-dp-item-t { font-size: 12.5px; font-weight: 600; color: var(--text-1); }
.pj-dp-item-d { font-size: 11.5px; color: var(--text-2); line-height: 1.65; margin-top: 4px; }
.pj-dp-note {
  font-size: 12px; color: var(--text-1); line-height: 1.7; margin-top: 8px;
  background: var(--bg); border-radius: 7px; padding: 8px 10px; white-space: pre-wrap;
}
.pj-dp-reply {
  margin-top: 9px; padding: 9px 10px; border-radius: 7px;
  background: var(--primary-light); border-left: 3px solid var(--primary);
}
.pj-dp-reply-h { font-size: 11px; font-weight: 700; color: var(--primary-dark); }
.pj-dp-reply-b { font-size: 12px; color: var(--text-1); line-height: 1.7; margin-top: 4px; }
.pj-dp-reply-t { font-size: 10.5px; color: var(--text-3); margin-top: 5px; }
.pj-dp-fix {
  margin-top: 8px; padding: 9px 10px; border-radius: 7px;
  background: var(--green-bg); border-left: 3px solid var(--green);
}
.pj-dp-fix-h { font-size: 11px; font-weight: 700; color: #1e7a4d; }
.pj-dp-fix-b { font-size: 12px; color: var(--text-1); line-height: 1.7; margin-top: 4px; }
.pj-dp-fix-t { font-size: 10.5px; color: var(--text-3); margin-top: 5px; }
.pj-dp-tip { font-size: 11.5px; color: var(--green); margin-top: 8px; font-weight: 600; }
.pj-dp-badge {
  font-size: 11px; font-weight: 700; color: #fff; background: var(--warning);
  border-radius: 20px; padding: 2px 9px; margin-left: 6px;
}

/* 异议提交表单 */
.pj-dp-form { padding: 0 14px; }
.pj-dp-form-row { display: flex; gap: 9px; margin-bottom: 10px; }
.pj-dp-form-num {
  width: 22px; height: 22px; border-radius: 50%; background: var(--primary);
  color: #fff; font-size: 11px; font-weight: 700; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; margin-top: 4px;
}
.pj-dp-form-body { flex: 1; min-width: 0; }
.pj-dp-in, .pj-dp-ta {
  width: 100%; border: 1px solid #dbe2ec; border-radius: 8px; padding: 9px 10px;
  font-size: 13px; line-height: 1.6; font-family: inherit; margin-bottom: 6px;
  background: #fff; color: var(--text-1);
}
.pj-dp-in:focus, .pj-dp-ta:focus { outline: none; border-color: var(--primary); }
.pj-dp-ta { resize: vertical; }
.pj-dp-del {
  border: none; background: none; color: var(--danger); font-size: 11.5px;
  cursor: pointer; padding: 2px 0; text-decoration: underline;
}
.pj-dp-add {
  width: 100%; padding: 10px; border: 1px dashed var(--primary);
  border-radius: 8px; background: var(--primary-light); color: var(--primary);
  font-size: 13px; font-weight: 600; cursor: pointer;
}
.pj-dp-submit { display: flex; gap: 10px; padding: 20px 14px 30px; }
.pj-dp-submit .btn { flex: 1; }
.pj-dp-submit .zk-submit { flex: 1; }

/* [r110] 管理端待处理异议角标与提醒条 */
.at-badge.warn { background: var(--warning); color: #fff; }
.pj-dispute-alert {
  display: flex; align-items: center; gap: 8px; margin: 12px 14px 0;
  padding: 11px 12px; border-radius: 10px; cursor: pointer;
  background: var(--orange-bg); border: 1px solid #ffd8a8;
}
.pj-dispute-alert:active { opacity: 0.9; }
.pj-dispute-alert .pda-icon { font-size: 16px; flex-shrink: 0; }
.pj-dispute-alert .pda-text {
  flex: 1; font-size: 11.5px; color: #8a5a12; line-height: 1.6; font-weight: 600;
}
.pj-dispute-alert .pda-go { font-size: 17px; color: #a06a00; flex-shrink: 0; }

/* [r110] 里程碑卡片内的异议提示 */
.pj-dp-hint {
  font-size: 11.5px; color: #a06a00; background: var(--orange-bg);
  border-radius: 7px; padding: 8px 10px; line-height: 1.6;
}

/* ================================================================
   [r111] 验收期限提示 + 视同验收留痕
   ================================================================ */
.pj-notice {
  margin: 0 14px 12px; padding: 11px 12px; border-radius: 10px;
  background: #eef4fd; border: 1px solid #cfdff7; line-height: 1.7;
}
.pj-notice.overdue { background: var(--orange-bg); border-color: #ffd8a8; }
.pj-notice-t {
  font-size: 13px; font-weight: 700; color: #1a5fb4; margin-bottom: 5px;
}
.pj-notice.overdue .pj-notice-t { color: #a06a00; }
.pj-notice-b { font-size: 11.5px; color: var(--text-2); }
.pj-notice-b b { color: var(--text-1); }

.pj-deemed-card {
  margin: 0 14px 12px; padding: 12px; border-radius: 10px;
  background: #f3f0ff; border: 1px solid #ddd5f7;
}
.pj-deemed-h {
  font-size: 13px; font-weight: 700; color: #5b3fb0; margin-bottom: 6px;
}
.pj-deemed-b { font-size: 11.5px; color: var(--text-2); line-height: 1.8; }
.pj-deemed-basis {
  margin-top: 5px; padding-top: 5px; border-top: 1px dashed #ddd5f7;
  color: var(--text-3); font-size: 11px; line-height: 1.6;
}

/* ================================================================
   [20261105-r114] 更换服务会计
   ================================================================ */
.ac-switch-bar {
  display: flex; align-items: center; gap: 11px;
  margin: 12px 16px 4px; padding: 13px 14px;
  border-radius: var(--radius);
  background: linear-gradient(135deg, #eef4ff 0%, #e6efff 100%);
  border: 1px solid #cfdff7; cursor: pointer;
}
.ac-switch-bar:active { opacity: 0.88; }
.acsb-icon {
  width: 38px; height: 38px; flex-shrink: 0;
  border-radius: 11px; background: var(--primary);
  display: flex; align-items: center; justify-content: center; font-size: 19px;
}
.acsb-body { flex: 1; min-width: 0; }
.acsb-title { font-size: 14px; font-weight: 800; color: var(--primary); margin-bottom: 2px; }
.acsb-desc { font-size: 11.5px; color: var(--text-2); line-height: 1.5; }
.acsb-arrow { font-size: 19px; color: var(--primary); flex: none; }

.ac-sec-desc {
  margin: -4px 16px 10px; font-size: 11.5px; color: var(--text-3); line-height: 1.6;
}
.ac-switch-mini {
  flex: none; background: #fff; color: var(--primary);
  border: 1px solid var(--primary); border-radius: 8px;
  font-size: 11.5px; font-weight: 700; padding: 4px 11px; cursor: pointer;
}
.ac-switch-mini:active { background: var(--primary); color: #fff; }

.ac-sw-roles { display: flex; gap: 6px; margin: 10px 0 8px; flex-wrap: wrap; }
.ac-sw-role {
  font-size: 10.5px; padding: 2px 8px; border-radius: 8px;
  background: #f1f5f9; color: var(--text-3);
}
.ac-sw-role.ok { background: var(--green-bg); color: var(--green); font-weight: 700; }

/* --- 更换主面板 --- */
.sw-rule-tip {
  margin: 12px 16px; padding: 11px 13px; border-radius: var(--radius);
  background: #fff8ec; border: 1px solid #f5d9a8;
  font-size: 12px; line-height: 1.8; color: #7a5210;
}
.sw-rule-tip b { color: #8a5a10; }

.sw-mode-tabs {
  display: flex; gap: 6px; margin: 0 16px 4px;
  background: #f1f5f9; border-radius: 10px; padding: 4px;
}
.sw-mode-tab {
  flex: 1; text-align: center; padding: 8px 4px;
  border-radius: 8px; font-size: 12.5px; font-weight: 600;
  color: var(--text-2); cursor: pointer;
}
.sw-mode-tab.active { background: #fff; color: var(--primary); box-shadow: 0 1px 3px rgba(0,0,0,.08); }

.sw-sec-title {
  margin: 16px 16px 8px; font-size: 13px; font-weight: 800; color: var(--text-1);
}
.sw-search-bar { margin: 0 16px 10px; }
.sw-search-bar input {
  width: 100%; border: 1px solid var(--border); border-radius: 10px;
  padding: 9px 12px; font-size: 13px; background: #fff; color: var(--text-1);
}
.sw-sel-tip {
  margin: 0 16px 8px; font-size: 12px; color: var(--text-2);
}
.sw-sel-tip b { color: var(--primary); font-size: 14px; }
.sw-sel-tip span { color: var(--primary); text-decoration: underline; margin-left: 8px; }

.sw-cl-item {
  display: flex; align-items: center; gap: 9px;
  margin: 0 16px 8px; padding: 11px 12px;
  border-radius: var(--radius); background: #fff;
  border: 1px solid var(--border); cursor: pointer;
}
.sw-cl-check {
  width: 18px; height: 18px; flex-shrink: 0; border-radius: 5px;
  border: 1.5px solid #cbd5e1; background: #fff;
}
.sw-cl-check.on { background: var(--primary); border-color: var(--primary); position: relative; }
.sw-cl-check.on::after {
  content: '✓'; position: absolute; inset: 0;
  color: #fff; font-size: 12px; text-align: center; line-height: 15px;
}
.sw-cl-name { flex: 1; font-size: 13px; font-weight: 600; color: var(--text-1); min-width: 0; }
.sw-cl-acc { font-size: 11.5px; color: var(--text-3); flex: none; }
.sw-cl-btn {
  flex: none; background: var(--primary-light); color: var(--primary);
  border: none; border-radius: 8px;
  font-size: 11.5px; font-weight: 700; padding: 5px 11px; cursor: pointer;
}

.sw-acc-list { margin: 0 16px; }
.sw-acc-item {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 9px; padding: 11px 12px;
  border-radius: var(--radius); background: #fff;
  border: 1px solid var(--border); cursor: pointer;
}
.sw-acc-avatar {
  width: 34px; height: 34px; flex-shrink: 0; border-radius: 10px;
  background: var(--primary-light); color: var(--primary);
  display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 700;
}
.sw-acc-info { flex: 1; min-width: 0; }
.sw-acc-name { font-size: 13px; font-weight: 700; color: var(--text-1); }
.sw-acc-meta { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.sw-acc-go { font-size: 11.5px; color: var(--primary); font-weight: 600; flex: none; }

.sw-req-card {
  margin: 0 16px 9px; padding: 12px 13px;
  border-radius: var(--radius); background: #fff;
  border: 1px solid var(--border); cursor: pointer;
}
.sw-rc-hd { display: flex; justify-content: space-between; gap: 8px; align-items: flex-start; }
.sw-rc-title { font-size: 13px; font-weight: 700; color: var(--text-1); flex: 1; min-width: 0; }
.sw-rc-st {
  font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 7px;
  background: var(--orange-bg); color: var(--orange); flex: none;
}
.sw-rc-st.executed { background: var(--green-bg); color: var(--green); }
.sw-rc-st.rejected, .sw-rc-st.cancelled { background: #f1f5f9; color: var(--text-3); }
.sw-rc-meta { font-size: 11.5px; color: var(--text-2); margin-top: 4px; }
.sw-rc-prog { font-size: 11px; color: var(--text-3); margin-top: 3px; }

/* --- 详情页 --- */
.swd-hero {
  margin: 12px 16px; padding: 14px; border-radius: var(--radius);
  background: linear-gradient(135deg, #eef4ff 0%, #e6efff 100%);
  border: 1px solid #cfdff7;
}
.swd-status {
  display: inline-block; font-size: 11px; font-weight: 700;
  padding: 3px 9px; border-radius: 8px;
  background: var(--orange-bg); color: var(--orange); margin-bottom: 8px;
}
.swd-status.executed { background: var(--green-bg); color: var(--green); }
.swd-status.rejected, .swd-status.cancelled { background: #e2e8f0; color: var(--text-2); }
.swd-from { font-size: 15px; font-weight: 800; color: var(--text-1); }
.swd-arrow { color: var(--primary); margin: 0 4px; }
.swd-clients { font-size: 11.5px; color: var(--text-2); margin-top: 5px; line-height: 1.6; }

.swd-reason {
  margin: 0 16px 4px; padding: 11px 13px;
  border-radius: var(--radius); background: #fff; border: 1px solid var(--border);
}
.swd-r-t { font-size: 11.5px; color: var(--text-3); margin-bottom: 4px; }
.swd-r-b { font-size: 13px; color: var(--text-1); line-height: 1.7; }

.swd-roles { margin: 0 16px; }
.swd-role {
  margin-bottom: 8px; padding: 11px 12px;
  border-radius: var(--radius); background: #fff; border: 1px solid var(--border);
}
.swd-role.ok { border-color: #bfe8d2; background: #f4fdf8; }
.swd-role.mine { border-color: var(--primary); box-shadow: 0 0 0 2px rgba(26,95,180,.1); }
.swd-role-h { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.swd-role-name { font-size: 13px; font-weight: 700; color: var(--text-1); }
.swd-role-st { font-size: 11px; color: var(--text-3); flex: none; }
.swd-role.ok .swd-role-st { color: var(--green); font-weight: 700; }
.swd-role-m { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.swd-role-n { font-size: 11.5px; color: var(--text-2); margin-top: 4px; line-height: 1.6; }
.swd-role-act { display: flex; gap: 8px; margin-top: 9px; }

.swd-ready {
  margin: 12px 16px 0; padding: 11px 13px; border-radius: 10px;
  background: var(--green-bg); color: var(--green); font-size: 12.5px; font-weight: 700; line-height: 1.6;
}
.swd-force {
  margin: 12px 16px 0; padding: 11px 13px; border-radius: 10px;
  background: #fff8ec; color: #8a5a10; font-size: 12.5px; font-weight: 700; line-height: 1.6;
  border: 1px solid #f5d9a8;
}
.swd-wait {
  margin: 12px 16px 0; padding: 10px 12px; border-radius: 10px;
  background: #f1f5f9; color: var(--text-2); font-size: 12px; line-height: 1.6;
}
.swd-acts { margin: 16px; }
.swd-done {
  margin: 12px 16px 0; padding: 12px 13px; border-radius: 10px;
  background: var(--green-bg); color: var(--green); font-size: 12.5px; line-height: 1.9;
}
.swd-meta {
  margin: 14px 16px 24px; font-size: 11px; color: var(--text-3); line-height: 1.8;
}

.sw-form { padding: 0 16px 24px; }
.sw-form-group { margin-bottom: 16px; }
.sw-form-group label {
  display: block; font-size: 12.5px; font-weight: 700; color: var(--text-1); margin-bottom: 8px;
}
.sw-form-group label span { color: #e63946; }
.sw-form-group textarea {
  width: 100%; border: 1px solid var(--border); border-radius: 10px;
  padding: 10px 12px; font-size: 13px; line-height: 1.6; resize: vertical;
  font-family: inherit; color: var(--text-1);
}
.sw-acc-picker { display: flex; flex-direction: column; gap: 8px; }
.sw-acc-item.on { border-color: var(--primary); background: #f7faff; }
.sw-submit {
  display: block; width: 100%; margin-top: 6px;
  background: var(--primary); color: #fff; border: none; border-radius: 12px;
  padding: 13px; font-size: 14px; font-weight: 700; cursor: pointer;
}
.sw-submit:disabled { background: #cbd5e1; cursor: not-allowed; }
.sw-cancel {
  display: block; width: 100%; margin-top: 9px;
  background: #fff; color: var(--text-2); border: 1px solid var(--border); border-radius: 12px;
  padding: 11px; font-size: 13px; cursor: pointer;
}

/* ================================================================
   [20261105-r117] 会计分配任务 + 管理端待办通知
   ================================================================ */

/* --- 管理端待办通知（消息页最上方） --- */
.notice-list { margin: 0 16px 14px; }
.notice-item {
  display: flex; gap: 9px; align-items: flex-start;
  padding: 11px 12px; margin-bottom: 8px;
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius); cursor: pointer;
}
.notice-item.unread { border-color: #b8d4f5; background: #f7fbff; }
.notice-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--primary); margin-top: 5px; flex-shrink: 0;
}
.notice-item:not(.unread) .notice-dot { background: #cbd5e1; }
.notice-body { flex: 1; min-width: 0; }
.notice-text {
  font-size: 12.5px; color: var(--text-1); line-height: 1.65;
}
.notice-time { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.notice-more {
  text-align: center; font-size: 12px; color: var(--primary);
  padding: 6px 0 2px; cursor: pointer;
}

/* --- 分配任务卡片 --- */
.ac-task-card { border-left: 3px solid var(--primary); }
.ac-task-pending { border-left-color: #f59e0b; }
.ac-task-assigned { border-left-color: #3b82f6; }
.ac-task-confirmed { border-left-color: #2d9d5f; }
.ac-task-rejected { border-left-color: #e5484d; }
.ac-task-row {
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px;
  margin-top: 9px; font-size: 11.5px; color: var(--text-2);
}
.ac-task-row b { color: var(--text-1); font-weight: 700; }
.ac-task-sep {
  width: 1px; height: 11px; background: var(--border); margin: 0 3px;
}
.ac-task-acc {
  margin-top: 9px; font-size: 12px; color: var(--text-2);
  padding: 7px 10px; background: #f4fdf8; border-radius: 8px;
}
.ac-task-acc b { color: var(--green); }
.ac-task-pick {
  display: flex; gap: 8px; align-items: center; margin-top: 10px;
}
.ac-task-sel {
  flex: 1; min-width: 0;
  border: 1px solid var(--border); border-radius: 9px;
  padding: 8px 10px; font-size: 12.5px; background: #fff;
  color: var(--text-1);
}
.ac-empty-task {
  margin: 0 16px 16px; padding: 26px 16px; text-align: center;
  background: #fff; border: 1px dashed var(--border); border-radius: var(--radius);
}
.ac-empty-icon { font-size: 30px; margin-bottom: 8px; }
.ac-empty-t { font-size: 13.5px; font-weight: 700; color: var(--text-1); margin-bottom: 5px; }
.ac-empty-d { font-size: 11.5px; color: var(--text-3); line-height: 1.6; }

/* --- 客户端「我的服务」任务信息卡 --- */
.ms-task-hint {
  margin: 14px 0 12px; padding: 12px 13px;
  background: #fff; border: 1px solid var(--border); border-radius: var(--radius);
  text-align: left;
}
.ms-task-hint-row {
  display: flex; justify-content: space-between; gap: 12px;
  font-size: 12px; color: var(--text-2);
  padding: 5px 0; border-bottom: 1px dashed #eef1f5;
}
.ms-task-hint-row:last-child { border-bottom: none; }
.ms-task-hint-row b { color: var(--text-1); text-align: right; }
.ms-st-cur { color: #f59e0b !important; }
.ms-task-confirm {
  margin-top: 14px; padding: 13px;
  background: #f7fbff; border: 1px solid #b8d4f5; border-radius: var(--radius);
  text-align: left;
}
.ms-task-confirm-t {
  font-size: 13px; font-weight: 800; color: var(--primary); margin-bottom: 7px;
}
.ms-task-confirm-d {
  font-size: 12px; color: var(--text-2); line-height: 1.75; margin-bottom: 3px;
}

/* ================================================================
   [20261105-r117] 客户卡片合同信息 + 看板待分配指标
   ================================================================ */
.acc-c-contract {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  margin-top: 7px; padding: 6px 9px;
  background: #f5f9fe; border: 1px solid #dce9f7; border-radius: 8px;
  font-size: 11px; color: var(--text-2);
}
.acc-c-ct-no { font-weight: 700; color: var(--primary); }
.acc-c-ct-amt { font-weight: 800; color: #e63946; }
